From ba8bc27298e206e40ca908d1bbc7c36f674725d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=91=D1=8B=D1=87=D0=BA=D0=BE=D0=B2=20=D0=90=D0=BD=D0=B4?= =?UTF-8?q?=D1=80=D0=B5=D0=B9?= Date: Sat, 28 Feb 2015 21:28:53 +0000 Subject: [PATCH] 1 git-svn-id: svn://db.shs.com.ru/libs@1 a8b55f48-bf90-11e4-a774-851b48703e85 --- .kdev4/_custom.kdev4 | 26 + .kdev4/libs.kdev4 | 28 + CMakeLists.txt | 30 + FindMinGW.cmake | 12 + _oldpip/pip_0.4.0_r5/AUTHORS.txt | 2 + _oldpip/pip_0.4.0_r5/CMakeCache.txt | 1413 + .../CMakeFiles/2.8.12.2/CMakeCCompiler.cmake | 56 + .../2.8.12.2/CMakeCXXCompiler.cmake | 57 + .../2.8.12.2/CMakeDetermineCompilerABI_C.bin | Bin 0 -> 45765 bytes .../CMakeDetermineCompilerABI_CXX.bin | Bin 0 -> 46794 bytes .../CMakeFiles/2.8.12.2/CMakeRCCompiler.cmake | 6 + .../CMakeFiles/2.8.12.2/CMakeSystem.cmake | 15 + .../2.8.12.2/CompilerIdC/CMakeCCompilerId.c | 389 + .../CMakeFiles/2.8.12.2/CompilerIdC/a.exe | Bin 0 -> 45836 bytes .../CompilerIdCXX/CMakeCXXCompilerId.cpp | 377 + .../CMakeFiles/2.8.12.2/CompilerIdCXX/a.exe | Bin 0 -> 46884 bytes .../CMakeDirectoryInformation.cmake | 16 + .../pip_0.4.0_r5/CMakeFiles/CMakeError.log | 108 + .../pip_0.4.0_r5/CMakeFiles/CMakeOutput.log | 527 + .../pip_0.4.0_r5/CMakeFiles/Makefile.cmake | 68 + _oldpip/pip_0.4.0_r5/CMakeFiles/Makefile2 | 286 + .../CMakeFiles/TargetDirectories.txt | 5 + .../pip_0.4.0_r5/CMakeFiles/cmake.check_cache | 1 + .../CMakeFiles/pip.dir/CXX.includecache | 798 + .../CMakeFiles/pip.dir/DependInfo.cmake | 93 + .../CMakeFiles/pip.dir/build.make | 1134 + .../CMakeFiles/pip.dir/cmake_clean.cmake | 50 + .../CMakeFiles/pip.dir/depend.internal | 912 + .../CMakeFiles/pip.dir/depend.make | 912 + .../CMakeFiles/pip.dir/flags.make | 8 + .../CMakeFiles/pip.dir/includes_CXX.rsp | 1 + .../pip_0.4.0_r5/CMakeFiles/pip.dir/link.txt | 3 + .../CMakeFiles/pip.dir/objects1.rsp | 1 + .../CMakeFiles/pip.dir/pibinarylog.cpp.obj | Bin 0 -> 94707 bytes .../CMakeFiles/pip.dir/pibytearray.cpp.obj | Bin 0 -> 26837 bytes .../CMakeFiles/pip.dir/picli.cpp.obj | Bin 0 -> 43733 bytes .../CMakeFiles/pip.dir/picodec.cpp.obj | Bin 0 -> 20645 bytes .../CMakeFiles/pip.dir/picodeinfo.cpp.obj | Bin 0 -> 4213 bytes .../CMakeFiles/pip.dir/picodeparser.cpp.obj | Bin 0 -> 133017 bytes .../CMakeFiles/pip.dir/picollection.cpp.obj | Bin 0 -> 8813 bytes .../CMakeFiles/pip.dir/piconfig.cpp.obj | Bin 0 -> 88410 bytes .../CMakeFiles/pip.dir/piconnection.cpp.obj | Bin 0 -> 190295 bytes .../CMakeFiles/pip.dir/piconsole.cpp.obj | Bin 0 -> 113752 bytes .../CMakeFiles/pip.dir/picontainers.cpp.obj | Bin 0 -> 1216 bytes .../CMakeFiles/pip.dir/pidevicepool.cpp.obj | Bin 0 -> 13932 bytes .../CMakeFiles/pip.dir/pidiagnostics.cpp.obj | Bin 0 -> 12507 bytes .../CMakeFiles/pip.dir/pidir.cpp.obj | Bin 0 -> 45743 bytes .../CMakeFiles/pip.dir/piethernet.cpp.obj | Bin 0 -> 118371 bytes .../CMakeFiles/pip.dir/pievaluator.cpp.obj | Bin 0 -> 86389 bytes .../CMakeFiles/pip.dir/pifile.cpp.obj | Bin 0 -> 48707 bytes .../CMakeFiles/pip.dir/piincludes.cpp.obj | Bin 0 -> 61719 bytes .../CMakeFiles/pip.dir/piiodevice.cpp.obj | Bin 0 -> 96864 bytes .../CMakeFiles/pip.dir/pikbdlistener.cpp.obj | Bin 0 -> 8182 bytes .../CMakeFiles/pip.dir/pimath.cpp.obj | Bin 0 -> 67937 bytes .../CMakeFiles/pip.dir/pimonitor.cpp.obj | Bin 0 -> 1284 bytes .../pip.dir/pimultiprotocol.cpp.obj | Bin 0 -> 1972 bytes .../CMakeFiles/pip.dir/pimutex.cpp.obj | Bin 0 -> 1627 bytes .../CMakeFiles/pip.dir/piobject.cpp.obj | Bin 0 -> 46357 bytes .../pip.dir/pipacketextractor.cpp.obj | Bin 0 -> 71870 bytes .../CMakeFiles/pip.dir/pipeer.cpp.obj | Bin 0 -> 117515 bytes .../CMakeFiles/pip.dir/piprocess.cpp.obj | Bin 0 -> 62982 bytes .../CMakeFiles/pip.dir/piprotocol.cpp.obj | Bin 0 -> 178871 bytes .../CMakeFiles/pip.dir/piserial.cpp.obj | Bin 0 -> 100895 bytes .../CMakeFiles/pip.dir/pisignals.cpp.obj | Bin 0 -> 2447 bytes .../CMakeFiles/pip.dir/pistring.cpp.obj | Bin 0 -> 51461 bytes .../pip.dir/pisystemmonitor.cpp.obj | Bin 0 -> 16644 bytes .../CMakeFiles/pip.dir/pisystemtests.cpp.obj | Bin 0 -> 2378 bytes .../CMakeFiles/pip.dir/pithread.cpp.obj | Bin 0 -> 22592 bytes .../CMakeFiles/pip.dir/pitime.cpp.obj | Bin 0 -> 82878 bytes .../CMakeFiles/pip.dir/pitimer.cpp.obj | Bin 0 -> 14495 bytes .../CMakeFiles/pip.dir/piusb.cpp.obj | Bin 0 -> 74636 bytes .../CMakeFiles/pip.dir/pivariant.cpp.obj | Bin 0 -> 62928 bytes .../CMakeFiles/pip.dir/progress.make | 40 + .../CMakeFiles/pip_test.dir/CXX.includecache | 794 + .../CMakeFiles/pip_test.dir/DependInfo.cmake | 56 + .../CMakeFiles/pip_test.dir/build.make | 108 + .../CMakeFiles/pip_test.dir/cmake_clean.cmake | 12 + .../CMakeFiles/pip_test.dir/depend.internal | 123 + .../CMakeFiles/pip_test.dir/depend.make | 123 + .../CMakeFiles/pip_test.dir/flags.make | 8 + .../CMakeFiles/pip_test.dir/includes_CXX.rsp | 1 + .../CMakeFiles/pip_test.dir/link.txt | 3 + .../CMakeFiles/pip_test.dir/main.cpp.obj | Bin 0 -> 25836 bytes .../CMakeFiles/pip_test.dir/objects1.rsp | 1 + .../CMakeFiles/pip_test.dir/progress.make | 2 + .../pip_0.4.0_r5/CMakeFiles/progress.marks | 1 + _oldpip/pip_0.4.0_r5/CMakeLists.txt | 127 + _oldpip/pip_0.4.0_r5/Doxyfile | 2350 + _oldpip/pip_0.4.0_r5/FindPIP.cmake | 72 + _oldpip/pip_0.4.0_r5/LICENSE.txt | 674 + _oldpip/pip_0.4.0_r5/Makefile | 1319 + _oldpip/pip_0.4.0_r5/clean | 16 + _oldpip/pip_0.4.0_r5/clean.bat | 14 + _oldpip/pip_0.4.0_r5/cmake_install.cmake | 129 + .../CMakeDirectoryInformation.cmake | 16 + .../CMakeFiles/pip_cmg.dir/CXX.includecache | 264 + .../CMakeFiles/pip_cmg.dir/DependInfo.cmake | 59 + .../CMakeFiles/pip_cmg.dir/build.make | 107 + .../CMakeFiles/pip_cmg.dir/cmake_clean.cmake | 12 + .../CMakeFiles/pip_cmg.dir/depend.internal | 31 + .../CMakeFiles/pip_cmg.dir/depend.make | 31 + .../CMakeFiles/pip_cmg.dir/flags.make | 8 + .../CMakeFiles/pip_cmg.dir/includes_CXX.rsp | 1 + .../CMakeFiles/pip_cmg.dir/link.txt | 3 + .../CMakeFiles/pip_cmg.dir/main.cpp.obj | Bin 0 -> 96379 bytes .../CMakeFiles/pip_cmg.dir/objects1.rsp | 1 + .../CMakeFiles/pip_cmg.dir/progress.make | 2 + .../CMakeFiles/progress.marks | 1 + .../code_model_generator/CMakeLists.txt | 17 + .../code_model_generator/Makefile | 211 + .../code_model_generator/cmake_install.cmake | 47 + .../code_model_generator/main.cpp | 225 + .../code_model_generator/main_test.cpp | 48 + .../code_model_generator/pip_cmg.exe | Bin 0 -> 175870 bytes .../code_model_generator/test.cpp | 7084 +++ .../pip_0.4.0_r5/code_model_generator/test.h | 100 + _oldpip/pip_0.4.0_r5/install_manifest.txt | 55 + _oldpip/pip_0.4.0_r5/libpip.dll | Bin 0 -> 1540385 bytes _oldpip/pip_0.4.0_r5/main.cpp | 188 + _oldpip/pip_0.4.0_r5/make.sh | 3 + _oldpip/pip_0.4.0_r5/make_lib.bat | 1 + _oldpip/pip_0.4.0_r5/make_lib_usb.bat | 1 + _oldpip/pip_0.4.0_r5/make_rc_win.bat | 1 + _oldpip/pip_0.4.0_r5/pibinarylog.cpp | 327 + _oldpip/pip_0.4.0_r5/pibinarylog.h | 175 + _oldpip/pip_0.4.0_r5/pibitarray.h | 104 + _oldpip/pip_0.4.0_r5/pibytearray.cpp | 293 + _oldpip/pip_0.4.0_r5/pibytearray.h | 261 + _oldpip/pip_0.4.0_r5/pichar.h | 221 + _oldpip/pip_0.4.0_r5/picli.cpp | 97 + _oldpip/pip_0.4.0_r5/picli.h | 101 + _oldpip/pip_0.4.0_r5/picodec.cpp | 41 + _oldpip/pip_0.4.0_r5/picodec.h | 50 + _oldpip/pip_0.4.0_r5/picodeinfo.cpp | 42 + _oldpip/pip_0.4.0_r5/picodeinfo.h | 149 + _oldpip/pip_0.4.0_r5/picodeparser.cpp | 762 + _oldpip/pip_0.4.0_r5/picodeparser.h | 148 + _oldpip/pip_0.4.0_r5/picollection.cpp | 49 + _oldpip/pip_0.4.0_r5/picollection.h | 94 + _oldpip/pip_0.4.0_r5/piconfig.cpp | 601 + _oldpip/pip_0.4.0_r5/piconfig.h | 502 + _oldpip/pip_0.4.0_r5/piconnection.cpp | 764 + _oldpip/pip_0.4.0_r5/piconnection.h | 291 + _oldpip/pip_0.4.0_r5/piconsole.cpp | 1011 + _oldpip/pip_0.4.0_r5/piconsole.h | 489 + _oldpip/pip_0.4.0_r5/picontainers.cpp | 177 + _oldpip/pip_0.4.0_r5/picontainers.h | 324 + _oldpip/pip_0.4.0_r5/picrc.h | 234 + _oldpip/pip_0.4.0_r5/pideque.h | 477 + _oldpip/pip_0.4.0_r5/pidevicepool.cpp | 44 + _oldpip/pip_0.4.0_r5/pidevicepool.h | 65 + _oldpip/pip_0.4.0_r5/pidiagnostics.cpp | 116 + _oldpip/pip_0.4.0_r5/pidiagnostics.h | 170 + _oldpip/pip_0.4.0_r5/pidir.cpp | 313 + _oldpip/pip_0.4.0_r5/pidir.h | 127 + _oldpip/pip_0.4.0_r5/piethernet.cpp | 877 + _oldpip/pip_0.4.0_r5/piethernet.h | 364 + _oldpip/pip_0.4.0_r5/pievaluator.cpp | 1252 + _oldpip/pip_0.4.0_r5/pievaluator.h | 227 + _oldpip/pip_0.4.0_r5/pifile.cpp | 158 + _oldpip/pip_0.4.0_r5/pifile.h | 240 + _oldpip/pip_0.4.0_r5/pigeometry.h | 137 + _oldpip/pip_0.4.0_r5/piincludes.cpp | 592 + _oldpip/pip_0.4.0_r5/piincludes.h | 978 + _oldpip/pip_0.4.0_r5/piiodevice.cpp | 292 + _oldpip/pip_0.4.0_r5/piiodevice.h | 329 + _oldpip/pip_0.4.0_r5/pikbdlistener.cpp | 168 + _oldpip/pip_0.4.0_r5/pikbdlistener.h | 130 + _oldpip/pip_0.4.0_r5/pimap.h | 452 + _oldpip/pip_0.4.0_r5/pimath.cpp | 1627 + _oldpip/pip_0.4.0_r5/pimath.h | 1026 + _oldpip/pip_0.4.0_r5/pimonitor.cpp | 26 + _oldpip/pip_0.4.0_r5/pimonitor.h | 39 + _oldpip/pip_0.4.0_r5/pimultiprotocol.cpp | 21 + _oldpip/pip_0.4.0_r5/pimultiprotocol.h | 93 + _oldpip/pip_0.4.0_r5/pimutex.cpp | 59 + _oldpip/pip_0.4.0_r5/pimutex.h | 93 + _oldpip/pip_0.4.0_r5/piobject.cpp | 115 + _oldpip/pip_0.4.0_r5/piobject.h | 535 + _oldpip/pip_0.4.0_r5/pip.h | 36 + _oldpip/pip_0.4.0_r5/pip.kdev4 | 3 + _oldpip/pip_0.4.0_r5/pip.pro | 130 + _oldpip/pip_0.4.0_r5/pip.pro.user | 215 + _oldpip/pip_0.4.0_r5/pip_export.h | 35 + _oldpip/pip_0.4.0_r5/pip_resource_win.rc | 34 + _oldpip/pip_0.4.0_r5/pip_test.exe | Bin 0 -> 78668 bytes _oldpip/pip_0.4.0_r5/pipacketextractor.cpp | 301 + _oldpip/pip_0.4.0_r5/pipacketextractor.h | 187 + _oldpip/pip_0.4.0_r5/pipeer.cpp | 515 + _oldpip/pip_0.4.0_r5/pipeer.h | 167 + _oldpip/pip_0.4.0_r5/piprocess.cpp | 199 + _oldpip/pip_0.4.0_r5/piprocess.h | 130 + _oldpip/pip_0.4.0_r5/piprotocol.cpp | 777 + _oldpip/pip_0.4.0_r5/piprotocol.h | 248 + _oldpip/pip_0.4.0_r5/piqueue.h | 41 + _oldpip/pip_0.4.0_r5/piserial.cpp | 664 + _oldpip/pip_0.4.0_r5/piserial.h | 310 + _oldpip/pip_0.4.0_r5/pisignals.cpp | 111 + _oldpip/pip_0.4.0_r5/pisignals.h | 76 + _oldpip/pip_0.4.0_r5/pistack.h | 41 + _oldpip/pip_0.4.0_r5/pistatemachine.h | 333 + _oldpip/pip_0.4.0_r5/pistring.cpp | 764 + _oldpip/pip_0.4.0_r5/pistring.h | 901 + _oldpip/pip_0.4.0_r5/pisystemmonitor.cpp | 113 + _oldpip/pip_0.4.0_r5/pisystemmonitor.h | 70 + _oldpip/pip_0.4.0_r5/pisystemtests.cpp | 41 + _oldpip/pip_0.4.0_r5/pisystemtests.h | 39 + _oldpip/pip_0.4.0_r5/pithread.cpp | 288 + _oldpip/pip_0.4.0_r5/pithread.h | 219 + _oldpip/pip_0.4.0_r5/pitime.cpp | 363 + _oldpip/pip_0.4.0_r5/pitime.h | 315 + _oldpip/pip_0.4.0_r5/pitimer.cpp | 579 + _oldpip/pip_0.4.0_r5/pitimer.h | 269 + _oldpip/pip_0.4.0_r5/piusb.cpp | 410 + _oldpip/pip_0.4.0_r5/piusb.h | 153 + _oldpip/pip_0.4.0_r5/pivariant.cpp | 534 + _oldpip/pip_0.4.0_r5/pivariant.h | 461 + _oldpip/pip_0.4.0_r5/pivector.h | 527 + .../CMakeDirectoryInformation.cmake | 16 + .../pip_remote_console.dir/CXX.includecache | 408 + .../pip_remote_console.dir/DependInfo.cmake | 59 + .../pip_remote_console.dir/build.make | 107 + .../pip_remote_console.dir/cmake_clean.cmake | 12 + .../pip_remote_console.dir/depend.internal | 49 + .../pip_remote_console.dir/depend.make | 49 + .../pip_remote_console.dir/flags.make | 8 + .../pip_remote_console.dir/includes_CXX.rsp | 1 + .../pip_remote_console.dir/link.txt | 3 + .../pip_remote_console.dir/main.cpp.obj | Bin 0 -> 16764 bytes .../pip_remote_console.dir/objects1.rsp | 1 + .../pip_remote_console.dir/progress.make | 2 + .../remote_console/CMakeFiles/progress.marks | 1 + .../remote_console/CMakeLists.txt | 6 + _oldpip/pip_0.4.0_r5/remote_console/Makefile | 211 + .../remote_console/cmake_install.cmake | 29 + _oldpip/pip_0.4.0_r5/remote_console/main.cpp | 64 + .../remote_console/pip_remote_console.exe | Bin 0 -> 67156 bytes .../CMakeDirectoryInformation.cmake | 16 + .../pip_sys_test.dir/CXX.includecache | 414 + .../pip_sys_test.dir/DependInfo.cmake | 59 + .../CMakeFiles/pip_sys_test.dir/build.make | 107 + .../pip_sys_test.dir/cmake_clean.cmake | 12 + .../pip_sys_test.dir/depend.internal | 50 + .../CMakeFiles/pip_sys_test.dir/depend.make | 50 + .../CMakeFiles/pip_sys_test.dir/flags.make | 8 + .../pip_sys_test.dir/includes_CXX.rsp | 1 + .../CMakeFiles/pip_sys_test.dir/link.txt | 3 + .../CMakeFiles/pip_sys_test.dir/main.cpp.obj | Bin 0 -> 2407 bytes .../CMakeFiles/pip_sys_test.dir/objects1.rsp | 1 + .../CMakeFiles/pip_sys_test.dir/progress.make | 2 + .../system_test/CMakeFiles/progress.marks | 1 + .../pip_0.4.0_r5/system_test/CMakeLists.txt | 6 + _oldpip/pip_0.4.0_r5/system_test/Makefile | 211 + .../system_test/cmake_install.cmake | 29 + _oldpip/pip_0.4.0_r5/system_test/main.cpp | 106 + .../pip_0.4.0_r5/system_test/pip_sys_test.exe | Bin 0 -> 50554 bytes clean.bat | 5 + clean_all | 16 + kx_tools/.kdev4/_custom.kdev4 | 25 + kx_tools/.kdev4/kx_tools.kdev4 | 175 + kx_tools/CMakeLists.txt | 59 + kx_tools/LEDOS_devices.dat | 0 kx_tools/clean | 4 + kx_tools/clean.bat | 4 + kx_tools/gpio.conf | 0 kx_tools/icons/accessories-calculator.png | Bin 0 -> 1525 bytes kx_tools/icons/alpha.png | Bin 0 -> 158 bytes kx_tools/icons/application-exit.png | Bin 0 -> 1134 bytes kx_tools/icons/archive-extract.png | Bin 0 -> 1005 bytes kx_tools/icons/configure.png | Bin 0 -> 717 bytes kx_tools/icons/dialog-close.png | Bin 0 -> 813 bytes kx_tools/icons/document-export.png | Bin 0 -> 1106 bytes kx_tools/icons/document-import.png | Bin 0 -> 1017 bytes kx_tools/icons/document-open.png | Bin 0 -> 1798 bytes kx_tools/icons/document-save-.png | Bin 0 -> 1263 bytes kx_tools/icons/document-save.png | Bin 0 -> 563 bytes kx_tools/icons/edit-clear-.png | Bin 0 -> 2066 bytes kx_tools/icons/edit-clear-locationbar-rtl.png | Bin 0 -> 644 bytes kx_tools/icons/edit-clear.png | Bin 0 -> 802 bytes kx_tools/icons/edit-copy.png | Bin 0 -> 485 bytes kx_tools/icons/edit-delete.png | Bin 0 -> 640 bytes kx_tools/icons/edit-find-.png | Bin 0 -> 1631 bytes kx_tools/icons/edit-find.png | Bin 0 -> 634 bytes kx_tools/icons/edit-guides.png | Bin 0 -> 544 bytes kx_tools/icons/edit-paste.png | Bin 0 -> 529 bytes kx_tools/icons/expand_s_x.png | Bin 0 -> 571 bytes kx_tools/icons/expand_s_y.png | Bin 0 -> 577 bytes kx_tools/icons/expand_x.png | Bin 0 -> 579 bytes kx_tools/icons/expand_y.png | Bin 0 -> 577 bytes kx_tools/icons/item-add.png | Bin 0 -> 639 bytes kx_tools/icons/item.png | Bin 0 -> 448 bytes kx_tools/icons/layer-visible-off.png | Bin 0 -> 1766 bytes kx_tools/icons/layer-visible-on.png | Bin 0 -> 2001 bytes kx_tools/icons/list-add.png | Bin 0 -> 564 bytes kx_tools/icons/media-playback-pause.png | Bin 0 -> 1145 bytes kx_tools/icons/media-playback-stop.png | Bin 0 -> 1165 bytes kx_tools/icons/media-record.png | Bin 0 -> 1843 bytes kx_tools/icons/node-add.png | Bin 0 -> 694 bytes kx_tools/icons/node.png | Bin 0 -> 658 bytes kx_tools/icons/view-grid.png | Bin 0 -> 691 bytes kx_tools/icons/view-refresh.png | Bin 0 -> 2182 bytes kx_tools/icons/zoom-fit-best.png | Bin 0 -> 539 bytes kx_tools/icons/zoom-fit-height.png | Bin 0 -> 929 bytes kx_tools/k.dat | 40 + kx_tools/kdesc.h | 23 + kx_tools/kx_coeffs.cpp | 185 + kx_tools/kx_coeffs.h | 93 + kx_tools/kx_protocol_x.h | 121 + kx_tools/kx_pult.conf | 11 + kx_tools/kx_pult.cpp | 766 + kx_tools/kx_pult.exe | Bin 0 -> 458716 bytes kx_tools/kx_pult.h | 162 + kx_tools/kx_pult.qrc | 40 + kx_tools/kx_pult.qrc.depends | 40 + kx_tools/kx_pult.ui | 1032 + kx_tools/kx_tools.kdev4 | 3 + kx_tools/libkx_utils.dll | Bin 0 -> 200279 bytes kx_tools/main_kx_pult.cpp | 10 + kx_tools/make_lib.bat | 1 + kx_tools/session_KX_Pult.conf | 9 + libs.kdev4 | 3 + make_libs.bat | 1 + make_libs.sh | 8 + mbricks/.kdev4/mbricks.kdev4 | 25 + mbricks/CMakeLists.txt | 29 + mbricks/brick_base.cpp | 144 + mbricks/brick_base.h | 178 + mbricks/brick_composite.cpp | 533 + mbricks/brick_composite.h | 103 + mbricks/brick_digital.cpp | 307 + mbricks/brick_digital.h | 279 + mbricks/brick_emits.cpp | 36 + mbricks/brick_emits.h | 115 + mbricks/brick_interface.cpp | 120 + mbricks/brick_interface.h | 206 + mbricks/brick_link.cpp | 158 + mbricks/brick_link.h | 83 + mbricks/brick_logic.cpp | 68 + mbricks/brick_logic.h | 84 + mbricks/brick_manager.cpp | 321 + mbricks/brick_manager.h | 67 + mbricks/brick_math.cpp | 239 + mbricks/brick_math.h | 248 + mbricks/brick_statistic.cpp | 39 + mbricks/brick_statistic.h | 57 + mbricks/clean | 4 + mbricks/clean.bat | 4 + mbricks/make_install.sh | 5 + mbricks/make_lib.bat | 1 + mbricks/mbricks.h | 9 + mbricks/mbricks.kdev4 | 3 + pip/.gitignore | 2 + pip/.kdev4/_custom.kdev4 | 30 + pip/.kdev4/pip.kdev4 | 48 + pip/AUTHORS.txt | 2 + pip/CMakeLists.txt | 187 + pip/CMakeLists.txt.user | 205 + pip/Doxyfile | 2377 + pip/FindPIP.cmake | 66 + pip/LICENSE.txt | 674 + pip/clean | 19 + pip/clean.bat | 22 + pip/doc/doxygen_sqlite3.db | Bin 0 -> 1199104 bytes pip/doc/events_handlers.odp | Bin 0 -> 12685 bytes pip/doc/examples/pibytearray.cpp | 63 + pip/doc/examples/picli.cpp | 26 + pip/doc/examples/picollection.cpp | 48 + pip/doc/examples/piconfig.cpp | 27 + pip/doc/examples/picontainers.cpp | 207 + pip/doc/examples/picout.cpp | 36 + pip/doc/examples/pievaluator.cpp | 31 + pip/doc/examples/piincludes.cpp | 55 + pip/doc/examples/piiodevice.cpp | 53 + pip/doc/examples/pikbdlistener.cpp | 17 + pip/doc/examples/pimutex.cpp | 9 + pip/doc/examples/piobject.cpp | 32 + pip/doc/examples/pistatemachine.cpp | 74 + pip/doc/examples/pistring.cpp | 332 + pip/doc/examples/pitimer.cpp | 68 + pip/doc/html/annotated.html | 168 + pip/doc/html/annotated.js | 36 + pip/doc/html/bc_s.png | Bin 0 -> 674 bytes pip/doc/html/bdwn.png | Bin 0 -> 146 bytes .../html/class_p_i_binary_log-members.html | 221 + pip/doc/html/class_p_i_binary_log.html | 526 + pip/doc/html/class_p_i_binary_log.js | 8 + .../class_p_i_binary_log__inherit__graph.map | 5 + .../class_p_i_binary_log__inherit__graph.md5 | 1 + .../class_p_i_binary_log__inherit__graph.svg | 57 + .../html/class_p_i_byte_array-members.html | 184 + pip/doc/html/class_p_i_byte_array.html | 448 + pip/doc/html/class_p_i_byte_array.js | 61 + pip/doc/html/class_p_i_c_l_i-members.html | 194 + pip/doc/html/class_p_i_c_l_i.html | 445 + pip/doc/html/class_p_i_c_l_i.js | 12 + .../html/class_p_i_c_l_i__inherit__graph.map | 3 + .../html/class_p_i_c_l_i__inherit__graph.md5 | 1 + .../html/class_p_i_c_l_i__inherit__graph.svg | 31 + pip/doc/html/class_p_i_char-members.html | 156 + pip/doc/html/class_p_i_char.html | 258 + pip/doc/html/class_p_i_char.js | 32 + .../html/class_p_i_collection-members.html | 131 + pip/doc/html/class_p_i_collection.html | 281 + pip/doc/html/class_p_i_collection.js | 5 + pip/doc/html/class_p_i_config-members.html | 259 + pip/doc/html/class_p_i_config.html | 700 + pip/doc/html/class_p_i_config.js | 43 + .../class_p_i_config_1_1_branch-members.html | 155 + pip/doc/html/class_p_i_config_1_1_branch.html | 140 + ..._p_i_config_1_1_branch__inherit__graph.map | 3 + ..._p_i_config_1_1_branch__inherit__graph.md5 | 1 + ..._p_i_config_1_1_branch__inherit__graph.svg | 31 + .../class_p_i_config_1_1_entry-members.html | 184 + pip/doc/html/class_p_i_config_1_1_entry.html | 451 + pip/doc/html/class_p_i_config_1_1_entry.js | 60 + .../html/class_p_i_config__inherit__graph.map | 6 + .../html/class_p_i_config__inherit__graph.md5 | 1 + .../html/class_p_i_config__inherit__graph.svg | 70 + .../html/class_p_i_connection-members.html | 254 + pip/doc/html/class_p_i_connection.html | 1004 + pip/doc/html/class_p_i_connection.js | 70 + .../class_p_i_connection__inherit__graph.map | 3 + .../class_p_i_connection__inherit__graph.md5 | 1 + .../class_p_i_connection__inherit__graph.svg | 31 + pip/doc/html/class_p_i_console-members.html | 292 + pip/doc/html/class_p_i_console.html | 966 + pip/doc/html/class_p_i_console.js | 84 + .../class_p_i_console__inherit__graph.map | 4 + .../class_p_i_console__inherit__graph.md5 | 1 + .../class_p_i_console__inherit__graph.svg | 44 + pip/doc/html/class_p_i_cout-members.html | 158 + pip/doc/html/class_p_i_cout.html | 426 + pip/doc/html/class_p_i_cout.js | 34 + .../html/class_p_i_diagnostics-members.html | 246 + pip/doc/html/class_p_i_diagnostics.html | 497 + pip/doc/html/class_p_i_diagnostics.js | 42 + .../class_p_i_diagnostics__inherit__graph.map | 4 + .../class_p_i_diagnostics__inherit__graph.md5 | 1 + .../class_p_i_diagnostics__inherit__graph.svg | 44 + pip/doc/html/class_p_i_ethernet-members.html | 289 + pip/doc/html/class_p_i_ethernet.html | 880 + pip/doc/html/class_p_i_ethernet.js | 81 + ...i_ethernet_1_1_interface_list-members.html | 159 + ...class_p_i_ethernet_1_1_interface_list.html | 161 + .../class_p_i_ethernet_1_1_interface_list.js | 7 + ...net_1_1_interface_list__inherit__graph.map | 3 + ...net_1_1_interface_list__inherit__graph.md5 | 1 + ...net_1_1_interface_list__inherit__graph.svg | 32 + .../class_p_i_ethernet__inherit__graph.map | 5 + .../class_p_i_ethernet__inherit__graph.md5 | 1 + .../class_p_i_ethernet__inherit__graph.svg | 57 + pip/doc/html/class_p_i_evaluator-members.html | 142 + pip/doc/html/class_p_i_evaluator.html | 299 + pip/doc/html/class_p_i_evaluator.js | 18 + pip/doc/html/class_p_i_file-members.html | 221 + pip/doc/html/class_p_i_file.html | 526 + pip/doc/html/class_p_i_file.js | 7 + .../html/class_p_i_file__inherit__graph.map | 6 + .../html/class_p_i_file__inherit__graph.md5 | 1 + .../html/class_p_i_file__inherit__graph.svg | 70 + pip/doc/html/class_p_i_flags-members.html | 175 + pip/doc/html/class_p_i_flags.html | 338 + pip/doc/html/class_p_i_flags.js | 51 + .../html/class_p_i_i_o_device-members.html | 221 + pip/doc/html/class_p_i_i_o_device.html | 678 + pip/doc/html/class_p_i_i_o_device.js | 13 + .../class_p_i_i_o_device__inherit__graph.map | 10 + .../class_p_i_i_o_device__inherit__graph.md5 | 1 + .../class_p_i_i_o_device__inherit__graph.svg | 122 + .../html/class_p_i_kbd_listener-members.html | 232 + pip/doc/html/class_p_i_kbd_listener.html | 601 + pip/doc/html/class_p_i_kbd_listener.js | 24 + ...class_p_i_kbd_listener__inherit__graph.map | 4 + ...class_p_i_kbd_listener__inherit__graph.md5 | 1 + ...class_p_i_kbd_listener__inherit__graph.svg | 44 + pip/doc/html/class_p_i_mutex-members.html | 131 + pip/doc/html/class_p_i_mutex.html | 238 + pip/doc/html/class_p_i_mutex.js | 7 + pip/doc/html/class_p_i_object-members.html | 185 + pip/doc/html/class_p_i_object.html | 432 + pip/doc/html/class_p_i_object.js | 58 + .../html/class_p_i_object__inherit__graph.map | 19 + .../html/class_p_i_object__inherit__graph.md5 | 1 + .../html/class_p_i_object__inherit__graph.svg | 327 + .../class_p_i_object__inherit__graph_org.svg | 239 + .../class_p_i_packet_extractor-members.html | 250 + pip/doc/html/class_p_i_packet_extractor.html | 854 + pip/doc/html/class_p_i_packet_extractor.js | 37 + ...s_p_i_packet_extractor__inherit__graph.map | 5 + ...s_p_i_packet_extractor__inherit__graph.md5 | 1 + ...s_p_i_packet_extractor__inherit__graph.svg | 57 + pip/doc/html/class_p_i_process-members.html | 213 + pip/doc/html/class_p_i_process.html | 307 + .../class_p_i_process__inherit__graph.map | 4 + .../class_p_i_process__inherit__graph.md5 | 1 + .../class_p_i_process__inherit__graph.svg | 44 + pip/doc/html/class_p_i_protocol-members.html | 191 + pip/doc/html/class_p_i_protocol.html | 440 + pip/doc/html/class_p_i_protocol.js | 12 + .../class_p_i_protocol__inherit__graph.map | 3 + .../class_p_i_protocol__inherit__graph.md5 | 1 + .../class_p_i_protocol__inherit__graph.svg | 31 + pip/doc/html/class_p_i_serial-members.html | 223 + pip/doc/html/class_p_i_serial.html | 531 + pip/doc/html/class_p_i_serial.js | 10 + .../html/class_p_i_serial__inherit__graph.map | 5 + .../html/class_p_i_serial__inherit__graph.md5 | 1 + .../html/class_p_i_serial__inherit__graph.svg | 57 + pip/doc/html/class_p_i_set-members.html | 135 + pip/doc/html/class_p_i_set.html | 175 + pip/doc/html/class_p_i_set.js | 11 + .../html/class_p_i_state_machine-members.html | 209 + pip/doc/html/class_p_i_state_machine.html | 626 + pip/doc/html/class_p_i_state_machine.js | 29 + ...lass_p_i_state_machine__inherit__graph.map | 3 + ...lass_p_i_state_machine__inherit__graph.md5 | 1 + ...lass_p_i_state_machine__inherit__graph.svg | 31 + pip/doc/html/class_p_i_string-members.html | 275 + pip/doc/html/class_p_i_string.html | 3942 ++ pip/doc/html/class_p_i_string.js | 138 + .../html/class_p_i_string_list-members.html | 140 + pip/doc/html/class_p_i_string_list.html | 300 + pip/doc/html/class_p_i_string_list.js | 16 + .../html/class_p_i_system_time-members.html | 161 + pip/doc/html/class_p_i_system_time.html | 322 + pip/doc/html/class_p_i_system_time.js | 32 + pip/doc/html/class_p_i_thread-members.html | 216 + pip/doc/html/class_p_i_thread.html | 746 + pip/doc/html/class_p_i_thread.js | 35 + .../html/class_p_i_thread__inherit__graph.map | 13 + .../html/class_p_i_thread__inherit__graph.md5 | 1 + .../html/class_p_i_thread__inherit__graph.svg | 161 + .../html/class_p_i_time_measurer-members.html | 139 + pip/doc/html/class_p_i_time_measurer.html | 218 + pip/doc/html/class_p_i_time_measurer.js | 10 + pip/doc/html/class_p_i_timer-members.html | 212 + pip/doc/html/class_p_i_timer.html | 718 + pip/doc/html/class_p_i_timer.js | 31 + .../html/class_p_i_timer__inherit__graph.map | 4 + .../html/class_p_i_timer__inherit__graph.md5 | 1 + .../html/class_p_i_timer__inherit__graph.svg | 44 + pip/doc/html/class_p_i_variant-members.html | 256 + pip/doc/html/class_p_i_variant.html | 1073 + pip/doc/html/class_p_i_variant.js | 130 + pip/doc/html/class_p_i_vector-members.html | 155 + pip/doc/html/class_p_i_vector.html | 530 + pip/doc/html/class_p_i_vector.js | 30 + pip/doc/html/classes.html | 149 + pip/doc/html/closed.png | Bin 0 -> 132 bytes pip/doc/html/deprecated.html | 124 + pip/doc/html/dir_000001_000006.html | 113 + pip/doc/html/dir_000002_000004.html | 113 + pip/doc/html/dir_000002_000005.html | 113 + pip/doc/html/dir_000002_000006.html | 113 + pip/doc/html/dir_000003_000004.html | 113 + pip/doc/html/dir_000004_000003.html | 113 + pip/doc/html/dir_000004_000005.html | 113 + pip/doc/html/dir_000004_000006.html | 113 + pip/doc/html/dir_000004_000007.html | 113 + pip/doc/html/dir_000004_000008.html | 113 + pip/doc/html/dir_000005_000004.html | 113 + pip/doc/html/dir_000005_000007.html | 113 + pip/doc/html/dir_000005_000008.html | 113 + pip/doc/html/dir_000006_000004.html | 113 + pip/doc/html/dir_000007_000003.html | 113 + pip/doc/html/dir_000007_000005.html | 113 + pip/doc/html/dir_000007_000008.html | 113 + pip/doc/html/dir_000008_000004.html | 113 + .../dir_0b61c55142250c0cc363383afd8075a4.html | 151 + .../dir_0b61c55142250c0cc363383afd8075a4.js | 11 + ...r_0b61c55142250c0cc363383afd8075a4_dep.map | 7 + ...r_0b61c55142250c0cc363383afd8075a4_dep.md5 | 1 + ...r_0b61c55142250c0cc363383afd8075a4_dep.svg | 54 + .../dir_3edb929655fe9d5ef5f6ec0f70ce278e.html | 131 + ...r_3edb929655fe9d5ef5f6ec0f70ce278e_dep.map | 6 + ...r_3edb929655fe9d5ef5f6ec0f70ce278e_dep.md5 | 1 + ...r_3edb929655fe9d5ef5f6ec0f70ce278e_dep.svg | 45 + .../dir_3ef7287b8e7a9ed45eff58e9a3bb8bc1.html | 139 + .../dir_3ef7287b8e7a9ed45eff58e9a3bb8bc1.js | 5 + ...r_3ef7287b8e7a9ed45eff58e9a3bb8bc1_dep.map | 14 + ...r_3ef7287b8e7a9ed45eff58e9a3bb8bc1_dep.md5 | 1 + ...r_3ef7287b8e7a9ed45eff58e9a3bb8bc1_dep.svg | 115 + .../dir_68267d1309a1af8e8297ef4c3efbcdba.html | 156 + .../dir_68267d1309a1af8e8297ef4c3efbcdba.js | 10 + ...r_68267d1309a1af8e8297ef4c3efbcdba_dep.map | 29 + ...r_68267d1309a1af8e8297ef4c3efbcdba_dep.md5 | 1 + ...r_68267d1309a1af8e8297ef4c3efbcdba_dep.svg | 249 + .../dir_ae9a93452e2a84339148a16bcf2eb561.html | 142 + .../dir_ae9a93452e2a84339148a16bcf2eb561.js | 6 + ...r_ae9a93452e2a84339148a16bcf2eb561_dep.map | 7 + ...r_ae9a93452e2a84339148a16bcf2eb561_dep.md5 | 1 + ...r_ae9a93452e2a84339148a16bcf2eb561_dep.svg | 54 + .../dir_aebb8dcc11953d78e620bbef0b9e2183.html | 182 + .../dir_aebb8dcc11953d78e620bbef0b9e2183.js | 20 + ...r_aebb8dcc11953d78e620bbef0b9e2183_dep.map | 23 + ...r_aebb8dcc11953d78e620bbef0b9e2183_dep.md5 | 1 + ...r_aebb8dcc11953d78e620bbef0b9e2183_dep.svg | 194 + .../dir_bfedb72b9d87795234454f6223b9ab1e.html | 144 + .../dir_bfedb72b9d87795234454f6223b9ab1e.js | 8 + ...r_bfedb72b9d87795234454f6223b9ab1e_dep.map | 7 + ...r_bfedb72b9d87795234454f6223b9ab1e_dep.md5 | 1 + ...r_bfedb72b9d87795234454f6223b9ab1e_dep.svg | 54 + .../dir_c184e51c84f2c3f0345bbc8a0d75d3e1.html | 197 + .../dir_c184e51c84f2c3f0345bbc8a0d75d3e1.js | 19 + ...r_c184e51c84f2c3f0345bbc8a0d75d3e1_dep.map | 16 + ...r_c184e51c84f2c3f0345bbc8a0d75d3e1_dep.md5 | 1 + ...r_c184e51c84f2c3f0345bbc8a0d75d3e1_dep.svg | 133 + .../dir_d501334aeb1b78ad67cd3c72c37b1e87.html | 165 + .../dir_d501334aeb1b78ad67cd3c72c37b1e87.js | 9 + ...r_d501334aeb1b78ad67cd3c72c37b1e87_dep.map | 12 + ...r_d501334aeb1b78ad67cd3c72c37b1e87_dep.md5 | 1 + ...r_d501334aeb1b78ad67cd3c72c37b1e87_dep.svg | 97 + pip/doc/html/doxygen.css | 1440 + pip/doc/html/doxygen.png | Bin 0 -> 3839 bytes pip/doc/html/dynsections.js | 97 + pip/doc/html/events_handlers.png | Bin 0 -> 28786 bytes pip/doc/html/files.html | 175 + pip/doc/html/files.js | 4 + pip/doc/html/ftv2blank.png | Bin 0 -> 86 bytes pip/doc/html/ftv2doc.png | Bin 0 -> 756 bytes pip/doc/html/ftv2folderclosed.png | Bin 0 -> 579 bytes pip/doc/html/ftv2folderopen.png | Bin 0 -> 590 bytes pip/doc/html/ftv2lastnode.png | Bin 0 -> 86 bytes pip/doc/html/ftv2link.png | Bin 0 -> 756 bytes pip/doc/html/ftv2mlastnode.png | Bin 0 -> 242 bytes pip/doc/html/ftv2mnode.png | Bin 0 -> 242 bytes pip/doc/html/ftv2node.png | Bin 0 -> 86 bytes pip/doc/html/ftv2plastnode.png | Bin 0 -> 232 bytes pip/doc/html/ftv2pnode.png | Bin 0 -> 232 bytes pip/doc/html/ftv2splitbar.png | Bin 0 -> 314 bytes pip/doc/html/ftv2vertline.png | Bin 0 -> 86 bytes pip/doc/html/functions.html | 261 + pip/doc/html/functions_b.html | 236 + pip/doc/html/functions_c.html | 340 + pip/doc/html/functions_d.html | 235 + pip/doc/html/functions_dup.js | 27 + pip/doc/html/functions_e.html | 295 + pip/doc/html/functions_enum.html | 165 + pip/doc/html/functions_eval.html | 520 + pip/doc/html/functions_f.html | 264 + pip/doc/html/functions_func.html | 241 + pip/doc/html/functions_func.js | 26 + pip/doc/html/functions_func_b.html | 174 + pip/doc/html/functions_func_c.html | 285 + pip/doc/html/functions_func_d.html | 201 + pip/doc/html/functions_func_e.html | 240 + pip/doc/html/functions_func_f.html | 244 + pip/doc/html/functions_func_g.html | 188 + pip/doc/html/functions_func_h.html | 165 + pip/doc/html/functions_func_i.html | 271 + pip/doc/html/functions_func_j.html | 168 + pip/doc/html/functions_func_k.html | 166 + pip/doc/html/functions_func_l.html | 184 + pip/doc/html/functions_func_m.html | 180 + pip/doc/html/functions_func_n.html | 175 + pip/doc/html/functions_func_o.html | 323 + pip/doc/html/functions_func_p.html | 299 + pip/doc/html/functions_func_q.html | 174 + pip/doc/html/functions_func_r.html | 336 + pip/doc/html/functions_func_s.html | 435 + pip/doc/html/functions_func_t.html | 351 + pip/doc/html/functions_func_u.html | 169 + pip/doc/html/functions_func_v.html | 177 + pip/doc/html/functions_func_w.html | 187 + pip/doc/html/functions_g.html | 196 + pip/doc/html/functions_h.html | 182 + pip/doc/html/functions_i.html | 311 + pip/doc/html/functions_j.html | 169 + pip/doc/html/functions_k.html | 167 + pip/doc/html/functions_l.html | 200 + pip/doc/html/functions_m.html | 187 + pip/doc/html/functions_n.html | 193 + pip/doc/html/functions_o.html | 331 + pip/doc/html/functions_p.html | 342 + pip/doc/html/functions_q.html | 181 + pip/doc/html/functions_r.html | 358 + pip/doc/html/functions_rela.html | 323 + pip/doc/html/functions_s.html | 469 + pip/doc/html/functions_t.html | 384 + pip/doc/html/functions_type.html | 139 + pip/doc/html/functions_u.html | 198 + pip/doc/html/functions_v.html | 179 + pip/doc/html/functions_vars.html | 196 + pip/doc/html/functions_w.html | 209 + pip/doc/html/functions_y.html | 166 + pip/doc/html/globals.html | 405 + pip/doc/html/globals_defs.html | 265 + pip/doc/html/globals_func.html | 282 + pip/doc/html/globals_vars.html | 131 + pip/doc/html/graph_legend.html | 176 + pip/doc/html/graph_legend.md5 | 1 + pip/doc/html/graph_legend.svg | 121 + pip/doc/html/hierarchy.html | 240 + pip/doc/html/hierarchy.js | 120 + pip/doc/html/index.html | 150 + pip/doc/html/index.qhp | 6202 +++ pip/doc/html/inherit_graph_0.map | 3 + pip/doc/html/inherit_graph_0.md5 | 1 + pip/doc/html/inherit_graph_0.svg | 21 + pip/doc/html/inherit_graph_1.map | 3 + pip/doc/html/inherit_graph_1.md5 | 1 + pip/doc/html/inherit_graph_1.svg | 21 + pip/doc/html/inherit_graph_10.map | 3 + pip/doc/html/inherit_graph_10.md5 | 1 + pip/doc/html/inherit_graph_10.svg | 21 + pip/doc/html/inherit_graph_11.map | 3 + pip/doc/html/inherit_graph_11.md5 | 1 + pip/doc/html/inherit_graph_11.svg | 22 + pip/doc/html/inherit_graph_12.map | 3 + pip/doc/html/inherit_graph_12.md5 | 1 + pip/doc/html/inherit_graph_12.svg | 22 + pip/doc/html/inherit_graph_13.map | 3 + pip/doc/html/inherit_graph_13.md5 | 1 + pip/doc/html/inherit_graph_13.svg | 21 + pip/doc/html/inherit_graph_14.map | 3 + pip/doc/html/inherit_graph_14.md5 | 1 + pip/doc/html/inherit_graph_14.svg | 21 + pip/doc/html/inherit_graph_15.map | 20 + pip/doc/html/inherit_graph_15.md5 | 1 + pip/doc/html/inherit_graph_15.svg | 242 + pip/doc/html/inherit_graph_16.map | 3 + pip/doc/html/inherit_graph_16.md5 | 1 + pip/doc/html/inherit_graph_16.svg | 21 + pip/doc/html/inherit_graph_17.map | 3 + pip/doc/html/inherit_graph_17.md5 | 1 + pip/doc/html/inherit_graph_17.svg | 21 + pip/doc/html/inherit_graph_18.map | 3 + pip/doc/html/inherit_graph_18.md5 | 1 + pip/doc/html/inherit_graph_18.svg | 21 + pip/doc/html/inherit_graph_19.map | 3 + pip/doc/html/inherit_graph_19.md5 | 1 + pip/doc/html/inherit_graph_19.svg | 21 + pip/doc/html/inherit_graph_2.map | 3 + pip/doc/html/inherit_graph_2.md5 | 1 + pip/doc/html/inherit_graph_2.svg | 21 + pip/doc/html/inherit_graph_20.map | 3 + pip/doc/html/inherit_graph_20.md5 | 1 + pip/doc/html/inherit_graph_20.svg | 22 + pip/doc/html/inherit_graph_21.map | 3 + pip/doc/html/inherit_graph_21.md5 | 1 + pip/doc/html/inherit_graph_21.svg | 22 + pip/doc/html/inherit_graph_22.map | 3 + pip/doc/html/inherit_graph_22.md5 | 1 + pip/doc/html/inherit_graph_22.svg | 21 + pip/doc/html/inherit_graph_23.map | 3 + pip/doc/html/inherit_graph_23.md5 | 1 + pip/doc/html/inherit_graph_23.svg | 21 + pip/doc/html/inherit_graph_24.map | 3 + pip/doc/html/inherit_graph_24.md5 | 1 + pip/doc/html/inherit_graph_24.svg | 21 + pip/doc/html/inherit_graph_25.map | 3 + pip/doc/html/inherit_graph_25.md5 | 1 + pip/doc/html/inherit_graph_25.svg | 21 + pip/doc/html/inherit_graph_26.map | 3 + pip/doc/html/inherit_graph_26.md5 | 1 + pip/doc/html/inherit_graph_26.svg | 21 + pip/doc/html/inherit_graph_27.map | 3 + pip/doc/html/inherit_graph_27.md5 | 1 + pip/doc/html/inherit_graph_27.svg | 21 + pip/doc/html/inherit_graph_28.map | 3 + pip/doc/html/inherit_graph_28.md5 | 1 + pip/doc/html/inherit_graph_28.svg | 21 + pip/doc/html/inherit_graph_29.map | 3 + pip/doc/html/inherit_graph_29.md5 | 1 + pip/doc/html/inherit_graph_29.svg | 22 + pip/doc/html/inherit_graph_3.map | 3 + pip/doc/html/inherit_graph_3.md5 | 1 + pip/doc/html/inherit_graph_3.svg | 21 + pip/doc/html/inherit_graph_30.map | 3 + pip/doc/html/inherit_graph_30.md5 | 1 + pip/doc/html/inherit_graph_30.svg | 21 + pip/doc/html/inherit_graph_31.map | 3 + pip/doc/html/inherit_graph_31.md5 | 1 + pip/doc/html/inherit_graph_31.svg | 21 + pip/doc/html/inherit_graph_32.map | 3 + pip/doc/html/inherit_graph_32.md5 | 1 + pip/doc/html/inherit_graph_32.svg | 21 + pip/doc/html/inherit_graph_33.map | 3 + pip/doc/html/inherit_graph_33.md5 | 1 + pip/doc/html/inherit_graph_33.svg | 21 + pip/doc/html/inherit_graph_34.map | 3 + pip/doc/html/inherit_graph_34.md5 | 1 + pip/doc/html/inherit_graph_34.svg | 21 + pip/doc/html/inherit_graph_35.map | 3 + pip/doc/html/inherit_graph_35.md5 | 1 + pip/doc/html/inherit_graph_35.svg | 21 + pip/doc/html/inherit_graph_36.map | 3 + pip/doc/html/inherit_graph_36.md5 | 1 + pip/doc/html/inherit_graph_36.svg | 21 + pip/doc/html/inherit_graph_37.map | 3 + pip/doc/html/inherit_graph_37.md5 | 1 + pip/doc/html/inherit_graph_37.svg | 21 + pip/doc/html/inherit_graph_38.map | 3 + pip/doc/html/inherit_graph_38.md5 | 1 + pip/doc/html/inherit_graph_38.svg | 21 + pip/doc/html/inherit_graph_39.map | 3 + pip/doc/html/inherit_graph_39.md5 | 1 + pip/doc/html/inherit_graph_39.svg | 21 + pip/doc/html/inherit_graph_4.map | 3 + pip/doc/html/inherit_graph_4.md5 | 1 + pip/doc/html/inherit_graph_4.svg | 21 + pip/doc/html/inherit_graph_40.map | 3 + pip/doc/html/inherit_graph_40.md5 | 1 + pip/doc/html/inherit_graph_40.svg | 21 + pip/doc/html/inherit_graph_41.map | 4 + pip/doc/html/inherit_graph_41.md5 | 1 + pip/doc/html/inherit_graph_41.svg | 34 + pip/doc/html/inherit_graph_42.map | 3 + pip/doc/html/inherit_graph_42.md5 | 1 + pip/doc/html/inherit_graph_42.svg | 21 + pip/doc/html/inherit_graph_43.map | 3 + pip/doc/html/inherit_graph_43.md5 | 1 + pip/doc/html/inherit_graph_43.svg | 21 + pip/doc/html/inherit_graph_44.map | 3 + pip/doc/html/inherit_graph_44.md5 | 1 + pip/doc/html/inherit_graph_44.svg | 21 + pip/doc/html/inherit_graph_45.map | 3 + pip/doc/html/inherit_graph_45.md5 | 1 + pip/doc/html/inherit_graph_45.svg | 21 + pip/doc/html/inherit_graph_46.map | 3 + pip/doc/html/inherit_graph_46.md5 | 1 + pip/doc/html/inherit_graph_46.svg | 21 + pip/doc/html/inherit_graph_47.map | 3 + pip/doc/html/inherit_graph_47.md5 | 1 + pip/doc/html/inherit_graph_47.svg | 21 + pip/doc/html/inherit_graph_48.map | 3 + pip/doc/html/inherit_graph_48.md5 | 1 + pip/doc/html/inherit_graph_48.svg | 21 + pip/doc/html/inherit_graph_49.map | 3 + pip/doc/html/inherit_graph_49.md5 | 1 + pip/doc/html/inherit_graph_49.svg | 21 + pip/doc/html/inherit_graph_5.map | 3 + pip/doc/html/inherit_graph_5.md5 | 1 + pip/doc/html/inherit_graph_5.svg | 21 + pip/doc/html/inherit_graph_50.map | 3 + pip/doc/html/inherit_graph_50.md5 | 1 + pip/doc/html/inherit_graph_50.svg | 21 + pip/doc/html/inherit_graph_51.map | 3 + pip/doc/html/inherit_graph_51.md5 | 1 + pip/doc/html/inherit_graph_51.svg | 21 + pip/doc/html/inherit_graph_52.map | 3 + pip/doc/html/inherit_graph_52.md5 | 1 + pip/doc/html/inherit_graph_52.svg | 22 + pip/doc/html/inherit_graph_53.map | 3 + pip/doc/html/inherit_graph_53.md5 | 1 + pip/doc/html/inherit_graph_53.svg | 22 + pip/doc/html/inherit_graph_54.map | 3 + pip/doc/html/inherit_graph_54.md5 | 1 + pip/doc/html/inherit_graph_54.svg | 22 + pip/doc/html/inherit_graph_55.map | 3 + pip/doc/html/inherit_graph_55.md5 | 1 + pip/doc/html/inherit_graph_55.svg | 21 + pip/doc/html/inherit_graph_56.map | 3 + pip/doc/html/inherit_graph_56.md5 | 1 + pip/doc/html/inherit_graph_56.svg | 21 + pip/doc/html/inherit_graph_57.map | 3 + pip/doc/html/inherit_graph_57.md5 | 1 + pip/doc/html/inherit_graph_57.svg | 21 + pip/doc/html/inherit_graph_58.map | 4 + pip/doc/html/inherit_graph_58.md5 | 1 + pip/doc/html/inherit_graph_58.svg | 35 + pip/doc/html/inherit_graph_59.map | 3 + pip/doc/html/inherit_graph_59.md5 | 1 + pip/doc/html/inherit_graph_59.svg | 22 + pip/doc/html/inherit_graph_6.map | 3 + pip/doc/html/inherit_graph_6.md5 | 1 + pip/doc/html/inherit_graph_6.svg | 21 + pip/doc/html/inherit_graph_60.map | 3 + pip/doc/html/inherit_graph_60.md5 | 1 + pip/doc/html/inherit_graph_60.svg | 22 + pip/doc/html/inherit_graph_61.map | 3 + pip/doc/html/inherit_graph_61.md5 | 1 + pip/doc/html/inherit_graph_61.svg | 22 + pip/doc/html/inherit_graph_62.map | 3 + pip/doc/html/inherit_graph_62.md5 | 1 + pip/doc/html/inherit_graph_62.svg | 22 + pip/doc/html/inherit_graph_63.map | 3 + pip/doc/html/inherit_graph_63.md5 | 1 + pip/doc/html/inherit_graph_63.svg | 21 + pip/doc/html/inherit_graph_64.map | 3 + pip/doc/html/inherit_graph_64.md5 | 1 + pip/doc/html/inherit_graph_64.svg | 22 + pip/doc/html/inherit_graph_65.map | 3 + pip/doc/html/inherit_graph_65.md5 | 1 + pip/doc/html/inherit_graph_65.svg | 21 + pip/doc/html/inherit_graph_66.map | 3 + pip/doc/html/inherit_graph_66.md5 | 1 + pip/doc/html/inherit_graph_66.svg | 21 + pip/doc/html/inherit_graph_67.map | 3 + pip/doc/html/inherit_graph_67.md5 | 1 + pip/doc/html/inherit_graph_67.svg | 22 + pip/doc/html/inherit_graph_68.map | 3 + pip/doc/html/inherit_graph_68.md5 | 1 + pip/doc/html/inherit_graph_68.svg | 21 + pip/doc/html/inherit_graph_69.map | 3 + pip/doc/html/inherit_graph_69.md5 | 1 + pip/doc/html/inherit_graph_69.svg | 22 + pip/doc/html/inherit_graph_7.map | 3 + pip/doc/html/inherit_graph_7.md5 | 1 + pip/doc/html/inherit_graph_7.svg | 21 + pip/doc/html/inherit_graph_70.map | 3 + pip/doc/html/inherit_graph_70.md5 | 1 + pip/doc/html/inherit_graph_70.svg | 22 + pip/doc/html/inherit_graph_71.map | 3 + pip/doc/html/inherit_graph_71.md5 | 1 + pip/doc/html/inherit_graph_71.svg | 21 + pip/doc/html/inherit_graph_72.map | 3 + pip/doc/html/inherit_graph_72.md5 | 1 + pip/doc/html/inherit_graph_72.svg | 21 + pip/doc/html/inherit_graph_73.map | 3 + pip/doc/html/inherit_graph_73.md5 | 1 + pip/doc/html/inherit_graph_73.svg | 21 + pip/doc/html/inherit_graph_74.map | 3 + pip/doc/html/inherit_graph_74.md5 | 1 + pip/doc/html/inherit_graph_74.svg | 21 + pip/doc/html/inherit_graph_75.map | 3 + pip/doc/html/inherit_graph_75.md5 | 1 + pip/doc/html/inherit_graph_75.svg | 21 + pip/doc/html/inherit_graph_76.map | 3 + pip/doc/html/inherit_graph_76.md5 | 1 + pip/doc/html/inherit_graph_76.svg | 22 + pip/doc/html/inherit_graph_77.map | 3 + pip/doc/html/inherit_graph_77.md5 | 1 + pip/doc/html/inherit_graph_77.svg | 22 + pip/doc/html/inherit_graph_78.map | 3 + pip/doc/html/inherit_graph_78.md5 | 1 + pip/doc/html/inherit_graph_78.svg | 22 + pip/doc/html/inherit_graph_79.map | 3 + pip/doc/html/inherit_graph_79.md5 | 1 + pip/doc/html/inherit_graph_79.svg | 22 + pip/doc/html/inherit_graph_8.map | 3 + pip/doc/html/inherit_graph_8.md5 | 1 + pip/doc/html/inherit_graph_8.svg | 21 + pip/doc/html/inherit_graph_80.map | 3 + pip/doc/html/inherit_graph_80.md5 | 1 + pip/doc/html/inherit_graph_80.svg | 22 + pip/doc/html/inherit_graph_81.map | 3 + pip/doc/html/inherit_graph_81.md5 | 1 + pip/doc/html/inherit_graph_81.svg | 21 + pip/doc/html/inherit_graph_82.map | 3 + pip/doc/html/inherit_graph_82.md5 | 1 + pip/doc/html/inherit_graph_82.svg | 21 + pip/doc/html/inherit_graph_83.map | 3 + pip/doc/html/inherit_graph_83.md5 | 1 + pip/doc/html/inherit_graph_83.svg | 21 + pip/doc/html/inherit_graph_84.map | 3 + pip/doc/html/inherit_graph_84.md5 | 1 + pip/doc/html/inherit_graph_84.svg | 21 + pip/doc/html/inherit_graph_85.map | 3 + pip/doc/html/inherit_graph_85.md5 | 1 + pip/doc/html/inherit_graph_85.svg | 21 + pip/doc/html/inherit_graph_86.map | 3 + pip/doc/html/inherit_graph_86.md5 | 1 + pip/doc/html/inherit_graph_86.svg | 21 + pip/doc/html/inherit_graph_87.map | 3 + pip/doc/html/inherit_graph_87.md5 | 1 + pip/doc/html/inherit_graph_87.svg | 21 + pip/doc/html/inherit_graph_88.map | 3 + pip/doc/html/inherit_graph_88.md5 | 1 + pip/doc/html/inherit_graph_88.svg | 21 + pip/doc/html/inherit_graph_89.map | 3 + pip/doc/html/inherit_graph_89.md5 | 1 + pip/doc/html/inherit_graph_89.svg | 21 + pip/doc/html/inherit_graph_9.map | 3 + pip/doc/html/inherit_graph_9.md5 | 1 + pip/doc/html/inherit_graph_9.svg | 21 + pip/doc/html/inherit_graph_90.map | 3 + pip/doc/html/inherit_graph_90.md5 | 1 + pip/doc/html/inherit_graph_90.svg | 21 + pip/doc/html/inherits.html | 310 + pip/doc/html/jquery.js | 72 + .../html/namespace_p_i_cout_manipulators.html | 391 + pip/doc/html/namespacemembers.html | 359 + pip/doc/html/namespacemembers_enum.html | 139 + pip/doc/html/namespacemembers_eval.html | 342 + pip/doc/html/namespaces.html | 127 + pip/doc/html/namespaces.js | 4 + pip/doc/html/nav_f.png | Bin 0 -> 150 bytes pip/doc/html/nav_g.png | Bin 0 -> 94 bytes pip/doc/html/nav_h.png | Bin 0 -> 90 bytes pip/doc/html/navtree.css | 143 + pip/doc/html/navtree.js | 581 + pip/doc/html/navtreeindex0.js | 253 + pip/doc/html/navtreeindex1.js | 253 + pip/doc/html/navtreeindex2.js | 253 + pip/doc/html/navtreeindex3.js | 253 + pip/doc/html/navtreeindex4.js | 253 + pip/doc/html/navtreeindex5.js | 253 + pip/doc/html/navtreeindex6.js | 43 + pip/doc/html/open.png | Bin 0 -> 122 bytes pip/doc/html/packet_detection.png | Bin 0 -> 28193 bytes pip/doc/html/pages.html | 123 + pip/doc/html/pibinarylog_8h.html | 137 + pip/doc/html/pibinarylog_8h.js | 4 + pip/doc/html/pibytearray_8h.html | 312 + pip/doc/html/pibytearray_8h.js | 44 + pip/doc/html/pichar_8h.html | 217 + pip/doc/html/pichar_8h.js | 23 + pip/doc/html/picli_8h.html | 137 + pip/doc/html/picodeinfo_8h.html | 128 + pip/doc/html/picodeparser_8h.html | 128 + pip/doc/html/picollection_8h.html | 137 + pip/doc/html/picollection_8h.js | 6 + pip/doc/html/piconfig.png | Bin 0 -> 37880 bytes pip/doc/html/piconfig_8h.html | 196 + pip/doc/html/piconfig_8h.js | 7 + pip/doc/html/piconnection.png | Bin 0 -> 98609 bytes pip/doc/html/piconnection_8h.html | 137 + pip/doc/html/piconnection_8h.js | 4 + pip/doc/html/piconnection_conf.png | Bin 0 -> 88687 bytes pip/doc/html/piconnection_filters.png | Bin 0 -> 26030 bytes pip/doc/html/piconnection_senders.png | Bin 0 -> 33612 bytes pip/doc/html/piconsole_8h.html | 137 + pip/doc/html/piconsole_8h.js | 4 + pip/doc/html/piconsole_layout.png | Bin 0 -> 23307 bytes pip/doc/html/picontainers_8h.html | 318 + pip/doc/html/picontainers_8h.js | 8 + pip/doc/html/picrc_8h.html | 128 + pip/doc/html/pideque_8h.html | 129 + pip/doc/html/pidiagnostics_8h.html | 137 + pip/doc/html/piethernet_8h.html | 143 + pip/doc/html/piethernet_8h.js | 6 + pip/doc/html/pievaluator_8h.html | 137 + pip/doc/html/pievaluator_8h.js | 4 + pip/doc/html/pifile_8h.html | 137 + pip/doc/html/piincludes_8h.html | 960 + pip/doc/html/piincludes_8h.js | 97 + pip/doc/html/piinit_8h.html | 128 + pip/doc/html/piiodevice_8h.html | 137 + pip/doc/html/piiodevice_8h.js | 6 + pip/doc/html/pikbdlistener_8h.html | 137 + pip/doc/html/pikbdlistener_8h.js | 4 + pip/doc/html/pimap_8h.html | 129 + pip/doc/html/pimath_8h.html | 294 + pip/doc/html/pimath_8h.js | 12 + pip/doc/html/pimutex_8h.html | 137 + pip/doc/html/piobject_8h.html | 138 + pip/doc/html/piobject_8h.js | 44 + pip/doc/html/pip.qhp | Bin 0 -> 1995776 bytes pip/doc/html/pipacketextractor_8h.html | 137 + pip/doc/html/pipacketextractor_8h.js | 4 + pip/doc/html/pipeer_8h.html | 128 + pip/doc/html/piprocess_8h.html | 136 + pip/doc/html/piprotocol_8h.html | 136 + pip/doc/html/piprotocol_8h.js | 4 + pip/doc/html/piserial_8h.html | 137 + pip/doc/html/piserial_8h.js | 4 + pip/doc/html/piset_8h.html | 138 + pip/doc/html/pisignals_8h.html | 128 + pip/doc/html/pistack_8h.html | 129 + pip/doc/html/pistatemachine_8h.html | 143 + pip/doc/html/pistring_8h.html | 201 + pip/doc/html/pistring_8h.js | 19 + pip/doc/html/pithread_8h.html | 138 + pip/doc/html/pithread_8h.js | 4 + pip/doc/html/pitime_8h.html | 272 + pip/doc/html/pitime_8h.js | 13 + pip/doc/html/pitimer_8h.html | 137 + pip/doc/html/pitimer_8h.js | 4 + pip/doc/html/piusb_8h.html | 128 + pip/doc/html/pivariant_8h.html | 138 + pip/doc/html/pivariant_8h.js | 4 + pip/doc/html/pivector_8h.html | 138 + pip/doc/html/pivector_8h.js | 4 + pip/doc/html/resize.js | 97 + pip/doc/html/search/all_0.html | 26 + pip/doc/html/search/all_0.js | 4 + pip/doc/html/search/all_1.html | 26 + pip/doc/html/search/all_1.js | 42 + pip/doc/html/search/all_10.html | 26 + pip/doc/html/search/all_10.js | 212 + pip/doc/html/search/all_11.html | 26 + pip/doc/html/search/all_11.js | 8 + pip/doc/html/search/all_12.html | 26 + pip/doc/html/search/all_12.js | 66 + pip/doc/html/search/all_13.html | 26 + pip/doc/html/search/all_13.js | 101 + pip/doc/html/search/all_14.html | 26 + pip/doc/html/search/all_14.js | 71 + pip/doc/html/search/all_15.html | 26 + pip/doc/html/search/all_15.js | 14 + pip/doc/html/search/all_16.html | 26 + pip/doc/html/search/all_16.js | 8 + pip/doc/html/search/all_17.html | 26 + pip/doc/html/search/all_17.js | 20 + pip/doc/html/search/all_18.html | 26 + pip/doc/html/search/all_18.js | 4 + pip/doc/html/search/all_2.html | 26 + pip/doc/html/search/all_2.js | 27 + pip/doc/html/search/all_3.html | 26 + pip/doc/html/search/all_3.js | 62 + pip/doc/html/search/all_4.html | 26 + pip/doc/html/search/all_4.js | 27 + pip/doc/html/search/all_5.html | 26 + pip/doc/html/search/all_5.js | 49 + pip/doc/html/search/all_6.html | 26 + pip/doc/html/search/all_6.js | 38 + pip/doc/html/search/all_7.html | 26 + pip/doc/html/search/all_7.js | 14 + pip/doc/html/search/all_8.html | 26 + pip/doc/html/search/all_8.js | 9 + pip/doc/html/search/all_9.html | 26 + pip/doc/html/search/all_9.js | 52 + pip/doc/html/search/all_a.html | 26 + pip/doc/html/search/all_a.js | 5 + pip/doc/html/search/all_b.html | 26 + pip/doc/html/search/all_b.js | 4 + pip/doc/html/search/all_c.html | 26 + pip/doc/html/search/all_c.js | 17 + pip/doc/html/search/all_d.html | 26 + pip/doc/html/search/all_d.js | 13 + pip/doc/html/search/all_e.html | 26 + pip/doc/html/search/all_e.js | 13 + pip/doc/html/search/all_f.html | 26 + pip/doc/html/search/all_f.js | 44 + pip/doc/html/search/classes_0.html | 26 + pip/doc/html/search/classes_0.js | 4 + pip/doc/html/search/classes_1.html | 26 + pip/doc/html/search/classes_1.js | 4 + pip/doc/html/search/classes_2.html | 26 + pip/doc/html/search/classes_2.js | 5 + pip/doc/html/search/classes_3.html | 26 + pip/doc/html/search/classes_3.js | 105 + pip/doc/html/search/classes_4.html | 26 + pip/doc/html/search/classes_4.js | 5 + pip/doc/html/search/classes_5.html | 26 + pip/doc/html/search/classes_5.js | 4 + pip/doc/html/search/classes_6.html | 26 + pip/doc/html/search/classes_6.js | 4 + pip/doc/html/search/close.png | Bin 0 -> 273 bytes pip/doc/html/search/defines_0.html | 26 + pip/doc/html/search/defines_0.js | 4 + pip/doc/html/search/defines_1.html | 26 + pip/doc/html/search/defines_1.js | 6 + pip/doc/html/search/defines_2.html | 26 + pip/doc/html/search/defines_2.js | 6 + pip/doc/html/search/defines_3.html | 26 + pip/doc/html/search/defines_3.js | 4 + pip/doc/html/search/defines_4.html | 26 + pip/doc/html/search/defines_4.js | 4 + pip/doc/html/search/defines_5.html | 26 + pip/doc/html/search/defines_5.js | 4 + pip/doc/html/search/defines_6.html | 26 + pip/doc/html/search/defines_6.js | 20 + pip/doc/html/search/defines_7.html | 26 + pip/doc/html/search/defines_7.js | 4 + pip/doc/html/search/defines_8.html | 26 + pip/doc/html/search/defines_8.js | 5 + pip/doc/html/search/enums_0.html | 26 + pip/doc/html/search/enums_0.js | 4 + pip/doc/html/search/enums_1.html | 26 + pip/doc/html/search/enums_1.js | 4 + pip/doc/html/search/enums_2.html | 26 + pip/doc/html/search/enums_2.js | 4 + pip/doc/html/search/enums_3.html | 26 + pip/doc/html/search/enums_3.js | 9 + pip/doc/html/search/enums_4.html | 26 + pip/doc/html/search/enums_4.js | 4 + pip/doc/html/search/enums_5.html | 26 + pip/doc/html/search/enums_5.js | 5 + pip/doc/html/search/enums_6.html | 26 + pip/doc/html/search/enums_6.js | 5 + pip/doc/html/search/enumvalues_0.html | 26 + pip/doc/html/search/enumvalues_0.js | 9 + pip/doc/html/search/enumvalues_1.html | 26 + pip/doc/html/search/enumvalues_1.js | 22 + pip/doc/html/search/enumvalues_10.html | 26 + pip/doc/html/search/enumvalues_10.js | 13 + pip/doc/html/search/enumvalues_11.html | 26 + pip/doc/html/search/enumvalues_11.js | 10 + pip/doc/html/search/enumvalues_12.html | 26 + pip/doc/html/search/enumvalues_12.js | 12 + pip/doc/html/search/enumvalues_13.html | 26 + pip/doc/html/search/enumvalues_13.js | 4 + pip/doc/html/search/enumvalues_14.html | 26 + pip/doc/html/search/enumvalues_14.js | 4 + pip/doc/html/search/enumvalues_2.html | 26 + pip/doc/html/search/enumvalues_2.js | 13 + pip/doc/html/search/enumvalues_3.html | 26 + pip/doc/html/search/enumvalues_3.js | 9 + pip/doc/html/search/enumvalues_4.html | 26 + pip/doc/html/search/enumvalues_4.js | 4 + pip/doc/html/search/enumvalues_5.html | 26 + pip/doc/html/search/enumvalues_5.js | 7 + pip/doc/html/search/enumvalues_6.html | 26 + pip/doc/html/search/enumvalues_6.js | 5 + pip/doc/html/search/enumvalues_7.html | 26 + pip/doc/html/search/enumvalues_7.js | 7 + pip/doc/html/search/enumvalues_8.html | 26 + pip/doc/html/search/enumvalues_8.js | 12 + pip/doc/html/search/enumvalues_9.html | 26 + pip/doc/html/search/enumvalues_9.js | 8 + pip/doc/html/search/enumvalues_a.html | 26 + pip/doc/html/search/enumvalues_a.js | 4 + pip/doc/html/search/enumvalues_b.html | 26 + pip/doc/html/search/enumvalues_b.js | 8 + pip/doc/html/search/enumvalues_c.html | 26 + pip/doc/html/search/enumvalues_c.js | 4 + pip/doc/html/search/enumvalues_d.html | 26 + pip/doc/html/search/enumvalues_d.js | 9 + pip/doc/html/search/enumvalues_e.html | 26 + pip/doc/html/search/enumvalues_e.js | 4 + pip/doc/html/search/enumvalues_f.html | 26 + pip/doc/html/search/enumvalues_f.js | 8 + pip/doc/html/search/files_0.html | 26 + pip/doc/html/search/files_0.js | 44 + pip/doc/html/search/functions_0.html | 26 + pip/doc/html/search/functions_0.js | 4 + pip/doc/html/search/functions_1.html | 26 + pip/doc/html/search/functions_1.js | 29 + pip/doc/html/search/functions_10.html | 26 + pip/doc/html/search/functions_10.js | 62 + pip/doc/html/search/functions_11.html | 26 + pip/doc/html/search/functions_11.js | 7 + pip/doc/html/search/functions_12.html | 26 + pip/doc/html/search/functions_12.js | 59 + pip/doc/html/search/functions_13.html | 26 + pip/doc/html/search/functions_13.js | 89 + pip/doc/html/search/functions_14.html | 26 + pip/doc/html/search/functions_14.js | 62 + pip/doc/html/search/functions_15.html | 26 + pip/doc/html/search/functions_15.js | 5 + pip/doc/html/search/functions_16.html | 26 + pip/doc/html/search/functions_16.js | 8 + pip/doc/html/search/functions_17.html | 26 + pip/doc/html/search/functions_17.js | 10 + pip/doc/html/search/functions_2.html | 26 + pip/doc/html/search/functions_2.js | 7 + pip/doc/html/search/functions_3.html | 26 + pip/doc/html/search/functions_3.js | 41 + pip/doc/html/search/functions_4.html | 26 + pip/doc/html/search/functions_4.js | 14 + pip/doc/html/search/functions_5.html | 26 + pip/doc/html/search/functions_5.js | 29 + pip/doc/html/search/functions_6.html | 26 + pip/doc/html/search/functions_6.js | 29 + pip/doc/html/search/functions_7.html | 26 + pip/doc/html/search/functions_7.js | 11 + pip/doc/html/search/functions_8.html | 26 + pip/doc/html/search/functions_8.js | 4 + pip/doc/html/search/functions_9.html | 26 + pip/doc/html/search/functions_9.js | 37 + pip/doc/html/search/functions_a.html | 26 + pip/doc/html/search/functions_a.js | 5 + pip/doc/html/search/functions_b.html | 26 + pip/doc/html/search/functions_b.js | 4 + pip/doc/html/search/functions_c.html | 26 + pip/doc/html/search/functions_c.js | 12 + pip/doc/html/search/functions_d.html | 26 + pip/doc/html/search/functions_d.js | 10 + pip/doc/html/search/functions_e.html | 26 + pip/doc/html/search/functions_e.js | 7 + pip/doc/html/search/functions_f.html | 26 + pip/doc/html/search/functions_f.js | 43 + pip/doc/html/search/mag_sel.png | Bin 0 -> 563 bytes pip/doc/html/search/namespaces_0.html | 26 + pip/doc/html/search/namespaces_0.js | 4 + pip/doc/html/search/nomatches.html | 12 + pip/doc/html/search/pages_0.html | 26 + pip/doc/html/search/pages_0.js | 4 + pip/doc/html/search/pages_1.html | 26 + pip/doc/html/search/pages_1.js | 4 + pip/doc/html/search/pages_2.html | 26 + pip/doc/html/search/pages_2.js | 4 + pip/doc/html/search/pages_3.html | 26 + pip/doc/html/search/pages_3.js | 4 + pip/doc/html/search/related_0.html | 26 + pip/doc/html/search/related_0.js | 5 + pip/doc/html/search/related_1.html | 26 + pip/doc/html/search/related_1.js | 10 + pip/doc/html/search/related_2.html | 26 + pip/doc/html/search/related_2.js | 9 + pip/doc/html/search/related_3.html | 26 + pip/doc/html/search/related_3.js | 21 + pip/doc/html/search/related_4.html | 26 + pip/doc/html/search/related_4.js | 4 + pip/doc/html/search/related_5.html | 26 + pip/doc/html/search/related_5.js | 5 + pip/doc/html/search/related_6.html | 26 + pip/doc/html/search/related_6.js | 7 + pip/doc/html/search/related_7.html | 26 + pip/doc/html/search/related_7.js | 4 + pip/doc/html/search/related_8.html | 26 + pip/doc/html/search/related_8.js | 9 + pip/doc/html/search/search.css | 271 + pip/doc/html/search/search.js | 815 + pip/doc/html/search/search_l.png | Bin 0 -> 604 bytes pip/doc/html/search/search_m.png | Bin 0 -> 158 bytes pip/doc/html/search/search_r.png | Bin 0 -> 612 bytes pip/doc/html/search/typedefs_0.html | 26 + pip/doc/html/search/typedefs_0.js | 4 + pip/doc/html/search/typedefs_1.html | 26 + pip/doc/html/search/typedefs_1.js | 4 + pip/doc/html/search/variables_0.html | 26 + pip/doc/html/search/variables_0.js | 5 + pip/doc/html/search/variables_1.html | 26 + pip/doc/html/search/variables_1.js | 4 + pip/doc/html/search/variables_2.html | 26 + pip/doc/html/search/variables_2.js | 4 + pip/doc/html/search/variables_3.html | 26 + pip/doc/html/search/variables_3.js | 5 + pip/doc/html/search/variables_4.html | 26 + pip/doc/html/search/variables_4.js | 4 + pip/doc/html/search/variables_5.html | 26 + pip/doc/html/search/variables_5.js | 5 + pip/doc/html/search/variables_6.html | 26 + pip/doc/html/search/variables_6.js | 4 + pip/doc/html/search/variables_7.html | 26 + pip/doc/html/search/variables_7.js | 6 + pip/doc/html/search/variables_8.html | 26 + pip/doc/html/search/variables_8.js | 6 + pip/doc/html/search/variables_9.html | 26 + pip/doc/html/search/variables_9.js | 5 + pip/doc/html/search/variables_a.html | 26 + pip/doc/html/search/variables_a.js | 4 + pip/doc/html/search/variables_b.html | 26 + pip/doc/html/search/variables_b.js | 4 + pip/doc/html/search/variables_c.html | 26 + pip/doc/html/search/variables_c.js | 4 + ...t_p_i_byte_array_1_1_raw_data-members.html | 131 + .../struct_p_i_byte_array_1_1_raw_data.html | 157 + .../struct_p_i_byte_array_1_1_raw_data.js | 7 + ...ct_p_i_ethernet_1_1_interface-members.html | 141 + .../struct_p_i_ethernet_1_1_interface.html | 197 + .../html/struct_p_i_ethernet_1_1_interface.js | 17 + ...ct_p_i_state_machine_1_1_rule-members.html | 136 + .../struct_p_i_state_machine_1_1_rule.html | 180 + .../html/struct_p_i_state_machine_1_1_rule.js | 12 + ...t_p_i_state_machine_1_1_state-members.html | 132 + .../struct_p_i_state_machine_1_1_state.html | 164 + .../struct_p_i_state_machine_1_1_state.js | 8 + .../struct_transfer_function-members.html | 127 + pip/doc/html/struct_transfer_function.html | 132 + pip/doc/html/svgpan.js | 319 + pip/doc/html/sync_off.png | Bin 0 -> 863 bytes pip/doc/html/sync_on.png | Bin 0 -> 857 bytes pip/doc/html/tab_a.png | Bin 0 -> 142 bytes pip/doc/html/tab_b.png | Bin 0 -> 165 bytes pip/doc/html/tab_h.png | Bin 0 -> 174 bytes pip/doc/html/tab_s.png | Bin 0 -> 183 bytes pip/doc/html/tabs.css | 60 + pip/doc/html/using_advanced.html | 117 + pip/doc/html/using_basic.html | 208 + pip/doc/images/events_handlers.png | Bin 0 -> 28786 bytes pip/doc/images/packet_detection.png | Bin 0 -> 28193 bytes pip/doc/images/piconfig.png | Bin 0 -> 37880 bytes pip/doc/images/piconnection.png | Bin 0 -> 98609 bytes pip/doc/images/piconnection_conf.png | Bin 0 -> 88687 bytes pip/doc/images/piconnection_filters.png | Bin 0 -> 26030 bytes pip/doc/images/piconnection_senders.png | Bin 0 -> 33612 bytes pip/doc/images/piconsole_layout.png | Bin 0 -> 23307 bytes pip/doc/packet_detection.odp | Bin 0 -> 10411 bytes pip/doc/piconnection.odg | Bin 0 -> 43841 bytes pip/doc/piconnection_conf.odg | Bin 0 -> 42497 bytes pip/doc/piconnection_filters.odg | Bin 0 -> 23614 bytes pip/doc/piconnection_senders.odg | Bin 0 -> 26781 bytes pip/doc/piconsole_layout.odp | Bin 0 -> 14349 bytes pip/libpip.dll | Bin 0 -> 2142062 bytes pip/main.cpp | 131 + pip/main_.cpp | 294 + pip/main_tcp_server.cpp | 93 + pip/make_lib.bat | 1 + pip/make_lib_usb.bat | 1 + pip/pifilemanager.cpp | 11 + pip/pifilemanager.h | 11 + pip/pip.cbp | 582 + pip/pip.kdev4 | 3 + pip/pip/.gitignore | 2 + pip/pip/AUTHORS.txt | 2 + pip/pip/CMakeLists.txt | 187 + pip/pip/Doxyfile | 2377 + pip/pip/FindPIP.cmake | 66 + pip/pip/LICENSE.txt | 674 + pip/pip/clean | 19 + pip/pip/clean.bat | 22 + pip/pip/main.cpp | 131 + pip/pip/main_.cpp | 294 + pip/pip/main_tcp_server.cpp | 93 + pip/pip/make_lib.bat | 1 + pip/pip/make_lib_usb.bat | 1 + pip/pip/pip.cbp | 582 + pip/pip/pip.kdev4 | 3 + pip/pip/pip_resource_win.rc | 36 + pip/pip/src/pip.h | 39 + pip/pip/src/pip_export.h | 35 + pip/pip/src/pip_version_str.h | 1 + pip/pip/src/piplatform.h | 101 + pip/pip/src/piversion.h | 10 + pip/pip_resource_win.rc | 36 + pip/pip_test.exe | Bin 0 -> 169512 bytes pip/src/_unsused/pigeometry.h | 137 + pip/src/_unsused/pivariable.cpp | 249 + pip/src/_unsused/pivariable.cpp_ | 249 + pip/src/_unsused/pivariable.h | 196 + pip/src/_unsused/pivariable.h_ | 196 + pip/src/code/picodeinfo.cpp | 42 + pip/src/code/picodeinfo.h | 158 + pip/src/code/picodeparser.cpp | 846 + pip/src/code/picodeparser.h | 162 + pip/src/containers/picontainers.cpp | 175 + pip/src/containers/picontainers.h | 286 + pip/src/containers/pideque.h | 480 + pip/src/containers/pimap.h | 453 + pip/src/containers/piqueue.h | 41 + pip/src/containers/piset.h | 72 + pip/src/containers/pistack.h | 41 + pip/src/containers/pivector.h | 530 + pip/src/core/pibitarray.h | 104 + pip/src/core/pibytearray.cpp | 293 + pip/src/core/pibytearray.h | 261 + pip/src/core/pichar.h | 221 + pip/src/core/picli.cpp | 101 + pip/src/core/picli.h | 101 + pip/src/core/picollection.cpp | 57 + pip/src/core/picollection.h | 96 + pip/src/core/picout.cpp | 348 + pip/src/core/picout.h | 266 + pip/src/core/piflags.h | 137 + pip/src/core/piincludes.cpp | 235 + pip/src/core/piincludes.h | 538 + pip/src/core/piinit.cpp | 212 + pip/src/core/piinit.h | 56 + pip/src/core/piobject.cpp | 417 + pip/src/core/piobject.h | 733 + pip/src/core/pistatemachine.h | 334 + pip/src/core/pistring.cpp | 775 + pip/src/core/pistring.h | 916 + pip/src/core/pitime.cpp | 404 + pip/src/core/pitime.h | 328 + pip/src/core/pivariant.cpp | 534 + pip/src/core/pivariant.h | 461 + pip/src/io/pibinarylog.cpp | 524 + pip/src/io/pibinarylog.h | 333 + pip/src/io/piconfig.cpp | 710 + pip/src/io/piconfig.h | 525 + pip/src/io/piconnection.cpp | 1195 + pip/src/io/piconnection.h | 417 + pip/src/io/pidatatransfer.cpp | 374 + pip/src/io/pidatatransfer.h | 116 + pip/src/io/pidiagnostics.cpp | 166 + pip/src/io/pidiagnostics.h | 190 + pip/src/io/pidir.cpp | 380 + pip/src/io/pidir.h | 130 + pip/src/io/piethernet.cpp | 989 + pip/src/io/piethernet.h | 424 + pip/src/io/pifile.cpp | 317 + pip/src/io/pifile.h | 309 + pip/src/io/pifiletransfer.cpp | 470 + pip/src/io/pifiletransfer.h | 138 + pip/src/io/piiodevice.cpp | 315 + pip/src/io/piiodevice.h | 333 + pip/src/io/piiostring.cpp | 106 + pip/src/io/piiostring.h | 86 + pip/src/io/pimultiprotocol.cpp | 21 + pip/src/io/pimultiprotocol.h | 93 + pip/src/io/pipacketextractor.cpp | 301 + pip/src/io/pipacketextractor.h | 187 + pip/src/io/pipeer.cpp | 632 + pip/src/io/pipeer.h | 185 + pip/src/io/piprotocol.cpp | 792 + pip/src/io/piprotocol.h | 249 + pip/src/io/piserial.cpp | 664 + pip/src/io/piserial.h | 310 + pip/src/io/piusb.cpp | 410 + pip/src/io/piusb.h | 153 + pip/src/math/picrc.h | 244 + pip/src/math/pievaluator.cpp | 1254 + pip/src/math/pievaluator.h | 227 + pip/src/math/pifft.cpp | 936 + pip/src/math/pifft.h | 77 + pip/src/math/pimath.h | 30 + pip/src/math/pimathbase.cpp | 468 + pip/src/math/pimathbase.h | 189 + pip/src/math/pimathmatrix.h | 504 + pip/src/math/pimathsolver.cpp | 248 + pip/src/math/pimathsolver.h | 94 + pip/src/math/pimathvector.h | 229 + pip/src/math/pistatistic.h | 89 + pip/src/pip.h | 39 + pip/src/pip_export.h | 35 + pip/src/pip_version_str.h | 1 + pip/src/piplatform.h | 101 + pip/src/piversion.h | 10 + pip/src/system/.piscreen.cpp.kate-swp | Bin 0 -> 74 bytes pip/src/system/picodec.cpp | 41 + pip/src/system/picodec.h | 51 + pip/src/system/piconsole.cpp | 1064 + pip/src/system/piconsole.h | 508 + pip/src/system/pikbdlistener.cpp | 176 + pip/src/system/pikbdlistener.h | 139 + pip/src/system/pimonitor.cpp | 26 + pip/src/system/pimonitor.h | 39 + pip/src/system/piprocess.cpp | 199 + pip/src/system/piprocess.h | 130 + pip/src/system/piscreen.cpp | 208 + pip/src/system/piscreen.h | 194 + pip/src/system/pisignals.cpp | 111 + pip/src/system/pisignals.h | 78 + pip/src/system/pisysteminfo.cpp | 189 + pip/src/system/pisysteminfo.h | 61 + pip/src/system/pisystemmonitor.cpp | 203 + pip/src/system/pisystemmonitor.h | 82 + pip/src/system/pisystemtests.cpp | 41 + pip/src/system/pisystemtests.h | 39 + pip/src/thread/pimutex.cpp | 59 + pip/src/thread/pimutex.h | 93 + pip/src/thread/pithread.cpp | 339 + pip/src/thread/pithread.h | 208 + pip/src/thread/pitimer.cpp | 428 + pip/src/thread/pitimer.h | 309 + pip/test.txt | 1 + pip/utils/code_model_generator/CMakeLists.txt | 5 + pip/utils/code_model_generator/main.cpp | 263 + pip/utils/code_model_generator/main_test.cpp | 48 + pip/utils/code_model_generator/pip_cmg.exe | Bin 0 -> 2244092 bytes pip/utils/code_model_generator/test.cpp | 7084 +++ pip/utils/code_model_generator/test.h | 100 + pip/utils/remote_console/CMakeLists.txt | 5 + pip/utils/remote_console/main.cpp | 64 + .../remote_console/pip_remote_console.exe | Bin 0 -> 1363466 bytes .../CMakeDirectoryInformation.cmake | 16 + .../CMakeFiles/pisd.dir/CXX.includecache | 402 + .../CMakeFiles/pisd.dir/DependInfo.cmake | 33 + .../CMakeFiles/pisd.dir/build.make | 161 + .../CMakeFiles/pisd.dir/cmake_clean.cmake | 14 + .../CMakeFiles/pisd.dir/daemon.cpp.obj | Bin 0 -> 1948306 bytes .../CMakeFiles/pisd.dir/depend.internal | 147 + .../CMakeFiles/pisd.dir/depend.make | 147 + .../CMakeFiles/pisd.dir/file_manager.cpp.obj | Bin 0 -> 2073507 bytes .../CMakeFiles/pisd.dir/flags.make | 8 + .../CMakeFiles/pisd.dir/includes_CXX.rsp | 1 + .../CMakeFiles/pisd.dir/link.txt | 3 + .../CMakeFiles/pisd.dir/main.cpp.obj | Bin 0 -> 1989899 bytes .../CMakeFiles/pisd.dir/objects1.rsp | 1 + .../CMakeFiles/pisd.dir/progress.make | 4 + .../system_daemon/CMakeFiles/progress.marks | 1 + pip/utils/system_daemon/CMakeLists.txt | 7 + pip/utils/system_daemon/Makefile | 265 + pip/utils/system_daemon/cmake_install.cmake | 47 + pip/utils/system_daemon/daemon.cpp | 252 + pip/utils/system_daemon/daemon.h | 93 + pip/utils/system_daemon/file_manager.cpp | 182 + pip/utils/system_daemon/file_manager.h | 33 + pip/utils/system_daemon/main.cpp | 244 + pip/utils/system_daemon/pisd.exe | Bin 0 -> 4896546 bytes pip/utils/system_daemon/shared.h | 22 + pip/utils/system_test/CMakeLists.txt | 5 + pip/utils/system_test/main.cpp | 106 + pip/utils/system_test/pip_system_test.exe | Bin 0 -> 1202681 bytes pip_0.4.0_r5.7z | Bin 0 -> 303195 bytes piqt/.kdev4/piqt.kdev4 | 15 + piqt/CMakeLists.txt | 13 + piqt/clean | 4 + piqt/clean.bat | 4 + piqt/make_lib.bat | 1 + piqt/piqt.cpp | 4 + piqt/piqt.h | 72 + piqt/piqt.kdev4 | 3 + piqt_tools/.kdev4/piqt_tools.kdev4 | 147 + piqt_tools/CMakeLists.txt | 60 + piqt_tools/LEDOS_devices.dat | 0 piqt_tools/ccm.cpp | 442 + piqt_tools/ccm.h | 19 + piqt_tools/clean | 19 + piqt_tools/clean.bat | 4 + piqt_tools/gpio.conf | 0 .../Apps-accessories-calculator-icon.png | Bin 0 -> 9661 bytes piqt_tools/icons/DALI-designer.png | Bin 0 -> 7837 bytes piqt_tools/icons/alpha.png | Bin 0 -> 158 bytes piqt_tools/icons/application-exit.png | Bin 0 -> 1134 bytes piqt_tools/icons/applications-engineering.png | Bin 0 -> 1035 bytes piqt_tools/icons/archive-extract.png | Bin 0 -> 626 bytes piqt_tools/icons/archive-insert-directory.png | Bin 0 -> 588 bytes piqt_tools/icons/archive-insert.png | Bin 0 -> 433 bytes piqt_tools/icons/arrow-down.png | Bin 0 -> 525 bytes piqt_tools/icons/arrow-up.png | Bin 0 -> 484 bytes piqt_tools/icons/axis_x.png | Bin 0 -> 235 bytes piqt_tools/icons/axis_y.png | Bin 0 -> 259 bytes piqt_tools/icons/case-sensitive.png | Bin 0 -> 326 bytes piqt_tools/icons/checkbox-unchecked.png | Bin 0 -> 419 bytes piqt_tools/icons/checkbox.png | Bin 0 -> 654 bytes piqt_tools/icons/clients.png | Bin 0 -> 1257 bytes piqt_tools/icons/close.png | Bin 0 -> 1251 bytes piqt_tools/icons/code-error.png | Bin 0 -> 722 bytes piqt_tools/icons/code-function.png | Bin 0 -> 449 bytes piqt_tools/icons/code-keyword.png | Bin 0 -> 342 bytes piqt_tools/icons/code-parents.png | Bin 0 -> 641 bytes piqt_tools/icons/code-property.png | Bin 0 -> 540 bytes piqt_tools/icons/code-signal.png | Bin 0 -> 726 bytes piqt_tools/icons/code-struct.png | Bin 0 -> 676 bytes piqt_tools/icons/code-union.png | Bin 0 -> 731 bytes piqt_tools/icons/code-variable.png | Bin 0 -> 328 bytes piqt_tools/icons/code-word.png | Bin 0 -> 543 bytes piqt_tools/icons/configure-.png | Bin 0 -> 1379 bytes piqt_tools/icons/configure.png | Bin 0 -> 717 bytes piqt_tools/icons/database.png | Bin 0 -> 1918 bytes piqt_tools/icons/debug-run.png | Bin 0 -> 1100 bytes piqt_tools/icons/designer-qt4.png | Bin 0 -> 1367 bytes piqt_tools/icons/dialog-close.png | Bin 0 -> 813 bytes piqt_tools/icons/dialog-ok-apply.png | Bin 0 -> 1977 bytes piqt_tools/icons/dialog-warning.png | Bin 0 -> 2312 bytes piqt_tools/icons/disabled.png | Bin 0 -> 5685 bytes .../icons/distribute-horizontal-margin.png | Bin 0 -> 539 bytes piqt_tools/icons/document-edit.png | Bin 0 -> 726 bytes piqt_tools/icons/document-new.png | Bin 0 -> 1387 bytes piqt_tools/icons/document-open.png | Bin 0 -> 1798 bytes piqt_tools/icons/document-print.png | Bin 0 -> 880 bytes piqt_tools/icons/document-save-.png | Bin 0 -> 1263 bytes piqt_tools/icons/document-save-all.png | Bin 0 -> 921 bytes piqt_tools/icons/document-save-as.png | Bin 0 -> 2152 bytes piqt_tools/icons/document-save.png | Bin 0 -> 563 bytes piqt_tools/icons/edit-clear-.png | Bin 0 -> 3911 bytes .../icons/edit-clear-locationbar-rtl.png | Bin 0 -> 644 bytes piqt_tools/icons/edit-clear.png | Bin 0 -> 2066 bytes piqt_tools/icons/edit-copy.png | Bin 0 -> 828 bytes piqt_tools/icons/edit-cut.png | Bin 0 -> 892 bytes piqt_tools/icons/edit-delete.png | Bin 0 -> 1259 bytes piqt_tools/icons/edit-find-.png | Bin 0 -> 1631 bytes piqt_tools/icons/edit-find.png | Bin 0 -> 634 bytes piqt_tools/icons/edit-guides.png | Bin 0 -> 544 bytes piqt_tools/icons/edit-paste.png | Bin 0 -> 1406 bytes piqt_tools/icons/edit-redo.png | Bin 0 -> 3383 bytes .../icons/edit-table-insert-row-below.png | Bin 0 -> 852 bytes piqt_tools/icons/edit-undo.png | Bin 0 -> 3440 bytes piqt_tools/icons/employees.png | Bin 0 -> 1304 bytes piqt_tools/icons/expand_s_x.png | Bin 0 -> 571 bytes piqt_tools/icons/expand_s_y.png | Bin 0 -> 577 bytes piqt_tools/icons/expand_x.png | Bin 0 -> 579 bytes piqt_tools/icons/expand_y.png | Bin 0 -> 577 bytes piqt_tools/icons/format-text-subscript.png | Bin 0 -> 824 bytes piqt_tools/icons/games-solve.png | Bin 0 -> 1449 bytes piqt_tools/icons/go-jump.png | Bin 0 -> 1126 bytes piqt_tools/icons/go-next.png | Bin 0 -> 940 bytes piqt_tools/icons/go-previous.png | Bin 0 -> 907 bytes piqt_tools/icons/graphics.png | Bin 0 -> 391 bytes piqt_tools/icons/groups-edit.png | Bin 0 -> 12368 bytes piqt_tools/icons/item-add.png | Bin 0 -> 639 bytes piqt_tools/icons/item.png | Bin 0 -> 448 bytes piqt_tools/icons/lastmoves.png | Bin 0 -> 592 bytes piqt_tools/icons/led_3.png | Bin 0 -> 8532 bytes piqt_tools/icons/led_off.png | Bin 0 -> 540 bytes piqt_tools/icons/led_on.png | Bin 0 -> 533 bytes piqt_tools/icons/light-+.png | Bin 0 -> 16851 bytes piqt_tools/icons/light--.png | Bin 0 -> 16559 bytes piqt_tools/icons/light-254.png | Bin 0 -> 12006 bytes piqt_tools/icons/light-disable-all.png | Bin 0 -> 20566 bytes piqt_tools/icons/light-disable.png | Bin 0 -> 16755 bytes piqt_tools/icons/light-down.png | Bin 0 -> 16334 bytes piqt_tools/icons/light-edit.png | Bin 0 -> 13080 bytes piqt_tools/icons/light-max.png | Bin 0 -> 14426 bytes piqt_tools/icons/light-min.png | Bin 0 -> 17432 bytes piqt_tools/icons/light-off.png | Bin 0 -> 16487 bytes piqt_tools/icons/light-on.png | Bin 0 -> 13042 bytes piqt_tools/icons/light-step-down.png | Bin 0 -> 16814 bytes piqt_tools/icons/light-step-up.png | Bin 0 -> 16158 bytes piqt_tools/icons/light-up.png | Bin 0 -> 15602 bytes piqt_tools/icons/lights.png | Bin 0 -> 34124 bytes piqt_tools/icons/list-add.png | Bin 0 -> 1487 bytes piqt_tools/icons/list-remove.png | Bin 0 -> 1065 bytes piqt_tools/icons/log_parser.png | Bin 0 -> 18635 bytes piqt_tools/icons/mail.png | Bin 0 -> 918 bytes piqt_tools/icons/media-flash.png | Bin 0 -> 1256 bytes piqt_tools/icons/media-playback-pause.png | Bin 0 -> 721 bytes piqt_tools/icons/media-playback-stop.png | Bin 0 -> 736 bytes piqt_tools/icons/media-record.png | Bin 0 -> 1155 bytes piqt_tools/icons/node-add.png | Bin 0 -> 694 bytes piqt_tools/icons/node.png | Bin 0 -> 658 bytes piqt_tools/icons/object-locked.png | Bin 0 -> 604 bytes piqt_tools/icons/piconnection.png | Bin 0 -> 19319 bytes piqt_tools/icons/piconnection.xcf | Bin 0 -> 66746 bytes piqt_tools/icons/quickopen.png | Bin 0 -> 1969 bytes piqt_tools/icons/run-build-install-root.png | Bin 0 -> 1915 bytes piqt_tools/icons/run-build.png | Bin 0 -> 1928 bytes piqt_tools/icons/scenes-edit.png | Bin 0 -> 314 bytes piqt_tools/icons/select-add.png | Bin 0 -> 941 bytes piqt_tools/icons/select-intersect.png | Bin 0 -> 946 bytes piqt_tools/icons/select-invert.png | Bin 0 -> 830 bytes piqt_tools/icons/select-none.png | Bin 0 -> 1113 bytes piqt_tools/icons/select-replace.png | Bin 0 -> 738 bytes piqt_tools/icons/select-subtract.png | Bin 0 -> 981 bytes piqt_tools/icons/splash.png | Bin 0 -> 37270 bytes piqt_tools/icons/status-off.png | Bin 0 -> 47007 bytes piqt_tools/icons/status-on.png | Bin 0 -> 50169 bytes piqt_tools/icons/status-warn.png | Bin 0 -> 12669 bytes piqt_tools/icons/system-help.png | Bin 0 -> 1222 bytes piqt_tools/icons/tool-light-add.png | Bin 0 -> 1381 bytes piqt_tools/icons/tool-selection.png | Bin 0 -> 971 bytes piqt_tools/icons/tools-wizard.png | Bin 0 -> 797 bytes piqt_tools/icons/transform-move.png | Bin 0 -> 1103 bytes piqt_tools/icons/variable-add.png | Bin 0 -> 557 bytes piqt_tools/icons/variable-copy.png | Bin 0 -> 567 bytes piqt_tools/icons/variable-edit.png | Bin 0 -> 567 bytes piqt_tools/icons/variable-remove.png | Bin 0 -> 588 bytes piqt_tools/icons/view-grid.png | Bin 0 -> 691 bytes piqt_tools/icons/view-refresh.png | Bin 0 -> 2182 bytes piqt_tools/icons/warning-a.png | Bin 0 -> 2529 bytes piqt_tools/icons/warning-id.png | Bin 0 -> 2458 bytes piqt_tools/icons/window-close.png | Bin 0 -> 2083 bytes piqt_tools/icons/zoom-fit-best.png | Bin 0 -> 539 bytes piqt_tools/icons/zoom-in.png | Bin 0 -> 1191 bytes piqt_tools/icons/zoom-out.png | Bin 0 -> 1173 bytes piqt_tools/icons/zoom-range.png | Bin 0 -> 1311 bytes piqt_tools/icons/zoom-rect.png | Bin 0 -> 1378 bytes piqt_tools/libpiqt_utils.dll | Bin 0 -> 422121 bytes piqt_tools/main.cpp | 19 + piqt_tools/mainwindow.cpp | 357 + piqt_tools/mainwindow.h | 50 + piqt_tools/mainwindow.ui | 692 + piqt_tools/make_lib.bat | 1 + piqt_tools/piconnectionedit.exe | Bin 0 -> 60642 bytes piqt_tools/piconnedit.qrc | 6 + piqt_tools/piconnedit.qrc.depends | 6 + piqt_tools/piconnedit_main.cpp | 10 + piqt_tools/pidumper.cpp | 140 + piqt_tools/pidumper.exe | Bin 0 -> 229437 bytes piqt_tools/pidumper.h | 37 + piqt_tools/pidumper.ui | 207 + piqt_tools/pidumper_main.cpp | 10 + piqt_tools/piqt_connection_edit.cpp | 426 + piqt_tools/piqt_connection_edit.h | 56 + piqt_tools/piqt_connection_edit.ui | 735 + piqt_tools/piqt_connection_view.cpp | 200 + piqt_tools/piqt_connection_view.h | 107 + piqt_tools/piqt_highlighter.cpp | 61 + piqt_tools/piqt_highlighter.h | 31 + piqt_tools/piqt_tools.kdev4 | 3 + qad_application/.kdev4/qad_application.kdev4 | 126 + qad_application/CMakeLists.txt | 36 + qad_application/LEDOS_devices.dat | 0 qad_application/clean | 4 + qad_application/clean.bat | 4 + qad_application/edockwidget.cpp | 51 + qad_application/edockwidget.h | 37 + qad_application/edockwidgetplugin.cpp | 69 + qad_application/edockwidgetplugin.h | 31 + qad_application/emainwindow.cpp | 325 + qad_application/emainwindow.h | 109 + qad_application/emainwindowplugin.cpp | 69 + qad_application/emainwindowplugin.h | 31 + qad_application/etabwidget.cpp | 104 + qad_application/etabwidget.h | 54 + qad_application/gpio.conf | 0 qad_application/historyview.cpp | 138 + qad_application/historyview.h | 74 + qad_application/historyviewplugin.cpp | 69 + qad_application/historyviewplugin.h | 31 + qad_application/icons/border-line.png | Bin 0 -> 183 bytes qad_application/icons/clear-history.png | Bin 0 -> 3825 bytes qad_application/icons/configure.png | Bin 0 -> 717 bytes qad_application/icons/dialog-close.png | Bin 0 -> 813 bytes qad_application/icons/document-save.png | Bin 0 -> 563 bytes .../icons/edit-clear-locationbar-rtl.png | Bin 0 -> 644 bytes qad_application/icons/edit-clear.png | Bin 0 -> 802 bytes qad_application/icons/edit-copy.png | Bin 0 -> 485 bytes qad_application/icons/edit-delete.png | Bin 0 -> 640 bytes qad_application/icons/edit-find.png | Bin 0 -> 634 bytes qad_application/icons/edit-guides.png | Bin 0 -> 544 bytes qad_application/icons/edit-paste.png | Bin 0 -> 529 bytes qad_application/icons/edockwidget.png | Bin 0 -> 638 bytes qad_application/icons/expand_s_x.png | Bin 0 -> 571 bytes qad_application/icons/expand_s_y.png | Bin 0 -> 577 bytes qad_application/icons/expand_x.png | Bin 0 -> 579 bytes qad_application/icons/expand_y.png | Bin 0 -> 577 bytes qad_application/icons/graphic.png | Bin 0 -> 1630 bytes qad_application/icons/historyview.png | Bin 0 -> 1262 bytes qad_application/icons/item.png | Bin 0 -> 448 bytes qad_application/icons/layer-visible-off.png | Bin 0 -> 3446 bytes qad_application/icons/layer-visible-on.png | Bin 0 -> 4016 bytes qad_application/icons/legend.png | Bin 0 -> 810 bytes qad_application/icons/list-add.png | Bin 0 -> 564 bytes qad_application/icons/node-add.png | Bin 0 -> 694 bytes qad_application/icons/node.png | Bin 0 -> 658 bytes qad_application/icons/view-grid.png | Bin 0 -> 691 bytes qad_application/icons/zoom-fit-best.png | Bin 0 -> 539 bytes qad_application/lang/qad_application_ru.ts | 290 + qad_application/make_lib.bat | 1 + qad_application/qad_application.cpp | 19 + qad_application/qad_application.h | 21 + qad_application/qad_application.kdev4 | 3 + qad_application/qad_application.pro | 18 + qad_application/qad_application.qrc | 33 + qad_application/qad_application.qrc.depends | 33 + qad_application/qsingleapplication.cpp | 87 + qad_application/qsingleapplication.h | 30 + qad_application/ribbon.cpp | 195 + qad_application/ribbon.h | 61 + qad_blockview/.kdev4/_custom.kdev4 | 26 + qad_blockview/.kdev4/qad_blockview.kdev4 | 141 + qad_blockview/CMakeLists.txt | 36 + qad_blockview/LEDOS_devices.dat | 0 qad_blockview/alignedtextitem.cpp | 44 + qad_blockview/alignedtextitem.h | 45 + qad_blockview/blockbase.cpp | 289 + qad_blockview/blockbase.h | 177 + qad_blockview/blockbusitem.cpp | 616 + qad_blockview/blockbusitem.h | 114 + qad_blockview/blockitem.cpp | 419 + qad_blockview/blockitem.h | 189 + qad_blockview/blockview.cpp | 1353 + qad_blockview/blockview.h | 181 + qad_blockview/blockviewplugin.cpp | 69 + qad_blockview/blockviewplugin.h | 31 + qad_blockview/blockviewwavetrace.cpp | 197 + qad_blockview/blockviewwavetrace.h | 43 + qad_blockview/clean | 4 + qad_blockview/clean.bat | 4 + qad_blockview/drawtools.cpp | 791 + qad_blockview/drawtools.h | 129 + qad_blockview/drawtools.ui | 666 + qad_blockview/gpio.conf | 0 qad_blockview/icons/align-bottom-center.png | Bin 0 -> 342 bytes qad_blockview/icons/align-bottom-left.png | Bin 0 -> 384 bytes qad_blockview/icons/align-bottom-right.png | Bin 0 -> 382 bytes qad_blockview/icons/align-center-center.png | Bin 0 -> 303 bytes qad_blockview/icons/align-center-left.png | Bin 0 -> 354 bytes qad_blockview/icons/align-center-right.png | Bin 0 -> 348 bytes qad_blockview/icons/align-hor.png | Bin 0 -> 992 bytes qad_blockview/icons/align-top-center.png | Bin 0 -> 344 bytes qad_blockview/icons/align-top-left.png | Bin 0 -> 403 bytes qad_blockview/icons/align-top-right.png | Bin 0 -> 387 bytes qad_blockview/icons/align-ver.png | Bin 0 -> 1038 bytes qad_blockview/icons/alignment.xcf | Bin 0 -> 2844 bytes qad_blockview/icons/blockview.png | Bin 0 -> 943 bytes qad_blockview/icons/border-line.png | Bin 0 -> 183 bytes qad_blockview/icons/bus_twin.png | Bin 0 -> 331 bytes qad_blockview/icons/configure.png | Bin 0 -> 717 bytes qad_blockview/icons/dialog-close.png | Bin 0 -> 813 bytes qad_blockview/icons/document-edit-.png | Bin 0 -> 2955 bytes qad_blockview/icons/document-open.png | Bin 0 -> 2798 bytes qad_blockview/icons/document-save.png | Bin 0 -> 563 bytes qad_blockview/icons/draw-ellipse.png | Bin 0 -> 1794 bytes qad_blockview/icons/draw-line.png | Bin 0 -> 621 bytes qad_blockview/icons/draw-rectangle.png | Bin 0 -> 699 bytes qad_blockview/icons/draw-text.png | Bin 0 -> 815 bytes .../icons/edit-clear-locationbar-rtl.png | Bin 0 -> 644 bytes qad_blockview/icons/edit-clear.png | Bin 0 -> 802 bytes qad_blockview/icons/edit-copy.png | Bin 0 -> 485 bytes qad_blockview/icons/edit-delete.png | Bin 0 -> 640 bytes qad_blockview/icons/edit-find.png | Bin 0 -> 634 bytes qad_blockview/icons/edit-guides.png | Bin 0 -> 544 bytes qad_blockview/icons/edit-paste.png | Bin 0 -> 529 bytes qad_blockview/icons/expand_s_x.png | Bin 0 -> 571 bytes qad_blockview/icons/expand_s_y.png | Bin 0 -> 577 bytes qad_blockview/icons/expand_x.png | Bin 0 -> 579 bytes qad_blockview/icons/expand_y.png | Bin 0 -> 577 bytes qad_blockview/icons/format-fill-color.png | Bin 0 -> 2434 bytes qad_blockview/icons/format-stroke-color.png | Bin 0 -> 1627 bytes qad_blockview/icons/graphic.png | Bin 0 -> 1630 bytes qad_blockview/icons/item.png | Bin 0 -> 448 bytes qad_blockview/icons/legend.png | Bin 0 -> 810 bytes qad_blockview/icons/list-add.png | Bin 0 -> 564 bytes qad_blockview/icons/node-add.png | Bin 0 -> 694 bytes qad_blockview/icons/node.png | Bin 0 -> 658 bytes qad_blockview/icons/view-fullscreen.png | Bin 0 -> 329 bytes qad_blockview/icons/view-grid.png | Bin 0 -> 691 bytes qad_blockview/icons/view-preview.png | Bin 0 -> 2643 bytes qad_blockview/icons/z-bottom.png | Bin 0 -> 987 bytes qad_blockview/icons/z-down.png | Bin 0 -> 1026 bytes qad_blockview/icons/z-top.png | Bin 0 -> 1182 bytes qad_blockview/icons/z-up.png | Bin 0 -> 1025 bytes qad_blockview/icons/zoom-fit-best.png | Bin 0 -> 539 bytes qad_blockview/lang/qad_blockview_ru.qm | Bin 0 -> 3377 bytes qad_blockview/lang/qad_blockview_ru.ts | 290 + qad_blockview/make_lib.bat | 1 + qad_blockview/qad_blockview.cpp | 14 + qad_blockview/qad_blockview.h | 21 + qad_blockview/qad_blockview.kdev4 | 3 + qad_blockview/qad_blockview.pro | 18 + qad_blockview/qad_blockview.qrc | 53 + qad_blockview/qad_blockview.qrc.depends | 53 + qad_graphic/.kdev4/qad_graphic.kdev4 | 20 + qad_graphic/CMakeLists.txt | 41 + qad_graphic/LEDOS_devices.dat | 0 qad_graphic/clean | 4 + qad_graphic/clean.bat | 4 + qad_graphic/gpio.conf | 0 qad_graphic/graphic.cpp | 1334 + qad_graphic/graphic.h | 416 + qad_graphic/graphic.ui | 485 + qad_graphic/graphic_conf.cpp | 103 + qad_graphic/graphic_conf.h | 90 + qad_graphic/graphic_conf.ui | 678 + qad_graphic/graphicplugin.cpp | 69 + qad_graphic/graphicplugin.h | 31 + qad_graphic/icons/border-line.png | Bin 0 -> 183 bytes qad_graphic/icons/configure.png | Bin 0 -> 717 bytes qad_graphic/icons/dialog-close.png | Bin 0 -> 813 bytes qad_graphic/icons/document-save.png | Bin 0 -> 563 bytes .../icons/edit-clear-locationbar-rtl.png | Bin 0 -> 644 bytes qad_graphic/icons/edit-clear.png | Bin 0 -> 802 bytes qad_graphic/icons/edit-copy.png | Bin 0 -> 485 bytes qad_graphic/icons/edit-delete.png | Bin 0 -> 640 bytes qad_graphic/icons/edit-find.png | Bin 0 -> 634 bytes qad_graphic/icons/edit-guides.png | Bin 0 -> 544 bytes qad_graphic/icons/edit-paste.png | Bin 0 -> 529 bytes qad_graphic/icons/expand_s_x.png | Bin 0 -> 571 bytes qad_graphic/icons/expand_s_y.png | Bin 0 -> 577 bytes qad_graphic/icons/expand_x.png | Bin 0 -> 579 bytes qad_graphic/icons/expand_y.png | Bin 0 -> 577 bytes qad_graphic/icons/graphic.png | Bin 0 -> 1630 bytes qad_graphic/icons/item.png | Bin 0 -> 448 bytes qad_graphic/icons/legend.png | Bin 0 -> 810 bytes qad_graphic/icons/list-add.png | Bin 0 -> 564 bytes qad_graphic/icons/media-playback-pause.png | Bin 0 -> 484 bytes qad_graphic/icons/node-add.png | Bin 0 -> 694 bytes qad_graphic/icons/node.png | Bin 0 -> 658 bytes qad_graphic/icons/pause-back.png | Bin 0 -> 6397 bytes qad_graphic/icons/pause-front.png | Bin 0 -> 3146 bytes qad_graphic/icons/view-fullscreen.png | Bin 0 -> 329 bytes qad_graphic/icons/view-grid.png | Bin 0 -> 691 bytes qad_graphic/icons/zoom-fit-best.png | Bin 0 -> 539 bytes qad_graphic/lang/qad_graphic_ru.qm | Bin 0 -> 3662 bytes qad_graphic/lang/qad_graphic_ru.ts | 351 + qad_graphic/make_lib.bat | 1 + qad_graphic/qad_graphic.cpp | 14 + qad_graphic/qad_graphic.h | 21 + qad_graphic/qad_graphic.kdev4 | 3 + qad_graphic/qad_graphic.pro | 18 + qad_graphic/qad_graphic.qrc | 32 + qad_graphic/qad_graphic.qrc.depends | 32 + qad_graphic/uglwidget.h | 48 + qad_graphic/uwidget.h | 52 + qad_sql_table/.kdev4/qad_sql_table.kdev4 | 141 + qad_sql_table/CMakeLists.txt | 36 + qad_sql_table/LEDOS_devices.dat | 0 qad_sql_table/clean | 4 + qad_sql_table/clean.bat | 4 + qad_sql_table/etabwidget.h | 14 + qad_sql_table/gpio.conf | 0 qad_sql_table/icons/alpha.png | Bin 0 -> 158 bytes qad_sql_table/icons/archive-extract.png | Bin 0 -> 626 bytes .../icons/archive-insert-directory.png | Bin 0 -> 588 bytes qad_sql_table/icons/archive-insert.png | Bin 0 -> 433 bytes qad_sql_table/icons/arrow-down.png | Bin 0 -> 525 bytes qad_sql_table/icons/arrow-up.png | Bin 0 -> 484 bytes qad_sql_table/icons/axis_x.png | Bin 0 -> 235 bytes qad_sql_table/icons/axis_y.png | Bin 0 -> 259 bytes qad_sql_table/icons/case-sensitive.png | Bin 0 -> 326 bytes qad_sql_table/icons/checkbox-unchecked.png | Bin 0 -> 419 bytes qad_sql_table/icons/checkbox.png | Bin 0 -> 654 bytes qad_sql_table/icons/clients.png | Bin 0 -> 1257 bytes qad_sql_table/icons/code-error.png | Bin 0 -> 722 bytes qad_sql_table/icons/code-parents.png | Bin 0 -> 641 bytes qad_sql_table/icons/code-struct.png | Bin 0 -> 676 bytes qad_sql_table/icons/code-union.png | Bin 0 -> 731 bytes qad_sql_table/icons/code-variable.png | Bin 0 -> 387 bytes qad_sql_table/icons/configure.png | Bin 0 -> 717 bytes qad_sql_table/icons/database.png | Bin 0 -> 1918 bytes qad_sql_table/icons/dd.png | Bin 0 -> 3258 bytes qad_sql_table/icons/dialog-close.png | Bin 0 -> 813 bytes qad_sql_table/icons/dialog-ok-apply.png | Bin 0 -> 840 bytes qad_sql_table/icons/document-edit.png | Bin 0 -> 726 bytes qad_sql_table/icons/document-new.png | Bin 0 -> 579 bytes qad_sql_table/icons/document-open.png | Bin 0 -> 639 bytes qad_sql_table/icons/document-print.png | Bin 0 -> 880 bytes qad_sql_table/icons/document-save.png | Bin 0 -> 563 bytes .../icons/edit-clear-locationbar-rtl.png | Bin 0 -> 644 bytes qad_sql_table/icons/edit-clear.png | Bin 0 -> 802 bytes qad_sql_table/icons/edit-copy.png | Bin 0 -> 485 bytes qad_sql_table/icons/edit-delete.png | Bin 0 -> 640 bytes qad_sql_table/icons/edit-find.png | Bin 0 -> 634 bytes qad_sql_table/icons/edit-guides.png | Bin 0 -> 544 bytes qad_sql_table/icons/edit-paste.png | Bin 0 -> 529 bytes .../icons/edit-table-insert-row-below.png | Bin 0 -> 852 bytes qad_sql_table/icons/employees.png | Bin 0 -> 1304 bytes qad_sql_table/icons/expand_s_x.png | Bin 0 -> 571 bytes qad_sql_table/icons/expand_s_y.png | Bin 0 -> 577 bytes qad_sql_table/icons/expand_x.png | Bin 0 -> 579 bytes qad_sql_table/icons/expand_y.png | Bin 0 -> 577 bytes qad_sql_table/icons/format-text-subscript.png | Bin 0 -> 824 bytes qad_sql_table/icons/games-solve.png | Bin 0 -> 992 bytes qad_sql_table/icons/go-next.png | Bin 0 -> 940 bytes qad_sql_table/icons/go-previous.png | Bin 0 -> 907 bytes qad_sql_table/icons/graphics.png | Bin 0 -> 391 bytes qad_sql_table/icons/item-add.png | Bin 0 -> 639 bytes qad_sql_table/icons/item.png | Bin 0 -> 448 bytes qad_sql_table/icons/lastmoves.png | Bin 0 -> 592 bytes qad_sql_table/icons/led_3.png | Bin 0 -> 8532 bytes qad_sql_table/icons/led_off.png | Bin 0 -> 540 bytes qad_sql_table/icons/led_on.png | Bin 0 -> 533 bytes qad_sql_table/icons/list-add.png | Bin 0 -> 564 bytes qad_sql_table/icons/list-remove.png | Bin 0 -> 332 bytes qad_sql_table/icons/log_parser.png | Bin 0 -> 18635 bytes qad_sql_table/icons/mail.png | Bin 0 -> 918 bytes qad_sql_table/icons/media-playback-pause.png | Bin 0 -> 721 bytes qad_sql_table/icons/media-playback-stop.png | Bin 0 -> 736 bytes qad_sql_table/icons/media-record.png | Bin 0 -> 1155 bytes qad_sql_table/icons/node-add.png | Bin 0 -> 694 bytes qad_sql_table/icons/node.png | Bin 0 -> 658 bytes qad_sql_table/icons/quickopen.png | Bin 0 -> 556 bytes qad_sql_table/icons/run-build.png | Bin 0 -> 880 bytes qad_sql_table/icons/splash.png | Bin 0 -> 37270 bytes qad_sql_table/icons/sql_table.png | Bin 0 -> 1405 bytes qad_sql_table/icons/tools-wizard.png | Bin 0 -> 797 bytes qad_sql_table/icons/transform-move.png | Bin 0 -> 1103 bytes qad_sql_table/icons/variable-add.png | Bin 0 -> 557 bytes qad_sql_table/icons/variable-copy.png | Bin 0 -> 567 bytes qad_sql_table/icons/variable-edit.png | Bin 0 -> 567 bytes qad_sql_table/icons/variable-remove.png | Bin 0 -> 588 bytes qad_sql_table/icons/view-grid.png | Bin 0 -> 691 bytes qad_sql_table/icons/view-refresh.png | Bin 0 -> 1283 bytes qad_sql_table/icons/zoom-fit-best.png | Bin 0 -> 539 bytes qad_sql_table/icons/zoom-in.png | Bin 0 -> 1191 bytes qad_sql_table/icons/zoom-out.png | Bin 0 -> 1173 bytes qad_sql_table/icons/zoom-range.png | Bin 0 -> 1311 bytes qad_sql_table/icons/zoom-rect.png | Bin 0 -> 1378 bytes qad_sql_table/lang/qad_sql_table_ru.qm | Bin 0 -> 763 bytes qad_sql_table/lang/qad_sql_table_ru.ts | 58 + qad_sql_table/libqad_sql_table.dll | Bin 0 -> 416694 bytes qad_sql_table/make_lib.bat | 1 + qad_sql_table/qad_sql_table.cpp | 17 + qad_sql_table/qad_sql_table.h | 21 + qad_sql_table/qad_sql_table.kdev4 | 3 + qad_sql_table/qad_sql_table.pro | 19 + qad_sql_table/qad_sql_table.qrc | 25 + qad_sql_table/qad_sql_table.qrc.depends | 25 + qad_sql_table/qad_sql_table_plugin.dll | Bin 0 -> 43520 bytes qad_sql_table/sql_record_plugin.cpp | 69 + qad_sql_table/sql_record_plugin.h | 31 + qad_sql_table/sql_record_widget.cpp | 329 + qad_sql_table/sql_record_widget.h | 74 + qad_sql_table/sql_table_plugin.cpp | 69 + qad_sql_table/sql_table_plugin.h | 31 + qad_sql_table/sql_table_widget.cpp | 1038 + qad_sql_table/sql_table_widget.h | 323 + qad_sql_table/sql_table_widget.ui | 310 + qad_utils/.kdev4/qad_utils.kdev4 | 141 + qad_utils/CMakeLists.txt | 45 + qad_utils/chunkstream.cpp | 35 + qad_utils/chunkstream.h | 56 + qad_utils/clean | 4 + qad_utils/clean.bat | 4 + qad_utils/icons/alpha.png | Bin 0 -> 158 bytes qad_utils/icons/border-line.png | Bin 0 -> 183 bytes qad_utils/icons/chardialog.png | Bin 0 -> 943 bytes qad_utils/icons/clineedit.png | Bin 0 -> 9153 bytes qad_utils/icons/colorbutton.png | Bin 0 -> 7468 bytes qad_utils/icons/configure.png | Bin 0 -> 717 bytes qad_utils/icons/dialog-close.png | Bin 0 -> 813 bytes qad_utils/icons/document-open.png | Bin 0 -> 2798 bytes qad_utils/icons/document-open_16.png | Bin 0 -> 701 bytes qad_utils/icons/document-save.png | Bin 0 -> 2122 bytes qad_utils/icons/ecombobox.png | Bin 0 -> 1215 bytes .../icons/edit-clear-locationbar-rtl.png | Bin 0 -> 644 bytes qad_utils/icons/edit-clear.png | Bin 0 -> 802 bytes qad_utils/icons/edit-copy.png | Bin 0 -> 485 bytes qad_utils/icons/edit-delete.png | Bin 0 -> 640 bytes qad_utils/icons/edit-find.png | Bin 0 -> 634 bytes qad_utils/icons/edit-guides.png | Bin 0 -> 544 bytes qad_utils/icons/edit-paste.png | Bin 0 -> 529 bytes qad_utils/icons/etabwidget.png | Bin 0 -> 693 bytes qad_utils/icons/expand_s_x.png | Bin 0 -> 571 bytes qad_utils/icons/expand_s_y.png | Bin 0 -> 577 bytes qad_utils/icons/expand_x.png | Bin 0 -> 579 bytes qad_utils/icons/expand_y.png | Bin 0 -> 577 bytes qad_utils/icons/item-add.png | Bin 0 -> 639 bytes qad_utils/icons/item.png | Bin 0 -> 448 bytes qad_utils/icons/legend.png | Bin 0 -> 810 bytes qad_utils/icons/list-add.png | Bin 0 -> 564 bytes qad_utils/icons/node-add.png | Bin 0 -> 694 bytes qad_utils/icons/node.png | Bin 0 -> 658 bytes qad_utils/icons/qcodeedit.png | Bin 0 -> 818 bytes qad_utils/icons/qpiconsole.png | Bin 0 -> 9858 bytes qad_utils/icons/spinslider.png | Bin 0 -> 830 bytes qad_utils/icons/view-grid.png | Bin 0 -> 691 bytes qad_utils/icons/zoom-fit-best.png | Bin 0 -> 539 bytes qad_utils/make_lib.bat | 1 + qad_utils/qad_utils.cpp | 14 + qad_utils/qad_utils.h | 21 + qad_utils/qad_utils.kdev4 | 3 + qad_utils/qad_utils.pro | 18 + qad_utils/qad_utils.qrc | 17 + qad_utils/qad_utils.qrc.depends | 17 + qad_utils/qpiconfig.cpp | 690 + qad_utils/qpiconfig.h | 285 + qad_utils/qpiconfignewdialog.cpp | 77 + qad_utils/qpiconfignewdialog.h | 40 + qad_utils/qpiconfignewdialog.ui | 432 + qad_utils/qpiconfigplugin.cpp | 69 + qad_utils/qpiconfigplugin.h | 31 + qad_utils/qpiconfigvaluewidget.cpp | 98 + qad_utils/qpiconfigvaluewidget.h | 58 + qad_utils/qpiconfigwidget.cpp | 380 + qad_utils/qpiconfigwidget.h | 111 + qad_utils/qpiconfigwidget.pri | 8 + qad_utils/qpievaluator.cpp | 1066 + qad_utils/qpievaluator.h | 195 + qad_utils/session_manager.cpp | 103 + qad_utils/session_manager.h | 92 + qad_utils/svn-commit.tmp | 5 + qad_widgets/.kdev4/qad_widgets.kdev4 | 126 + qad_widgets/CMakeLists.txt | 43 + qad_widgets/LEDOS_devices.dat | 0 qad_widgets/chardialog.cpp | 151 + qad_widgets/chardialog.h | 50 + qad_widgets/chardialog.ui | 92 + qad_widgets/chardialogplugin.cpp | 69 + qad_widgets/chardialogplugin.h | 31 + qad_widgets/clean | 4 + qad_widgets/clean.bat | 4 + qad_widgets/clineedit.cpp | 51 + qad_widgets/clineedit.h | 43 + qad_widgets/clineeditplugin.cpp | 69 + qad_widgets/clineeditplugin.h | 31 + qad_widgets/colorbutton.cpp | 112 + qad_widgets/colorbutton.h | 63 + qad_widgets/colorbuttonplugin.cpp | 69 + qad_widgets/colorbuttonplugin.h | 31 + qad_widgets/ecombobox.cpp | 92 + qad_widgets/ecombobox.h | 34 + qad_widgets/ecomboboxplugin.cpp | 69 + qad_widgets/ecomboboxplugin.h | 31 + qad_widgets/gpio.conf | 0 qad_widgets/iconedlabel.h | 68 + qad_widgets/iconedlabelplugin.h | 31 + qad_widgets/icons/alpha.png | Bin 0 -> 158 bytes qad_widgets/icons/border-line.png | Bin 0 -> 183 bytes qad_widgets/icons/chardialog.png | Bin 0 -> 943 bytes qad_widgets/icons/clineedit.png | Bin 0 -> 9153 bytes qad_widgets/icons/code-word.png | Bin 0 -> 543 bytes qad_widgets/icons/colorbutton.png | Bin 0 -> 7468 bytes qad_widgets/icons/configure.png | Bin 0 -> 717 bytes qad_widgets/icons/dialog-close.png | Bin 0 -> 813 bytes qad_widgets/icons/document-open.png | Bin 0 -> 2798 bytes qad_widgets/icons/document-save.png | Bin 0 -> 2122 bytes qad_widgets/icons/ecombobox.png | Bin 0 -> 1215 bytes .../icons/edit-clear-locationbar-rtl.png | Bin 0 -> 644 bytes qad_widgets/icons/edit-clear.png | Bin 0 -> 3911 bytes qad_widgets/icons/edit-copy.png | Bin 0 -> 485 bytes qad_widgets/icons/edit-delete.png | Bin 0 -> 2101 bytes qad_widgets/icons/edit-find.png | Bin 0 -> 634 bytes qad_widgets/icons/edit-guides.png | Bin 0 -> 544 bytes qad_widgets/icons/edit-paste.png | Bin 0 -> 529 bytes qad_widgets/icons/etabwidget.png | Bin 0 -> 693 bytes qad_widgets/icons/expand_s_x.png | Bin 0 -> 571 bytes qad_widgets/icons/expand_s_y.png | Bin 0 -> 577 bytes qad_widgets/icons/expand_x.png | Bin 0 -> 579 bytes qad_widgets/icons/expand_y.png | Bin 0 -> 577 bytes qad_widgets/icons/item-add.png | Bin 0 -> 639 bytes qad_widgets/icons/item.png | Bin 0 -> 448 bytes qad_widgets/icons/legend.png | Bin 0 -> 810 bytes qad_widgets/icons/list-add.png | Bin 0 -> 2658 bytes qad_widgets/icons/node-add.png | Bin 0 -> 694 bytes qad_widgets/icons/node.png | Bin 0 -> 658 bytes qad_widgets/icons/qcodeedit.png | Bin 0 -> 818 bytes qad_widgets/icons/qpiconsole.png | Bin 0 -> 9858 bytes qad_widgets/icons/qvariantedit.png | Bin 0 -> 1247 bytes qad_widgets/icons/spinslider.png | Bin 0 -> 830 bytes qad_widgets/icons/view-grid.png | Bin 0 -> 691 bytes qad_widgets/icons/zoom-fit-best.png | Bin 0 -> 539 bytes qad_widgets/lang/qad_widgets_ru.qm | Bin 0 -> 3938 bytes qad_widgets/lang/qad_widgets_ru.ts | 853 + qad_widgets/lang/ru.qm | Bin 0 -> 3938 bytes qad_widgets/lang/ru.ts | 853 + qad_widgets/lconedlabelplugin.cpp | 69 + qad_widgets/make_lib.bat | 1 + qad_widgets/object_script.qad_widgets_plugin | 31 + qad_widgets/qad_widgets.cpp | 38 + qad_widgets/qad_widgets.h | 21 + qad_widgets/qad_widgets.kdev4 | 3 + qad_widgets/qad_widgets.pro | 30 + qad_widgets/qad_widgets.qrc | 39 + qad_widgets/qad_widgets.qrc.depends | 39 + qad_widgets/qcodeedit.cpp | 778 + qad_widgets/qcodeedit.h | 113 + qad_widgets/qcodeeditplugin.cpp | 69 + qad_widgets/qcodeeditplugin.h | 31 + qad_widgets/qipedit.cpp | 82 + qad_widgets/qipedit.h | 48 + qad_widgets/qipeditplugin.cpp | 69 + qad_widgets/qipeditplugin.h | 31 + qad_widgets/qpiconsole.cpp | 268 + qad_widgets/qpiconsole.h | 187 + qad_widgets/qpiconsoleplugin.cpp | 69 + qad_widgets/qpiconsoleplugin.h | 31 + qad_widgets/qpointedit.cpp | 33 + qad_widgets/qpointedit.h | 43 + qad_widgets/qpointeditplugin.cpp | 69 + qad_widgets/qpointeditplugin.h | 31 + qad_widgets/qrectedit.cpp | 55 + qad_widgets/qrectedit.h | 43 + qad_widgets/qrecteditplugin.cpp | 69 + qad_widgets/qrecteditplugin.h | 31 + qad_widgets/qvariantedit.cpp | 399 + qad_widgets/qvariantedit.h | 177 + qad_widgets/qvarianteditplugin.cpp | 69 + qad_widgets/qvarianteditplugin.h | 31 + qad_widgets/shortcuts.cpp | 233 + qad_widgets/shortcuts.h | 90 + qad_widgets/shortcutsplugin.cpp | 69 + qad_widgets/shortcutsplugin.h | 31 + qad_widgets/spinslider.cpp | 84 + qad_widgets/spinslider.h | 103 + qad_widgets/spinsliderplugin.cpp | 69 + qad_widgets/spinsliderplugin.h | 31 + qglview/.kdev4/glview.kdev4 | 40 + qglview/.kdev4/qglview.kdev4 | 162 + qglview/CMakeLists.txt | 49 + qglview/GLee.cpp | 18170 +++++++ qglview/GLee.h | 17648 +++++++ qglview/clean | 4 + qglview/clean.bat | 4 + qglview/data/34.3DS | Bin 0 -> 74593 bytes qglview/data/NMBalls.png | Bin 0 -> 74482 bytes qglview/data/NMBumpsOut.png | Bin 0 -> 105115 bytes qglview/data/NMHollyBumps.png | Bin 0 -> 29935 bytes qglview/data/NMStripes.png | Bin 0 -> 131360 bytes qglview/data/celtic_010.jpg | Bin 0 -> 214965 bytes qglview/data/celtic_010n.jpg | Bin 0 -> 452825 bytes qglview/data/e/back.jpg | Bin 0 -> 50676 bytes qglview/data/e/bottom.jpg | Bin 0 -> 51253 bytes qglview/data/e/front.jpg | Bin 0 -> 51181 bytes qglview/data/e/left.jpg | Bin 0 -> 52932 bytes qglview/data/e/right.jpg | Bin 0 -> 49640 bytes qglview/data/e/top.jpg | Bin 0 -> 43260 bytes qglview/data/expl_07.png | Bin 0 -> 51910 bytes qglview/data/hel.3DS | Bin 0 -> 142851 bytes qglview/data/l.3DS | Bin 0 -> 77139 bytes qglview/data/l_.3DS | Bin 0 -> 150113 bytes qglview/data/l_.ASE | 19878 +++++++ qglview/data/media-record.png | Bin 0 -> 1157 bytes qglview/data/proj_plane_d.tga | Bin 0 -> 1032407 bytes qglview/data/proj_plane_h.tga | Bin 0 -> 796199 bytes qglview/data/proj_plane_n.tga | Bin 0 -> 1011918 bytes qglview/data/s.3DS | Bin 0 -> 24791 bytes qglview/data/test.3DS | Bin 0 -> 279365 bytes qglview/data/test.DAE | 42823 ++++++++++++++++ qglview/data/test_.3DS | Bin 0 -> 278916 bytes qglview/data/waveNM.png | Bin 0 -> 125873 bytes qglview/glframebuffer.cpp | 127 + qglview/glframebuffer.h | 57 + qglview/globject.cpp | 203 + qglview/globject.h | 240 + qglview/globject_editor.cpp | 119 + qglview/globject_editor.h | 48 + qglview/globject_editor.ui | 1026 + qglview/glparticles_system.cpp | 198 + qglview/glparticles_system.h | 131 + qglview/glprimitives.cpp | 103 + qglview/glprimitives.h | 42 + qglview/gltexture_manager.cpp | 54 + qglview/gltexture_manager.h | 53 + qglview/gltypes.cpp | 746 + qglview/gltypes.h | 540 + qglview/glvbo.cpp | 141 + qglview/glvbo.h | 61 + qglview/icons/alpha.png | Bin 0 -> 158 bytes qglview/icons/configure.png | Bin 0 -> 717 bytes qglview/icons/dialog-close.png | Bin 0 -> 813 bytes qglview/icons/document-save.png | Bin 0 -> 563 bytes qglview/icons/edit-clear-locationbar-rtl.png | Bin 0 -> 644 bytes qglview/icons/edit-clear.png | Bin 0 -> 802 bytes qglview/icons/edit-copy.png | Bin 0 -> 485 bytes qglview/icons/edit-delete.png | Bin 0 -> 640 bytes qglview/icons/edit-find.png | Bin 0 -> 634 bytes qglview/icons/edit-guides.png | Bin 0 -> 544 bytes qglview/icons/edit-paste.png | Bin 0 -> 529 bytes qglview/icons/item-add.png | Bin 0 -> 639 bytes qglview/icons/item.png | Bin 0 -> 448 bytes qglview/icons/list-add.png | Bin 0 -> 564 bytes qglview/icons/node-add.png | Bin 0 -> 694 bytes qglview/icons/node.png | Bin 0 -> 658 bytes qglview/icons/view-grid.png | Bin 0 -> 691 bytes qglview/icons/zoom-fit-best.png | Bin 0 -> 539 bytes qglview/loader_3ds.cpp | 276 + qglview/loader_3ds.h | 72 + qglview/loader_ase.cpp | 385 + qglview/loader_ase.h | 33 + qglview/main.cpp | 32 + qglview/mainwindow.cpp | 225 + qglview/mainwindow.h | 110 + qglview/mainwindow.ui | 606 + qglview/make_install.sh | 5 + qglview/make_lib.bat | 1 + qglview/material_editor.cpp | 192 + qglview/material_editor.h | 67 + qglview/material_editor.ui | 891 + qglview/propertyeditor.cpp | 404 + qglview/propertyeditor.h | 76 + qglview/qglview.cpp | 609 + qglview/qglview.h | 325 + qglview/qglview.kdev4 | 3 + qglview/qglview_test.exe | Bin 0 -> 168240 bytes qglview/renderer_deferred_shading.cpp | 115 + qglview/renderer_deferred_shading.h | 46 + qglview/renderer_simple.cpp | 91 + qglview/renderer_simple.h | 43 + qglview/rope_system.cpp | 66 + qglview/rope_system.h | 41 + qglview/shaders/FXAA.frag | 230 + qglview/shaders/FXAA.vert | 13 + qglview/shaders/bloom_0.frag | 8 + qglview/shaders/bloom_1.frag | 30 + qglview/shaders/dsl_pass_0.frag | 52 + qglview/shaders/dsl_pass_0.geom | 14 + qglview/shaders/dsl_pass_0.vert | 42 + qglview/shaders/dsl_pass_1.frag | 94 + qglview/shaders/dsl_pass_1.vert | 6 + qglview/shaders/dsl_pass_2.frag | 13 + qglview/shaders/dsl_pass_2.vert | 6 + qglview/shaders/hdr_scale_0.frag | 13 + qglview/shaders/hdr_scale_1.frag | 10 + qglview/shaders/light_models.frag | 161 + qglview/shaders/post.frag | 42 + qglview/shaders/ppl.frag | 178 + qglview/shaders/ppl.vert | 66 + qglview/shaders/selection.frag | 7 + qglview/shaders/selection.vert | 5 + qglview/shaders/selection_halo.frag | 18 + qglview/shaders/selection_halo.vert | 6 + qglview/shaders/shadow.frag | 5 + qglview/shaders/shadow.vert | 6 + qglview/water_system.cpp | 230 + qglview/water_system.h | 87 + touch_widgets/.directory | 3 + touch_widgets/.kdev4/touch_widgets.kdev4 | 23 + touch_widgets/CMakeLists.txt | 36 + touch_widgets/LEDOS_devices.dat | 0 touch_widgets/Makefile.Debug | 204 + touch_widgets/Makefile.Release | 204 + touch_widgets/clean | 4 + touch_widgets/clean.bat | 4 + touch_widgets/gpio.conf | 0 touch_widgets/icons/button.png | Bin 0 -> 6345 bytes touch_widgets/icons/icons.xcf | Bin 0 -> 4382 bytes touch_widgets/icons/touchbuttframe.png | Bin 0 -> 1030 bytes touch_widgets/icons/touchbutton.png | Bin 0 -> 906 bytes touch_widgets/icons/touchslider.png | Bin 0 -> 915 bytes touch_widgets/make_lib.bat | 1 + .../release/moc_touchbuttframeplugin.cpp | 84 + .../release/moc_touchbuttonplugin.cpp | 84 + .../release/moc_touchsliderplugin.cpp | 84 + touch_widgets/release/moc_tw.cpp | 84 + touch_widgets/release/qrc_touch_widgets.cpp | 271 + .../release/touch_widgets_plugin.dll | Bin 0 -> 36864 bytes touch_widgets/touch_bar.h | 17 + touch_widgets/touch_widgets.kdev4 | 3 + touch_widgets/touch_widgets.pro | 17 + touch_widgets/touch_widgets.qrc | 7 + touch_widgets/touch_widgets.qrc.depends | 7 + touch_widgets/touchbuttframe.cpp | 84 + touch_widgets/touchbuttframe.h | 113 + touch_widgets/touchbuttframe.pri | 3 + touch_widgets/touchbuttframeplugin.cpp | 90 + touch_widgets/touchbuttframeplugin.h | 30 + touch_widgets/touchbutton.cpp | 104 + touch_widgets/touchbutton.h | 154 + touch_widgets/touchbutton.pri | 5 + touch_widgets/touchbuttonplugin.cpp | 74 + touch_widgets/touchbuttonplugin.h | 30 + touch_widgets/touchslider.cpp | 242 + touch_widgets/touchslider.h | 105 + touch_widgets/touchslider.pri | 8 + touch_widgets/touchslider.ui | 187 + touch_widgets/touchsliderplugin.cpp | 81 + touch_widgets/touchsliderplugin.h | 30 + touch_widgets/tw.cpp | 19 + touch_widgets/tw.h | 21 + 2358 files changed, 336795 insertions(+) create mode 100644 .kdev4/_custom.kdev4 create mode 100644 .kdev4/libs.kdev4 create mode 100644 CMakeLists.txt create mode 100644 FindMinGW.cmake create mode 100644 _oldpip/pip_0.4.0_r5/AUTHORS.txt create mode 100644 _oldpip/pip_0.4.0_r5/CMakeCache.txt create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/2.8.12.2/CMakeCCompiler.cmake create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/2.8.12.2/CMakeCXXCompiler.cmake create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/2.8.12.2/CMakeDetermineCompilerABI_C.bin create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/2.8.12.2/CMakeDetermineCompilerABI_CXX.bin create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/2.8.12.2/CMakeRCCompiler.cmake create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/2.8.12.2/CMakeSystem.cmake create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/2.8.12.2/CompilerIdC/CMakeCCompilerId.c create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/2.8.12.2/CompilerIdC/a.exe create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/2.8.12.2/CompilerIdCXX/CMakeCXXCompilerId.cpp create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/2.8.12.2/CompilerIdCXX/a.exe create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/CMakeError.log create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/CMakeOutput.log create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/Makefile.cmake create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/Makefile2 create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/TargetDirectories.txt create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/cmake.check_cache create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/CXX.includecache create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/DependInfo.cmake create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/build.make create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/cmake_clean.cmake create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/depend.internal create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/depend.make create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/flags.make create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/includes_CXX.rsp create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/link.txt create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/objects1.rsp create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/pibinarylog.cpp.obj create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/pibytearray.cpp.obj create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/picli.cpp.obj create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/picodec.cpp.obj create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/picodeinfo.cpp.obj create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/picodeparser.cpp.obj create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/picollection.cpp.obj create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/piconfig.cpp.obj create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/piconnection.cpp.obj create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/piconsole.cpp.obj create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/picontainers.cpp.obj create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/pidevicepool.cpp.obj create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/pidiagnostics.cpp.obj create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/pidir.cpp.obj create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/piethernet.cpp.obj create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/pievaluator.cpp.obj create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/pifile.cpp.obj create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/piincludes.cpp.obj create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/piiodevice.cpp.obj create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/pikbdlistener.cpp.obj create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/pimath.cpp.obj create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/pimonitor.cpp.obj create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/pimultiprotocol.cpp.obj create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/pimutex.cpp.obj create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/piobject.cpp.obj create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/pipacketextractor.cpp.obj create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/pipeer.cpp.obj create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/piprocess.cpp.obj create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/piprotocol.cpp.obj create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/piserial.cpp.obj create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/pisignals.cpp.obj create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/pistring.cpp.obj create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/pisystemmonitor.cpp.obj create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/pisystemtests.cpp.obj create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/pithread.cpp.obj create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/pitime.cpp.obj create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/pitimer.cpp.obj create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/piusb.cpp.obj create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/pivariant.cpp.obj create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/progress.make create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/pip_test.dir/CXX.includecache create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/pip_test.dir/DependInfo.cmake create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/pip_test.dir/build.make create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/pip_test.dir/cmake_clean.cmake create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/pip_test.dir/depend.internal create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/pip_test.dir/depend.make create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/pip_test.dir/flags.make create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/pip_test.dir/includes_CXX.rsp create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/pip_test.dir/link.txt create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/pip_test.dir/main.cpp.obj create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/pip_test.dir/objects1.rsp create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/pip_test.dir/progress.make create mode 100644 _oldpip/pip_0.4.0_r5/CMakeFiles/progress.marks create mode 100644 _oldpip/pip_0.4.0_r5/CMakeLists.txt create mode 100644 _oldpip/pip_0.4.0_r5/Doxyfile create mode 100644 _oldpip/pip_0.4.0_r5/FindPIP.cmake create mode 100644 _oldpip/pip_0.4.0_r5/LICENSE.txt create mode 100644 _oldpip/pip_0.4.0_r5/Makefile create mode 100644 _oldpip/pip_0.4.0_r5/clean create mode 100644 _oldpip/pip_0.4.0_r5/clean.bat create mode 100644 _oldpip/pip_0.4.0_r5/cmake_install.cmake create mode 100644 _oldpip/pip_0.4.0_r5/code_model_generator/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 _oldpip/pip_0.4.0_r5/code_model_generator/CMakeFiles/pip_cmg.dir/CXX.includecache create mode 100644 _oldpip/pip_0.4.0_r5/code_model_generator/CMakeFiles/pip_cmg.dir/DependInfo.cmake create mode 100644 _oldpip/pip_0.4.0_r5/code_model_generator/CMakeFiles/pip_cmg.dir/build.make create mode 100644 _oldpip/pip_0.4.0_r5/code_model_generator/CMakeFiles/pip_cmg.dir/cmake_clean.cmake create mode 100644 _oldpip/pip_0.4.0_r5/code_model_generator/CMakeFiles/pip_cmg.dir/depend.internal create mode 100644 _oldpip/pip_0.4.0_r5/code_model_generator/CMakeFiles/pip_cmg.dir/depend.make create mode 100644 _oldpip/pip_0.4.0_r5/code_model_generator/CMakeFiles/pip_cmg.dir/flags.make create mode 100644 _oldpip/pip_0.4.0_r5/code_model_generator/CMakeFiles/pip_cmg.dir/includes_CXX.rsp create mode 100644 _oldpip/pip_0.4.0_r5/code_model_generator/CMakeFiles/pip_cmg.dir/link.txt create mode 100644 _oldpip/pip_0.4.0_r5/code_model_generator/CMakeFiles/pip_cmg.dir/main.cpp.obj create mode 100644 _oldpip/pip_0.4.0_r5/code_model_generator/CMakeFiles/pip_cmg.dir/objects1.rsp create mode 100644 _oldpip/pip_0.4.0_r5/code_model_generator/CMakeFiles/pip_cmg.dir/progress.make create mode 100644 _oldpip/pip_0.4.0_r5/code_model_generator/CMakeFiles/progress.marks create mode 100644 _oldpip/pip_0.4.0_r5/code_model_generator/CMakeLists.txt create mode 100644 _oldpip/pip_0.4.0_r5/code_model_generator/Makefile create mode 100644 _oldpip/pip_0.4.0_r5/code_model_generator/cmake_install.cmake create mode 100644 _oldpip/pip_0.4.0_r5/code_model_generator/main.cpp create mode 100644 _oldpip/pip_0.4.0_r5/code_model_generator/main_test.cpp create mode 100644 _oldpip/pip_0.4.0_r5/code_model_generator/pip_cmg.exe create mode 100644 _oldpip/pip_0.4.0_r5/code_model_generator/test.cpp create mode 100644 _oldpip/pip_0.4.0_r5/code_model_generator/test.h create mode 100644 _oldpip/pip_0.4.0_r5/install_manifest.txt create mode 100644 _oldpip/pip_0.4.0_r5/libpip.dll create mode 100644 _oldpip/pip_0.4.0_r5/main.cpp create mode 100644 _oldpip/pip_0.4.0_r5/make.sh create mode 100644 _oldpip/pip_0.4.0_r5/make_lib.bat create mode 100644 _oldpip/pip_0.4.0_r5/make_lib_usb.bat create mode 100644 _oldpip/pip_0.4.0_r5/make_rc_win.bat create mode 100644 _oldpip/pip_0.4.0_r5/pibinarylog.cpp create mode 100644 _oldpip/pip_0.4.0_r5/pibinarylog.h create mode 100644 _oldpip/pip_0.4.0_r5/pibitarray.h create mode 100644 _oldpip/pip_0.4.0_r5/pibytearray.cpp create mode 100644 _oldpip/pip_0.4.0_r5/pibytearray.h create mode 100644 _oldpip/pip_0.4.0_r5/pichar.h create mode 100644 _oldpip/pip_0.4.0_r5/picli.cpp create mode 100644 _oldpip/pip_0.4.0_r5/picli.h create mode 100644 _oldpip/pip_0.4.0_r5/picodec.cpp create mode 100644 _oldpip/pip_0.4.0_r5/picodec.h create mode 100644 _oldpip/pip_0.4.0_r5/picodeinfo.cpp create mode 100644 _oldpip/pip_0.4.0_r5/picodeinfo.h create mode 100644 _oldpip/pip_0.4.0_r5/picodeparser.cpp create mode 100644 _oldpip/pip_0.4.0_r5/picodeparser.h create mode 100644 _oldpip/pip_0.4.0_r5/picollection.cpp create mode 100644 _oldpip/pip_0.4.0_r5/picollection.h create mode 100644 _oldpip/pip_0.4.0_r5/piconfig.cpp create mode 100644 _oldpip/pip_0.4.0_r5/piconfig.h create mode 100644 _oldpip/pip_0.4.0_r5/piconnection.cpp create mode 100644 _oldpip/pip_0.4.0_r5/piconnection.h create mode 100644 _oldpip/pip_0.4.0_r5/piconsole.cpp create mode 100644 _oldpip/pip_0.4.0_r5/piconsole.h create mode 100644 _oldpip/pip_0.4.0_r5/picontainers.cpp create mode 100644 _oldpip/pip_0.4.0_r5/picontainers.h create mode 100644 _oldpip/pip_0.4.0_r5/picrc.h create mode 100644 _oldpip/pip_0.4.0_r5/pideque.h create mode 100644 _oldpip/pip_0.4.0_r5/pidevicepool.cpp create mode 100644 _oldpip/pip_0.4.0_r5/pidevicepool.h create mode 100644 _oldpip/pip_0.4.0_r5/pidiagnostics.cpp create mode 100644 _oldpip/pip_0.4.0_r5/pidiagnostics.h create mode 100644 _oldpip/pip_0.4.0_r5/pidir.cpp create mode 100644 _oldpip/pip_0.4.0_r5/pidir.h create mode 100644 _oldpip/pip_0.4.0_r5/piethernet.cpp create mode 100644 _oldpip/pip_0.4.0_r5/piethernet.h create mode 100644 _oldpip/pip_0.4.0_r5/pievaluator.cpp create mode 100644 _oldpip/pip_0.4.0_r5/pievaluator.h create mode 100644 _oldpip/pip_0.4.0_r5/pifile.cpp create mode 100644 _oldpip/pip_0.4.0_r5/pifile.h create mode 100644 _oldpip/pip_0.4.0_r5/pigeometry.h create mode 100644 _oldpip/pip_0.4.0_r5/piincludes.cpp create mode 100644 _oldpip/pip_0.4.0_r5/piincludes.h create mode 100644 _oldpip/pip_0.4.0_r5/piiodevice.cpp create mode 100644 _oldpip/pip_0.4.0_r5/piiodevice.h create mode 100644 _oldpip/pip_0.4.0_r5/pikbdlistener.cpp create mode 100644 _oldpip/pip_0.4.0_r5/pikbdlistener.h create mode 100644 _oldpip/pip_0.4.0_r5/pimap.h create mode 100644 _oldpip/pip_0.4.0_r5/pimath.cpp create mode 100644 _oldpip/pip_0.4.0_r5/pimath.h create mode 100644 _oldpip/pip_0.4.0_r5/pimonitor.cpp create mode 100644 _oldpip/pip_0.4.0_r5/pimonitor.h create mode 100644 _oldpip/pip_0.4.0_r5/pimultiprotocol.cpp create mode 100644 _oldpip/pip_0.4.0_r5/pimultiprotocol.h create mode 100644 _oldpip/pip_0.4.0_r5/pimutex.cpp create mode 100644 _oldpip/pip_0.4.0_r5/pimutex.h create mode 100644 _oldpip/pip_0.4.0_r5/piobject.cpp create mode 100644 _oldpip/pip_0.4.0_r5/piobject.h create mode 100644 _oldpip/pip_0.4.0_r5/pip.h create mode 100644 _oldpip/pip_0.4.0_r5/pip.kdev4 create mode 100644 _oldpip/pip_0.4.0_r5/pip.pro create mode 100644 _oldpip/pip_0.4.0_r5/pip.pro.user create mode 100644 _oldpip/pip_0.4.0_r5/pip_export.h create mode 100644 _oldpip/pip_0.4.0_r5/pip_resource_win.rc create mode 100644 _oldpip/pip_0.4.0_r5/pip_test.exe create mode 100644 _oldpip/pip_0.4.0_r5/pipacketextractor.cpp create mode 100644 _oldpip/pip_0.4.0_r5/pipacketextractor.h create mode 100644 _oldpip/pip_0.4.0_r5/pipeer.cpp create mode 100644 _oldpip/pip_0.4.0_r5/pipeer.h create mode 100644 _oldpip/pip_0.4.0_r5/piprocess.cpp create mode 100644 _oldpip/pip_0.4.0_r5/piprocess.h create mode 100644 _oldpip/pip_0.4.0_r5/piprotocol.cpp create mode 100644 _oldpip/pip_0.4.0_r5/piprotocol.h create mode 100644 _oldpip/pip_0.4.0_r5/piqueue.h create mode 100644 _oldpip/pip_0.4.0_r5/piserial.cpp create mode 100644 _oldpip/pip_0.4.0_r5/piserial.h create mode 100644 _oldpip/pip_0.4.0_r5/pisignals.cpp create mode 100644 _oldpip/pip_0.4.0_r5/pisignals.h create mode 100644 _oldpip/pip_0.4.0_r5/pistack.h create mode 100644 _oldpip/pip_0.4.0_r5/pistatemachine.h create mode 100644 _oldpip/pip_0.4.0_r5/pistring.cpp create mode 100644 _oldpip/pip_0.4.0_r5/pistring.h create mode 100644 _oldpip/pip_0.4.0_r5/pisystemmonitor.cpp create mode 100644 _oldpip/pip_0.4.0_r5/pisystemmonitor.h create mode 100644 _oldpip/pip_0.4.0_r5/pisystemtests.cpp create mode 100644 _oldpip/pip_0.4.0_r5/pisystemtests.h create mode 100644 _oldpip/pip_0.4.0_r5/pithread.cpp create mode 100644 _oldpip/pip_0.4.0_r5/pithread.h create mode 100644 _oldpip/pip_0.4.0_r5/pitime.cpp create mode 100644 _oldpip/pip_0.4.0_r5/pitime.h create mode 100644 _oldpip/pip_0.4.0_r5/pitimer.cpp create mode 100644 _oldpip/pip_0.4.0_r5/pitimer.h create mode 100644 _oldpip/pip_0.4.0_r5/piusb.cpp create mode 100644 _oldpip/pip_0.4.0_r5/piusb.h create mode 100644 _oldpip/pip_0.4.0_r5/pivariant.cpp create mode 100644 _oldpip/pip_0.4.0_r5/pivariant.h create mode 100644 _oldpip/pip_0.4.0_r5/pivector.h create mode 100644 _oldpip/pip_0.4.0_r5/remote_console/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 _oldpip/pip_0.4.0_r5/remote_console/CMakeFiles/pip_remote_console.dir/CXX.includecache create mode 100644 _oldpip/pip_0.4.0_r5/remote_console/CMakeFiles/pip_remote_console.dir/DependInfo.cmake create mode 100644 _oldpip/pip_0.4.0_r5/remote_console/CMakeFiles/pip_remote_console.dir/build.make create mode 100644 _oldpip/pip_0.4.0_r5/remote_console/CMakeFiles/pip_remote_console.dir/cmake_clean.cmake create mode 100644 _oldpip/pip_0.4.0_r5/remote_console/CMakeFiles/pip_remote_console.dir/depend.internal create mode 100644 _oldpip/pip_0.4.0_r5/remote_console/CMakeFiles/pip_remote_console.dir/depend.make create mode 100644 _oldpip/pip_0.4.0_r5/remote_console/CMakeFiles/pip_remote_console.dir/flags.make create mode 100644 _oldpip/pip_0.4.0_r5/remote_console/CMakeFiles/pip_remote_console.dir/includes_CXX.rsp create mode 100644 _oldpip/pip_0.4.0_r5/remote_console/CMakeFiles/pip_remote_console.dir/link.txt create mode 100644 _oldpip/pip_0.4.0_r5/remote_console/CMakeFiles/pip_remote_console.dir/main.cpp.obj create mode 100644 _oldpip/pip_0.4.0_r5/remote_console/CMakeFiles/pip_remote_console.dir/objects1.rsp create mode 100644 _oldpip/pip_0.4.0_r5/remote_console/CMakeFiles/pip_remote_console.dir/progress.make create mode 100644 _oldpip/pip_0.4.0_r5/remote_console/CMakeFiles/progress.marks create mode 100644 _oldpip/pip_0.4.0_r5/remote_console/CMakeLists.txt create mode 100644 _oldpip/pip_0.4.0_r5/remote_console/Makefile create mode 100644 _oldpip/pip_0.4.0_r5/remote_console/cmake_install.cmake create mode 100644 _oldpip/pip_0.4.0_r5/remote_console/main.cpp create mode 100644 _oldpip/pip_0.4.0_r5/remote_console/pip_remote_console.exe create mode 100644 _oldpip/pip_0.4.0_r5/system_test/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 _oldpip/pip_0.4.0_r5/system_test/CMakeFiles/pip_sys_test.dir/CXX.includecache create mode 100644 _oldpip/pip_0.4.0_r5/system_test/CMakeFiles/pip_sys_test.dir/DependInfo.cmake create mode 100644 _oldpip/pip_0.4.0_r5/system_test/CMakeFiles/pip_sys_test.dir/build.make create mode 100644 _oldpip/pip_0.4.0_r5/system_test/CMakeFiles/pip_sys_test.dir/cmake_clean.cmake create mode 100644 _oldpip/pip_0.4.0_r5/system_test/CMakeFiles/pip_sys_test.dir/depend.internal create mode 100644 _oldpip/pip_0.4.0_r5/system_test/CMakeFiles/pip_sys_test.dir/depend.make create mode 100644 _oldpip/pip_0.4.0_r5/system_test/CMakeFiles/pip_sys_test.dir/flags.make create mode 100644 _oldpip/pip_0.4.0_r5/system_test/CMakeFiles/pip_sys_test.dir/includes_CXX.rsp create mode 100644 _oldpip/pip_0.4.0_r5/system_test/CMakeFiles/pip_sys_test.dir/link.txt create mode 100644 _oldpip/pip_0.4.0_r5/system_test/CMakeFiles/pip_sys_test.dir/main.cpp.obj create mode 100644 _oldpip/pip_0.4.0_r5/system_test/CMakeFiles/pip_sys_test.dir/objects1.rsp create mode 100644 _oldpip/pip_0.4.0_r5/system_test/CMakeFiles/pip_sys_test.dir/progress.make create mode 100644 _oldpip/pip_0.4.0_r5/system_test/CMakeFiles/progress.marks create mode 100644 _oldpip/pip_0.4.0_r5/system_test/CMakeLists.txt create mode 100644 _oldpip/pip_0.4.0_r5/system_test/Makefile create mode 100644 _oldpip/pip_0.4.0_r5/system_test/cmake_install.cmake create mode 100644 _oldpip/pip_0.4.0_r5/system_test/main.cpp create mode 100644 _oldpip/pip_0.4.0_r5/system_test/pip_sys_test.exe create mode 100644 clean.bat create mode 100755 clean_all create mode 100644 kx_tools/.kdev4/_custom.kdev4 create mode 100644 kx_tools/.kdev4/kx_tools.kdev4 create mode 100644 kx_tools/CMakeLists.txt create mode 100644 kx_tools/LEDOS_devices.dat create mode 100644 kx_tools/clean create mode 100644 kx_tools/clean.bat create mode 100644 kx_tools/gpio.conf create mode 100644 kx_tools/icons/accessories-calculator.png create mode 100644 kx_tools/icons/alpha.png create mode 100644 kx_tools/icons/application-exit.png create mode 100644 kx_tools/icons/archive-extract.png create mode 100644 kx_tools/icons/configure.png create mode 100644 kx_tools/icons/dialog-close.png create mode 100644 kx_tools/icons/document-export.png create mode 100644 kx_tools/icons/document-import.png create mode 100644 kx_tools/icons/document-open.png create mode 100644 kx_tools/icons/document-save-.png create mode 100644 kx_tools/icons/document-save.png create mode 100644 kx_tools/icons/edit-clear-.png create mode 100644 kx_tools/icons/edit-clear-locationbar-rtl.png create mode 100644 kx_tools/icons/edit-clear.png create mode 100644 kx_tools/icons/edit-copy.png create mode 100644 kx_tools/icons/edit-delete.png create mode 100644 kx_tools/icons/edit-find-.png create mode 100644 kx_tools/icons/edit-find.png create mode 100644 kx_tools/icons/edit-guides.png create mode 100644 kx_tools/icons/edit-paste.png create mode 100644 kx_tools/icons/expand_s_x.png create mode 100644 kx_tools/icons/expand_s_y.png create mode 100644 kx_tools/icons/expand_x.png create mode 100644 kx_tools/icons/expand_y.png create mode 100644 kx_tools/icons/item-add.png create mode 100644 kx_tools/icons/item.png create mode 100644 kx_tools/icons/layer-visible-off.png create mode 100644 kx_tools/icons/layer-visible-on.png create mode 100644 kx_tools/icons/list-add.png create mode 100644 kx_tools/icons/media-playback-pause.png create mode 100644 kx_tools/icons/media-playback-stop.png create mode 100644 kx_tools/icons/media-record.png create mode 100644 kx_tools/icons/node-add.png create mode 100644 kx_tools/icons/node.png create mode 100644 kx_tools/icons/view-grid.png create mode 100644 kx_tools/icons/view-refresh.png create mode 100644 kx_tools/icons/zoom-fit-best.png create mode 100644 kx_tools/icons/zoom-fit-height.png create mode 100644 kx_tools/k.dat create mode 100644 kx_tools/kdesc.h create mode 100644 kx_tools/kx_coeffs.cpp create mode 100644 kx_tools/kx_coeffs.h create mode 100644 kx_tools/kx_protocol_x.h create mode 100644 kx_tools/kx_pult.conf create mode 100644 kx_tools/kx_pult.cpp create mode 100644 kx_tools/kx_pult.exe create mode 100644 kx_tools/kx_pult.h create mode 100644 kx_tools/kx_pult.qrc create mode 100644 kx_tools/kx_pult.qrc.depends create mode 100644 kx_tools/kx_pult.ui create mode 100644 kx_tools/kx_tools.kdev4 create mode 100644 kx_tools/libkx_utils.dll create mode 100644 kx_tools/main_kx_pult.cpp create mode 100644 kx_tools/make_lib.bat create mode 100644 kx_tools/session_KX_Pult.conf create mode 100644 libs.kdev4 create mode 100644 make_libs.bat create mode 100755 make_libs.sh create mode 100644 mbricks/.kdev4/mbricks.kdev4 create mode 100644 mbricks/CMakeLists.txt create mode 100644 mbricks/brick_base.cpp create mode 100644 mbricks/brick_base.h create mode 100644 mbricks/brick_composite.cpp create mode 100644 mbricks/brick_composite.h create mode 100644 mbricks/brick_digital.cpp create mode 100644 mbricks/brick_digital.h create mode 100644 mbricks/brick_emits.cpp create mode 100644 mbricks/brick_emits.h create mode 100644 mbricks/brick_interface.cpp create mode 100644 mbricks/brick_interface.h create mode 100644 mbricks/brick_link.cpp create mode 100644 mbricks/brick_link.h create mode 100644 mbricks/brick_logic.cpp create mode 100644 mbricks/brick_logic.h create mode 100644 mbricks/brick_manager.cpp create mode 100644 mbricks/brick_manager.h create mode 100644 mbricks/brick_math.cpp create mode 100644 mbricks/brick_math.h create mode 100644 mbricks/brick_statistic.cpp create mode 100644 mbricks/brick_statistic.h create mode 100644 mbricks/clean create mode 100644 mbricks/clean.bat create mode 100644 mbricks/make_install.sh create mode 100644 mbricks/make_lib.bat create mode 100644 mbricks/mbricks.h create mode 100644 mbricks/mbricks.kdev4 create mode 100644 pip/.gitignore create mode 100644 pip/.kdev4/_custom.kdev4 create mode 100644 pip/.kdev4/pip.kdev4 create mode 100644 pip/AUTHORS.txt create mode 100644 pip/CMakeLists.txt create mode 100644 pip/CMakeLists.txt.user create mode 100644 pip/Doxyfile create mode 100644 pip/FindPIP.cmake create mode 100644 pip/LICENSE.txt create mode 100644 pip/clean create mode 100644 pip/clean.bat create mode 100644 pip/doc/doxygen_sqlite3.db create mode 100644 pip/doc/events_handlers.odp create mode 100644 pip/doc/examples/pibytearray.cpp create mode 100644 pip/doc/examples/picli.cpp create mode 100644 pip/doc/examples/picollection.cpp create mode 100644 pip/doc/examples/piconfig.cpp create mode 100644 pip/doc/examples/picontainers.cpp create mode 100644 pip/doc/examples/picout.cpp create mode 100644 pip/doc/examples/pievaluator.cpp create mode 100644 pip/doc/examples/piincludes.cpp create mode 100644 pip/doc/examples/piiodevice.cpp create mode 100644 pip/doc/examples/pikbdlistener.cpp create mode 100644 pip/doc/examples/pimutex.cpp create mode 100644 pip/doc/examples/piobject.cpp create mode 100644 pip/doc/examples/pistatemachine.cpp create mode 100644 pip/doc/examples/pistring.cpp create mode 100644 pip/doc/examples/pitimer.cpp create mode 100644 pip/doc/html/annotated.html create mode 100644 pip/doc/html/annotated.js create mode 100644 pip/doc/html/bc_s.png create mode 100644 pip/doc/html/bdwn.png create mode 100644 pip/doc/html/class_p_i_binary_log-members.html create mode 100644 pip/doc/html/class_p_i_binary_log.html create mode 100644 pip/doc/html/class_p_i_binary_log.js create mode 100644 pip/doc/html/class_p_i_binary_log__inherit__graph.map create mode 100644 pip/doc/html/class_p_i_binary_log__inherit__graph.md5 create mode 100644 pip/doc/html/class_p_i_binary_log__inherit__graph.svg create mode 100644 pip/doc/html/class_p_i_byte_array-members.html create mode 100644 pip/doc/html/class_p_i_byte_array.html create mode 100644 pip/doc/html/class_p_i_byte_array.js create mode 100644 pip/doc/html/class_p_i_c_l_i-members.html create mode 100644 pip/doc/html/class_p_i_c_l_i.html create mode 100644 pip/doc/html/class_p_i_c_l_i.js create mode 100644 pip/doc/html/class_p_i_c_l_i__inherit__graph.map create mode 100644 pip/doc/html/class_p_i_c_l_i__inherit__graph.md5 create mode 100644 pip/doc/html/class_p_i_c_l_i__inherit__graph.svg create mode 100644 pip/doc/html/class_p_i_char-members.html create mode 100644 pip/doc/html/class_p_i_char.html create mode 100644 pip/doc/html/class_p_i_char.js create mode 100644 pip/doc/html/class_p_i_collection-members.html create mode 100644 pip/doc/html/class_p_i_collection.html create mode 100644 pip/doc/html/class_p_i_collection.js create mode 100644 pip/doc/html/class_p_i_config-members.html create mode 100644 pip/doc/html/class_p_i_config.html create mode 100644 pip/doc/html/class_p_i_config.js create mode 100644 pip/doc/html/class_p_i_config_1_1_branch-members.html create mode 100644 pip/doc/html/class_p_i_config_1_1_branch.html create mode 100644 pip/doc/html/class_p_i_config_1_1_branch__inherit__graph.map create mode 100644 pip/doc/html/class_p_i_config_1_1_branch__inherit__graph.md5 create mode 100644 pip/doc/html/class_p_i_config_1_1_branch__inherit__graph.svg create mode 100644 pip/doc/html/class_p_i_config_1_1_entry-members.html create mode 100644 pip/doc/html/class_p_i_config_1_1_entry.html create mode 100644 pip/doc/html/class_p_i_config_1_1_entry.js create mode 100644 pip/doc/html/class_p_i_config__inherit__graph.map create mode 100644 pip/doc/html/class_p_i_config__inherit__graph.md5 create mode 100644 pip/doc/html/class_p_i_config__inherit__graph.svg create mode 100644 pip/doc/html/class_p_i_connection-members.html create mode 100644 pip/doc/html/class_p_i_connection.html create mode 100644 pip/doc/html/class_p_i_connection.js create mode 100644 pip/doc/html/class_p_i_connection__inherit__graph.map create mode 100644 pip/doc/html/class_p_i_connection__inherit__graph.md5 create mode 100644 pip/doc/html/class_p_i_connection__inherit__graph.svg create mode 100644 pip/doc/html/class_p_i_console-members.html create mode 100644 pip/doc/html/class_p_i_console.html create mode 100644 pip/doc/html/class_p_i_console.js create mode 100644 pip/doc/html/class_p_i_console__inherit__graph.map create mode 100644 pip/doc/html/class_p_i_console__inherit__graph.md5 create mode 100644 pip/doc/html/class_p_i_console__inherit__graph.svg create mode 100644 pip/doc/html/class_p_i_cout-members.html create mode 100644 pip/doc/html/class_p_i_cout.html create mode 100644 pip/doc/html/class_p_i_cout.js create mode 100644 pip/doc/html/class_p_i_diagnostics-members.html create mode 100644 pip/doc/html/class_p_i_diagnostics.html create mode 100644 pip/doc/html/class_p_i_diagnostics.js create mode 100644 pip/doc/html/class_p_i_diagnostics__inherit__graph.map create mode 100644 pip/doc/html/class_p_i_diagnostics__inherit__graph.md5 create mode 100644 pip/doc/html/class_p_i_diagnostics__inherit__graph.svg create mode 100644 pip/doc/html/class_p_i_ethernet-members.html create mode 100644 pip/doc/html/class_p_i_ethernet.html create mode 100644 pip/doc/html/class_p_i_ethernet.js create mode 100644 pip/doc/html/class_p_i_ethernet_1_1_interface_list-members.html create mode 100644 pip/doc/html/class_p_i_ethernet_1_1_interface_list.html create mode 100644 pip/doc/html/class_p_i_ethernet_1_1_interface_list.js create mode 100644 pip/doc/html/class_p_i_ethernet_1_1_interface_list__inherit__graph.map create mode 100644 pip/doc/html/class_p_i_ethernet_1_1_interface_list__inherit__graph.md5 create mode 100644 pip/doc/html/class_p_i_ethernet_1_1_interface_list__inherit__graph.svg create mode 100644 pip/doc/html/class_p_i_ethernet__inherit__graph.map create mode 100644 pip/doc/html/class_p_i_ethernet__inherit__graph.md5 create mode 100644 pip/doc/html/class_p_i_ethernet__inherit__graph.svg create mode 100644 pip/doc/html/class_p_i_evaluator-members.html create mode 100644 pip/doc/html/class_p_i_evaluator.html create mode 100644 pip/doc/html/class_p_i_evaluator.js create mode 100644 pip/doc/html/class_p_i_file-members.html create mode 100644 pip/doc/html/class_p_i_file.html create mode 100644 pip/doc/html/class_p_i_file.js create mode 100644 pip/doc/html/class_p_i_file__inherit__graph.map create mode 100644 pip/doc/html/class_p_i_file__inherit__graph.md5 create mode 100644 pip/doc/html/class_p_i_file__inherit__graph.svg create mode 100644 pip/doc/html/class_p_i_flags-members.html create mode 100644 pip/doc/html/class_p_i_flags.html create mode 100644 pip/doc/html/class_p_i_flags.js create mode 100644 pip/doc/html/class_p_i_i_o_device-members.html create mode 100644 pip/doc/html/class_p_i_i_o_device.html create mode 100644 pip/doc/html/class_p_i_i_o_device.js create mode 100644 pip/doc/html/class_p_i_i_o_device__inherit__graph.map create mode 100644 pip/doc/html/class_p_i_i_o_device__inherit__graph.md5 create mode 100644 pip/doc/html/class_p_i_i_o_device__inherit__graph.svg create mode 100644 pip/doc/html/class_p_i_kbd_listener-members.html create mode 100644 pip/doc/html/class_p_i_kbd_listener.html create mode 100644 pip/doc/html/class_p_i_kbd_listener.js create mode 100644 pip/doc/html/class_p_i_kbd_listener__inherit__graph.map create mode 100644 pip/doc/html/class_p_i_kbd_listener__inherit__graph.md5 create mode 100644 pip/doc/html/class_p_i_kbd_listener__inherit__graph.svg create mode 100644 pip/doc/html/class_p_i_mutex-members.html create mode 100644 pip/doc/html/class_p_i_mutex.html create mode 100644 pip/doc/html/class_p_i_mutex.js create mode 100644 pip/doc/html/class_p_i_object-members.html create mode 100644 pip/doc/html/class_p_i_object.html create mode 100644 pip/doc/html/class_p_i_object.js create mode 100644 pip/doc/html/class_p_i_object__inherit__graph.map create mode 100644 pip/doc/html/class_p_i_object__inherit__graph.md5 create mode 100644 pip/doc/html/class_p_i_object__inherit__graph.svg create mode 100644 pip/doc/html/class_p_i_object__inherit__graph_org.svg create mode 100644 pip/doc/html/class_p_i_packet_extractor-members.html create mode 100644 pip/doc/html/class_p_i_packet_extractor.html create mode 100644 pip/doc/html/class_p_i_packet_extractor.js create mode 100644 pip/doc/html/class_p_i_packet_extractor__inherit__graph.map create mode 100644 pip/doc/html/class_p_i_packet_extractor__inherit__graph.md5 create mode 100644 pip/doc/html/class_p_i_packet_extractor__inherit__graph.svg create mode 100644 pip/doc/html/class_p_i_process-members.html create mode 100644 pip/doc/html/class_p_i_process.html create mode 100644 pip/doc/html/class_p_i_process__inherit__graph.map create mode 100644 pip/doc/html/class_p_i_process__inherit__graph.md5 create mode 100644 pip/doc/html/class_p_i_process__inherit__graph.svg create mode 100644 pip/doc/html/class_p_i_protocol-members.html create mode 100644 pip/doc/html/class_p_i_protocol.html create mode 100644 pip/doc/html/class_p_i_protocol.js create mode 100644 pip/doc/html/class_p_i_protocol__inherit__graph.map create mode 100644 pip/doc/html/class_p_i_protocol__inherit__graph.md5 create mode 100644 pip/doc/html/class_p_i_protocol__inherit__graph.svg create mode 100644 pip/doc/html/class_p_i_serial-members.html create mode 100644 pip/doc/html/class_p_i_serial.html create mode 100644 pip/doc/html/class_p_i_serial.js create mode 100644 pip/doc/html/class_p_i_serial__inherit__graph.map create mode 100644 pip/doc/html/class_p_i_serial__inherit__graph.md5 create mode 100644 pip/doc/html/class_p_i_serial__inherit__graph.svg create mode 100644 pip/doc/html/class_p_i_set-members.html create mode 100644 pip/doc/html/class_p_i_set.html create mode 100644 pip/doc/html/class_p_i_set.js create mode 100644 pip/doc/html/class_p_i_state_machine-members.html create mode 100644 pip/doc/html/class_p_i_state_machine.html create mode 100644 pip/doc/html/class_p_i_state_machine.js create mode 100644 pip/doc/html/class_p_i_state_machine__inherit__graph.map create mode 100644 pip/doc/html/class_p_i_state_machine__inherit__graph.md5 create mode 100644 pip/doc/html/class_p_i_state_machine__inherit__graph.svg create mode 100644 pip/doc/html/class_p_i_string-members.html create mode 100644 pip/doc/html/class_p_i_string.html create mode 100644 pip/doc/html/class_p_i_string.js create mode 100644 pip/doc/html/class_p_i_string_list-members.html create mode 100644 pip/doc/html/class_p_i_string_list.html create mode 100644 pip/doc/html/class_p_i_string_list.js create mode 100644 pip/doc/html/class_p_i_system_time-members.html create mode 100644 pip/doc/html/class_p_i_system_time.html create mode 100644 pip/doc/html/class_p_i_system_time.js create mode 100644 pip/doc/html/class_p_i_thread-members.html create mode 100644 pip/doc/html/class_p_i_thread.html create mode 100644 pip/doc/html/class_p_i_thread.js create mode 100644 pip/doc/html/class_p_i_thread__inherit__graph.map create mode 100644 pip/doc/html/class_p_i_thread__inherit__graph.md5 create mode 100644 pip/doc/html/class_p_i_thread__inherit__graph.svg create mode 100644 pip/doc/html/class_p_i_time_measurer-members.html create mode 100644 pip/doc/html/class_p_i_time_measurer.html create mode 100644 pip/doc/html/class_p_i_time_measurer.js create mode 100644 pip/doc/html/class_p_i_timer-members.html create mode 100644 pip/doc/html/class_p_i_timer.html create mode 100644 pip/doc/html/class_p_i_timer.js create mode 100644 pip/doc/html/class_p_i_timer__inherit__graph.map create mode 100644 pip/doc/html/class_p_i_timer__inherit__graph.md5 create mode 100644 pip/doc/html/class_p_i_timer__inherit__graph.svg create mode 100644 pip/doc/html/class_p_i_variant-members.html create mode 100644 pip/doc/html/class_p_i_variant.html create mode 100644 pip/doc/html/class_p_i_variant.js create mode 100644 pip/doc/html/class_p_i_vector-members.html create mode 100644 pip/doc/html/class_p_i_vector.html create mode 100644 pip/doc/html/class_p_i_vector.js create mode 100644 pip/doc/html/classes.html create mode 100644 pip/doc/html/closed.png create mode 100644 pip/doc/html/deprecated.html create mode 100644 pip/doc/html/dir_000001_000006.html create mode 100644 pip/doc/html/dir_000002_000004.html create mode 100644 pip/doc/html/dir_000002_000005.html create mode 100644 pip/doc/html/dir_000002_000006.html create mode 100644 pip/doc/html/dir_000003_000004.html create mode 100644 pip/doc/html/dir_000004_000003.html create mode 100644 pip/doc/html/dir_000004_000005.html create mode 100644 pip/doc/html/dir_000004_000006.html create mode 100644 pip/doc/html/dir_000004_000007.html create mode 100644 pip/doc/html/dir_000004_000008.html create mode 100644 pip/doc/html/dir_000005_000004.html create mode 100644 pip/doc/html/dir_000005_000007.html create mode 100644 pip/doc/html/dir_000005_000008.html create mode 100644 pip/doc/html/dir_000006_000004.html create mode 100644 pip/doc/html/dir_000007_000003.html create mode 100644 pip/doc/html/dir_000007_000005.html create mode 100644 pip/doc/html/dir_000007_000008.html create mode 100644 pip/doc/html/dir_000008_000004.html create mode 100644 pip/doc/html/dir_0b61c55142250c0cc363383afd8075a4.html create mode 100644 pip/doc/html/dir_0b61c55142250c0cc363383afd8075a4.js create mode 100644 pip/doc/html/dir_0b61c55142250c0cc363383afd8075a4_dep.map create mode 100644 pip/doc/html/dir_0b61c55142250c0cc363383afd8075a4_dep.md5 create mode 100644 pip/doc/html/dir_0b61c55142250c0cc363383afd8075a4_dep.svg create mode 100644 pip/doc/html/dir_3edb929655fe9d5ef5f6ec0f70ce278e.html create mode 100644 pip/doc/html/dir_3edb929655fe9d5ef5f6ec0f70ce278e_dep.map create mode 100644 pip/doc/html/dir_3edb929655fe9d5ef5f6ec0f70ce278e_dep.md5 create mode 100644 pip/doc/html/dir_3edb929655fe9d5ef5f6ec0f70ce278e_dep.svg create mode 100644 pip/doc/html/dir_3ef7287b8e7a9ed45eff58e9a3bb8bc1.html create mode 100644 pip/doc/html/dir_3ef7287b8e7a9ed45eff58e9a3bb8bc1.js create mode 100644 pip/doc/html/dir_3ef7287b8e7a9ed45eff58e9a3bb8bc1_dep.map create mode 100644 pip/doc/html/dir_3ef7287b8e7a9ed45eff58e9a3bb8bc1_dep.md5 create mode 100644 pip/doc/html/dir_3ef7287b8e7a9ed45eff58e9a3bb8bc1_dep.svg create mode 100644 pip/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html create mode 100644 pip/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba.js create mode 100644 pip/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.map create mode 100644 pip/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.md5 create mode 100644 pip/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.svg create mode 100644 pip/doc/html/dir_ae9a93452e2a84339148a16bcf2eb561.html create mode 100644 pip/doc/html/dir_ae9a93452e2a84339148a16bcf2eb561.js create mode 100644 pip/doc/html/dir_ae9a93452e2a84339148a16bcf2eb561_dep.map create mode 100644 pip/doc/html/dir_ae9a93452e2a84339148a16bcf2eb561_dep.md5 create mode 100644 pip/doc/html/dir_ae9a93452e2a84339148a16bcf2eb561_dep.svg create mode 100644 pip/doc/html/dir_aebb8dcc11953d78e620bbef0b9e2183.html create mode 100644 pip/doc/html/dir_aebb8dcc11953d78e620bbef0b9e2183.js create mode 100644 pip/doc/html/dir_aebb8dcc11953d78e620bbef0b9e2183_dep.map create mode 100644 pip/doc/html/dir_aebb8dcc11953d78e620bbef0b9e2183_dep.md5 create mode 100644 pip/doc/html/dir_aebb8dcc11953d78e620bbef0b9e2183_dep.svg create mode 100644 pip/doc/html/dir_bfedb72b9d87795234454f6223b9ab1e.html create mode 100644 pip/doc/html/dir_bfedb72b9d87795234454f6223b9ab1e.js create mode 100644 pip/doc/html/dir_bfedb72b9d87795234454f6223b9ab1e_dep.map create mode 100644 pip/doc/html/dir_bfedb72b9d87795234454f6223b9ab1e_dep.md5 create mode 100644 pip/doc/html/dir_bfedb72b9d87795234454f6223b9ab1e_dep.svg create mode 100644 pip/doc/html/dir_c184e51c84f2c3f0345bbc8a0d75d3e1.html create mode 100644 pip/doc/html/dir_c184e51c84f2c3f0345bbc8a0d75d3e1.js create mode 100644 pip/doc/html/dir_c184e51c84f2c3f0345bbc8a0d75d3e1_dep.map create mode 100644 pip/doc/html/dir_c184e51c84f2c3f0345bbc8a0d75d3e1_dep.md5 create mode 100644 pip/doc/html/dir_c184e51c84f2c3f0345bbc8a0d75d3e1_dep.svg create mode 100644 pip/doc/html/dir_d501334aeb1b78ad67cd3c72c37b1e87.html create mode 100644 pip/doc/html/dir_d501334aeb1b78ad67cd3c72c37b1e87.js create mode 100644 pip/doc/html/dir_d501334aeb1b78ad67cd3c72c37b1e87_dep.map create mode 100644 pip/doc/html/dir_d501334aeb1b78ad67cd3c72c37b1e87_dep.md5 create mode 100644 pip/doc/html/dir_d501334aeb1b78ad67cd3c72c37b1e87_dep.svg create mode 100644 pip/doc/html/doxygen.css create mode 100644 pip/doc/html/doxygen.png create mode 100644 pip/doc/html/dynsections.js create mode 100644 pip/doc/html/events_handlers.png create mode 100644 pip/doc/html/files.html create mode 100644 pip/doc/html/files.js create mode 100644 pip/doc/html/ftv2blank.png create mode 100644 pip/doc/html/ftv2doc.png create mode 100644 pip/doc/html/ftv2folderclosed.png create mode 100644 pip/doc/html/ftv2folderopen.png create mode 100644 pip/doc/html/ftv2lastnode.png create mode 100644 pip/doc/html/ftv2link.png create mode 100644 pip/doc/html/ftv2mlastnode.png create mode 100644 pip/doc/html/ftv2mnode.png create mode 100644 pip/doc/html/ftv2node.png create mode 100644 pip/doc/html/ftv2plastnode.png create mode 100644 pip/doc/html/ftv2pnode.png create mode 100644 pip/doc/html/ftv2splitbar.png create mode 100644 pip/doc/html/ftv2vertline.png create mode 100644 pip/doc/html/functions.html create mode 100644 pip/doc/html/functions_b.html create mode 100644 pip/doc/html/functions_c.html create mode 100644 pip/doc/html/functions_d.html create mode 100644 pip/doc/html/functions_dup.js create mode 100644 pip/doc/html/functions_e.html create mode 100644 pip/doc/html/functions_enum.html create mode 100644 pip/doc/html/functions_eval.html create mode 100644 pip/doc/html/functions_f.html create mode 100644 pip/doc/html/functions_func.html create mode 100644 pip/doc/html/functions_func.js create mode 100644 pip/doc/html/functions_func_b.html create mode 100644 pip/doc/html/functions_func_c.html create mode 100644 pip/doc/html/functions_func_d.html create mode 100644 pip/doc/html/functions_func_e.html create mode 100644 pip/doc/html/functions_func_f.html create mode 100644 pip/doc/html/functions_func_g.html create mode 100644 pip/doc/html/functions_func_h.html create mode 100644 pip/doc/html/functions_func_i.html create mode 100644 pip/doc/html/functions_func_j.html create mode 100644 pip/doc/html/functions_func_k.html create mode 100644 pip/doc/html/functions_func_l.html create mode 100644 pip/doc/html/functions_func_m.html create mode 100644 pip/doc/html/functions_func_n.html create mode 100644 pip/doc/html/functions_func_o.html create mode 100644 pip/doc/html/functions_func_p.html create mode 100644 pip/doc/html/functions_func_q.html create mode 100644 pip/doc/html/functions_func_r.html create mode 100644 pip/doc/html/functions_func_s.html create mode 100644 pip/doc/html/functions_func_t.html create mode 100644 pip/doc/html/functions_func_u.html create mode 100644 pip/doc/html/functions_func_v.html create mode 100644 pip/doc/html/functions_func_w.html create mode 100644 pip/doc/html/functions_g.html create mode 100644 pip/doc/html/functions_h.html create mode 100644 pip/doc/html/functions_i.html create mode 100644 pip/doc/html/functions_j.html create mode 100644 pip/doc/html/functions_k.html create mode 100644 pip/doc/html/functions_l.html create mode 100644 pip/doc/html/functions_m.html create mode 100644 pip/doc/html/functions_n.html create mode 100644 pip/doc/html/functions_o.html create mode 100644 pip/doc/html/functions_p.html create mode 100644 pip/doc/html/functions_q.html create mode 100644 pip/doc/html/functions_r.html create mode 100644 pip/doc/html/functions_rela.html create mode 100644 pip/doc/html/functions_s.html create mode 100644 pip/doc/html/functions_t.html create mode 100644 pip/doc/html/functions_type.html create mode 100644 pip/doc/html/functions_u.html create mode 100644 pip/doc/html/functions_v.html create mode 100644 pip/doc/html/functions_vars.html create mode 100644 pip/doc/html/functions_w.html create mode 100644 pip/doc/html/functions_y.html create mode 100644 pip/doc/html/globals.html create mode 100644 pip/doc/html/globals_defs.html create mode 100644 pip/doc/html/globals_func.html create mode 100644 pip/doc/html/globals_vars.html create mode 100644 pip/doc/html/graph_legend.html create mode 100644 pip/doc/html/graph_legend.md5 create mode 100644 pip/doc/html/graph_legend.svg create mode 100644 pip/doc/html/hierarchy.html create mode 100644 pip/doc/html/hierarchy.js create mode 100644 pip/doc/html/index.html create mode 100644 pip/doc/html/index.qhp create mode 100644 pip/doc/html/inherit_graph_0.map create mode 100644 pip/doc/html/inherit_graph_0.md5 create mode 100644 pip/doc/html/inherit_graph_0.svg create mode 100644 pip/doc/html/inherit_graph_1.map create mode 100644 pip/doc/html/inherit_graph_1.md5 create mode 100644 pip/doc/html/inherit_graph_1.svg create mode 100644 pip/doc/html/inherit_graph_10.map create mode 100644 pip/doc/html/inherit_graph_10.md5 create mode 100644 pip/doc/html/inherit_graph_10.svg create mode 100644 pip/doc/html/inherit_graph_11.map create mode 100644 pip/doc/html/inherit_graph_11.md5 create mode 100644 pip/doc/html/inherit_graph_11.svg create mode 100644 pip/doc/html/inherit_graph_12.map create mode 100644 pip/doc/html/inherit_graph_12.md5 create mode 100644 pip/doc/html/inherit_graph_12.svg create mode 100644 pip/doc/html/inherit_graph_13.map create mode 100644 pip/doc/html/inherit_graph_13.md5 create mode 100644 pip/doc/html/inherit_graph_13.svg create mode 100644 pip/doc/html/inherit_graph_14.map create mode 100644 pip/doc/html/inherit_graph_14.md5 create mode 100644 pip/doc/html/inherit_graph_14.svg create mode 100644 pip/doc/html/inherit_graph_15.map create mode 100644 pip/doc/html/inherit_graph_15.md5 create mode 100644 pip/doc/html/inherit_graph_15.svg create mode 100644 pip/doc/html/inherit_graph_16.map create mode 100644 pip/doc/html/inherit_graph_16.md5 create mode 100644 pip/doc/html/inherit_graph_16.svg create mode 100644 pip/doc/html/inherit_graph_17.map create mode 100644 pip/doc/html/inherit_graph_17.md5 create mode 100644 pip/doc/html/inherit_graph_17.svg create mode 100644 pip/doc/html/inherit_graph_18.map create mode 100644 pip/doc/html/inherit_graph_18.md5 create mode 100644 pip/doc/html/inherit_graph_18.svg create mode 100644 pip/doc/html/inherit_graph_19.map create mode 100644 pip/doc/html/inherit_graph_19.md5 create mode 100644 pip/doc/html/inherit_graph_19.svg create mode 100644 pip/doc/html/inherit_graph_2.map create mode 100644 pip/doc/html/inherit_graph_2.md5 create mode 100644 pip/doc/html/inherit_graph_2.svg create mode 100644 pip/doc/html/inherit_graph_20.map create mode 100644 pip/doc/html/inherit_graph_20.md5 create mode 100644 pip/doc/html/inherit_graph_20.svg create mode 100644 pip/doc/html/inherit_graph_21.map create mode 100644 pip/doc/html/inherit_graph_21.md5 create mode 100644 pip/doc/html/inherit_graph_21.svg create mode 100644 pip/doc/html/inherit_graph_22.map create mode 100644 pip/doc/html/inherit_graph_22.md5 create mode 100644 pip/doc/html/inherit_graph_22.svg create mode 100644 pip/doc/html/inherit_graph_23.map create mode 100644 pip/doc/html/inherit_graph_23.md5 create mode 100644 pip/doc/html/inherit_graph_23.svg create mode 100644 pip/doc/html/inherit_graph_24.map create mode 100644 pip/doc/html/inherit_graph_24.md5 create mode 100644 pip/doc/html/inherit_graph_24.svg create mode 100644 pip/doc/html/inherit_graph_25.map create mode 100644 pip/doc/html/inherit_graph_25.md5 create mode 100644 pip/doc/html/inherit_graph_25.svg create mode 100644 pip/doc/html/inherit_graph_26.map create mode 100644 pip/doc/html/inherit_graph_26.md5 create mode 100644 pip/doc/html/inherit_graph_26.svg create mode 100644 pip/doc/html/inherit_graph_27.map create mode 100644 pip/doc/html/inherit_graph_27.md5 create mode 100644 pip/doc/html/inherit_graph_27.svg create mode 100644 pip/doc/html/inherit_graph_28.map create mode 100644 pip/doc/html/inherit_graph_28.md5 create mode 100644 pip/doc/html/inherit_graph_28.svg create mode 100644 pip/doc/html/inherit_graph_29.map create mode 100644 pip/doc/html/inherit_graph_29.md5 create mode 100644 pip/doc/html/inherit_graph_29.svg create mode 100644 pip/doc/html/inherit_graph_3.map create mode 100644 pip/doc/html/inherit_graph_3.md5 create mode 100644 pip/doc/html/inherit_graph_3.svg create mode 100644 pip/doc/html/inherit_graph_30.map create mode 100644 pip/doc/html/inherit_graph_30.md5 create mode 100644 pip/doc/html/inherit_graph_30.svg create mode 100644 pip/doc/html/inherit_graph_31.map create mode 100644 pip/doc/html/inherit_graph_31.md5 create mode 100644 pip/doc/html/inherit_graph_31.svg create mode 100644 pip/doc/html/inherit_graph_32.map create mode 100644 pip/doc/html/inherit_graph_32.md5 create mode 100644 pip/doc/html/inherit_graph_32.svg create mode 100644 pip/doc/html/inherit_graph_33.map create mode 100644 pip/doc/html/inherit_graph_33.md5 create mode 100644 pip/doc/html/inherit_graph_33.svg create mode 100644 pip/doc/html/inherit_graph_34.map create mode 100644 pip/doc/html/inherit_graph_34.md5 create mode 100644 pip/doc/html/inherit_graph_34.svg create mode 100644 pip/doc/html/inherit_graph_35.map create mode 100644 pip/doc/html/inherit_graph_35.md5 create mode 100644 pip/doc/html/inherit_graph_35.svg create mode 100644 pip/doc/html/inherit_graph_36.map create mode 100644 pip/doc/html/inherit_graph_36.md5 create mode 100644 pip/doc/html/inherit_graph_36.svg create mode 100644 pip/doc/html/inherit_graph_37.map create mode 100644 pip/doc/html/inherit_graph_37.md5 create mode 100644 pip/doc/html/inherit_graph_37.svg create mode 100644 pip/doc/html/inherit_graph_38.map create mode 100644 pip/doc/html/inherit_graph_38.md5 create mode 100644 pip/doc/html/inherit_graph_38.svg create mode 100644 pip/doc/html/inherit_graph_39.map create mode 100644 pip/doc/html/inherit_graph_39.md5 create mode 100644 pip/doc/html/inherit_graph_39.svg create mode 100644 pip/doc/html/inherit_graph_4.map create mode 100644 pip/doc/html/inherit_graph_4.md5 create mode 100644 pip/doc/html/inherit_graph_4.svg create mode 100644 pip/doc/html/inherit_graph_40.map create mode 100644 pip/doc/html/inherit_graph_40.md5 create mode 100644 pip/doc/html/inherit_graph_40.svg create mode 100644 pip/doc/html/inherit_graph_41.map create mode 100644 pip/doc/html/inherit_graph_41.md5 create mode 100644 pip/doc/html/inherit_graph_41.svg create mode 100644 pip/doc/html/inherit_graph_42.map create mode 100644 pip/doc/html/inherit_graph_42.md5 create mode 100644 pip/doc/html/inherit_graph_42.svg create mode 100644 pip/doc/html/inherit_graph_43.map create mode 100644 pip/doc/html/inherit_graph_43.md5 create mode 100644 pip/doc/html/inherit_graph_43.svg create mode 100644 pip/doc/html/inherit_graph_44.map create mode 100644 pip/doc/html/inherit_graph_44.md5 create mode 100644 pip/doc/html/inherit_graph_44.svg create mode 100644 pip/doc/html/inherit_graph_45.map create mode 100644 pip/doc/html/inherit_graph_45.md5 create mode 100644 pip/doc/html/inherit_graph_45.svg create mode 100644 pip/doc/html/inherit_graph_46.map create mode 100644 pip/doc/html/inherit_graph_46.md5 create mode 100644 pip/doc/html/inherit_graph_46.svg create mode 100644 pip/doc/html/inherit_graph_47.map create mode 100644 pip/doc/html/inherit_graph_47.md5 create mode 100644 pip/doc/html/inherit_graph_47.svg create mode 100644 pip/doc/html/inherit_graph_48.map create mode 100644 pip/doc/html/inherit_graph_48.md5 create mode 100644 pip/doc/html/inherit_graph_48.svg create mode 100644 pip/doc/html/inherit_graph_49.map create mode 100644 pip/doc/html/inherit_graph_49.md5 create mode 100644 pip/doc/html/inherit_graph_49.svg create mode 100644 pip/doc/html/inherit_graph_5.map create mode 100644 pip/doc/html/inherit_graph_5.md5 create mode 100644 pip/doc/html/inherit_graph_5.svg create mode 100644 pip/doc/html/inherit_graph_50.map create mode 100644 pip/doc/html/inherit_graph_50.md5 create mode 100644 pip/doc/html/inherit_graph_50.svg create mode 100644 pip/doc/html/inherit_graph_51.map create mode 100644 pip/doc/html/inherit_graph_51.md5 create mode 100644 pip/doc/html/inherit_graph_51.svg create mode 100644 pip/doc/html/inherit_graph_52.map create mode 100644 pip/doc/html/inherit_graph_52.md5 create mode 100644 pip/doc/html/inherit_graph_52.svg create mode 100644 pip/doc/html/inherit_graph_53.map create mode 100644 pip/doc/html/inherit_graph_53.md5 create mode 100644 pip/doc/html/inherit_graph_53.svg create mode 100644 pip/doc/html/inherit_graph_54.map create mode 100644 pip/doc/html/inherit_graph_54.md5 create mode 100644 pip/doc/html/inherit_graph_54.svg create mode 100644 pip/doc/html/inherit_graph_55.map create mode 100644 pip/doc/html/inherit_graph_55.md5 create mode 100644 pip/doc/html/inherit_graph_55.svg create mode 100644 pip/doc/html/inherit_graph_56.map create mode 100644 pip/doc/html/inherit_graph_56.md5 create mode 100644 pip/doc/html/inherit_graph_56.svg create mode 100644 pip/doc/html/inherit_graph_57.map create mode 100644 pip/doc/html/inherit_graph_57.md5 create mode 100644 pip/doc/html/inherit_graph_57.svg create mode 100644 pip/doc/html/inherit_graph_58.map create mode 100644 pip/doc/html/inherit_graph_58.md5 create mode 100644 pip/doc/html/inherit_graph_58.svg create mode 100644 pip/doc/html/inherit_graph_59.map create mode 100644 pip/doc/html/inherit_graph_59.md5 create mode 100644 pip/doc/html/inherit_graph_59.svg create mode 100644 pip/doc/html/inherit_graph_6.map create mode 100644 pip/doc/html/inherit_graph_6.md5 create mode 100644 pip/doc/html/inherit_graph_6.svg create mode 100644 pip/doc/html/inherit_graph_60.map create mode 100644 pip/doc/html/inherit_graph_60.md5 create mode 100644 pip/doc/html/inherit_graph_60.svg create mode 100644 pip/doc/html/inherit_graph_61.map create mode 100644 pip/doc/html/inherit_graph_61.md5 create mode 100644 pip/doc/html/inherit_graph_61.svg create mode 100644 pip/doc/html/inherit_graph_62.map create mode 100644 pip/doc/html/inherit_graph_62.md5 create mode 100644 pip/doc/html/inherit_graph_62.svg create mode 100644 pip/doc/html/inherit_graph_63.map create mode 100644 pip/doc/html/inherit_graph_63.md5 create mode 100644 pip/doc/html/inherit_graph_63.svg create mode 100644 pip/doc/html/inherit_graph_64.map create mode 100644 pip/doc/html/inherit_graph_64.md5 create mode 100644 pip/doc/html/inherit_graph_64.svg create mode 100644 pip/doc/html/inherit_graph_65.map create mode 100644 pip/doc/html/inherit_graph_65.md5 create mode 100644 pip/doc/html/inherit_graph_65.svg create mode 100644 pip/doc/html/inherit_graph_66.map create mode 100644 pip/doc/html/inherit_graph_66.md5 create mode 100644 pip/doc/html/inherit_graph_66.svg create mode 100644 pip/doc/html/inherit_graph_67.map create mode 100644 pip/doc/html/inherit_graph_67.md5 create mode 100644 pip/doc/html/inherit_graph_67.svg create mode 100644 pip/doc/html/inherit_graph_68.map create mode 100644 pip/doc/html/inherit_graph_68.md5 create mode 100644 pip/doc/html/inherit_graph_68.svg create mode 100644 pip/doc/html/inherit_graph_69.map create mode 100644 pip/doc/html/inherit_graph_69.md5 create mode 100644 pip/doc/html/inherit_graph_69.svg create mode 100644 pip/doc/html/inherit_graph_7.map create mode 100644 pip/doc/html/inherit_graph_7.md5 create mode 100644 pip/doc/html/inherit_graph_7.svg create mode 100644 pip/doc/html/inherit_graph_70.map create mode 100644 pip/doc/html/inherit_graph_70.md5 create mode 100644 pip/doc/html/inherit_graph_70.svg create mode 100644 pip/doc/html/inherit_graph_71.map create mode 100644 pip/doc/html/inherit_graph_71.md5 create mode 100644 pip/doc/html/inherit_graph_71.svg create mode 100644 pip/doc/html/inherit_graph_72.map create mode 100644 pip/doc/html/inherit_graph_72.md5 create mode 100644 pip/doc/html/inherit_graph_72.svg create mode 100644 pip/doc/html/inherit_graph_73.map create mode 100644 pip/doc/html/inherit_graph_73.md5 create mode 100644 pip/doc/html/inherit_graph_73.svg create mode 100644 pip/doc/html/inherit_graph_74.map create mode 100644 pip/doc/html/inherit_graph_74.md5 create mode 100644 pip/doc/html/inherit_graph_74.svg create mode 100644 pip/doc/html/inherit_graph_75.map create mode 100644 pip/doc/html/inherit_graph_75.md5 create mode 100644 pip/doc/html/inherit_graph_75.svg create mode 100644 pip/doc/html/inherit_graph_76.map create mode 100644 pip/doc/html/inherit_graph_76.md5 create mode 100644 pip/doc/html/inherit_graph_76.svg create mode 100644 pip/doc/html/inherit_graph_77.map create mode 100644 pip/doc/html/inherit_graph_77.md5 create mode 100644 pip/doc/html/inherit_graph_77.svg create mode 100644 pip/doc/html/inherit_graph_78.map create mode 100644 pip/doc/html/inherit_graph_78.md5 create mode 100644 pip/doc/html/inherit_graph_78.svg create mode 100644 pip/doc/html/inherit_graph_79.map create mode 100644 pip/doc/html/inherit_graph_79.md5 create mode 100644 pip/doc/html/inherit_graph_79.svg create mode 100644 pip/doc/html/inherit_graph_8.map create mode 100644 pip/doc/html/inherit_graph_8.md5 create mode 100644 pip/doc/html/inherit_graph_8.svg create mode 100644 pip/doc/html/inherit_graph_80.map create mode 100644 pip/doc/html/inherit_graph_80.md5 create mode 100644 pip/doc/html/inherit_graph_80.svg create mode 100644 pip/doc/html/inherit_graph_81.map create mode 100644 pip/doc/html/inherit_graph_81.md5 create mode 100644 pip/doc/html/inherit_graph_81.svg create mode 100644 pip/doc/html/inherit_graph_82.map create mode 100644 pip/doc/html/inherit_graph_82.md5 create mode 100644 pip/doc/html/inherit_graph_82.svg create mode 100644 pip/doc/html/inherit_graph_83.map create mode 100644 pip/doc/html/inherit_graph_83.md5 create mode 100644 pip/doc/html/inherit_graph_83.svg create mode 100644 pip/doc/html/inherit_graph_84.map create mode 100644 pip/doc/html/inherit_graph_84.md5 create mode 100644 pip/doc/html/inherit_graph_84.svg create mode 100644 pip/doc/html/inherit_graph_85.map create mode 100644 pip/doc/html/inherit_graph_85.md5 create mode 100644 pip/doc/html/inherit_graph_85.svg create mode 100644 pip/doc/html/inherit_graph_86.map create mode 100644 pip/doc/html/inherit_graph_86.md5 create mode 100644 pip/doc/html/inherit_graph_86.svg create mode 100644 pip/doc/html/inherit_graph_87.map create mode 100644 pip/doc/html/inherit_graph_87.md5 create mode 100644 pip/doc/html/inherit_graph_87.svg create mode 100644 pip/doc/html/inherit_graph_88.map create mode 100644 pip/doc/html/inherit_graph_88.md5 create mode 100644 pip/doc/html/inherit_graph_88.svg create mode 100644 pip/doc/html/inherit_graph_89.map create mode 100644 pip/doc/html/inherit_graph_89.md5 create mode 100644 pip/doc/html/inherit_graph_89.svg create mode 100644 pip/doc/html/inherit_graph_9.map create mode 100644 pip/doc/html/inherit_graph_9.md5 create mode 100644 pip/doc/html/inherit_graph_9.svg create mode 100644 pip/doc/html/inherit_graph_90.map create mode 100644 pip/doc/html/inherit_graph_90.md5 create mode 100644 pip/doc/html/inherit_graph_90.svg create mode 100644 pip/doc/html/inherits.html create mode 100644 pip/doc/html/jquery.js create mode 100644 pip/doc/html/namespace_p_i_cout_manipulators.html create mode 100644 pip/doc/html/namespacemembers.html create mode 100644 pip/doc/html/namespacemembers_enum.html create mode 100644 pip/doc/html/namespacemembers_eval.html create mode 100644 pip/doc/html/namespaces.html create mode 100644 pip/doc/html/namespaces.js create mode 100644 pip/doc/html/nav_f.png create mode 100644 pip/doc/html/nav_g.png create mode 100644 pip/doc/html/nav_h.png create mode 100644 pip/doc/html/navtree.css create mode 100644 pip/doc/html/navtree.js create mode 100644 pip/doc/html/navtreeindex0.js create mode 100644 pip/doc/html/navtreeindex1.js create mode 100644 pip/doc/html/navtreeindex2.js create mode 100644 pip/doc/html/navtreeindex3.js create mode 100644 pip/doc/html/navtreeindex4.js create mode 100644 pip/doc/html/navtreeindex5.js create mode 100644 pip/doc/html/navtreeindex6.js create mode 100644 pip/doc/html/open.png create mode 100644 pip/doc/html/packet_detection.png create mode 100644 pip/doc/html/pages.html create mode 100644 pip/doc/html/pibinarylog_8h.html create mode 100644 pip/doc/html/pibinarylog_8h.js create mode 100644 pip/doc/html/pibytearray_8h.html create mode 100644 pip/doc/html/pibytearray_8h.js create mode 100644 pip/doc/html/pichar_8h.html create mode 100644 pip/doc/html/pichar_8h.js create mode 100644 pip/doc/html/picli_8h.html create mode 100644 pip/doc/html/picodeinfo_8h.html create mode 100644 pip/doc/html/picodeparser_8h.html create mode 100644 pip/doc/html/picollection_8h.html create mode 100644 pip/doc/html/picollection_8h.js create mode 100644 pip/doc/html/piconfig.png create mode 100644 pip/doc/html/piconfig_8h.html create mode 100644 pip/doc/html/piconfig_8h.js create mode 100644 pip/doc/html/piconnection.png create mode 100644 pip/doc/html/piconnection_8h.html create mode 100644 pip/doc/html/piconnection_8h.js create mode 100644 pip/doc/html/piconnection_conf.png create mode 100644 pip/doc/html/piconnection_filters.png create mode 100644 pip/doc/html/piconnection_senders.png create mode 100644 pip/doc/html/piconsole_8h.html create mode 100644 pip/doc/html/piconsole_8h.js create mode 100644 pip/doc/html/piconsole_layout.png create mode 100644 pip/doc/html/picontainers_8h.html create mode 100644 pip/doc/html/picontainers_8h.js create mode 100644 pip/doc/html/picrc_8h.html create mode 100644 pip/doc/html/pideque_8h.html create mode 100644 pip/doc/html/pidiagnostics_8h.html create mode 100644 pip/doc/html/piethernet_8h.html create mode 100644 pip/doc/html/piethernet_8h.js create mode 100644 pip/doc/html/pievaluator_8h.html create mode 100644 pip/doc/html/pievaluator_8h.js create mode 100644 pip/doc/html/pifile_8h.html create mode 100644 pip/doc/html/piincludes_8h.html create mode 100644 pip/doc/html/piincludes_8h.js create mode 100644 pip/doc/html/piinit_8h.html create mode 100644 pip/doc/html/piiodevice_8h.html create mode 100644 pip/doc/html/piiodevice_8h.js create mode 100644 pip/doc/html/pikbdlistener_8h.html create mode 100644 pip/doc/html/pikbdlistener_8h.js create mode 100644 pip/doc/html/pimap_8h.html create mode 100644 pip/doc/html/pimath_8h.html create mode 100644 pip/doc/html/pimath_8h.js create mode 100644 pip/doc/html/pimutex_8h.html create mode 100644 pip/doc/html/piobject_8h.html create mode 100644 pip/doc/html/piobject_8h.js create mode 100644 pip/doc/html/pip.qhp create mode 100644 pip/doc/html/pipacketextractor_8h.html create mode 100644 pip/doc/html/pipacketextractor_8h.js create mode 100644 pip/doc/html/pipeer_8h.html create mode 100644 pip/doc/html/piprocess_8h.html create mode 100644 pip/doc/html/piprotocol_8h.html create mode 100644 pip/doc/html/piprotocol_8h.js create mode 100644 pip/doc/html/piserial_8h.html create mode 100644 pip/doc/html/piserial_8h.js create mode 100644 pip/doc/html/piset_8h.html create mode 100644 pip/doc/html/pisignals_8h.html create mode 100644 pip/doc/html/pistack_8h.html create mode 100644 pip/doc/html/pistatemachine_8h.html create mode 100644 pip/doc/html/pistring_8h.html create mode 100644 pip/doc/html/pistring_8h.js create mode 100644 pip/doc/html/pithread_8h.html create mode 100644 pip/doc/html/pithread_8h.js create mode 100644 pip/doc/html/pitime_8h.html create mode 100644 pip/doc/html/pitime_8h.js create mode 100644 pip/doc/html/pitimer_8h.html create mode 100644 pip/doc/html/pitimer_8h.js create mode 100644 pip/doc/html/piusb_8h.html create mode 100644 pip/doc/html/pivariant_8h.html create mode 100644 pip/doc/html/pivariant_8h.js create mode 100644 pip/doc/html/pivector_8h.html create mode 100644 pip/doc/html/pivector_8h.js create mode 100644 pip/doc/html/resize.js create mode 100644 pip/doc/html/search/all_0.html create mode 100644 pip/doc/html/search/all_0.js create mode 100644 pip/doc/html/search/all_1.html create mode 100644 pip/doc/html/search/all_1.js create mode 100644 pip/doc/html/search/all_10.html create mode 100644 pip/doc/html/search/all_10.js create mode 100644 pip/doc/html/search/all_11.html create mode 100644 pip/doc/html/search/all_11.js create mode 100644 pip/doc/html/search/all_12.html create mode 100644 pip/doc/html/search/all_12.js create mode 100644 pip/doc/html/search/all_13.html create mode 100644 pip/doc/html/search/all_13.js create mode 100644 pip/doc/html/search/all_14.html create mode 100644 pip/doc/html/search/all_14.js create mode 100644 pip/doc/html/search/all_15.html create mode 100644 pip/doc/html/search/all_15.js create mode 100644 pip/doc/html/search/all_16.html create mode 100644 pip/doc/html/search/all_16.js create mode 100644 pip/doc/html/search/all_17.html create mode 100644 pip/doc/html/search/all_17.js create mode 100644 pip/doc/html/search/all_18.html create mode 100644 pip/doc/html/search/all_18.js create mode 100644 pip/doc/html/search/all_2.html create mode 100644 pip/doc/html/search/all_2.js create mode 100644 pip/doc/html/search/all_3.html create mode 100644 pip/doc/html/search/all_3.js create mode 100644 pip/doc/html/search/all_4.html create mode 100644 pip/doc/html/search/all_4.js create mode 100644 pip/doc/html/search/all_5.html create mode 100644 pip/doc/html/search/all_5.js create mode 100644 pip/doc/html/search/all_6.html create mode 100644 pip/doc/html/search/all_6.js create mode 100644 pip/doc/html/search/all_7.html create mode 100644 pip/doc/html/search/all_7.js create mode 100644 pip/doc/html/search/all_8.html create mode 100644 pip/doc/html/search/all_8.js create mode 100644 pip/doc/html/search/all_9.html create mode 100644 pip/doc/html/search/all_9.js create mode 100644 pip/doc/html/search/all_a.html create mode 100644 pip/doc/html/search/all_a.js create mode 100644 pip/doc/html/search/all_b.html create mode 100644 pip/doc/html/search/all_b.js create mode 100644 pip/doc/html/search/all_c.html create mode 100644 pip/doc/html/search/all_c.js create mode 100644 pip/doc/html/search/all_d.html create mode 100644 pip/doc/html/search/all_d.js create mode 100644 pip/doc/html/search/all_e.html create mode 100644 pip/doc/html/search/all_e.js create mode 100644 pip/doc/html/search/all_f.html create mode 100644 pip/doc/html/search/all_f.js create mode 100644 pip/doc/html/search/classes_0.html create mode 100644 pip/doc/html/search/classes_0.js create mode 100644 pip/doc/html/search/classes_1.html create mode 100644 pip/doc/html/search/classes_1.js create mode 100644 pip/doc/html/search/classes_2.html create mode 100644 pip/doc/html/search/classes_2.js create mode 100644 pip/doc/html/search/classes_3.html create mode 100644 pip/doc/html/search/classes_3.js create mode 100644 pip/doc/html/search/classes_4.html create mode 100644 pip/doc/html/search/classes_4.js create mode 100644 pip/doc/html/search/classes_5.html create mode 100644 pip/doc/html/search/classes_5.js create mode 100644 pip/doc/html/search/classes_6.html create mode 100644 pip/doc/html/search/classes_6.js create mode 100644 pip/doc/html/search/close.png create mode 100644 pip/doc/html/search/defines_0.html create mode 100644 pip/doc/html/search/defines_0.js create mode 100644 pip/doc/html/search/defines_1.html create mode 100644 pip/doc/html/search/defines_1.js create mode 100644 pip/doc/html/search/defines_2.html create mode 100644 pip/doc/html/search/defines_2.js create mode 100644 pip/doc/html/search/defines_3.html create mode 100644 pip/doc/html/search/defines_3.js create mode 100644 pip/doc/html/search/defines_4.html create mode 100644 pip/doc/html/search/defines_4.js create mode 100644 pip/doc/html/search/defines_5.html create mode 100644 pip/doc/html/search/defines_5.js create mode 100644 pip/doc/html/search/defines_6.html create mode 100644 pip/doc/html/search/defines_6.js create mode 100644 pip/doc/html/search/defines_7.html create mode 100644 pip/doc/html/search/defines_7.js create mode 100644 pip/doc/html/search/defines_8.html create mode 100644 pip/doc/html/search/defines_8.js create mode 100644 pip/doc/html/search/enums_0.html create mode 100644 pip/doc/html/search/enums_0.js create mode 100644 pip/doc/html/search/enums_1.html create mode 100644 pip/doc/html/search/enums_1.js create mode 100644 pip/doc/html/search/enums_2.html create mode 100644 pip/doc/html/search/enums_2.js create mode 100644 pip/doc/html/search/enums_3.html create mode 100644 pip/doc/html/search/enums_3.js create mode 100644 pip/doc/html/search/enums_4.html create mode 100644 pip/doc/html/search/enums_4.js create mode 100644 pip/doc/html/search/enums_5.html create mode 100644 pip/doc/html/search/enums_5.js create mode 100644 pip/doc/html/search/enums_6.html create mode 100644 pip/doc/html/search/enums_6.js create mode 100644 pip/doc/html/search/enumvalues_0.html create mode 100644 pip/doc/html/search/enumvalues_0.js create mode 100644 pip/doc/html/search/enumvalues_1.html create mode 100644 pip/doc/html/search/enumvalues_1.js create mode 100644 pip/doc/html/search/enumvalues_10.html create mode 100644 pip/doc/html/search/enumvalues_10.js create mode 100644 pip/doc/html/search/enumvalues_11.html create mode 100644 pip/doc/html/search/enumvalues_11.js create mode 100644 pip/doc/html/search/enumvalues_12.html create mode 100644 pip/doc/html/search/enumvalues_12.js create mode 100644 pip/doc/html/search/enumvalues_13.html create mode 100644 pip/doc/html/search/enumvalues_13.js create mode 100644 pip/doc/html/search/enumvalues_14.html create mode 100644 pip/doc/html/search/enumvalues_14.js create mode 100644 pip/doc/html/search/enumvalues_2.html create mode 100644 pip/doc/html/search/enumvalues_2.js create mode 100644 pip/doc/html/search/enumvalues_3.html create mode 100644 pip/doc/html/search/enumvalues_3.js create mode 100644 pip/doc/html/search/enumvalues_4.html create mode 100644 pip/doc/html/search/enumvalues_4.js create mode 100644 pip/doc/html/search/enumvalues_5.html create mode 100644 pip/doc/html/search/enumvalues_5.js create mode 100644 pip/doc/html/search/enumvalues_6.html create mode 100644 pip/doc/html/search/enumvalues_6.js create mode 100644 pip/doc/html/search/enumvalues_7.html create mode 100644 pip/doc/html/search/enumvalues_7.js create mode 100644 pip/doc/html/search/enumvalues_8.html create mode 100644 pip/doc/html/search/enumvalues_8.js create mode 100644 pip/doc/html/search/enumvalues_9.html create mode 100644 pip/doc/html/search/enumvalues_9.js create mode 100644 pip/doc/html/search/enumvalues_a.html create mode 100644 pip/doc/html/search/enumvalues_a.js create mode 100644 pip/doc/html/search/enumvalues_b.html create mode 100644 pip/doc/html/search/enumvalues_b.js create mode 100644 pip/doc/html/search/enumvalues_c.html create mode 100644 pip/doc/html/search/enumvalues_c.js create mode 100644 pip/doc/html/search/enumvalues_d.html create mode 100644 pip/doc/html/search/enumvalues_d.js create mode 100644 pip/doc/html/search/enumvalues_e.html create mode 100644 pip/doc/html/search/enumvalues_e.js create mode 100644 pip/doc/html/search/enumvalues_f.html create mode 100644 pip/doc/html/search/enumvalues_f.js create mode 100644 pip/doc/html/search/files_0.html create mode 100644 pip/doc/html/search/files_0.js create mode 100644 pip/doc/html/search/functions_0.html create mode 100644 pip/doc/html/search/functions_0.js create mode 100644 pip/doc/html/search/functions_1.html create mode 100644 pip/doc/html/search/functions_1.js create mode 100644 pip/doc/html/search/functions_10.html create mode 100644 pip/doc/html/search/functions_10.js create mode 100644 pip/doc/html/search/functions_11.html create mode 100644 pip/doc/html/search/functions_11.js create mode 100644 pip/doc/html/search/functions_12.html create mode 100644 pip/doc/html/search/functions_12.js create mode 100644 pip/doc/html/search/functions_13.html create mode 100644 pip/doc/html/search/functions_13.js create mode 100644 pip/doc/html/search/functions_14.html create mode 100644 pip/doc/html/search/functions_14.js create mode 100644 pip/doc/html/search/functions_15.html create mode 100644 pip/doc/html/search/functions_15.js create mode 100644 pip/doc/html/search/functions_16.html create mode 100644 pip/doc/html/search/functions_16.js create mode 100644 pip/doc/html/search/functions_17.html create mode 100644 pip/doc/html/search/functions_17.js create mode 100644 pip/doc/html/search/functions_2.html create mode 100644 pip/doc/html/search/functions_2.js create mode 100644 pip/doc/html/search/functions_3.html create mode 100644 pip/doc/html/search/functions_3.js create mode 100644 pip/doc/html/search/functions_4.html create mode 100644 pip/doc/html/search/functions_4.js create mode 100644 pip/doc/html/search/functions_5.html create mode 100644 pip/doc/html/search/functions_5.js create mode 100644 pip/doc/html/search/functions_6.html create mode 100644 pip/doc/html/search/functions_6.js create mode 100644 pip/doc/html/search/functions_7.html create mode 100644 pip/doc/html/search/functions_7.js create mode 100644 pip/doc/html/search/functions_8.html create mode 100644 pip/doc/html/search/functions_8.js create mode 100644 pip/doc/html/search/functions_9.html create mode 100644 pip/doc/html/search/functions_9.js create mode 100644 pip/doc/html/search/functions_a.html create mode 100644 pip/doc/html/search/functions_a.js create mode 100644 pip/doc/html/search/functions_b.html create mode 100644 pip/doc/html/search/functions_b.js create mode 100644 pip/doc/html/search/functions_c.html create mode 100644 pip/doc/html/search/functions_c.js create mode 100644 pip/doc/html/search/functions_d.html create mode 100644 pip/doc/html/search/functions_d.js create mode 100644 pip/doc/html/search/functions_e.html create mode 100644 pip/doc/html/search/functions_e.js create mode 100644 pip/doc/html/search/functions_f.html create mode 100644 pip/doc/html/search/functions_f.js create mode 100644 pip/doc/html/search/mag_sel.png create mode 100644 pip/doc/html/search/namespaces_0.html create mode 100644 pip/doc/html/search/namespaces_0.js create mode 100644 pip/doc/html/search/nomatches.html create mode 100644 pip/doc/html/search/pages_0.html create mode 100644 pip/doc/html/search/pages_0.js create mode 100644 pip/doc/html/search/pages_1.html create mode 100644 pip/doc/html/search/pages_1.js create mode 100644 pip/doc/html/search/pages_2.html create mode 100644 pip/doc/html/search/pages_2.js create mode 100644 pip/doc/html/search/pages_3.html create mode 100644 pip/doc/html/search/pages_3.js create mode 100644 pip/doc/html/search/related_0.html create mode 100644 pip/doc/html/search/related_0.js create mode 100644 pip/doc/html/search/related_1.html create mode 100644 pip/doc/html/search/related_1.js create mode 100644 pip/doc/html/search/related_2.html create mode 100644 pip/doc/html/search/related_2.js create mode 100644 pip/doc/html/search/related_3.html create mode 100644 pip/doc/html/search/related_3.js create mode 100644 pip/doc/html/search/related_4.html create mode 100644 pip/doc/html/search/related_4.js create mode 100644 pip/doc/html/search/related_5.html create mode 100644 pip/doc/html/search/related_5.js create mode 100644 pip/doc/html/search/related_6.html create mode 100644 pip/doc/html/search/related_6.js create mode 100644 pip/doc/html/search/related_7.html create mode 100644 pip/doc/html/search/related_7.js create mode 100644 pip/doc/html/search/related_8.html create mode 100644 pip/doc/html/search/related_8.js create mode 100644 pip/doc/html/search/search.css create mode 100644 pip/doc/html/search/search.js create mode 100644 pip/doc/html/search/search_l.png create mode 100644 pip/doc/html/search/search_m.png create mode 100644 pip/doc/html/search/search_r.png create mode 100644 pip/doc/html/search/typedefs_0.html create mode 100644 pip/doc/html/search/typedefs_0.js create mode 100644 pip/doc/html/search/typedefs_1.html create mode 100644 pip/doc/html/search/typedefs_1.js create mode 100644 pip/doc/html/search/variables_0.html create mode 100644 pip/doc/html/search/variables_0.js create mode 100644 pip/doc/html/search/variables_1.html create mode 100644 pip/doc/html/search/variables_1.js create mode 100644 pip/doc/html/search/variables_2.html create mode 100644 pip/doc/html/search/variables_2.js create mode 100644 pip/doc/html/search/variables_3.html create mode 100644 pip/doc/html/search/variables_3.js create mode 100644 pip/doc/html/search/variables_4.html create mode 100644 pip/doc/html/search/variables_4.js create mode 100644 pip/doc/html/search/variables_5.html create mode 100644 pip/doc/html/search/variables_5.js create mode 100644 pip/doc/html/search/variables_6.html create mode 100644 pip/doc/html/search/variables_6.js create mode 100644 pip/doc/html/search/variables_7.html create mode 100644 pip/doc/html/search/variables_7.js create mode 100644 pip/doc/html/search/variables_8.html create mode 100644 pip/doc/html/search/variables_8.js create mode 100644 pip/doc/html/search/variables_9.html create mode 100644 pip/doc/html/search/variables_9.js create mode 100644 pip/doc/html/search/variables_a.html create mode 100644 pip/doc/html/search/variables_a.js create mode 100644 pip/doc/html/search/variables_b.html create mode 100644 pip/doc/html/search/variables_b.js create mode 100644 pip/doc/html/search/variables_c.html create mode 100644 pip/doc/html/search/variables_c.js create mode 100644 pip/doc/html/struct_p_i_byte_array_1_1_raw_data-members.html create mode 100644 pip/doc/html/struct_p_i_byte_array_1_1_raw_data.html create mode 100644 pip/doc/html/struct_p_i_byte_array_1_1_raw_data.js create mode 100644 pip/doc/html/struct_p_i_ethernet_1_1_interface-members.html create mode 100644 pip/doc/html/struct_p_i_ethernet_1_1_interface.html create mode 100644 pip/doc/html/struct_p_i_ethernet_1_1_interface.js create mode 100644 pip/doc/html/struct_p_i_state_machine_1_1_rule-members.html create mode 100644 pip/doc/html/struct_p_i_state_machine_1_1_rule.html create mode 100644 pip/doc/html/struct_p_i_state_machine_1_1_rule.js create mode 100644 pip/doc/html/struct_p_i_state_machine_1_1_state-members.html create mode 100644 pip/doc/html/struct_p_i_state_machine_1_1_state.html create mode 100644 pip/doc/html/struct_p_i_state_machine_1_1_state.js create mode 100644 pip/doc/html/struct_transfer_function-members.html create mode 100644 pip/doc/html/struct_transfer_function.html create mode 100644 pip/doc/html/svgpan.js create mode 100644 pip/doc/html/sync_off.png create mode 100644 pip/doc/html/sync_on.png create mode 100644 pip/doc/html/tab_a.png create mode 100644 pip/doc/html/tab_b.png create mode 100644 pip/doc/html/tab_h.png create mode 100644 pip/doc/html/tab_s.png create mode 100644 pip/doc/html/tabs.css create mode 100644 pip/doc/html/using_advanced.html create mode 100644 pip/doc/html/using_basic.html create mode 100644 pip/doc/images/events_handlers.png create mode 100644 pip/doc/images/packet_detection.png create mode 100644 pip/doc/images/piconfig.png create mode 100644 pip/doc/images/piconnection.png create mode 100644 pip/doc/images/piconnection_conf.png create mode 100644 pip/doc/images/piconnection_filters.png create mode 100644 pip/doc/images/piconnection_senders.png create mode 100644 pip/doc/images/piconsole_layout.png create mode 100644 pip/doc/packet_detection.odp create mode 100644 pip/doc/piconnection.odg create mode 100644 pip/doc/piconnection_conf.odg create mode 100644 pip/doc/piconnection_filters.odg create mode 100644 pip/doc/piconnection_senders.odg create mode 100644 pip/doc/piconsole_layout.odp create mode 100644 pip/libpip.dll create mode 100644 pip/main.cpp create mode 100644 pip/main_.cpp create mode 100644 pip/main_tcp_server.cpp create mode 100644 pip/make_lib.bat create mode 100644 pip/make_lib_usb.bat create mode 100644 pip/pifilemanager.cpp create mode 100644 pip/pifilemanager.h create mode 100644 pip/pip.cbp create mode 100644 pip/pip.kdev4 create mode 100644 pip/pip/.gitignore create mode 100644 pip/pip/AUTHORS.txt create mode 100644 pip/pip/CMakeLists.txt create mode 100644 pip/pip/Doxyfile create mode 100644 pip/pip/FindPIP.cmake create mode 100644 pip/pip/LICENSE.txt create mode 100644 pip/pip/clean create mode 100644 pip/pip/clean.bat create mode 100644 pip/pip/main.cpp create mode 100644 pip/pip/main_.cpp create mode 100644 pip/pip/main_tcp_server.cpp create mode 100644 pip/pip/make_lib.bat create mode 100644 pip/pip/make_lib_usb.bat create mode 100644 pip/pip/pip.cbp create mode 100644 pip/pip/pip.kdev4 create mode 100644 pip/pip/pip_resource_win.rc create mode 100755 pip/pip/src/pip.h create mode 100755 pip/pip/src/pip_export.h create mode 100644 pip/pip/src/pip_version_str.h create mode 100644 pip/pip/src/piplatform.h create mode 100644 pip/pip/src/piversion.h create mode 100644 pip/pip_resource_win.rc create mode 100644 pip/pip_test.exe create mode 100755 pip/src/_unsused/pigeometry.h create mode 100755 pip/src/_unsused/pivariable.cpp create mode 100644 pip/src/_unsused/pivariable.cpp_ create mode 100755 pip/src/_unsused/pivariable.h create mode 100644 pip/src/_unsused/pivariable.h_ create mode 100755 pip/src/code/picodeinfo.cpp create mode 100755 pip/src/code/picodeinfo.h create mode 100755 pip/src/code/picodeparser.cpp create mode 100755 pip/src/code/picodeparser.h create mode 100755 pip/src/containers/picontainers.cpp create mode 100755 pip/src/containers/picontainers.h create mode 100755 pip/src/containers/pideque.h create mode 100644 pip/src/containers/pimap.h create mode 100755 pip/src/containers/piqueue.h create mode 100644 pip/src/containers/piset.h create mode 100755 pip/src/containers/pistack.h create mode 100755 pip/src/containers/pivector.h create mode 100755 pip/src/core/pibitarray.h create mode 100755 pip/src/core/pibytearray.cpp create mode 100755 pip/src/core/pibytearray.h create mode 100755 pip/src/core/pichar.h create mode 100755 pip/src/core/picli.cpp create mode 100755 pip/src/core/picli.h create mode 100755 pip/src/core/picollection.cpp create mode 100755 pip/src/core/picollection.h create mode 100644 pip/src/core/picout.cpp create mode 100644 pip/src/core/picout.h create mode 100644 pip/src/core/piflags.h create mode 100755 pip/src/core/piincludes.cpp create mode 100755 pip/src/core/piincludes.h create mode 100644 pip/src/core/piinit.cpp create mode 100644 pip/src/core/piinit.h create mode 100755 pip/src/core/piobject.cpp create mode 100755 pip/src/core/piobject.h create mode 100755 pip/src/core/pistatemachine.h create mode 100755 pip/src/core/pistring.cpp create mode 100755 pip/src/core/pistring.h create mode 100755 pip/src/core/pitime.cpp create mode 100755 pip/src/core/pitime.h create mode 100755 pip/src/core/pivariant.cpp create mode 100755 pip/src/core/pivariant.h create mode 100644 pip/src/io/pibinarylog.cpp create mode 100644 pip/src/io/pibinarylog.h create mode 100755 pip/src/io/piconfig.cpp create mode 100755 pip/src/io/piconfig.h create mode 100755 pip/src/io/piconnection.cpp create mode 100755 pip/src/io/piconnection.h create mode 100644 pip/src/io/pidatatransfer.cpp create mode 100644 pip/src/io/pidatatransfer.h create mode 100755 pip/src/io/pidiagnostics.cpp create mode 100755 pip/src/io/pidiagnostics.h create mode 100755 pip/src/io/pidir.cpp create mode 100755 pip/src/io/pidir.h create mode 100755 pip/src/io/piethernet.cpp create mode 100755 pip/src/io/piethernet.h create mode 100755 pip/src/io/pifile.cpp create mode 100755 pip/src/io/pifile.h create mode 100644 pip/src/io/pifiletransfer.cpp create mode 100644 pip/src/io/pifiletransfer.h create mode 100755 pip/src/io/piiodevice.cpp create mode 100755 pip/src/io/piiodevice.h create mode 100644 pip/src/io/piiostring.cpp create mode 100644 pip/src/io/piiostring.h create mode 100755 pip/src/io/pimultiprotocol.cpp create mode 100755 pip/src/io/pimultiprotocol.h create mode 100755 pip/src/io/pipacketextractor.cpp create mode 100755 pip/src/io/pipacketextractor.h create mode 100755 pip/src/io/pipeer.cpp create mode 100755 pip/src/io/pipeer.h create mode 100755 pip/src/io/piprotocol.cpp create mode 100755 pip/src/io/piprotocol.h create mode 100755 pip/src/io/piserial.cpp create mode 100755 pip/src/io/piserial.h create mode 100755 pip/src/io/piusb.cpp create mode 100755 pip/src/io/piusb.h create mode 100755 pip/src/math/picrc.h create mode 100755 pip/src/math/pievaluator.cpp create mode 100755 pip/src/math/pievaluator.h create mode 100644 pip/src/math/pifft.cpp create mode 100644 pip/src/math/pifft.h create mode 100644 pip/src/math/pimath.h create mode 100644 pip/src/math/pimathbase.cpp create mode 100644 pip/src/math/pimathbase.h create mode 100644 pip/src/math/pimathmatrix.h create mode 100644 pip/src/math/pimathsolver.cpp create mode 100644 pip/src/math/pimathsolver.h create mode 100644 pip/src/math/pimathvector.h create mode 100644 pip/src/math/pistatistic.h create mode 100755 pip/src/pip.h create mode 100755 pip/src/pip_export.h create mode 100644 pip/src/pip_version_str.h create mode 100644 pip/src/piplatform.h create mode 100644 pip/src/piversion.h create mode 100644 pip/src/system/.piscreen.cpp.kate-swp create mode 100755 pip/src/system/picodec.cpp create mode 100755 pip/src/system/picodec.h create mode 100755 pip/src/system/piconsole.cpp create mode 100755 pip/src/system/piconsole.h create mode 100755 pip/src/system/pikbdlistener.cpp create mode 100755 pip/src/system/pikbdlistener.h create mode 100755 pip/src/system/pimonitor.cpp create mode 100755 pip/src/system/pimonitor.h create mode 100755 pip/src/system/piprocess.cpp create mode 100755 pip/src/system/piprocess.h create mode 100644 pip/src/system/piscreen.cpp create mode 100644 pip/src/system/piscreen.h create mode 100755 pip/src/system/pisignals.cpp create mode 100755 pip/src/system/pisignals.h create mode 100644 pip/src/system/pisysteminfo.cpp create mode 100644 pip/src/system/pisysteminfo.h create mode 100755 pip/src/system/pisystemmonitor.cpp create mode 100755 pip/src/system/pisystemmonitor.h create mode 100755 pip/src/system/pisystemtests.cpp create mode 100755 pip/src/system/pisystemtests.h create mode 100755 pip/src/thread/pimutex.cpp create mode 100755 pip/src/thread/pimutex.h create mode 100755 pip/src/thread/pithread.cpp create mode 100755 pip/src/thread/pithread.h create mode 100755 pip/src/thread/pitimer.cpp create mode 100755 pip/src/thread/pitimer.h create mode 100644 pip/test.txt create mode 100755 pip/utils/code_model_generator/CMakeLists.txt create mode 100755 pip/utils/code_model_generator/main.cpp create mode 100755 pip/utils/code_model_generator/main_test.cpp create mode 100644 pip/utils/code_model_generator/pip_cmg.exe create mode 100755 pip/utils/code_model_generator/test.cpp create mode 100755 pip/utils/code_model_generator/test.h create mode 100755 pip/utils/remote_console/CMakeLists.txt create mode 100755 pip/utils/remote_console/main.cpp create mode 100644 pip/utils/remote_console/pip_remote_console.exe create mode 100644 pip/utils/system_daemon/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 pip/utils/system_daemon/CMakeFiles/pisd.dir/CXX.includecache create mode 100644 pip/utils/system_daemon/CMakeFiles/pisd.dir/DependInfo.cmake create mode 100644 pip/utils/system_daemon/CMakeFiles/pisd.dir/build.make create mode 100644 pip/utils/system_daemon/CMakeFiles/pisd.dir/cmake_clean.cmake create mode 100644 pip/utils/system_daemon/CMakeFiles/pisd.dir/daemon.cpp.obj create mode 100644 pip/utils/system_daemon/CMakeFiles/pisd.dir/depend.internal create mode 100644 pip/utils/system_daemon/CMakeFiles/pisd.dir/depend.make create mode 100644 pip/utils/system_daemon/CMakeFiles/pisd.dir/file_manager.cpp.obj create mode 100644 pip/utils/system_daemon/CMakeFiles/pisd.dir/flags.make create mode 100644 pip/utils/system_daemon/CMakeFiles/pisd.dir/includes_CXX.rsp create mode 100644 pip/utils/system_daemon/CMakeFiles/pisd.dir/link.txt create mode 100644 pip/utils/system_daemon/CMakeFiles/pisd.dir/main.cpp.obj create mode 100644 pip/utils/system_daemon/CMakeFiles/pisd.dir/objects1.rsp create mode 100644 pip/utils/system_daemon/CMakeFiles/pisd.dir/progress.make create mode 100644 pip/utils/system_daemon/CMakeFiles/progress.marks create mode 100755 pip/utils/system_daemon/CMakeLists.txt create mode 100644 pip/utils/system_daemon/Makefile create mode 100644 pip/utils/system_daemon/cmake_install.cmake create mode 100644 pip/utils/system_daemon/daemon.cpp create mode 100644 pip/utils/system_daemon/daemon.h create mode 100644 pip/utils/system_daemon/file_manager.cpp create mode 100644 pip/utils/system_daemon/file_manager.h create mode 100755 pip/utils/system_daemon/main.cpp create mode 100644 pip/utils/system_daemon/pisd.exe create mode 100644 pip/utils/system_daemon/shared.h create mode 100755 pip/utils/system_test/CMakeLists.txt create mode 100755 pip/utils/system_test/main.cpp create mode 100644 pip/utils/system_test/pip_system_test.exe create mode 100644 pip_0.4.0_r5.7z create mode 100644 piqt/.kdev4/piqt.kdev4 create mode 100644 piqt/CMakeLists.txt create mode 100644 piqt/clean create mode 100644 piqt/clean.bat create mode 100644 piqt/make_lib.bat create mode 100644 piqt/piqt.cpp create mode 100644 piqt/piqt.h create mode 100644 piqt/piqt.kdev4 create mode 100644 piqt_tools/.kdev4/piqt_tools.kdev4 create mode 100644 piqt_tools/CMakeLists.txt create mode 100644 piqt_tools/LEDOS_devices.dat create mode 100644 piqt_tools/ccm.cpp create mode 100644 piqt_tools/ccm.h create mode 100644 piqt_tools/clean create mode 100644 piqt_tools/clean.bat create mode 100644 piqt_tools/gpio.conf create mode 100644 piqt_tools/icons/Apps-accessories-calculator-icon.png create mode 100644 piqt_tools/icons/DALI-designer.png create mode 100644 piqt_tools/icons/alpha.png create mode 100644 piqt_tools/icons/application-exit.png create mode 100644 piqt_tools/icons/applications-engineering.png create mode 100644 piqt_tools/icons/archive-extract.png create mode 100644 piqt_tools/icons/archive-insert-directory.png create mode 100644 piqt_tools/icons/archive-insert.png create mode 100644 piqt_tools/icons/arrow-down.png create mode 100644 piqt_tools/icons/arrow-up.png create mode 100644 piqt_tools/icons/axis_x.png create mode 100644 piqt_tools/icons/axis_y.png create mode 100644 piqt_tools/icons/case-sensitive.png create mode 100644 piqt_tools/icons/checkbox-unchecked.png create mode 100644 piqt_tools/icons/checkbox.png create mode 100644 piqt_tools/icons/clients.png create mode 100644 piqt_tools/icons/close.png create mode 100644 piqt_tools/icons/code-error.png create mode 100644 piqt_tools/icons/code-function.png create mode 100644 piqt_tools/icons/code-keyword.png create mode 100644 piqt_tools/icons/code-parents.png create mode 100644 piqt_tools/icons/code-property.png create mode 100644 piqt_tools/icons/code-signal.png create mode 100644 piqt_tools/icons/code-struct.png create mode 100644 piqt_tools/icons/code-union.png create mode 100644 piqt_tools/icons/code-variable.png create mode 100644 piqt_tools/icons/code-word.png create mode 100644 piqt_tools/icons/configure-.png create mode 100644 piqt_tools/icons/configure.png create mode 100644 piqt_tools/icons/database.png create mode 100644 piqt_tools/icons/debug-run.png create mode 100644 piqt_tools/icons/designer-qt4.png create mode 100644 piqt_tools/icons/dialog-close.png create mode 100644 piqt_tools/icons/dialog-ok-apply.png create mode 100644 piqt_tools/icons/dialog-warning.png create mode 100644 piqt_tools/icons/disabled.png create mode 100644 piqt_tools/icons/distribute-horizontal-margin.png create mode 100644 piqt_tools/icons/document-edit.png create mode 100644 piqt_tools/icons/document-new.png create mode 100644 piqt_tools/icons/document-open.png create mode 100644 piqt_tools/icons/document-print.png create mode 100644 piqt_tools/icons/document-save-.png create mode 100644 piqt_tools/icons/document-save-all.png create mode 100644 piqt_tools/icons/document-save-as.png create mode 100644 piqt_tools/icons/document-save.png create mode 100644 piqt_tools/icons/edit-clear-.png create mode 100644 piqt_tools/icons/edit-clear-locationbar-rtl.png create mode 100644 piqt_tools/icons/edit-clear.png create mode 100644 piqt_tools/icons/edit-copy.png create mode 100644 piqt_tools/icons/edit-cut.png create mode 100644 piqt_tools/icons/edit-delete.png create mode 100644 piqt_tools/icons/edit-find-.png create mode 100644 piqt_tools/icons/edit-find.png create mode 100644 piqt_tools/icons/edit-guides.png create mode 100644 piqt_tools/icons/edit-paste.png create mode 100644 piqt_tools/icons/edit-redo.png create mode 100644 piqt_tools/icons/edit-table-insert-row-below.png create mode 100644 piqt_tools/icons/edit-undo.png create mode 100644 piqt_tools/icons/employees.png create mode 100644 piqt_tools/icons/expand_s_x.png create mode 100644 piqt_tools/icons/expand_s_y.png create mode 100644 piqt_tools/icons/expand_x.png create mode 100644 piqt_tools/icons/expand_y.png create mode 100644 piqt_tools/icons/format-text-subscript.png create mode 100644 piqt_tools/icons/games-solve.png create mode 100644 piqt_tools/icons/go-jump.png create mode 100644 piqt_tools/icons/go-next.png create mode 100644 piqt_tools/icons/go-previous.png create mode 100644 piqt_tools/icons/graphics.png create mode 100644 piqt_tools/icons/groups-edit.png create mode 100644 piqt_tools/icons/item-add.png create mode 100644 piqt_tools/icons/item.png create mode 100644 piqt_tools/icons/lastmoves.png create mode 100644 piqt_tools/icons/led_3.png create mode 100644 piqt_tools/icons/led_off.png create mode 100644 piqt_tools/icons/led_on.png create mode 100644 piqt_tools/icons/light-+.png create mode 100644 piqt_tools/icons/light--.png create mode 100644 piqt_tools/icons/light-254.png create mode 100644 piqt_tools/icons/light-disable-all.png create mode 100644 piqt_tools/icons/light-disable.png create mode 100644 piqt_tools/icons/light-down.png create mode 100644 piqt_tools/icons/light-edit.png create mode 100644 piqt_tools/icons/light-max.png create mode 100644 piqt_tools/icons/light-min.png create mode 100644 piqt_tools/icons/light-off.png create mode 100644 piqt_tools/icons/light-on.png create mode 100644 piqt_tools/icons/light-step-down.png create mode 100644 piqt_tools/icons/light-step-up.png create mode 100644 piqt_tools/icons/light-up.png create mode 100644 piqt_tools/icons/lights.png create mode 100644 piqt_tools/icons/list-add.png create mode 100644 piqt_tools/icons/list-remove.png create mode 100644 piqt_tools/icons/log_parser.png create mode 100644 piqt_tools/icons/mail.png create mode 100644 piqt_tools/icons/media-flash.png create mode 100644 piqt_tools/icons/media-playback-pause.png create mode 100644 piqt_tools/icons/media-playback-stop.png create mode 100644 piqt_tools/icons/media-record.png create mode 100644 piqt_tools/icons/node-add.png create mode 100644 piqt_tools/icons/node.png create mode 100644 piqt_tools/icons/object-locked.png create mode 100644 piqt_tools/icons/piconnection.png create mode 100644 piqt_tools/icons/piconnection.xcf create mode 100644 piqt_tools/icons/quickopen.png create mode 100644 piqt_tools/icons/run-build-install-root.png create mode 100644 piqt_tools/icons/run-build.png create mode 100644 piqt_tools/icons/scenes-edit.png create mode 100644 piqt_tools/icons/select-add.png create mode 100644 piqt_tools/icons/select-intersect.png create mode 100644 piqt_tools/icons/select-invert.png create mode 100644 piqt_tools/icons/select-none.png create mode 100644 piqt_tools/icons/select-replace.png create mode 100644 piqt_tools/icons/select-subtract.png create mode 100644 piqt_tools/icons/splash.png create mode 100644 piqt_tools/icons/status-off.png create mode 100644 piqt_tools/icons/status-on.png create mode 100644 piqt_tools/icons/status-warn.png create mode 100644 piqt_tools/icons/system-help.png create mode 100644 piqt_tools/icons/tool-light-add.png create mode 100644 piqt_tools/icons/tool-selection.png create mode 100644 piqt_tools/icons/tools-wizard.png create mode 100644 piqt_tools/icons/transform-move.png create mode 100644 piqt_tools/icons/variable-add.png create mode 100644 piqt_tools/icons/variable-copy.png create mode 100644 piqt_tools/icons/variable-edit.png create mode 100644 piqt_tools/icons/variable-remove.png create mode 100644 piqt_tools/icons/view-grid.png create mode 100644 piqt_tools/icons/view-refresh.png create mode 100644 piqt_tools/icons/warning-a.png create mode 100644 piqt_tools/icons/warning-id.png create mode 100644 piqt_tools/icons/window-close.png create mode 100644 piqt_tools/icons/zoom-fit-best.png create mode 100644 piqt_tools/icons/zoom-in.png create mode 100644 piqt_tools/icons/zoom-out.png create mode 100644 piqt_tools/icons/zoom-range.png create mode 100644 piqt_tools/icons/zoom-rect.png create mode 100644 piqt_tools/libpiqt_utils.dll create mode 100644 piqt_tools/main.cpp create mode 100644 piqt_tools/mainwindow.cpp create mode 100644 piqt_tools/mainwindow.h create mode 100644 piqt_tools/mainwindow.ui create mode 100644 piqt_tools/make_lib.bat create mode 100644 piqt_tools/piconnectionedit.exe create mode 100644 piqt_tools/piconnedit.qrc create mode 100644 piqt_tools/piconnedit.qrc.depends create mode 100644 piqt_tools/piconnedit_main.cpp create mode 100644 piqt_tools/pidumper.cpp create mode 100644 piqt_tools/pidumper.exe create mode 100644 piqt_tools/pidumper.h create mode 100644 piqt_tools/pidumper.ui create mode 100644 piqt_tools/pidumper_main.cpp create mode 100644 piqt_tools/piqt_connection_edit.cpp create mode 100644 piqt_tools/piqt_connection_edit.h create mode 100644 piqt_tools/piqt_connection_edit.ui create mode 100644 piqt_tools/piqt_connection_view.cpp create mode 100644 piqt_tools/piqt_connection_view.h create mode 100644 piqt_tools/piqt_highlighter.cpp create mode 100644 piqt_tools/piqt_highlighter.h create mode 100644 piqt_tools/piqt_tools.kdev4 create mode 100644 qad_application/.kdev4/qad_application.kdev4 create mode 100644 qad_application/CMakeLists.txt create mode 100644 qad_application/LEDOS_devices.dat create mode 100644 qad_application/clean create mode 100644 qad_application/clean.bat create mode 100644 qad_application/edockwidget.cpp create mode 100644 qad_application/edockwidget.h create mode 100644 qad_application/edockwidgetplugin.cpp create mode 100644 qad_application/edockwidgetplugin.h create mode 100644 qad_application/emainwindow.cpp create mode 100644 qad_application/emainwindow.h create mode 100644 qad_application/emainwindowplugin.cpp create mode 100644 qad_application/emainwindowplugin.h create mode 100644 qad_application/etabwidget.cpp create mode 100644 qad_application/etabwidget.h create mode 100644 qad_application/gpio.conf create mode 100644 qad_application/historyview.cpp create mode 100644 qad_application/historyview.h create mode 100644 qad_application/historyviewplugin.cpp create mode 100644 qad_application/historyviewplugin.h create mode 100644 qad_application/icons/border-line.png create mode 100644 qad_application/icons/clear-history.png create mode 100644 qad_application/icons/configure.png create mode 100644 qad_application/icons/dialog-close.png create mode 100644 qad_application/icons/document-save.png create mode 100644 qad_application/icons/edit-clear-locationbar-rtl.png create mode 100644 qad_application/icons/edit-clear.png create mode 100644 qad_application/icons/edit-copy.png create mode 100644 qad_application/icons/edit-delete.png create mode 100644 qad_application/icons/edit-find.png create mode 100644 qad_application/icons/edit-guides.png create mode 100644 qad_application/icons/edit-paste.png create mode 100644 qad_application/icons/edockwidget.png create mode 100644 qad_application/icons/expand_s_x.png create mode 100644 qad_application/icons/expand_s_y.png create mode 100644 qad_application/icons/expand_x.png create mode 100644 qad_application/icons/expand_y.png create mode 100644 qad_application/icons/graphic.png create mode 100644 qad_application/icons/historyview.png create mode 100644 qad_application/icons/item.png create mode 100644 qad_application/icons/layer-visible-off.png create mode 100644 qad_application/icons/layer-visible-on.png create mode 100644 qad_application/icons/legend.png create mode 100644 qad_application/icons/list-add.png create mode 100644 qad_application/icons/node-add.png create mode 100644 qad_application/icons/node.png create mode 100644 qad_application/icons/view-grid.png create mode 100644 qad_application/icons/zoom-fit-best.png create mode 100644 qad_application/lang/qad_application_ru.ts create mode 100644 qad_application/make_lib.bat create mode 100644 qad_application/qad_application.cpp create mode 100644 qad_application/qad_application.h create mode 100644 qad_application/qad_application.kdev4 create mode 100644 qad_application/qad_application.pro create mode 100644 qad_application/qad_application.qrc create mode 100644 qad_application/qad_application.qrc.depends create mode 100644 qad_application/qsingleapplication.cpp create mode 100644 qad_application/qsingleapplication.h create mode 100644 qad_application/ribbon.cpp create mode 100644 qad_application/ribbon.h create mode 100644 qad_blockview/.kdev4/_custom.kdev4 create mode 100644 qad_blockview/.kdev4/qad_blockview.kdev4 create mode 100644 qad_blockview/CMakeLists.txt create mode 100644 qad_blockview/LEDOS_devices.dat create mode 100644 qad_blockview/alignedtextitem.cpp create mode 100644 qad_blockview/alignedtextitem.h create mode 100644 qad_blockview/blockbase.cpp create mode 100644 qad_blockview/blockbase.h create mode 100644 qad_blockview/blockbusitem.cpp create mode 100644 qad_blockview/blockbusitem.h create mode 100644 qad_blockview/blockitem.cpp create mode 100644 qad_blockview/blockitem.h create mode 100644 qad_blockview/blockview.cpp create mode 100644 qad_blockview/blockview.h create mode 100644 qad_blockview/blockviewplugin.cpp create mode 100644 qad_blockview/blockviewplugin.h create mode 100644 qad_blockview/blockviewwavetrace.cpp create mode 100644 qad_blockview/blockviewwavetrace.h create mode 100644 qad_blockview/clean create mode 100755 qad_blockview/clean.bat create mode 100644 qad_blockview/drawtools.cpp create mode 100644 qad_blockview/drawtools.h create mode 100644 qad_blockview/drawtools.ui create mode 100644 qad_blockview/gpio.conf create mode 100644 qad_blockview/icons/align-bottom-center.png create mode 100644 qad_blockview/icons/align-bottom-left.png create mode 100644 qad_blockview/icons/align-bottom-right.png create mode 100644 qad_blockview/icons/align-center-center.png create mode 100644 qad_blockview/icons/align-center-left.png create mode 100644 qad_blockview/icons/align-center-right.png create mode 100644 qad_blockview/icons/align-hor.png create mode 100644 qad_blockview/icons/align-top-center.png create mode 100644 qad_blockview/icons/align-top-left.png create mode 100644 qad_blockview/icons/align-top-right.png create mode 100644 qad_blockview/icons/align-ver.png create mode 100644 qad_blockview/icons/alignment.xcf create mode 100644 qad_blockview/icons/blockview.png create mode 100644 qad_blockview/icons/border-line.png create mode 100644 qad_blockview/icons/bus_twin.png create mode 100644 qad_blockview/icons/configure.png create mode 100644 qad_blockview/icons/dialog-close.png create mode 100644 qad_blockview/icons/document-edit-.png create mode 100644 qad_blockview/icons/document-open.png create mode 100644 qad_blockview/icons/document-save.png create mode 100644 qad_blockview/icons/draw-ellipse.png create mode 100644 qad_blockview/icons/draw-line.png create mode 100644 qad_blockview/icons/draw-rectangle.png create mode 100644 qad_blockview/icons/draw-text.png create mode 100644 qad_blockview/icons/edit-clear-locationbar-rtl.png create mode 100644 qad_blockview/icons/edit-clear.png create mode 100644 qad_blockview/icons/edit-copy.png create mode 100644 qad_blockview/icons/edit-delete.png create mode 100644 qad_blockview/icons/edit-find.png create mode 100644 qad_blockview/icons/edit-guides.png create mode 100644 qad_blockview/icons/edit-paste.png create mode 100644 qad_blockview/icons/expand_s_x.png create mode 100644 qad_blockview/icons/expand_s_y.png create mode 100644 qad_blockview/icons/expand_x.png create mode 100644 qad_blockview/icons/expand_y.png create mode 100644 qad_blockview/icons/format-fill-color.png create mode 100644 qad_blockview/icons/format-stroke-color.png create mode 100644 qad_blockview/icons/graphic.png create mode 100644 qad_blockview/icons/item.png create mode 100644 qad_blockview/icons/legend.png create mode 100644 qad_blockview/icons/list-add.png create mode 100644 qad_blockview/icons/node-add.png create mode 100644 qad_blockview/icons/node.png create mode 100644 qad_blockview/icons/view-fullscreen.png create mode 100644 qad_blockview/icons/view-grid.png create mode 100644 qad_blockview/icons/view-preview.png create mode 100644 qad_blockview/icons/z-bottom.png create mode 100644 qad_blockview/icons/z-down.png create mode 100644 qad_blockview/icons/z-top.png create mode 100644 qad_blockview/icons/z-up.png create mode 100644 qad_blockview/icons/zoom-fit-best.png create mode 100644 qad_blockview/lang/qad_blockview_ru.qm create mode 100644 qad_blockview/lang/qad_blockview_ru.ts create mode 100755 qad_blockview/make_lib.bat create mode 100644 qad_blockview/qad_blockview.cpp create mode 100644 qad_blockview/qad_blockview.h create mode 100644 qad_blockview/qad_blockview.kdev4 create mode 100644 qad_blockview/qad_blockview.pro create mode 100644 qad_blockview/qad_blockview.qrc create mode 100644 qad_blockview/qad_blockview.qrc.depends create mode 100644 qad_graphic/.kdev4/qad_graphic.kdev4 create mode 100644 qad_graphic/CMakeLists.txt create mode 100644 qad_graphic/LEDOS_devices.dat create mode 100644 qad_graphic/clean create mode 100644 qad_graphic/clean.bat create mode 100644 qad_graphic/gpio.conf create mode 100644 qad_graphic/graphic.cpp create mode 100644 qad_graphic/graphic.h create mode 100644 qad_graphic/graphic.ui create mode 100644 qad_graphic/graphic_conf.cpp create mode 100644 qad_graphic/graphic_conf.h create mode 100644 qad_graphic/graphic_conf.ui create mode 100644 qad_graphic/graphicplugin.cpp create mode 100644 qad_graphic/graphicplugin.h create mode 100644 qad_graphic/icons/border-line.png create mode 100644 qad_graphic/icons/configure.png create mode 100644 qad_graphic/icons/dialog-close.png create mode 100644 qad_graphic/icons/document-save.png create mode 100644 qad_graphic/icons/edit-clear-locationbar-rtl.png create mode 100644 qad_graphic/icons/edit-clear.png create mode 100644 qad_graphic/icons/edit-copy.png create mode 100644 qad_graphic/icons/edit-delete.png create mode 100644 qad_graphic/icons/edit-find.png create mode 100644 qad_graphic/icons/edit-guides.png create mode 100644 qad_graphic/icons/edit-paste.png create mode 100644 qad_graphic/icons/expand_s_x.png create mode 100644 qad_graphic/icons/expand_s_y.png create mode 100644 qad_graphic/icons/expand_x.png create mode 100644 qad_graphic/icons/expand_y.png create mode 100644 qad_graphic/icons/graphic.png create mode 100644 qad_graphic/icons/item.png create mode 100644 qad_graphic/icons/legend.png create mode 100644 qad_graphic/icons/list-add.png create mode 100644 qad_graphic/icons/media-playback-pause.png create mode 100644 qad_graphic/icons/node-add.png create mode 100644 qad_graphic/icons/node.png create mode 100644 qad_graphic/icons/pause-back.png create mode 100644 qad_graphic/icons/pause-front.png create mode 100644 qad_graphic/icons/view-fullscreen.png create mode 100644 qad_graphic/icons/view-grid.png create mode 100644 qad_graphic/icons/zoom-fit-best.png create mode 100644 qad_graphic/lang/qad_graphic_ru.qm create mode 100644 qad_graphic/lang/qad_graphic_ru.ts create mode 100644 qad_graphic/make_lib.bat create mode 100644 qad_graphic/qad_graphic.cpp create mode 100644 qad_graphic/qad_graphic.h create mode 100644 qad_graphic/qad_graphic.kdev4 create mode 100644 qad_graphic/qad_graphic.pro create mode 100644 qad_graphic/qad_graphic.qrc create mode 100644 qad_graphic/qad_graphic.qrc.depends create mode 100644 qad_graphic/uglwidget.h create mode 100644 qad_graphic/uwidget.h create mode 100644 qad_sql_table/.kdev4/qad_sql_table.kdev4 create mode 100644 qad_sql_table/CMakeLists.txt create mode 100644 qad_sql_table/LEDOS_devices.dat create mode 100644 qad_sql_table/clean create mode 100644 qad_sql_table/clean.bat create mode 100644 qad_sql_table/etabwidget.h create mode 100644 qad_sql_table/gpio.conf create mode 100644 qad_sql_table/icons/alpha.png create mode 100644 qad_sql_table/icons/archive-extract.png create mode 100644 qad_sql_table/icons/archive-insert-directory.png create mode 100644 qad_sql_table/icons/archive-insert.png create mode 100644 qad_sql_table/icons/arrow-down.png create mode 100644 qad_sql_table/icons/arrow-up.png create mode 100644 qad_sql_table/icons/axis_x.png create mode 100644 qad_sql_table/icons/axis_y.png create mode 100644 qad_sql_table/icons/case-sensitive.png create mode 100644 qad_sql_table/icons/checkbox-unchecked.png create mode 100644 qad_sql_table/icons/checkbox.png create mode 100644 qad_sql_table/icons/clients.png create mode 100644 qad_sql_table/icons/code-error.png create mode 100644 qad_sql_table/icons/code-parents.png create mode 100644 qad_sql_table/icons/code-struct.png create mode 100644 qad_sql_table/icons/code-union.png create mode 100644 qad_sql_table/icons/code-variable.png create mode 100644 qad_sql_table/icons/configure.png create mode 100644 qad_sql_table/icons/database.png create mode 100644 qad_sql_table/icons/dd.png create mode 100644 qad_sql_table/icons/dialog-close.png create mode 100644 qad_sql_table/icons/dialog-ok-apply.png create mode 100644 qad_sql_table/icons/document-edit.png create mode 100644 qad_sql_table/icons/document-new.png create mode 100644 qad_sql_table/icons/document-open.png create mode 100644 qad_sql_table/icons/document-print.png create mode 100644 qad_sql_table/icons/document-save.png create mode 100644 qad_sql_table/icons/edit-clear-locationbar-rtl.png create mode 100644 qad_sql_table/icons/edit-clear.png create mode 100644 qad_sql_table/icons/edit-copy.png create mode 100644 qad_sql_table/icons/edit-delete.png create mode 100644 qad_sql_table/icons/edit-find.png create mode 100644 qad_sql_table/icons/edit-guides.png create mode 100644 qad_sql_table/icons/edit-paste.png create mode 100644 qad_sql_table/icons/edit-table-insert-row-below.png create mode 100644 qad_sql_table/icons/employees.png create mode 100644 qad_sql_table/icons/expand_s_x.png create mode 100644 qad_sql_table/icons/expand_s_y.png create mode 100644 qad_sql_table/icons/expand_x.png create mode 100644 qad_sql_table/icons/expand_y.png create mode 100644 qad_sql_table/icons/format-text-subscript.png create mode 100644 qad_sql_table/icons/games-solve.png create mode 100644 qad_sql_table/icons/go-next.png create mode 100644 qad_sql_table/icons/go-previous.png create mode 100644 qad_sql_table/icons/graphics.png create mode 100644 qad_sql_table/icons/item-add.png create mode 100644 qad_sql_table/icons/item.png create mode 100644 qad_sql_table/icons/lastmoves.png create mode 100644 qad_sql_table/icons/led_3.png create mode 100644 qad_sql_table/icons/led_off.png create mode 100644 qad_sql_table/icons/led_on.png create mode 100644 qad_sql_table/icons/list-add.png create mode 100644 qad_sql_table/icons/list-remove.png create mode 100644 qad_sql_table/icons/log_parser.png create mode 100644 qad_sql_table/icons/mail.png create mode 100644 qad_sql_table/icons/media-playback-pause.png create mode 100644 qad_sql_table/icons/media-playback-stop.png create mode 100644 qad_sql_table/icons/media-record.png create mode 100644 qad_sql_table/icons/node-add.png create mode 100644 qad_sql_table/icons/node.png create mode 100644 qad_sql_table/icons/quickopen.png create mode 100644 qad_sql_table/icons/run-build.png create mode 100644 qad_sql_table/icons/splash.png create mode 100644 qad_sql_table/icons/sql_table.png create mode 100644 qad_sql_table/icons/tools-wizard.png create mode 100644 qad_sql_table/icons/transform-move.png create mode 100644 qad_sql_table/icons/variable-add.png create mode 100644 qad_sql_table/icons/variable-copy.png create mode 100644 qad_sql_table/icons/variable-edit.png create mode 100644 qad_sql_table/icons/variable-remove.png create mode 100644 qad_sql_table/icons/view-grid.png create mode 100644 qad_sql_table/icons/view-refresh.png create mode 100644 qad_sql_table/icons/zoom-fit-best.png create mode 100644 qad_sql_table/icons/zoom-in.png create mode 100644 qad_sql_table/icons/zoom-out.png create mode 100644 qad_sql_table/icons/zoom-range.png create mode 100644 qad_sql_table/icons/zoom-rect.png create mode 100644 qad_sql_table/lang/qad_sql_table_ru.qm create mode 100644 qad_sql_table/lang/qad_sql_table_ru.ts create mode 100644 qad_sql_table/libqad_sql_table.dll create mode 100644 qad_sql_table/make_lib.bat create mode 100644 qad_sql_table/qad_sql_table.cpp create mode 100644 qad_sql_table/qad_sql_table.h create mode 100644 qad_sql_table/qad_sql_table.kdev4 create mode 100644 qad_sql_table/qad_sql_table.pro create mode 100644 qad_sql_table/qad_sql_table.qrc create mode 100644 qad_sql_table/qad_sql_table.qrc.depends create mode 100644 qad_sql_table/qad_sql_table_plugin.dll create mode 100644 qad_sql_table/sql_record_plugin.cpp create mode 100644 qad_sql_table/sql_record_plugin.h create mode 100644 qad_sql_table/sql_record_widget.cpp create mode 100644 qad_sql_table/sql_record_widget.h create mode 100644 qad_sql_table/sql_table_plugin.cpp create mode 100644 qad_sql_table/sql_table_plugin.h create mode 100644 qad_sql_table/sql_table_widget.cpp create mode 100644 qad_sql_table/sql_table_widget.h create mode 100644 qad_sql_table/sql_table_widget.ui create mode 100644 qad_utils/.kdev4/qad_utils.kdev4 create mode 100644 qad_utils/CMakeLists.txt create mode 100644 qad_utils/chunkstream.cpp create mode 100644 qad_utils/chunkstream.h create mode 100644 qad_utils/clean create mode 100644 qad_utils/clean.bat create mode 100644 qad_utils/icons/alpha.png create mode 100644 qad_utils/icons/border-line.png create mode 100644 qad_utils/icons/chardialog.png create mode 100644 qad_utils/icons/clineedit.png create mode 100644 qad_utils/icons/colorbutton.png create mode 100644 qad_utils/icons/configure.png create mode 100644 qad_utils/icons/dialog-close.png create mode 100644 qad_utils/icons/document-open.png create mode 100644 qad_utils/icons/document-open_16.png create mode 100644 qad_utils/icons/document-save.png create mode 100644 qad_utils/icons/ecombobox.png create mode 100644 qad_utils/icons/edit-clear-locationbar-rtl.png create mode 100644 qad_utils/icons/edit-clear.png create mode 100644 qad_utils/icons/edit-copy.png create mode 100644 qad_utils/icons/edit-delete.png create mode 100644 qad_utils/icons/edit-find.png create mode 100644 qad_utils/icons/edit-guides.png create mode 100644 qad_utils/icons/edit-paste.png create mode 100644 qad_utils/icons/etabwidget.png create mode 100644 qad_utils/icons/expand_s_x.png create mode 100644 qad_utils/icons/expand_s_y.png create mode 100644 qad_utils/icons/expand_x.png create mode 100644 qad_utils/icons/expand_y.png create mode 100644 qad_utils/icons/item-add.png create mode 100644 qad_utils/icons/item.png create mode 100644 qad_utils/icons/legend.png create mode 100644 qad_utils/icons/list-add.png create mode 100644 qad_utils/icons/node-add.png create mode 100644 qad_utils/icons/node.png create mode 100644 qad_utils/icons/qcodeedit.png create mode 100644 qad_utils/icons/qpiconsole.png create mode 100644 qad_utils/icons/spinslider.png create mode 100644 qad_utils/icons/view-grid.png create mode 100644 qad_utils/icons/zoom-fit-best.png create mode 100644 qad_utils/make_lib.bat create mode 100644 qad_utils/qad_utils.cpp create mode 100644 qad_utils/qad_utils.h create mode 100644 qad_utils/qad_utils.kdev4 create mode 100644 qad_utils/qad_utils.pro create mode 100644 qad_utils/qad_utils.qrc create mode 100644 qad_utils/qad_utils.qrc.depends create mode 100644 qad_utils/qpiconfig.cpp create mode 100644 qad_utils/qpiconfig.h create mode 100644 qad_utils/qpiconfignewdialog.cpp create mode 100644 qad_utils/qpiconfignewdialog.h create mode 100644 qad_utils/qpiconfignewdialog.ui create mode 100644 qad_utils/qpiconfigplugin.cpp create mode 100644 qad_utils/qpiconfigplugin.h create mode 100644 qad_utils/qpiconfigvaluewidget.cpp create mode 100644 qad_utils/qpiconfigvaluewidget.h create mode 100644 qad_utils/qpiconfigwidget.cpp create mode 100644 qad_utils/qpiconfigwidget.h create mode 100644 qad_utils/qpiconfigwidget.pri create mode 100644 qad_utils/qpievaluator.cpp create mode 100644 qad_utils/qpievaluator.h create mode 100644 qad_utils/session_manager.cpp create mode 100644 qad_utils/session_manager.h create mode 100644 qad_utils/svn-commit.tmp create mode 100644 qad_widgets/.kdev4/qad_widgets.kdev4 create mode 100644 qad_widgets/CMakeLists.txt create mode 100644 qad_widgets/LEDOS_devices.dat create mode 100644 qad_widgets/chardialog.cpp create mode 100644 qad_widgets/chardialog.h create mode 100644 qad_widgets/chardialog.ui create mode 100644 qad_widgets/chardialogplugin.cpp create mode 100644 qad_widgets/chardialogplugin.h create mode 100644 qad_widgets/clean create mode 100644 qad_widgets/clean.bat create mode 100644 qad_widgets/clineedit.cpp create mode 100644 qad_widgets/clineedit.h create mode 100644 qad_widgets/clineeditplugin.cpp create mode 100644 qad_widgets/clineeditplugin.h create mode 100644 qad_widgets/colorbutton.cpp create mode 100644 qad_widgets/colorbutton.h create mode 100644 qad_widgets/colorbuttonplugin.cpp create mode 100644 qad_widgets/colorbuttonplugin.h create mode 100644 qad_widgets/ecombobox.cpp create mode 100644 qad_widgets/ecombobox.h create mode 100644 qad_widgets/ecomboboxplugin.cpp create mode 100644 qad_widgets/ecomboboxplugin.h create mode 100644 qad_widgets/gpio.conf create mode 100644 qad_widgets/iconedlabel.h create mode 100644 qad_widgets/iconedlabelplugin.h create mode 100644 qad_widgets/icons/alpha.png create mode 100644 qad_widgets/icons/border-line.png create mode 100644 qad_widgets/icons/chardialog.png create mode 100644 qad_widgets/icons/clineedit.png create mode 100644 qad_widgets/icons/code-word.png create mode 100644 qad_widgets/icons/colorbutton.png create mode 100644 qad_widgets/icons/configure.png create mode 100644 qad_widgets/icons/dialog-close.png create mode 100644 qad_widgets/icons/document-open.png create mode 100644 qad_widgets/icons/document-save.png create mode 100644 qad_widgets/icons/ecombobox.png create mode 100644 qad_widgets/icons/edit-clear-locationbar-rtl.png create mode 100644 qad_widgets/icons/edit-clear.png create mode 100644 qad_widgets/icons/edit-copy.png create mode 100644 qad_widgets/icons/edit-delete.png create mode 100644 qad_widgets/icons/edit-find.png create mode 100644 qad_widgets/icons/edit-guides.png create mode 100644 qad_widgets/icons/edit-paste.png create mode 100644 qad_widgets/icons/etabwidget.png create mode 100644 qad_widgets/icons/expand_s_x.png create mode 100644 qad_widgets/icons/expand_s_y.png create mode 100644 qad_widgets/icons/expand_x.png create mode 100644 qad_widgets/icons/expand_y.png create mode 100644 qad_widgets/icons/item-add.png create mode 100644 qad_widgets/icons/item.png create mode 100644 qad_widgets/icons/legend.png create mode 100644 qad_widgets/icons/list-add.png create mode 100644 qad_widgets/icons/node-add.png create mode 100644 qad_widgets/icons/node.png create mode 100644 qad_widgets/icons/qcodeedit.png create mode 100644 qad_widgets/icons/qpiconsole.png create mode 100644 qad_widgets/icons/qvariantedit.png create mode 100644 qad_widgets/icons/spinslider.png create mode 100644 qad_widgets/icons/view-grid.png create mode 100644 qad_widgets/icons/zoom-fit-best.png create mode 100644 qad_widgets/lang/qad_widgets_ru.qm create mode 100644 qad_widgets/lang/qad_widgets_ru.ts create mode 100644 qad_widgets/lang/ru.qm create mode 100644 qad_widgets/lang/ru.ts create mode 100644 qad_widgets/lconedlabelplugin.cpp create mode 100644 qad_widgets/make_lib.bat create mode 100644 qad_widgets/object_script.qad_widgets_plugin create mode 100644 qad_widgets/qad_widgets.cpp create mode 100644 qad_widgets/qad_widgets.h create mode 100644 qad_widgets/qad_widgets.kdev4 create mode 100644 qad_widgets/qad_widgets.pro create mode 100644 qad_widgets/qad_widgets.qrc create mode 100644 qad_widgets/qad_widgets.qrc.depends create mode 100644 qad_widgets/qcodeedit.cpp create mode 100644 qad_widgets/qcodeedit.h create mode 100644 qad_widgets/qcodeeditplugin.cpp create mode 100644 qad_widgets/qcodeeditplugin.h create mode 100644 qad_widgets/qipedit.cpp create mode 100644 qad_widgets/qipedit.h create mode 100644 qad_widgets/qipeditplugin.cpp create mode 100644 qad_widgets/qipeditplugin.h create mode 100644 qad_widgets/qpiconsole.cpp create mode 100644 qad_widgets/qpiconsole.h create mode 100644 qad_widgets/qpiconsoleplugin.cpp create mode 100644 qad_widgets/qpiconsoleplugin.h create mode 100644 qad_widgets/qpointedit.cpp create mode 100644 qad_widgets/qpointedit.h create mode 100644 qad_widgets/qpointeditplugin.cpp create mode 100644 qad_widgets/qpointeditplugin.h create mode 100644 qad_widgets/qrectedit.cpp create mode 100644 qad_widgets/qrectedit.h create mode 100644 qad_widgets/qrecteditplugin.cpp create mode 100644 qad_widgets/qrecteditplugin.h create mode 100644 qad_widgets/qvariantedit.cpp create mode 100644 qad_widgets/qvariantedit.h create mode 100644 qad_widgets/qvarianteditplugin.cpp create mode 100644 qad_widgets/qvarianteditplugin.h create mode 100644 qad_widgets/shortcuts.cpp create mode 100644 qad_widgets/shortcuts.h create mode 100644 qad_widgets/shortcutsplugin.cpp create mode 100644 qad_widgets/shortcutsplugin.h create mode 100644 qad_widgets/spinslider.cpp create mode 100644 qad_widgets/spinslider.h create mode 100644 qad_widgets/spinsliderplugin.cpp create mode 100644 qad_widgets/spinsliderplugin.h create mode 100644 qglview/.kdev4/glview.kdev4 create mode 100644 qglview/.kdev4/qglview.kdev4 create mode 100644 qglview/CMakeLists.txt create mode 100644 qglview/GLee.cpp create mode 100644 qglview/GLee.h create mode 100644 qglview/clean create mode 100644 qglview/clean.bat create mode 100644 qglview/data/34.3DS create mode 100644 qglview/data/NMBalls.png create mode 100644 qglview/data/NMBumpsOut.png create mode 100644 qglview/data/NMHollyBumps.png create mode 100644 qglview/data/NMStripes.png create mode 100644 qglview/data/celtic_010.jpg create mode 100644 qglview/data/celtic_010n.jpg create mode 100644 qglview/data/e/back.jpg create mode 100644 qglview/data/e/bottom.jpg create mode 100644 qglview/data/e/front.jpg create mode 100644 qglview/data/e/left.jpg create mode 100644 qglview/data/e/right.jpg create mode 100644 qglview/data/e/top.jpg create mode 100644 qglview/data/expl_07.png create mode 100644 qglview/data/hel.3DS create mode 100644 qglview/data/l.3DS create mode 100644 qglview/data/l_.3DS create mode 100644 qglview/data/l_.ASE create mode 100644 qglview/data/media-record.png create mode 100644 qglview/data/proj_plane_d.tga create mode 100644 qglview/data/proj_plane_h.tga create mode 100644 qglview/data/proj_plane_n.tga create mode 100644 qglview/data/s.3DS create mode 100644 qglview/data/test.3DS create mode 100644 qglview/data/test.DAE create mode 100644 qglview/data/test_.3DS create mode 100644 qglview/data/waveNM.png create mode 100644 qglview/glframebuffer.cpp create mode 100644 qglview/glframebuffer.h create mode 100644 qglview/globject.cpp create mode 100644 qglview/globject.h create mode 100644 qglview/globject_editor.cpp create mode 100644 qglview/globject_editor.h create mode 100644 qglview/globject_editor.ui create mode 100644 qglview/glparticles_system.cpp create mode 100644 qglview/glparticles_system.h create mode 100644 qglview/glprimitives.cpp create mode 100644 qglview/glprimitives.h create mode 100644 qglview/gltexture_manager.cpp create mode 100644 qglview/gltexture_manager.h create mode 100644 qglview/gltypes.cpp create mode 100644 qglview/gltypes.h create mode 100644 qglview/glvbo.cpp create mode 100644 qglview/glvbo.h create mode 100644 qglview/icons/alpha.png create mode 100644 qglview/icons/configure.png create mode 100644 qglview/icons/dialog-close.png create mode 100644 qglview/icons/document-save.png create mode 100644 qglview/icons/edit-clear-locationbar-rtl.png create mode 100644 qglview/icons/edit-clear.png create mode 100644 qglview/icons/edit-copy.png create mode 100644 qglview/icons/edit-delete.png create mode 100644 qglview/icons/edit-find.png create mode 100644 qglview/icons/edit-guides.png create mode 100644 qglview/icons/edit-paste.png create mode 100644 qglview/icons/item-add.png create mode 100644 qglview/icons/item.png create mode 100644 qglview/icons/list-add.png create mode 100644 qglview/icons/node-add.png create mode 100644 qglview/icons/node.png create mode 100644 qglview/icons/view-grid.png create mode 100644 qglview/icons/zoom-fit-best.png create mode 100644 qglview/loader_3ds.cpp create mode 100644 qglview/loader_3ds.h create mode 100644 qglview/loader_ase.cpp create mode 100644 qglview/loader_ase.h create mode 100644 qglview/main.cpp create mode 100644 qglview/mainwindow.cpp create mode 100644 qglview/mainwindow.h create mode 100644 qglview/mainwindow.ui create mode 100644 qglview/make_install.sh create mode 100644 qglview/make_lib.bat create mode 100644 qglview/material_editor.cpp create mode 100644 qglview/material_editor.h create mode 100644 qglview/material_editor.ui create mode 100644 qglview/propertyeditor.cpp create mode 100644 qglview/propertyeditor.h create mode 100644 qglview/qglview.cpp create mode 100644 qglview/qglview.h create mode 100644 qglview/qglview.kdev4 create mode 100644 qglview/qglview_test.exe create mode 100644 qglview/renderer_deferred_shading.cpp create mode 100644 qglview/renderer_deferred_shading.h create mode 100644 qglview/renderer_simple.cpp create mode 100644 qglview/renderer_simple.h create mode 100644 qglview/rope_system.cpp create mode 100644 qglview/rope_system.h create mode 100644 qglview/shaders/FXAA.frag create mode 100644 qglview/shaders/FXAA.vert create mode 100644 qglview/shaders/bloom_0.frag create mode 100644 qglview/shaders/bloom_1.frag create mode 100644 qglview/shaders/dsl_pass_0.frag create mode 100644 qglview/shaders/dsl_pass_0.geom create mode 100644 qglview/shaders/dsl_pass_0.vert create mode 100644 qglview/shaders/dsl_pass_1.frag create mode 100644 qglview/shaders/dsl_pass_1.vert create mode 100644 qglview/shaders/dsl_pass_2.frag create mode 100644 qglview/shaders/dsl_pass_2.vert create mode 100644 qglview/shaders/hdr_scale_0.frag create mode 100644 qglview/shaders/hdr_scale_1.frag create mode 100644 qglview/shaders/light_models.frag create mode 100644 qglview/shaders/post.frag create mode 100644 qglview/shaders/ppl.frag create mode 100644 qglview/shaders/ppl.vert create mode 100644 qglview/shaders/selection.frag create mode 100644 qglview/shaders/selection.vert create mode 100644 qglview/shaders/selection_halo.frag create mode 100644 qglview/shaders/selection_halo.vert create mode 100644 qglview/shaders/shadow.frag create mode 100644 qglview/shaders/shadow.vert create mode 100644 qglview/water_system.cpp create mode 100644 qglview/water_system.h create mode 100644 touch_widgets/.directory create mode 100644 touch_widgets/.kdev4/touch_widgets.kdev4 create mode 100644 touch_widgets/CMakeLists.txt create mode 100644 touch_widgets/LEDOS_devices.dat create mode 100644 touch_widgets/Makefile.Debug create mode 100644 touch_widgets/Makefile.Release create mode 100644 touch_widgets/clean create mode 100644 touch_widgets/clean.bat create mode 100644 touch_widgets/gpio.conf create mode 100644 touch_widgets/icons/button.png create mode 100644 touch_widgets/icons/icons.xcf create mode 100644 touch_widgets/icons/touchbuttframe.png create mode 100644 touch_widgets/icons/touchbutton.png create mode 100644 touch_widgets/icons/touchslider.png create mode 100644 touch_widgets/make_lib.bat create mode 100644 touch_widgets/release/moc_touchbuttframeplugin.cpp create mode 100644 touch_widgets/release/moc_touchbuttonplugin.cpp create mode 100644 touch_widgets/release/moc_touchsliderplugin.cpp create mode 100644 touch_widgets/release/moc_tw.cpp create mode 100644 touch_widgets/release/qrc_touch_widgets.cpp create mode 100644 touch_widgets/release/touch_widgets_plugin.dll create mode 100644 touch_widgets/touch_bar.h create mode 100644 touch_widgets/touch_widgets.kdev4 create mode 100644 touch_widgets/touch_widgets.pro create mode 100644 touch_widgets/touch_widgets.qrc create mode 100644 touch_widgets/touch_widgets.qrc.depends create mode 100644 touch_widgets/touchbuttframe.cpp create mode 100644 touch_widgets/touchbuttframe.h create mode 100644 touch_widgets/touchbuttframe.pri create mode 100644 touch_widgets/touchbuttframeplugin.cpp create mode 100644 touch_widgets/touchbuttframeplugin.h create mode 100644 touch_widgets/touchbutton.cpp create mode 100644 touch_widgets/touchbutton.h create mode 100644 touch_widgets/touchbutton.pri create mode 100644 touch_widgets/touchbuttonplugin.cpp create mode 100644 touch_widgets/touchbuttonplugin.h create mode 100644 touch_widgets/touchslider.cpp create mode 100644 touch_widgets/touchslider.h create mode 100644 touch_widgets/touchslider.pri create mode 100644 touch_widgets/touchslider.ui create mode 100644 touch_widgets/touchsliderplugin.cpp create mode 100644 touch_widgets/touchsliderplugin.h create mode 100644 touch_widgets/tw.cpp create mode 100644 touch_widgets/tw.h diff --git a/.kdev4/_custom.kdev4 b/.kdev4/_custom.kdev4 new file mode 100644 index 0000000..80afbf7 --- /dev/null +++ b/.kdev4/_custom.kdev4 @@ -0,0 +1,26 @@ +[Containments][1] +ActionPluginsSource=Global +activity=libs +activityId= +desktop=-1 +formfactor=0 +geometry=0,0,1535,683 +immutability=1 +lastDesktop=-1 +lastScreen=0 +location=0 +orientation=2 +plugin=newspaper +screen=0 +wallpaperplugin=color +wallpaperpluginmode= +zvalue=0 + +[Containments][1][Wallpaper][color] +backgroundMode=0 +color1=255,255,255 +color2=0,0,0 + +[Project] +Manager=KDevCMakeManager +Name=libs diff --git a/.kdev4/libs.kdev4 b/.kdev4/libs.kdev4 new file mode 100644 index 0000000..4e7ffa2 --- /dev/null +++ b/.kdev4/libs.kdev4 @@ -0,0 +1,28 @@ +[Buildset] +BuildItems=@Variant(\x00\x00\x00\t\x00\x00\x00\x00\x01\x00\x00\x00\x0b\x00\x00\x00\x00\x01\x00\x00\x00\x08\x00l\x00i\x00b\x00s) + +[CMake] +Build Directory Count=1 +Current Build Directory Index=0 +ProjectRootRelative=./ + +[CMake][CMake Build Directory 0] +Build Directory Path=file:///home/andrey/linux_build/libs +Build Type= +CMake Binary=file:///usr/bin/cmake +Environment Profile= +Extra Arguments= +Install Directory=file:///usr/local + +[Defines And Includes][Compiler] +Name=GCC +Path=gcc +Type=GCC + +[MakeBuilder] +Install As Root=true +Number Of Jobs=8 +Su Command=1 + +[SourceFileTemplates] +LastUsedTemplate=/home/andrey/.kde/share/apps/kdevfiletemplates/template_descriptions/cpp_basic.desktop diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..1fcd364 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,30 @@ +cmake_minimum_required(VERSION 2.6) +project(libs) +#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g3) +if (${WIN32}) + find_package(MinGW REQUIRED) +endif (${WIN32}) +find_package(Qt REQUIRED) +set(LIB 1) +set(LIBPROJECT 1) +set(PIP_LIBRARY pip) +set(PIP_FOLDERS "." "code" "containers" "core" "io" "math" "system" "thread") + +foreach(F ${PIP_FOLDERS}) + set(PIP_INCLUDES ${PIP_INCLUDES} "../pip/src/${F}") +endforeach(F) +#message(STATUS "PIP includes = ${PIP_INCLUDES}") + +set(LIST_LIBS pip qad_widgets qad_utils qad_application qad_blockview qad_graphic qad_sql_table piqt mbricks kx_tools piqt_tools qglview touch_widgets) + +foreach(L ${LIST_LIBS}) + add_subdirectory(${L}) + include_directories(${L}) +endforeach(L) + +if (${WIN32}) + get_filename_component(QTDIR ${QT_QMAKE_EXECUTABLE} PATH) + install(FILES "pip/libpip.dll" DESTINATION ${QTDIR}) + install(FILES "piqt_tools/libpiqt_utils.dll" DESTINATION ${QTDIR}) + install(FILES "FindMinGW.cmake" DESTINATION ${CMAKE_ROOT}/Modules) +endif (${WIN32}) diff --git a/FindMinGW.cmake b/FindMinGW.cmake new file mode 100644 index 0000000..a34d37b --- /dev/null +++ b/FindMinGW.cmake @@ -0,0 +1,12 @@ +if (${MINGW}) +if (NOT DEFINED MINGW_DIR) + get_filename_component(MINGW_BIN ${CMAKE_C_COMPILER} PATH) + get_filename_component(MINGW_DIR ${MINGW_BIN} PATH) + find_path(MINGW_INCLUDE windows.h HINTS ${MINGW_DIR}/include) + find_library(MINGW_LIB m HINTS ${MINGW_BIN}/../lib ${MINGW_INCLUDE}/../lib) + get_filename_component(MINGW_LIB ${MINGW_LIB} PATH) + message(STATUS "Find MinGW binary path = ${MINGW_BIN}") + message(STATUS "Find MinGW include path = ${MINGW_INCLUDE}") + message(STATUS "Find MinGW library path = ${MINGW_LIB}") +endif () +endif (${MINGW}) diff --git a/_oldpip/pip_0.4.0_r5/AUTHORS.txt b/_oldpip/pip_0.4.0_r5/AUTHORS.txt new file mode 100644 index 0000000..53a973d --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/AUTHORS.txt @@ -0,0 +1,2 @@ +Pelipenko Ivan (peri4) peri4ko@yandex.ru +Bychkov Andrey () work.a.b@yandex.ru diff --git a/_oldpip/pip_0.4.0_r5/CMakeCache.txt b/_oldpip/pip_0.4.0_r5/CMakeCache.txt new file mode 100644 index 0000000..4dd47aa --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/CMakeCache.txt @@ -0,0 +1,1413 @@ +# This is the CMakeCache file. +# For build in directory: c:/libs/oldpip/pip_0.4.0_r5 +# It was generated by CMake: C:/Program Files (x86)/CMake 2.8/bin/cmake.exe +# You can edit this file to change values found and used by cmake. +# If you do not want to change any of the values, simply exit the editor. +# If you do want to change a value, simply edit, save, and exit the editor. +# The syntax for the file is as follows: +# KEY:TYPE=VALUE +# KEY is the name of a variable in the cache. +# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!. +# VALUE is the current value for the KEY. + +######################## +# EXTERNAL cache entries +######################## + +//Path to a program. +CMAKE_AR:FILEPATH=C:/mingw/x32/bin/ar.exe + +//Choose the type of build, options are: None(CMAKE_CXX_FLAGS or +// CMAKE_C_FLAGS used) Debug Release RelWithDebInfo MinSizeRel. +CMAKE_BUILD_TYPE:STRING= + +//Enable/Disable color output during build. +CMAKE_COLOR_MAKEFILE:BOOL=ON + +//CXX compiler. +CMAKE_CXX_COMPILER:FILEPATH=C:/mingw/x32/bin/g++.exe + +//Flags used by the compiler during all build types. +CMAKE_CXX_FLAGS:STRING= + +//Flags used by the compiler during debug builds. +CMAKE_CXX_FLAGS_DEBUG:STRING=-g + +//Flags used by the compiler during release minsize builds. +CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG + +//Flags used by the compiler during release builds (/MD /Ob1 /Oi +// /Ot /Oy /Gs will produce slightly less optimized but smaller +// files). +CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUG + +//Flags used by the compiler during Release with Debug Info builds. +CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG + +//Libraries linked by defalut with all C++ applications. +CMAKE_CXX_STANDARD_LIBRARIES:STRING=-lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 + +//C compiler. +CMAKE_C_COMPILER:FILEPATH=C:/mingw/x32/bin/gcc.exe + +//Flags used by the compiler during all build types. +CMAKE_C_FLAGS:STRING= + +//Flags used by the compiler during debug builds. +CMAKE_C_FLAGS_DEBUG:STRING=-g + +//Flags used by the compiler during release minsize builds. +CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG + +//Flags used by the compiler during release builds (/MD /Ob1 /Oi +// /Ot /Oy /Gs will produce slightly less optimized but smaller +// files). +CMAKE_C_FLAGS_RELEASE:STRING=-O3 -DNDEBUG + +//Flags used by the compiler during Release with Debug Info builds. +CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG + +//Libraries linked by defalut with all C applications. +CMAKE_C_STANDARD_LIBRARIES:STRING=-lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 + +//Flags used by the linker. +CMAKE_EXE_LINKER_FLAGS:STRING=' ' + +//Flags used by the linker during debug builds. +CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during release minsize builds. +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during release builds. +CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during Release with Debug Info builds. +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Convert GNU import libraries to MS format (requires Visual Studio) +CMAKE_GNUtoMS:BOOL=OFF + +//Install path prefix, prepended onto install directories. +CMAKE_INSTALL_PREFIX:PATH=C:/Program Files (x86)/pip + +//Path to a program. +CMAKE_LINKER:FILEPATH=C:/mingw/x32/bin/ld.exe + +//Path to a program. +CMAKE_MAKE_PROGRAM:FILEPATH=C:/mingw/x32/bin/mingw32-make.exe + +//Flags used by the linker during the creation of modules. +CMAKE_MODULE_LINKER_FLAGS:STRING=' ' + +//Flags used by the linker during debug builds. +CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during release minsize builds. +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during release builds. +CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during Release with Debug Info builds. +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Path to a program. +CMAKE_NM:FILEPATH=C:/mingw/x32/bin/nm.exe + +//Path to a program. +CMAKE_OBJCOPY:FILEPATH=C:/mingw/x32/bin/objcopy.exe + +//Path to a program. +CMAKE_OBJDUMP:FILEPATH=C:/mingw/x32/bin/objdump.exe + +//Value Computed by CMake +CMAKE_PROJECT_NAME:STATIC=pip + +//Path to a program. +CMAKE_RANLIB:FILEPATH=C:/mingw/x32/bin/ranlib.exe + +//RC compiler. +CMAKE_RC_COMPILER:FILEPATH=C:/mingw/x32/bin/windres.exe + +//Flags for Fortran compiler. +CMAKE_RC_FLAGS:STRING=' ' + +//Path to a program. +CMAKE_SH:FILEPATH=CMAKE_SH-NOTFOUND + +//Flags used by the linker during the creation of dll's. +CMAKE_SHARED_LINKER_FLAGS:STRING=' ' + +//Flags used by the linker during debug builds. +CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during release minsize builds. +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during release builds. +CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during Release with Debug Info builds. +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//If set, runtime paths are not added when installing shared libraries, +// but are added when building. +CMAKE_SKIP_INSTALL_RPATH:BOOL=NO + +//If set, runtime paths are not added when using shared libraries. +CMAKE_SKIP_RPATH:BOOL=NO + +//Flags used by the linker during the creation of static libraries. +CMAKE_STATIC_LINKER_FLAGS:STRING= + +//Flags used by the linker during debug builds. +CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during release minsize builds. +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during release builds. +CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during Release with Debug Info builds. +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Path to a program. +CMAKE_STRIP:FILEPATH=C:/mingw/x32/bin/strip.exe + +//If true, cmake will use relative paths in makefiles and projects. +CMAKE_USE_RELATIVE_PATHS:BOOL=OFF + +//If this value is on, makefiles will be generated without the +// .SILENT directive, and all commands will be echoed to the console +// during the make. This is useful for debugging only. With Visual +// Studio IDE projects all commands are done without /nologo. +CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE + +//No help, variable specified on the command line. +LIB:UNINITIALIZED= + +//Path to a file. +MGWINCLUDE:PATH=C:/mingw/x32/i686-w64-mingw32/include + +//Path to a library. +QT_ARTHURPLUGIN_PLUGIN_DEBUG:FILEPATH=QT_ARTHURPLUGIN_PLUGIN_DEBUG-NOTFOUND + +//Path to a library. +QT_ARTHURPLUGIN_PLUGIN_RELEASE:FILEPATH=C:/Qt/4.8.6/plugins/designer/arthurplugin.dll + +//Path to a library. +QT_CONTAINEREXTENSION_PLUGIN_DEBUG:FILEPATH=C:/Qt/4.8.6/plugins/designer/containerextensiond.dll + +//Path to a library. +QT_CONTAINEREXTENSION_PLUGIN_RELEASE:FILEPATH=C:/Qt/4.8.6/plugins/designer/containerextension.dll + +//Path to a library. +QT_CUSTOMWIDGETPLUGIN_PLUGIN_DEBUG:FILEPATH=QT_CUSTOMWIDGETPLUGIN_PLUGIN_DEBUG-NOTFOUND + +//Path to a library. +QT_CUSTOMWIDGETPLUGIN_PLUGIN_RELEASE:FILEPATH=C:/Qt/4.8.6/plugins/designer/customwidgetplugin.dll + +//Path to a program. +QT_DBUSCPP2XML_EXECUTABLE:FILEPATH=C:/Qt/4.8.6/bin/qdbuscpp2xml.exe + +//Path to a program. +QT_DBUSXML2CPP_EXECUTABLE:FILEPATH=C:/Qt/4.8.6/bin/qdbusxml2cpp.exe + +//Path to a program. +QT_DESIGNER_EXECUTABLE:FILEPATH=C:/Qt/4.8.6/bin/designer.exe + +//The location of the Qt docs +QT_DOC_DIR:PATH=C:/Qt/4.8.6/doc + +//The location of the Qt imports +QT_IMPORTS_DIR:PATH=C:/Qt/4.8.6/imports + +//Path to a program. +QT_LINGUIST_EXECUTABLE:FILEPATH=C:/Qt/4.8.6/bin/linguist.exe + +//Path to a program. +QT_LRELEASE_EXECUTABLE:FILEPATH=C:/Qt/4.8.6/bin/lrelease.exe + +//Path to a program. +QT_LUPDATE_EXECUTABLE:FILEPATH=C:/Qt/4.8.6/bin/lupdate.exe + +//The location of the Qt mkspecs containing qconfig.pri +QT_MKSPECS_DIR:PATH=C:/Qt/4.8.6/mkspecs + +//Path to a program. +QT_MOC_EXECUTABLE:FILEPATH=C:/Qt/4.8.6/bin/moc.exe + +//Path to a library. +QT_PHONONWIDGETS_PLUGIN_DEBUG:FILEPATH=QT_PHONONWIDGETS_PLUGIN_DEBUG-NOTFOUND + +//Path to a library. +QT_PHONONWIDGETS_PLUGIN_RELEASE:FILEPATH=C:/Qt/4.8.6/plugins/designer/phononwidgets.dll + +//Path to a library. +QT_PHONON_DS9_PLUGIN_DEBUG:FILEPATH=C:/Qt/4.8.6/plugins/phonon_backend/phonon_ds9d4.dll + +//Path to a library. +QT_PHONON_DS9_PLUGIN_RELEASE:FILEPATH=C:/Qt/4.8.6/plugins/phonon_backend/phonon_ds94.dll + +//Path to a file. +QT_PHONON_INCLUDE_DIR:PATH=C:/Qt/4.8.6/include/phonon + +//The Qt PHONON library +QT_PHONON_LIBRARY:STRING=optimized;C:/Qt/4.8.6/lib/libphonon4.a;debug;C:/Qt/4.8.6/lib/libphonond4.a + +//Path to a library. +QT_PHONON_LIBRARY_DEBUG:FILEPATH=C:/Qt/4.8.6/lib/libphonond4.a + +//Path to a library. +QT_PHONON_LIBRARY_RELEASE:FILEPATH=C:/Qt/4.8.6/lib/libphonon4.a + +//The location of the Qt plugins +QT_PLUGINS_DIR:PATH=C:/Qt/4.8.6/plugins + +//Path to a file. +QT_QAXCONTAINER_INCLUDE_DIR:PATH=C:/Qt/4.8.6/include/ActiveQt + +//The Qt QAXCONTAINER library +QT_QAXCONTAINER_LIBRARY:STRING=optimized;C:/Qt/4.8.6/lib/libQAxContainer.a;debug;C:/Qt/4.8.6/lib/libQAxContainerd.a + +//Path to a library. +QT_QAXCONTAINER_LIBRARY_DEBUG:FILEPATH=C:/Qt/4.8.6/lib/libQAxContainerd.a + +//Path to a library. +QT_QAXCONTAINER_LIBRARY_RELEASE:FILEPATH=C:/Qt/4.8.6/lib/libQAxContainer.a + +//Path to a file. +QT_QAXSERVER_INCLUDE_DIR:PATH=C:/Qt/4.8.6/include/ActiveQt + +//The Qt QAXSERVER library +QT_QAXSERVER_LIBRARY:STRING=optimized;C:/Qt/4.8.6/lib/libQAxServer.a;debug;C:/Qt/4.8.6/lib/libQAxServerd.a + +//Path to a library. +QT_QAXSERVER_LIBRARY_DEBUG:FILEPATH=C:/Qt/4.8.6/lib/libQAxServerd.a + +//Path to a library. +QT_QAXSERVER_LIBRARY_RELEASE:FILEPATH=C:/Qt/4.8.6/lib/libQAxServer.a + +//Path to a library. +QT_QCNCODECS_PLUGIN_DEBUG:FILEPATH=C:/Qt/4.8.6/plugins/codecs/qcncodecsd4.dll + +//Path to a library. +QT_QCNCODECS_PLUGIN_RELEASE:FILEPATH=C:/Qt/4.8.6/plugins/codecs/qcncodecs4.dll + +//Path to a program. +QT_QCOLLECTIONGENERATOR_EXECUTABLE:FILEPATH=C:/Qt/4.8.6/bin/qcollectiongenerator.exe + +//Path to a library. +QT_QCOREWLANBEARER_PLUGIN_DEBUG:FILEPATH=QT_QCOREWLANBEARER_PLUGIN_DEBUG-NOTFOUND + +//Path to a library. +QT_QCOREWLANBEARER_PLUGIN_RELEASE:FILEPATH=QT_QCOREWLANBEARER_PLUGIN_RELEASE-NOTFOUND + +//Path to a library. +QT_QDECLARATIVEVIEW_PLUGIN_DEBUG:FILEPATH=QT_QDECLARATIVEVIEW_PLUGIN_DEBUG-NOTFOUND + +//Path to a library. +QT_QDECLARATIVEVIEW_PLUGIN_RELEASE:FILEPATH=C:/Qt/4.8.6/plugins/designer/qdeclarativeview.dll + +//Path to a library. +QT_QDECORATIONDEFAULT_PLUGIN_DEBUG:FILEPATH=QT_QDECORATIONDEFAULT_PLUGIN_DEBUG-NOTFOUND + +//Path to a library. +QT_QDECORATIONDEFAULT_PLUGIN_RELEASE:FILEPATH=QT_QDECORATIONDEFAULT_PLUGIN_RELEASE-NOTFOUND + +//Path to a library. +QT_QDECORATIONWINDOWS_PLUGIN_DEBUG:FILEPATH=QT_QDECORATIONWINDOWS_PLUGIN_DEBUG-NOTFOUND + +//Path to a library. +QT_QDECORATIONWINDOWS_PLUGIN_RELEASE:FILEPATH=QT_QDECORATIONWINDOWS_PLUGIN_RELEASE-NOTFOUND + +//Path to a library. +QT_QGENERICBEARER_PLUGIN_DEBUG:FILEPATH=C:/Qt/4.8.6/plugins/bearer/qgenericbearerd4.dll + +//Path to a library. +QT_QGENERICBEARER_PLUGIN_RELEASE:FILEPATH=C:/Qt/4.8.6/plugins/bearer/qgenericbearer4.dll + +//Path to a library. +QT_QGIF_PLUGIN_DEBUG:FILEPATH=C:/Qt/4.8.6/plugins/imageformats/qgifd4.dll + +//Path to a library. +QT_QGIF_PLUGIN_RELEASE:FILEPATH=C:/Qt/4.8.6/plugins/imageformats/qgif4.dll + +//Path to a library. +QT_QGLGRAPHICSSYSTEM_PLUGIN_DEBUG:FILEPATH=C:/Qt/4.8.6/plugins/graphicssystems/qglgraphicssystemd4.dll + +//Path to a library. +QT_QGLGRAPHICSSYSTEM_PLUGIN_RELEASE:FILEPATH=C:/Qt/4.8.6/plugins/graphicssystems/qglgraphicssystem4.dll + +//Path to a library. +QT_QICO_PLUGIN_DEBUG:FILEPATH=C:/Qt/4.8.6/plugins/imageformats/qicod4.dll + +//Path to a library. +QT_QICO_PLUGIN_RELEASE:FILEPATH=C:/Qt/4.8.6/plugins/imageformats/qico4.dll + +//Path to a library. +QT_QIMSW_MULTI_PLUGIN_DEBUG:FILEPATH=QT_QIMSW_MULTI_PLUGIN_DEBUG-NOTFOUND + +//Path to a library. +QT_QIMSW_MULTI_PLUGIN_RELEASE:FILEPATH=QT_QIMSW_MULTI_PLUGIN_RELEASE-NOTFOUND + +//Path to a library. +QT_QJPCODECS_PLUGIN_DEBUG:FILEPATH=C:/Qt/4.8.6/plugins/codecs/qjpcodecsd4.dll + +//Path to a library. +QT_QJPCODECS_PLUGIN_RELEASE:FILEPATH=C:/Qt/4.8.6/plugins/codecs/qjpcodecs4.dll + +//Path to a library. +QT_QJPEG_PLUGIN_DEBUG:FILEPATH=C:/Qt/4.8.6/plugins/imageformats/qjpegd4.dll + +//Path to a library. +QT_QJPEG_PLUGIN_RELEASE:FILEPATH=C:/Qt/4.8.6/plugins/imageformats/qjpeg4.dll + +//Path to a library. +QT_QKRCODECS_PLUGIN_DEBUG:FILEPATH=C:/Qt/4.8.6/plugins/codecs/qkrcodecsd4.dll + +//Path to a library. +QT_QKRCODECS_PLUGIN_RELEASE:FILEPATH=C:/Qt/4.8.6/plugins/codecs/qkrcodecs4.dll + +//The qmake executable for the Qt installation to use +QT_QMAKE_EXECUTABLE:FILEPATH=C:/Qt/4.8.6/bin/qmake.exe + +//Path to a library. +QT_QMNG_PLUGIN_DEBUG:FILEPATH=C:/Qt/4.8.6/plugins/imageformats/qmngd4.dll + +//Path to a library. +QT_QMNG_PLUGIN_RELEASE:FILEPATH=C:/Qt/4.8.6/plugins/imageformats/qmng4.dll + +//Path to a library. +QT_QSQLDB2_PLUGIN_DEBUG:FILEPATH=QT_QSQLDB2_PLUGIN_DEBUG-NOTFOUND + +//Path to a library. +QT_QSQLDB2_PLUGIN_RELEASE:FILEPATH=QT_QSQLDB2_PLUGIN_RELEASE-NOTFOUND + +//Path to a library. +QT_QSQLIBASE_PLUGIN_DEBUG:FILEPATH=QT_QSQLIBASE_PLUGIN_DEBUG-NOTFOUND + +//Path to a library. +QT_QSQLIBASE_PLUGIN_RELEASE:FILEPATH=QT_QSQLIBASE_PLUGIN_RELEASE-NOTFOUND + +//Path to a library. +QT_QSQLITE2_PLUGIN_DEBUG:FILEPATH=QT_QSQLITE2_PLUGIN_DEBUG-NOTFOUND + +//Path to a library. +QT_QSQLITE2_PLUGIN_RELEASE:FILEPATH=QT_QSQLITE2_PLUGIN_RELEASE-NOTFOUND + +//Path to a library. +QT_QSQLITE_PLUGIN_DEBUG:FILEPATH=C:/Qt/4.8.6/plugins/sqldrivers/qsqlited4.dll + +//Path to a library. +QT_QSQLITE_PLUGIN_RELEASE:FILEPATH=C:/Qt/4.8.6/plugins/sqldrivers/qsqlite4.dll + +//Path to a library. +QT_QSQLMYSQL_PLUGIN_DEBUG:FILEPATH=QT_QSQLMYSQL_PLUGIN_DEBUG-NOTFOUND + +//Path to a library. +QT_QSQLMYSQL_PLUGIN_RELEASE:FILEPATH=QT_QSQLMYSQL_PLUGIN_RELEASE-NOTFOUND + +//Path to a library. +QT_QSQLOCI_PLUGIN_DEBUG:FILEPATH=QT_QSQLOCI_PLUGIN_DEBUG-NOTFOUND + +//Path to a library. +QT_QSQLOCI_PLUGIN_RELEASE:FILEPATH=QT_QSQLOCI_PLUGIN_RELEASE-NOTFOUND + +//Path to a library. +QT_QSQLODBC_PLUGIN_DEBUG:FILEPATH=C:/Qt/4.8.6/plugins/sqldrivers/qsqlodbcd4.dll + +//Path to a library. +QT_QSQLODBC_PLUGIN_RELEASE:FILEPATH=C:/Qt/4.8.6/plugins/sqldrivers/qsqlodbc4.dll + +//Path to a library. +QT_QSQLPSQL_PLUGIN_DEBUG:FILEPATH=QT_QSQLPSQL_PLUGIN_DEBUG-NOTFOUND + +//Path to a library. +QT_QSQLPSQL_PLUGIN_RELEASE:FILEPATH=QT_QSQLPSQL_PLUGIN_RELEASE-NOTFOUND + +//Path to a library. +QT_QSQLTDS_PLUGIN_DEBUG:FILEPATH=QT_QSQLTDS_PLUGIN_DEBUG-NOTFOUND + +//Path to a library. +QT_QSQLTDS_PLUGIN_RELEASE:FILEPATH=QT_QSQLTDS_PLUGIN_RELEASE-NOTFOUND + +//Path to a library. +QT_QSVGICON_PLUGIN_DEBUG:FILEPATH=C:/Qt/4.8.6/plugins/iconengines/qsvgicond4.dll + +//Path to a library. +QT_QSVGICON_PLUGIN_RELEASE:FILEPATH=C:/Qt/4.8.6/plugins/iconengines/qsvgicon4.dll + +//Path to a library. +QT_QSVG_PLUGIN_DEBUG:FILEPATH=C:/Qt/4.8.6/plugins/imageformats/qsvgd4.dll + +//Path to a library. +QT_QSVG_PLUGIN_RELEASE:FILEPATH=C:/Qt/4.8.6/plugins/imageformats/qsvg4.dll + +//Path to a library. +QT_QT3SUPPORTWIDGETS_PLUGIN_DEBUG:FILEPATH=QT_QT3SUPPORTWIDGETS_PLUGIN_DEBUG-NOTFOUND + +//Path to a library. +QT_QT3SUPPORTWIDGETS_PLUGIN_RELEASE:FILEPATH=C:/Qt/4.8.6/plugins/designer/qt3supportwidgets.dll + +//Path to a file. +QT_QT3SUPPORT_INCLUDE_DIR:PATH=C:/Qt/4.8.6/include/Qt3Support + +//The Qt QT3SUPPORT library +QT_QT3SUPPORT_LIBRARY:STRING=optimized;C:/Qt/4.8.6/lib/libQt3Support4.a;debug;C:/Qt/4.8.6/lib/libQt3Supportd4.a + +//Path to a library. +QT_QT3SUPPORT_LIBRARY_DEBUG:FILEPATH=C:/Qt/4.8.6/lib/libQt3Supportd4.a + +//Path to a library. +QT_QT3SUPPORT_LIBRARY_RELEASE:FILEPATH=C:/Qt/4.8.6/lib/libQt3Support4.a + +//Path to a library. +QT_QTACCESSIBLECOMPATWIDGETS_PLUGIN_DEBUG:FILEPATH=C:/Qt/4.8.6/plugins/accessible/qtaccessiblecompatwidgetsd4.dll + +//Path to a library. +QT_QTACCESSIBLECOMPATWIDGETS_PLUGIN_RELEASE:FILEPATH=C:/Qt/4.8.6/plugins/accessible/qtaccessiblecompatwidgets4.dll + +//Path to a library. +QT_QTACCESSIBLEWIDGETS_PLUGIN_DEBUG:FILEPATH=C:/Qt/4.8.6/plugins/accessible/qtaccessiblewidgetsd4.dll + +//Path to a library. +QT_QTACCESSIBLEWIDGETS_PLUGIN_RELEASE:FILEPATH=C:/Qt/4.8.6/plugins/accessible/qtaccessiblewidgets4.dll + +//Path to a file. +QT_QTASSISTANTCLIENT_INCLUDE_DIR:PATH=QT_QTASSISTANTCLIENT_INCLUDE_DIR-NOTFOUND + +//The Qt QTASSISTANTCLIENT library +QT_QTASSISTANTCLIENT_LIBRARY:STRING= + +//Path to a library. +QT_QTASSISTANTCLIENT_LIBRARY_DEBUG:FILEPATH=QT_QTASSISTANTCLIENT_LIBRARY_DEBUG-NOTFOUND + +//Path to a library. +QT_QTASSISTANTCLIENT_LIBRARY_RELEASE:FILEPATH=QT_QTASSISTANTCLIENT_LIBRARY_RELEASE-NOTFOUND + +//Path to a file. +QT_QTASSISTANT_INCLUDE_DIR:PATH=QT_QTASSISTANT_INCLUDE_DIR-NOTFOUND + +//The Qt QTASSISTANT library +QT_QTASSISTANT_LIBRARY:STRING= + +//Path to a library. +QT_QTASSISTANT_LIBRARY_DEBUG:FILEPATH=QT_QTASSISTANT_LIBRARY_DEBUG-NOTFOUND + +//Path to a library. +QT_QTASSISTANT_LIBRARY_RELEASE:FILEPATH=QT_QTASSISTANT_LIBRARY_RELEASE-NOTFOUND + +//The Qt QTCLUCENE library +QT_QTCLUCENE_LIBRARY:STRING=optimized;C:/Qt/4.8.6/lib/libQtCLucene4.a;debug;C:/Qt/4.8.6/lib/libQtCLucened4.a + +//Path to a library. +QT_QTCLUCENE_LIBRARY_DEBUG:FILEPATH=C:/Qt/4.8.6/lib/libQtCLucened4.a + +//Path to a library. +QT_QTCLUCENE_LIBRARY_RELEASE:FILEPATH=C:/Qt/4.8.6/lib/libQtCLucene4.a + +//Path to a file. +QT_QTCORE_INCLUDE_DIR:PATH=C:/Qt/4.8.6/include/QtCore + +//The Qt QTCORE library +QT_QTCORE_LIBRARY:STRING=optimized;C:/Qt/4.8.6/lib/libQtCore4.a;debug;C:/Qt/4.8.6/lib/libQtCored4.a + +//Path to a library. +QT_QTCORE_LIBRARY_DEBUG:FILEPATH=C:/Qt/4.8.6/lib/libQtCored4.a + +//Path to a library. +QT_QTCORE_LIBRARY_RELEASE:FILEPATH=C:/Qt/4.8.6/lib/libQtCore4.a + +//Path to a file. +QT_QTDBUS_INCLUDE_DIR:PATH=C:/Qt/4.8.6/include/QtDBus + +//The Qt QTDBUS library +QT_QTDBUS_LIBRARY:STRING=optimized;C:/Qt/4.8.6/lib/libQtDBus4.a;debug;C:/Qt/4.8.6/lib/libQtDBusd4.a + +//Path to a library. +QT_QTDBUS_LIBRARY_DEBUG:FILEPATH=C:/Qt/4.8.6/lib/libQtDBusd4.a + +//Path to a library. +QT_QTDBUS_LIBRARY_RELEASE:FILEPATH=C:/Qt/4.8.6/lib/libQtDBus4.a + +//Path to a file. +QT_QTDECLARATIVE_INCLUDE_DIR:PATH=C:/Qt/4.8.6/include/QtDeclarative + +//The Qt QTDECLARATIVE library +QT_QTDECLARATIVE_LIBRARY:STRING=optimized;C:/Qt/4.8.6/lib/libQtDeclarative4.a;debug;C:/Qt/4.8.6/lib/libQtDeclaratived4.a + +//Path to a library. +QT_QTDECLARATIVE_LIBRARY_DEBUG:FILEPATH=C:/Qt/4.8.6/lib/libQtDeclaratived4.a + +//Path to a library. +QT_QTDECLARATIVE_LIBRARY_RELEASE:FILEPATH=C:/Qt/4.8.6/lib/libQtDeclarative4.a + +//Path to a file. +QT_QTDESIGNERCOMPONENTS_INCLUDE_DIR:PATH=C:/Qt/4.8.6/include/QtDesigner + +//The Qt QTDESIGNERCOMPONENTS library +QT_QTDESIGNERCOMPONENTS_LIBRARY:STRING=optimized;C:/Qt/4.8.6/lib/libQtDesignerComponents4.a;debug;C:/Qt/4.8.6/lib/libQtDesignerComponentsd4.a + +//Path to a library. +QT_QTDESIGNERCOMPONENTS_LIBRARY_DEBUG:FILEPATH=C:/Qt/4.8.6/lib/libQtDesignerComponentsd4.a + +//Path to a library. +QT_QTDESIGNERCOMPONENTS_LIBRARY_RELEASE:FILEPATH=C:/Qt/4.8.6/lib/libQtDesignerComponents4.a + +//Path to a file. +QT_QTDESIGNER_INCLUDE_DIR:PATH=C:/Qt/4.8.6/include/QtDesigner + +//The Qt QTDESIGNER library +QT_QTDESIGNER_LIBRARY:STRING=optimized;C:/Qt/4.8.6/lib/libQtDesigner4.a;debug;C:/Qt/4.8.6/lib/libQtDesignerd4.a + +//Path to a library. +QT_QTDESIGNER_LIBRARY_DEBUG:FILEPATH=C:/Qt/4.8.6/lib/libQtDesignerd4.a + +//Path to a library. +QT_QTDESIGNER_LIBRARY_RELEASE:FILEPATH=C:/Qt/4.8.6/lib/libQtDesigner4.a + +//Path to a file. +QT_QTGUI_INCLUDE_DIR:PATH=C:/Qt/4.8.6/include/QtGui + +//The Qt QTGUI library +QT_QTGUI_LIBRARY:STRING=optimized;C:/Qt/4.8.6/lib/libQtGui4.a;debug;C:/Qt/4.8.6/lib/libQtGuid4.a + +//Path to a library. +QT_QTGUI_LIBRARY_DEBUG:FILEPATH=C:/Qt/4.8.6/lib/libQtGuid4.a + +//Path to a library. +QT_QTGUI_LIBRARY_RELEASE:FILEPATH=C:/Qt/4.8.6/lib/libQtGui4.a + +//Path to a file. +QT_QTHELP_INCLUDE_DIR:PATH=C:/Qt/4.8.6/include/QtHelp + +//The Qt QTHELP library +QT_QTHELP_LIBRARY:STRING=optimized;C:/Qt/4.8.6/lib/libQtHelp4.a;debug;C:/Qt/4.8.6/lib/libQtHelpd4.a + +//Path to a library. +QT_QTHELP_LIBRARY_DEBUG:FILEPATH=C:/Qt/4.8.6/lib/libQtHelpd4.a + +//Path to a library. +QT_QTHELP_LIBRARY_RELEASE:FILEPATH=C:/Qt/4.8.6/lib/libQtHelp4.a + +//Path to a library. +QT_QTIFF_PLUGIN_DEBUG:FILEPATH=C:/Qt/4.8.6/plugins/imageformats/qtiffd4.dll + +//Path to a library. +QT_QTIFF_PLUGIN_RELEASE:FILEPATH=C:/Qt/4.8.6/plugins/imageformats/qtiff4.dll + +//The Qt QTMAIN library +QT_QTMAIN_LIBRARY:STRING=optimized;C:/Qt/4.8.6/lib/libqtmain.a;debug;C:/Qt/4.8.6/lib/libqtmaind.a + +//Path to a library. +QT_QTMAIN_LIBRARY_DEBUG:FILEPATH=C:/Qt/4.8.6/lib/libqtmaind.a + +//Path to a library. +QT_QTMAIN_LIBRARY_RELEASE:FILEPATH=C:/Qt/4.8.6/lib/libqtmain.a + +//Path to a file. +QT_QTMULTIMEDIA_INCLUDE_DIR:PATH=C:/Qt/4.8.6/include/QtMultimedia + +//The Qt QTMULTIMEDIA library +QT_QTMULTIMEDIA_LIBRARY:STRING=optimized;C:/Qt/4.8.6/lib/libQtMultimedia4.a;debug;C:/Qt/4.8.6/lib/libQtMultimediad4.a + +//Path to a library. +QT_QTMULTIMEDIA_LIBRARY_DEBUG:FILEPATH=C:/Qt/4.8.6/lib/libQtMultimediad4.a + +//Path to a library. +QT_QTMULTIMEDIA_LIBRARY_RELEASE:FILEPATH=C:/Qt/4.8.6/lib/libQtMultimedia4.a + +//Path to a file. +QT_QTNETWORK_INCLUDE_DIR:PATH=C:/Qt/4.8.6/include/QtNetwork + +//The Qt QTNETWORK library +QT_QTNETWORK_LIBRARY:STRING=optimized;C:/Qt/4.8.6/lib/libQtNetwork4.a;debug;C:/Qt/4.8.6/lib/libQtNetworkd4.a + +//Path to a library. +QT_QTNETWORK_LIBRARY_DEBUG:FILEPATH=C:/Qt/4.8.6/lib/libQtNetworkd4.a + +//Path to a library. +QT_QTNETWORK_LIBRARY_RELEASE:FILEPATH=C:/Qt/4.8.6/lib/libQtNetwork4.a + +//Path to a file. +QT_QTNSPLUGIN_INCLUDE_DIR:PATH=QT_QTNSPLUGIN_INCLUDE_DIR-NOTFOUND + +//The Qt QTNSPLUGIN library +QT_QTNSPLUGIN_LIBRARY:STRING= + +//Path to a library. +QT_QTNSPLUGIN_LIBRARY_DEBUG:FILEPATH=QT_QTNSPLUGIN_LIBRARY_DEBUG-NOTFOUND + +//Path to a library. +QT_QTNSPLUGIN_LIBRARY_RELEASE:FILEPATH=QT_QTNSPLUGIN_LIBRARY_RELEASE-NOTFOUND + +//Path to a file. +QT_QTOPENGL_INCLUDE_DIR:PATH=C:/Qt/4.8.6/include/QtOpenGL + +//The Qt QTOPENGL library +QT_QTOPENGL_LIBRARY:STRING=optimized;C:/Qt/4.8.6/lib/libQtOpenGL4.a;debug;C:/Qt/4.8.6/lib/libQtOpenGLd4.a + +//Path to a library. +QT_QTOPENGL_LIBRARY_DEBUG:FILEPATH=C:/Qt/4.8.6/lib/libQtOpenGLd4.a + +//Path to a library. +QT_QTOPENGL_LIBRARY_RELEASE:FILEPATH=C:/Qt/4.8.6/lib/libQtOpenGL4.a + +//Path to a library. +QT_QTRACEGRAPHICSSYSTEM_PLUGIN_DEBUG:FILEPATH=C:/Qt/4.8.6/plugins/graphicssystems/qtracegraphicssystemd4.dll + +//Path to a library. +QT_QTRACEGRAPHICSSYSTEM_PLUGIN_RELEASE:FILEPATH=C:/Qt/4.8.6/plugins/graphicssystems/qtracegraphicssystem4.dll + +//Path to a library. +QT_QTSCRIPTDBUS_PLUGIN_DEBUG:FILEPATH=C:/Qt/4.8.6/plugins/script/qtscriptdbusd4.dll + +//Path to a library. +QT_QTSCRIPTDBUS_PLUGIN_RELEASE:FILEPATH=C:/Qt/4.8.6/plugins/script/qtscriptdbus4.dll + +//Path to a file. +QT_QTSCRIPTTOOLS_INCLUDE_DIR:PATH=C:/Qt/4.8.6/include/QtScriptTools + +//The Qt QTSCRIPTTOOLS library +QT_QTSCRIPTTOOLS_LIBRARY:STRING=optimized;C:/Qt/4.8.6/lib/libQtScriptTools4.a;debug;C:/Qt/4.8.6/lib/libQtScriptToolsd4.a + +//Path to a library. +QT_QTSCRIPTTOOLS_LIBRARY_DEBUG:FILEPATH=C:/Qt/4.8.6/lib/libQtScriptToolsd4.a + +//Path to a library. +QT_QTSCRIPTTOOLS_LIBRARY_RELEASE:FILEPATH=C:/Qt/4.8.6/lib/libQtScriptTools4.a + +//Path to a file. +QT_QTSCRIPT_INCLUDE_DIR:PATH=C:/Qt/4.8.6/include/QtScript + +//The Qt QTSCRIPT library +QT_QTSCRIPT_LIBRARY:STRING=optimized;C:/Qt/4.8.6/lib/libQtScript4.a;debug;C:/Qt/4.8.6/lib/libQtScriptd4.a + +//Path to a library. +QT_QTSCRIPT_LIBRARY_DEBUG:FILEPATH=C:/Qt/4.8.6/lib/libQtScriptd4.a + +//Path to a library. +QT_QTSCRIPT_LIBRARY_RELEASE:FILEPATH=C:/Qt/4.8.6/lib/libQtScript4.a + +//Path to a file. +QT_QTSQL_INCLUDE_DIR:PATH=C:/Qt/4.8.6/include/QtSql + +//The Qt QTSQL library +QT_QTSQL_LIBRARY:STRING=optimized;C:/Qt/4.8.6/lib/libQtSql4.a;debug;C:/Qt/4.8.6/lib/libQtSqld4.a + +//Path to a library. +QT_QTSQL_LIBRARY_DEBUG:FILEPATH=C:/Qt/4.8.6/lib/libQtSqld4.a + +//Path to a library. +QT_QTSQL_LIBRARY_RELEASE:FILEPATH=C:/Qt/4.8.6/lib/libQtSql4.a + +//Path to a file. +QT_QTSVG_INCLUDE_DIR:PATH=C:/Qt/4.8.6/include/QtSvg + +//The Qt QTSVG library +QT_QTSVG_LIBRARY:STRING=optimized;C:/Qt/4.8.6/lib/libQtSvg4.a;debug;C:/Qt/4.8.6/lib/libQtSvgd4.a + +//Path to a library. +QT_QTSVG_LIBRARY_DEBUG:FILEPATH=C:/Qt/4.8.6/lib/libQtSvgd4.a + +//Path to a library. +QT_QTSVG_LIBRARY_RELEASE:FILEPATH=C:/Qt/4.8.6/lib/libQtSvg4.a + +//Path to a file. +QT_QTTEST_INCLUDE_DIR:PATH=C:/Qt/4.8.6/include/QtTest + +//The Qt QTTEST library +QT_QTTEST_LIBRARY:STRING=optimized;C:/Qt/4.8.6/lib/libQtTest4.a;debug;C:/Qt/4.8.6/lib/libQtTestd4.a + +//Path to a library. +QT_QTTEST_LIBRARY_DEBUG:FILEPATH=C:/Qt/4.8.6/lib/libQtTestd4.a + +//Path to a library. +QT_QTTEST_LIBRARY_RELEASE:FILEPATH=C:/Qt/4.8.6/lib/libQtTest4.a + +//Path to a file. +QT_QTUITOOLS_INCLUDE_DIR:PATH=C:/Qt/4.8.6/include/QtUiTools + +//The Qt QTUITOOLS library +QT_QTUITOOLS_LIBRARY:STRING=optimized;C:/Qt/4.8.6/lib/libQtUiTools.a;debug;C:/Qt/4.8.6/lib/libQtUiToolsd.a + +//Path to a library. +QT_QTUITOOLS_LIBRARY_DEBUG:FILEPATH=C:/Qt/4.8.6/lib/libQtUiToolsd.a + +//Path to a library. +QT_QTUITOOLS_LIBRARY_RELEASE:FILEPATH=C:/Qt/4.8.6/lib/libQtUiTools.a + +//Path to a library. +QT_QTWCODECS_PLUGIN_DEBUG:FILEPATH=C:/Qt/4.8.6/plugins/codecs/qtwcodecsd4.dll + +//Path to a library. +QT_QTWCODECS_PLUGIN_RELEASE:FILEPATH=C:/Qt/4.8.6/plugins/codecs/qtwcodecs4.dll + +//Path to a file. +QT_QTWEBKIT_INCLUDE_DIR:PATH=C:/Qt/4.8.6/include/QtWebKit + +//The Qt QTWEBKIT library +QT_QTWEBKIT_LIBRARY:STRING=optimized;C:/Qt/4.8.6/lib/libQtWebKit4.a;debug;C:/Qt/4.8.6/lib/libQtWebKitd4.a + +//Path to a library. +QT_QTWEBKIT_LIBRARY_DEBUG:FILEPATH=C:/Qt/4.8.6/lib/libQtWebKitd4.a + +//Path to a library. +QT_QTWEBKIT_LIBRARY_RELEASE:FILEPATH=C:/Qt/4.8.6/lib/libQtWebKit4.a + +//Path to a file. +QT_QTXMLPATTERNS_INCLUDE_DIR:PATH=C:/Qt/4.8.6/include/QtXmlPatterns + +//The Qt QTXMLPATTERNS library +QT_QTXMLPATTERNS_LIBRARY:STRING=optimized;C:/Qt/4.8.6/lib/libQtXmlPatterns4.a;debug;C:/Qt/4.8.6/lib/libQtXmlPatternsd4.a + +//Path to a library. +QT_QTXMLPATTERNS_LIBRARY_DEBUG:FILEPATH=C:/Qt/4.8.6/lib/libQtXmlPatternsd4.a + +//Path to a library. +QT_QTXMLPATTERNS_LIBRARY_RELEASE:FILEPATH=C:/Qt/4.8.6/lib/libQtXmlPatterns4.a + +//Path to a file. +QT_QTXML_INCLUDE_DIR:PATH=C:/Qt/4.8.6/include/QtXml + +//The Qt QTXML library +QT_QTXML_LIBRARY:STRING=optimized;C:/Qt/4.8.6/lib/libQtXml4.a;debug;C:/Qt/4.8.6/lib/libQtXmld4.a + +//Path to a library. +QT_QTXML_LIBRARY_DEBUG:FILEPATH=C:/Qt/4.8.6/lib/libQtXmld4.a + +//Path to a library. +QT_QTXML_LIBRARY_RELEASE:FILEPATH=C:/Qt/4.8.6/lib/libQtXml4.a + +//Path to a library. +QT_QWEBVIEW_PLUGIN_DEBUG:FILEPATH=QT_QWEBVIEW_PLUGIN_DEBUG-NOTFOUND + +//Path to a library. +QT_QWEBVIEW_PLUGIN_RELEASE:FILEPATH=C:/Qt/4.8.6/plugins/designer/qwebview.dll + +//Path to a library. +QT_QWSTSLIBMOUSEHANDLER_PLUGIN_DEBUG:FILEPATH=QT_QWSTSLIBMOUSEHANDLER_PLUGIN_DEBUG-NOTFOUND + +//Path to a library. +QT_QWSTSLIBMOUSEHANDLER_PLUGIN_RELEASE:FILEPATH=QT_QWSTSLIBMOUSEHANDLER_PLUGIN_RELEASE-NOTFOUND + +//Path to a program. +QT_RCC_EXECUTABLE:FILEPATH=C:/Qt/4.8.6/bin/rcc.exe + +//Path to a library. +QT_TASKMENUEXTENSION_PLUGIN_DEBUG:FILEPATH=C:/Qt/4.8.6/plugins/designer/taskmenuextensiond.dll + +//Path to a library. +QT_TASKMENUEXTENSION_PLUGIN_RELEASE:FILEPATH=C:/Qt/4.8.6/plugins/designer/taskmenuextension.dll + +//The location of the Qt translations +QT_TRANSLATIONS_DIR:PATH=C:/Qt/4.8.6/translations + +//Path to a program. +QT_UIC3_EXECUTABLE:FILEPATH=C:/Qt/4.8.6/bin/uic3.exe + +//Path to a program. +QT_UIC_EXECUTABLE:FILEPATH=C:/Qt/4.8.6/bin/uic.exe + +//Path to a library. +QT_WORLDTIMECLOCKPLUGIN_PLUGIN_DEBUG:FILEPATH=QT_WORLDTIMECLOCKPLUGIN_PLUGIN_DEBUG-NOTFOUND + +//Path to a library. +QT_WORLDTIMECLOCKPLUGIN_PLUGIN_RELEASE:FILEPATH=C:/Qt/4.8.6/plugins/designer/worldtimeclockplugin.dll + +//Value Computed by CMake +pip_BINARY_DIR:STATIC=C:/libs/oldpip/pip_0.4.0_r5 + +//Dependencies for the target +pip_LIB_DEPENDS:STATIC=general;ws2_32;general;Iphlpapi; + +//Value Computed by CMake +pip_SOURCE_DIR:STATIC=C:/libs/oldpip/pip_0.4.0_r5 + + +######################## +# INTERNAL cache entries +######################## + +//ADVANCED property for variable: CMAKE_AR +CMAKE_AR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_BUILD_TOOL +CMAKE_BUILD_TOOL-ADVANCED:INTERNAL=1 +//What is the target build tool cmake is generating for. +CMAKE_BUILD_TOOL:INTERNAL=C:/mingw/x32/bin/mingw32-make.exe +//This is the directory where this CMakeCache.txt was created +CMAKE_CACHEFILE_DIR:INTERNAL=c:/libs/oldpip/pip_0.4.0_r5 +//Major version of cmake used to create the current loaded cache +CMAKE_CACHE_MAJOR_VERSION:INTERNAL=2 +//Minor version of cmake used to create the current loaded cache +CMAKE_CACHE_MINOR_VERSION:INTERNAL=8 +//Patch version of cmake used to create the current loaded cache +CMAKE_CACHE_PATCH_VERSION:INTERNAL=12 +//ADVANCED property for variable: CMAKE_COLOR_MAKEFILE +CMAKE_COLOR_MAKEFILE-ADVANCED:INTERNAL=1 +//Path to CMake executable. +CMAKE_COMMAND:INTERNAL=C:/Program Files (x86)/CMake 2.8/bin/cmake.exe +//Path to cpack program executable. +CMAKE_CPACK_COMMAND:INTERNAL=C:/Program Files (x86)/CMake 2.8/bin/cpack.exe +//Path to ctest program executable. +CMAKE_CTEST_COMMAND:INTERNAL=C:/Program Files (x86)/CMake 2.8/bin/ctest.exe +//ADVANCED property for variable: CMAKE_CXX_COMPILER +CMAKE_CXX_COMPILER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS +CMAKE_CXX_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_DEBUG +CMAKE_CXX_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_MINSIZEREL +CMAKE_CXX_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELEASE +CMAKE_CXX_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELWITHDEBINFO +CMAKE_CXX_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_STANDARD_LIBRARIES +CMAKE_CXX_STANDARD_LIBRARIES-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_COMPILER +CMAKE_C_COMPILER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS +CMAKE_C_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG +CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL +CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE +CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO +CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_STANDARD_LIBRARIES +CMAKE_C_STANDARD_LIBRARIES-ADVANCED:INTERNAL=1 +//Path to cache edit program executable. +CMAKE_EDIT_COMMAND:INTERNAL=C:/Program Files (x86)/CMake 2.8/bin/cmake-gui.exe +//Executable file format +CMAKE_EXECUTABLE_FORMAT:INTERNAL=Unknown +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS +CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG +CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE +CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//Name of generator. +CMAKE_GENERATOR:INTERNAL=MinGW Makefiles +//Name of generator toolset. +CMAKE_GENERATOR_TOOLSET:INTERNAL= +//Start directory with the top level CMakeLists.txt file for this +// project +CMAKE_HOME_DIRECTORY:INTERNAL=C:/libs/oldpip/pip_0.4.0_r5 +//ADVANCED property for variable: CMAKE_LINKER +CMAKE_LINKER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MAKE_PROGRAM +CMAKE_MAKE_PROGRAM-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS +CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG +CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE +CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_NM +CMAKE_NM-ADVANCED:INTERNAL=1 +//number of local generators +CMAKE_NUMBER_OF_LOCAL_GENERATORS:INTERNAL=4 +//ADVANCED property for variable: CMAKE_OBJCOPY +CMAKE_OBJCOPY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_OBJDUMP +CMAKE_OBJDUMP-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_RANLIB +CMAKE_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_RC_COMPILER +CMAKE_RC_COMPILER-ADVANCED:INTERNAL=1 +CMAKE_RC_COMPILER_WORKS:INTERNAL=1 +//ADVANCED property for variable: CMAKE_RC_FLAGS +CMAKE_RC_FLAGS-ADVANCED:INTERNAL=1 +//Path to CMake installation. +CMAKE_ROOT:INTERNAL=C:/Program Files (x86)/CMake 2.8/share/cmake-2.8 +//ADVANCED property for variable: CMAKE_SH +CMAKE_SH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS +CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG +CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE +CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH +CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_RPATH +CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS +CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG +CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE +CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STRIP +CMAKE_STRIP-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_USE_RELATIVE_PATHS +CMAKE_USE_RELATIVE_PATHS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE +CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1 +//Details about finding Qt4 +FIND_PACKAGE_MESSAGE_DETAILS_Qt4:INTERNAL=[C:/Qt/4.8.6/bin/qmake.exe][C:/Qt/4.8.6/bin/moc.exe][C:/Qt/4.8.6/bin/rcc.exe][C:/Qt/4.8.6/bin/uic.exe][C:/Qt/4.8.6/include][C:/Qt/4.8.6/lib][optimized;C:/Qt/4.8.6/lib/libQtCore4.a;debug;C:/Qt/4.8.6/lib/libQtCored4.a][v4.8.6()] +//Have function j0 +PIP_MATH_J0:INTERNAL=1 +//Have function j1 +PIP_MATH_J1:INTERNAL=1 +//Have function jn +PIP_MATH_JN:INTERNAL=1 +//Have function y0 +PIP_MATH_Y0:INTERNAL=1 +//Have function y1 +PIP_MATH_Y1:INTERNAL=1 +//Have function yn +PIP_MATH_YN:INTERNAL=1 +//ADVANCED property for variable: QT_ARTHURPLUGIN_PLUGIN_DEBUG +QT_ARTHURPLUGIN_PLUGIN_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_ARTHURPLUGIN_PLUGIN_RELEASE +QT_ARTHURPLUGIN_PLUGIN_RELEASE-ADVANCED:INTERNAL=1 +QT_BINARY_DIR:INTERNAL=C:/Qt/4.8.6/bin +//ADVANCED property for variable: QT_CONTAINEREXTENSION_PLUGIN_DEBUG +QT_CONTAINEREXTENSION_PLUGIN_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_CONTAINEREXTENSION_PLUGIN_RELEASE +QT_CONTAINEREXTENSION_PLUGIN_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_CUSTOMWIDGETPLUGIN_PLUGIN_DEBUG +QT_CUSTOMWIDGETPLUGIN_PLUGIN_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_CUSTOMWIDGETPLUGIN_PLUGIN_RELEASE +QT_CUSTOMWIDGETPLUGIN_PLUGIN_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_DBUSCPP2XML_EXECUTABLE +QT_DBUSCPP2XML_EXECUTABLE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_DBUSXML2CPP_EXECUTABLE +QT_DBUSXML2CPP_EXECUTABLE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_DESIGNER_EXECUTABLE +QT_DESIGNER_EXECUTABLE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_DOC_DIR +QT_DOC_DIR-ADVANCED:INTERNAL=1 +QT_HEADERS_DIR:INTERNAL=C:/Qt/4.8.6/include +//ADVANCED property for variable: QT_IMPORTS_DIR +QT_IMPORTS_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_LIBRARY_DIR +QT_LIBRARY_DIR-ADVANCED:INTERNAL=1 +//Qt library dir +QT_LIBRARY_DIR:INTERNAL=C:/Qt/4.8.6/lib +//ADVANCED property for variable: QT_LINGUIST_EXECUTABLE +QT_LINGUIST_EXECUTABLE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_LRELEASE_EXECUTABLE +QT_LRELEASE_EXECUTABLE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_LUPDATE_EXECUTABLE +QT_LUPDATE_EXECUTABLE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_MKSPECS_DIR +QT_MKSPECS_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_MOC_EXECUTABLE +QT_MOC_EXECUTABLE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_PHONONWIDGETS_PLUGIN_DEBUG +QT_PHONONWIDGETS_PLUGIN_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_PHONONWIDGETS_PLUGIN_RELEASE +QT_PHONONWIDGETS_PLUGIN_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_PHONON_DS9_PLUGIN_DEBUG +QT_PHONON_DS9_PLUGIN_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_PHONON_DS9_PLUGIN_RELEASE +QT_PHONON_DS9_PLUGIN_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_PHONON_INCLUDE_DIR +QT_PHONON_INCLUDE_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_PHONON_LIBRARY +QT_PHONON_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_PHONON_LIBRARY_DEBUG +QT_PHONON_LIBRARY_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_PHONON_LIBRARY_RELEASE +QT_PHONON_LIBRARY_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_PLUGINS_DIR +QT_PLUGINS_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QAXCONTAINER_INCLUDE_DIR +QT_QAXCONTAINER_INCLUDE_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QAXCONTAINER_LIBRARY +QT_QAXCONTAINER_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QAXCONTAINER_LIBRARY_DEBUG +QT_QAXCONTAINER_LIBRARY_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QAXCONTAINER_LIBRARY_RELEASE +QT_QAXCONTAINER_LIBRARY_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QAXSERVER_INCLUDE_DIR +QT_QAXSERVER_INCLUDE_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QAXSERVER_LIBRARY +QT_QAXSERVER_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QAXSERVER_LIBRARY_DEBUG +QT_QAXSERVER_LIBRARY_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QAXSERVER_LIBRARY_RELEASE +QT_QAXSERVER_LIBRARY_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QCNCODECS_PLUGIN_DEBUG +QT_QCNCODECS_PLUGIN_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QCNCODECS_PLUGIN_RELEASE +QT_QCNCODECS_PLUGIN_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QCOLLECTIONGENERATOR_EXECUTABLE +QT_QCOLLECTIONGENERATOR_EXECUTABLE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QCOREWLANBEARER_PLUGIN_DEBUG +QT_QCOREWLANBEARER_PLUGIN_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QCOREWLANBEARER_PLUGIN_RELEASE +QT_QCOREWLANBEARER_PLUGIN_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QDECLARATIVEVIEW_PLUGIN_DEBUG +QT_QDECLARATIVEVIEW_PLUGIN_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QDECLARATIVEVIEW_PLUGIN_RELEASE +QT_QDECLARATIVEVIEW_PLUGIN_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QDECORATIONDEFAULT_PLUGIN_DEBUG +QT_QDECORATIONDEFAULT_PLUGIN_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QDECORATIONDEFAULT_PLUGIN_RELEASE +QT_QDECORATIONDEFAULT_PLUGIN_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QDECORATIONWINDOWS_PLUGIN_DEBUG +QT_QDECORATIONWINDOWS_PLUGIN_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QDECORATIONWINDOWS_PLUGIN_RELEASE +QT_QDECORATIONWINDOWS_PLUGIN_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QGENERICBEARER_PLUGIN_DEBUG +QT_QGENERICBEARER_PLUGIN_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QGENERICBEARER_PLUGIN_RELEASE +QT_QGENERICBEARER_PLUGIN_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QGIF_PLUGIN_DEBUG +QT_QGIF_PLUGIN_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QGIF_PLUGIN_RELEASE +QT_QGIF_PLUGIN_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QGLGRAPHICSSYSTEM_PLUGIN_DEBUG +QT_QGLGRAPHICSSYSTEM_PLUGIN_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QGLGRAPHICSSYSTEM_PLUGIN_RELEASE +QT_QGLGRAPHICSSYSTEM_PLUGIN_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QICO_PLUGIN_DEBUG +QT_QICO_PLUGIN_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QICO_PLUGIN_RELEASE +QT_QICO_PLUGIN_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QIMSW_MULTI_PLUGIN_DEBUG +QT_QIMSW_MULTI_PLUGIN_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QIMSW_MULTI_PLUGIN_RELEASE +QT_QIMSW_MULTI_PLUGIN_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QJPCODECS_PLUGIN_DEBUG +QT_QJPCODECS_PLUGIN_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QJPCODECS_PLUGIN_RELEASE +QT_QJPCODECS_PLUGIN_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QJPEG_PLUGIN_DEBUG +QT_QJPEG_PLUGIN_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QJPEG_PLUGIN_RELEASE +QT_QJPEG_PLUGIN_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QKRCODECS_PLUGIN_DEBUG +QT_QKRCODECS_PLUGIN_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QKRCODECS_PLUGIN_RELEASE +QT_QKRCODECS_PLUGIN_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QMNG_PLUGIN_DEBUG +QT_QMNG_PLUGIN_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QMNG_PLUGIN_RELEASE +QT_QMNG_PLUGIN_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QSQLDB2_PLUGIN_DEBUG +QT_QSQLDB2_PLUGIN_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QSQLDB2_PLUGIN_RELEASE +QT_QSQLDB2_PLUGIN_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QSQLIBASE_PLUGIN_DEBUG +QT_QSQLIBASE_PLUGIN_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QSQLIBASE_PLUGIN_RELEASE +QT_QSQLIBASE_PLUGIN_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QSQLITE2_PLUGIN_DEBUG +QT_QSQLITE2_PLUGIN_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QSQLITE2_PLUGIN_RELEASE +QT_QSQLITE2_PLUGIN_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QSQLITE_PLUGIN_DEBUG +QT_QSQLITE_PLUGIN_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QSQLITE_PLUGIN_RELEASE +QT_QSQLITE_PLUGIN_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QSQLMYSQL_PLUGIN_DEBUG +QT_QSQLMYSQL_PLUGIN_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QSQLMYSQL_PLUGIN_RELEASE +QT_QSQLMYSQL_PLUGIN_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QSQLOCI_PLUGIN_DEBUG +QT_QSQLOCI_PLUGIN_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QSQLOCI_PLUGIN_RELEASE +QT_QSQLOCI_PLUGIN_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QSQLODBC_PLUGIN_DEBUG +QT_QSQLODBC_PLUGIN_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QSQLODBC_PLUGIN_RELEASE +QT_QSQLODBC_PLUGIN_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QSQLPSQL_PLUGIN_DEBUG +QT_QSQLPSQL_PLUGIN_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QSQLPSQL_PLUGIN_RELEASE +QT_QSQLPSQL_PLUGIN_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QSQLTDS_PLUGIN_DEBUG +QT_QSQLTDS_PLUGIN_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QSQLTDS_PLUGIN_RELEASE +QT_QSQLTDS_PLUGIN_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QSVGICON_PLUGIN_DEBUG +QT_QSVGICON_PLUGIN_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QSVGICON_PLUGIN_RELEASE +QT_QSVGICON_PLUGIN_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QSVG_PLUGIN_DEBUG +QT_QSVG_PLUGIN_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QSVG_PLUGIN_RELEASE +QT_QSVG_PLUGIN_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QT3SUPPORTWIDGETS_PLUGIN_DEBUG +QT_QT3SUPPORTWIDGETS_PLUGIN_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QT3SUPPORTWIDGETS_PLUGIN_RELEASE +QT_QT3SUPPORTWIDGETS_PLUGIN_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QT3SUPPORT_INCLUDE_DIR +QT_QT3SUPPORT_INCLUDE_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QT3SUPPORT_LIBRARY +QT_QT3SUPPORT_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QT3SUPPORT_LIBRARY_DEBUG +QT_QT3SUPPORT_LIBRARY_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QT3SUPPORT_LIBRARY_RELEASE +QT_QT3SUPPORT_LIBRARY_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTACCESSIBLECOMPATWIDGETS_PLUGIN_DEBUG +QT_QTACCESSIBLECOMPATWIDGETS_PLUGIN_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTACCESSIBLECOMPATWIDGETS_PLUGIN_RELEASE +QT_QTACCESSIBLECOMPATWIDGETS_PLUGIN_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTACCESSIBLEWIDGETS_PLUGIN_DEBUG +QT_QTACCESSIBLEWIDGETS_PLUGIN_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTACCESSIBLEWIDGETS_PLUGIN_RELEASE +QT_QTACCESSIBLEWIDGETS_PLUGIN_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTASSISTANTCLIENT_INCLUDE_DIR +QT_QTASSISTANTCLIENT_INCLUDE_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTASSISTANTCLIENT_LIBRARY +QT_QTASSISTANTCLIENT_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTASSISTANTCLIENT_LIBRARY_DEBUG +QT_QTASSISTANTCLIENT_LIBRARY_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTASSISTANTCLIENT_LIBRARY_RELEASE +QT_QTASSISTANTCLIENT_LIBRARY_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTASSISTANT_INCLUDE_DIR +QT_QTASSISTANT_INCLUDE_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTASSISTANT_LIBRARY +QT_QTASSISTANT_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTASSISTANT_LIBRARY_DEBUG +QT_QTASSISTANT_LIBRARY_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTASSISTANT_LIBRARY_RELEASE +QT_QTASSISTANT_LIBRARY_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTCLUCENE_LIBRARY +QT_QTCLUCENE_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTCLUCENE_LIBRARY_DEBUG +QT_QTCLUCENE_LIBRARY_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTCLUCENE_LIBRARY_RELEASE +QT_QTCLUCENE_LIBRARY_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTCORE_INCLUDE_DIR +QT_QTCORE_INCLUDE_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTCORE_LIBRARY +QT_QTCORE_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTCORE_LIBRARY_DEBUG +QT_QTCORE_LIBRARY_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTCORE_LIBRARY_RELEASE +QT_QTCORE_LIBRARY_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTDBUS_INCLUDE_DIR +QT_QTDBUS_INCLUDE_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTDBUS_LIBRARY +QT_QTDBUS_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTDBUS_LIBRARY_DEBUG +QT_QTDBUS_LIBRARY_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTDBUS_LIBRARY_RELEASE +QT_QTDBUS_LIBRARY_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTDECLARATIVE_INCLUDE_DIR +QT_QTDECLARATIVE_INCLUDE_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTDECLARATIVE_LIBRARY +QT_QTDECLARATIVE_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTDECLARATIVE_LIBRARY_DEBUG +QT_QTDECLARATIVE_LIBRARY_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTDECLARATIVE_LIBRARY_RELEASE +QT_QTDECLARATIVE_LIBRARY_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTDESIGNERCOMPONENTS_INCLUDE_DIR +QT_QTDESIGNERCOMPONENTS_INCLUDE_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTDESIGNERCOMPONENTS_LIBRARY +QT_QTDESIGNERCOMPONENTS_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTDESIGNERCOMPONENTS_LIBRARY_DEBUG +QT_QTDESIGNERCOMPONENTS_LIBRARY_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTDESIGNERCOMPONENTS_LIBRARY_RELEASE +QT_QTDESIGNERCOMPONENTS_LIBRARY_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTDESIGNER_INCLUDE_DIR +QT_QTDESIGNER_INCLUDE_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTDESIGNER_LIBRARY +QT_QTDESIGNER_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTDESIGNER_LIBRARY_DEBUG +QT_QTDESIGNER_LIBRARY_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTDESIGNER_LIBRARY_RELEASE +QT_QTDESIGNER_LIBRARY_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTGUI_INCLUDE_DIR +QT_QTGUI_INCLUDE_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTGUI_LIBRARY +QT_QTGUI_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTGUI_LIBRARY_DEBUG +QT_QTGUI_LIBRARY_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTGUI_LIBRARY_RELEASE +QT_QTGUI_LIBRARY_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTHELP_INCLUDE_DIR +QT_QTHELP_INCLUDE_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTHELP_LIBRARY +QT_QTHELP_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTHELP_LIBRARY_DEBUG +QT_QTHELP_LIBRARY_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTHELP_LIBRARY_RELEASE +QT_QTHELP_LIBRARY_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTIFF_PLUGIN_DEBUG +QT_QTIFF_PLUGIN_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTIFF_PLUGIN_RELEASE +QT_QTIFF_PLUGIN_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTMAIN_LIBRARY +QT_QTMAIN_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTMAIN_LIBRARY_DEBUG +QT_QTMAIN_LIBRARY_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTMAIN_LIBRARY_RELEASE +QT_QTMAIN_LIBRARY_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTMULTIMEDIA_INCLUDE_DIR +QT_QTMULTIMEDIA_INCLUDE_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTMULTIMEDIA_LIBRARY +QT_QTMULTIMEDIA_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTMULTIMEDIA_LIBRARY_DEBUG +QT_QTMULTIMEDIA_LIBRARY_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTMULTIMEDIA_LIBRARY_RELEASE +QT_QTMULTIMEDIA_LIBRARY_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTNETWORK_INCLUDE_DIR +QT_QTNETWORK_INCLUDE_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTNETWORK_LIBRARY +QT_QTNETWORK_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTNETWORK_LIBRARY_DEBUG +QT_QTNETWORK_LIBRARY_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTNETWORK_LIBRARY_RELEASE +QT_QTNETWORK_LIBRARY_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTNSPLUGIN_INCLUDE_DIR +QT_QTNSPLUGIN_INCLUDE_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTNSPLUGIN_LIBRARY +QT_QTNSPLUGIN_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTNSPLUGIN_LIBRARY_DEBUG +QT_QTNSPLUGIN_LIBRARY_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTNSPLUGIN_LIBRARY_RELEASE +QT_QTNSPLUGIN_LIBRARY_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTOPENGL_INCLUDE_DIR +QT_QTOPENGL_INCLUDE_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTOPENGL_LIBRARY +QT_QTOPENGL_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTOPENGL_LIBRARY_DEBUG +QT_QTOPENGL_LIBRARY_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTOPENGL_LIBRARY_RELEASE +QT_QTOPENGL_LIBRARY_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTRACEGRAPHICSSYSTEM_PLUGIN_DEBUG +QT_QTRACEGRAPHICSSYSTEM_PLUGIN_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTRACEGRAPHICSSYSTEM_PLUGIN_RELEASE +QT_QTRACEGRAPHICSSYSTEM_PLUGIN_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTSCRIPTDBUS_PLUGIN_DEBUG +QT_QTSCRIPTDBUS_PLUGIN_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTSCRIPTDBUS_PLUGIN_RELEASE +QT_QTSCRIPTDBUS_PLUGIN_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTSCRIPTTOOLS_INCLUDE_DIR +QT_QTSCRIPTTOOLS_INCLUDE_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTSCRIPTTOOLS_LIBRARY +QT_QTSCRIPTTOOLS_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTSCRIPTTOOLS_LIBRARY_DEBUG +QT_QTSCRIPTTOOLS_LIBRARY_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTSCRIPTTOOLS_LIBRARY_RELEASE +QT_QTSCRIPTTOOLS_LIBRARY_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTSCRIPT_INCLUDE_DIR +QT_QTSCRIPT_INCLUDE_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTSCRIPT_LIBRARY +QT_QTSCRIPT_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTSCRIPT_LIBRARY_DEBUG +QT_QTSCRIPT_LIBRARY_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTSCRIPT_LIBRARY_RELEASE +QT_QTSCRIPT_LIBRARY_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTSQL_INCLUDE_DIR +QT_QTSQL_INCLUDE_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTSQL_LIBRARY +QT_QTSQL_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTSQL_LIBRARY_DEBUG +QT_QTSQL_LIBRARY_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTSQL_LIBRARY_RELEASE +QT_QTSQL_LIBRARY_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTSVG_INCLUDE_DIR +QT_QTSVG_INCLUDE_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTSVG_LIBRARY +QT_QTSVG_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTSVG_LIBRARY_DEBUG +QT_QTSVG_LIBRARY_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTSVG_LIBRARY_RELEASE +QT_QTSVG_LIBRARY_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTTEST_INCLUDE_DIR +QT_QTTEST_INCLUDE_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTTEST_LIBRARY +QT_QTTEST_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTTEST_LIBRARY_DEBUG +QT_QTTEST_LIBRARY_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTTEST_LIBRARY_RELEASE +QT_QTTEST_LIBRARY_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTUITOOLS_INCLUDE_DIR +QT_QTUITOOLS_INCLUDE_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTUITOOLS_LIBRARY +QT_QTUITOOLS_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTUITOOLS_LIBRARY_DEBUG +QT_QTUITOOLS_LIBRARY_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTUITOOLS_LIBRARY_RELEASE +QT_QTUITOOLS_LIBRARY_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTWCODECS_PLUGIN_DEBUG +QT_QTWCODECS_PLUGIN_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTWCODECS_PLUGIN_RELEASE +QT_QTWCODECS_PLUGIN_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTWEBKIT_INCLUDE_DIR +QT_QTWEBKIT_INCLUDE_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTWEBKIT_LIBRARY +QT_QTWEBKIT_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTWEBKIT_LIBRARY_DEBUG +QT_QTWEBKIT_LIBRARY_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTWEBKIT_LIBRARY_RELEASE +QT_QTWEBKIT_LIBRARY_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTXMLPATTERNS_INCLUDE_DIR +QT_QTXMLPATTERNS_INCLUDE_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTXMLPATTERNS_LIBRARY +QT_QTXMLPATTERNS_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTXMLPATTERNS_LIBRARY_DEBUG +QT_QTXMLPATTERNS_LIBRARY_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTXMLPATTERNS_LIBRARY_RELEASE +QT_QTXMLPATTERNS_LIBRARY_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTXML_INCLUDE_DIR +QT_QTXML_INCLUDE_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTXML_LIBRARY +QT_QTXML_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTXML_LIBRARY_DEBUG +QT_QTXML_LIBRARY_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QTXML_LIBRARY_RELEASE +QT_QTXML_LIBRARY_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QWEBVIEW_PLUGIN_DEBUG +QT_QWEBVIEW_PLUGIN_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QWEBVIEW_PLUGIN_RELEASE +QT_QWEBVIEW_PLUGIN_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QWSTSLIBMOUSEHANDLER_PLUGIN_DEBUG +QT_QWSTSLIBMOUSEHANDLER_PLUGIN_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_QWSTSLIBMOUSEHANDLER_PLUGIN_RELEASE +QT_QWSTSLIBMOUSEHANDLER_PLUGIN_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_RCC_EXECUTABLE +QT_RCC_EXECUTABLE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_TASKMENUEXTENSION_PLUGIN_DEBUG +QT_TASKMENUEXTENSION_PLUGIN_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_TASKMENUEXTENSION_PLUGIN_RELEASE +QT_TASKMENUEXTENSION_PLUGIN_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_TRANSLATIONS_DIR +QT_TRANSLATIONS_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_UIC3_EXECUTABLE +QT_UIC3_EXECUTABLE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_UIC_EXECUTABLE +QT_UIC_EXECUTABLE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_WORLDTIMECLOCKPLUGIN_PLUGIN_DEBUG +QT_WORLDTIMECLOCKPLUGIN_PLUGIN_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: QT_WORLDTIMECLOCKPLUGIN_PLUGIN_RELEASE +QT_WORLDTIMECLOCKPLUGIN_PLUGIN_RELEASE-ADVANCED:INTERNAL=1 +//Have symbol Q_WS_MAC +Q_WS_MAC:INTERNAL= +//Have symbol Q_WS_QWS +Q_WS_QWS:INTERNAL= +//Have symbol Q_WS_WIN +Q_WS_WIN:INTERNAL=1 +//Have symbol Q_WS_X11 +Q_WS_X11:INTERNAL= + diff --git a/_oldpip/pip_0.4.0_r5/CMakeFiles/2.8.12.2/CMakeCCompiler.cmake b/_oldpip/pip_0.4.0_r5/CMakeFiles/2.8.12.2/CMakeCCompiler.cmake new file mode 100644 index 0000000..547f510 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/CMakeFiles/2.8.12.2/CMakeCCompiler.cmake @@ -0,0 +1,56 @@ +set(CMAKE_C_COMPILER "C:/mingw/x32/bin/gcc.exe") +set(CMAKE_C_COMPILER_ARG1 "") +set(CMAKE_C_COMPILER_ID "GNU") +set(CMAKE_C_COMPILER_VERSION "4.9.2") +set(CMAKE_C_PLATFORM_ID "MinGW") + +set(CMAKE_AR "C:/mingw/x32/bin/ar.exe") +set(CMAKE_RANLIB "C:/mingw/x32/bin/ranlib.exe") +set(CMAKE_LINKER "C:/mingw/x32/bin/ld.exe") +set(CMAKE_COMPILER_IS_GNUCC 1) +set(CMAKE_C_COMPILER_LOADED 1) +set(CMAKE_C_COMPILER_WORKS TRUE) +set(CMAKE_C_ABI_COMPILED TRUE) +set(CMAKE_COMPILER_IS_MINGW 1) +set(CMAKE_COMPILER_IS_CYGWIN ) +if(CMAKE_COMPILER_IS_CYGWIN) + set(CYGWIN 1) + set(UNIX 1) +endif() + +set(CMAKE_C_COMPILER_ENV_VAR "CC") + +if(CMAKE_COMPILER_IS_MINGW) + set(MINGW 1) +endif() +set(CMAKE_C_COMPILER_ID_RUN 1) +set(CMAKE_C_SOURCE_FILE_EXTENSIONS c) +set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC) +set(CMAKE_C_LINKER_PREFERENCE 10) + +# Save compiler ABI information. +set(CMAKE_C_SIZEOF_DATA_PTR "4") +set(CMAKE_C_COMPILER_ABI "") +set(CMAKE_C_LIBRARY_ARCHITECTURE "") + +if(CMAKE_C_SIZEOF_DATA_PTR) + set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}") +endif() + +if(CMAKE_C_COMPILER_ABI) + set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}") +endif() + +if(CMAKE_C_LIBRARY_ARCHITECTURE) + set(CMAKE_LIBRARY_ARCHITECTURE "") +endif() + + + + +set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "mingw32;moldname;mingwex;msvcrt;advapi32;shell32;user32;kernel32;iconv;mingw32;moldname;mingwex;msvcrt") +set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "C:/mingw/x32/lib/gcc/i686-w64-mingw32/4.9.2;C:/mingw/x32/lib/gcc;C:/mingw/x32/i686-w64-mingw32/lib;C:/mingw/x32/lib") +set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "") + + + diff --git a/_oldpip/pip_0.4.0_r5/CMakeFiles/2.8.12.2/CMakeCXXCompiler.cmake b/_oldpip/pip_0.4.0_r5/CMakeFiles/2.8.12.2/CMakeCXXCompiler.cmake new file mode 100644 index 0000000..492182e --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/CMakeFiles/2.8.12.2/CMakeCXXCompiler.cmake @@ -0,0 +1,57 @@ +set(CMAKE_CXX_COMPILER "C:/mingw/x32/bin/g++.exe") +set(CMAKE_CXX_COMPILER_ARG1 "") +set(CMAKE_CXX_COMPILER_ID "GNU") +set(CMAKE_CXX_COMPILER_VERSION "4.9.2") +set(CMAKE_CXX_PLATFORM_ID "MinGW") + +set(CMAKE_AR "C:/mingw/x32/bin/ar.exe") +set(CMAKE_RANLIB "C:/mingw/x32/bin/ranlib.exe") +set(CMAKE_LINKER "C:/mingw/x32/bin/ld.exe") +set(CMAKE_COMPILER_IS_GNUCXX 1) +set(CMAKE_CXX_COMPILER_LOADED 1) +set(CMAKE_CXX_COMPILER_WORKS TRUE) +set(CMAKE_CXX_ABI_COMPILED TRUE) +set(CMAKE_COMPILER_IS_MINGW 1) +set(CMAKE_COMPILER_IS_CYGWIN ) +if(CMAKE_COMPILER_IS_CYGWIN) + set(CYGWIN 1) + set(UNIX 1) +endif() + +set(CMAKE_CXX_COMPILER_ENV_VAR "CXX") + +if(CMAKE_COMPILER_IS_MINGW) + set(MINGW 1) +endif() +set(CMAKE_CXX_COMPILER_ID_RUN 1) +set(CMAKE_CXX_IGNORE_EXTENSIONS inl;h;hpp;HPP;H;o;O;obj;OBJ;def;DEF;rc;RC) +set(CMAKE_CXX_SOURCE_FILE_EXTENSIONS C;M;c++;cc;cpp;cxx;m;mm;CPP) +set(CMAKE_CXX_LINKER_PREFERENCE 30) +set(CMAKE_CXX_LINKER_PREFERENCE_PROPAGATES 1) + +# Save compiler ABI information. +set(CMAKE_CXX_SIZEOF_DATA_PTR "4") +set(CMAKE_CXX_COMPILER_ABI "") +set(CMAKE_CXX_LIBRARY_ARCHITECTURE "") + +if(CMAKE_CXX_SIZEOF_DATA_PTR) + set(CMAKE_SIZEOF_VOID_P "${CMAKE_CXX_SIZEOF_DATA_PTR}") +endif() + +if(CMAKE_CXX_COMPILER_ABI) + set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_CXX_COMPILER_ABI}") +endif() + +if(CMAKE_CXX_LIBRARY_ARCHITECTURE) + set(CMAKE_LIBRARY_ARCHITECTURE "") +endif() + + + + +set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "stdc++;mingw32;moldname;mingwex;msvcrt;advapi32;shell32;user32;kernel32;iconv;mingw32;moldname;mingwex;msvcrt") +set(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "C:/mingw/x32/lib/gcc/i686-w64-mingw32/4.9.2;C:/mingw/x32/lib/gcc;C:/mingw/x32/i686-w64-mingw32/lib;C:/mingw/x32/lib") +set(CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "") + + + diff --git a/_oldpip/pip_0.4.0_r5/CMakeFiles/2.8.12.2/CMakeDetermineCompilerABI_C.bin b/_oldpip/pip_0.4.0_r5/CMakeFiles/2.8.12.2/CMakeDetermineCompilerABI_C.bin new file mode 100644 index 0000000000000000000000000000000000000000..a4cbd250b4eeead5ef0844be3742b1b1c26c6829 GIT binary patch literal 45765 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 O%XGxdU7zxx_WuKQ;O7ni literal 0 HcmV?d00001 diff --git a/_oldpip/pip_0.4.0_r5/CMakeFiles/2.8.12.2/CMakeDetermineCompilerABI_CXX.bin b/_oldpip/pip_0.4.0_r5/CMakeFiles/2.8.12.2/CMakeDetermineCompilerABI_CXX.bin new file mode 100644 index 0000000000000000000000000000000000000000..96ebda839e6ac37a9ccd92d55c4d400871e21bc2 GIT binary patch literal 46794 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 H6XO35d8Lt= literal 0 HcmV?d00001 diff --git a/_oldpip/pip_0.4.0_r5/CMakeFiles/2.8.12.2/CMakeRCCompiler.cmake b/_oldpip/pip_0.4.0_r5/CMakeFiles/2.8.12.2/CMakeRCCompiler.cmake new file mode 100644 index 0000000..83df677 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/CMakeFiles/2.8.12.2/CMakeRCCompiler.cmake @@ -0,0 +1,6 @@ +set(CMAKE_RC_COMPILER "C:/mingw/x32/bin/windres.exe") +set(CMAKE_RC_COMPILER_ARG1 "") +set(CMAKE_RC_COMPILER_LOADED 1) +set(CMAKE_RC_SOURCE_FILE_EXTENSIONS rc) +set(CMAKE_RC_OUTPUT_EXTENSION .obj) +set(CMAKE_RC_COMPILER_ENV_VAR "RC") diff --git a/_oldpip/pip_0.4.0_r5/CMakeFiles/2.8.12.2/CMakeSystem.cmake b/_oldpip/pip_0.4.0_r5/CMakeFiles/2.8.12.2/CMakeSystem.cmake new file mode 100644 index 0000000..6bc8356 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/CMakeFiles/2.8.12.2/CMakeSystem.cmake @@ -0,0 +1,15 @@ +set(CMAKE_HOST_SYSTEM "Windows-6.1") +set(CMAKE_HOST_SYSTEM_NAME "Windows") +set(CMAKE_HOST_SYSTEM_VERSION "6.1") +set(CMAKE_HOST_SYSTEM_PROCESSOR "AMD64") + + + +set(CMAKE_SYSTEM "Windows-6.1") +set(CMAKE_SYSTEM_NAME "Windows") +set(CMAKE_SYSTEM_VERSION "6.1") +set(CMAKE_SYSTEM_PROCESSOR "AMD64") + +set(CMAKE_CROSSCOMPILING "FALSE") + +set(CMAKE_SYSTEM_LOADED 1) diff --git a/_oldpip/pip_0.4.0_r5/CMakeFiles/2.8.12.2/CompilerIdC/CMakeCCompilerId.c b/_oldpip/pip_0.4.0_r5/CMakeFiles/2.8.12.2/CompilerIdC/CMakeCCompilerId.c new file mode 100644 index 0000000..1f4382e --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/CMakeFiles/2.8.12.2/CompilerIdC/CMakeCCompilerId.c @@ -0,0 +1,389 @@ +#ifdef __cplusplus +# error "A C++ compiler has been selected for C." +#endif + +/* Version number components: V=Version, R=Revision, P=Patch + Version date components: YYYY=Year, MM=Month, DD=Day */ + +#if defined(__18CXX) +# define ID_VOID_MAIN +#endif + +#if defined(__INTEL_COMPILER) || defined(__ICC) +# define COMPILER_ID "Intel" + /* __INTEL_COMPILER = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10) +# if defined(__INTEL_COMPILER_BUILD_DATE) + /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */ +# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE) +# endif + +#elif defined(__PATHCC__) +# define COMPILER_ID "PathScale" +# define COMPILER_VERSION_MAJOR DEC(__PATHCC__) +# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__) +# if defined(__PATHCC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__) +# endif + +#elif defined(__clang__) +# define COMPILER_ID "Clang" +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) + +#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__) +# define COMPILER_ID "Embarcadero" +# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF) +# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) +# define COMPILER_VERSION_PATCH HEX(__CODEGEARC_VERSION__ & 0xFFFF) + +#elif defined(__BORLANDC__) +# define COMPILER_ID "Borland" + /* __BORLANDC__ = 0xVRR */ +# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) +# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) + +#elif defined(__WATCOMC__) +# define COMPILER_ID "Watcom" + /* __WATCOMC__ = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) +# define COMPILER_VERSION_MINOR DEC(__WATCOMC__ % 100) + +#elif defined(__SUNPRO_C) +# define COMPILER_ID "SunPro" +# if __SUNPRO_C >= 0x5100 + /* __SUNPRO_C = 0xVRRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>12) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) +# else + /* __SUNPRO_C = 0xVRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>8) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) +# endif + +#elif defined(__HP_cc) +# define COMPILER_ID "HP" + /* __HP_cc = VVRRPP */ +# define COMPILER_VERSION_MAJOR DEC(__HP_cc/10000) +# define COMPILER_VERSION_MINOR DEC(__HP_cc/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__HP_cc % 100) + +#elif defined(__DECC) +# define COMPILER_ID "Compaq" + /* __DECC_VER = VVRRTPPPP */ +# define COMPILER_VERSION_MAJOR DEC(__DECC_VER/10000000) +# define COMPILER_VERSION_MINOR DEC(__DECC_VER/100000 % 100) +# define COMPILER_VERSION_PATCH DEC(__DECC_VER % 10000) + +#elif defined(__IBMC__) +# if defined(__COMPILER_VER__) +# define COMPILER_ID "zOS" +# else +# if __IBMC__ >= 800 +# define COMPILER_ID "XL" +# else +# define COMPILER_ID "VisualAge" +# endif + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) +# endif + +#elif defined(__PGI) +# define COMPILER_ID "PGI" +# define COMPILER_VERSION_MAJOR DEC(__PGIC__) +# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) +# if defined(__PGIC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) +# endif + +#elif defined(_CRAYC) +# define COMPILER_ID "Cray" +# define COMPILER_VERSION_MAJOR DEC(_RELEASE) +# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) + +#elif defined(__TI_COMPILER_VERSION__) +# define COMPILER_ID "TI" + /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ +# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) +# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) +# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) + +#elif defined(__TINYC__) +# define COMPILER_ID "TinyCC" + +#elif defined(__SCO_VERSION__) +# define COMPILER_ID "SCO" + +#elif defined(__GNUC__) +# define COMPILER_ID "GNU" +# define COMPILER_VERSION_MAJOR DEC(__GNUC__) +# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) +# if defined(__GNUC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(_MSC_VER) +# define COMPILER_ID "MSVC" + /* _MSC_VER = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) +# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) +# if defined(_MSC_FULL_VER) +# if _MSC_VER >= 1400 + /* _MSC_FULL_VER = VVRRPPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) +# else + /* _MSC_FULL_VER = VVRRPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) +# endif +# endif +# if defined(_MSC_BUILD) +# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) +# endif + +/* Analog VisualDSP++ >= 4.5.6 */ +#elif defined(__VISUALDSPVERSION__) +# define COMPILER_ID "ADSP" + /* __VISUALDSPVERSION__ = 0xVVRRPP00 */ +# define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24) +# define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8 & 0xFF) + +/* Analog VisualDSP++ < 4.5.6 */ +#elif defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__) +# define COMPILER_ID "ADSP" + +/* IAR Systems compiler for embedded systems. + http://www.iar.com */ +#elif defined(__IAR_SYSTEMS_ICC__ ) || defined(__IAR_SYSTEMS_ICC) +# define COMPILER_ID "IAR" + +/* sdcc, the small devices C compiler for embedded systems, + http://sdcc.sourceforge.net */ +#elif defined(SDCC) +# define COMPILER_ID "SDCC" + /* SDCC = VRP */ +# define COMPILER_VERSION_MAJOR DEC(SDCC/100) +# define COMPILER_VERSION_MINOR DEC(SDCC/10 % 10) +# define COMPILER_VERSION_PATCH DEC(SDCC % 10) + +#elif defined(_SGI_COMPILER_VERSION) || defined(_COMPILER_VERSION) +# define COMPILER_ID "MIPSpro" +# if defined(_SGI_COMPILER_VERSION) + /* _SGI_COMPILER_VERSION = VRP */ +# define COMPILER_VERSION_MAJOR DEC(_SGI_COMPILER_VERSION/100) +# define COMPILER_VERSION_MINOR DEC(_SGI_COMPILER_VERSION/10 % 10) +# define COMPILER_VERSION_PATCH DEC(_SGI_COMPILER_VERSION % 10) +# else + /* _COMPILER_VERSION = VRP */ +# define COMPILER_VERSION_MAJOR DEC(_COMPILER_VERSION/100) +# define COMPILER_VERSION_MINOR DEC(_COMPILER_VERSION/10 % 10) +# define COMPILER_VERSION_PATCH DEC(_COMPILER_VERSION % 10) +# endif + +/* This compiler is either not known or is too old to define an + identification macro. Try to identify the platform and guess that + it is the native compiler. */ +#elif defined(__sgi) +# define COMPILER_ID "MIPSpro" + +#elif defined(__hpux) || defined(__hpua) +# define COMPILER_ID "HP" + +#else /* unknown compiler */ +# define COMPILER_ID "" + +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; + +/* Identify known platforms by name. */ +#if defined(__linux) || defined(__linux__) || defined(linux) +# define PLATFORM_ID "Linux" + +#elif defined(__CYGWIN__) +# define PLATFORM_ID "Cygwin" + +#elif defined(__MINGW32__) +# define PLATFORM_ID "MinGW" + +#elif defined(__APPLE__) +# define PLATFORM_ID "Darwin" + +#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) +# define PLATFORM_ID "Windows" + +#elif defined(__FreeBSD__) || defined(__FreeBSD) +# define PLATFORM_ID "FreeBSD" + +#elif defined(__NetBSD__) || defined(__NetBSD) +# define PLATFORM_ID "NetBSD" + +#elif defined(__OpenBSD__) || defined(__OPENBSD) +# define PLATFORM_ID "OpenBSD" + +#elif defined(__sun) || defined(sun) +# define PLATFORM_ID "SunOS" + +#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) +# define PLATFORM_ID "AIX" + +#elif defined(__sgi) || defined(__sgi__) || defined(_SGI) +# define PLATFORM_ID "IRIX" + +#elif defined(__hpux) || defined(__hpux__) +# define PLATFORM_ID "HP-UX" + +#elif defined(__HAIKU__) +# define PLATFORM_ID "Haiku" + +#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) +# define PLATFORM_ID "BeOS" + +#elif defined(__QNX__) || defined(__QNXNTO__) +# define PLATFORM_ID "QNX" + +#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) +# define PLATFORM_ID "Tru64" + +#elif defined(__riscos) || defined(__riscos__) +# define PLATFORM_ID "RISCos" + +#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) +# define PLATFORM_ID "SINIX" + +#elif defined(__UNIX_SV__) +# define PLATFORM_ID "UNIX_SV" + +#elif defined(__bsdos__) +# define PLATFORM_ID "BSDOS" + +#elif defined(_MPRAS) || defined(MPRAS) +# define PLATFORM_ID "MP-RAS" + +#elif defined(__osf) || defined(__osf__) +# define PLATFORM_ID "OSF1" + +#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) +# define PLATFORM_ID "SCO_SV" + +#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) +# define PLATFORM_ID "ULTRIX" + +#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) +# define PLATFORM_ID "Xenix" + +#else /* unknown platform */ +# define PLATFORM_ID "" + +#endif + +/* For windows compilers MSVC and Intel we can determine + the architecture of the compiler being used. This is because + the compilers do not have flags that can change the architecture, + but rather depend on which compiler is being used +*/ +#if defined(_WIN32) && defined(_MSC_VER) +# if defined(_M_IA64) +# define ARCHITECTURE_ID "IA64" + +# elif defined(_M_X64) || defined(_M_AMD64) +# define ARCHITECTURE_ID "x64" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# elif defined(_M_ARM) +# define ARCHITECTURE_ID "ARM" + +# elif defined(_M_MIPS) +# define ARCHITECTURE_ID "MIPS" + +# elif defined(_M_SH) +# define ARCHITECTURE_ID "SHx" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#else +# define ARCHITECTURE_ID "" +#endif + +/* Convert integer to decimal digit literals. */ +#define DEC(n) \ + ('0' + (((n) / 10000000)%10)), \ + ('0' + (((n) / 1000000)%10)), \ + ('0' + (((n) / 100000)%10)), \ + ('0' + (((n) / 10000)%10)), \ + ('0' + (((n) / 1000)%10)), \ + ('0' + (((n) / 100)%10)), \ + ('0' + (((n) / 10)%10)), \ + ('0' + ((n) % 10)) + +/* Convert integer to hex digit literals. */ +#define HEX(n) \ + ('0' + ((n)>>28 & 0xF)), \ + ('0' + ((n)>>24 & 0xF)), \ + ('0' + ((n)>>20 & 0xF)), \ + ('0' + ((n)>>16 & 0xF)), \ + ('0' + ((n)>>12 & 0xF)), \ + ('0' + ((n)>>8 & 0xF)), \ + ('0' + ((n)>>4 & 0xF)), \ + ('0' + ((n) & 0xF)) + +/* Construct a string literal encoding the version number components. */ +#ifdef COMPILER_VERSION_MAJOR +char const info_version[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', + COMPILER_VERSION_MAJOR, +# ifdef COMPILER_VERSION_MINOR + '.', COMPILER_VERSION_MINOR, +# ifdef COMPILER_VERSION_PATCH + '.', COMPILER_VERSION_PATCH, +# ifdef COMPILER_VERSION_TWEAK + '.', COMPILER_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; +char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; + + + +/*--------------------------------------------------------------------------*/ + +#ifdef ID_VOID_MAIN +void main() {} +#else +int main(int argc, char* argv[]) +{ + int require = 0; + require += info_compiler[argc]; + require += info_platform[argc]; + require += info_arch[argc]; +#ifdef COMPILER_VERSION_MAJOR + require += info_version[argc]; +#endif + (void)argv; + return require; +} +#endif diff --git a/_oldpip/pip_0.4.0_r5/CMakeFiles/2.8.12.2/CompilerIdC/a.exe b/_oldpip/pip_0.4.0_r5/CMakeFiles/2.8.12.2/CompilerIdC/a.exe new file mode 100644 index 0000000000000000000000000000000000000000..0eb98c8a9f3bc15d18b636cec7ed08a3920532a9 GIT binary patch literal 45836 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 & 0x00FF) +# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) +# define COMPILER_VERSION_PATCH HEX(__CODEGEARC_VERSION__ & 0xFFFF) + +#elif defined(__BORLANDC__) +# define COMPILER_ID "Borland" + /* __BORLANDC__ = 0xVRR */ +# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) +# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) + +#elif defined(__WATCOMC__) +# define COMPILER_ID "Watcom" + /* __WATCOMC__ = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) +# define COMPILER_VERSION_MINOR DEC(__WATCOMC__ % 100) + +#elif defined(__SUNPRO_CC) +# define COMPILER_ID "SunPro" +# if __SUNPRO_CC >= 0x5100 + /* __SUNPRO_CC = 0xVRRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>12) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) +# else + /* __SUNPRO_CC = 0xVRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>8) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) +# endif + +#elif defined(__HP_aCC) +# define COMPILER_ID "HP" + /* __HP_aCC = VVRRPP */ +# define COMPILER_VERSION_MAJOR DEC(__HP_aCC/10000) +# define COMPILER_VERSION_MINOR DEC(__HP_aCC/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__HP_aCC % 100) + +#elif defined(__DECCXX) +# define COMPILER_ID "Compaq" + /* __DECCXX_VER = VVRRTPPPP */ +# define COMPILER_VERSION_MAJOR DEC(__DECCXX_VER/10000000) +# define COMPILER_VERSION_MINOR DEC(__DECCXX_VER/100000 % 100) +# define COMPILER_VERSION_PATCH DEC(__DECCXX_VER % 10000) + +#elif defined(__IBMCPP__) +# if defined(__COMPILER_VER__) +# define COMPILER_ID "zOS" +# else +# if __IBMCPP__ >= 800 +# define COMPILER_ID "XL" +# else +# define COMPILER_ID "VisualAge" +# endif + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) +# endif + +#elif defined(__PGI) +# define COMPILER_ID "PGI" +# define COMPILER_VERSION_MAJOR DEC(__PGIC__) +# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) +# if defined(__PGIC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) +# endif + +#elif defined(_CRAYC) +# define COMPILER_ID "Cray" +# define COMPILER_VERSION_MAJOR DEC(_RELEASE) +# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) + +#elif defined(__TI_COMPILER_VERSION__) +# define COMPILER_ID "TI" + /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ +# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) +# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) +# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) + +#elif defined(__SCO_VERSION__) +# define COMPILER_ID "SCO" + +#elif defined(__GNUC__) +# define COMPILER_ID "GNU" +# define COMPILER_VERSION_MAJOR DEC(__GNUC__) +# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) +# if defined(__GNUC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(_MSC_VER) +# define COMPILER_ID "MSVC" + /* _MSC_VER = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) +# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) +# if defined(_MSC_FULL_VER) +# if _MSC_VER >= 1400 + /* _MSC_FULL_VER = VVRRPPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) +# else + /* _MSC_FULL_VER = VVRRPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) +# endif +# endif +# if defined(_MSC_BUILD) +# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) +# endif + +/* Analog VisualDSP++ >= 4.5.6 */ +#elif defined(__VISUALDSPVERSION__) +# define COMPILER_ID "ADSP" + /* __VISUALDSPVERSION__ = 0xVVRRPP00 */ +# define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24) +# define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8 & 0xFF) + +/* Analog VisualDSP++ < 4.5.6 */ +#elif defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__) +# define COMPILER_ID "ADSP" + +/* IAR Systems compiler for embedded systems. + http://www.iar.com */ +#elif defined(__IAR_SYSTEMS_ICC__ ) || defined(__IAR_SYSTEMS_ICC) +# define COMPILER_ID "IAR" + +#elif defined(_SGI_COMPILER_VERSION) || defined(_COMPILER_VERSION) +# define COMPILER_ID "MIPSpro" +# if defined(_SGI_COMPILER_VERSION) + /* _SGI_COMPILER_VERSION = VRP */ +# define COMPILER_VERSION_MAJOR DEC(_SGI_COMPILER_VERSION/100) +# define COMPILER_VERSION_MINOR DEC(_SGI_COMPILER_VERSION/10 % 10) +# define COMPILER_VERSION_PATCH DEC(_SGI_COMPILER_VERSION % 10) +# else + /* _COMPILER_VERSION = VRP */ +# define COMPILER_VERSION_MAJOR DEC(_COMPILER_VERSION/100) +# define COMPILER_VERSION_MINOR DEC(_COMPILER_VERSION/10 % 10) +# define COMPILER_VERSION_PATCH DEC(_COMPILER_VERSION % 10) +# endif + +/* This compiler is either not known or is too old to define an + identification macro. Try to identify the platform and guess that + it is the native compiler. */ +#elif defined(__sgi) +# define COMPILER_ID "MIPSpro" + +#elif defined(__hpux) || defined(__hpua) +# define COMPILER_ID "HP" + +#else /* unknown compiler */ +# define COMPILER_ID "" + +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; + +/* Identify known platforms by name. */ +#if defined(__linux) || defined(__linux__) || defined(linux) +# define PLATFORM_ID "Linux" + +#elif defined(__CYGWIN__) +# define PLATFORM_ID "Cygwin" + +#elif defined(__MINGW32__) +# define PLATFORM_ID "MinGW" + +#elif defined(__APPLE__) +# define PLATFORM_ID "Darwin" + +#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) +# define PLATFORM_ID "Windows" + +#elif defined(__FreeBSD__) || defined(__FreeBSD) +# define PLATFORM_ID "FreeBSD" + +#elif defined(__NetBSD__) || defined(__NetBSD) +# define PLATFORM_ID "NetBSD" + +#elif defined(__OpenBSD__) || defined(__OPENBSD) +# define PLATFORM_ID "OpenBSD" + +#elif defined(__sun) || defined(sun) +# define PLATFORM_ID "SunOS" + +#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) +# define PLATFORM_ID "AIX" + +#elif defined(__sgi) || defined(__sgi__) || defined(_SGI) +# define PLATFORM_ID "IRIX" + +#elif defined(__hpux) || defined(__hpux__) +# define PLATFORM_ID "HP-UX" + +#elif defined(__HAIKU__) +# define PLATFORM_ID "Haiku" + +#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) +# define PLATFORM_ID "BeOS" + +#elif defined(__QNX__) || defined(__QNXNTO__) +# define PLATFORM_ID "QNX" + +#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) +# define PLATFORM_ID "Tru64" + +#elif defined(__riscos) || defined(__riscos__) +# define PLATFORM_ID "RISCos" + +#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) +# define PLATFORM_ID "SINIX" + +#elif defined(__UNIX_SV__) +# define PLATFORM_ID "UNIX_SV" + +#elif defined(__bsdos__) +# define PLATFORM_ID "BSDOS" + +#elif defined(_MPRAS) || defined(MPRAS) +# define PLATFORM_ID "MP-RAS" + +#elif defined(__osf) || defined(__osf__) +# define PLATFORM_ID "OSF1" + +#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) +# define PLATFORM_ID "SCO_SV" + +#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) +# define PLATFORM_ID "ULTRIX" + +#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) +# define PLATFORM_ID "Xenix" + +#else /* unknown platform */ +# define PLATFORM_ID "" + +#endif + +/* For windows compilers MSVC and Intel we can determine + the architecture of the compiler being used. This is because + the compilers do not have flags that can change the architecture, + but rather depend on which compiler is being used +*/ +#if defined(_WIN32) && defined(_MSC_VER) +# if defined(_M_IA64) +# define ARCHITECTURE_ID "IA64" + +# elif defined(_M_X64) || defined(_M_AMD64) +# define ARCHITECTURE_ID "x64" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# elif defined(_M_ARM) +# define ARCHITECTURE_ID "ARM" + +# elif defined(_M_MIPS) +# define ARCHITECTURE_ID "MIPS" + +# elif defined(_M_SH) +# define ARCHITECTURE_ID "SHx" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#else +# define ARCHITECTURE_ID "" +#endif + +/* Convert integer to decimal digit literals. */ +#define DEC(n) \ + ('0' + (((n) / 10000000)%10)), \ + ('0' + (((n) / 1000000)%10)), \ + ('0' + (((n) / 100000)%10)), \ + ('0' + (((n) / 10000)%10)), \ + ('0' + (((n) / 1000)%10)), \ + ('0' + (((n) / 100)%10)), \ + ('0' + (((n) / 10)%10)), \ + ('0' + ((n) % 10)) + +/* Convert integer to hex digit literals. */ +#define HEX(n) \ + ('0' + ((n)>>28 & 0xF)), \ + ('0' + ((n)>>24 & 0xF)), \ + ('0' + ((n)>>20 & 0xF)), \ + ('0' + ((n)>>16 & 0xF)), \ + ('0' + ((n)>>12 & 0xF)), \ + ('0' + ((n)>>8 & 0xF)), \ + ('0' + ((n)>>4 & 0xF)), \ + ('0' + ((n) & 0xF)) + +/* Construct a string literal encoding the version number components. */ +#ifdef COMPILER_VERSION_MAJOR +char const info_version[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', + COMPILER_VERSION_MAJOR, +# ifdef COMPILER_VERSION_MINOR + '.', COMPILER_VERSION_MINOR, +# ifdef COMPILER_VERSION_PATCH + '.', COMPILER_VERSION_PATCH, +# ifdef COMPILER_VERSION_TWEAK + '.', COMPILER_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; +char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; + + + +/*--------------------------------------------------------------------------*/ + +int main(int argc, char* argv[]) +{ + int require = 0; + require += info_compiler[argc]; + require += info_platform[argc]; +#ifdef COMPILER_VERSION_MAJOR + require += info_version[argc]; +#endif + (void)argv; + return require; +} diff --git a/_oldpip/pip_0.4.0_r5/CMakeFiles/2.8.12.2/CompilerIdCXX/a.exe b/_oldpip/pip_0.4.0_r5/CMakeFiles/2.8.12.2/CompilerIdCXX/a.exe new file mode 100644 index 0000000000000000000000000000000000000000..7daca6ecfbeae05e98955e8e08197055720267b6 GIT binary patch literal 46884 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 CozP1F literal 0 HcmV?d00001 diff --git a/_oldpip/pip_0.4.0_r5/CMakeFiles/CMakeDirectoryInformation.cmake b/_oldpip/pip_0.4.0_r5/CMakeFiles/CMakeDirectoryInformation.cmake new file mode 100644 index 0000000..cbec93f --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/CMakeFiles/CMakeDirectoryInformation.cmake @@ -0,0 +1,16 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "MinGW Makefiles" Generator, CMake Version 2.8 + +# Relative path conversion top directories. +SET(CMAKE_RELATIVE_PATH_TOP_SOURCE "C:/libs/oldpip/pip_0.4.0_r5") +SET(CMAKE_RELATIVE_PATH_TOP_BINARY "C:/libs/oldpip/pip_0.4.0_r5") + +# Force unix paths in dependencies. +SET(CMAKE_FORCE_UNIX_PATHS 1) + + +# The C and CXX include file regular expressions for this directory. +SET(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$") +SET(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$") +SET(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN}) +SET(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN}) diff --git a/_oldpip/pip_0.4.0_r5/CMakeFiles/CMakeError.log b/_oldpip/pip_0.4.0_r5/CMakeFiles/CMakeError.log new file mode 100644 index 0000000..d3a4e9a --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/CMakeFiles/CMakeError.log @@ -0,0 +1,108 @@ +Determining if the Q_WS_X11 exist failed with the following output: +Change Dir: C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/CMakeTmp + +Run Build Command:C:/mingw/x32/bin/mingw32-make.exe "cmTryCompileExec3885744648/fast" +make -f CMakeFiles\cmTryCompileExec3885744648.dir\build.make CMakeFiles/cmTryCompileExec3885744648.dir/build + +C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles\CMakeTmp>mingw32-make -f CMakeFiles\cmTryCompileExec3885744648.dir\build.make CMakeFiles/cmTryCompileExec3885744648.dir/build +mingw32-make[1]: Entering directory 'C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/CMakeTmp' +"C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" -E cmake_progress_report C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles\CMakeTmp\CMakeFiles 1 +Building CXX object CMakeFiles/cmTryCompileExec3885744648.dir/CheckSymbolExists.cxx.obj +C:\mingw\x32\bin\g++.exe @CMakeFiles/cmTryCompileExec3885744648.dir/includes_CXX.rsp -o CMakeFiles\cmTryCompileExec3885744648.dir\CheckSymbolExists.cxx.obj -c C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles\CMakeTmp\CheckSymbolExists.cxx +C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles\CMakeTmp\CheckSymbolExists.cxx: In function 'int main(int, char**)': +C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles\CMakeTmp\CheckSymbolExists.cxx:8:19: error: 'Q_WS_X11' was not declared in this scope + return ((int*)(&Q_WS_X11))[argc]; + ^ +CMakeFiles\cmTryCompileExec3885744648.dir\build.make:60: recipe for target 'CMakeFiles/cmTryCompileExec3885744648.dir/CheckSymbolExists.cxx.obj' failed +mingw32-make[1]: *** [CMakeFiles/cmTryCompileExec3885744648.dir/CheckSymbolExists.cxx.obj] Error 1 +mingw32-make[1]: Leaving directory 'C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/CMakeTmp' +mingw32-make.exe: *** [cmTryCompileExec3885744648/fast] Error 2 +makefile:116: recipe for target 'cmTryCompileExec3885744648/fast' failed + +File C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/CMakeTmp/CheckSymbolExists.cxx: +/* */ +#include + +int main(int argc, char** argv) +{ + (void)argv; +#ifndef Q_WS_X11 + return ((int*)(&Q_WS_X11))[argc]; +#else + (void)argc; + return 0; +#endif +} + +Determining if the Q_WS_QWS exist failed with the following output: +Change Dir: C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/CMakeTmp + +Run Build Command:C:/mingw/x32/bin/mingw32-make.exe "cmTryCompileExec2417901677/fast" +make -f CMakeFiles\cmTryCompileExec2417901677.dir\build.make CMakeFiles/cmTryCompileExec2417901677.dir/build + +C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles\CMakeTmp>mingw32-make -f CMakeFiles\cmTryCompileExec2417901677.dir\build.make CMakeFiles/cmTryCompileExec2417901677.dir/build +mingw32-make[1]: Entering directory 'C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/CMakeTmp' +"C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" -E cmake_progress_report C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles\CMakeTmp\CMakeFiles 1 +Building CXX object CMakeFiles/cmTryCompileExec2417901677.dir/CheckSymbolExists.cxx.obj +C:\mingw\x32\bin\g++.exe @CMakeFiles/cmTryCompileExec2417901677.dir/includes_CXX.rsp -o CMakeFiles\cmTryCompileExec2417901677.dir\CheckSymbolExists.cxx.obj -c C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles\CMakeTmp\CheckSymbolExists.cxx +C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles\CMakeTmp\CheckSymbolExists.cxx: In function 'int main(int, char**)': +C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles\CMakeTmp\CheckSymbolExists.cxx:8:19: error: 'Q_WS_QWS' was not declared in this scope + return ((int*)(&Q_WS_QWS))[argc]; + ^ +CMakeFiles\cmTryCompileExec2417901677.dir\build.make:60: recipe for target 'CMakeFiles/cmTryCompileExec2417901677.dir/CheckSymbolExists.cxx.obj' failed +mingw32-make[1]: *** [CMakeFiles/cmTryCompileExec2417901677.dir/CheckSymbolExists.cxx.obj] Error 1 +mingw32-make[1]: Leaving directory 'C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/CMakeTmp' +mingw32-make.exe: *** [cmTryCompileExec2417901677/fast] Error 2 +makefile:116: recipe for target 'cmTryCompileExec2417901677/fast' failed + +File C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/CMakeTmp/CheckSymbolExists.cxx: +/* */ +#include + +int main(int argc, char** argv) +{ + (void)argv; +#ifndef Q_WS_QWS + return ((int*)(&Q_WS_QWS))[argc]; +#else + (void)argc; + return 0; +#endif +} + +Determining if the Q_WS_MAC exist failed with the following output: +Change Dir: C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/CMakeTmp + +Run Build Command:C:/mingw/x32/bin/mingw32-make.exe "cmTryCompileExec2522107080/fast" +make -f CMakeFiles\cmTryCompileExec2522107080.dir\build.make CMakeFiles/cmTryCompileExec2522107080.dir/build + +C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles\CMakeTmp>mingw32-make -f CMakeFiles\cmTryCompileExec2522107080.dir\build.make CMakeFiles/cmTryCompileExec2522107080.dir/build +mingw32-make[1]: Entering directory 'C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/CMakeTmp' +"C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" -E cmake_progress_report C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles\CMakeTmp\CMakeFiles 1 +Building CXX object CMakeFiles/cmTryCompileExec2522107080.dir/CheckSymbolExists.cxx.obj +C:\mingw\x32\bin\g++.exe @CMakeFiles/cmTryCompileExec2522107080.dir/includes_CXX.rsp -o CMakeFiles\cmTryCompileExec2522107080.dir\CheckSymbolExists.cxx.obj -c C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles\CMakeTmp\CheckSymbolExists.cxx +C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles\CMakeTmp\CheckSymbolExists.cxx: In function 'int main(int, char**)': +C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles\CMakeTmp\CheckSymbolExists.cxx:8:19: error: 'Q_WS_MAC' was not declared in this scope + return ((int*)(&Q_WS_MAC))[argc]; + ^ +CMakeFiles\cmTryCompileExec2522107080.dir\build.make:60: recipe for target 'CMakeFiles/cmTryCompileExec2522107080.dir/CheckSymbolExists.cxx.obj' failed +mingw32-make[1]: *** [CMakeFiles/cmTryCompileExec2522107080.dir/CheckSymbolExists.cxx.obj] Error 1 +mingw32-make[1]: Leaving directory 'C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/CMakeTmp' +makefile:116: recipe for target 'cmTryCompileExec2522107080/fast' failed +mingw32-make.exe: *** [cmTryCompileExec2522107080/fast] Error 2 + +File C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/CMakeTmp/CheckSymbolExists.cxx: +/* */ +#include + +int main(int argc, char** argv) +{ + (void)argv; +#ifndef Q_WS_MAC + return ((int*)(&Q_WS_MAC))[argc]; +#else + (void)argc; + return 0; +#endif +} + diff --git a/_oldpip/pip_0.4.0_r5/CMakeFiles/CMakeOutput.log b/_oldpip/pip_0.4.0_r5/CMakeFiles/CMakeOutput.log new file mode 100644 index 0000000..fc88a59 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/CMakeFiles/CMakeOutput.log @@ -0,0 +1,527 @@ +The system is: Windows - 6.1 - AMD64 +Compiling the C compiler identification source file "CMakeCCompilerId.c" succeeded. +Compiler: C:/mingw/x32/bin/gcc.exe +Build flags: +Id flags: + +The output was: +0 + + +Compilation of the C compiler identification source "CMakeCCompilerId.c" produced "a.exe" + +The C compiler identification is GNU, found in "C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/2.8.12.2/CompilerIdC/a.exe" + +Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" succeeded. +Compiler: C:/mingw/x32/bin/g++.exe +Build flags: +Id flags: + +The output was: +0 + + +Compilation of the CXX compiler identification source "CMakeCXXCompilerId.cpp" produced "a.exe" + +The CXX compiler identification is GNU, found in "C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/2.8.12.2/CompilerIdCXX/a.exe" + +Determining if the C compiler works passed with the following output: +Change Dir: C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/CMakeTmp + +Run Build Command:C:/mingw/x32/bin/mingw32-make.exe "cmTryCompileExec3426415067/fast" +make -f CMakeFiles\cmTryCompileExec3426415067.dir\build.make CMakeFiles/cmTryCompileExec3426415067.dir/build + +C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles\CMakeTmp>mingw32-make -f CMakeFiles\cmTryCompileExec3426415067.dir\build.make CMakeFiles/cmTryCompileExec3426415067.dir/build +mingw32-make[1]: Entering directory 'C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/CMakeTmp' +"C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" -E cmake_progress_report C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles\CMakeTmp\CMakeFiles 1 +Building C object CMakeFiles/cmTryCompileExec3426415067.dir/testCCompiler.c.obj +C:\mingw\x32\bin\gcc.exe -o CMakeFiles\cmTryCompileExec3426415067.dir\testCCompiler.c.obj -c C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles\CMakeTmp\testCCompiler.c +Linking C executable cmTryCompileExec3426415067.exe +"C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" -E cmake_link_script CMakeFiles\cmTryCompileExec3426415067.dir\link.txt --verbose=1 +"C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" -E remove -f CMakeFiles\cmTryCompileExec3426415067.dir/objects.a +C:\mingw\x32\bin\ar.exe cr CMakeFiles\cmTryCompileExec3426415067.dir/objects.a @CMakeFiles\cmTryCompileExec3426415067.dir\objects1.rsp +C:\mingw\x32\bin\gcc.exe -Wl,--whole-archive CMakeFiles\cmTryCompileExec3426415067.dir/objects.a -Wl,--no-whole-archive -o cmTryCompileExec3426415067.exe -Wl,--out-implib,libcmTryCompileExec3426415067.dll.a -Wl,--major-image-version,0,--minor-image-version,0 -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 +mingw32-make[1]: Leaving directory 'C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/CMakeTmp' + + +Detecting C compiler ABI info compiled with the following output: +Change Dir: C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/CMakeTmp + +Run Build Command:C:/mingw/x32/bin/mingw32-make.exe "cmTryCompileExec686806269/fast" +make -f CMakeFiles\cmTryCompileExec686806269.dir\build.make CMakeFiles/cmTryCompileExec686806269.dir/build + +C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles\CMakeTmp>mingw32-make -f CMakeFiles\cmTryCompileExec686806269.dir\build.make CMakeFiles/cmTryCompileExec686806269.dir/build +mingw32-make[1]: Entering directory 'C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/CMakeTmp' +"C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" -E cmake_progress_report C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles\CMakeTmp\CMakeFiles 1 +Building C object CMakeFiles/cmTryCompileExec686806269.dir/CMakeCCompilerABI.c.obj +C:\mingw\x32\bin\gcc.exe -o CMakeFiles\cmTryCompileExec686806269.dir\CMakeCCompilerABI.c.obj -c "C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\CMakeCCompilerABI.c" +Linking C executable cmTryCompileExec686806269.exe +"C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" -E cmake_link_script CMakeFiles\cmTryCompileExec686806269.dir\link.txt --verbose=1 +"C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" -E remove -f CMakeFiles\cmTryCompileExec686806269.dir/objects.a +C:\mingw\x32\bin\ar.exe cr CMakeFiles\cmTryCompileExec686806269.dir/objects.a @CMakeFiles\cmTryCompileExec686806269.dir\objects1.rsp +C:\mingw\x32\bin\gcc.exe -v -Wl,--whole-archive CMakeFiles\cmTryCompileExec686806269.dir/objects.a -Wl,--no-whole-archive -o cmTryCompileExec686806269.exe -Wl,--out-implib,libcmTryCompileExec686806269.dll.a -Wl,--major-image-version,0,--minor-image-version,0 +Using built-in specs. +COLLECT_GCC=C:\mingw\x32\bin\gcc.exe +COLLECT_LTO_WRAPPER=C:/mingw/x32/bin/../libexec/gcc/i686-w64-mingw32/4.9.2/lto-wrapper.exe +Target: i686-w64-mingw32 +Configured with: ../../../src/gcc-4.9.2/configure --host=i686-w64-mingw32 --build=i686-w64-mingw32 --target=i686-w64-mingw32 --prefix=/mingw32 --with-sysroot=/c/mingw492/i686-492-win32-dwarf-rt_v3-rev0/mingw32 --with-gxx-include-dir=/mingw32/i686-w64-mingw32/include/c++ --enable-shared --enable-static --disable-multilib --enable-languages=ada,c,c++,fortran,objc,obj-c++,lto --enable-libstdcxx-time=yes --enable-threads=win32 --enable-libgomp --enable-libatomic --enable-lto --enable-graphite --enable-checking=release --enable-fully-dynamic-string --enable-version-specific-runtime-libs --disable-sjlj-exceptions --with-dwarf2 --disable-isl-version-check --disable-cloog-version-check --disable-libstdcxx-pch --disable-libstdcxx-debug --enable-bootstrap --disable-rpath --disable-win32-registry --disable-nls --disable-werror --disable-symvers --with-gnu-as --with-gnu-ld --with-arch=i686 --with-tune=generic --with-libiconv --with-system-zlib --with-gmp=/c/mingw492/prerequisites/i686-w64-mingw32-static --with-mpfr=/c/mingw492/prerequisites/i686-w64-mingw32-static --with-mpc=/c/mingw492/prerequisites/i686-w64-mingw32-static --with-isl=/c/mingw492/prerequisites/i686-w64-mingw32-static --with-cloog=/c/mingw492/prerequisites/i686-w64-mingw32-static --enable-cloog-backend=isl --with-pkgversion='i686-win32-dwarf-rev0, Built by MinGW-W64 project' --with-bugurl=http://sourceforge.net/projects/mingw-w64 CFLAGS='-O2 -pipe -I/c/mingw492/i686-492-win32-dwarf-rt_v3-rev0/mingw32/opt/include -I/c/mingw492/prerequisites/i686-zlib-static/include -I/c/mingw492/prerequisites/i686-w64-mingw32-static/include' CXXFLAGS='-O2 -pipe -I/c/mingw492/i686-492-win32-dwarf-rt_v3-rev0/mingw32/opt/include -I/c/mingw492/prerequisites/i686-zlib-static/include -I/c/mingw492/prerequisites/i686-w64-mingw32-static/include' CPPFLAGS= LDFLAGS='-pipe -L/c/mingw492/i686-492-win32-dwarf-rt_v3-rev0/mingw32/opt/lib -L/c/mingw492/prerequisites/i686-zlib-static/lib -L/c/mingw492/prerequisites/i686-w64-mingw32-static/lib -Wl,--large-address-aware' +Thread model: win32 +gcc version 4.9.2 (i686-win32-dwarf-rev0, Built by MinGW-W64 project) +COMPILER_PATH=C:/mingw/x32/bin/../libexec/gcc/i686-w64-mingw32/4.9.2/;C:/mingw/x32/bin/../libexec/gcc/;C:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/bin/ +LIBRARY_PATH=C:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/;C:/mingw/x32/bin/../lib/gcc/;C:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/lib/../lib/;C:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../../../lib/;C:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/lib/;C:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../../ +COLLECT_GCC_OPTIONS='-v' '-o' 'cmTryCompileExec686806269.exe' '-mtune=generic' '-march=i686' + C:/mingw/x32/bin/../libexec/gcc/i686-w64-mingw32/4.9.2/collect2.exe -plugin C:/mingw/x32/bin/../libexec/gcc/i686-w64-mingw32/4.9.2/liblto_plugin-0.dll -plugin-opt=C:/mingw/x32/bin/../libexec/gcc/i686-w64-mingw32/4.9.2/lto-wrapper.exe -plugin-opt=-fresolution=C:\Users\Andrey\AppData\Local\Temp\cceObk9f.res -plugin-opt=-pass-through=-lmingw32 -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_eh -plugin-opt=-pass-through=-lmoldname -plugin-opt=-pass-through=-lmingwex -plugin-opt=-pass-through=-lmsvcrt -plugin-opt=-pass-through=-ladvapi32 -plugin-opt=-pass-through=-lshell32 -plugin-opt=-pass-through=-luser32 -plugin-opt=-pass-through=-lkernel32 -plugin-opt=-pass-through=-liconv -plugin-opt=-pass-through=-lmingw32 -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_eh -plugin-opt=-pass-through=-lmoldname -plugin-opt=-pass-through=-lmingwex -plugin-opt=-pass-through=-lmsvcrt --sysroot=C:/mingw492/i686-492-win32-dwarf-rt_v3-rev0/mingw32 -m i386pe -Bdynamic -o cmTryCompileExec686806269.exe C:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/lib/../lib/crt2.o C:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/crtbegin.o -LC:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2 -LC:/mingw/x32/bin/../lib/gcc -LC:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/lib/../lib -LC:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../../../lib -LC:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/lib -LC:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../.. --whole-archive CMakeFiles\cmTryCompileExec686806269.dir/objects.a --no-whole-archive --out-implib libcmTryCompileExec686806269.dll.a --major-image-version 0 --minor-image-version 0 -lmingw32 -lgcc -lgcc_eh -lmoldname -lmingwex -lmsvcrt -ladvapi32 -lshell32 -luser32 -lkernel32 -liconv -lmingw32 -lgcc -lgcc_eh -lmoldname -lmingwex -lmsvcrt C:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/crtend.o +mingw32-make[1]: Leaving directory 'C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/CMakeTmp' + + +Parsed C implicit link information from above output: + link line regex: [^( *|.*[/\])(ld\.exe|([^/\]+-)?ld|collect2)[^/\]*( |$)] + ignore line: [Change Dir: C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/CMakeTmp] + ignore line: [] + ignore line: [Run Build Command:C:/mingw/x32/bin/mingw32-make.exe "cmTryCompileExec686806269/fast"] + ignore line: [make -f CMakeFiles\cmTryCompileExec686806269.dir\build.make CMakeFiles/cmTryCompileExec686806269.dir/build] + ignore line: [] + ignore line: [C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles\CMakeTmp>mingw32-make -f CMakeFiles\cmTryCompileExec686806269.dir\build.make CMakeFiles/cmTryCompileExec686806269.dir/build ] + ignore line: [mingw32-make[1]: Entering directory 'C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/CMakeTmp'] + ignore line: ["C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" -E cmake_progress_report C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles\CMakeTmp\CMakeFiles 1] + ignore line: [Building C object CMakeFiles/cmTryCompileExec686806269.dir/CMakeCCompilerABI.c.obj] + ignore line: [C:\mingw\x32\bin\gcc.exe -o CMakeFiles\cmTryCompileExec686806269.dir\CMakeCCompilerABI.c.obj -c "C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\CMakeCCompilerABI.c"] + ignore line: [Linking C executable cmTryCompileExec686806269.exe] + ignore line: ["C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" -E cmake_link_script CMakeFiles\cmTryCompileExec686806269.dir\link.txt --verbose=1] + ignore line: ["C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" -E remove -f CMakeFiles\cmTryCompileExec686806269.dir/objects.a] + ignore line: [C:\mingw\x32\bin\ar.exe cr CMakeFiles\cmTryCompileExec686806269.dir/objects.a @CMakeFiles\cmTryCompileExec686806269.dir\objects1.rsp] + ignore line: [C:\mingw\x32\bin\gcc.exe -v -Wl,--whole-archive CMakeFiles\cmTryCompileExec686806269.dir/objects.a -Wl,--no-whole-archive -o cmTryCompileExec686806269.exe -Wl,--out-implib,libcmTryCompileExec686806269.dll.a -Wl,--major-image-version,0,--minor-image-version,0 ] + ignore line: [Using built-in specs.] + ignore line: [COLLECT_GCC=C:\mingw\x32\bin\gcc.exe] + ignore line: [COLLECT_LTO_WRAPPER=C:/mingw/x32/bin/../libexec/gcc/i686-w64-mingw32/4.9.2/lto-wrapper.exe] + ignore line: [Target: i686-w64-mingw32] + ignore line: [Configured with: ../../../src/gcc-4.9.2/configure --host=i686-w64-mingw32 --build=i686-w64-mingw32 --target=i686-w64-mingw32 --prefix=/mingw32 --with-sysroot=/c/mingw492/i686-492-win32-dwarf-rt_v3-rev0/mingw32 --with-gxx-include-dir=/mingw32/i686-w64-mingw32/include/c++ --enable-shared --enable-static --disable-multilib --enable-languages=ada,c,c++,fortran,objc,obj-c++,lto --enable-libstdcxx-time=yes --enable-threads=win32 --enable-libgomp --enable-libatomic --enable-lto --enable-graphite --enable-checking=release --enable-fully-dynamic-string --enable-version-specific-runtime-libs --disable-sjlj-exceptions --with-dwarf2 --disable-isl-version-check --disable-cloog-version-check --disable-libstdcxx-pch --disable-libstdcxx-debug --enable-bootstrap --disable-rpath --disable-win32-registry --disable-nls --disable-werror --disable-symvers --with-gnu-as --with-gnu-ld --with-arch=i686 --with-tune=generic --with-libiconv --with-system-zlib --with-gmp=/c/mingw492/prerequisites/i686-w64-mingw32-static --with-mpfr=/c/mingw492/prerequisites/i686-w64-mingw32-static --with-mpc=/c/mingw492/prerequisites/i686-w64-mingw32-static --with-isl=/c/mingw492/prerequisites/i686-w64-mingw32-static --with-cloog=/c/mingw492/prerequisites/i686-w64-mingw32-static --enable-cloog-backend=isl --with-pkgversion='i686-win32-dwarf-rev0, Built by MinGW-W64 project' --with-bugurl=http://sourceforge.net/projects/mingw-w64 CFLAGS='-O2 -pipe -I/c/mingw492/i686-492-win32-dwarf-rt_v3-rev0/mingw32/opt/include -I/c/mingw492/prerequisites/i686-zlib-static/include -I/c/mingw492/prerequisites/i686-w64-mingw32-static/include' CXXFLAGS='-O2 -pipe -I/c/mingw492/i686-492-win32-dwarf-rt_v3-rev0/mingw32/opt/include -I/c/mingw492/prerequisites/i686-zlib-static/include -I/c/mingw492/prerequisites/i686-w64-mingw32-static/include' CPPFLAGS= LDFLAGS='-pipe -L/c/mingw492/i686-492-win32-dwarf-rt_v3-rev0/mingw32/opt/lib -L/c/mingw492/prerequisites/i686-zlib-static/lib -L/c/mingw492/prerequisites/i686-w64-mingw32-static/lib -Wl,--large-address-aware'] + ignore line: [Thread model: win32] + ignore line: [gcc version 4.9.2 (i686-win32-dwarf-rev0, Built by MinGW-W64 project) ] + ignore line: [COMPILER_PATH=C:/mingw/x32/bin/../libexec/gcc/i686-w64-mingw32/4.9.2/] + ignore line: [C:/mingw/x32/bin/../libexec/gcc/] + ignore line: [C:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/bin/] + ignore line: [LIBRARY_PATH=C:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/] + ignore line: [C:/mingw/x32/bin/../lib/gcc/] + ignore line: [C:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/lib/../lib/] + ignore line: [C:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../../../lib/] + ignore line: [C:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/lib/] + ignore line: [C:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../../] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTryCompileExec686806269.exe' '-mtune=generic' '-march=i686'] + link line: [ C:/mingw/x32/bin/../libexec/gcc/i686-w64-mingw32/4.9.2/collect2.exe -plugin C:/mingw/x32/bin/../libexec/gcc/i686-w64-mingw32/4.9.2/liblto_plugin-0.dll -plugin-opt=C:/mingw/x32/bin/../libexec/gcc/i686-w64-mingw32/4.9.2/lto-wrapper.exe -plugin-opt=-fresolution=C:\Users\Andrey\AppData\Local\Temp\cceObk9f.res -plugin-opt=-pass-through=-lmingw32 -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_eh -plugin-opt=-pass-through=-lmoldname -plugin-opt=-pass-through=-lmingwex -plugin-opt=-pass-through=-lmsvcrt -plugin-opt=-pass-through=-ladvapi32 -plugin-opt=-pass-through=-lshell32 -plugin-opt=-pass-through=-luser32 -plugin-opt=-pass-through=-lkernel32 -plugin-opt=-pass-through=-liconv -plugin-opt=-pass-through=-lmingw32 -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_eh -plugin-opt=-pass-through=-lmoldname -plugin-opt=-pass-through=-lmingwex -plugin-opt=-pass-through=-lmsvcrt --sysroot=C:/mingw492/i686-492-win32-dwarf-rt_v3-rev0/mingw32 -m i386pe -Bdynamic -o cmTryCompileExec686806269.exe C:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/lib/../lib/crt2.o C:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/crtbegin.o -LC:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2 -LC:/mingw/x32/bin/../lib/gcc -LC:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/lib/../lib -LC:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../../../lib -LC:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/lib -LC:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../.. --whole-archive CMakeFiles\cmTryCompileExec686806269.dir/objects.a --no-whole-archive --out-implib libcmTryCompileExec686806269.dll.a --major-image-version 0 --minor-image-version 0 -lmingw32 -lgcc -lgcc_eh -lmoldname -lmingwex -lmsvcrt -ladvapi32 -lshell32 -luser32 -lkernel32 -liconv -lmingw32 -lgcc -lgcc_eh -lmoldname -lmingwex -lmsvcrt C:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/crtend.o] + arg [C:/mingw/x32/bin/../libexec/gcc/i686-w64-mingw32/4.9.2/collect2.exe] ==> ignore + arg [-plugin] ==> ignore + arg [C:/mingw/x32/bin/../libexec/gcc/i686-w64-mingw32/4.9.2/liblto_plugin-0.dll] ==> ignore + arg [-plugin-opt=C:/mingw/x32/bin/../libexec/gcc/i686-w64-mingw32/4.9.2/lto-wrapper.exe] ==> ignore + arg [-plugin-opt=-fresolution=C:\Users\Andrey\AppData\Local\Temp\cceObk9f.res] ==> ignore + arg [-plugin-opt=-pass-through=-lmingw32] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc_eh] ==> ignore + arg [-plugin-opt=-pass-through=-lmoldname] ==> ignore + arg [-plugin-opt=-pass-through=-lmingwex] ==> ignore + arg [-plugin-opt=-pass-through=-lmsvcrt] ==> ignore + arg [-plugin-opt=-pass-through=-ladvapi32] ==> ignore + arg [-plugin-opt=-pass-through=-lshell32] ==> ignore + arg [-plugin-opt=-pass-through=-luser32] ==> ignore + arg [-plugin-opt=-pass-through=-lkernel32] ==> ignore + arg [-plugin-opt=-pass-through=-liconv] ==> ignore + arg [-plugin-opt=-pass-through=-lmingw32] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc_eh] ==> ignore + arg [-plugin-opt=-pass-through=-lmoldname] ==> ignore + arg [-plugin-opt=-pass-through=-lmingwex] ==> ignore + arg [-plugin-opt=-pass-through=-lmsvcrt] ==> ignore + arg [--sysroot=C:/mingw492/i686-492-win32-dwarf-rt_v3-rev0/mingw32] ==> ignore + arg [-m] ==> ignore + arg [i386pe] ==> ignore + arg [-Bdynamic] ==> ignore + arg [-o] ==> ignore + arg [cmTryCompileExec686806269.exe] ==> ignore + arg [C:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/lib/../lib/crt2.o] ==> ignore + arg [C:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/crtbegin.o] ==> ignore + arg [-LC:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2] ==> dir [C:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2] + arg [-LC:/mingw/x32/bin/../lib/gcc] ==> dir [C:/mingw/x32/bin/../lib/gcc] + arg [-LC:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/lib/../lib] ==> dir [C:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/lib/../lib] + arg [-LC:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../../../lib] ==> dir [C:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../../../lib] + arg [-LC:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/lib] ==> dir [C:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/lib] + arg [-LC:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../..] ==> dir [C:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../..] + arg [--whole-archive] ==> ignore + arg [CMakeFiles\cmTryCompileExec686806269.dir/objects.a] ==> ignore + arg [--no-whole-archive] ==> ignore + arg [--out-implib] ==> ignore + arg [libcmTryCompileExec686806269.dll.a] ==> ignore + arg [--major-image-version] ==> ignore + arg [0] ==> ignore + arg [--minor-image-version] ==> ignore + arg [0] ==> ignore + arg [-lmingw32] ==> lib [mingw32] + arg [-lgcc] ==> lib [gcc] + arg [-lgcc_eh] ==> lib [gcc_eh] + arg [-lmoldname] ==> lib [moldname] + arg [-lmingwex] ==> lib [mingwex] + arg [-lmsvcrt] ==> lib [msvcrt] + arg [-ladvapi32] ==> lib [advapi32] + arg [-lshell32] ==> lib [shell32] + arg [-luser32] ==> lib [user32] + arg [-lkernel32] ==> lib [kernel32] + arg [-liconv] ==> lib [iconv] + arg [-lmingw32] ==> lib [mingw32] + arg [-lgcc] ==> lib [gcc] + arg [-lgcc_eh] ==> lib [gcc_eh] + arg [-lmoldname] ==> lib [moldname] + arg [-lmingwex] ==> lib [mingwex] + arg [-lmsvcrt] ==> lib [msvcrt] + arg [C:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/crtend.o] ==> ignore + remove lib [gcc] + remove lib [gcc_eh] + remove lib [gcc] + remove lib [gcc_eh] + collapse library dir [C:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2] ==> [C:/mingw/x32/lib/gcc/i686-w64-mingw32/4.9.2] + collapse library dir [C:/mingw/x32/bin/../lib/gcc] ==> [C:/mingw/x32/lib/gcc] + collapse library dir [C:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/lib/../lib] ==> [C:/mingw/x32/i686-w64-mingw32/lib] + collapse library dir [C:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../../../lib] ==> [C:/mingw/x32/lib] + collapse library dir [C:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/lib] ==> [C:/mingw/x32/i686-w64-mingw32/lib] + collapse library dir [C:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../..] ==> [C:/mingw/x32/lib] + implicit libs: [mingw32;moldname;mingwex;msvcrt;advapi32;shell32;user32;kernel32;iconv;mingw32;moldname;mingwex;msvcrt] + implicit dirs: [C:/mingw/x32/lib/gcc/i686-w64-mingw32/4.9.2;C:/mingw/x32/lib/gcc;C:/mingw/x32/i686-w64-mingw32/lib;C:/mingw/x32/lib] + implicit fwks: [] + + +Determining if the CXX compiler works passed with the following output: +Change Dir: C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/CMakeTmp + +Run Build Command:C:/mingw/x32/bin/mingw32-make.exe "cmTryCompileExec2395778600/fast" +make -f CMakeFiles\cmTryCompileExec2395778600.dir\build.make CMakeFiles/cmTryCompileExec2395778600.dir/build + +C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles\CMakeTmp>mingw32-make -f CMakeFiles\cmTryCompileExec2395778600.dir\build.make CMakeFiles/cmTryCompileExec2395778600.dir/build +mingw32-make[1]: Entering directory 'C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/CMakeTmp' +"C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" -E cmake_progress_report C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles\CMakeTmp\CMakeFiles 1 +Building CXX object CMakeFiles/cmTryCompileExec2395778600.dir/testCXXCompiler.cxx.obj +C:\mingw\x32\bin\g++.exe -o CMakeFiles\cmTryCompileExec2395778600.dir\testCXXCompiler.cxx.obj -c C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles\CMakeTmp\testCXXCompiler.cxx +Linking CXX executable cmTryCompileExec2395778600.exe +"C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" -E cmake_link_script CMakeFiles\cmTryCompileExec2395778600.dir\link.txt --verbose=1 +"C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" -E remove -f CMakeFiles\cmTryCompileExec2395778600.dir/objects.a +C:\mingw\x32\bin\ar.exe cr CMakeFiles\cmTryCompileExec2395778600.dir/objects.a @CMakeFiles\cmTryCompileExec2395778600.dir\objects1.rsp +C:\mingw\x32\bin\g++.exe -Wl,--whole-archive CMakeFiles\cmTryCompileExec2395778600.dir/objects.a -Wl,--no-whole-archive -o cmTryCompileExec2395778600.exe -Wl,--out-implib,libcmTryCompileExec2395778600.dll.a -Wl,--major-image-version,0,--minor-image-version,0 -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 +mingw32-make[1]: Leaving directory 'C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/CMakeTmp' + + +Detecting CXX compiler ABI info compiled with the following output: +Change Dir: C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/CMakeTmp + +Run Build Command:C:/mingw/x32/bin/mingw32-make.exe "cmTryCompileExec3073170174/fast" +make -f CMakeFiles\cmTryCompileExec3073170174.dir\build.make CMakeFiles/cmTryCompileExec3073170174.dir/build + +C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles\CMakeTmp>mingw32-make -f CMakeFiles\cmTryCompileExec3073170174.dir\build.make CMakeFiles/cmTryCompileExec3073170174.dir/build +mingw32-make[1]: Entering directory 'C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/CMakeTmp' +"C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" -E cmake_progress_report C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles\CMakeTmp\CMakeFiles 1 +Building CXX object CMakeFiles/cmTryCompileExec3073170174.dir/CMakeCXXCompilerABI.cpp.obj +C:\mingw\x32\bin\g++.exe -o CMakeFiles\cmTryCompileExec3073170174.dir\CMakeCXXCompilerABI.cpp.obj -c "C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\CMakeCXXCompilerABI.cpp" +Linking CXX executable cmTryCompileExec3073170174.exe +"C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" -E cmake_link_script CMakeFiles\cmTryCompileExec3073170174.dir\link.txt --verbose=1 +"C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" -E remove -f CMakeFiles\cmTryCompileExec3073170174.dir/objects.a +C:\mingw\x32\bin\ar.exe cr CMakeFiles\cmTryCompileExec3073170174.dir/objects.a @CMakeFiles\cmTryCompileExec3073170174.dir\objects1.rsp +C:\mingw\x32\bin\g++.exe -v -Wl,--whole-archive CMakeFiles\cmTryCompileExec3073170174.dir/objects.a -Wl,--no-whole-archive -o cmTryCompileExec3073170174.exe -Wl,--out-implib,libcmTryCompileExec3073170174.dll.a -Wl,--major-image-version,0,--minor-image-version,0 +Using built-in specs. +COLLECT_GCC=C:\mingw\x32\bin\g++.exe +COLLECT_LTO_WRAPPER=C:/mingw/x32/bin/../libexec/gcc/i686-w64-mingw32/4.9.2/lto-wrapper.exe +Target: i686-w64-mingw32 +Configured with: ../../../src/gcc-4.9.2/configure --host=i686-w64-mingw32 --build=i686-w64-mingw32 --target=i686-w64-mingw32 --prefix=/mingw32 --with-sysroot=/c/mingw492/i686-492-win32-dwarf-rt_v3-rev0/mingw32 --with-gxx-include-dir=/mingw32/i686-w64-mingw32/include/c++ --enable-shared --enable-static --disable-multilib --enable-languages=ada,c,c++,fortran,objc,obj-c++,lto --enable-libstdcxx-time=yes --enable-threads=win32 --enable-libgomp --enable-libatomic --enable-lto --enable-graphite --enable-checking=release --enable-fully-dynamic-string --enable-version-specific-runtime-libs --disable-sjlj-exceptions --with-dwarf2 --disable-isl-version-check --disable-cloog-version-check --disable-libstdcxx-pch --disable-libstdcxx-debug --enable-bootstrap --disable-rpath --disable-win32-registry --disable-nls --disable-werror --disable-symvers --with-gnu-as --with-gnu-ld --with-arch=i686 --with-tune=generic --with-libiconv --with-system-zlib --with-gmp=/c/mingw492/prerequisites/i686-w64-mingw32-static --with-mpfr=/c/mingw492/prerequisites/i686-w64-mingw32-static --with-mpc=/c/mingw492/prerequisites/i686-w64-mingw32-static --with-isl=/c/mingw492/prerequisites/i686-w64-mingw32-static --with-cloog=/c/mingw492/prerequisites/i686-w64-mingw32-static --enable-cloog-backend=isl --with-pkgversion='i686-win32-dwarf-rev0, Built by MinGW-W64 project' --with-bugurl=http://sourceforge.net/projects/mingw-w64 CFLAGS='-O2 -pipe -I/c/mingw492/i686-492-win32-dwarf-rt_v3-rev0/mingw32/opt/include -I/c/mingw492/prerequisites/i686-zlib-static/include -I/c/mingw492/prerequisites/i686-w64-mingw32-static/include' CXXFLAGS='-O2 -pipe -I/c/mingw492/i686-492-win32-dwarf-rt_v3-rev0/mingw32/opt/include -I/c/mingw492/prerequisites/i686-zlib-static/include -I/c/mingw492/prerequisites/i686-w64-mingw32-static/include' CPPFLAGS= LDFLAGS='-pipe -L/c/mingw492/i686-492-win32-dwarf-rt_v3-rev0/mingw32/opt/lib -L/c/mingw492/prerequisites/i686-zlib-static/lib -L/c/mingw492/prerequisites/i686-w64-mingw32-static/lib -Wl,--large-address-aware' +Thread model: win32 +gcc version 4.9.2 (i686-win32-dwarf-rev0, Built by MinGW-W64 project) +COMPILER_PATH=C:/mingw/x32/bin/../libexec/gcc/i686-w64-mingw32/4.9.2/;C:/mingw/x32/bin/../libexec/gcc/;C:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/bin/ +LIBRARY_PATH=C:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/;C:/mingw/x32/bin/../lib/gcc/;C:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/lib/../lib/;C:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../../../lib/;C:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/lib/;C:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../../ +COLLECT_GCC_OPTIONS='-v' '-o' 'cmTryCompileExec3073170174.exe' '-shared-libgcc' '-mtune=generic' '-march=i686' + C:/mingw/x32/bin/../libexec/gcc/i686-w64-mingw32/4.9.2/collect2.exe -plugin C:/mingw/x32/bin/../libexec/gcc/i686-w64-mingw32/4.9.2/liblto_plugin-0.dll -plugin-opt=C:/mingw/x32/bin/../libexec/gcc/i686-w64-mingw32/4.9.2/lto-wrapper.exe -plugin-opt=-fresolution=C:\Users\Andrey\AppData\Local\Temp\ccV5GDaY.res -plugin-opt=-pass-through=-lmingw32 -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lmoldname -plugin-opt=-pass-through=-lmingwex -plugin-opt=-pass-through=-lmsvcrt -plugin-opt=-pass-through=-ladvapi32 -plugin-opt=-pass-through=-lshell32 -plugin-opt=-pass-through=-luser32 -plugin-opt=-pass-through=-lkernel32 -plugin-opt=-pass-through=-liconv -plugin-opt=-pass-through=-lmingw32 -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lmoldname -plugin-opt=-pass-through=-lmingwex -plugin-opt=-pass-through=-lmsvcrt --sysroot=C:/mingw492/i686-492-win32-dwarf-rt_v3-rev0/mingw32 -m i386pe -Bdynamic -u ___register_frame_info -u ___deregister_frame_info -o cmTryCompileExec3073170174.exe C:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/lib/../lib/crt2.o C:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/crtbegin.o -LC:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2 -LC:/mingw/x32/bin/../lib/gcc -LC:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/lib/../lib -LC:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../../../lib -LC:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/lib -LC:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../.. --whole-archive CMakeFiles\cmTryCompileExec3073170174.dir/objects.a --no-whole-archive --out-implib libcmTryCompileExec3073170174.dll.a --major-image-version 0 --minor-image-version 0 -lstdc++ -lmingw32 -lgcc_s -lgcc -lmoldname -lmingwex -lmsvcrt -ladvapi32 -lshell32 -luser32 -lkernel32 -liconv -lmingw32 -lgcc_s -lgcc -lmoldname -lmingwex -lmsvcrt C:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/crtend.o +mingw32-make[1]: Leaving directory 'C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/CMakeTmp' + + +Parsed CXX implicit link information from above output: + link line regex: [^( *|.*[/\])(ld\.exe|([^/\]+-)?ld|collect2)[^/\]*( |$)] + ignore line: [Change Dir: C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/CMakeTmp] + ignore line: [] + ignore line: [Run Build Command:C:/mingw/x32/bin/mingw32-make.exe "cmTryCompileExec3073170174/fast"] + ignore line: [make -f CMakeFiles\cmTryCompileExec3073170174.dir\build.make CMakeFiles/cmTryCompileExec3073170174.dir/build] + ignore line: [] + ignore line: [C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles\CMakeTmp>mingw32-make -f CMakeFiles\cmTryCompileExec3073170174.dir\build.make CMakeFiles/cmTryCompileExec3073170174.dir/build ] + ignore line: [mingw32-make[1]: Entering directory 'C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/CMakeTmp'] + ignore line: ["C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" -E cmake_progress_report C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles\CMakeTmp\CMakeFiles 1] + ignore line: [Building CXX object CMakeFiles/cmTryCompileExec3073170174.dir/CMakeCXXCompilerABI.cpp.obj] + ignore line: [C:\mingw\x32\bin\g++.exe -o CMakeFiles\cmTryCompileExec3073170174.dir\CMakeCXXCompilerABI.cpp.obj -c "C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\CMakeCXXCompilerABI.cpp"] + ignore line: [Linking CXX executable cmTryCompileExec3073170174.exe] + ignore line: ["C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" -E cmake_link_script CMakeFiles\cmTryCompileExec3073170174.dir\link.txt --verbose=1] + ignore line: ["C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" -E remove -f CMakeFiles\cmTryCompileExec3073170174.dir/objects.a] + ignore line: [C:\mingw\x32\bin\ar.exe cr CMakeFiles\cmTryCompileExec3073170174.dir/objects.a @CMakeFiles\cmTryCompileExec3073170174.dir\objects1.rsp] + ignore line: [C:\mingw\x32\bin\g++.exe -v -Wl,--whole-archive CMakeFiles\cmTryCompileExec3073170174.dir/objects.a -Wl,--no-whole-archive -o cmTryCompileExec3073170174.exe -Wl,--out-implib,libcmTryCompileExec3073170174.dll.a -Wl,--major-image-version,0,--minor-image-version,0 ] + ignore line: [Using built-in specs.] + ignore line: [COLLECT_GCC=C:\mingw\x32\bin\g++.exe] + ignore line: [COLLECT_LTO_WRAPPER=C:/mingw/x32/bin/../libexec/gcc/i686-w64-mingw32/4.9.2/lto-wrapper.exe] + ignore line: [Target: i686-w64-mingw32] + ignore line: [Configured with: ../../../src/gcc-4.9.2/configure --host=i686-w64-mingw32 --build=i686-w64-mingw32 --target=i686-w64-mingw32 --prefix=/mingw32 --with-sysroot=/c/mingw492/i686-492-win32-dwarf-rt_v3-rev0/mingw32 --with-gxx-include-dir=/mingw32/i686-w64-mingw32/include/c++ --enable-shared --enable-static --disable-multilib --enable-languages=ada,c,c++,fortran,objc,obj-c++,lto --enable-libstdcxx-time=yes --enable-threads=win32 --enable-libgomp --enable-libatomic --enable-lto --enable-graphite --enable-checking=release --enable-fully-dynamic-string --enable-version-specific-runtime-libs --disable-sjlj-exceptions --with-dwarf2 --disable-isl-version-check --disable-cloog-version-check --disable-libstdcxx-pch --disable-libstdcxx-debug --enable-bootstrap --disable-rpath --disable-win32-registry --disable-nls --disable-werror --disable-symvers --with-gnu-as --with-gnu-ld --with-arch=i686 --with-tune=generic --with-libiconv --with-system-zlib --with-gmp=/c/mingw492/prerequisites/i686-w64-mingw32-static --with-mpfr=/c/mingw492/prerequisites/i686-w64-mingw32-static --with-mpc=/c/mingw492/prerequisites/i686-w64-mingw32-static --with-isl=/c/mingw492/prerequisites/i686-w64-mingw32-static --with-cloog=/c/mingw492/prerequisites/i686-w64-mingw32-static --enable-cloog-backend=isl --with-pkgversion='i686-win32-dwarf-rev0, Built by MinGW-W64 project' --with-bugurl=http://sourceforge.net/projects/mingw-w64 CFLAGS='-O2 -pipe -I/c/mingw492/i686-492-win32-dwarf-rt_v3-rev0/mingw32/opt/include -I/c/mingw492/prerequisites/i686-zlib-static/include -I/c/mingw492/prerequisites/i686-w64-mingw32-static/include' CXXFLAGS='-O2 -pipe -I/c/mingw492/i686-492-win32-dwarf-rt_v3-rev0/mingw32/opt/include -I/c/mingw492/prerequisites/i686-zlib-static/include -I/c/mingw492/prerequisites/i686-w64-mingw32-static/include' CPPFLAGS= LDFLAGS='-pipe -L/c/mingw492/i686-492-win32-dwarf-rt_v3-rev0/mingw32/opt/lib -L/c/mingw492/prerequisites/i686-zlib-static/lib -L/c/mingw492/prerequisites/i686-w64-mingw32-static/lib -Wl,--large-address-aware'] + ignore line: [Thread model: win32] + ignore line: [gcc version 4.9.2 (i686-win32-dwarf-rev0, Built by MinGW-W64 project) ] + ignore line: [COMPILER_PATH=C:/mingw/x32/bin/../libexec/gcc/i686-w64-mingw32/4.9.2/] + ignore line: [C:/mingw/x32/bin/../libexec/gcc/] + ignore line: [C:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/bin/] + ignore line: [LIBRARY_PATH=C:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/] + ignore line: [C:/mingw/x32/bin/../lib/gcc/] + ignore line: [C:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/lib/../lib/] + ignore line: [C:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../../../lib/] + ignore line: [C:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/lib/] + ignore line: [C:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../../] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTryCompileExec3073170174.exe' '-shared-libgcc' '-mtune=generic' '-march=i686'] + link line: [ C:/mingw/x32/bin/../libexec/gcc/i686-w64-mingw32/4.9.2/collect2.exe -plugin C:/mingw/x32/bin/../libexec/gcc/i686-w64-mingw32/4.9.2/liblto_plugin-0.dll -plugin-opt=C:/mingw/x32/bin/../libexec/gcc/i686-w64-mingw32/4.9.2/lto-wrapper.exe -plugin-opt=-fresolution=C:\Users\Andrey\AppData\Local\Temp\ccV5GDaY.res -plugin-opt=-pass-through=-lmingw32 -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lmoldname -plugin-opt=-pass-through=-lmingwex -plugin-opt=-pass-through=-lmsvcrt -plugin-opt=-pass-through=-ladvapi32 -plugin-opt=-pass-through=-lshell32 -plugin-opt=-pass-through=-luser32 -plugin-opt=-pass-through=-lkernel32 -plugin-opt=-pass-through=-liconv -plugin-opt=-pass-through=-lmingw32 -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lmoldname -plugin-opt=-pass-through=-lmingwex -plugin-opt=-pass-through=-lmsvcrt --sysroot=C:/mingw492/i686-492-win32-dwarf-rt_v3-rev0/mingw32 -m i386pe -Bdynamic -u ___register_frame_info -u ___deregister_frame_info -o cmTryCompileExec3073170174.exe C:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/lib/../lib/crt2.o C:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/crtbegin.o -LC:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2 -LC:/mingw/x32/bin/../lib/gcc -LC:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/lib/../lib -LC:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../../../lib -LC:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/lib -LC:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../.. --whole-archive CMakeFiles\cmTryCompileExec3073170174.dir/objects.a --no-whole-archive --out-implib libcmTryCompileExec3073170174.dll.a --major-image-version 0 --minor-image-version 0 -lstdc++ -lmingw32 -lgcc_s -lgcc -lmoldname -lmingwex -lmsvcrt -ladvapi32 -lshell32 -luser32 -lkernel32 -liconv -lmingw32 -lgcc_s -lgcc -lmoldname -lmingwex -lmsvcrt C:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/crtend.o] + arg [C:/mingw/x32/bin/../libexec/gcc/i686-w64-mingw32/4.9.2/collect2.exe] ==> ignore + arg [-plugin] ==> ignore + arg [C:/mingw/x32/bin/../libexec/gcc/i686-w64-mingw32/4.9.2/liblto_plugin-0.dll] ==> ignore + arg [-plugin-opt=C:/mingw/x32/bin/../libexec/gcc/i686-w64-mingw32/4.9.2/lto-wrapper.exe] ==> ignore + arg [-plugin-opt=-fresolution=C:\Users\Andrey\AppData\Local\Temp\ccV5GDaY.res] ==> ignore + arg [-plugin-opt=-pass-through=-lmingw32] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc] ==> ignore + arg [-plugin-opt=-pass-through=-lmoldname] ==> ignore + arg [-plugin-opt=-pass-through=-lmingwex] ==> ignore + arg [-plugin-opt=-pass-through=-lmsvcrt] ==> ignore + arg [-plugin-opt=-pass-through=-ladvapi32] ==> ignore + arg [-plugin-opt=-pass-through=-lshell32] ==> ignore + arg [-plugin-opt=-pass-through=-luser32] ==> ignore + arg [-plugin-opt=-pass-through=-lkernel32] ==> ignore + arg [-plugin-opt=-pass-through=-liconv] ==> ignore + arg [-plugin-opt=-pass-through=-lmingw32] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc] ==> ignore + arg [-plugin-opt=-pass-through=-lmoldname] ==> ignore + arg [-plugin-opt=-pass-through=-lmingwex] ==> ignore + arg [-plugin-opt=-pass-through=-lmsvcrt] ==> ignore + arg [--sysroot=C:/mingw492/i686-492-win32-dwarf-rt_v3-rev0/mingw32] ==> ignore + arg [-m] ==> ignore + arg [i386pe] ==> ignore + arg [-Bdynamic] ==> ignore + arg [-u] ==> ignore + arg [___register_frame_info] ==> ignore + arg [-u] ==> ignore + arg [___deregister_frame_info] ==> ignore + arg [-o] ==> ignore + arg [cmTryCompileExec3073170174.exe] ==> ignore + arg [C:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/lib/../lib/crt2.o] ==> ignore + arg [C:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/crtbegin.o] ==> ignore + arg [-LC:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2] ==> dir [C:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2] + arg [-LC:/mingw/x32/bin/../lib/gcc] ==> dir [C:/mingw/x32/bin/../lib/gcc] + arg [-LC:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/lib/../lib] ==> dir [C:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/lib/../lib] + arg [-LC:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../../../lib] ==> dir [C:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../../../lib] + arg [-LC:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/lib] ==> dir [C:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/lib] + arg [-LC:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../..] ==> dir [C:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../..] + arg [--whole-archive] ==> ignore + arg [CMakeFiles\cmTryCompileExec3073170174.dir/objects.a] ==> ignore + arg [--no-whole-archive] ==> ignore + arg [--out-implib] ==> ignore + arg [libcmTryCompileExec3073170174.dll.a] ==> ignore + arg [--major-image-version] ==> ignore + arg [0] ==> ignore + arg [--minor-image-version] ==> ignore + arg [0] ==> ignore + arg [-lstdc++] ==> lib [stdc++] + arg [-lmingw32] ==> lib [mingw32] + arg [-lgcc_s] ==> lib [gcc_s] + arg [-lgcc] ==> lib [gcc] + arg [-lmoldname] ==> lib [moldname] + arg [-lmingwex] ==> lib [mingwex] + arg [-lmsvcrt] ==> lib [msvcrt] + arg [-ladvapi32] ==> lib [advapi32] + arg [-lshell32] ==> lib [shell32] + arg [-luser32] ==> lib [user32] + arg [-lkernel32] ==> lib [kernel32] + arg [-liconv] ==> lib [iconv] + arg [-lmingw32] ==> lib [mingw32] + arg [-lgcc_s] ==> lib [gcc_s] + arg [-lgcc] ==> lib [gcc] + arg [-lmoldname] ==> lib [moldname] + arg [-lmingwex] ==> lib [mingwex] + arg [-lmsvcrt] ==> lib [msvcrt] + arg [C:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/crtend.o] ==> ignore + remove lib [gcc_s] + remove lib [gcc] + remove lib [gcc_s] + remove lib [gcc] + collapse library dir [C:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2] ==> [C:/mingw/x32/lib/gcc/i686-w64-mingw32/4.9.2] + collapse library dir [C:/mingw/x32/bin/../lib/gcc] ==> [C:/mingw/x32/lib/gcc] + collapse library dir [C:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/lib/../lib] ==> [C:/mingw/x32/i686-w64-mingw32/lib] + collapse library dir [C:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../../../lib] ==> [C:/mingw/x32/lib] + collapse library dir [C:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/lib] ==> [C:/mingw/x32/i686-w64-mingw32/lib] + collapse library dir [C:/mingw/x32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../..] ==> [C:/mingw/x32/lib] + implicit libs: [stdc++;mingw32;moldname;mingwex;msvcrt;advapi32;shell32;user32;kernel32;iconv;mingw32;moldname;mingwex;msvcrt] + implicit dirs: [C:/mingw/x32/lib/gcc/i686-w64-mingw32/4.9.2;C:/mingw/x32/lib/gcc;C:/mingw/x32/i686-w64-mingw32/lib;C:/mingw/x32/lib] + implicit fwks: [] + + +Determining if the function j0 exists passed with the following output: +Change Dir: C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/CMakeTmp + +Run Build Command:C:/mingw/x32/bin/mingw32-make.exe "cmTryCompileExec2874319340/fast" +make -f CMakeFiles\cmTryCompileExec2874319340.dir\build.make CMakeFiles/cmTryCompileExec2874319340.dir/build + +C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles\CMakeTmp>mingw32-make -f CMakeFiles\cmTryCompileExec2874319340.dir\build.make CMakeFiles/cmTryCompileExec2874319340.dir/build +mingw32-make[1]: Entering directory 'C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/CMakeTmp' +"C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" -E cmake_progress_report C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles\CMakeTmp\CMakeFiles 1 +Building C object CMakeFiles/cmTryCompileExec2874319340.dir/CheckFunctionExists.c.obj +C:\mingw\x32\bin\gcc.exe -DCHECK_FUNCTION_EXISTS=j0 @CMakeFiles/cmTryCompileExec2874319340.dir/includes_C.rsp -o CMakeFiles\cmTryCompileExec2874319340.dir\CheckFunctionExists.c.obj -c "C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\CheckFunctionExists.c" +:0:23: warning: conflicting types for built-in function 'j0' +C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\CheckFunctionExists.c:3:6: note: in expansion of macro 'CHECK_FUNCTION_EXISTS' + char CHECK_FUNCTION_EXISTS(); + ^ +Linking C executable cmTryCompileExec2874319340.exe +"C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" -E cmake_link_script CMakeFiles\cmTryCompileExec2874319340.dir\link.txt --verbose=1 +"C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" -E remove -f CMakeFiles\cmTryCompileExec2874319340.dir/objects.a +C:\mingw\x32\bin\ar.exe cr CMakeFiles\cmTryCompileExec2874319340.dir/objects.a @CMakeFiles\cmTryCompileExec2874319340.dir\objects1.rsp +C:\mingw\x32\bin\gcc.exe -DCHECK_FUNCTION_EXISTS=j0 -Wl,--whole-archive CMakeFiles\cmTryCompileExec2874319340.dir/objects.a -Wl,--no-whole-archive -o cmTryCompileExec2874319340.exe -Wl,--out-implib,libcmTryCompileExec2874319340.dll.a -Wl,--major-image-version,0,--minor-image-version,0 -lm -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 +mingw32-make[1]: Leaving directory 'C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/CMakeTmp' + + +Determining if the function j1 exists passed with the following output: +Change Dir: C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/CMakeTmp + +Run Build Command:C:/mingw/x32/bin/mingw32-make.exe "cmTryCompileExec3903790330/fast" +make -f CMakeFiles\cmTryCompileExec3903790330.dir\build.make CMakeFiles/cmTryCompileExec3903790330.dir/build + +C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles\CMakeTmp>mingw32-make -f CMakeFiles\cmTryCompileExec3903790330.dir\build.make CMakeFiles/cmTryCompileExec3903790330.dir/build +mingw32-make[1]: Entering directory 'C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/CMakeTmp' +"C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" -E cmake_progress_report C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles\CMakeTmp\CMakeFiles 1 +Building C object CMakeFiles/cmTryCompileExec3903790330.dir/CheckFunctionExists.c.obj +C:\mingw\x32\bin\gcc.exe -DCHECK_FUNCTION_EXISTS=j1 @CMakeFiles/cmTryCompileExec3903790330.dir/includes_C.rsp -o CMakeFiles\cmTryCompileExec3903790330.dir\CheckFunctionExists.c.obj -c "C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\CheckFunctionExists.c" +:0:23: warning: conflicting types for built-in function 'j1' +C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\CheckFunctionExists.c:3:6: note: in expansion of macro 'CHECK_FUNCTION_EXISTS' + char CHECK_FUNCTION_EXISTS(); + ^ +Linking C executable cmTryCompileExec3903790330.exe +"C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" -E cmake_link_script CMakeFiles\cmTryCompileExec3903790330.dir\link.txt --verbose=1 +"C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" -E remove -f CMakeFiles\cmTryCompileExec3903790330.dir/objects.a +C:\mingw\x32\bin\ar.exe cr CMakeFiles\cmTryCompileExec3903790330.dir/objects.a @CMakeFiles\cmTryCompileExec3903790330.dir\objects1.rsp +C:\mingw\x32\bin\gcc.exe -DCHECK_FUNCTION_EXISTS=j1 -Wl,--whole-archive CMakeFiles\cmTryCompileExec3903790330.dir/objects.a -Wl,--no-whole-archive -o cmTryCompileExec3903790330.exe -Wl,--out-implib,libcmTryCompileExec3903790330.dll.a -Wl,--major-image-version,0,--minor-image-version,0 -lm -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 +mingw32-make[1]: Leaving directory 'C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/CMakeTmp' + + +Determining if the function jn exists passed with the following output: +Change Dir: C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/CMakeTmp + +Run Build Command:C:/mingw/x32/bin/mingw32-make.exe "cmTryCompileExec1533190313/fast" +make -f CMakeFiles\cmTryCompileExec1533190313.dir\build.make CMakeFiles/cmTryCompileExec1533190313.dir/build + +C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles\CMakeTmp>mingw32-make -f CMakeFiles\cmTryCompileExec1533190313.dir\build.make CMakeFiles/cmTryCompileExec1533190313.dir/build +mingw32-make[1]: Entering directory 'C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/CMakeTmp' +"C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" -E cmake_progress_report C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles\CMakeTmp\CMakeFiles 1 +Building C object CMakeFiles/cmTryCompileExec1533190313.dir/CheckFunctionExists.c.obj +C:\mingw\x32\bin\gcc.exe -DCHECK_FUNCTION_EXISTS=jn @CMakeFiles/cmTryCompileExec1533190313.dir/includes_C.rsp -o CMakeFiles\cmTryCompileExec1533190313.dir\CheckFunctionExists.c.obj -c "C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\CheckFunctionExists.c" +:0:23: warning: conflicting types for built-in function 'jn' +C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\CheckFunctionExists.c:3:6: note: in expansion of macro 'CHECK_FUNCTION_EXISTS' + char CHECK_FUNCTION_EXISTS(); + ^ +Linking C executable cmTryCompileExec1533190313.exe +"C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" -E cmake_link_script CMakeFiles\cmTryCompileExec1533190313.dir\link.txt --verbose=1 +"C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" -E remove -f CMakeFiles\cmTryCompileExec1533190313.dir/objects.a +C:\mingw\x32\bin\ar.exe cr CMakeFiles\cmTryCompileExec1533190313.dir/objects.a @CMakeFiles\cmTryCompileExec1533190313.dir\objects1.rsp +C:\mingw\x32\bin\gcc.exe -DCHECK_FUNCTION_EXISTS=jn -Wl,--whole-archive CMakeFiles\cmTryCompileExec1533190313.dir/objects.a -Wl,--no-whole-archive -o cmTryCompileExec1533190313.exe -Wl,--out-implib,libcmTryCompileExec1533190313.dll.a -Wl,--major-image-version,0,--minor-image-version,0 -lm -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 +mingw32-make[1]: Leaving directory 'C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/CMakeTmp' + + +Determining if the function y0 exists passed with the following output: +Change Dir: C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/CMakeTmp + +Run Build Command:C:/mingw/x32/bin/mingw32-make.exe "cmTryCompileExec1045482109/fast" +make -f CMakeFiles\cmTryCompileExec1045482109.dir\build.make CMakeFiles/cmTryCompileExec1045482109.dir/build + +C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles\CMakeTmp>mingw32-make -f CMakeFiles\cmTryCompileExec1045482109.dir\build.make CMakeFiles/cmTryCompileExec1045482109.dir/build +mingw32-make[1]: Entering directory 'C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/CMakeTmp' +"C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" -E cmake_progress_report C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles\CMakeTmp\CMakeFiles 1 +Building C object CMakeFiles/cmTryCompileExec1045482109.dir/CheckFunctionExists.c.obj +C:\mingw\x32\bin\gcc.exe -DCHECK_FUNCTION_EXISTS=y0 @CMakeFiles/cmTryCompileExec1045482109.dir/includes_C.rsp -o CMakeFiles\cmTryCompileExec1045482109.dir\CheckFunctionExists.c.obj -c "C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\CheckFunctionExists.c" +:0:23: warning: conflicting types for built-in function 'y0' +C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\CheckFunctionExists.c:3:6: note: in expansion of macro 'CHECK_FUNCTION_EXISTS' + char CHECK_FUNCTION_EXISTS(); + ^ +Linking C executable cmTryCompileExec1045482109.exe +"C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" -E cmake_link_script CMakeFiles\cmTryCompileExec1045482109.dir\link.txt --verbose=1 +"C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" -E remove -f CMakeFiles\cmTryCompileExec1045482109.dir/objects.a +C:\mingw\x32\bin\ar.exe cr CMakeFiles\cmTryCompileExec1045482109.dir/objects.a @CMakeFiles\cmTryCompileExec1045482109.dir\objects1.rsp +C:\mingw\x32\bin\gcc.exe -DCHECK_FUNCTION_EXISTS=y0 -Wl,--whole-archive CMakeFiles\cmTryCompileExec1045482109.dir/objects.a -Wl,--no-whole-archive -o cmTryCompileExec1045482109.exe -Wl,--out-implib,libcmTryCompileExec1045482109.dll.a -Wl,--major-image-version,0,--minor-image-version,0 -lm -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 +mingw32-make[1]: Leaving directory 'C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/CMakeTmp' + + +Determining if the function y1 exists passed with the following output: +Change Dir: C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/CMakeTmp + +Run Build Command:C:/mingw/x32/bin/mingw32-make.exe "cmTryCompileExec2017568678/fast" +make -f CMakeFiles\cmTryCompileExec2017568678.dir\build.make CMakeFiles/cmTryCompileExec2017568678.dir/build + +C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles\CMakeTmp>mingw32-make -f CMakeFiles\cmTryCompileExec2017568678.dir\build.make CMakeFiles/cmTryCompileExec2017568678.dir/build +mingw32-make[1]: Entering directory 'C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/CMakeTmp' +"C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" -E cmake_progress_report C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles\CMakeTmp\CMakeFiles 1 +Building C object CMakeFiles/cmTryCompileExec2017568678.dir/CheckFunctionExists.c.obj +C:\mingw\x32\bin\gcc.exe -DCHECK_FUNCTION_EXISTS=y1 @CMakeFiles/cmTryCompileExec2017568678.dir/includes_C.rsp -o CMakeFiles\cmTryCompileExec2017568678.dir\CheckFunctionExists.c.obj -c "C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\CheckFunctionExists.c" +:0:23: warning: conflicting types for built-in function 'y1' +C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\CheckFunctionExists.c:3:6: note: in expansion of macro 'CHECK_FUNCTION_EXISTS' + char CHECK_FUNCTION_EXISTS(); + ^ +Linking C executable cmTryCompileExec2017568678.exe +"C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" -E cmake_link_script CMakeFiles\cmTryCompileExec2017568678.dir\link.txt --verbose=1 +"C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" -E remove -f CMakeFiles\cmTryCompileExec2017568678.dir/objects.a +C:\mingw\x32\bin\ar.exe cr CMakeFiles\cmTryCompileExec2017568678.dir/objects.a @CMakeFiles\cmTryCompileExec2017568678.dir\objects1.rsp +C:\mingw\x32\bin\gcc.exe -DCHECK_FUNCTION_EXISTS=y1 -Wl,--whole-archive CMakeFiles\cmTryCompileExec2017568678.dir/objects.a -Wl,--no-whole-archive -o cmTryCompileExec2017568678.exe -Wl,--out-implib,libcmTryCompileExec2017568678.dll.a -Wl,--major-image-version,0,--minor-image-version,0 -lm -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 +mingw32-make[1]: Leaving directory 'C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/CMakeTmp' + + +Determining if the function yn exists passed with the following output: +Change Dir: C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/CMakeTmp + +Run Build Command:C:/mingw/x32/bin/mingw32-make.exe "cmTryCompileExec488209033/fast" +make -f CMakeFiles\cmTryCompileExec488209033.dir\build.make CMakeFiles/cmTryCompileExec488209033.dir/build + +C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles\CMakeTmp>mingw32-make -f CMakeFiles\cmTryCompileExec488209033.dir\build.make CMakeFiles/cmTryCompileExec488209033.dir/build +mingw32-make[1]: Entering directory 'C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/CMakeTmp' +"C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" -E cmake_progress_report C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles\CMakeTmp\CMakeFiles 1 +Building C object CMakeFiles/cmTryCompileExec488209033.dir/CheckFunctionExists.c.obj +C:\mingw\x32\bin\gcc.exe -DCHECK_FUNCTION_EXISTS=yn @CMakeFiles/cmTryCompileExec488209033.dir/includes_C.rsp -o CMakeFiles\cmTryCompileExec488209033.dir\CheckFunctionExists.c.obj -c "C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\CheckFunctionExists.c" +:0:23: warning: conflicting types for built-in function 'yn' +C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\CheckFunctionExists.c:3:6: note: in expansion of macro 'CHECK_FUNCTION_EXISTS' + char CHECK_FUNCTION_EXISTS(); + ^ +Linking C executable cmTryCompileExec488209033.exe +"C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" -E cmake_link_script CMakeFiles\cmTryCompileExec488209033.dir\link.txt --verbose=1 +"C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" -E remove -f CMakeFiles\cmTryCompileExec488209033.dir/objects.a +C:\mingw\x32\bin\ar.exe cr CMakeFiles\cmTryCompileExec488209033.dir/objects.a @CMakeFiles\cmTryCompileExec488209033.dir\objects1.rsp +C:\mingw\x32\bin\gcc.exe -DCHECK_FUNCTION_EXISTS=yn -Wl,--whole-archive CMakeFiles\cmTryCompileExec488209033.dir/objects.a -Wl,--no-whole-archive -o cmTryCompileExec488209033.exe -Wl,--out-implib,libcmTryCompileExec488209033.dll.a -Wl,--major-image-version,0,--minor-image-version,0 -lm -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 +mingw32-make[1]: Leaving directory 'C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/CMakeTmp' + + +Determining if the Q_WS_WIN exist passed with the following output: +Change Dir: C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/CMakeTmp + +Run Build Command:C:/mingw/x32/bin/mingw32-make.exe "cmTryCompileExec2767957938/fast" +make -f CMakeFiles\cmTryCompileExec2767957938.dir\build.make CMakeFiles/cmTryCompileExec2767957938.dir/build + +C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles\CMakeTmp>mingw32-make -f CMakeFiles\cmTryCompileExec2767957938.dir\build.make CMakeFiles/cmTryCompileExec2767957938.dir/build +mingw32-make[1]: Entering directory 'C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/CMakeTmp' +"C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" -E cmake_progress_report C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles\CMakeTmp\CMakeFiles 1 +Building CXX object CMakeFiles/cmTryCompileExec2767957938.dir/CheckSymbolExists.cxx.obj +C:\mingw\x32\bin\g++.exe @CMakeFiles/cmTryCompileExec2767957938.dir/includes_CXX.rsp -o CMakeFiles\cmTryCompileExec2767957938.dir\CheckSymbolExists.cxx.obj -c C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles\CMakeTmp\CheckSymbolExists.cxx +Linking CXX executable cmTryCompileExec2767957938.exe +"C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" -E cmake_link_script CMakeFiles\cmTryCompileExec2767957938.dir\link.txt --verbose=1 +"C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" -E remove -f CMakeFiles\cmTryCompileExec2767957938.dir/objects.a +C:\mingw\x32\bin\ar.exe cr CMakeFiles\cmTryCompileExec2767957938.dir/objects.a @CMakeFiles\cmTryCompileExec2767957938.dir\objects1.rsp +C:\mingw\x32\bin\g++.exe -Wl,--whole-archive CMakeFiles\cmTryCompileExec2767957938.dir/objects.a -Wl,--no-whole-archive -o cmTryCompileExec2767957938.exe -Wl,--out-implib,libcmTryCompileExec2767957938.dll.a -Wl,--major-image-version,0,--minor-image-version,0 -lm -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 +mingw32-make[1]: Leaving directory 'C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/CMakeTmp' + +File C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/CMakeTmp/CheckSymbolExists.cxx: +/* */ +#include + +int main(int argc, char** argv) +{ + (void)argv; +#ifndef Q_WS_WIN + return ((int*)(&Q_WS_WIN))[argc]; +#else + (void)argc; + return 0; +#endif +} + diff --git a/_oldpip/pip_0.4.0_r5/CMakeFiles/Makefile.cmake b/_oldpip/pip_0.4.0_r5/CMakeFiles/Makefile.cmake new file mode 100644 index 0000000..886e811 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/CMakeFiles/Makefile.cmake @@ -0,0 +1,68 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "MinGW Makefiles" Generator, CMake Version 2.8 + +# The generator used is: +SET(CMAKE_DEPENDS_GENERATOR "MinGW Makefiles") + +# The top level Makefile was generated from the following files: +SET(CMAKE_MAKEFILE_DEPENDS + "CMakeCache.txt" + "C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/CMakeCInformation.cmake" + "C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/CMakeCXXInformation.cmake" + "C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/CMakeCommonLanguageInclude.cmake" + "C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/CMakeGenericSystem.cmake" + "C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/CMakeParseArguments.cmake" + "C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/CMakeRCInformation.cmake" + "C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/CMakeSystemSpecificInformation.cmake" + "C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/CheckCXXSymbolExists.cmake" + "C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/CheckFunctionExists.cmake" + "C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/CheckSymbolExists.cmake" + "C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/Compiler/GNU-C.cmake" + "C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/Compiler/GNU-CXX.cmake" + "C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/Compiler/GNU.cmake" + "C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake" + "C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/FindPackageMessage.cmake" + "C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/FindQt4.cmake" + "C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/MacroAddFileDependencies.cmake" + "C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/Platform/Windows-GNU-C-ABI.cmake" + "C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/Platform/Windows-GNU-C.cmake" + "C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/Platform/Windows-GNU-CXX-ABI.cmake" + "C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/Platform/Windows-GNU-CXX.cmake" + "C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/Platform/Windows-GNU.cmake" + "C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/Platform/Windows-windres.cmake" + "C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/Platform/Windows.cmake" + "C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/Platform/WindowsPaths.cmake" + "C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/Qt4ConfigDependentSettings.cmake" + "C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/Qt4Macros.cmake" + "CMakeFiles/2.8.12.2/CMakeCCompiler.cmake" + "CMakeFiles/2.8.12.2/CMakeCXXCompiler.cmake" + "CMakeFiles/2.8.12.2/CMakeRCCompiler.cmake" + "CMakeFiles/2.8.12.2/CMakeSystem.cmake" + "CMakeLists.txt" + "code_model_generator/CMakeLists.txt" + "remote_console/CMakeLists.txt" + "system_test/CMakeLists.txt" + ) + +# The corresponding makefile is: +SET(CMAKE_MAKEFILE_OUTPUTS + "Makefile" + "CMakeFiles/cmake.check_cache" + ) + +# Byproducts of CMake generate step: +SET(CMAKE_MAKEFILE_PRODUCTS + "CMakeFiles/CMakeDirectoryInformation.cmake" + "system_test/CMakeFiles/CMakeDirectoryInformation.cmake" + "remote_console/CMakeFiles/CMakeDirectoryInformation.cmake" + "code_model_generator/CMakeFiles/CMakeDirectoryInformation.cmake" + ) + +# Dependency information for all targets: +SET(CMAKE_DEPEND_INFO_FILES + "CMakeFiles/pip.dir/DependInfo.cmake" + "CMakeFiles/pip_test.dir/DependInfo.cmake" + "system_test/CMakeFiles/pip_sys_test.dir/DependInfo.cmake" + "remote_console/CMakeFiles/pip_remote_console.dir/DependInfo.cmake" + "code_model_generator/CMakeFiles/pip_cmg.dir/DependInfo.cmake" + ) diff --git a/_oldpip/pip_0.4.0_r5/CMakeFiles/Makefile2 b/_oldpip/pip_0.4.0_r5/CMakeFiles/Makefile2 new file mode 100644 index 0000000..cf7a671 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/CMakeFiles/Makefile2 @@ -0,0 +1,286 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "MinGW Makefiles" Generator, CMake Version 2.8 + +# Default target executed when no arguments are given to make. +default_target: all +.PHONY : default_target + +# The main recursive all target +all: +.PHONY : all + +# The main recursive preinstall target +preinstall: +.PHONY : preinstall + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Remove some rules from gmake that .SUFFIXES does not remove. +SUFFIXES = + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +SHELL = cmd.exe + +# The CMake executable. +CMAKE_COMMAND = "C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" + +# The command to remove a file. +RM = "C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" -E remove -f + +# Escaping for special characters. +EQUALS = = + +# The program to use to edit the cache. +CMAKE_EDIT_COMMAND = "C:\Program Files (x86)\CMake 2.8\bin\cmake-gui.exe" + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = C:\libs\oldpip\pip_0.4.0_r5 + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = C:\libs\oldpip\pip_0.4.0_r5 + +#============================================================================= +# Target rules for target CMakeFiles/pip.dir + +# All Build rule for target. +CMakeFiles/pip.dir/all: + $(MAKE) -f CMakeFiles\pip.dir\build.make CMakeFiles/pip.dir/depend + $(MAKE) -f CMakeFiles\pip.dir\build.make CMakeFiles/pip.dir/build + $(CMAKE_COMMAND) -E cmake_progress_report C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 + @echo Built target pip +.PHONY : CMakeFiles/pip.dir/all + +# Include target in all. +all: CMakeFiles/pip.dir/all +.PHONY : all + +# Build rule for subdir invocation for target. +CMakeFiles/pip.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles 39 + $(MAKE) -f CMakeFiles\Makefile2 CMakeFiles/pip.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles 0 +.PHONY : CMakeFiles/pip.dir/rule + +# Convenience name for target. +pip: CMakeFiles/pip.dir/rule +.PHONY : pip + +# clean rule for target. +CMakeFiles/pip.dir/clean: + $(MAKE) -f CMakeFiles\pip.dir\build.make CMakeFiles/pip.dir/clean +.PHONY : CMakeFiles/pip.dir/clean + +# clean rule for target. +clean: CMakeFiles/pip.dir/clean +.PHONY : clean + +#============================================================================= +# Target rules for target CMakeFiles/pip_test.dir + +# All Build rule for target. +CMakeFiles/pip_test.dir/all: CMakeFiles/pip.dir/all + $(MAKE) -f CMakeFiles\pip_test.dir\build.make CMakeFiles/pip_test.dir/depend + $(MAKE) -f CMakeFiles\pip_test.dir\build.make CMakeFiles/pip_test.dir/build + $(CMAKE_COMMAND) -E cmake_progress_report C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles 43 + @echo Built target pip_test +.PHONY : CMakeFiles/pip_test.dir/all + +# Include target in all. +all: CMakeFiles/pip_test.dir/all +.PHONY : all + +# Build rule for subdir invocation for target. +CMakeFiles/pip_test.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles 40 + $(MAKE) -f CMakeFiles\Makefile2 CMakeFiles/pip_test.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles 0 +.PHONY : CMakeFiles/pip_test.dir/rule + +# Convenience name for target. +pip_test: CMakeFiles/pip_test.dir/rule +.PHONY : pip_test + +# clean rule for target. +CMakeFiles/pip_test.dir/clean: + $(MAKE) -f CMakeFiles\pip_test.dir\build.make CMakeFiles/pip_test.dir/clean +.PHONY : CMakeFiles/pip_test.dir/clean + +# clean rule for target. +clean: CMakeFiles/pip_test.dir/clean +.PHONY : clean + +#============================================================================= +# Directory level rules for directory system_test + +# Convenience name for "all" pass in the directory. +system_test/all: system_test/CMakeFiles/pip_sys_test.dir/all +.PHONY : system_test/all + +# Convenience name for "clean" pass in the directory. +system_test/clean: system_test/CMakeFiles/pip_sys_test.dir/clean +.PHONY : system_test/clean + +# Convenience name for "preinstall" pass in the directory. +system_test/preinstall: +.PHONY : system_test/preinstall + +#============================================================================= +# Target rules for target system_test/CMakeFiles/pip_sys_test.dir + +# All Build rule for target. +system_test/CMakeFiles/pip_sys_test.dir/all: CMakeFiles/pip.dir/all + $(MAKE) -f system_test\CMakeFiles\pip_sys_test.dir\build.make system_test/CMakeFiles/pip_sys_test.dir/depend + $(MAKE) -f system_test\CMakeFiles\pip_sys_test.dir\build.make system_test/CMakeFiles/pip_sys_test.dir/build + $(CMAKE_COMMAND) -E cmake_progress_report C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles 42 + @echo Built target pip_sys_test +.PHONY : system_test/CMakeFiles/pip_sys_test.dir/all + +# Include target in all. +all: system_test/CMakeFiles/pip_sys_test.dir/all +.PHONY : all + +# Build rule for subdir invocation for target. +system_test/CMakeFiles/pip_sys_test.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles 40 + $(MAKE) -f CMakeFiles\Makefile2 system_test/CMakeFiles/pip_sys_test.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles 0 +.PHONY : system_test/CMakeFiles/pip_sys_test.dir/rule + +# Convenience name for target. +pip_sys_test: system_test/CMakeFiles/pip_sys_test.dir/rule +.PHONY : pip_sys_test + +# clean rule for target. +system_test/CMakeFiles/pip_sys_test.dir/clean: + $(MAKE) -f system_test\CMakeFiles\pip_sys_test.dir\build.make system_test/CMakeFiles/pip_sys_test.dir/clean +.PHONY : system_test/CMakeFiles/pip_sys_test.dir/clean + +# clean rule for target. +clean: system_test/CMakeFiles/pip_sys_test.dir/clean +.PHONY : clean + +#============================================================================= +# Directory level rules for directory remote_console + +# Convenience name for "all" pass in the directory. +remote_console/all: remote_console/CMakeFiles/pip_remote_console.dir/all +.PHONY : remote_console/all + +# Convenience name for "clean" pass in the directory. +remote_console/clean: remote_console/CMakeFiles/pip_remote_console.dir/clean +.PHONY : remote_console/clean + +# Convenience name for "preinstall" pass in the directory. +remote_console/preinstall: +.PHONY : remote_console/preinstall + +#============================================================================= +# Target rules for target remote_console/CMakeFiles/pip_remote_console.dir + +# All Build rule for target. +remote_console/CMakeFiles/pip_remote_console.dir/all: CMakeFiles/pip.dir/all + $(MAKE) -f remote_console\CMakeFiles\pip_remote_console.dir\build.make remote_console/CMakeFiles/pip_remote_console.dir/depend + $(MAKE) -f remote_console\CMakeFiles\pip_remote_console.dir\build.make remote_console/CMakeFiles/pip_remote_console.dir/build + $(CMAKE_COMMAND) -E cmake_progress_report C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles 41 + @echo Built target pip_remote_console +.PHONY : remote_console/CMakeFiles/pip_remote_console.dir/all + +# Include target in all. +all: remote_console/CMakeFiles/pip_remote_console.dir/all +.PHONY : all + +# Build rule for subdir invocation for target. +remote_console/CMakeFiles/pip_remote_console.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles 40 + $(MAKE) -f CMakeFiles\Makefile2 remote_console/CMakeFiles/pip_remote_console.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles 0 +.PHONY : remote_console/CMakeFiles/pip_remote_console.dir/rule + +# Convenience name for target. +pip_remote_console: remote_console/CMakeFiles/pip_remote_console.dir/rule +.PHONY : pip_remote_console + +# clean rule for target. +remote_console/CMakeFiles/pip_remote_console.dir/clean: + $(MAKE) -f remote_console\CMakeFiles\pip_remote_console.dir\build.make remote_console/CMakeFiles/pip_remote_console.dir/clean +.PHONY : remote_console/CMakeFiles/pip_remote_console.dir/clean + +# clean rule for target. +clean: remote_console/CMakeFiles/pip_remote_console.dir/clean +.PHONY : clean + +#============================================================================= +# Directory level rules for directory code_model_generator + +# Convenience name for "all" pass in the directory. +code_model_generator/all: code_model_generator/CMakeFiles/pip_cmg.dir/all +.PHONY : code_model_generator/all + +# Convenience name for "clean" pass in the directory. +code_model_generator/clean: code_model_generator/CMakeFiles/pip_cmg.dir/clean +.PHONY : code_model_generator/clean + +# Convenience name for "preinstall" pass in the directory. +code_model_generator/preinstall: +.PHONY : code_model_generator/preinstall + +#============================================================================= +# Target rules for target code_model_generator/CMakeFiles/pip_cmg.dir + +# All Build rule for target. +code_model_generator/CMakeFiles/pip_cmg.dir/all: CMakeFiles/pip.dir/all + $(MAKE) -f code_model_generator\CMakeFiles\pip_cmg.dir\build.make code_model_generator/CMakeFiles/pip_cmg.dir/depend + $(MAKE) -f code_model_generator\CMakeFiles\pip_cmg.dir\build.make code_model_generator/CMakeFiles/pip_cmg.dir/build + $(CMAKE_COMMAND) -E cmake_progress_report C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles 40 + @echo Built target pip_cmg +.PHONY : code_model_generator/CMakeFiles/pip_cmg.dir/all + +# Include target in all. +all: code_model_generator/CMakeFiles/pip_cmg.dir/all +.PHONY : all + +# Build rule for subdir invocation for target. +code_model_generator/CMakeFiles/pip_cmg.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles 40 + $(MAKE) -f CMakeFiles\Makefile2 code_model_generator/CMakeFiles/pip_cmg.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles 0 +.PHONY : code_model_generator/CMakeFiles/pip_cmg.dir/rule + +# Convenience name for target. +pip_cmg: code_model_generator/CMakeFiles/pip_cmg.dir/rule +.PHONY : pip_cmg + +# clean rule for target. +code_model_generator/CMakeFiles/pip_cmg.dir/clean: + $(MAKE) -f code_model_generator\CMakeFiles\pip_cmg.dir\build.make code_model_generator/CMakeFiles/pip_cmg.dir/clean +.PHONY : code_model_generator/CMakeFiles/pip_cmg.dir/clean + +# clean rule for target. +clean: code_model_generator/CMakeFiles/pip_cmg.dir/clean +.PHONY : clean + +#============================================================================= +# Special targets to cleanup operation of make. + +# Special rule to run CMake to check the build system integrity. +# No rule that depends on this can have commands that come from listfiles +# because they might be regenerated. +cmake_check_build_system: + $(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles\Makefile.cmake 0 +.PHONY : cmake_check_build_system + diff --git a/_oldpip/pip_0.4.0_r5/CMakeFiles/TargetDirectories.txt b/_oldpip/pip_0.4.0_r5/CMakeFiles/TargetDirectories.txt new file mode 100644 index 0000000..26de301 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/CMakeFiles/TargetDirectories.txt @@ -0,0 +1,5 @@ +C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir +C:/libs/oldpip/pip_0.4.0_r5/code_model_generator/CMakeFiles/pip_cmg.dir +C:/libs/oldpip/pip_0.4.0_r5/remote_console/CMakeFiles/pip_remote_console.dir +C:/libs/oldpip/pip_0.4.0_r5/system_test/CMakeFiles/pip_sys_test.dir +C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/pip_test.dir diff --git a/_oldpip/pip_0.4.0_r5/CMakeFiles/cmake.check_cache b/_oldpip/pip_0.4.0_r5/CMakeFiles/cmake.check_cache new file mode 100644 index 0000000..56c437b --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/CMakeFiles/cmake.check_cache @@ -0,0 +1 @@ +# This file is generated by cmake for dependency checking of the CMakeCache.txt file diff --git a/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/CXX.includecache b/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/CXX.includecache new file mode 100644 index 0000000..888b968 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/CXX.includecache @@ -0,0 +1,798 @@ +#IncludeRegexLine: ^[ ]*#[ ]*(include|import)[ ]*[<"]([^">]+)([">]) + +#IncludeRegexScan: ^.*$ + +#IncludeRegexComplain: ^$ + +#IncludeRegexTransform: + +C:/libs/oldpip/pip_0.4.0_r5/pibinarylog.cpp +pibinarylog.h +C:/libs/oldpip/pip_0.4.0_r5/pibinarylog.h + +C:/libs/oldpip/pip_0.4.0_r5/pibinarylog.h +pifile.h +C:/libs/oldpip/pip_0.4.0_r5/pifile.h + +C:/libs/oldpip/pip_0.4.0_r5/pibitarray.h +picontainers.h +C:/libs/oldpip/pip_0.4.0_r5/picontainers.h + +C:/libs/oldpip/pip_0.4.0_r5/pibytearray.cpp +pibytearray.h +C:/libs/oldpip/pip_0.4.0_r5/pibytearray.h +pistring.h +C:/libs/oldpip/pip_0.4.0_r5/pistring.h + +C:/libs/oldpip/pip_0.4.0_r5/pibytearray.h +pibitarray.h +C:/libs/oldpip/pip_0.4.0_r5/pibitarray.h + +C:/libs/oldpip/pip_0.4.0_r5/pichar.h +pibytearray.h +C:/libs/oldpip/pip_0.4.0_r5/pibytearray.h + +C:/libs/oldpip/pip_0.4.0_r5/picli.cpp +picli.h +C:/libs/oldpip/pip_0.4.0_r5/picli.h + +C:/libs/oldpip/pip_0.4.0_r5/picli.h +piobject.h +C:/libs/oldpip/pip_0.4.0_r5/piobject.h + +C:/libs/oldpip/pip_0.4.0_r5/picodec.cpp +picodec.h +C:/libs/oldpip/pip_0.4.0_r5/picodec.h + +C:/libs/oldpip/pip_0.4.0_r5/picodec.h +piprocess.h +C:/libs/oldpip/pip_0.4.0_r5/piprocess.h + +C:/libs/oldpip/pip_0.4.0_r5/picodeinfo.cpp +picodeinfo.h +C:/libs/oldpip/pip_0.4.0_r5/picodeinfo.h + +C:/libs/oldpip/pip_0.4.0_r5/picodeinfo.h +pistring.h +C:/libs/oldpip/pip_0.4.0_r5/pistring.h + +C:/libs/oldpip/pip_0.4.0_r5/picodeparser.cpp +picodeparser.h +C:/libs/oldpip/pip_0.4.0_r5/picodeparser.h + +C:/libs/oldpip/pip_0.4.0_r5/picodeparser.h +pifile.h +C:/libs/oldpip/pip_0.4.0_r5/pifile.h +pievaluator.h +C:/libs/oldpip/pip_0.4.0_r5/pievaluator.h + +C:/libs/oldpip/pip_0.4.0_r5/picollection.cpp +picollection.h +C:/libs/oldpip/pip_0.4.0_r5/picollection.h + +C:/libs/oldpip/pip_0.4.0_r5/picollection.h +piobject.h +C:/libs/oldpip/pip_0.4.0_r5/piobject.h + +C:/libs/oldpip/pip_0.4.0_r5/piconfig.cpp +piconfig.h +C:/libs/oldpip/pip_0.4.0_r5/piconfig.h + +C:/libs/oldpip/pip_0.4.0_r5/piconfig.h +pifile.h +C:/libs/oldpip/pip_0.4.0_r5/pifile.h + +C:/libs/oldpip/pip_0.4.0_r5/piconnection.cpp +piconnection.h +C:/libs/oldpip/pip_0.4.0_r5/piconnection.h +piconfig.h +C:/libs/oldpip/pip_0.4.0_r5/piconfig.h + +C:/libs/oldpip/pip_0.4.0_r5/piconnection.h +pipacketextractor.h +C:/libs/oldpip/pip_0.4.0_r5/pipacketextractor.h + +C:/libs/oldpip/pip_0.4.0_r5/piconsole.cpp +piconsole.h +C:/libs/oldpip/pip_0.4.0_r5/piconsole.h +pipeer.h +C:/libs/oldpip/pip_0.4.0_r5/pipeer.h + +C:/libs/oldpip/pip_0.4.0_r5/piconsole.h +pikbdlistener.h +C:/libs/oldpip/pip_0.4.0_r5/pikbdlistener.h +piprotocol.h +C:/libs/oldpip/pip_0.4.0_r5/piprotocol.h +pidiagnostics.h +C:/libs/oldpip/pip_0.4.0_r5/pidiagnostics.h +pisystemmonitor.h +C:/libs/oldpip/pip_0.4.0_r5/pisystemmonitor.h +sys/ioctl.h +- +fcntl.h +- + +C:/libs/oldpip/pip_0.4.0_r5/picontainers.cpp +pivector.h +C:/libs/oldpip/pip_0.4.0_r5/pivector.h + +C:/libs/oldpip/pip_0.4.0_r5/picontainers.h +piincludes.h +C:/libs/oldpip/pip_0.4.0_r5/piincludes.h +pivector.h +C:/libs/oldpip/pip_0.4.0_r5/pivector.h +pistack.h +C:/libs/oldpip/pip_0.4.0_r5/pistack.h +piqueue.h +C:/libs/oldpip/pip_0.4.0_r5/piqueue.h +pideque.h +C:/libs/oldpip/pip_0.4.0_r5/pideque.h +pimap.h +C:/libs/oldpip/pip_0.4.0_r5/pimap.h + +C:/libs/oldpip/pip_0.4.0_r5/pideque.h +piincludes.h +C:/libs/oldpip/pip_0.4.0_r5/piincludes.h + +C:/libs/oldpip/pip_0.4.0_r5/pidevicepool.cpp +pidevicepool.h +C:/libs/oldpip/pip_0.4.0_r5/pidevicepool.h + +C:/libs/oldpip/pip_0.4.0_r5/pidevicepool.h +piiodevice.h +C:/libs/oldpip/pip_0.4.0_r5/piiodevice.h + +C:/libs/oldpip/pip_0.4.0_r5/pidiagnostics.cpp +pidiagnostics.h +C:/libs/oldpip/pip_0.4.0_r5/pidiagnostics.h + +C:/libs/oldpip/pip_0.4.0_r5/pidiagnostics.h +pitimer.h +C:/libs/oldpip/pip_0.4.0_r5/pitimer.h + +C:/libs/oldpip/pip_0.4.0_r5/pidir.cpp +pidir.h +C:/libs/oldpip/pip_0.4.0_r5/pidir.h + +C:/libs/oldpip/pip_0.4.0_r5/pidir.h +pifile.h +C:/libs/oldpip/pip_0.4.0_r5/pifile.h +sys/dirent.h +- +sys/dir.h +- +sys/stat.h +- + +C:/libs/oldpip/pip_0.4.0_r5/piethernet.cpp +piethernet.h +C:/libs/oldpip/pip_0.4.0_r5/piethernet.h +piconfig.h +C:/libs/oldpip/pip_0.4.0_r5/piconfig.h +net/if_dl.h +- +hw/nicinfo.h +- +sys/dcmd_io-net.h +- + +C:/libs/oldpip/pip_0.4.0_r5/piethernet.h +pitimer.h +C:/libs/oldpip/pip_0.4.0_r5/pitimer.h +piiodevice.h +C:/libs/oldpip/pip_0.4.0_r5/piiodevice.h +piprocess.h +C:/libs/oldpip/pip_0.4.0_r5/piprocess.h + +C:/libs/oldpip/pip_0.4.0_r5/pievaluator.cpp +pievaluator.h +C:/libs/oldpip/pip_0.4.0_r5/pievaluator.h + +C:/libs/oldpip/pip_0.4.0_r5/pievaluator.h +pistring.h +C:/libs/oldpip/pip_0.4.0_r5/pistring.h +pimath.h +C:/libs/oldpip/pip_0.4.0_r5/pimath.h + +C:/libs/oldpip/pip_0.4.0_r5/pifile.cpp +pifile.h +C:/libs/oldpip/pip_0.4.0_r5/pifile.h + +C:/libs/oldpip/pip_0.4.0_r5/pifile.h +piiodevice.h +C:/libs/oldpip/pip_0.4.0_r5/piiodevice.h +cstdio +- + +C:/libs/oldpip/pip_0.4.0_r5/piincludes.cpp +piincludes.h +C:/libs/oldpip/pip_0.4.0_r5/piincludes.h +piconsole.h +C:/libs/oldpip/pip_0.4.0_r5/piconsole.h +pip.h +- + +C:/libs/oldpip/pip_0.4.0_r5/piincludes.h +pip_export.h +C:/libs/oldpip/pip_0.4.0_r5/pip_export.h +iostream +- +unistd.h +- +stdarg.h +- +stddef.h +- +cstdio +- +cstdlib +- +clocale +- +stdio.h +- +locale.h +- +stdlib.h +- +sys/stat.h +- +sys/types.h +- +errno.h +- +cctype +- +ctime +- +csignal +- +cassert +- +cmath +- +typeinfo +- +algorithm +- +string.h +- +string +- +vector +- +list +- +queue +- +deque +- +stack +- +set +- +map +- +conio.h +- +io.h +- +winsock2.h +- +windows.h +- +wincon.h +- +iphlpapi.h +- +netinet/in.h +- +arpa/inet.h +- +sys/socket.h +- +fcntl.h +- +sys/ioctl.h +- +net/if.h +- +pthread.h +- +ifaddrs.h +- +mach/mach_traps.h +- +mach/mach.h +- +mach/clock.h +- +crt_externs.h +- +pimonitor.h +C:/libs/oldpip/pip_0.4.0_r5/pimonitor.h + +C:/libs/oldpip/pip_0.4.0_r5/piiodevice.cpp +piiodevice.h +C:/libs/oldpip/pip_0.4.0_r5/piiodevice.h +piconfig.h +C:/libs/oldpip/pip_0.4.0_r5/piconfig.h + +C:/libs/oldpip/pip_0.4.0_r5/piiodevice.h +picollection.h +C:/libs/oldpip/pip_0.4.0_r5/picollection.h +pivariant.h +C:/libs/oldpip/pip_0.4.0_r5/pivariant.h +pitimer.h +C:/libs/oldpip/pip_0.4.0_r5/pitimer.h + +C:/libs/oldpip/pip_0.4.0_r5/pikbdlistener.cpp +pikbdlistener.h +C:/libs/oldpip/pip_0.4.0_r5/pikbdlistener.h + +C:/libs/oldpip/pip_0.4.0_r5/pikbdlistener.h +pithread.h +C:/libs/oldpip/pip_0.4.0_r5/pithread.h +termios.h +- + +C:/libs/oldpip/pip_0.4.0_r5/pimap.h +pivector.h +C:/libs/oldpip/pip_0.4.0_r5/pivector.h +pideque.h +C:/libs/oldpip/pip_0.4.0_r5/pideque.h + +C:/libs/oldpip/pip_0.4.0_r5/pimath.cpp +pimath.h +C:/libs/oldpip/pip_0.4.0_r5/pimath.h + +C:/libs/oldpip/pip_0.4.0_r5/pimath.h +pibytearray.h +C:/libs/oldpip/pip_0.4.0_r5/pibytearray.h +complex +- +cmath +- +complex.h +- +math.h +- + +C:/libs/oldpip/pip_0.4.0_r5/pimonitor.cpp +pimonitor.h +C:/libs/oldpip/pip_0.4.0_r5/pimonitor.h + +C:/libs/oldpip/pip_0.4.0_r5/pimonitor.h +pip_export.h +C:/libs/oldpip/pip_0.4.0_r5/pip_export.h + +C:/libs/oldpip/pip_0.4.0_r5/pimultiprotocol.cpp +pimultiprotocol.h +C:/libs/oldpip/pip_0.4.0_r5/pimultiprotocol.h + +C:/libs/oldpip/pip_0.4.0_r5/pimultiprotocol.h +piprotocol.h +C:/libs/oldpip/pip_0.4.0_r5/piprotocol.h + +C:/libs/oldpip/pip_0.4.0_r5/pimutex.cpp +pimutex.h +C:/libs/oldpip/pip_0.4.0_r5/pimutex.h + +C:/libs/oldpip/pip_0.4.0_r5/pimutex.h +piincludes.h +C:/libs/oldpip/pip_0.4.0_r5/piincludes.h + +C:/libs/oldpip/pip_0.4.0_r5/piobject.cpp +piobject.h +C:/libs/oldpip/pip_0.4.0_r5/piobject.h + +C:/libs/oldpip/pip_0.4.0_r5/piobject.h +pivariant.h +C:/libs/oldpip/pip_0.4.0_r5/pivariant.h +pimutex.h +C:/libs/oldpip/pip_0.4.0_r5/pimutex.h + +C:/libs/oldpip/pip_0.4.0_r5/pip_export.h + +C:/libs/oldpip/pip_0.4.0_r5/pipacketextractor.cpp +pipacketextractor.h +C:/libs/oldpip/pip_0.4.0_r5/pipacketextractor.h + +C:/libs/oldpip/pip_0.4.0_r5/pipacketextractor.h +piiodevice.h +C:/libs/oldpip/pip_0.4.0_r5/piiodevice.h + +C:/libs/oldpip/pip_0.4.0_r5/pipeer.cpp +pipeer.h +C:/libs/oldpip/pip_0.4.0_r5/pipeer.h + +C:/libs/oldpip/pip_0.4.0_r5/pipeer.h +piethernet.h +C:/libs/oldpip/pip_0.4.0_r5/piethernet.h +pidiagnostics.h +C:/libs/oldpip/pip_0.4.0_r5/pidiagnostics.h + +C:/libs/oldpip/pip_0.4.0_r5/piprocess.cpp +piprocess.h +C:/libs/oldpip/pip_0.4.0_r5/piprocess.h + +C:/libs/oldpip/pip_0.4.0_r5/piprocess.h +pithread.h +C:/libs/oldpip/pip_0.4.0_r5/pithread.h +pifile.h +C:/libs/oldpip/pip_0.4.0_r5/pifile.h +sys/wait.h +- + +C:/libs/oldpip/pip_0.4.0_r5/piprotocol.cpp +piprotocol.h +C:/libs/oldpip/pip_0.4.0_r5/piprotocol.h + +C:/libs/oldpip/pip_0.4.0_r5/piprotocol.h +piserial.h +C:/libs/oldpip/pip_0.4.0_r5/piserial.h +piethernet.h +C:/libs/oldpip/pip_0.4.0_r5/piethernet.h +pipacketextractor.h +C:/libs/oldpip/pip_0.4.0_r5/pipacketextractor.h +pitimer.h +C:/libs/oldpip/pip_0.4.0_r5/pitimer.h +piconfig.h +C:/libs/oldpip/pip_0.4.0_r5/piconfig.h +math.h +C:/libs/oldpip/pip_0.4.0_r5/math.h + +C:/libs/oldpip/pip_0.4.0_r5/piqueue.h +pivector.h +C:/libs/oldpip/pip_0.4.0_r5/pivector.h + +C:/libs/oldpip/pip_0.4.0_r5/piserial.cpp +piserial.h +C:/libs/oldpip/pip_0.4.0_r5/piserial.h +piconfig.h +C:/libs/oldpip/pip_0.4.0_r5/piconfig.h +pidir.h +C:/libs/oldpip/pip_0.4.0_r5/pidir.h + +C:/libs/oldpip/pip_0.4.0_r5/piserial.h +pitimer.h +C:/libs/oldpip/pip_0.4.0_r5/pitimer.h +piiodevice.h +C:/libs/oldpip/pip_0.4.0_r5/piiodevice.h +termios.h +- +fcntl.h +- +sys/ioctl.h +- + +C:/libs/oldpip/pip_0.4.0_r5/pisignals.cpp +pisignals.h +C:/libs/oldpip/pip_0.4.0_r5/pisignals.h + +C:/libs/oldpip/pip_0.4.0_r5/pisignals.h +picontainers.h +C:/libs/oldpip/pip_0.4.0_r5/picontainers.h +csignal +- + +C:/libs/oldpip/pip_0.4.0_r5/pistack.h +pivector.h +C:/libs/oldpip/pip_0.4.0_r5/pivector.h + +C:/libs/oldpip/pip_0.4.0_r5/pistring.cpp +pistring.h +C:/libs/oldpip/pip_0.4.0_r5/pistring.h + +C:/libs/oldpip/pip_0.4.0_r5/pistring.h +pibytearray.h +C:/libs/oldpip/pip_0.4.0_r5/pibytearray.h +pichar.h +C:/libs/oldpip/pip_0.4.0_r5/pichar.h +math.h +C:/libs/oldpip/pip_0.4.0_r5/math.h + +C:/libs/oldpip/pip_0.4.0_r5/pisystemmonitor.cpp +pisystemmonitor.h +C:/libs/oldpip/pip_0.4.0_r5/pisystemmonitor.h + +C:/libs/oldpip/pip_0.4.0_r5/pisystemmonitor.h +pithread.h +C:/libs/oldpip/pip_0.4.0_r5/pithread.h +piprocess.h +C:/libs/oldpip/pip_0.4.0_r5/piprocess.h + +C:/libs/oldpip/pip_0.4.0_r5/pisystemtests.cpp +pisystemtests.h +C:/libs/oldpip/pip_0.4.0_r5/pisystemtests.h + +C:/libs/oldpip/pip_0.4.0_r5/pisystemtests.h +piconfig.h +C:/libs/oldpip/pip_0.4.0_r5/piconfig.h + +C:/libs/oldpip/pip_0.4.0_r5/pithread.cpp +pithread.h +C:/libs/oldpip/pip_0.4.0_r5/pithread.h +pisystemtests.h +C:/libs/oldpip/pip_0.4.0_r5/pisystemtests.h + +C:/libs/oldpip/pip_0.4.0_r5/pithread.h +signal.h +- +pimutex.h +C:/libs/oldpip/pip_0.4.0_r5/pimutex.h +piobject.h +C:/libs/oldpip/pip_0.4.0_r5/piobject.h + +C:/libs/oldpip/pip_0.4.0_r5/pitime.cpp +pitime.h +C:/libs/oldpip/pip_0.4.0_r5/pitime.h +pisystemtests.h +C:/libs/oldpip/pip_0.4.0_r5/pisystemtests.h + +C:/libs/oldpip/pip_0.4.0_r5/pitime.h +ctime +- +csignal +- +pistring.h +C:/libs/oldpip/pip_0.4.0_r5/pistring.h + +C:/libs/oldpip/pip_0.4.0_r5/pitimer.cpp +pitimer.h +C:/libs/oldpip/pip_0.4.0_r5/pitimer.h +pisystemtests.h +C:/libs/oldpip/pip_0.4.0_r5/pisystemtests.h + +C:/libs/oldpip/pip_0.4.0_r5/pitimer.h +pithread.h +C:/libs/oldpip/pip_0.4.0_r5/pithread.h +pitime.h +C:/libs/oldpip/pip_0.4.0_r5/pitime.h + +C:/libs/oldpip/pip_0.4.0_r5/piusb.cpp +piusb.h +C:/libs/oldpip/pip_0.4.0_r5/piusb.h +piconfig.h +C:/libs/oldpip/pip_0.4.0_r5/piconfig.h +lusb0_usb.h +- +usb.h +- + +C:/libs/oldpip/pip_0.4.0_r5/piusb.h +piiodevice.h +C:/libs/oldpip/pip_0.4.0_r5/piiodevice.h + +C:/libs/oldpip/pip_0.4.0_r5/pivariant.cpp +pivariant.h +C:/libs/oldpip/pip_0.4.0_r5/pivariant.h + +C:/libs/oldpip/pip_0.4.0_r5/pivariant.h +pistring.h +C:/libs/oldpip/pip_0.4.0_r5/pistring.h +pibitarray.h +C:/libs/oldpip/pip_0.4.0_r5/pibitarray.h +pitime.h +C:/libs/oldpip/pip_0.4.0_r5/pitime.h +pimath.h +C:/libs/oldpip/pip_0.4.0_r5/pimath.h + +C:/libs/oldpip/pip_0.4.0_r5/pivector.h +piincludes.h +C:/libs/oldpip/pip_0.4.0_r5/piincludes.h + +pibinarylog.h +pifile.h +pifile.h + +pibitarray.h +picontainers.h +picontainers.h + +pibytearray.h +pibitarray.h +pibitarray.h + +pichar.h +pibytearray.h +pibytearray.h + +picli.h +piobject.h +piobject.h + +picodec.h +piprocess.h +piprocess.h + +picollection.h +piobject.h +piobject.h + +picontainers.h +piincludes.h +piincludes.h +pivector.h +pivector.h +pistack.h +pistack.h +piqueue.h +piqueue.h +pideque.h +pideque.h +pimap.h +pimap.h + +picrc.h +pistring.h +pistring.h + +pideque.h +piincludes.h +piincludes.h + +pievaluator.h +pistring.h +pistring.h +pimath.h +pimath.h + +pifile.h +piiodevice.h +piiodevice.h +cstdio +- + +piiodevice.h +picollection.h +picollection.h +pivariant.h +pivariant.h +pitimer.h +pitimer.h + +pimap.h +pivector.h +pivector.h +pideque.h +pideque.h + +pimath.h +pibytearray.h +pibytearray.h +complex +- +cmath +- +complex.h +- +math.h +- + +pimultiprotocol.h +piprotocol.h +piprotocol.h + +pimutex.h +piincludes.h +piincludes.h + +piobject.h +pivariant.h +pivariant.h +pimutex.h +pimutex.h + +pip.h +pitimer.h +pitimer.h +pivariant.h +pivariant.h +piconsole.h +piconsole.h +picli.h +picli.h +pievaluator.h +pievaluator.h +pimultiprotocol.h +pimultiprotocol.h +picodec.h +picodec.h +pisignals.h +pisignals.h +piobject.h +piobject.h +pisystemmonitor.h +pisystemmonitor.h +pipeer.h +pipeer.h +picrc.h +picrc.h +pistatemachine.h +pistatemachine.h +picollection.h +picollection.h +piserial.h +piserial.h +pibinarylog.h +pibinarylog.h +piusb.h +piusb.h + +pipeer.h +piethernet.h +piethernet.h +pidiagnostics.h +pidiagnostics.h + +piqueue.h +pivector.h +pivector.h + +piserial.h +pitimer.h +pitimer.h +piiodevice.h +piiodevice.h +termios.h +- +fcntl.h +- +sys/ioctl.h +- + +pisignals.h +picontainers.h +picontainers.h +csignal +- + +pistack.h +pivector.h +pivector.h + +pistatemachine.h +piobject.h +piobject.h + +pistring.h +pibytearray.h +pibytearray.h +pichar.h +pichar.h +math.h +math.h + +pitime.h +ctime +- +csignal +- +pistring.h +pistring.h + +pitimer.h +pithread.h +pithread.h +pitime.h +pitime.h + +piusb.h +piiodevice.h +piiodevice.h + +pivariant.h +pistring.h +pistring.h +pibitarray.h +pibitarray.h +pitime.h +pitime.h +pimath.h +pimath.h + +pivector.h +piincludes.h +piincludes.h + diff --git a/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/DependInfo.cmake b/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/DependInfo.cmake new file mode 100644 index 0000000..b8f7b9b --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/DependInfo.cmake @@ -0,0 +1,93 @@ +# The set of languages for which implicit dependencies are needed: +SET(CMAKE_DEPENDS_LANGUAGES + "CXX" + ) +# The set of files for implicit dependencies of each language: +SET(CMAKE_DEPENDS_CHECK_CXX + "C:/libs/oldpip/pip_0.4.0_r5/pibinarylog.cpp" "C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/pibinarylog.cpp.obj" + "C:/libs/oldpip/pip_0.4.0_r5/pibytearray.cpp" "C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/pibytearray.cpp.obj" + "C:/libs/oldpip/pip_0.4.0_r5/picli.cpp" "C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/picli.cpp.obj" + "C:/libs/oldpip/pip_0.4.0_r5/picodec.cpp" "C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/picodec.cpp.obj" + "C:/libs/oldpip/pip_0.4.0_r5/picodeinfo.cpp" "C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/picodeinfo.cpp.obj" + "C:/libs/oldpip/pip_0.4.0_r5/picodeparser.cpp" "C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/picodeparser.cpp.obj" + "C:/libs/oldpip/pip_0.4.0_r5/picollection.cpp" "C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/picollection.cpp.obj" + "C:/libs/oldpip/pip_0.4.0_r5/piconfig.cpp" "C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/piconfig.cpp.obj" + "C:/libs/oldpip/pip_0.4.0_r5/piconnection.cpp" "C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/piconnection.cpp.obj" + "C:/libs/oldpip/pip_0.4.0_r5/piconsole.cpp" "C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/piconsole.cpp.obj" + "C:/libs/oldpip/pip_0.4.0_r5/picontainers.cpp" "C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/picontainers.cpp.obj" + "C:/libs/oldpip/pip_0.4.0_r5/pidevicepool.cpp" "C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/pidevicepool.cpp.obj" + "C:/libs/oldpip/pip_0.4.0_r5/pidiagnostics.cpp" "C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/pidiagnostics.cpp.obj" + "C:/libs/oldpip/pip_0.4.0_r5/pidir.cpp" "C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/pidir.cpp.obj" + "C:/libs/oldpip/pip_0.4.0_r5/piethernet.cpp" "C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/piethernet.cpp.obj" + "C:/libs/oldpip/pip_0.4.0_r5/pievaluator.cpp" "C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/pievaluator.cpp.obj" + "C:/libs/oldpip/pip_0.4.0_r5/pifile.cpp" "C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/pifile.cpp.obj" + "C:/libs/oldpip/pip_0.4.0_r5/piincludes.cpp" "C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/piincludes.cpp.obj" + "C:/libs/oldpip/pip_0.4.0_r5/piiodevice.cpp" "C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/piiodevice.cpp.obj" + "C:/libs/oldpip/pip_0.4.0_r5/pikbdlistener.cpp" "C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/pikbdlistener.cpp.obj" + "C:/libs/oldpip/pip_0.4.0_r5/pimath.cpp" "C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/pimath.cpp.obj" + "C:/libs/oldpip/pip_0.4.0_r5/pimonitor.cpp" "C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/pimonitor.cpp.obj" + "C:/libs/oldpip/pip_0.4.0_r5/pimultiprotocol.cpp" "C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/pimultiprotocol.cpp.obj" + "C:/libs/oldpip/pip_0.4.0_r5/pimutex.cpp" "C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/pimutex.cpp.obj" + "C:/libs/oldpip/pip_0.4.0_r5/piobject.cpp" "C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/piobject.cpp.obj" + "C:/libs/oldpip/pip_0.4.0_r5/pipacketextractor.cpp" "C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/pipacketextractor.cpp.obj" + "C:/libs/oldpip/pip_0.4.0_r5/pipeer.cpp" "C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/pipeer.cpp.obj" + "C:/libs/oldpip/pip_0.4.0_r5/piprocess.cpp" "C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/piprocess.cpp.obj" + "C:/libs/oldpip/pip_0.4.0_r5/piprotocol.cpp" "C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/piprotocol.cpp.obj" + "C:/libs/oldpip/pip_0.4.0_r5/piserial.cpp" "C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/piserial.cpp.obj" + "C:/libs/oldpip/pip_0.4.0_r5/pisignals.cpp" "C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/pisignals.cpp.obj" + "C:/libs/oldpip/pip_0.4.0_r5/pistring.cpp" "C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/pistring.cpp.obj" + "C:/libs/oldpip/pip_0.4.0_r5/pisystemmonitor.cpp" "C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/pisystemmonitor.cpp.obj" + "C:/libs/oldpip/pip_0.4.0_r5/pisystemtests.cpp" "C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/pisystemtests.cpp.obj" + "C:/libs/oldpip/pip_0.4.0_r5/pithread.cpp" "C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/pithread.cpp.obj" + "C:/libs/oldpip/pip_0.4.0_r5/pitime.cpp" "C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/pitime.cpp.obj" + "C:/libs/oldpip/pip_0.4.0_r5/pitimer.cpp" "C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/pitimer.cpp.obj" + "C:/libs/oldpip/pip_0.4.0_r5/piusb.cpp" "C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/piusb.cpp.obj" + "C:/libs/oldpip/pip_0.4.0_r5/pivariant.cpp" "C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/pivariant.cpp.obj" + ) +SET(CMAKE_CXX_COMPILER_ID "GNU") + +# Preprocessor definitions for this target. +SET(CMAKE_TARGET_DEFINITIONS + "PIP_MATH_J0" + "PIP_MATH_J1" + "PIP_MATH_JN" + "PIP_MATH_Y0" + "PIP_MATH_Y1" + "PIP_MATH_YN" + ) + +# Targets to which this target links. +SET(CMAKE_TARGET_LINKED_INFO_FILES + ) + +# The include file search paths: +SET(CMAKE_C_TARGET_INCLUDE_PATH + "." + "." + "C:/Qt/4.8.6/include/ActiveQt" + "C:/Qt/4.8.6/include/QtDesigner" + "C:/Qt/4.8.6/include/QtDeclarative" + "C:/Qt/4.8.6/include/QtScriptTools" + "C:/Qt/4.8.6/include/QtDBus" + "C:/Qt/4.8.6/include/QtXml" + "C:/Qt/4.8.6/include/QtSql" + "C:/Qt/4.8.6/include/QtOpenGL" + "C:/Qt/4.8.6/include/QtMultimedia" + "C:/Qt/4.8.6/include/QtNetwork" + "C:/Qt/4.8.6/include/phonon" + "C:/Qt/4.8.6/include/QtXmlPatterns" + "C:/Qt/4.8.6/include/QtWebKit" + "C:/Qt/4.8.6/include/QtHelp" + "C:/Qt/4.8.6/include/QtUiTools" + "C:/Qt/4.8.6/include/QtTest" + "C:/Qt/4.8.6/include/QtScript" + "C:/Qt/4.8.6/include/QtSvg" + "C:/Qt/4.8.6/include/Qt3Support" + "C:/Qt/4.8.6/include/QtGui" + "C:/Qt/4.8.6/include/QtCore" + "C:/Qt/4.8.6/mkspecs/default" + "C:/Qt/4.8.6/include" + ) +SET(CMAKE_CXX_TARGET_INCLUDE_PATH ${CMAKE_C_TARGET_INCLUDE_PATH}) +SET(CMAKE_Fortran_TARGET_INCLUDE_PATH ${CMAKE_C_TARGET_INCLUDE_PATH}) +SET(CMAKE_ASM_TARGET_INCLUDE_PATH ${CMAKE_C_TARGET_INCLUDE_PATH}) diff --git a/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/build.make b/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/build.make new file mode 100644 index 0000000..4eccf36 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/build.make @@ -0,0 +1,1134 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "MinGW Makefiles" Generator, CMake Version 2.8 + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Remove some rules from gmake that .SUFFIXES does not remove. +SUFFIXES = + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +SHELL = cmd.exe + +# The CMake executable. +CMAKE_COMMAND = "C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" + +# The command to remove a file. +RM = "C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" -E remove -f + +# Escaping for special characters. +EQUALS = = + +# The program to use to edit the cache. +CMAKE_EDIT_COMMAND = "C:\Program Files (x86)\CMake 2.8\bin\cmake-gui.exe" + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = C:\libs\oldpip\pip_0.4.0_r5 + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = C:\libs\oldpip\pip_0.4.0_r5 + +# Include any dependencies generated for this target. +include CMakeFiles/pip.dir/depend.make + +# Include the progress variables for this target. +include CMakeFiles/pip.dir/progress.make + +# Include the compile flags for this target's objects. +include CMakeFiles/pip.dir/flags.make + +CMakeFiles/pip.dir/pibinarylog.cpp.obj: CMakeFiles/pip.dir/flags.make +CMakeFiles/pip.dir/pibinarylog.cpp.obj: CMakeFiles/pip.dir/includes_CXX.rsp +CMakeFiles/pip.dir/pibinarylog.cpp.obj: pibinarylog.cpp + $(CMAKE_COMMAND) -E cmake_progress_report C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles $(CMAKE_PROGRESS_1) + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object CMakeFiles/pip.dir/pibinarylog.cpp.obj" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles\pip.dir\pibinarylog.cpp.obj -c C:\libs\oldpip\pip_0.4.0_r5\pibinarylog.cpp + +CMakeFiles/pip.dir/pibinarylog.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/pip.dir/pibinarylog.cpp.i" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -E C:\libs\oldpip\pip_0.4.0_r5\pibinarylog.cpp > CMakeFiles\pip.dir\pibinarylog.cpp.i + +CMakeFiles/pip.dir/pibinarylog.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/pip.dir/pibinarylog.cpp.s" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -S C:\libs\oldpip\pip_0.4.0_r5\pibinarylog.cpp -o CMakeFiles\pip.dir\pibinarylog.cpp.s + +CMakeFiles/pip.dir/pibinarylog.cpp.obj.requires: +.PHONY : CMakeFiles/pip.dir/pibinarylog.cpp.obj.requires + +CMakeFiles/pip.dir/pibinarylog.cpp.obj.provides: CMakeFiles/pip.dir/pibinarylog.cpp.obj.requires + $(MAKE) -f CMakeFiles\pip.dir\build.make CMakeFiles/pip.dir/pibinarylog.cpp.obj.provides.build +.PHONY : CMakeFiles/pip.dir/pibinarylog.cpp.obj.provides + +CMakeFiles/pip.dir/pibinarylog.cpp.obj.provides.build: CMakeFiles/pip.dir/pibinarylog.cpp.obj + +CMakeFiles/pip.dir/pibytearray.cpp.obj: CMakeFiles/pip.dir/flags.make +CMakeFiles/pip.dir/pibytearray.cpp.obj: CMakeFiles/pip.dir/includes_CXX.rsp +CMakeFiles/pip.dir/pibytearray.cpp.obj: pibytearray.cpp + $(CMAKE_COMMAND) -E cmake_progress_report C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles $(CMAKE_PROGRESS_2) + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object CMakeFiles/pip.dir/pibytearray.cpp.obj" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles\pip.dir\pibytearray.cpp.obj -c C:\libs\oldpip\pip_0.4.0_r5\pibytearray.cpp + +CMakeFiles/pip.dir/pibytearray.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/pip.dir/pibytearray.cpp.i" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -E C:\libs\oldpip\pip_0.4.0_r5\pibytearray.cpp > CMakeFiles\pip.dir\pibytearray.cpp.i + +CMakeFiles/pip.dir/pibytearray.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/pip.dir/pibytearray.cpp.s" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -S C:\libs\oldpip\pip_0.4.0_r5\pibytearray.cpp -o CMakeFiles\pip.dir\pibytearray.cpp.s + +CMakeFiles/pip.dir/pibytearray.cpp.obj.requires: +.PHONY : CMakeFiles/pip.dir/pibytearray.cpp.obj.requires + +CMakeFiles/pip.dir/pibytearray.cpp.obj.provides: CMakeFiles/pip.dir/pibytearray.cpp.obj.requires + $(MAKE) -f CMakeFiles\pip.dir\build.make CMakeFiles/pip.dir/pibytearray.cpp.obj.provides.build +.PHONY : CMakeFiles/pip.dir/pibytearray.cpp.obj.provides + +CMakeFiles/pip.dir/pibytearray.cpp.obj.provides.build: CMakeFiles/pip.dir/pibytearray.cpp.obj + +CMakeFiles/pip.dir/picli.cpp.obj: CMakeFiles/pip.dir/flags.make +CMakeFiles/pip.dir/picli.cpp.obj: CMakeFiles/pip.dir/includes_CXX.rsp +CMakeFiles/pip.dir/picli.cpp.obj: picli.cpp + $(CMAKE_COMMAND) -E cmake_progress_report C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles $(CMAKE_PROGRESS_3) + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object CMakeFiles/pip.dir/picli.cpp.obj" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles\pip.dir\picli.cpp.obj -c C:\libs\oldpip\pip_0.4.0_r5\picli.cpp + +CMakeFiles/pip.dir/picli.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/pip.dir/picli.cpp.i" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -E C:\libs\oldpip\pip_0.4.0_r5\picli.cpp > CMakeFiles\pip.dir\picli.cpp.i + +CMakeFiles/pip.dir/picli.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/pip.dir/picli.cpp.s" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -S C:\libs\oldpip\pip_0.4.0_r5\picli.cpp -o CMakeFiles\pip.dir\picli.cpp.s + +CMakeFiles/pip.dir/picli.cpp.obj.requires: +.PHONY : CMakeFiles/pip.dir/picli.cpp.obj.requires + +CMakeFiles/pip.dir/picli.cpp.obj.provides: CMakeFiles/pip.dir/picli.cpp.obj.requires + $(MAKE) -f CMakeFiles\pip.dir\build.make CMakeFiles/pip.dir/picli.cpp.obj.provides.build +.PHONY : CMakeFiles/pip.dir/picli.cpp.obj.provides + +CMakeFiles/pip.dir/picli.cpp.obj.provides.build: CMakeFiles/pip.dir/picli.cpp.obj + +CMakeFiles/pip.dir/picodec.cpp.obj: CMakeFiles/pip.dir/flags.make +CMakeFiles/pip.dir/picodec.cpp.obj: CMakeFiles/pip.dir/includes_CXX.rsp +CMakeFiles/pip.dir/picodec.cpp.obj: picodec.cpp + $(CMAKE_COMMAND) -E cmake_progress_report C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles $(CMAKE_PROGRESS_4) + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object CMakeFiles/pip.dir/picodec.cpp.obj" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles\pip.dir\picodec.cpp.obj -c C:\libs\oldpip\pip_0.4.0_r5\picodec.cpp + +CMakeFiles/pip.dir/picodec.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/pip.dir/picodec.cpp.i" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -E C:\libs\oldpip\pip_0.4.0_r5\picodec.cpp > CMakeFiles\pip.dir\picodec.cpp.i + +CMakeFiles/pip.dir/picodec.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/pip.dir/picodec.cpp.s" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -S C:\libs\oldpip\pip_0.4.0_r5\picodec.cpp -o CMakeFiles\pip.dir\picodec.cpp.s + +CMakeFiles/pip.dir/picodec.cpp.obj.requires: +.PHONY : CMakeFiles/pip.dir/picodec.cpp.obj.requires + +CMakeFiles/pip.dir/picodec.cpp.obj.provides: CMakeFiles/pip.dir/picodec.cpp.obj.requires + $(MAKE) -f CMakeFiles\pip.dir\build.make CMakeFiles/pip.dir/picodec.cpp.obj.provides.build +.PHONY : CMakeFiles/pip.dir/picodec.cpp.obj.provides + +CMakeFiles/pip.dir/picodec.cpp.obj.provides.build: CMakeFiles/pip.dir/picodec.cpp.obj + +CMakeFiles/pip.dir/picodeinfo.cpp.obj: CMakeFiles/pip.dir/flags.make +CMakeFiles/pip.dir/picodeinfo.cpp.obj: CMakeFiles/pip.dir/includes_CXX.rsp +CMakeFiles/pip.dir/picodeinfo.cpp.obj: picodeinfo.cpp + $(CMAKE_COMMAND) -E cmake_progress_report C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles $(CMAKE_PROGRESS_5) + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object CMakeFiles/pip.dir/picodeinfo.cpp.obj" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles\pip.dir\picodeinfo.cpp.obj -c C:\libs\oldpip\pip_0.4.0_r5\picodeinfo.cpp + +CMakeFiles/pip.dir/picodeinfo.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/pip.dir/picodeinfo.cpp.i" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -E C:\libs\oldpip\pip_0.4.0_r5\picodeinfo.cpp > CMakeFiles\pip.dir\picodeinfo.cpp.i + +CMakeFiles/pip.dir/picodeinfo.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/pip.dir/picodeinfo.cpp.s" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -S C:\libs\oldpip\pip_0.4.0_r5\picodeinfo.cpp -o CMakeFiles\pip.dir\picodeinfo.cpp.s + +CMakeFiles/pip.dir/picodeinfo.cpp.obj.requires: +.PHONY : CMakeFiles/pip.dir/picodeinfo.cpp.obj.requires + +CMakeFiles/pip.dir/picodeinfo.cpp.obj.provides: CMakeFiles/pip.dir/picodeinfo.cpp.obj.requires + $(MAKE) -f CMakeFiles\pip.dir\build.make CMakeFiles/pip.dir/picodeinfo.cpp.obj.provides.build +.PHONY : CMakeFiles/pip.dir/picodeinfo.cpp.obj.provides + +CMakeFiles/pip.dir/picodeinfo.cpp.obj.provides.build: CMakeFiles/pip.dir/picodeinfo.cpp.obj + +CMakeFiles/pip.dir/picodeparser.cpp.obj: CMakeFiles/pip.dir/flags.make +CMakeFiles/pip.dir/picodeparser.cpp.obj: CMakeFiles/pip.dir/includes_CXX.rsp +CMakeFiles/pip.dir/picodeparser.cpp.obj: picodeparser.cpp + $(CMAKE_COMMAND) -E cmake_progress_report C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles $(CMAKE_PROGRESS_6) + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object CMakeFiles/pip.dir/picodeparser.cpp.obj" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles\pip.dir\picodeparser.cpp.obj -c C:\libs\oldpip\pip_0.4.0_r5\picodeparser.cpp + +CMakeFiles/pip.dir/picodeparser.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/pip.dir/picodeparser.cpp.i" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -E C:\libs\oldpip\pip_0.4.0_r5\picodeparser.cpp > CMakeFiles\pip.dir\picodeparser.cpp.i + +CMakeFiles/pip.dir/picodeparser.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/pip.dir/picodeparser.cpp.s" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -S C:\libs\oldpip\pip_0.4.0_r5\picodeparser.cpp -o CMakeFiles\pip.dir\picodeparser.cpp.s + +CMakeFiles/pip.dir/picodeparser.cpp.obj.requires: +.PHONY : CMakeFiles/pip.dir/picodeparser.cpp.obj.requires + +CMakeFiles/pip.dir/picodeparser.cpp.obj.provides: CMakeFiles/pip.dir/picodeparser.cpp.obj.requires + $(MAKE) -f CMakeFiles\pip.dir\build.make CMakeFiles/pip.dir/picodeparser.cpp.obj.provides.build +.PHONY : CMakeFiles/pip.dir/picodeparser.cpp.obj.provides + +CMakeFiles/pip.dir/picodeparser.cpp.obj.provides.build: CMakeFiles/pip.dir/picodeparser.cpp.obj + +CMakeFiles/pip.dir/picollection.cpp.obj: CMakeFiles/pip.dir/flags.make +CMakeFiles/pip.dir/picollection.cpp.obj: CMakeFiles/pip.dir/includes_CXX.rsp +CMakeFiles/pip.dir/picollection.cpp.obj: picollection.cpp + $(CMAKE_COMMAND) -E cmake_progress_report C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles $(CMAKE_PROGRESS_7) + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object CMakeFiles/pip.dir/picollection.cpp.obj" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles\pip.dir\picollection.cpp.obj -c C:\libs\oldpip\pip_0.4.0_r5\picollection.cpp + +CMakeFiles/pip.dir/picollection.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/pip.dir/picollection.cpp.i" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -E C:\libs\oldpip\pip_0.4.0_r5\picollection.cpp > CMakeFiles\pip.dir\picollection.cpp.i + +CMakeFiles/pip.dir/picollection.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/pip.dir/picollection.cpp.s" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -S C:\libs\oldpip\pip_0.4.0_r5\picollection.cpp -o CMakeFiles\pip.dir\picollection.cpp.s + +CMakeFiles/pip.dir/picollection.cpp.obj.requires: +.PHONY : CMakeFiles/pip.dir/picollection.cpp.obj.requires + +CMakeFiles/pip.dir/picollection.cpp.obj.provides: CMakeFiles/pip.dir/picollection.cpp.obj.requires + $(MAKE) -f CMakeFiles\pip.dir\build.make CMakeFiles/pip.dir/picollection.cpp.obj.provides.build +.PHONY : CMakeFiles/pip.dir/picollection.cpp.obj.provides + +CMakeFiles/pip.dir/picollection.cpp.obj.provides.build: CMakeFiles/pip.dir/picollection.cpp.obj + +CMakeFiles/pip.dir/piconfig.cpp.obj: CMakeFiles/pip.dir/flags.make +CMakeFiles/pip.dir/piconfig.cpp.obj: CMakeFiles/pip.dir/includes_CXX.rsp +CMakeFiles/pip.dir/piconfig.cpp.obj: piconfig.cpp + $(CMAKE_COMMAND) -E cmake_progress_report C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles $(CMAKE_PROGRESS_8) + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object CMakeFiles/pip.dir/piconfig.cpp.obj" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles\pip.dir\piconfig.cpp.obj -c C:\libs\oldpip\pip_0.4.0_r5\piconfig.cpp + +CMakeFiles/pip.dir/piconfig.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/pip.dir/piconfig.cpp.i" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -E C:\libs\oldpip\pip_0.4.0_r5\piconfig.cpp > CMakeFiles\pip.dir\piconfig.cpp.i + +CMakeFiles/pip.dir/piconfig.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/pip.dir/piconfig.cpp.s" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -S C:\libs\oldpip\pip_0.4.0_r5\piconfig.cpp -o CMakeFiles\pip.dir\piconfig.cpp.s + +CMakeFiles/pip.dir/piconfig.cpp.obj.requires: +.PHONY : CMakeFiles/pip.dir/piconfig.cpp.obj.requires + +CMakeFiles/pip.dir/piconfig.cpp.obj.provides: CMakeFiles/pip.dir/piconfig.cpp.obj.requires + $(MAKE) -f CMakeFiles\pip.dir\build.make CMakeFiles/pip.dir/piconfig.cpp.obj.provides.build +.PHONY : CMakeFiles/pip.dir/piconfig.cpp.obj.provides + +CMakeFiles/pip.dir/piconfig.cpp.obj.provides.build: CMakeFiles/pip.dir/piconfig.cpp.obj + +CMakeFiles/pip.dir/piconnection.cpp.obj: CMakeFiles/pip.dir/flags.make +CMakeFiles/pip.dir/piconnection.cpp.obj: CMakeFiles/pip.dir/includes_CXX.rsp +CMakeFiles/pip.dir/piconnection.cpp.obj: piconnection.cpp + $(CMAKE_COMMAND) -E cmake_progress_report C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles $(CMAKE_PROGRESS_9) + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object CMakeFiles/pip.dir/piconnection.cpp.obj" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles\pip.dir\piconnection.cpp.obj -c C:\libs\oldpip\pip_0.4.0_r5\piconnection.cpp + +CMakeFiles/pip.dir/piconnection.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/pip.dir/piconnection.cpp.i" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -E C:\libs\oldpip\pip_0.4.0_r5\piconnection.cpp > CMakeFiles\pip.dir\piconnection.cpp.i + +CMakeFiles/pip.dir/piconnection.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/pip.dir/piconnection.cpp.s" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -S C:\libs\oldpip\pip_0.4.0_r5\piconnection.cpp -o CMakeFiles\pip.dir\piconnection.cpp.s + +CMakeFiles/pip.dir/piconnection.cpp.obj.requires: +.PHONY : CMakeFiles/pip.dir/piconnection.cpp.obj.requires + +CMakeFiles/pip.dir/piconnection.cpp.obj.provides: CMakeFiles/pip.dir/piconnection.cpp.obj.requires + $(MAKE) -f CMakeFiles\pip.dir\build.make CMakeFiles/pip.dir/piconnection.cpp.obj.provides.build +.PHONY : CMakeFiles/pip.dir/piconnection.cpp.obj.provides + +CMakeFiles/pip.dir/piconnection.cpp.obj.provides.build: CMakeFiles/pip.dir/piconnection.cpp.obj + +CMakeFiles/pip.dir/piconsole.cpp.obj: CMakeFiles/pip.dir/flags.make +CMakeFiles/pip.dir/piconsole.cpp.obj: CMakeFiles/pip.dir/includes_CXX.rsp +CMakeFiles/pip.dir/piconsole.cpp.obj: piconsole.cpp + $(CMAKE_COMMAND) -E cmake_progress_report C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles $(CMAKE_PROGRESS_10) + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object CMakeFiles/pip.dir/piconsole.cpp.obj" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles\pip.dir\piconsole.cpp.obj -c C:\libs\oldpip\pip_0.4.0_r5\piconsole.cpp + +CMakeFiles/pip.dir/piconsole.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/pip.dir/piconsole.cpp.i" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -E C:\libs\oldpip\pip_0.4.0_r5\piconsole.cpp > CMakeFiles\pip.dir\piconsole.cpp.i + +CMakeFiles/pip.dir/piconsole.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/pip.dir/piconsole.cpp.s" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -S C:\libs\oldpip\pip_0.4.0_r5\piconsole.cpp -o CMakeFiles\pip.dir\piconsole.cpp.s + +CMakeFiles/pip.dir/piconsole.cpp.obj.requires: +.PHONY : CMakeFiles/pip.dir/piconsole.cpp.obj.requires + +CMakeFiles/pip.dir/piconsole.cpp.obj.provides: CMakeFiles/pip.dir/piconsole.cpp.obj.requires + $(MAKE) -f CMakeFiles\pip.dir\build.make CMakeFiles/pip.dir/piconsole.cpp.obj.provides.build +.PHONY : CMakeFiles/pip.dir/piconsole.cpp.obj.provides + +CMakeFiles/pip.dir/piconsole.cpp.obj.provides.build: CMakeFiles/pip.dir/piconsole.cpp.obj + +CMakeFiles/pip.dir/picontainers.cpp.obj: CMakeFiles/pip.dir/flags.make +CMakeFiles/pip.dir/picontainers.cpp.obj: CMakeFiles/pip.dir/includes_CXX.rsp +CMakeFiles/pip.dir/picontainers.cpp.obj: picontainers.cpp + $(CMAKE_COMMAND) -E cmake_progress_report C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles $(CMAKE_PROGRESS_11) + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object CMakeFiles/pip.dir/picontainers.cpp.obj" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles\pip.dir\picontainers.cpp.obj -c C:\libs\oldpip\pip_0.4.0_r5\picontainers.cpp + +CMakeFiles/pip.dir/picontainers.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/pip.dir/picontainers.cpp.i" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -E C:\libs\oldpip\pip_0.4.0_r5\picontainers.cpp > CMakeFiles\pip.dir\picontainers.cpp.i + +CMakeFiles/pip.dir/picontainers.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/pip.dir/picontainers.cpp.s" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -S C:\libs\oldpip\pip_0.4.0_r5\picontainers.cpp -o CMakeFiles\pip.dir\picontainers.cpp.s + +CMakeFiles/pip.dir/picontainers.cpp.obj.requires: +.PHONY : CMakeFiles/pip.dir/picontainers.cpp.obj.requires + +CMakeFiles/pip.dir/picontainers.cpp.obj.provides: CMakeFiles/pip.dir/picontainers.cpp.obj.requires + $(MAKE) -f CMakeFiles\pip.dir\build.make CMakeFiles/pip.dir/picontainers.cpp.obj.provides.build +.PHONY : CMakeFiles/pip.dir/picontainers.cpp.obj.provides + +CMakeFiles/pip.dir/picontainers.cpp.obj.provides.build: CMakeFiles/pip.dir/picontainers.cpp.obj + +CMakeFiles/pip.dir/pidevicepool.cpp.obj: CMakeFiles/pip.dir/flags.make +CMakeFiles/pip.dir/pidevicepool.cpp.obj: CMakeFiles/pip.dir/includes_CXX.rsp +CMakeFiles/pip.dir/pidevicepool.cpp.obj: pidevicepool.cpp + $(CMAKE_COMMAND) -E cmake_progress_report C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles $(CMAKE_PROGRESS_12) + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object CMakeFiles/pip.dir/pidevicepool.cpp.obj" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles\pip.dir\pidevicepool.cpp.obj -c C:\libs\oldpip\pip_0.4.0_r5\pidevicepool.cpp + +CMakeFiles/pip.dir/pidevicepool.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/pip.dir/pidevicepool.cpp.i" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -E C:\libs\oldpip\pip_0.4.0_r5\pidevicepool.cpp > CMakeFiles\pip.dir\pidevicepool.cpp.i + +CMakeFiles/pip.dir/pidevicepool.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/pip.dir/pidevicepool.cpp.s" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -S C:\libs\oldpip\pip_0.4.0_r5\pidevicepool.cpp -o CMakeFiles\pip.dir\pidevicepool.cpp.s + +CMakeFiles/pip.dir/pidevicepool.cpp.obj.requires: +.PHONY : CMakeFiles/pip.dir/pidevicepool.cpp.obj.requires + +CMakeFiles/pip.dir/pidevicepool.cpp.obj.provides: CMakeFiles/pip.dir/pidevicepool.cpp.obj.requires + $(MAKE) -f CMakeFiles\pip.dir\build.make CMakeFiles/pip.dir/pidevicepool.cpp.obj.provides.build +.PHONY : CMakeFiles/pip.dir/pidevicepool.cpp.obj.provides + +CMakeFiles/pip.dir/pidevicepool.cpp.obj.provides.build: CMakeFiles/pip.dir/pidevicepool.cpp.obj + +CMakeFiles/pip.dir/pidiagnostics.cpp.obj: CMakeFiles/pip.dir/flags.make +CMakeFiles/pip.dir/pidiagnostics.cpp.obj: CMakeFiles/pip.dir/includes_CXX.rsp +CMakeFiles/pip.dir/pidiagnostics.cpp.obj: pidiagnostics.cpp + $(CMAKE_COMMAND) -E cmake_progress_report C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles $(CMAKE_PROGRESS_13) + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object CMakeFiles/pip.dir/pidiagnostics.cpp.obj" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles\pip.dir\pidiagnostics.cpp.obj -c C:\libs\oldpip\pip_0.4.0_r5\pidiagnostics.cpp + +CMakeFiles/pip.dir/pidiagnostics.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/pip.dir/pidiagnostics.cpp.i" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -E C:\libs\oldpip\pip_0.4.0_r5\pidiagnostics.cpp > CMakeFiles\pip.dir\pidiagnostics.cpp.i + +CMakeFiles/pip.dir/pidiagnostics.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/pip.dir/pidiagnostics.cpp.s" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -S C:\libs\oldpip\pip_0.4.0_r5\pidiagnostics.cpp -o CMakeFiles\pip.dir\pidiagnostics.cpp.s + +CMakeFiles/pip.dir/pidiagnostics.cpp.obj.requires: +.PHONY : CMakeFiles/pip.dir/pidiagnostics.cpp.obj.requires + +CMakeFiles/pip.dir/pidiagnostics.cpp.obj.provides: CMakeFiles/pip.dir/pidiagnostics.cpp.obj.requires + $(MAKE) -f CMakeFiles\pip.dir\build.make CMakeFiles/pip.dir/pidiagnostics.cpp.obj.provides.build +.PHONY : CMakeFiles/pip.dir/pidiagnostics.cpp.obj.provides + +CMakeFiles/pip.dir/pidiagnostics.cpp.obj.provides.build: CMakeFiles/pip.dir/pidiagnostics.cpp.obj + +CMakeFiles/pip.dir/pidir.cpp.obj: CMakeFiles/pip.dir/flags.make +CMakeFiles/pip.dir/pidir.cpp.obj: CMakeFiles/pip.dir/includes_CXX.rsp +CMakeFiles/pip.dir/pidir.cpp.obj: pidir.cpp + $(CMAKE_COMMAND) -E cmake_progress_report C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles $(CMAKE_PROGRESS_14) + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object CMakeFiles/pip.dir/pidir.cpp.obj" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles\pip.dir\pidir.cpp.obj -c C:\libs\oldpip\pip_0.4.0_r5\pidir.cpp + +CMakeFiles/pip.dir/pidir.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/pip.dir/pidir.cpp.i" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -E C:\libs\oldpip\pip_0.4.0_r5\pidir.cpp > CMakeFiles\pip.dir\pidir.cpp.i + +CMakeFiles/pip.dir/pidir.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/pip.dir/pidir.cpp.s" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -S C:\libs\oldpip\pip_0.4.0_r5\pidir.cpp -o CMakeFiles\pip.dir\pidir.cpp.s + +CMakeFiles/pip.dir/pidir.cpp.obj.requires: +.PHONY : CMakeFiles/pip.dir/pidir.cpp.obj.requires + +CMakeFiles/pip.dir/pidir.cpp.obj.provides: CMakeFiles/pip.dir/pidir.cpp.obj.requires + $(MAKE) -f CMakeFiles\pip.dir\build.make CMakeFiles/pip.dir/pidir.cpp.obj.provides.build +.PHONY : CMakeFiles/pip.dir/pidir.cpp.obj.provides + +CMakeFiles/pip.dir/pidir.cpp.obj.provides.build: CMakeFiles/pip.dir/pidir.cpp.obj + +CMakeFiles/pip.dir/piethernet.cpp.obj: CMakeFiles/pip.dir/flags.make +CMakeFiles/pip.dir/piethernet.cpp.obj: CMakeFiles/pip.dir/includes_CXX.rsp +CMakeFiles/pip.dir/piethernet.cpp.obj: piethernet.cpp + $(CMAKE_COMMAND) -E cmake_progress_report C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles $(CMAKE_PROGRESS_15) + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object CMakeFiles/pip.dir/piethernet.cpp.obj" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles\pip.dir\piethernet.cpp.obj -c C:\libs\oldpip\pip_0.4.0_r5\piethernet.cpp + +CMakeFiles/pip.dir/piethernet.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/pip.dir/piethernet.cpp.i" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -E C:\libs\oldpip\pip_0.4.0_r5\piethernet.cpp > CMakeFiles\pip.dir\piethernet.cpp.i + +CMakeFiles/pip.dir/piethernet.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/pip.dir/piethernet.cpp.s" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -S C:\libs\oldpip\pip_0.4.0_r5\piethernet.cpp -o CMakeFiles\pip.dir\piethernet.cpp.s + +CMakeFiles/pip.dir/piethernet.cpp.obj.requires: +.PHONY : CMakeFiles/pip.dir/piethernet.cpp.obj.requires + +CMakeFiles/pip.dir/piethernet.cpp.obj.provides: CMakeFiles/pip.dir/piethernet.cpp.obj.requires + $(MAKE) -f CMakeFiles\pip.dir\build.make CMakeFiles/pip.dir/piethernet.cpp.obj.provides.build +.PHONY : CMakeFiles/pip.dir/piethernet.cpp.obj.provides + +CMakeFiles/pip.dir/piethernet.cpp.obj.provides.build: CMakeFiles/pip.dir/piethernet.cpp.obj + +CMakeFiles/pip.dir/pievaluator.cpp.obj: CMakeFiles/pip.dir/flags.make +CMakeFiles/pip.dir/pievaluator.cpp.obj: CMakeFiles/pip.dir/includes_CXX.rsp +CMakeFiles/pip.dir/pievaluator.cpp.obj: pievaluator.cpp + $(CMAKE_COMMAND) -E cmake_progress_report C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles $(CMAKE_PROGRESS_16) + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object CMakeFiles/pip.dir/pievaluator.cpp.obj" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles\pip.dir\pievaluator.cpp.obj -c C:\libs\oldpip\pip_0.4.0_r5\pievaluator.cpp + +CMakeFiles/pip.dir/pievaluator.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/pip.dir/pievaluator.cpp.i" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -E C:\libs\oldpip\pip_0.4.0_r5\pievaluator.cpp > CMakeFiles\pip.dir\pievaluator.cpp.i + +CMakeFiles/pip.dir/pievaluator.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/pip.dir/pievaluator.cpp.s" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -S C:\libs\oldpip\pip_0.4.0_r5\pievaluator.cpp -o CMakeFiles\pip.dir\pievaluator.cpp.s + +CMakeFiles/pip.dir/pievaluator.cpp.obj.requires: +.PHONY : CMakeFiles/pip.dir/pievaluator.cpp.obj.requires + +CMakeFiles/pip.dir/pievaluator.cpp.obj.provides: CMakeFiles/pip.dir/pievaluator.cpp.obj.requires + $(MAKE) -f CMakeFiles\pip.dir\build.make CMakeFiles/pip.dir/pievaluator.cpp.obj.provides.build +.PHONY : CMakeFiles/pip.dir/pievaluator.cpp.obj.provides + +CMakeFiles/pip.dir/pievaluator.cpp.obj.provides.build: CMakeFiles/pip.dir/pievaluator.cpp.obj + +CMakeFiles/pip.dir/pifile.cpp.obj: CMakeFiles/pip.dir/flags.make +CMakeFiles/pip.dir/pifile.cpp.obj: CMakeFiles/pip.dir/includes_CXX.rsp +CMakeFiles/pip.dir/pifile.cpp.obj: pifile.cpp + $(CMAKE_COMMAND) -E cmake_progress_report C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles $(CMAKE_PROGRESS_17) + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object CMakeFiles/pip.dir/pifile.cpp.obj" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles\pip.dir\pifile.cpp.obj -c C:\libs\oldpip\pip_0.4.0_r5\pifile.cpp + +CMakeFiles/pip.dir/pifile.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/pip.dir/pifile.cpp.i" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -E C:\libs\oldpip\pip_0.4.0_r5\pifile.cpp > CMakeFiles\pip.dir\pifile.cpp.i + +CMakeFiles/pip.dir/pifile.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/pip.dir/pifile.cpp.s" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -S C:\libs\oldpip\pip_0.4.0_r5\pifile.cpp -o CMakeFiles\pip.dir\pifile.cpp.s + +CMakeFiles/pip.dir/pifile.cpp.obj.requires: +.PHONY : CMakeFiles/pip.dir/pifile.cpp.obj.requires + +CMakeFiles/pip.dir/pifile.cpp.obj.provides: CMakeFiles/pip.dir/pifile.cpp.obj.requires + $(MAKE) -f CMakeFiles\pip.dir\build.make CMakeFiles/pip.dir/pifile.cpp.obj.provides.build +.PHONY : CMakeFiles/pip.dir/pifile.cpp.obj.provides + +CMakeFiles/pip.dir/pifile.cpp.obj.provides.build: CMakeFiles/pip.dir/pifile.cpp.obj + +CMakeFiles/pip.dir/piincludes.cpp.obj: CMakeFiles/pip.dir/flags.make +CMakeFiles/pip.dir/piincludes.cpp.obj: CMakeFiles/pip.dir/includes_CXX.rsp +CMakeFiles/pip.dir/piincludes.cpp.obj: piincludes.cpp + $(CMAKE_COMMAND) -E cmake_progress_report C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles $(CMAKE_PROGRESS_18) + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object CMakeFiles/pip.dir/piincludes.cpp.obj" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles\pip.dir\piincludes.cpp.obj -c C:\libs\oldpip\pip_0.4.0_r5\piincludes.cpp + +CMakeFiles/pip.dir/piincludes.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/pip.dir/piincludes.cpp.i" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -E C:\libs\oldpip\pip_0.4.0_r5\piincludes.cpp > CMakeFiles\pip.dir\piincludes.cpp.i + +CMakeFiles/pip.dir/piincludes.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/pip.dir/piincludes.cpp.s" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -S C:\libs\oldpip\pip_0.4.0_r5\piincludes.cpp -o CMakeFiles\pip.dir\piincludes.cpp.s + +CMakeFiles/pip.dir/piincludes.cpp.obj.requires: +.PHONY : CMakeFiles/pip.dir/piincludes.cpp.obj.requires + +CMakeFiles/pip.dir/piincludes.cpp.obj.provides: CMakeFiles/pip.dir/piincludes.cpp.obj.requires + $(MAKE) -f CMakeFiles\pip.dir\build.make CMakeFiles/pip.dir/piincludes.cpp.obj.provides.build +.PHONY : CMakeFiles/pip.dir/piincludes.cpp.obj.provides + +CMakeFiles/pip.dir/piincludes.cpp.obj.provides.build: CMakeFiles/pip.dir/piincludes.cpp.obj + +CMakeFiles/pip.dir/piiodevice.cpp.obj: CMakeFiles/pip.dir/flags.make +CMakeFiles/pip.dir/piiodevice.cpp.obj: CMakeFiles/pip.dir/includes_CXX.rsp +CMakeFiles/pip.dir/piiodevice.cpp.obj: piiodevice.cpp + $(CMAKE_COMMAND) -E cmake_progress_report C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles $(CMAKE_PROGRESS_19) + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object CMakeFiles/pip.dir/piiodevice.cpp.obj" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles\pip.dir\piiodevice.cpp.obj -c C:\libs\oldpip\pip_0.4.0_r5\piiodevice.cpp + +CMakeFiles/pip.dir/piiodevice.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/pip.dir/piiodevice.cpp.i" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -E C:\libs\oldpip\pip_0.4.0_r5\piiodevice.cpp > CMakeFiles\pip.dir\piiodevice.cpp.i + +CMakeFiles/pip.dir/piiodevice.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/pip.dir/piiodevice.cpp.s" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -S C:\libs\oldpip\pip_0.4.0_r5\piiodevice.cpp -o CMakeFiles\pip.dir\piiodevice.cpp.s + +CMakeFiles/pip.dir/piiodevice.cpp.obj.requires: +.PHONY : CMakeFiles/pip.dir/piiodevice.cpp.obj.requires + +CMakeFiles/pip.dir/piiodevice.cpp.obj.provides: CMakeFiles/pip.dir/piiodevice.cpp.obj.requires + $(MAKE) -f CMakeFiles\pip.dir\build.make CMakeFiles/pip.dir/piiodevice.cpp.obj.provides.build +.PHONY : CMakeFiles/pip.dir/piiodevice.cpp.obj.provides + +CMakeFiles/pip.dir/piiodevice.cpp.obj.provides.build: CMakeFiles/pip.dir/piiodevice.cpp.obj + +CMakeFiles/pip.dir/pikbdlistener.cpp.obj: CMakeFiles/pip.dir/flags.make +CMakeFiles/pip.dir/pikbdlistener.cpp.obj: CMakeFiles/pip.dir/includes_CXX.rsp +CMakeFiles/pip.dir/pikbdlistener.cpp.obj: pikbdlistener.cpp + $(CMAKE_COMMAND) -E cmake_progress_report C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles $(CMAKE_PROGRESS_20) + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object CMakeFiles/pip.dir/pikbdlistener.cpp.obj" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles\pip.dir\pikbdlistener.cpp.obj -c C:\libs\oldpip\pip_0.4.0_r5\pikbdlistener.cpp + +CMakeFiles/pip.dir/pikbdlistener.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/pip.dir/pikbdlistener.cpp.i" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -E C:\libs\oldpip\pip_0.4.0_r5\pikbdlistener.cpp > CMakeFiles\pip.dir\pikbdlistener.cpp.i + +CMakeFiles/pip.dir/pikbdlistener.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/pip.dir/pikbdlistener.cpp.s" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -S C:\libs\oldpip\pip_0.4.0_r5\pikbdlistener.cpp -o CMakeFiles\pip.dir\pikbdlistener.cpp.s + +CMakeFiles/pip.dir/pikbdlistener.cpp.obj.requires: +.PHONY : CMakeFiles/pip.dir/pikbdlistener.cpp.obj.requires + +CMakeFiles/pip.dir/pikbdlistener.cpp.obj.provides: CMakeFiles/pip.dir/pikbdlistener.cpp.obj.requires + $(MAKE) -f CMakeFiles\pip.dir\build.make CMakeFiles/pip.dir/pikbdlistener.cpp.obj.provides.build +.PHONY : CMakeFiles/pip.dir/pikbdlistener.cpp.obj.provides + +CMakeFiles/pip.dir/pikbdlistener.cpp.obj.provides.build: CMakeFiles/pip.dir/pikbdlistener.cpp.obj + +CMakeFiles/pip.dir/pimath.cpp.obj: CMakeFiles/pip.dir/flags.make +CMakeFiles/pip.dir/pimath.cpp.obj: CMakeFiles/pip.dir/includes_CXX.rsp +CMakeFiles/pip.dir/pimath.cpp.obj: pimath.cpp + $(CMAKE_COMMAND) -E cmake_progress_report C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles $(CMAKE_PROGRESS_21) + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object CMakeFiles/pip.dir/pimath.cpp.obj" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles\pip.dir\pimath.cpp.obj -c C:\libs\oldpip\pip_0.4.0_r5\pimath.cpp + +CMakeFiles/pip.dir/pimath.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/pip.dir/pimath.cpp.i" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -E C:\libs\oldpip\pip_0.4.0_r5\pimath.cpp > CMakeFiles\pip.dir\pimath.cpp.i + +CMakeFiles/pip.dir/pimath.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/pip.dir/pimath.cpp.s" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -S C:\libs\oldpip\pip_0.4.0_r5\pimath.cpp -o CMakeFiles\pip.dir\pimath.cpp.s + +CMakeFiles/pip.dir/pimath.cpp.obj.requires: +.PHONY : CMakeFiles/pip.dir/pimath.cpp.obj.requires + +CMakeFiles/pip.dir/pimath.cpp.obj.provides: CMakeFiles/pip.dir/pimath.cpp.obj.requires + $(MAKE) -f CMakeFiles\pip.dir\build.make CMakeFiles/pip.dir/pimath.cpp.obj.provides.build +.PHONY : CMakeFiles/pip.dir/pimath.cpp.obj.provides + +CMakeFiles/pip.dir/pimath.cpp.obj.provides.build: CMakeFiles/pip.dir/pimath.cpp.obj + +CMakeFiles/pip.dir/pimonitor.cpp.obj: CMakeFiles/pip.dir/flags.make +CMakeFiles/pip.dir/pimonitor.cpp.obj: CMakeFiles/pip.dir/includes_CXX.rsp +CMakeFiles/pip.dir/pimonitor.cpp.obj: pimonitor.cpp + $(CMAKE_COMMAND) -E cmake_progress_report C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles $(CMAKE_PROGRESS_22) + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object CMakeFiles/pip.dir/pimonitor.cpp.obj" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles\pip.dir\pimonitor.cpp.obj -c C:\libs\oldpip\pip_0.4.0_r5\pimonitor.cpp + +CMakeFiles/pip.dir/pimonitor.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/pip.dir/pimonitor.cpp.i" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -E C:\libs\oldpip\pip_0.4.0_r5\pimonitor.cpp > CMakeFiles\pip.dir\pimonitor.cpp.i + +CMakeFiles/pip.dir/pimonitor.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/pip.dir/pimonitor.cpp.s" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -S C:\libs\oldpip\pip_0.4.0_r5\pimonitor.cpp -o CMakeFiles\pip.dir\pimonitor.cpp.s + +CMakeFiles/pip.dir/pimonitor.cpp.obj.requires: +.PHONY : CMakeFiles/pip.dir/pimonitor.cpp.obj.requires + +CMakeFiles/pip.dir/pimonitor.cpp.obj.provides: CMakeFiles/pip.dir/pimonitor.cpp.obj.requires + $(MAKE) -f CMakeFiles\pip.dir\build.make CMakeFiles/pip.dir/pimonitor.cpp.obj.provides.build +.PHONY : CMakeFiles/pip.dir/pimonitor.cpp.obj.provides + +CMakeFiles/pip.dir/pimonitor.cpp.obj.provides.build: CMakeFiles/pip.dir/pimonitor.cpp.obj + +CMakeFiles/pip.dir/pimultiprotocol.cpp.obj: CMakeFiles/pip.dir/flags.make +CMakeFiles/pip.dir/pimultiprotocol.cpp.obj: CMakeFiles/pip.dir/includes_CXX.rsp +CMakeFiles/pip.dir/pimultiprotocol.cpp.obj: pimultiprotocol.cpp + $(CMAKE_COMMAND) -E cmake_progress_report C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles $(CMAKE_PROGRESS_23) + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object CMakeFiles/pip.dir/pimultiprotocol.cpp.obj" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles\pip.dir\pimultiprotocol.cpp.obj -c C:\libs\oldpip\pip_0.4.0_r5\pimultiprotocol.cpp + +CMakeFiles/pip.dir/pimultiprotocol.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/pip.dir/pimultiprotocol.cpp.i" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -E C:\libs\oldpip\pip_0.4.0_r5\pimultiprotocol.cpp > CMakeFiles\pip.dir\pimultiprotocol.cpp.i + +CMakeFiles/pip.dir/pimultiprotocol.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/pip.dir/pimultiprotocol.cpp.s" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -S C:\libs\oldpip\pip_0.4.0_r5\pimultiprotocol.cpp -o CMakeFiles\pip.dir\pimultiprotocol.cpp.s + +CMakeFiles/pip.dir/pimultiprotocol.cpp.obj.requires: +.PHONY : CMakeFiles/pip.dir/pimultiprotocol.cpp.obj.requires + +CMakeFiles/pip.dir/pimultiprotocol.cpp.obj.provides: CMakeFiles/pip.dir/pimultiprotocol.cpp.obj.requires + $(MAKE) -f CMakeFiles\pip.dir\build.make CMakeFiles/pip.dir/pimultiprotocol.cpp.obj.provides.build +.PHONY : CMakeFiles/pip.dir/pimultiprotocol.cpp.obj.provides + +CMakeFiles/pip.dir/pimultiprotocol.cpp.obj.provides.build: CMakeFiles/pip.dir/pimultiprotocol.cpp.obj + +CMakeFiles/pip.dir/pimutex.cpp.obj: CMakeFiles/pip.dir/flags.make +CMakeFiles/pip.dir/pimutex.cpp.obj: CMakeFiles/pip.dir/includes_CXX.rsp +CMakeFiles/pip.dir/pimutex.cpp.obj: pimutex.cpp + $(CMAKE_COMMAND) -E cmake_progress_report C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles $(CMAKE_PROGRESS_24) + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object CMakeFiles/pip.dir/pimutex.cpp.obj" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles\pip.dir\pimutex.cpp.obj -c C:\libs\oldpip\pip_0.4.0_r5\pimutex.cpp + +CMakeFiles/pip.dir/pimutex.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/pip.dir/pimutex.cpp.i" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -E C:\libs\oldpip\pip_0.4.0_r5\pimutex.cpp > CMakeFiles\pip.dir\pimutex.cpp.i + +CMakeFiles/pip.dir/pimutex.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/pip.dir/pimutex.cpp.s" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -S C:\libs\oldpip\pip_0.4.0_r5\pimutex.cpp -o CMakeFiles\pip.dir\pimutex.cpp.s + +CMakeFiles/pip.dir/pimutex.cpp.obj.requires: +.PHONY : CMakeFiles/pip.dir/pimutex.cpp.obj.requires + +CMakeFiles/pip.dir/pimutex.cpp.obj.provides: CMakeFiles/pip.dir/pimutex.cpp.obj.requires + $(MAKE) -f CMakeFiles\pip.dir\build.make CMakeFiles/pip.dir/pimutex.cpp.obj.provides.build +.PHONY : CMakeFiles/pip.dir/pimutex.cpp.obj.provides + +CMakeFiles/pip.dir/pimutex.cpp.obj.provides.build: CMakeFiles/pip.dir/pimutex.cpp.obj + +CMakeFiles/pip.dir/piobject.cpp.obj: CMakeFiles/pip.dir/flags.make +CMakeFiles/pip.dir/piobject.cpp.obj: CMakeFiles/pip.dir/includes_CXX.rsp +CMakeFiles/pip.dir/piobject.cpp.obj: piobject.cpp + $(CMAKE_COMMAND) -E cmake_progress_report C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles $(CMAKE_PROGRESS_25) + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object CMakeFiles/pip.dir/piobject.cpp.obj" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles\pip.dir\piobject.cpp.obj -c C:\libs\oldpip\pip_0.4.0_r5\piobject.cpp + +CMakeFiles/pip.dir/piobject.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/pip.dir/piobject.cpp.i" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -E C:\libs\oldpip\pip_0.4.0_r5\piobject.cpp > CMakeFiles\pip.dir\piobject.cpp.i + +CMakeFiles/pip.dir/piobject.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/pip.dir/piobject.cpp.s" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -S C:\libs\oldpip\pip_0.4.0_r5\piobject.cpp -o CMakeFiles\pip.dir\piobject.cpp.s + +CMakeFiles/pip.dir/piobject.cpp.obj.requires: +.PHONY : CMakeFiles/pip.dir/piobject.cpp.obj.requires + +CMakeFiles/pip.dir/piobject.cpp.obj.provides: CMakeFiles/pip.dir/piobject.cpp.obj.requires + $(MAKE) -f CMakeFiles\pip.dir\build.make CMakeFiles/pip.dir/piobject.cpp.obj.provides.build +.PHONY : CMakeFiles/pip.dir/piobject.cpp.obj.provides + +CMakeFiles/pip.dir/piobject.cpp.obj.provides.build: CMakeFiles/pip.dir/piobject.cpp.obj + +CMakeFiles/pip.dir/pipacketextractor.cpp.obj: CMakeFiles/pip.dir/flags.make +CMakeFiles/pip.dir/pipacketextractor.cpp.obj: CMakeFiles/pip.dir/includes_CXX.rsp +CMakeFiles/pip.dir/pipacketextractor.cpp.obj: pipacketextractor.cpp + $(CMAKE_COMMAND) -E cmake_progress_report C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles $(CMAKE_PROGRESS_26) + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object CMakeFiles/pip.dir/pipacketextractor.cpp.obj" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles\pip.dir\pipacketextractor.cpp.obj -c C:\libs\oldpip\pip_0.4.0_r5\pipacketextractor.cpp + +CMakeFiles/pip.dir/pipacketextractor.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/pip.dir/pipacketextractor.cpp.i" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -E C:\libs\oldpip\pip_0.4.0_r5\pipacketextractor.cpp > CMakeFiles\pip.dir\pipacketextractor.cpp.i + +CMakeFiles/pip.dir/pipacketextractor.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/pip.dir/pipacketextractor.cpp.s" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -S C:\libs\oldpip\pip_0.4.0_r5\pipacketextractor.cpp -o CMakeFiles\pip.dir\pipacketextractor.cpp.s + +CMakeFiles/pip.dir/pipacketextractor.cpp.obj.requires: +.PHONY : CMakeFiles/pip.dir/pipacketextractor.cpp.obj.requires + +CMakeFiles/pip.dir/pipacketextractor.cpp.obj.provides: CMakeFiles/pip.dir/pipacketextractor.cpp.obj.requires + $(MAKE) -f CMakeFiles\pip.dir\build.make CMakeFiles/pip.dir/pipacketextractor.cpp.obj.provides.build +.PHONY : CMakeFiles/pip.dir/pipacketextractor.cpp.obj.provides + +CMakeFiles/pip.dir/pipacketextractor.cpp.obj.provides.build: CMakeFiles/pip.dir/pipacketextractor.cpp.obj + +CMakeFiles/pip.dir/pipeer.cpp.obj: CMakeFiles/pip.dir/flags.make +CMakeFiles/pip.dir/pipeer.cpp.obj: CMakeFiles/pip.dir/includes_CXX.rsp +CMakeFiles/pip.dir/pipeer.cpp.obj: pipeer.cpp + $(CMAKE_COMMAND) -E cmake_progress_report C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles $(CMAKE_PROGRESS_27) + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object CMakeFiles/pip.dir/pipeer.cpp.obj" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles\pip.dir\pipeer.cpp.obj -c C:\libs\oldpip\pip_0.4.0_r5\pipeer.cpp + +CMakeFiles/pip.dir/pipeer.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/pip.dir/pipeer.cpp.i" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -E C:\libs\oldpip\pip_0.4.0_r5\pipeer.cpp > CMakeFiles\pip.dir\pipeer.cpp.i + +CMakeFiles/pip.dir/pipeer.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/pip.dir/pipeer.cpp.s" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -S C:\libs\oldpip\pip_0.4.0_r5\pipeer.cpp -o CMakeFiles\pip.dir\pipeer.cpp.s + +CMakeFiles/pip.dir/pipeer.cpp.obj.requires: +.PHONY : CMakeFiles/pip.dir/pipeer.cpp.obj.requires + +CMakeFiles/pip.dir/pipeer.cpp.obj.provides: CMakeFiles/pip.dir/pipeer.cpp.obj.requires + $(MAKE) -f CMakeFiles\pip.dir\build.make CMakeFiles/pip.dir/pipeer.cpp.obj.provides.build +.PHONY : CMakeFiles/pip.dir/pipeer.cpp.obj.provides + +CMakeFiles/pip.dir/pipeer.cpp.obj.provides.build: CMakeFiles/pip.dir/pipeer.cpp.obj + +CMakeFiles/pip.dir/piprocess.cpp.obj: CMakeFiles/pip.dir/flags.make +CMakeFiles/pip.dir/piprocess.cpp.obj: CMakeFiles/pip.dir/includes_CXX.rsp +CMakeFiles/pip.dir/piprocess.cpp.obj: piprocess.cpp + $(CMAKE_COMMAND) -E cmake_progress_report C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles $(CMAKE_PROGRESS_28) + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object CMakeFiles/pip.dir/piprocess.cpp.obj" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles\pip.dir\piprocess.cpp.obj -c C:\libs\oldpip\pip_0.4.0_r5\piprocess.cpp + +CMakeFiles/pip.dir/piprocess.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/pip.dir/piprocess.cpp.i" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -E C:\libs\oldpip\pip_0.4.0_r5\piprocess.cpp > CMakeFiles\pip.dir\piprocess.cpp.i + +CMakeFiles/pip.dir/piprocess.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/pip.dir/piprocess.cpp.s" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -S C:\libs\oldpip\pip_0.4.0_r5\piprocess.cpp -o CMakeFiles\pip.dir\piprocess.cpp.s + +CMakeFiles/pip.dir/piprocess.cpp.obj.requires: +.PHONY : CMakeFiles/pip.dir/piprocess.cpp.obj.requires + +CMakeFiles/pip.dir/piprocess.cpp.obj.provides: CMakeFiles/pip.dir/piprocess.cpp.obj.requires + $(MAKE) -f CMakeFiles\pip.dir\build.make CMakeFiles/pip.dir/piprocess.cpp.obj.provides.build +.PHONY : CMakeFiles/pip.dir/piprocess.cpp.obj.provides + +CMakeFiles/pip.dir/piprocess.cpp.obj.provides.build: CMakeFiles/pip.dir/piprocess.cpp.obj + +CMakeFiles/pip.dir/piprotocol.cpp.obj: CMakeFiles/pip.dir/flags.make +CMakeFiles/pip.dir/piprotocol.cpp.obj: CMakeFiles/pip.dir/includes_CXX.rsp +CMakeFiles/pip.dir/piprotocol.cpp.obj: piprotocol.cpp + $(CMAKE_COMMAND) -E cmake_progress_report C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles $(CMAKE_PROGRESS_29) + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object CMakeFiles/pip.dir/piprotocol.cpp.obj" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles\pip.dir\piprotocol.cpp.obj -c C:\libs\oldpip\pip_0.4.0_r5\piprotocol.cpp + +CMakeFiles/pip.dir/piprotocol.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/pip.dir/piprotocol.cpp.i" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -E C:\libs\oldpip\pip_0.4.0_r5\piprotocol.cpp > CMakeFiles\pip.dir\piprotocol.cpp.i + +CMakeFiles/pip.dir/piprotocol.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/pip.dir/piprotocol.cpp.s" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -S C:\libs\oldpip\pip_0.4.0_r5\piprotocol.cpp -o CMakeFiles\pip.dir\piprotocol.cpp.s + +CMakeFiles/pip.dir/piprotocol.cpp.obj.requires: +.PHONY : CMakeFiles/pip.dir/piprotocol.cpp.obj.requires + +CMakeFiles/pip.dir/piprotocol.cpp.obj.provides: CMakeFiles/pip.dir/piprotocol.cpp.obj.requires + $(MAKE) -f CMakeFiles\pip.dir\build.make CMakeFiles/pip.dir/piprotocol.cpp.obj.provides.build +.PHONY : CMakeFiles/pip.dir/piprotocol.cpp.obj.provides + +CMakeFiles/pip.dir/piprotocol.cpp.obj.provides.build: CMakeFiles/pip.dir/piprotocol.cpp.obj + +CMakeFiles/pip.dir/piserial.cpp.obj: CMakeFiles/pip.dir/flags.make +CMakeFiles/pip.dir/piserial.cpp.obj: CMakeFiles/pip.dir/includes_CXX.rsp +CMakeFiles/pip.dir/piserial.cpp.obj: piserial.cpp + $(CMAKE_COMMAND) -E cmake_progress_report C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles $(CMAKE_PROGRESS_30) + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object CMakeFiles/pip.dir/piserial.cpp.obj" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles\pip.dir\piserial.cpp.obj -c C:\libs\oldpip\pip_0.4.0_r5\piserial.cpp + +CMakeFiles/pip.dir/piserial.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/pip.dir/piserial.cpp.i" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -E C:\libs\oldpip\pip_0.4.0_r5\piserial.cpp > CMakeFiles\pip.dir\piserial.cpp.i + +CMakeFiles/pip.dir/piserial.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/pip.dir/piserial.cpp.s" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -S C:\libs\oldpip\pip_0.4.0_r5\piserial.cpp -o CMakeFiles\pip.dir\piserial.cpp.s + +CMakeFiles/pip.dir/piserial.cpp.obj.requires: +.PHONY : CMakeFiles/pip.dir/piserial.cpp.obj.requires + +CMakeFiles/pip.dir/piserial.cpp.obj.provides: CMakeFiles/pip.dir/piserial.cpp.obj.requires + $(MAKE) -f CMakeFiles\pip.dir\build.make CMakeFiles/pip.dir/piserial.cpp.obj.provides.build +.PHONY : CMakeFiles/pip.dir/piserial.cpp.obj.provides + +CMakeFiles/pip.dir/piserial.cpp.obj.provides.build: CMakeFiles/pip.dir/piserial.cpp.obj + +CMakeFiles/pip.dir/pisignals.cpp.obj: CMakeFiles/pip.dir/flags.make +CMakeFiles/pip.dir/pisignals.cpp.obj: CMakeFiles/pip.dir/includes_CXX.rsp +CMakeFiles/pip.dir/pisignals.cpp.obj: pisignals.cpp + $(CMAKE_COMMAND) -E cmake_progress_report C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles $(CMAKE_PROGRESS_31) + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object CMakeFiles/pip.dir/pisignals.cpp.obj" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles\pip.dir\pisignals.cpp.obj -c C:\libs\oldpip\pip_0.4.0_r5\pisignals.cpp + +CMakeFiles/pip.dir/pisignals.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/pip.dir/pisignals.cpp.i" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -E C:\libs\oldpip\pip_0.4.0_r5\pisignals.cpp > CMakeFiles\pip.dir\pisignals.cpp.i + +CMakeFiles/pip.dir/pisignals.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/pip.dir/pisignals.cpp.s" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -S C:\libs\oldpip\pip_0.4.0_r5\pisignals.cpp -o CMakeFiles\pip.dir\pisignals.cpp.s + +CMakeFiles/pip.dir/pisignals.cpp.obj.requires: +.PHONY : CMakeFiles/pip.dir/pisignals.cpp.obj.requires + +CMakeFiles/pip.dir/pisignals.cpp.obj.provides: CMakeFiles/pip.dir/pisignals.cpp.obj.requires + $(MAKE) -f CMakeFiles\pip.dir\build.make CMakeFiles/pip.dir/pisignals.cpp.obj.provides.build +.PHONY : CMakeFiles/pip.dir/pisignals.cpp.obj.provides + +CMakeFiles/pip.dir/pisignals.cpp.obj.provides.build: CMakeFiles/pip.dir/pisignals.cpp.obj + +CMakeFiles/pip.dir/pistring.cpp.obj: CMakeFiles/pip.dir/flags.make +CMakeFiles/pip.dir/pistring.cpp.obj: CMakeFiles/pip.dir/includes_CXX.rsp +CMakeFiles/pip.dir/pistring.cpp.obj: pistring.cpp + $(CMAKE_COMMAND) -E cmake_progress_report C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles $(CMAKE_PROGRESS_32) + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object CMakeFiles/pip.dir/pistring.cpp.obj" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles\pip.dir\pistring.cpp.obj -c C:\libs\oldpip\pip_0.4.0_r5\pistring.cpp + +CMakeFiles/pip.dir/pistring.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/pip.dir/pistring.cpp.i" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -E C:\libs\oldpip\pip_0.4.0_r5\pistring.cpp > CMakeFiles\pip.dir\pistring.cpp.i + +CMakeFiles/pip.dir/pistring.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/pip.dir/pistring.cpp.s" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -S C:\libs\oldpip\pip_0.4.0_r5\pistring.cpp -o CMakeFiles\pip.dir\pistring.cpp.s + +CMakeFiles/pip.dir/pistring.cpp.obj.requires: +.PHONY : CMakeFiles/pip.dir/pistring.cpp.obj.requires + +CMakeFiles/pip.dir/pistring.cpp.obj.provides: CMakeFiles/pip.dir/pistring.cpp.obj.requires + $(MAKE) -f CMakeFiles\pip.dir\build.make CMakeFiles/pip.dir/pistring.cpp.obj.provides.build +.PHONY : CMakeFiles/pip.dir/pistring.cpp.obj.provides + +CMakeFiles/pip.dir/pistring.cpp.obj.provides.build: CMakeFiles/pip.dir/pistring.cpp.obj + +CMakeFiles/pip.dir/pisystemmonitor.cpp.obj: CMakeFiles/pip.dir/flags.make +CMakeFiles/pip.dir/pisystemmonitor.cpp.obj: CMakeFiles/pip.dir/includes_CXX.rsp +CMakeFiles/pip.dir/pisystemmonitor.cpp.obj: pisystemmonitor.cpp + $(CMAKE_COMMAND) -E cmake_progress_report C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles $(CMAKE_PROGRESS_33) + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object CMakeFiles/pip.dir/pisystemmonitor.cpp.obj" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles\pip.dir\pisystemmonitor.cpp.obj -c C:\libs\oldpip\pip_0.4.0_r5\pisystemmonitor.cpp + +CMakeFiles/pip.dir/pisystemmonitor.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/pip.dir/pisystemmonitor.cpp.i" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -E C:\libs\oldpip\pip_0.4.0_r5\pisystemmonitor.cpp > CMakeFiles\pip.dir\pisystemmonitor.cpp.i + +CMakeFiles/pip.dir/pisystemmonitor.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/pip.dir/pisystemmonitor.cpp.s" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -S C:\libs\oldpip\pip_0.4.0_r5\pisystemmonitor.cpp -o CMakeFiles\pip.dir\pisystemmonitor.cpp.s + +CMakeFiles/pip.dir/pisystemmonitor.cpp.obj.requires: +.PHONY : CMakeFiles/pip.dir/pisystemmonitor.cpp.obj.requires + +CMakeFiles/pip.dir/pisystemmonitor.cpp.obj.provides: CMakeFiles/pip.dir/pisystemmonitor.cpp.obj.requires + $(MAKE) -f CMakeFiles\pip.dir\build.make CMakeFiles/pip.dir/pisystemmonitor.cpp.obj.provides.build +.PHONY : CMakeFiles/pip.dir/pisystemmonitor.cpp.obj.provides + +CMakeFiles/pip.dir/pisystemmonitor.cpp.obj.provides.build: CMakeFiles/pip.dir/pisystemmonitor.cpp.obj + +CMakeFiles/pip.dir/pisystemtests.cpp.obj: CMakeFiles/pip.dir/flags.make +CMakeFiles/pip.dir/pisystemtests.cpp.obj: CMakeFiles/pip.dir/includes_CXX.rsp +CMakeFiles/pip.dir/pisystemtests.cpp.obj: pisystemtests.cpp + $(CMAKE_COMMAND) -E cmake_progress_report C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles $(CMAKE_PROGRESS_34) + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object CMakeFiles/pip.dir/pisystemtests.cpp.obj" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles\pip.dir\pisystemtests.cpp.obj -c C:\libs\oldpip\pip_0.4.0_r5\pisystemtests.cpp + +CMakeFiles/pip.dir/pisystemtests.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/pip.dir/pisystemtests.cpp.i" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -E C:\libs\oldpip\pip_0.4.0_r5\pisystemtests.cpp > CMakeFiles\pip.dir\pisystemtests.cpp.i + +CMakeFiles/pip.dir/pisystemtests.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/pip.dir/pisystemtests.cpp.s" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -S C:\libs\oldpip\pip_0.4.0_r5\pisystemtests.cpp -o CMakeFiles\pip.dir\pisystemtests.cpp.s + +CMakeFiles/pip.dir/pisystemtests.cpp.obj.requires: +.PHONY : CMakeFiles/pip.dir/pisystemtests.cpp.obj.requires + +CMakeFiles/pip.dir/pisystemtests.cpp.obj.provides: CMakeFiles/pip.dir/pisystemtests.cpp.obj.requires + $(MAKE) -f CMakeFiles\pip.dir\build.make CMakeFiles/pip.dir/pisystemtests.cpp.obj.provides.build +.PHONY : CMakeFiles/pip.dir/pisystemtests.cpp.obj.provides + +CMakeFiles/pip.dir/pisystemtests.cpp.obj.provides.build: CMakeFiles/pip.dir/pisystemtests.cpp.obj + +CMakeFiles/pip.dir/pithread.cpp.obj: CMakeFiles/pip.dir/flags.make +CMakeFiles/pip.dir/pithread.cpp.obj: CMakeFiles/pip.dir/includes_CXX.rsp +CMakeFiles/pip.dir/pithread.cpp.obj: pithread.cpp + $(CMAKE_COMMAND) -E cmake_progress_report C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles $(CMAKE_PROGRESS_35) + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object CMakeFiles/pip.dir/pithread.cpp.obj" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles\pip.dir\pithread.cpp.obj -c C:\libs\oldpip\pip_0.4.0_r5\pithread.cpp + +CMakeFiles/pip.dir/pithread.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/pip.dir/pithread.cpp.i" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -E C:\libs\oldpip\pip_0.4.0_r5\pithread.cpp > CMakeFiles\pip.dir\pithread.cpp.i + +CMakeFiles/pip.dir/pithread.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/pip.dir/pithread.cpp.s" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -S C:\libs\oldpip\pip_0.4.0_r5\pithread.cpp -o CMakeFiles\pip.dir\pithread.cpp.s + +CMakeFiles/pip.dir/pithread.cpp.obj.requires: +.PHONY : CMakeFiles/pip.dir/pithread.cpp.obj.requires + +CMakeFiles/pip.dir/pithread.cpp.obj.provides: CMakeFiles/pip.dir/pithread.cpp.obj.requires + $(MAKE) -f CMakeFiles\pip.dir\build.make CMakeFiles/pip.dir/pithread.cpp.obj.provides.build +.PHONY : CMakeFiles/pip.dir/pithread.cpp.obj.provides + +CMakeFiles/pip.dir/pithread.cpp.obj.provides.build: CMakeFiles/pip.dir/pithread.cpp.obj + +CMakeFiles/pip.dir/pitime.cpp.obj: CMakeFiles/pip.dir/flags.make +CMakeFiles/pip.dir/pitime.cpp.obj: CMakeFiles/pip.dir/includes_CXX.rsp +CMakeFiles/pip.dir/pitime.cpp.obj: pitime.cpp + $(CMAKE_COMMAND) -E cmake_progress_report C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles $(CMAKE_PROGRESS_36) + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object CMakeFiles/pip.dir/pitime.cpp.obj" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles\pip.dir\pitime.cpp.obj -c C:\libs\oldpip\pip_0.4.0_r5\pitime.cpp + +CMakeFiles/pip.dir/pitime.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/pip.dir/pitime.cpp.i" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -E C:\libs\oldpip\pip_0.4.0_r5\pitime.cpp > CMakeFiles\pip.dir\pitime.cpp.i + +CMakeFiles/pip.dir/pitime.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/pip.dir/pitime.cpp.s" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -S C:\libs\oldpip\pip_0.4.0_r5\pitime.cpp -o CMakeFiles\pip.dir\pitime.cpp.s + +CMakeFiles/pip.dir/pitime.cpp.obj.requires: +.PHONY : CMakeFiles/pip.dir/pitime.cpp.obj.requires + +CMakeFiles/pip.dir/pitime.cpp.obj.provides: CMakeFiles/pip.dir/pitime.cpp.obj.requires + $(MAKE) -f CMakeFiles\pip.dir\build.make CMakeFiles/pip.dir/pitime.cpp.obj.provides.build +.PHONY : CMakeFiles/pip.dir/pitime.cpp.obj.provides + +CMakeFiles/pip.dir/pitime.cpp.obj.provides.build: CMakeFiles/pip.dir/pitime.cpp.obj + +CMakeFiles/pip.dir/pitimer.cpp.obj: CMakeFiles/pip.dir/flags.make +CMakeFiles/pip.dir/pitimer.cpp.obj: CMakeFiles/pip.dir/includes_CXX.rsp +CMakeFiles/pip.dir/pitimer.cpp.obj: pitimer.cpp + $(CMAKE_COMMAND) -E cmake_progress_report C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles $(CMAKE_PROGRESS_37) + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object CMakeFiles/pip.dir/pitimer.cpp.obj" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles\pip.dir\pitimer.cpp.obj -c C:\libs\oldpip\pip_0.4.0_r5\pitimer.cpp + +CMakeFiles/pip.dir/pitimer.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/pip.dir/pitimer.cpp.i" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -E C:\libs\oldpip\pip_0.4.0_r5\pitimer.cpp > CMakeFiles\pip.dir\pitimer.cpp.i + +CMakeFiles/pip.dir/pitimer.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/pip.dir/pitimer.cpp.s" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -S C:\libs\oldpip\pip_0.4.0_r5\pitimer.cpp -o CMakeFiles\pip.dir\pitimer.cpp.s + +CMakeFiles/pip.dir/pitimer.cpp.obj.requires: +.PHONY : CMakeFiles/pip.dir/pitimer.cpp.obj.requires + +CMakeFiles/pip.dir/pitimer.cpp.obj.provides: CMakeFiles/pip.dir/pitimer.cpp.obj.requires + $(MAKE) -f CMakeFiles\pip.dir\build.make CMakeFiles/pip.dir/pitimer.cpp.obj.provides.build +.PHONY : CMakeFiles/pip.dir/pitimer.cpp.obj.provides + +CMakeFiles/pip.dir/pitimer.cpp.obj.provides.build: CMakeFiles/pip.dir/pitimer.cpp.obj + +CMakeFiles/pip.dir/piusb.cpp.obj: CMakeFiles/pip.dir/flags.make +CMakeFiles/pip.dir/piusb.cpp.obj: CMakeFiles/pip.dir/includes_CXX.rsp +CMakeFiles/pip.dir/piusb.cpp.obj: piusb.cpp + $(CMAKE_COMMAND) -E cmake_progress_report C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles $(CMAKE_PROGRESS_38) + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object CMakeFiles/pip.dir/piusb.cpp.obj" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles\pip.dir\piusb.cpp.obj -c C:\libs\oldpip\pip_0.4.0_r5\piusb.cpp + +CMakeFiles/pip.dir/piusb.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/pip.dir/piusb.cpp.i" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -E C:\libs\oldpip\pip_0.4.0_r5\piusb.cpp > CMakeFiles\pip.dir\piusb.cpp.i + +CMakeFiles/pip.dir/piusb.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/pip.dir/piusb.cpp.s" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -S C:\libs\oldpip\pip_0.4.0_r5\piusb.cpp -o CMakeFiles\pip.dir\piusb.cpp.s + +CMakeFiles/pip.dir/piusb.cpp.obj.requires: +.PHONY : CMakeFiles/pip.dir/piusb.cpp.obj.requires + +CMakeFiles/pip.dir/piusb.cpp.obj.provides: CMakeFiles/pip.dir/piusb.cpp.obj.requires + $(MAKE) -f CMakeFiles\pip.dir\build.make CMakeFiles/pip.dir/piusb.cpp.obj.provides.build +.PHONY : CMakeFiles/pip.dir/piusb.cpp.obj.provides + +CMakeFiles/pip.dir/piusb.cpp.obj.provides.build: CMakeFiles/pip.dir/piusb.cpp.obj + +CMakeFiles/pip.dir/pivariant.cpp.obj: CMakeFiles/pip.dir/flags.make +CMakeFiles/pip.dir/pivariant.cpp.obj: CMakeFiles/pip.dir/includes_CXX.rsp +CMakeFiles/pip.dir/pivariant.cpp.obj: pivariant.cpp + $(CMAKE_COMMAND) -E cmake_progress_report C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles $(CMAKE_PROGRESS_39) + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object CMakeFiles/pip.dir/pivariant.cpp.obj" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles\pip.dir\pivariant.cpp.obj -c C:\libs\oldpip\pip_0.4.0_r5\pivariant.cpp + +CMakeFiles/pip.dir/pivariant.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/pip.dir/pivariant.cpp.i" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -E C:\libs\oldpip\pip_0.4.0_r5\pivariant.cpp > CMakeFiles\pip.dir\pivariant.cpp.i + +CMakeFiles/pip.dir/pivariant.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/pip.dir/pivariant.cpp.s" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -S C:\libs\oldpip\pip_0.4.0_r5\pivariant.cpp -o CMakeFiles\pip.dir\pivariant.cpp.s + +CMakeFiles/pip.dir/pivariant.cpp.obj.requires: +.PHONY : CMakeFiles/pip.dir/pivariant.cpp.obj.requires + +CMakeFiles/pip.dir/pivariant.cpp.obj.provides: CMakeFiles/pip.dir/pivariant.cpp.obj.requires + $(MAKE) -f CMakeFiles\pip.dir\build.make CMakeFiles/pip.dir/pivariant.cpp.obj.provides.build +.PHONY : CMakeFiles/pip.dir/pivariant.cpp.obj.provides + +CMakeFiles/pip.dir/pivariant.cpp.obj.provides.build: CMakeFiles/pip.dir/pivariant.cpp.obj + +# Object files for target pip +pip_OBJECTS = \ +"CMakeFiles/pip.dir/pibinarylog.cpp.obj" \ +"CMakeFiles/pip.dir/pibytearray.cpp.obj" \ +"CMakeFiles/pip.dir/picli.cpp.obj" \ +"CMakeFiles/pip.dir/picodec.cpp.obj" \ +"CMakeFiles/pip.dir/picodeinfo.cpp.obj" \ +"CMakeFiles/pip.dir/picodeparser.cpp.obj" \ +"CMakeFiles/pip.dir/picollection.cpp.obj" \ +"CMakeFiles/pip.dir/piconfig.cpp.obj" \ +"CMakeFiles/pip.dir/piconnection.cpp.obj" \ +"CMakeFiles/pip.dir/piconsole.cpp.obj" \ +"CMakeFiles/pip.dir/picontainers.cpp.obj" \ +"CMakeFiles/pip.dir/pidevicepool.cpp.obj" \ +"CMakeFiles/pip.dir/pidiagnostics.cpp.obj" \ +"CMakeFiles/pip.dir/pidir.cpp.obj" \ +"CMakeFiles/pip.dir/piethernet.cpp.obj" \ +"CMakeFiles/pip.dir/pievaluator.cpp.obj" \ +"CMakeFiles/pip.dir/pifile.cpp.obj" \ +"CMakeFiles/pip.dir/piincludes.cpp.obj" \ +"CMakeFiles/pip.dir/piiodevice.cpp.obj" \ +"CMakeFiles/pip.dir/pikbdlistener.cpp.obj" \ +"CMakeFiles/pip.dir/pimath.cpp.obj" \ +"CMakeFiles/pip.dir/pimonitor.cpp.obj" \ +"CMakeFiles/pip.dir/pimultiprotocol.cpp.obj" \ +"CMakeFiles/pip.dir/pimutex.cpp.obj" \ +"CMakeFiles/pip.dir/piobject.cpp.obj" \ +"CMakeFiles/pip.dir/pipacketextractor.cpp.obj" \ +"CMakeFiles/pip.dir/pipeer.cpp.obj" \ +"CMakeFiles/pip.dir/piprocess.cpp.obj" \ +"CMakeFiles/pip.dir/piprotocol.cpp.obj" \ +"CMakeFiles/pip.dir/piserial.cpp.obj" \ +"CMakeFiles/pip.dir/pisignals.cpp.obj" \ +"CMakeFiles/pip.dir/pistring.cpp.obj" \ +"CMakeFiles/pip.dir/pisystemmonitor.cpp.obj" \ +"CMakeFiles/pip.dir/pisystemtests.cpp.obj" \ +"CMakeFiles/pip.dir/pithread.cpp.obj" \ +"CMakeFiles/pip.dir/pitime.cpp.obj" \ +"CMakeFiles/pip.dir/pitimer.cpp.obj" \ +"CMakeFiles/pip.dir/piusb.cpp.obj" \ +"CMakeFiles/pip.dir/pivariant.cpp.obj" + +# External object files for target pip +pip_EXTERNAL_OBJECTS = \ +"C:/libs/oldpip/pip_0.4.0_r5/pip_resource_win.o" + +libpip.dll: CMakeFiles/pip.dir/pibinarylog.cpp.obj +libpip.dll: CMakeFiles/pip.dir/pibytearray.cpp.obj +libpip.dll: CMakeFiles/pip.dir/picli.cpp.obj +libpip.dll: CMakeFiles/pip.dir/picodec.cpp.obj +libpip.dll: CMakeFiles/pip.dir/picodeinfo.cpp.obj +libpip.dll: CMakeFiles/pip.dir/picodeparser.cpp.obj +libpip.dll: CMakeFiles/pip.dir/picollection.cpp.obj +libpip.dll: CMakeFiles/pip.dir/piconfig.cpp.obj +libpip.dll: CMakeFiles/pip.dir/piconnection.cpp.obj +libpip.dll: CMakeFiles/pip.dir/piconsole.cpp.obj +libpip.dll: CMakeFiles/pip.dir/picontainers.cpp.obj +libpip.dll: CMakeFiles/pip.dir/pidevicepool.cpp.obj +libpip.dll: CMakeFiles/pip.dir/pidiagnostics.cpp.obj +libpip.dll: CMakeFiles/pip.dir/pidir.cpp.obj +libpip.dll: CMakeFiles/pip.dir/piethernet.cpp.obj +libpip.dll: CMakeFiles/pip.dir/pievaluator.cpp.obj +libpip.dll: CMakeFiles/pip.dir/pifile.cpp.obj +libpip.dll: CMakeFiles/pip.dir/piincludes.cpp.obj +libpip.dll: CMakeFiles/pip.dir/piiodevice.cpp.obj +libpip.dll: CMakeFiles/pip.dir/pikbdlistener.cpp.obj +libpip.dll: CMakeFiles/pip.dir/pimath.cpp.obj +libpip.dll: CMakeFiles/pip.dir/pimonitor.cpp.obj +libpip.dll: CMakeFiles/pip.dir/pimultiprotocol.cpp.obj +libpip.dll: CMakeFiles/pip.dir/pimutex.cpp.obj +libpip.dll: CMakeFiles/pip.dir/piobject.cpp.obj +libpip.dll: CMakeFiles/pip.dir/pipacketextractor.cpp.obj +libpip.dll: CMakeFiles/pip.dir/pipeer.cpp.obj +libpip.dll: CMakeFiles/pip.dir/piprocess.cpp.obj +libpip.dll: CMakeFiles/pip.dir/piprotocol.cpp.obj +libpip.dll: CMakeFiles/pip.dir/piserial.cpp.obj +libpip.dll: CMakeFiles/pip.dir/pisignals.cpp.obj +libpip.dll: CMakeFiles/pip.dir/pistring.cpp.obj +libpip.dll: CMakeFiles/pip.dir/pisystemmonitor.cpp.obj +libpip.dll: CMakeFiles/pip.dir/pisystemtests.cpp.obj +libpip.dll: CMakeFiles/pip.dir/pithread.cpp.obj +libpip.dll: CMakeFiles/pip.dir/pitime.cpp.obj +libpip.dll: CMakeFiles/pip.dir/pitimer.cpp.obj +libpip.dll: CMakeFiles/pip.dir/piusb.cpp.obj +libpip.dll: CMakeFiles/pip.dir/pivariant.cpp.obj +libpip.dll: pip_resource_win.o +libpip.dll: CMakeFiles/pip.dir/build.make +libpip.dll: CMakeFiles/pip.dir/objects1.rsp +libpip.dll: CMakeFiles/pip.dir/link.txt + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --red --bold "Linking CXX shared library libpip.dll" + $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles\pip.dir\link.txt --verbose=$(VERBOSE) + +# Rule to build all files generated by this target. +CMakeFiles/pip.dir/build: libpip.dll +.PHONY : CMakeFiles/pip.dir/build + +CMakeFiles/pip.dir/requires: CMakeFiles/pip.dir/pibinarylog.cpp.obj.requires +CMakeFiles/pip.dir/requires: CMakeFiles/pip.dir/pibytearray.cpp.obj.requires +CMakeFiles/pip.dir/requires: CMakeFiles/pip.dir/picli.cpp.obj.requires +CMakeFiles/pip.dir/requires: CMakeFiles/pip.dir/picodec.cpp.obj.requires +CMakeFiles/pip.dir/requires: CMakeFiles/pip.dir/picodeinfo.cpp.obj.requires +CMakeFiles/pip.dir/requires: CMakeFiles/pip.dir/picodeparser.cpp.obj.requires +CMakeFiles/pip.dir/requires: CMakeFiles/pip.dir/picollection.cpp.obj.requires +CMakeFiles/pip.dir/requires: CMakeFiles/pip.dir/piconfig.cpp.obj.requires +CMakeFiles/pip.dir/requires: CMakeFiles/pip.dir/piconnection.cpp.obj.requires +CMakeFiles/pip.dir/requires: CMakeFiles/pip.dir/piconsole.cpp.obj.requires +CMakeFiles/pip.dir/requires: CMakeFiles/pip.dir/picontainers.cpp.obj.requires +CMakeFiles/pip.dir/requires: CMakeFiles/pip.dir/pidevicepool.cpp.obj.requires +CMakeFiles/pip.dir/requires: CMakeFiles/pip.dir/pidiagnostics.cpp.obj.requires +CMakeFiles/pip.dir/requires: CMakeFiles/pip.dir/pidir.cpp.obj.requires +CMakeFiles/pip.dir/requires: CMakeFiles/pip.dir/piethernet.cpp.obj.requires +CMakeFiles/pip.dir/requires: CMakeFiles/pip.dir/pievaluator.cpp.obj.requires +CMakeFiles/pip.dir/requires: CMakeFiles/pip.dir/pifile.cpp.obj.requires +CMakeFiles/pip.dir/requires: CMakeFiles/pip.dir/piincludes.cpp.obj.requires +CMakeFiles/pip.dir/requires: CMakeFiles/pip.dir/piiodevice.cpp.obj.requires +CMakeFiles/pip.dir/requires: CMakeFiles/pip.dir/pikbdlistener.cpp.obj.requires +CMakeFiles/pip.dir/requires: CMakeFiles/pip.dir/pimath.cpp.obj.requires +CMakeFiles/pip.dir/requires: CMakeFiles/pip.dir/pimonitor.cpp.obj.requires +CMakeFiles/pip.dir/requires: CMakeFiles/pip.dir/pimultiprotocol.cpp.obj.requires +CMakeFiles/pip.dir/requires: CMakeFiles/pip.dir/pimutex.cpp.obj.requires +CMakeFiles/pip.dir/requires: CMakeFiles/pip.dir/piobject.cpp.obj.requires +CMakeFiles/pip.dir/requires: CMakeFiles/pip.dir/pipacketextractor.cpp.obj.requires +CMakeFiles/pip.dir/requires: CMakeFiles/pip.dir/pipeer.cpp.obj.requires +CMakeFiles/pip.dir/requires: CMakeFiles/pip.dir/piprocess.cpp.obj.requires +CMakeFiles/pip.dir/requires: CMakeFiles/pip.dir/piprotocol.cpp.obj.requires +CMakeFiles/pip.dir/requires: CMakeFiles/pip.dir/piserial.cpp.obj.requires +CMakeFiles/pip.dir/requires: CMakeFiles/pip.dir/pisignals.cpp.obj.requires +CMakeFiles/pip.dir/requires: CMakeFiles/pip.dir/pistring.cpp.obj.requires +CMakeFiles/pip.dir/requires: CMakeFiles/pip.dir/pisystemmonitor.cpp.obj.requires +CMakeFiles/pip.dir/requires: CMakeFiles/pip.dir/pisystemtests.cpp.obj.requires +CMakeFiles/pip.dir/requires: CMakeFiles/pip.dir/pithread.cpp.obj.requires +CMakeFiles/pip.dir/requires: CMakeFiles/pip.dir/pitime.cpp.obj.requires +CMakeFiles/pip.dir/requires: CMakeFiles/pip.dir/pitimer.cpp.obj.requires +CMakeFiles/pip.dir/requires: CMakeFiles/pip.dir/piusb.cpp.obj.requires +CMakeFiles/pip.dir/requires: CMakeFiles/pip.dir/pivariant.cpp.obj.requires +.PHONY : CMakeFiles/pip.dir/requires + +CMakeFiles/pip.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles\pip.dir\cmake_clean.cmake +.PHONY : CMakeFiles/pip.dir/clean + +CMakeFiles/pip.dir/depend: + $(CMAKE_COMMAND) -E cmake_depends "MinGW Makefiles" C:\libs\oldpip\pip_0.4.0_r5 C:\libs\oldpip\pip_0.4.0_r5 C:\libs\oldpip\pip_0.4.0_r5 C:\libs\oldpip\pip_0.4.0_r5 C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles\pip.dir\DependInfo.cmake --color=$(COLOR) +.PHONY : CMakeFiles/pip.dir/depend + diff --git a/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/cmake_clean.cmake b/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/cmake_clean.cmake new file mode 100644 index 0000000..448667a --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/cmake_clean.cmake @@ -0,0 +1,50 @@ +FILE(REMOVE_RECURSE + "CMakeFiles/pip.dir/pibinarylog.cpp.obj" + "CMakeFiles/pip.dir/pibytearray.cpp.obj" + "CMakeFiles/pip.dir/picli.cpp.obj" + "CMakeFiles/pip.dir/picodec.cpp.obj" + "CMakeFiles/pip.dir/picodeinfo.cpp.obj" + "CMakeFiles/pip.dir/picodeparser.cpp.obj" + "CMakeFiles/pip.dir/picollection.cpp.obj" + "CMakeFiles/pip.dir/piconfig.cpp.obj" + "CMakeFiles/pip.dir/piconnection.cpp.obj" + "CMakeFiles/pip.dir/piconsole.cpp.obj" + "CMakeFiles/pip.dir/picontainers.cpp.obj" + "CMakeFiles/pip.dir/pidevicepool.cpp.obj" + "CMakeFiles/pip.dir/pidiagnostics.cpp.obj" + "CMakeFiles/pip.dir/pidir.cpp.obj" + "CMakeFiles/pip.dir/piethernet.cpp.obj" + "CMakeFiles/pip.dir/pievaluator.cpp.obj" + "CMakeFiles/pip.dir/pifile.cpp.obj" + "CMakeFiles/pip.dir/piincludes.cpp.obj" + "CMakeFiles/pip.dir/piiodevice.cpp.obj" + "CMakeFiles/pip.dir/pikbdlistener.cpp.obj" + "CMakeFiles/pip.dir/pimath.cpp.obj" + "CMakeFiles/pip.dir/pimonitor.cpp.obj" + "CMakeFiles/pip.dir/pimultiprotocol.cpp.obj" + "CMakeFiles/pip.dir/pimutex.cpp.obj" + "CMakeFiles/pip.dir/piobject.cpp.obj" + "CMakeFiles/pip.dir/pipacketextractor.cpp.obj" + "CMakeFiles/pip.dir/pipeer.cpp.obj" + "CMakeFiles/pip.dir/piprocess.cpp.obj" + "CMakeFiles/pip.dir/piprotocol.cpp.obj" + "CMakeFiles/pip.dir/piserial.cpp.obj" + "CMakeFiles/pip.dir/pisignals.cpp.obj" + "CMakeFiles/pip.dir/pistring.cpp.obj" + "CMakeFiles/pip.dir/pisystemmonitor.cpp.obj" + "CMakeFiles/pip.dir/pisystemtests.cpp.obj" + "CMakeFiles/pip.dir/pithread.cpp.obj" + "CMakeFiles/pip.dir/pitime.cpp.obj" + "CMakeFiles/pip.dir/pitimer.cpp.obj" + "CMakeFiles/pip.dir/piusb.cpp.obj" + "CMakeFiles/pip.dir/pivariant.cpp.obj" + "libpip.pdb" + "libpip.dll" + "libpip.dll.a" + "libpip.dll.manifest" +) + +# Per-language clean rules from dependency scanning. +FOREACH(lang CXX) + INCLUDE(CMakeFiles/pip.dir/cmake_clean_${lang}.cmake OPTIONAL) +ENDFOREACH(lang) diff --git a/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/depend.internal b/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/depend.internal new file mode 100644 index 0000000..bbdaef5 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/depend.internal @@ -0,0 +1,912 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "MinGW Makefiles" Generator, CMake Version 2.8 + +CMakeFiles/pip.dir/pibinarylog.cpp.obj + C:/libs/oldpip/pip_0.4.0_r5/pibinarylog.cpp + C:/libs/oldpip/pip_0.4.0_r5/pibinarylog.h + C:/libs/oldpip/pip_0.4.0_r5/pibitarray.h + C:/libs/oldpip/pip_0.4.0_r5/pibytearray.h + C:/libs/oldpip/pip_0.4.0_r5/pichar.h + C:/libs/oldpip/pip_0.4.0_r5/picollection.h + C:/libs/oldpip/pip_0.4.0_r5/picontainers.h + C:/libs/oldpip/pip_0.4.0_r5/pideque.h + C:/libs/oldpip/pip_0.4.0_r5/pifile.h + C:/libs/oldpip/pip_0.4.0_r5/piincludes.h + C:/libs/oldpip/pip_0.4.0_r5/piiodevice.h + C:/libs/oldpip/pip_0.4.0_r5/pimap.h + C:/libs/oldpip/pip_0.4.0_r5/pimath.h + C:/libs/oldpip/pip_0.4.0_r5/pimonitor.h + C:/libs/oldpip/pip_0.4.0_r5/pimutex.h + C:/libs/oldpip/pip_0.4.0_r5/piobject.h + C:/libs/oldpip/pip_0.4.0_r5/pip_export.h + C:/libs/oldpip/pip_0.4.0_r5/piqueue.h + C:/libs/oldpip/pip_0.4.0_r5/pistack.h + C:/libs/oldpip/pip_0.4.0_r5/pistring.h + C:/libs/oldpip/pip_0.4.0_r5/pithread.h + C:/libs/oldpip/pip_0.4.0_r5/pitime.h + C:/libs/oldpip/pip_0.4.0_r5/pitimer.h + C:/libs/oldpip/pip_0.4.0_r5/pivariant.h + C:/libs/oldpip/pip_0.4.0_r5/pivector.h +CMakeFiles/pip.dir/pibytearray.cpp.obj + C:/libs/oldpip/pip_0.4.0_r5/pibitarray.h + C:/libs/oldpip/pip_0.4.0_r5/pibytearray.cpp + C:/libs/oldpip/pip_0.4.0_r5/pibytearray.h + C:/libs/oldpip/pip_0.4.0_r5/pichar.h + C:/libs/oldpip/pip_0.4.0_r5/picontainers.h + C:/libs/oldpip/pip_0.4.0_r5/pideque.h + C:/libs/oldpip/pip_0.4.0_r5/piincludes.h + C:/libs/oldpip/pip_0.4.0_r5/pimap.h + C:/libs/oldpip/pip_0.4.0_r5/pimonitor.h + C:/libs/oldpip/pip_0.4.0_r5/pip_export.h + C:/libs/oldpip/pip_0.4.0_r5/piqueue.h + C:/libs/oldpip/pip_0.4.0_r5/pistack.h + C:/libs/oldpip/pip_0.4.0_r5/pistring.h + C:/libs/oldpip/pip_0.4.0_r5/pivector.h +CMakeFiles/pip.dir/picli.cpp.obj + C:/libs/oldpip/pip_0.4.0_r5/pibitarray.h + C:/libs/oldpip/pip_0.4.0_r5/pibytearray.h + C:/libs/oldpip/pip_0.4.0_r5/pichar.h + C:/libs/oldpip/pip_0.4.0_r5/picli.cpp + C:/libs/oldpip/pip_0.4.0_r5/picli.h + C:/libs/oldpip/pip_0.4.0_r5/picontainers.h + C:/libs/oldpip/pip_0.4.0_r5/pideque.h + C:/libs/oldpip/pip_0.4.0_r5/piincludes.h + C:/libs/oldpip/pip_0.4.0_r5/pimap.h + C:/libs/oldpip/pip_0.4.0_r5/pimath.h + C:/libs/oldpip/pip_0.4.0_r5/pimonitor.h + C:/libs/oldpip/pip_0.4.0_r5/pimutex.h + C:/libs/oldpip/pip_0.4.0_r5/piobject.h + C:/libs/oldpip/pip_0.4.0_r5/pip_export.h + C:/libs/oldpip/pip_0.4.0_r5/piqueue.h + C:/libs/oldpip/pip_0.4.0_r5/pistack.h + C:/libs/oldpip/pip_0.4.0_r5/pistring.h + C:/libs/oldpip/pip_0.4.0_r5/pitime.h + C:/libs/oldpip/pip_0.4.0_r5/pivariant.h + C:/libs/oldpip/pip_0.4.0_r5/pivector.h +CMakeFiles/pip.dir/picodec.cpp.obj + C:/libs/oldpip/pip_0.4.0_r5/pibitarray.h + C:/libs/oldpip/pip_0.4.0_r5/pibytearray.h + C:/libs/oldpip/pip_0.4.0_r5/pichar.h + C:/libs/oldpip/pip_0.4.0_r5/picodec.cpp + C:/libs/oldpip/pip_0.4.0_r5/picodec.h + C:/libs/oldpip/pip_0.4.0_r5/picollection.h + C:/libs/oldpip/pip_0.4.0_r5/picontainers.h + C:/libs/oldpip/pip_0.4.0_r5/pideque.h + C:/libs/oldpip/pip_0.4.0_r5/pifile.h + C:/libs/oldpip/pip_0.4.0_r5/piincludes.h + C:/libs/oldpip/pip_0.4.0_r5/piiodevice.h + C:/libs/oldpip/pip_0.4.0_r5/pimap.h + C:/libs/oldpip/pip_0.4.0_r5/pimath.h + C:/libs/oldpip/pip_0.4.0_r5/pimonitor.h + C:/libs/oldpip/pip_0.4.0_r5/pimutex.h + C:/libs/oldpip/pip_0.4.0_r5/piobject.h + C:/libs/oldpip/pip_0.4.0_r5/pip_export.h + C:/libs/oldpip/pip_0.4.0_r5/piprocess.h + C:/libs/oldpip/pip_0.4.0_r5/piqueue.h + C:/libs/oldpip/pip_0.4.0_r5/pistack.h + C:/libs/oldpip/pip_0.4.0_r5/pistring.h + C:/libs/oldpip/pip_0.4.0_r5/pithread.h + C:/libs/oldpip/pip_0.4.0_r5/pitime.h + C:/libs/oldpip/pip_0.4.0_r5/pitimer.h + C:/libs/oldpip/pip_0.4.0_r5/pivariant.h + C:/libs/oldpip/pip_0.4.0_r5/pivector.h +CMakeFiles/pip.dir/picodeinfo.cpp.obj + C:/libs/oldpip/pip_0.4.0_r5/pibitarray.h + C:/libs/oldpip/pip_0.4.0_r5/pibytearray.h + C:/libs/oldpip/pip_0.4.0_r5/pichar.h + C:/libs/oldpip/pip_0.4.0_r5/picodeinfo.cpp + C:/libs/oldpip/pip_0.4.0_r5/picodeinfo.h + C:/libs/oldpip/pip_0.4.0_r5/picontainers.h + C:/libs/oldpip/pip_0.4.0_r5/pideque.h + C:/libs/oldpip/pip_0.4.0_r5/piincludes.h + C:/libs/oldpip/pip_0.4.0_r5/pimap.h + C:/libs/oldpip/pip_0.4.0_r5/pimonitor.h + C:/libs/oldpip/pip_0.4.0_r5/pip_export.h + C:/libs/oldpip/pip_0.4.0_r5/piqueue.h + C:/libs/oldpip/pip_0.4.0_r5/pistack.h + C:/libs/oldpip/pip_0.4.0_r5/pistring.h + C:/libs/oldpip/pip_0.4.0_r5/pivector.h +CMakeFiles/pip.dir/picodeparser.cpp.obj + C:/libs/oldpip/pip_0.4.0_r5/pibitarray.h + C:/libs/oldpip/pip_0.4.0_r5/pibytearray.h + C:/libs/oldpip/pip_0.4.0_r5/pichar.h + C:/libs/oldpip/pip_0.4.0_r5/picodeparser.cpp + C:/libs/oldpip/pip_0.4.0_r5/picodeparser.h + C:/libs/oldpip/pip_0.4.0_r5/picollection.h + C:/libs/oldpip/pip_0.4.0_r5/picontainers.h + C:/libs/oldpip/pip_0.4.0_r5/pideque.h + C:/libs/oldpip/pip_0.4.0_r5/pievaluator.h + C:/libs/oldpip/pip_0.4.0_r5/pifile.h + C:/libs/oldpip/pip_0.4.0_r5/piincludes.h + C:/libs/oldpip/pip_0.4.0_r5/piiodevice.h + C:/libs/oldpip/pip_0.4.0_r5/pimap.h + C:/libs/oldpip/pip_0.4.0_r5/pimath.h + C:/libs/oldpip/pip_0.4.0_r5/pimonitor.h + C:/libs/oldpip/pip_0.4.0_r5/pimutex.h + C:/libs/oldpip/pip_0.4.0_r5/piobject.h + C:/libs/oldpip/pip_0.4.0_r5/pip_export.h + C:/libs/oldpip/pip_0.4.0_r5/piqueue.h + C:/libs/oldpip/pip_0.4.0_r5/pistack.h + C:/libs/oldpip/pip_0.4.0_r5/pistring.h + C:/libs/oldpip/pip_0.4.0_r5/pithread.h + C:/libs/oldpip/pip_0.4.0_r5/pitime.h + C:/libs/oldpip/pip_0.4.0_r5/pitimer.h + C:/libs/oldpip/pip_0.4.0_r5/pivariant.h + C:/libs/oldpip/pip_0.4.0_r5/pivector.h +CMakeFiles/pip.dir/picollection.cpp.obj + C:/libs/oldpip/pip_0.4.0_r5/pibitarray.h + C:/libs/oldpip/pip_0.4.0_r5/pibytearray.h + C:/libs/oldpip/pip_0.4.0_r5/pichar.h + C:/libs/oldpip/pip_0.4.0_r5/picollection.cpp + C:/libs/oldpip/pip_0.4.0_r5/picollection.h + C:/libs/oldpip/pip_0.4.0_r5/picontainers.h + C:/libs/oldpip/pip_0.4.0_r5/pideque.h + C:/libs/oldpip/pip_0.4.0_r5/piincludes.h + C:/libs/oldpip/pip_0.4.0_r5/pimap.h + C:/libs/oldpip/pip_0.4.0_r5/pimath.h + C:/libs/oldpip/pip_0.4.0_r5/pimonitor.h + C:/libs/oldpip/pip_0.4.0_r5/pimutex.h + C:/libs/oldpip/pip_0.4.0_r5/piobject.h + C:/libs/oldpip/pip_0.4.0_r5/pip_export.h + C:/libs/oldpip/pip_0.4.0_r5/piqueue.h + C:/libs/oldpip/pip_0.4.0_r5/pistack.h + C:/libs/oldpip/pip_0.4.0_r5/pistring.h + C:/libs/oldpip/pip_0.4.0_r5/pitime.h + C:/libs/oldpip/pip_0.4.0_r5/pivariant.h + C:/libs/oldpip/pip_0.4.0_r5/pivector.h +CMakeFiles/pip.dir/piconfig.cpp.obj + C:/libs/oldpip/pip_0.4.0_r5/pibitarray.h + C:/libs/oldpip/pip_0.4.0_r5/pibytearray.h + C:/libs/oldpip/pip_0.4.0_r5/pichar.h + C:/libs/oldpip/pip_0.4.0_r5/picollection.h + C:/libs/oldpip/pip_0.4.0_r5/piconfig.cpp + C:/libs/oldpip/pip_0.4.0_r5/piconfig.h + C:/libs/oldpip/pip_0.4.0_r5/picontainers.h + C:/libs/oldpip/pip_0.4.0_r5/pideque.h + C:/libs/oldpip/pip_0.4.0_r5/pifile.h + C:/libs/oldpip/pip_0.4.0_r5/piincludes.h + C:/libs/oldpip/pip_0.4.0_r5/piiodevice.h + C:/libs/oldpip/pip_0.4.0_r5/pimap.h + C:/libs/oldpip/pip_0.4.0_r5/pimath.h + C:/libs/oldpip/pip_0.4.0_r5/pimonitor.h + C:/libs/oldpip/pip_0.4.0_r5/pimutex.h + C:/libs/oldpip/pip_0.4.0_r5/piobject.h + C:/libs/oldpip/pip_0.4.0_r5/pip_export.h + C:/libs/oldpip/pip_0.4.0_r5/piqueue.h + C:/libs/oldpip/pip_0.4.0_r5/pistack.h + C:/libs/oldpip/pip_0.4.0_r5/pistring.h + C:/libs/oldpip/pip_0.4.0_r5/pithread.h + C:/libs/oldpip/pip_0.4.0_r5/pitime.h + C:/libs/oldpip/pip_0.4.0_r5/pitimer.h + C:/libs/oldpip/pip_0.4.0_r5/pivariant.h + C:/libs/oldpip/pip_0.4.0_r5/pivector.h +CMakeFiles/pip.dir/piconnection.cpp.obj + C:/libs/oldpip/pip_0.4.0_r5/pibitarray.h + C:/libs/oldpip/pip_0.4.0_r5/pibytearray.h + C:/libs/oldpip/pip_0.4.0_r5/pichar.h + C:/libs/oldpip/pip_0.4.0_r5/picollection.h + C:/libs/oldpip/pip_0.4.0_r5/piconfig.h + C:/libs/oldpip/pip_0.4.0_r5/piconnection.cpp + C:/libs/oldpip/pip_0.4.0_r5/piconnection.h + C:/libs/oldpip/pip_0.4.0_r5/picontainers.h + C:/libs/oldpip/pip_0.4.0_r5/pideque.h + C:/libs/oldpip/pip_0.4.0_r5/pifile.h + C:/libs/oldpip/pip_0.4.0_r5/piincludes.h + C:/libs/oldpip/pip_0.4.0_r5/piiodevice.h + C:/libs/oldpip/pip_0.4.0_r5/pimap.h + C:/libs/oldpip/pip_0.4.0_r5/pimath.h + C:/libs/oldpip/pip_0.4.0_r5/pimonitor.h + C:/libs/oldpip/pip_0.4.0_r5/pimutex.h + C:/libs/oldpip/pip_0.4.0_r5/piobject.h + C:/libs/oldpip/pip_0.4.0_r5/pip_export.h + C:/libs/oldpip/pip_0.4.0_r5/pipacketextractor.h + C:/libs/oldpip/pip_0.4.0_r5/piqueue.h + C:/libs/oldpip/pip_0.4.0_r5/pistack.h + C:/libs/oldpip/pip_0.4.0_r5/pistring.h + C:/libs/oldpip/pip_0.4.0_r5/pithread.h + C:/libs/oldpip/pip_0.4.0_r5/pitime.h + C:/libs/oldpip/pip_0.4.0_r5/pitimer.h + C:/libs/oldpip/pip_0.4.0_r5/pivariant.h + C:/libs/oldpip/pip_0.4.0_r5/pivector.h +CMakeFiles/pip.dir/piconsole.cpp.obj + C:/libs/oldpip/pip_0.4.0_r5/pibitarray.h + C:/libs/oldpip/pip_0.4.0_r5/pibytearray.h + C:/libs/oldpip/pip_0.4.0_r5/pichar.h + C:/libs/oldpip/pip_0.4.0_r5/picollection.h + C:/libs/oldpip/pip_0.4.0_r5/piconfig.h + C:/libs/oldpip/pip_0.4.0_r5/piconsole.cpp + C:/libs/oldpip/pip_0.4.0_r5/piconsole.h + C:/libs/oldpip/pip_0.4.0_r5/picontainers.h + C:/libs/oldpip/pip_0.4.0_r5/pideque.h + C:/libs/oldpip/pip_0.4.0_r5/pidiagnostics.h + C:/libs/oldpip/pip_0.4.0_r5/piethernet.h + C:/libs/oldpip/pip_0.4.0_r5/pifile.h + C:/libs/oldpip/pip_0.4.0_r5/piincludes.h + C:/libs/oldpip/pip_0.4.0_r5/piiodevice.h + C:/libs/oldpip/pip_0.4.0_r5/pikbdlistener.h + C:/libs/oldpip/pip_0.4.0_r5/pimap.h + C:/libs/oldpip/pip_0.4.0_r5/pimath.h + C:/libs/oldpip/pip_0.4.0_r5/pimonitor.h + C:/libs/oldpip/pip_0.4.0_r5/pimutex.h + C:/libs/oldpip/pip_0.4.0_r5/piobject.h + C:/libs/oldpip/pip_0.4.0_r5/pip_export.h + C:/libs/oldpip/pip_0.4.0_r5/pipacketextractor.h + C:/libs/oldpip/pip_0.4.0_r5/pipeer.h + C:/libs/oldpip/pip_0.4.0_r5/piprocess.h + C:/libs/oldpip/pip_0.4.0_r5/piprotocol.h + C:/libs/oldpip/pip_0.4.0_r5/piqueue.h + C:/libs/oldpip/pip_0.4.0_r5/piserial.h + C:/libs/oldpip/pip_0.4.0_r5/pistack.h + C:/libs/oldpip/pip_0.4.0_r5/pistring.h + C:/libs/oldpip/pip_0.4.0_r5/pisystemmonitor.h + C:/libs/oldpip/pip_0.4.0_r5/pithread.h + C:/libs/oldpip/pip_0.4.0_r5/pitime.h + C:/libs/oldpip/pip_0.4.0_r5/pitimer.h + C:/libs/oldpip/pip_0.4.0_r5/pivariant.h + C:/libs/oldpip/pip_0.4.0_r5/pivector.h +CMakeFiles/pip.dir/picontainers.cpp.obj + C:/libs/oldpip/pip_0.4.0_r5/picontainers.cpp + C:/libs/oldpip/pip_0.4.0_r5/piincludes.h + C:/libs/oldpip/pip_0.4.0_r5/pimonitor.h + C:/libs/oldpip/pip_0.4.0_r5/pip_export.h + C:/libs/oldpip/pip_0.4.0_r5/pivector.h +CMakeFiles/pip.dir/pidevicepool.cpp.obj + C:/libs/oldpip/pip_0.4.0_r5/pibitarray.h + C:/libs/oldpip/pip_0.4.0_r5/pibytearray.h + C:/libs/oldpip/pip_0.4.0_r5/pichar.h + C:/libs/oldpip/pip_0.4.0_r5/picollection.h + C:/libs/oldpip/pip_0.4.0_r5/picontainers.h + C:/libs/oldpip/pip_0.4.0_r5/pideque.h + C:/libs/oldpip/pip_0.4.0_r5/pidevicepool.cpp + C:/libs/oldpip/pip_0.4.0_r5/pidevicepool.h + C:/libs/oldpip/pip_0.4.0_r5/piincludes.h + C:/libs/oldpip/pip_0.4.0_r5/piiodevice.h + C:/libs/oldpip/pip_0.4.0_r5/pimap.h + C:/libs/oldpip/pip_0.4.0_r5/pimath.h + C:/libs/oldpip/pip_0.4.0_r5/pimonitor.h + C:/libs/oldpip/pip_0.4.0_r5/pimutex.h + C:/libs/oldpip/pip_0.4.0_r5/piobject.h + C:/libs/oldpip/pip_0.4.0_r5/pip_export.h + C:/libs/oldpip/pip_0.4.0_r5/piqueue.h + C:/libs/oldpip/pip_0.4.0_r5/pistack.h + C:/libs/oldpip/pip_0.4.0_r5/pistring.h + C:/libs/oldpip/pip_0.4.0_r5/pithread.h + C:/libs/oldpip/pip_0.4.0_r5/pitime.h + C:/libs/oldpip/pip_0.4.0_r5/pitimer.h + C:/libs/oldpip/pip_0.4.0_r5/pivariant.h + C:/libs/oldpip/pip_0.4.0_r5/pivector.h +CMakeFiles/pip.dir/pidiagnostics.cpp.obj + C:/libs/oldpip/pip_0.4.0_r5/pibitarray.h + C:/libs/oldpip/pip_0.4.0_r5/pibytearray.h + C:/libs/oldpip/pip_0.4.0_r5/pichar.h + C:/libs/oldpip/pip_0.4.0_r5/picontainers.h + C:/libs/oldpip/pip_0.4.0_r5/pideque.h + C:/libs/oldpip/pip_0.4.0_r5/pidiagnostics.cpp + C:/libs/oldpip/pip_0.4.0_r5/pidiagnostics.h + C:/libs/oldpip/pip_0.4.0_r5/piincludes.h + C:/libs/oldpip/pip_0.4.0_r5/pimap.h + C:/libs/oldpip/pip_0.4.0_r5/pimath.h + C:/libs/oldpip/pip_0.4.0_r5/pimonitor.h + C:/libs/oldpip/pip_0.4.0_r5/pimutex.h + C:/libs/oldpip/pip_0.4.0_r5/piobject.h + C:/libs/oldpip/pip_0.4.0_r5/pip_export.h + C:/libs/oldpip/pip_0.4.0_r5/piqueue.h + C:/libs/oldpip/pip_0.4.0_r5/pistack.h + C:/libs/oldpip/pip_0.4.0_r5/pistring.h + C:/libs/oldpip/pip_0.4.0_r5/pithread.h + C:/libs/oldpip/pip_0.4.0_r5/pitime.h + C:/libs/oldpip/pip_0.4.0_r5/pitimer.h + C:/libs/oldpip/pip_0.4.0_r5/pivariant.h + C:/libs/oldpip/pip_0.4.0_r5/pivector.h +CMakeFiles/pip.dir/pidir.cpp.obj + C:/libs/oldpip/pip_0.4.0_r5/pibitarray.h + C:/libs/oldpip/pip_0.4.0_r5/pibytearray.h + C:/libs/oldpip/pip_0.4.0_r5/pichar.h + C:/libs/oldpip/pip_0.4.0_r5/picollection.h + C:/libs/oldpip/pip_0.4.0_r5/picontainers.h + C:/libs/oldpip/pip_0.4.0_r5/pideque.h + C:/libs/oldpip/pip_0.4.0_r5/pidir.cpp + C:/libs/oldpip/pip_0.4.0_r5/pidir.h + C:/libs/oldpip/pip_0.4.0_r5/pifile.h + C:/libs/oldpip/pip_0.4.0_r5/piincludes.h + C:/libs/oldpip/pip_0.4.0_r5/piiodevice.h + C:/libs/oldpip/pip_0.4.0_r5/pimap.h + C:/libs/oldpip/pip_0.4.0_r5/pimath.h + C:/libs/oldpip/pip_0.4.0_r5/pimonitor.h + C:/libs/oldpip/pip_0.4.0_r5/pimutex.h + C:/libs/oldpip/pip_0.4.0_r5/piobject.h + C:/libs/oldpip/pip_0.4.0_r5/pip_export.h + C:/libs/oldpip/pip_0.4.0_r5/piqueue.h + C:/libs/oldpip/pip_0.4.0_r5/pistack.h + C:/libs/oldpip/pip_0.4.0_r5/pistring.h + C:/libs/oldpip/pip_0.4.0_r5/pithread.h + C:/libs/oldpip/pip_0.4.0_r5/pitime.h + C:/libs/oldpip/pip_0.4.0_r5/pitimer.h + C:/libs/oldpip/pip_0.4.0_r5/pivariant.h + C:/libs/oldpip/pip_0.4.0_r5/pivector.h +CMakeFiles/pip.dir/piethernet.cpp.obj + C:/libs/oldpip/pip_0.4.0_r5/pibitarray.h + C:/libs/oldpip/pip_0.4.0_r5/pibytearray.h + C:/libs/oldpip/pip_0.4.0_r5/pichar.h + C:/libs/oldpip/pip_0.4.0_r5/picollection.h + C:/libs/oldpip/pip_0.4.0_r5/piconfig.h + C:/libs/oldpip/pip_0.4.0_r5/picontainers.h + C:/libs/oldpip/pip_0.4.0_r5/pideque.h + C:/libs/oldpip/pip_0.4.0_r5/piethernet.cpp + C:/libs/oldpip/pip_0.4.0_r5/piethernet.h + C:/libs/oldpip/pip_0.4.0_r5/pifile.h + C:/libs/oldpip/pip_0.4.0_r5/piincludes.h + C:/libs/oldpip/pip_0.4.0_r5/piiodevice.h + C:/libs/oldpip/pip_0.4.0_r5/pimap.h + C:/libs/oldpip/pip_0.4.0_r5/pimath.h + C:/libs/oldpip/pip_0.4.0_r5/pimonitor.h + C:/libs/oldpip/pip_0.4.0_r5/pimutex.h + C:/libs/oldpip/pip_0.4.0_r5/piobject.h + C:/libs/oldpip/pip_0.4.0_r5/pip_export.h + C:/libs/oldpip/pip_0.4.0_r5/piprocess.h + C:/libs/oldpip/pip_0.4.0_r5/piqueue.h + C:/libs/oldpip/pip_0.4.0_r5/pistack.h + C:/libs/oldpip/pip_0.4.0_r5/pistring.h + C:/libs/oldpip/pip_0.4.0_r5/pithread.h + C:/libs/oldpip/pip_0.4.0_r5/pitime.h + C:/libs/oldpip/pip_0.4.0_r5/pitimer.h + C:/libs/oldpip/pip_0.4.0_r5/pivariant.h + C:/libs/oldpip/pip_0.4.0_r5/pivector.h +CMakeFiles/pip.dir/pievaluator.cpp.obj + C:/libs/oldpip/pip_0.4.0_r5/pibitarray.h + C:/libs/oldpip/pip_0.4.0_r5/pibytearray.h + C:/libs/oldpip/pip_0.4.0_r5/pichar.h + C:/libs/oldpip/pip_0.4.0_r5/picontainers.h + C:/libs/oldpip/pip_0.4.0_r5/pideque.h + C:/libs/oldpip/pip_0.4.0_r5/pievaluator.cpp + C:/libs/oldpip/pip_0.4.0_r5/pievaluator.h + C:/libs/oldpip/pip_0.4.0_r5/piincludes.h + C:/libs/oldpip/pip_0.4.0_r5/pimap.h + C:/libs/oldpip/pip_0.4.0_r5/pimath.h + C:/libs/oldpip/pip_0.4.0_r5/pimonitor.h + C:/libs/oldpip/pip_0.4.0_r5/pip_export.h + C:/libs/oldpip/pip_0.4.0_r5/piqueue.h + C:/libs/oldpip/pip_0.4.0_r5/pistack.h + C:/libs/oldpip/pip_0.4.0_r5/pistring.h + C:/libs/oldpip/pip_0.4.0_r5/pivector.h +CMakeFiles/pip.dir/pifile.cpp.obj + C:/libs/oldpip/pip_0.4.0_r5/pibitarray.h + C:/libs/oldpip/pip_0.4.0_r5/pibytearray.h + C:/libs/oldpip/pip_0.4.0_r5/pichar.h + C:/libs/oldpip/pip_0.4.0_r5/picollection.h + C:/libs/oldpip/pip_0.4.0_r5/picontainers.h + C:/libs/oldpip/pip_0.4.0_r5/pideque.h + C:/libs/oldpip/pip_0.4.0_r5/pifile.cpp + C:/libs/oldpip/pip_0.4.0_r5/pifile.h + C:/libs/oldpip/pip_0.4.0_r5/piincludes.h + C:/libs/oldpip/pip_0.4.0_r5/piiodevice.h + C:/libs/oldpip/pip_0.4.0_r5/pimap.h + C:/libs/oldpip/pip_0.4.0_r5/pimath.h + C:/libs/oldpip/pip_0.4.0_r5/pimonitor.h + C:/libs/oldpip/pip_0.4.0_r5/pimutex.h + C:/libs/oldpip/pip_0.4.0_r5/piobject.h + C:/libs/oldpip/pip_0.4.0_r5/pip_export.h + C:/libs/oldpip/pip_0.4.0_r5/piqueue.h + C:/libs/oldpip/pip_0.4.0_r5/pistack.h + C:/libs/oldpip/pip_0.4.0_r5/pistring.h + C:/libs/oldpip/pip_0.4.0_r5/pithread.h + C:/libs/oldpip/pip_0.4.0_r5/pitime.h + C:/libs/oldpip/pip_0.4.0_r5/pitimer.h + C:/libs/oldpip/pip_0.4.0_r5/pivariant.h + C:/libs/oldpip/pip_0.4.0_r5/pivector.h +CMakeFiles/pip.dir/piincludes.cpp.obj + C:/libs/oldpip/pip_0.4.0_r5/piconfig.h + C:/libs/oldpip/pip_0.4.0_r5/piconsole.h + C:/libs/oldpip/pip_0.4.0_r5/pidiagnostics.h + C:/libs/oldpip/pip_0.4.0_r5/piethernet.h + C:/libs/oldpip/pip_0.4.0_r5/piincludes.cpp + C:/libs/oldpip/pip_0.4.0_r5/piincludes.h + C:/libs/oldpip/pip_0.4.0_r5/pikbdlistener.h + C:/libs/oldpip/pip_0.4.0_r5/pimonitor.h + C:/libs/oldpip/pip_0.4.0_r5/pip_export.h + C:/libs/oldpip/pip_0.4.0_r5/pipacketextractor.h + C:/libs/oldpip/pip_0.4.0_r5/piprocess.h + C:/libs/oldpip/pip_0.4.0_r5/piprotocol.h + C:/libs/oldpip/pip_0.4.0_r5/pisystemmonitor.h + C:/libs/oldpip/pip_0.4.0_r5/pithread.h + pibinarylog.h + pibitarray.h + pibytearray.h + pichar.h + picli.h + picodec.h + picollection.h + picontainers.h + picrc.h + pideque.h + pievaluator.h + pifile.h + piiodevice.h + pimap.h + pimath.h + pimultiprotocol.h + pimutex.h + piobject.h + pip.h + pipeer.h + piqueue.h + piserial.h + pisignals.h + pistack.h + pistatemachine.h + pistring.h + pitime.h + pitimer.h + piusb.h + pivariant.h + pivector.h +CMakeFiles/pip.dir/piiodevice.cpp.obj + C:/libs/oldpip/pip_0.4.0_r5/pibitarray.h + C:/libs/oldpip/pip_0.4.0_r5/pibytearray.h + C:/libs/oldpip/pip_0.4.0_r5/pichar.h + C:/libs/oldpip/pip_0.4.0_r5/picollection.h + C:/libs/oldpip/pip_0.4.0_r5/piconfig.h + C:/libs/oldpip/pip_0.4.0_r5/picontainers.h + C:/libs/oldpip/pip_0.4.0_r5/pideque.h + C:/libs/oldpip/pip_0.4.0_r5/pifile.h + C:/libs/oldpip/pip_0.4.0_r5/piincludes.h + C:/libs/oldpip/pip_0.4.0_r5/piiodevice.cpp + C:/libs/oldpip/pip_0.4.0_r5/piiodevice.h + C:/libs/oldpip/pip_0.4.0_r5/pimap.h + C:/libs/oldpip/pip_0.4.0_r5/pimath.h + C:/libs/oldpip/pip_0.4.0_r5/pimonitor.h + C:/libs/oldpip/pip_0.4.0_r5/pimutex.h + C:/libs/oldpip/pip_0.4.0_r5/piobject.h + C:/libs/oldpip/pip_0.4.0_r5/pip_export.h + C:/libs/oldpip/pip_0.4.0_r5/piqueue.h + C:/libs/oldpip/pip_0.4.0_r5/pistack.h + C:/libs/oldpip/pip_0.4.0_r5/pistring.h + C:/libs/oldpip/pip_0.4.0_r5/pithread.h + C:/libs/oldpip/pip_0.4.0_r5/pitime.h + C:/libs/oldpip/pip_0.4.0_r5/pitimer.h + C:/libs/oldpip/pip_0.4.0_r5/pivariant.h + C:/libs/oldpip/pip_0.4.0_r5/pivector.h +CMakeFiles/pip.dir/pikbdlistener.cpp.obj + C:/libs/oldpip/pip_0.4.0_r5/pibitarray.h + C:/libs/oldpip/pip_0.4.0_r5/pibytearray.h + C:/libs/oldpip/pip_0.4.0_r5/pichar.h + C:/libs/oldpip/pip_0.4.0_r5/picontainers.h + C:/libs/oldpip/pip_0.4.0_r5/pideque.h + C:/libs/oldpip/pip_0.4.0_r5/piincludes.h + C:/libs/oldpip/pip_0.4.0_r5/pikbdlistener.cpp + C:/libs/oldpip/pip_0.4.0_r5/pikbdlistener.h + C:/libs/oldpip/pip_0.4.0_r5/pimap.h + C:/libs/oldpip/pip_0.4.0_r5/pimath.h + C:/libs/oldpip/pip_0.4.0_r5/pimonitor.h + C:/libs/oldpip/pip_0.4.0_r5/pimutex.h + C:/libs/oldpip/pip_0.4.0_r5/piobject.h + C:/libs/oldpip/pip_0.4.0_r5/pip_export.h + C:/libs/oldpip/pip_0.4.0_r5/piqueue.h + C:/libs/oldpip/pip_0.4.0_r5/pistack.h + C:/libs/oldpip/pip_0.4.0_r5/pistring.h + C:/libs/oldpip/pip_0.4.0_r5/pithread.h + C:/libs/oldpip/pip_0.4.0_r5/pitime.h + C:/libs/oldpip/pip_0.4.0_r5/pivariant.h + C:/libs/oldpip/pip_0.4.0_r5/pivector.h +CMakeFiles/pip.dir/pimath.cpp.obj + C:/libs/oldpip/pip_0.4.0_r5/pibitarray.h + C:/libs/oldpip/pip_0.4.0_r5/pibytearray.h + C:/libs/oldpip/pip_0.4.0_r5/picontainers.h + C:/libs/oldpip/pip_0.4.0_r5/pideque.h + C:/libs/oldpip/pip_0.4.0_r5/piincludes.h + C:/libs/oldpip/pip_0.4.0_r5/pimap.h + C:/libs/oldpip/pip_0.4.0_r5/pimath.cpp + C:/libs/oldpip/pip_0.4.0_r5/pimath.h + C:/libs/oldpip/pip_0.4.0_r5/pimonitor.h + C:/libs/oldpip/pip_0.4.0_r5/pip_export.h + C:/libs/oldpip/pip_0.4.0_r5/piqueue.h + C:/libs/oldpip/pip_0.4.0_r5/pistack.h + C:/libs/oldpip/pip_0.4.0_r5/pivector.h +CMakeFiles/pip.dir/pimonitor.cpp.obj + C:/libs/oldpip/pip_0.4.0_r5/pimonitor.cpp + C:/libs/oldpip/pip_0.4.0_r5/pimonitor.h + C:/libs/oldpip/pip_0.4.0_r5/pip_export.h +CMakeFiles/pip.dir/pimultiprotocol.cpp.obj + C:/libs/oldpip/pip_0.4.0_r5/pibitarray.h + C:/libs/oldpip/pip_0.4.0_r5/pibytearray.h + C:/libs/oldpip/pip_0.4.0_r5/pichar.h + C:/libs/oldpip/pip_0.4.0_r5/picollection.h + C:/libs/oldpip/pip_0.4.0_r5/piconfig.h + C:/libs/oldpip/pip_0.4.0_r5/picontainers.h + C:/libs/oldpip/pip_0.4.0_r5/pideque.h + C:/libs/oldpip/pip_0.4.0_r5/piethernet.h + C:/libs/oldpip/pip_0.4.0_r5/pifile.h + C:/libs/oldpip/pip_0.4.0_r5/piincludes.h + C:/libs/oldpip/pip_0.4.0_r5/piiodevice.h + C:/libs/oldpip/pip_0.4.0_r5/pimap.h + C:/libs/oldpip/pip_0.4.0_r5/pimath.h + C:/libs/oldpip/pip_0.4.0_r5/pimonitor.h + C:/libs/oldpip/pip_0.4.0_r5/pimultiprotocol.cpp + C:/libs/oldpip/pip_0.4.0_r5/pimultiprotocol.h + C:/libs/oldpip/pip_0.4.0_r5/pimutex.h + C:/libs/oldpip/pip_0.4.0_r5/piobject.h + C:/libs/oldpip/pip_0.4.0_r5/pip_export.h + C:/libs/oldpip/pip_0.4.0_r5/pipacketextractor.h + C:/libs/oldpip/pip_0.4.0_r5/piprocess.h + C:/libs/oldpip/pip_0.4.0_r5/piprotocol.h + C:/libs/oldpip/pip_0.4.0_r5/piqueue.h + C:/libs/oldpip/pip_0.4.0_r5/piserial.h + C:/libs/oldpip/pip_0.4.0_r5/pistack.h + C:/libs/oldpip/pip_0.4.0_r5/pistring.h + C:/libs/oldpip/pip_0.4.0_r5/pithread.h + C:/libs/oldpip/pip_0.4.0_r5/pitime.h + C:/libs/oldpip/pip_0.4.0_r5/pitimer.h + C:/libs/oldpip/pip_0.4.0_r5/pivariant.h + C:/libs/oldpip/pip_0.4.0_r5/pivector.h +CMakeFiles/pip.dir/pimutex.cpp.obj + C:/libs/oldpip/pip_0.4.0_r5/piincludes.h + C:/libs/oldpip/pip_0.4.0_r5/pimonitor.h + C:/libs/oldpip/pip_0.4.0_r5/pimutex.cpp + C:/libs/oldpip/pip_0.4.0_r5/pimutex.h + C:/libs/oldpip/pip_0.4.0_r5/pip_export.h +CMakeFiles/pip.dir/piobject.cpp.obj + C:/libs/oldpip/pip_0.4.0_r5/pibitarray.h + C:/libs/oldpip/pip_0.4.0_r5/pibytearray.h + C:/libs/oldpip/pip_0.4.0_r5/pichar.h + C:/libs/oldpip/pip_0.4.0_r5/picontainers.h + C:/libs/oldpip/pip_0.4.0_r5/pideque.h + C:/libs/oldpip/pip_0.4.0_r5/piincludes.h + C:/libs/oldpip/pip_0.4.0_r5/pimap.h + C:/libs/oldpip/pip_0.4.0_r5/pimath.h + C:/libs/oldpip/pip_0.4.0_r5/pimonitor.h + C:/libs/oldpip/pip_0.4.0_r5/pimutex.h + C:/libs/oldpip/pip_0.4.0_r5/piobject.cpp + C:/libs/oldpip/pip_0.4.0_r5/piobject.h + C:/libs/oldpip/pip_0.4.0_r5/pip_export.h + C:/libs/oldpip/pip_0.4.0_r5/piqueue.h + C:/libs/oldpip/pip_0.4.0_r5/pistack.h + C:/libs/oldpip/pip_0.4.0_r5/pistring.h + C:/libs/oldpip/pip_0.4.0_r5/pitime.h + C:/libs/oldpip/pip_0.4.0_r5/pivariant.h + C:/libs/oldpip/pip_0.4.0_r5/pivector.h +CMakeFiles/pip.dir/pipacketextractor.cpp.obj + C:/libs/oldpip/pip_0.4.0_r5/pibitarray.h + C:/libs/oldpip/pip_0.4.0_r5/pibytearray.h + C:/libs/oldpip/pip_0.4.0_r5/pichar.h + C:/libs/oldpip/pip_0.4.0_r5/picollection.h + C:/libs/oldpip/pip_0.4.0_r5/picontainers.h + C:/libs/oldpip/pip_0.4.0_r5/pideque.h + C:/libs/oldpip/pip_0.4.0_r5/piincludes.h + C:/libs/oldpip/pip_0.4.0_r5/piiodevice.h + C:/libs/oldpip/pip_0.4.0_r5/pimap.h + C:/libs/oldpip/pip_0.4.0_r5/pimath.h + C:/libs/oldpip/pip_0.4.0_r5/pimonitor.h + C:/libs/oldpip/pip_0.4.0_r5/pimutex.h + C:/libs/oldpip/pip_0.4.0_r5/piobject.h + C:/libs/oldpip/pip_0.4.0_r5/pip_export.h + C:/libs/oldpip/pip_0.4.0_r5/pipacketextractor.cpp + C:/libs/oldpip/pip_0.4.0_r5/pipacketextractor.h + C:/libs/oldpip/pip_0.4.0_r5/piqueue.h + C:/libs/oldpip/pip_0.4.0_r5/pistack.h + C:/libs/oldpip/pip_0.4.0_r5/pistring.h + C:/libs/oldpip/pip_0.4.0_r5/pithread.h + C:/libs/oldpip/pip_0.4.0_r5/pitime.h + C:/libs/oldpip/pip_0.4.0_r5/pitimer.h + C:/libs/oldpip/pip_0.4.0_r5/pivariant.h + C:/libs/oldpip/pip_0.4.0_r5/pivector.h +CMakeFiles/pip.dir/pipeer.cpp.obj + C:/libs/oldpip/pip_0.4.0_r5/pibitarray.h + C:/libs/oldpip/pip_0.4.0_r5/pibytearray.h + C:/libs/oldpip/pip_0.4.0_r5/pichar.h + C:/libs/oldpip/pip_0.4.0_r5/picollection.h + C:/libs/oldpip/pip_0.4.0_r5/picontainers.h + C:/libs/oldpip/pip_0.4.0_r5/pideque.h + C:/libs/oldpip/pip_0.4.0_r5/pidiagnostics.h + C:/libs/oldpip/pip_0.4.0_r5/piethernet.h + C:/libs/oldpip/pip_0.4.0_r5/pifile.h + C:/libs/oldpip/pip_0.4.0_r5/piincludes.h + C:/libs/oldpip/pip_0.4.0_r5/piiodevice.h + C:/libs/oldpip/pip_0.4.0_r5/pimap.h + C:/libs/oldpip/pip_0.4.0_r5/pimath.h + C:/libs/oldpip/pip_0.4.0_r5/pimonitor.h + C:/libs/oldpip/pip_0.4.0_r5/pimutex.h + C:/libs/oldpip/pip_0.4.0_r5/piobject.h + C:/libs/oldpip/pip_0.4.0_r5/pip_export.h + C:/libs/oldpip/pip_0.4.0_r5/pipeer.cpp + C:/libs/oldpip/pip_0.4.0_r5/pipeer.h + C:/libs/oldpip/pip_0.4.0_r5/piprocess.h + C:/libs/oldpip/pip_0.4.0_r5/piqueue.h + C:/libs/oldpip/pip_0.4.0_r5/pistack.h + C:/libs/oldpip/pip_0.4.0_r5/pistring.h + C:/libs/oldpip/pip_0.4.0_r5/pithread.h + C:/libs/oldpip/pip_0.4.0_r5/pitime.h + C:/libs/oldpip/pip_0.4.0_r5/pitimer.h + C:/libs/oldpip/pip_0.4.0_r5/pivariant.h + C:/libs/oldpip/pip_0.4.0_r5/pivector.h +CMakeFiles/pip.dir/piprocess.cpp.obj + C:/libs/oldpip/pip_0.4.0_r5/pibitarray.h + C:/libs/oldpip/pip_0.4.0_r5/pibytearray.h + C:/libs/oldpip/pip_0.4.0_r5/pichar.h + C:/libs/oldpip/pip_0.4.0_r5/picollection.h + C:/libs/oldpip/pip_0.4.0_r5/picontainers.h + C:/libs/oldpip/pip_0.4.0_r5/pideque.h + C:/libs/oldpip/pip_0.4.0_r5/pifile.h + C:/libs/oldpip/pip_0.4.0_r5/piincludes.h + C:/libs/oldpip/pip_0.4.0_r5/piiodevice.h + C:/libs/oldpip/pip_0.4.0_r5/pimap.h + C:/libs/oldpip/pip_0.4.0_r5/pimath.h + C:/libs/oldpip/pip_0.4.0_r5/pimonitor.h + C:/libs/oldpip/pip_0.4.0_r5/pimutex.h + C:/libs/oldpip/pip_0.4.0_r5/piobject.h + C:/libs/oldpip/pip_0.4.0_r5/pip_export.h + C:/libs/oldpip/pip_0.4.0_r5/piprocess.cpp + C:/libs/oldpip/pip_0.4.0_r5/piprocess.h + C:/libs/oldpip/pip_0.4.0_r5/piqueue.h + C:/libs/oldpip/pip_0.4.0_r5/pistack.h + C:/libs/oldpip/pip_0.4.0_r5/pistring.h + C:/libs/oldpip/pip_0.4.0_r5/pithread.h + C:/libs/oldpip/pip_0.4.0_r5/pitime.h + C:/libs/oldpip/pip_0.4.0_r5/pitimer.h + C:/libs/oldpip/pip_0.4.0_r5/pivariant.h + C:/libs/oldpip/pip_0.4.0_r5/pivector.h +CMakeFiles/pip.dir/piprotocol.cpp.obj + C:/libs/oldpip/pip_0.4.0_r5/pibitarray.h + C:/libs/oldpip/pip_0.4.0_r5/pibytearray.h + C:/libs/oldpip/pip_0.4.0_r5/pichar.h + C:/libs/oldpip/pip_0.4.0_r5/picollection.h + C:/libs/oldpip/pip_0.4.0_r5/piconfig.h + C:/libs/oldpip/pip_0.4.0_r5/picontainers.h + C:/libs/oldpip/pip_0.4.0_r5/pideque.h + C:/libs/oldpip/pip_0.4.0_r5/piethernet.h + C:/libs/oldpip/pip_0.4.0_r5/pifile.h + C:/libs/oldpip/pip_0.4.0_r5/piincludes.h + C:/libs/oldpip/pip_0.4.0_r5/piiodevice.h + C:/libs/oldpip/pip_0.4.0_r5/pimap.h + C:/libs/oldpip/pip_0.4.0_r5/pimath.h + C:/libs/oldpip/pip_0.4.0_r5/pimonitor.h + C:/libs/oldpip/pip_0.4.0_r5/pimutex.h + C:/libs/oldpip/pip_0.4.0_r5/piobject.h + C:/libs/oldpip/pip_0.4.0_r5/pip_export.h + C:/libs/oldpip/pip_0.4.0_r5/pipacketextractor.h + C:/libs/oldpip/pip_0.4.0_r5/piprocess.h + C:/libs/oldpip/pip_0.4.0_r5/piprotocol.cpp + C:/libs/oldpip/pip_0.4.0_r5/piprotocol.h + C:/libs/oldpip/pip_0.4.0_r5/piqueue.h + C:/libs/oldpip/pip_0.4.0_r5/piserial.h + C:/libs/oldpip/pip_0.4.0_r5/pistack.h + C:/libs/oldpip/pip_0.4.0_r5/pistring.h + C:/libs/oldpip/pip_0.4.0_r5/pithread.h + C:/libs/oldpip/pip_0.4.0_r5/pitime.h + C:/libs/oldpip/pip_0.4.0_r5/pitimer.h + C:/libs/oldpip/pip_0.4.0_r5/pivariant.h + C:/libs/oldpip/pip_0.4.0_r5/pivector.h +CMakeFiles/pip.dir/piserial.cpp.obj + C:/libs/oldpip/pip_0.4.0_r5/pibitarray.h + C:/libs/oldpip/pip_0.4.0_r5/pibytearray.h + C:/libs/oldpip/pip_0.4.0_r5/pichar.h + C:/libs/oldpip/pip_0.4.0_r5/picollection.h + C:/libs/oldpip/pip_0.4.0_r5/piconfig.h + C:/libs/oldpip/pip_0.4.0_r5/picontainers.h + C:/libs/oldpip/pip_0.4.0_r5/pideque.h + C:/libs/oldpip/pip_0.4.0_r5/pidir.h + C:/libs/oldpip/pip_0.4.0_r5/pifile.h + C:/libs/oldpip/pip_0.4.0_r5/piincludes.h + C:/libs/oldpip/pip_0.4.0_r5/piiodevice.h + C:/libs/oldpip/pip_0.4.0_r5/pimap.h + C:/libs/oldpip/pip_0.4.0_r5/pimath.h + C:/libs/oldpip/pip_0.4.0_r5/pimonitor.h + C:/libs/oldpip/pip_0.4.0_r5/pimutex.h + C:/libs/oldpip/pip_0.4.0_r5/piobject.h + C:/libs/oldpip/pip_0.4.0_r5/pip_export.h + C:/libs/oldpip/pip_0.4.0_r5/piqueue.h + C:/libs/oldpip/pip_0.4.0_r5/piserial.cpp + C:/libs/oldpip/pip_0.4.0_r5/piserial.h + C:/libs/oldpip/pip_0.4.0_r5/pistack.h + C:/libs/oldpip/pip_0.4.0_r5/pistring.h + C:/libs/oldpip/pip_0.4.0_r5/pithread.h + C:/libs/oldpip/pip_0.4.0_r5/pitime.h + C:/libs/oldpip/pip_0.4.0_r5/pitimer.h + C:/libs/oldpip/pip_0.4.0_r5/pivariant.h + C:/libs/oldpip/pip_0.4.0_r5/pivector.h +CMakeFiles/pip.dir/pisignals.cpp.obj + C:/libs/oldpip/pip_0.4.0_r5/picontainers.h + C:/libs/oldpip/pip_0.4.0_r5/pideque.h + C:/libs/oldpip/pip_0.4.0_r5/piincludes.h + C:/libs/oldpip/pip_0.4.0_r5/pimap.h + C:/libs/oldpip/pip_0.4.0_r5/pimonitor.h + C:/libs/oldpip/pip_0.4.0_r5/pip_export.h + C:/libs/oldpip/pip_0.4.0_r5/piqueue.h + C:/libs/oldpip/pip_0.4.0_r5/pisignals.cpp + C:/libs/oldpip/pip_0.4.0_r5/pisignals.h + C:/libs/oldpip/pip_0.4.0_r5/pistack.h + C:/libs/oldpip/pip_0.4.0_r5/pivector.h +CMakeFiles/pip.dir/pistring.cpp.obj + C:/libs/oldpip/pip_0.4.0_r5/pibitarray.h + C:/libs/oldpip/pip_0.4.0_r5/pibytearray.h + C:/libs/oldpip/pip_0.4.0_r5/pichar.h + C:/libs/oldpip/pip_0.4.0_r5/picontainers.h + C:/libs/oldpip/pip_0.4.0_r5/pideque.h + C:/libs/oldpip/pip_0.4.0_r5/piincludes.h + C:/libs/oldpip/pip_0.4.0_r5/pimap.h + C:/libs/oldpip/pip_0.4.0_r5/pimonitor.h + C:/libs/oldpip/pip_0.4.0_r5/pip_export.h + C:/libs/oldpip/pip_0.4.0_r5/piqueue.h + C:/libs/oldpip/pip_0.4.0_r5/pistack.h + C:/libs/oldpip/pip_0.4.0_r5/pistring.cpp + C:/libs/oldpip/pip_0.4.0_r5/pistring.h + C:/libs/oldpip/pip_0.4.0_r5/pivector.h +CMakeFiles/pip.dir/pisystemmonitor.cpp.obj + C:/libs/oldpip/pip_0.4.0_r5/pibitarray.h + C:/libs/oldpip/pip_0.4.0_r5/pibytearray.h + C:/libs/oldpip/pip_0.4.0_r5/pichar.h + C:/libs/oldpip/pip_0.4.0_r5/picollection.h + C:/libs/oldpip/pip_0.4.0_r5/picontainers.h + C:/libs/oldpip/pip_0.4.0_r5/pideque.h + C:/libs/oldpip/pip_0.4.0_r5/pifile.h + C:/libs/oldpip/pip_0.4.0_r5/piincludes.h + C:/libs/oldpip/pip_0.4.0_r5/piiodevice.h + C:/libs/oldpip/pip_0.4.0_r5/pimap.h + C:/libs/oldpip/pip_0.4.0_r5/pimath.h + C:/libs/oldpip/pip_0.4.0_r5/pimonitor.h + C:/libs/oldpip/pip_0.4.0_r5/pimutex.h + C:/libs/oldpip/pip_0.4.0_r5/piobject.h + C:/libs/oldpip/pip_0.4.0_r5/pip_export.h + C:/libs/oldpip/pip_0.4.0_r5/piprocess.h + C:/libs/oldpip/pip_0.4.0_r5/piqueue.h + C:/libs/oldpip/pip_0.4.0_r5/pistack.h + C:/libs/oldpip/pip_0.4.0_r5/pistring.h + C:/libs/oldpip/pip_0.4.0_r5/pisystemmonitor.cpp + C:/libs/oldpip/pip_0.4.0_r5/pisystemmonitor.h + C:/libs/oldpip/pip_0.4.0_r5/pithread.h + C:/libs/oldpip/pip_0.4.0_r5/pitime.h + C:/libs/oldpip/pip_0.4.0_r5/pitimer.h + C:/libs/oldpip/pip_0.4.0_r5/pivariant.h + C:/libs/oldpip/pip_0.4.0_r5/pivector.h +CMakeFiles/pip.dir/pisystemtests.cpp.obj + C:/libs/oldpip/pip_0.4.0_r5/pibitarray.h + C:/libs/oldpip/pip_0.4.0_r5/pibytearray.h + C:/libs/oldpip/pip_0.4.0_r5/pichar.h + C:/libs/oldpip/pip_0.4.0_r5/picollection.h + C:/libs/oldpip/pip_0.4.0_r5/piconfig.h + C:/libs/oldpip/pip_0.4.0_r5/picontainers.h + C:/libs/oldpip/pip_0.4.0_r5/pideque.h + C:/libs/oldpip/pip_0.4.0_r5/pifile.h + C:/libs/oldpip/pip_0.4.0_r5/piincludes.h + C:/libs/oldpip/pip_0.4.0_r5/piiodevice.h + C:/libs/oldpip/pip_0.4.0_r5/pimap.h + C:/libs/oldpip/pip_0.4.0_r5/pimath.h + C:/libs/oldpip/pip_0.4.0_r5/pimonitor.h + C:/libs/oldpip/pip_0.4.0_r5/pimutex.h + C:/libs/oldpip/pip_0.4.0_r5/piobject.h + C:/libs/oldpip/pip_0.4.0_r5/pip_export.h + C:/libs/oldpip/pip_0.4.0_r5/piqueue.h + C:/libs/oldpip/pip_0.4.0_r5/pistack.h + C:/libs/oldpip/pip_0.4.0_r5/pistring.h + C:/libs/oldpip/pip_0.4.0_r5/pisystemtests.cpp + C:/libs/oldpip/pip_0.4.0_r5/pisystemtests.h + C:/libs/oldpip/pip_0.4.0_r5/pithread.h + C:/libs/oldpip/pip_0.4.0_r5/pitime.h + C:/libs/oldpip/pip_0.4.0_r5/pitimer.h + C:/libs/oldpip/pip_0.4.0_r5/pivariant.h + C:/libs/oldpip/pip_0.4.0_r5/pivector.h +CMakeFiles/pip.dir/pithread.cpp.obj + C:/libs/oldpip/pip_0.4.0_r5/pibitarray.h + C:/libs/oldpip/pip_0.4.0_r5/pibytearray.h + C:/libs/oldpip/pip_0.4.0_r5/pichar.h + C:/libs/oldpip/pip_0.4.0_r5/picollection.h + C:/libs/oldpip/pip_0.4.0_r5/piconfig.h + C:/libs/oldpip/pip_0.4.0_r5/picontainers.h + C:/libs/oldpip/pip_0.4.0_r5/pideque.h + C:/libs/oldpip/pip_0.4.0_r5/pifile.h + C:/libs/oldpip/pip_0.4.0_r5/piincludes.h + C:/libs/oldpip/pip_0.4.0_r5/piiodevice.h + C:/libs/oldpip/pip_0.4.0_r5/pimap.h + C:/libs/oldpip/pip_0.4.0_r5/pimath.h + C:/libs/oldpip/pip_0.4.0_r5/pimonitor.h + C:/libs/oldpip/pip_0.4.0_r5/pimutex.h + C:/libs/oldpip/pip_0.4.0_r5/piobject.h + C:/libs/oldpip/pip_0.4.0_r5/pip_export.h + C:/libs/oldpip/pip_0.4.0_r5/piqueue.h + C:/libs/oldpip/pip_0.4.0_r5/pistack.h + C:/libs/oldpip/pip_0.4.0_r5/pistring.h + C:/libs/oldpip/pip_0.4.0_r5/pisystemtests.h + C:/libs/oldpip/pip_0.4.0_r5/pithread.cpp + C:/libs/oldpip/pip_0.4.0_r5/pithread.h + C:/libs/oldpip/pip_0.4.0_r5/pitime.h + C:/libs/oldpip/pip_0.4.0_r5/pitimer.h + C:/libs/oldpip/pip_0.4.0_r5/pivariant.h + C:/libs/oldpip/pip_0.4.0_r5/pivector.h +CMakeFiles/pip.dir/pitime.cpp.obj + C:/libs/oldpip/pip_0.4.0_r5/pibitarray.h + C:/libs/oldpip/pip_0.4.0_r5/pibytearray.h + C:/libs/oldpip/pip_0.4.0_r5/pichar.h + C:/libs/oldpip/pip_0.4.0_r5/picollection.h + C:/libs/oldpip/pip_0.4.0_r5/piconfig.h + C:/libs/oldpip/pip_0.4.0_r5/picontainers.h + C:/libs/oldpip/pip_0.4.0_r5/pideque.h + C:/libs/oldpip/pip_0.4.0_r5/pifile.h + C:/libs/oldpip/pip_0.4.0_r5/piincludes.h + C:/libs/oldpip/pip_0.4.0_r5/piiodevice.h + C:/libs/oldpip/pip_0.4.0_r5/pimap.h + C:/libs/oldpip/pip_0.4.0_r5/pimath.h + C:/libs/oldpip/pip_0.4.0_r5/pimonitor.h + C:/libs/oldpip/pip_0.4.0_r5/pimutex.h + C:/libs/oldpip/pip_0.4.0_r5/piobject.h + C:/libs/oldpip/pip_0.4.0_r5/pip_export.h + C:/libs/oldpip/pip_0.4.0_r5/piqueue.h + C:/libs/oldpip/pip_0.4.0_r5/pistack.h + C:/libs/oldpip/pip_0.4.0_r5/pistring.h + C:/libs/oldpip/pip_0.4.0_r5/pisystemtests.h + C:/libs/oldpip/pip_0.4.0_r5/pithread.h + C:/libs/oldpip/pip_0.4.0_r5/pitime.cpp + C:/libs/oldpip/pip_0.4.0_r5/pitime.h + C:/libs/oldpip/pip_0.4.0_r5/pitimer.h + C:/libs/oldpip/pip_0.4.0_r5/pivariant.h + C:/libs/oldpip/pip_0.4.0_r5/pivector.h +CMakeFiles/pip.dir/pitimer.cpp.obj + C:/libs/oldpip/pip_0.4.0_r5/pibitarray.h + C:/libs/oldpip/pip_0.4.0_r5/pibytearray.h + C:/libs/oldpip/pip_0.4.0_r5/pichar.h + C:/libs/oldpip/pip_0.4.0_r5/picollection.h + C:/libs/oldpip/pip_0.4.0_r5/piconfig.h + C:/libs/oldpip/pip_0.4.0_r5/picontainers.h + C:/libs/oldpip/pip_0.4.0_r5/pideque.h + C:/libs/oldpip/pip_0.4.0_r5/pifile.h + C:/libs/oldpip/pip_0.4.0_r5/piincludes.h + C:/libs/oldpip/pip_0.4.0_r5/piiodevice.h + C:/libs/oldpip/pip_0.4.0_r5/pimap.h + C:/libs/oldpip/pip_0.4.0_r5/pimath.h + C:/libs/oldpip/pip_0.4.0_r5/pimonitor.h + C:/libs/oldpip/pip_0.4.0_r5/pimutex.h + C:/libs/oldpip/pip_0.4.0_r5/piobject.h + C:/libs/oldpip/pip_0.4.0_r5/pip_export.h + C:/libs/oldpip/pip_0.4.0_r5/piqueue.h + C:/libs/oldpip/pip_0.4.0_r5/pistack.h + C:/libs/oldpip/pip_0.4.0_r5/pistring.h + C:/libs/oldpip/pip_0.4.0_r5/pisystemtests.h + C:/libs/oldpip/pip_0.4.0_r5/pithread.h + C:/libs/oldpip/pip_0.4.0_r5/pitime.h + C:/libs/oldpip/pip_0.4.0_r5/pitimer.cpp + C:/libs/oldpip/pip_0.4.0_r5/pitimer.h + C:/libs/oldpip/pip_0.4.0_r5/pivariant.h + C:/libs/oldpip/pip_0.4.0_r5/pivector.h +CMakeFiles/pip.dir/piusb.cpp.obj + C:/libs/oldpip/pip_0.4.0_r5/pibitarray.h + C:/libs/oldpip/pip_0.4.0_r5/pibytearray.h + C:/libs/oldpip/pip_0.4.0_r5/pichar.h + C:/libs/oldpip/pip_0.4.0_r5/picollection.h + C:/libs/oldpip/pip_0.4.0_r5/piconfig.h + C:/libs/oldpip/pip_0.4.0_r5/picontainers.h + C:/libs/oldpip/pip_0.4.0_r5/pideque.h + C:/libs/oldpip/pip_0.4.0_r5/pifile.h + C:/libs/oldpip/pip_0.4.0_r5/piincludes.h + C:/libs/oldpip/pip_0.4.0_r5/piiodevice.h + C:/libs/oldpip/pip_0.4.0_r5/pimap.h + C:/libs/oldpip/pip_0.4.0_r5/pimath.h + C:/libs/oldpip/pip_0.4.0_r5/pimonitor.h + C:/libs/oldpip/pip_0.4.0_r5/pimutex.h + C:/libs/oldpip/pip_0.4.0_r5/piobject.h + C:/libs/oldpip/pip_0.4.0_r5/pip_export.h + C:/libs/oldpip/pip_0.4.0_r5/piqueue.h + C:/libs/oldpip/pip_0.4.0_r5/pistack.h + C:/libs/oldpip/pip_0.4.0_r5/pistring.h + C:/libs/oldpip/pip_0.4.0_r5/pithread.h + C:/libs/oldpip/pip_0.4.0_r5/pitime.h + C:/libs/oldpip/pip_0.4.0_r5/pitimer.h + C:/libs/oldpip/pip_0.4.0_r5/piusb.cpp + C:/libs/oldpip/pip_0.4.0_r5/piusb.h + C:/libs/oldpip/pip_0.4.0_r5/pivariant.h + C:/libs/oldpip/pip_0.4.0_r5/pivector.h +CMakeFiles/pip.dir/pivariant.cpp.obj + C:/libs/oldpip/pip_0.4.0_r5/pibitarray.h + C:/libs/oldpip/pip_0.4.0_r5/pibytearray.h + C:/libs/oldpip/pip_0.4.0_r5/pichar.h + C:/libs/oldpip/pip_0.4.0_r5/picontainers.h + C:/libs/oldpip/pip_0.4.0_r5/pideque.h + C:/libs/oldpip/pip_0.4.0_r5/piincludes.h + C:/libs/oldpip/pip_0.4.0_r5/pimap.h + C:/libs/oldpip/pip_0.4.0_r5/pimath.h + C:/libs/oldpip/pip_0.4.0_r5/pimonitor.h + C:/libs/oldpip/pip_0.4.0_r5/pip_export.h + C:/libs/oldpip/pip_0.4.0_r5/piqueue.h + C:/libs/oldpip/pip_0.4.0_r5/pistack.h + C:/libs/oldpip/pip_0.4.0_r5/pistring.h + C:/libs/oldpip/pip_0.4.0_r5/pitime.h + C:/libs/oldpip/pip_0.4.0_r5/pivariant.cpp + C:/libs/oldpip/pip_0.4.0_r5/pivariant.h + C:/libs/oldpip/pip_0.4.0_r5/pivector.h diff --git a/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/depend.make b/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/depend.make new file mode 100644 index 0000000..cf98df7 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/depend.make @@ -0,0 +1,912 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "MinGW Makefiles" Generator, CMake Version 2.8 + +CMakeFiles/pip.dir/pibinarylog.cpp.obj: pibinarylog.cpp +CMakeFiles/pip.dir/pibinarylog.cpp.obj: pibinarylog.h +CMakeFiles/pip.dir/pibinarylog.cpp.obj: pibitarray.h +CMakeFiles/pip.dir/pibinarylog.cpp.obj: pibytearray.h +CMakeFiles/pip.dir/pibinarylog.cpp.obj: pichar.h +CMakeFiles/pip.dir/pibinarylog.cpp.obj: picollection.h +CMakeFiles/pip.dir/pibinarylog.cpp.obj: picontainers.h +CMakeFiles/pip.dir/pibinarylog.cpp.obj: pideque.h +CMakeFiles/pip.dir/pibinarylog.cpp.obj: pifile.h +CMakeFiles/pip.dir/pibinarylog.cpp.obj: piincludes.h +CMakeFiles/pip.dir/pibinarylog.cpp.obj: piiodevice.h +CMakeFiles/pip.dir/pibinarylog.cpp.obj: pimap.h +CMakeFiles/pip.dir/pibinarylog.cpp.obj: pimath.h +CMakeFiles/pip.dir/pibinarylog.cpp.obj: pimonitor.h +CMakeFiles/pip.dir/pibinarylog.cpp.obj: pimutex.h +CMakeFiles/pip.dir/pibinarylog.cpp.obj: piobject.h +CMakeFiles/pip.dir/pibinarylog.cpp.obj: pip_export.h +CMakeFiles/pip.dir/pibinarylog.cpp.obj: piqueue.h +CMakeFiles/pip.dir/pibinarylog.cpp.obj: pistack.h +CMakeFiles/pip.dir/pibinarylog.cpp.obj: pistring.h +CMakeFiles/pip.dir/pibinarylog.cpp.obj: pithread.h +CMakeFiles/pip.dir/pibinarylog.cpp.obj: pitime.h +CMakeFiles/pip.dir/pibinarylog.cpp.obj: pitimer.h +CMakeFiles/pip.dir/pibinarylog.cpp.obj: pivariant.h +CMakeFiles/pip.dir/pibinarylog.cpp.obj: pivector.h + +CMakeFiles/pip.dir/pibytearray.cpp.obj: pibitarray.h +CMakeFiles/pip.dir/pibytearray.cpp.obj: pibytearray.cpp +CMakeFiles/pip.dir/pibytearray.cpp.obj: pibytearray.h +CMakeFiles/pip.dir/pibytearray.cpp.obj: pichar.h +CMakeFiles/pip.dir/pibytearray.cpp.obj: picontainers.h +CMakeFiles/pip.dir/pibytearray.cpp.obj: pideque.h +CMakeFiles/pip.dir/pibytearray.cpp.obj: piincludes.h +CMakeFiles/pip.dir/pibytearray.cpp.obj: pimap.h +CMakeFiles/pip.dir/pibytearray.cpp.obj: pimonitor.h +CMakeFiles/pip.dir/pibytearray.cpp.obj: pip_export.h +CMakeFiles/pip.dir/pibytearray.cpp.obj: piqueue.h +CMakeFiles/pip.dir/pibytearray.cpp.obj: pistack.h +CMakeFiles/pip.dir/pibytearray.cpp.obj: pistring.h +CMakeFiles/pip.dir/pibytearray.cpp.obj: pivector.h + +CMakeFiles/pip.dir/picli.cpp.obj: pibitarray.h +CMakeFiles/pip.dir/picli.cpp.obj: pibytearray.h +CMakeFiles/pip.dir/picli.cpp.obj: pichar.h +CMakeFiles/pip.dir/picli.cpp.obj: picli.cpp +CMakeFiles/pip.dir/picli.cpp.obj: picli.h +CMakeFiles/pip.dir/picli.cpp.obj: picontainers.h +CMakeFiles/pip.dir/picli.cpp.obj: pideque.h +CMakeFiles/pip.dir/picli.cpp.obj: piincludes.h +CMakeFiles/pip.dir/picli.cpp.obj: pimap.h +CMakeFiles/pip.dir/picli.cpp.obj: pimath.h +CMakeFiles/pip.dir/picli.cpp.obj: pimonitor.h +CMakeFiles/pip.dir/picli.cpp.obj: pimutex.h +CMakeFiles/pip.dir/picli.cpp.obj: piobject.h +CMakeFiles/pip.dir/picli.cpp.obj: pip_export.h +CMakeFiles/pip.dir/picli.cpp.obj: piqueue.h +CMakeFiles/pip.dir/picli.cpp.obj: pistack.h +CMakeFiles/pip.dir/picli.cpp.obj: pistring.h +CMakeFiles/pip.dir/picli.cpp.obj: pitime.h +CMakeFiles/pip.dir/picli.cpp.obj: pivariant.h +CMakeFiles/pip.dir/picli.cpp.obj: pivector.h + +CMakeFiles/pip.dir/picodec.cpp.obj: pibitarray.h +CMakeFiles/pip.dir/picodec.cpp.obj: pibytearray.h +CMakeFiles/pip.dir/picodec.cpp.obj: pichar.h +CMakeFiles/pip.dir/picodec.cpp.obj: picodec.cpp +CMakeFiles/pip.dir/picodec.cpp.obj: picodec.h +CMakeFiles/pip.dir/picodec.cpp.obj: picollection.h +CMakeFiles/pip.dir/picodec.cpp.obj: picontainers.h +CMakeFiles/pip.dir/picodec.cpp.obj: pideque.h +CMakeFiles/pip.dir/picodec.cpp.obj: pifile.h +CMakeFiles/pip.dir/picodec.cpp.obj: piincludes.h +CMakeFiles/pip.dir/picodec.cpp.obj: piiodevice.h +CMakeFiles/pip.dir/picodec.cpp.obj: pimap.h +CMakeFiles/pip.dir/picodec.cpp.obj: pimath.h +CMakeFiles/pip.dir/picodec.cpp.obj: pimonitor.h +CMakeFiles/pip.dir/picodec.cpp.obj: pimutex.h +CMakeFiles/pip.dir/picodec.cpp.obj: piobject.h +CMakeFiles/pip.dir/picodec.cpp.obj: pip_export.h +CMakeFiles/pip.dir/picodec.cpp.obj: piprocess.h +CMakeFiles/pip.dir/picodec.cpp.obj: piqueue.h +CMakeFiles/pip.dir/picodec.cpp.obj: pistack.h +CMakeFiles/pip.dir/picodec.cpp.obj: pistring.h +CMakeFiles/pip.dir/picodec.cpp.obj: pithread.h +CMakeFiles/pip.dir/picodec.cpp.obj: pitime.h +CMakeFiles/pip.dir/picodec.cpp.obj: pitimer.h +CMakeFiles/pip.dir/picodec.cpp.obj: pivariant.h +CMakeFiles/pip.dir/picodec.cpp.obj: pivector.h + +CMakeFiles/pip.dir/picodeinfo.cpp.obj: pibitarray.h +CMakeFiles/pip.dir/picodeinfo.cpp.obj: pibytearray.h +CMakeFiles/pip.dir/picodeinfo.cpp.obj: pichar.h +CMakeFiles/pip.dir/picodeinfo.cpp.obj: picodeinfo.cpp +CMakeFiles/pip.dir/picodeinfo.cpp.obj: picodeinfo.h +CMakeFiles/pip.dir/picodeinfo.cpp.obj: picontainers.h +CMakeFiles/pip.dir/picodeinfo.cpp.obj: pideque.h +CMakeFiles/pip.dir/picodeinfo.cpp.obj: piincludes.h +CMakeFiles/pip.dir/picodeinfo.cpp.obj: pimap.h +CMakeFiles/pip.dir/picodeinfo.cpp.obj: pimonitor.h +CMakeFiles/pip.dir/picodeinfo.cpp.obj: pip_export.h +CMakeFiles/pip.dir/picodeinfo.cpp.obj: piqueue.h +CMakeFiles/pip.dir/picodeinfo.cpp.obj: pistack.h +CMakeFiles/pip.dir/picodeinfo.cpp.obj: pistring.h +CMakeFiles/pip.dir/picodeinfo.cpp.obj: pivector.h + +CMakeFiles/pip.dir/picodeparser.cpp.obj: pibitarray.h +CMakeFiles/pip.dir/picodeparser.cpp.obj: pibytearray.h +CMakeFiles/pip.dir/picodeparser.cpp.obj: pichar.h +CMakeFiles/pip.dir/picodeparser.cpp.obj: picodeparser.cpp +CMakeFiles/pip.dir/picodeparser.cpp.obj: picodeparser.h +CMakeFiles/pip.dir/picodeparser.cpp.obj: picollection.h +CMakeFiles/pip.dir/picodeparser.cpp.obj: picontainers.h +CMakeFiles/pip.dir/picodeparser.cpp.obj: pideque.h +CMakeFiles/pip.dir/picodeparser.cpp.obj: pievaluator.h +CMakeFiles/pip.dir/picodeparser.cpp.obj: pifile.h +CMakeFiles/pip.dir/picodeparser.cpp.obj: piincludes.h +CMakeFiles/pip.dir/picodeparser.cpp.obj: piiodevice.h +CMakeFiles/pip.dir/picodeparser.cpp.obj: pimap.h +CMakeFiles/pip.dir/picodeparser.cpp.obj: pimath.h +CMakeFiles/pip.dir/picodeparser.cpp.obj: pimonitor.h +CMakeFiles/pip.dir/picodeparser.cpp.obj: pimutex.h +CMakeFiles/pip.dir/picodeparser.cpp.obj: piobject.h +CMakeFiles/pip.dir/picodeparser.cpp.obj: pip_export.h +CMakeFiles/pip.dir/picodeparser.cpp.obj: piqueue.h +CMakeFiles/pip.dir/picodeparser.cpp.obj: pistack.h +CMakeFiles/pip.dir/picodeparser.cpp.obj: pistring.h +CMakeFiles/pip.dir/picodeparser.cpp.obj: pithread.h +CMakeFiles/pip.dir/picodeparser.cpp.obj: pitime.h +CMakeFiles/pip.dir/picodeparser.cpp.obj: pitimer.h +CMakeFiles/pip.dir/picodeparser.cpp.obj: pivariant.h +CMakeFiles/pip.dir/picodeparser.cpp.obj: pivector.h + +CMakeFiles/pip.dir/picollection.cpp.obj: pibitarray.h +CMakeFiles/pip.dir/picollection.cpp.obj: pibytearray.h +CMakeFiles/pip.dir/picollection.cpp.obj: pichar.h +CMakeFiles/pip.dir/picollection.cpp.obj: picollection.cpp +CMakeFiles/pip.dir/picollection.cpp.obj: picollection.h +CMakeFiles/pip.dir/picollection.cpp.obj: picontainers.h +CMakeFiles/pip.dir/picollection.cpp.obj: pideque.h +CMakeFiles/pip.dir/picollection.cpp.obj: piincludes.h +CMakeFiles/pip.dir/picollection.cpp.obj: pimap.h +CMakeFiles/pip.dir/picollection.cpp.obj: pimath.h +CMakeFiles/pip.dir/picollection.cpp.obj: pimonitor.h +CMakeFiles/pip.dir/picollection.cpp.obj: pimutex.h +CMakeFiles/pip.dir/picollection.cpp.obj: piobject.h +CMakeFiles/pip.dir/picollection.cpp.obj: pip_export.h +CMakeFiles/pip.dir/picollection.cpp.obj: piqueue.h +CMakeFiles/pip.dir/picollection.cpp.obj: pistack.h +CMakeFiles/pip.dir/picollection.cpp.obj: pistring.h +CMakeFiles/pip.dir/picollection.cpp.obj: pitime.h +CMakeFiles/pip.dir/picollection.cpp.obj: pivariant.h +CMakeFiles/pip.dir/picollection.cpp.obj: pivector.h + +CMakeFiles/pip.dir/piconfig.cpp.obj: pibitarray.h +CMakeFiles/pip.dir/piconfig.cpp.obj: pibytearray.h +CMakeFiles/pip.dir/piconfig.cpp.obj: pichar.h +CMakeFiles/pip.dir/piconfig.cpp.obj: picollection.h +CMakeFiles/pip.dir/piconfig.cpp.obj: piconfig.cpp +CMakeFiles/pip.dir/piconfig.cpp.obj: piconfig.h +CMakeFiles/pip.dir/piconfig.cpp.obj: picontainers.h +CMakeFiles/pip.dir/piconfig.cpp.obj: pideque.h +CMakeFiles/pip.dir/piconfig.cpp.obj: pifile.h +CMakeFiles/pip.dir/piconfig.cpp.obj: piincludes.h +CMakeFiles/pip.dir/piconfig.cpp.obj: piiodevice.h +CMakeFiles/pip.dir/piconfig.cpp.obj: pimap.h +CMakeFiles/pip.dir/piconfig.cpp.obj: pimath.h +CMakeFiles/pip.dir/piconfig.cpp.obj: pimonitor.h +CMakeFiles/pip.dir/piconfig.cpp.obj: pimutex.h +CMakeFiles/pip.dir/piconfig.cpp.obj: piobject.h +CMakeFiles/pip.dir/piconfig.cpp.obj: pip_export.h +CMakeFiles/pip.dir/piconfig.cpp.obj: piqueue.h +CMakeFiles/pip.dir/piconfig.cpp.obj: pistack.h +CMakeFiles/pip.dir/piconfig.cpp.obj: pistring.h +CMakeFiles/pip.dir/piconfig.cpp.obj: pithread.h +CMakeFiles/pip.dir/piconfig.cpp.obj: pitime.h +CMakeFiles/pip.dir/piconfig.cpp.obj: pitimer.h +CMakeFiles/pip.dir/piconfig.cpp.obj: pivariant.h +CMakeFiles/pip.dir/piconfig.cpp.obj: pivector.h + +CMakeFiles/pip.dir/piconnection.cpp.obj: pibitarray.h +CMakeFiles/pip.dir/piconnection.cpp.obj: pibytearray.h +CMakeFiles/pip.dir/piconnection.cpp.obj: pichar.h +CMakeFiles/pip.dir/piconnection.cpp.obj: picollection.h +CMakeFiles/pip.dir/piconnection.cpp.obj: piconfig.h +CMakeFiles/pip.dir/piconnection.cpp.obj: piconnection.cpp +CMakeFiles/pip.dir/piconnection.cpp.obj: piconnection.h +CMakeFiles/pip.dir/piconnection.cpp.obj: picontainers.h +CMakeFiles/pip.dir/piconnection.cpp.obj: pideque.h +CMakeFiles/pip.dir/piconnection.cpp.obj: pifile.h +CMakeFiles/pip.dir/piconnection.cpp.obj: piincludes.h +CMakeFiles/pip.dir/piconnection.cpp.obj: piiodevice.h +CMakeFiles/pip.dir/piconnection.cpp.obj: pimap.h +CMakeFiles/pip.dir/piconnection.cpp.obj: pimath.h +CMakeFiles/pip.dir/piconnection.cpp.obj: pimonitor.h +CMakeFiles/pip.dir/piconnection.cpp.obj: pimutex.h +CMakeFiles/pip.dir/piconnection.cpp.obj: piobject.h +CMakeFiles/pip.dir/piconnection.cpp.obj: pip_export.h +CMakeFiles/pip.dir/piconnection.cpp.obj: pipacketextractor.h +CMakeFiles/pip.dir/piconnection.cpp.obj: piqueue.h +CMakeFiles/pip.dir/piconnection.cpp.obj: pistack.h +CMakeFiles/pip.dir/piconnection.cpp.obj: pistring.h +CMakeFiles/pip.dir/piconnection.cpp.obj: pithread.h +CMakeFiles/pip.dir/piconnection.cpp.obj: pitime.h +CMakeFiles/pip.dir/piconnection.cpp.obj: pitimer.h +CMakeFiles/pip.dir/piconnection.cpp.obj: pivariant.h +CMakeFiles/pip.dir/piconnection.cpp.obj: pivector.h + +CMakeFiles/pip.dir/piconsole.cpp.obj: pibitarray.h +CMakeFiles/pip.dir/piconsole.cpp.obj: pibytearray.h +CMakeFiles/pip.dir/piconsole.cpp.obj: pichar.h +CMakeFiles/pip.dir/piconsole.cpp.obj: picollection.h +CMakeFiles/pip.dir/piconsole.cpp.obj: piconfig.h +CMakeFiles/pip.dir/piconsole.cpp.obj: piconsole.cpp +CMakeFiles/pip.dir/piconsole.cpp.obj: piconsole.h +CMakeFiles/pip.dir/piconsole.cpp.obj: picontainers.h +CMakeFiles/pip.dir/piconsole.cpp.obj: pideque.h +CMakeFiles/pip.dir/piconsole.cpp.obj: pidiagnostics.h +CMakeFiles/pip.dir/piconsole.cpp.obj: piethernet.h +CMakeFiles/pip.dir/piconsole.cpp.obj: pifile.h +CMakeFiles/pip.dir/piconsole.cpp.obj: piincludes.h +CMakeFiles/pip.dir/piconsole.cpp.obj: piiodevice.h +CMakeFiles/pip.dir/piconsole.cpp.obj: pikbdlistener.h +CMakeFiles/pip.dir/piconsole.cpp.obj: pimap.h +CMakeFiles/pip.dir/piconsole.cpp.obj: pimath.h +CMakeFiles/pip.dir/piconsole.cpp.obj: pimonitor.h +CMakeFiles/pip.dir/piconsole.cpp.obj: pimutex.h +CMakeFiles/pip.dir/piconsole.cpp.obj: piobject.h +CMakeFiles/pip.dir/piconsole.cpp.obj: pip_export.h +CMakeFiles/pip.dir/piconsole.cpp.obj: pipacketextractor.h +CMakeFiles/pip.dir/piconsole.cpp.obj: pipeer.h +CMakeFiles/pip.dir/piconsole.cpp.obj: piprocess.h +CMakeFiles/pip.dir/piconsole.cpp.obj: piprotocol.h +CMakeFiles/pip.dir/piconsole.cpp.obj: piqueue.h +CMakeFiles/pip.dir/piconsole.cpp.obj: piserial.h +CMakeFiles/pip.dir/piconsole.cpp.obj: pistack.h +CMakeFiles/pip.dir/piconsole.cpp.obj: pistring.h +CMakeFiles/pip.dir/piconsole.cpp.obj: pisystemmonitor.h +CMakeFiles/pip.dir/piconsole.cpp.obj: pithread.h +CMakeFiles/pip.dir/piconsole.cpp.obj: pitime.h +CMakeFiles/pip.dir/piconsole.cpp.obj: pitimer.h +CMakeFiles/pip.dir/piconsole.cpp.obj: pivariant.h +CMakeFiles/pip.dir/piconsole.cpp.obj: pivector.h + +CMakeFiles/pip.dir/picontainers.cpp.obj: picontainers.cpp +CMakeFiles/pip.dir/picontainers.cpp.obj: piincludes.h +CMakeFiles/pip.dir/picontainers.cpp.obj: pimonitor.h +CMakeFiles/pip.dir/picontainers.cpp.obj: pip_export.h +CMakeFiles/pip.dir/picontainers.cpp.obj: pivector.h + +CMakeFiles/pip.dir/pidevicepool.cpp.obj: pibitarray.h +CMakeFiles/pip.dir/pidevicepool.cpp.obj: pibytearray.h +CMakeFiles/pip.dir/pidevicepool.cpp.obj: pichar.h +CMakeFiles/pip.dir/pidevicepool.cpp.obj: picollection.h +CMakeFiles/pip.dir/pidevicepool.cpp.obj: picontainers.h +CMakeFiles/pip.dir/pidevicepool.cpp.obj: pideque.h +CMakeFiles/pip.dir/pidevicepool.cpp.obj: pidevicepool.cpp +CMakeFiles/pip.dir/pidevicepool.cpp.obj: pidevicepool.h +CMakeFiles/pip.dir/pidevicepool.cpp.obj: piincludes.h +CMakeFiles/pip.dir/pidevicepool.cpp.obj: piiodevice.h +CMakeFiles/pip.dir/pidevicepool.cpp.obj: pimap.h +CMakeFiles/pip.dir/pidevicepool.cpp.obj: pimath.h +CMakeFiles/pip.dir/pidevicepool.cpp.obj: pimonitor.h +CMakeFiles/pip.dir/pidevicepool.cpp.obj: pimutex.h +CMakeFiles/pip.dir/pidevicepool.cpp.obj: piobject.h +CMakeFiles/pip.dir/pidevicepool.cpp.obj: pip_export.h +CMakeFiles/pip.dir/pidevicepool.cpp.obj: piqueue.h +CMakeFiles/pip.dir/pidevicepool.cpp.obj: pistack.h +CMakeFiles/pip.dir/pidevicepool.cpp.obj: pistring.h +CMakeFiles/pip.dir/pidevicepool.cpp.obj: pithread.h +CMakeFiles/pip.dir/pidevicepool.cpp.obj: pitime.h +CMakeFiles/pip.dir/pidevicepool.cpp.obj: pitimer.h +CMakeFiles/pip.dir/pidevicepool.cpp.obj: pivariant.h +CMakeFiles/pip.dir/pidevicepool.cpp.obj: pivector.h + +CMakeFiles/pip.dir/pidiagnostics.cpp.obj: pibitarray.h +CMakeFiles/pip.dir/pidiagnostics.cpp.obj: pibytearray.h +CMakeFiles/pip.dir/pidiagnostics.cpp.obj: pichar.h +CMakeFiles/pip.dir/pidiagnostics.cpp.obj: picontainers.h +CMakeFiles/pip.dir/pidiagnostics.cpp.obj: pideque.h +CMakeFiles/pip.dir/pidiagnostics.cpp.obj: pidiagnostics.cpp +CMakeFiles/pip.dir/pidiagnostics.cpp.obj: pidiagnostics.h +CMakeFiles/pip.dir/pidiagnostics.cpp.obj: piincludes.h +CMakeFiles/pip.dir/pidiagnostics.cpp.obj: pimap.h +CMakeFiles/pip.dir/pidiagnostics.cpp.obj: pimath.h +CMakeFiles/pip.dir/pidiagnostics.cpp.obj: pimonitor.h +CMakeFiles/pip.dir/pidiagnostics.cpp.obj: pimutex.h +CMakeFiles/pip.dir/pidiagnostics.cpp.obj: piobject.h +CMakeFiles/pip.dir/pidiagnostics.cpp.obj: pip_export.h +CMakeFiles/pip.dir/pidiagnostics.cpp.obj: piqueue.h +CMakeFiles/pip.dir/pidiagnostics.cpp.obj: pistack.h +CMakeFiles/pip.dir/pidiagnostics.cpp.obj: pistring.h +CMakeFiles/pip.dir/pidiagnostics.cpp.obj: pithread.h +CMakeFiles/pip.dir/pidiagnostics.cpp.obj: pitime.h +CMakeFiles/pip.dir/pidiagnostics.cpp.obj: pitimer.h +CMakeFiles/pip.dir/pidiagnostics.cpp.obj: pivariant.h +CMakeFiles/pip.dir/pidiagnostics.cpp.obj: pivector.h + +CMakeFiles/pip.dir/pidir.cpp.obj: pibitarray.h +CMakeFiles/pip.dir/pidir.cpp.obj: pibytearray.h +CMakeFiles/pip.dir/pidir.cpp.obj: pichar.h +CMakeFiles/pip.dir/pidir.cpp.obj: picollection.h +CMakeFiles/pip.dir/pidir.cpp.obj: picontainers.h +CMakeFiles/pip.dir/pidir.cpp.obj: pideque.h +CMakeFiles/pip.dir/pidir.cpp.obj: pidir.cpp +CMakeFiles/pip.dir/pidir.cpp.obj: pidir.h +CMakeFiles/pip.dir/pidir.cpp.obj: pifile.h +CMakeFiles/pip.dir/pidir.cpp.obj: piincludes.h +CMakeFiles/pip.dir/pidir.cpp.obj: piiodevice.h +CMakeFiles/pip.dir/pidir.cpp.obj: pimap.h +CMakeFiles/pip.dir/pidir.cpp.obj: pimath.h +CMakeFiles/pip.dir/pidir.cpp.obj: pimonitor.h +CMakeFiles/pip.dir/pidir.cpp.obj: pimutex.h +CMakeFiles/pip.dir/pidir.cpp.obj: piobject.h +CMakeFiles/pip.dir/pidir.cpp.obj: pip_export.h +CMakeFiles/pip.dir/pidir.cpp.obj: piqueue.h +CMakeFiles/pip.dir/pidir.cpp.obj: pistack.h +CMakeFiles/pip.dir/pidir.cpp.obj: pistring.h +CMakeFiles/pip.dir/pidir.cpp.obj: pithread.h +CMakeFiles/pip.dir/pidir.cpp.obj: pitime.h +CMakeFiles/pip.dir/pidir.cpp.obj: pitimer.h +CMakeFiles/pip.dir/pidir.cpp.obj: pivariant.h +CMakeFiles/pip.dir/pidir.cpp.obj: pivector.h + +CMakeFiles/pip.dir/piethernet.cpp.obj: pibitarray.h +CMakeFiles/pip.dir/piethernet.cpp.obj: pibytearray.h +CMakeFiles/pip.dir/piethernet.cpp.obj: pichar.h +CMakeFiles/pip.dir/piethernet.cpp.obj: picollection.h +CMakeFiles/pip.dir/piethernet.cpp.obj: piconfig.h +CMakeFiles/pip.dir/piethernet.cpp.obj: picontainers.h +CMakeFiles/pip.dir/piethernet.cpp.obj: pideque.h +CMakeFiles/pip.dir/piethernet.cpp.obj: piethernet.cpp +CMakeFiles/pip.dir/piethernet.cpp.obj: piethernet.h +CMakeFiles/pip.dir/piethernet.cpp.obj: pifile.h +CMakeFiles/pip.dir/piethernet.cpp.obj: piincludes.h +CMakeFiles/pip.dir/piethernet.cpp.obj: piiodevice.h +CMakeFiles/pip.dir/piethernet.cpp.obj: pimap.h +CMakeFiles/pip.dir/piethernet.cpp.obj: pimath.h +CMakeFiles/pip.dir/piethernet.cpp.obj: pimonitor.h +CMakeFiles/pip.dir/piethernet.cpp.obj: pimutex.h +CMakeFiles/pip.dir/piethernet.cpp.obj: piobject.h +CMakeFiles/pip.dir/piethernet.cpp.obj: pip_export.h +CMakeFiles/pip.dir/piethernet.cpp.obj: piprocess.h +CMakeFiles/pip.dir/piethernet.cpp.obj: piqueue.h +CMakeFiles/pip.dir/piethernet.cpp.obj: pistack.h +CMakeFiles/pip.dir/piethernet.cpp.obj: pistring.h +CMakeFiles/pip.dir/piethernet.cpp.obj: pithread.h +CMakeFiles/pip.dir/piethernet.cpp.obj: pitime.h +CMakeFiles/pip.dir/piethernet.cpp.obj: pitimer.h +CMakeFiles/pip.dir/piethernet.cpp.obj: pivariant.h +CMakeFiles/pip.dir/piethernet.cpp.obj: pivector.h + +CMakeFiles/pip.dir/pievaluator.cpp.obj: pibitarray.h +CMakeFiles/pip.dir/pievaluator.cpp.obj: pibytearray.h +CMakeFiles/pip.dir/pievaluator.cpp.obj: pichar.h +CMakeFiles/pip.dir/pievaluator.cpp.obj: picontainers.h +CMakeFiles/pip.dir/pievaluator.cpp.obj: pideque.h +CMakeFiles/pip.dir/pievaluator.cpp.obj: pievaluator.cpp +CMakeFiles/pip.dir/pievaluator.cpp.obj: pievaluator.h +CMakeFiles/pip.dir/pievaluator.cpp.obj: piincludes.h +CMakeFiles/pip.dir/pievaluator.cpp.obj: pimap.h +CMakeFiles/pip.dir/pievaluator.cpp.obj: pimath.h +CMakeFiles/pip.dir/pievaluator.cpp.obj: pimonitor.h +CMakeFiles/pip.dir/pievaluator.cpp.obj: pip_export.h +CMakeFiles/pip.dir/pievaluator.cpp.obj: piqueue.h +CMakeFiles/pip.dir/pievaluator.cpp.obj: pistack.h +CMakeFiles/pip.dir/pievaluator.cpp.obj: pistring.h +CMakeFiles/pip.dir/pievaluator.cpp.obj: pivector.h + +CMakeFiles/pip.dir/pifile.cpp.obj: pibitarray.h +CMakeFiles/pip.dir/pifile.cpp.obj: pibytearray.h +CMakeFiles/pip.dir/pifile.cpp.obj: pichar.h +CMakeFiles/pip.dir/pifile.cpp.obj: picollection.h +CMakeFiles/pip.dir/pifile.cpp.obj: picontainers.h +CMakeFiles/pip.dir/pifile.cpp.obj: pideque.h +CMakeFiles/pip.dir/pifile.cpp.obj: pifile.cpp +CMakeFiles/pip.dir/pifile.cpp.obj: pifile.h +CMakeFiles/pip.dir/pifile.cpp.obj: piincludes.h +CMakeFiles/pip.dir/pifile.cpp.obj: piiodevice.h +CMakeFiles/pip.dir/pifile.cpp.obj: pimap.h +CMakeFiles/pip.dir/pifile.cpp.obj: pimath.h +CMakeFiles/pip.dir/pifile.cpp.obj: pimonitor.h +CMakeFiles/pip.dir/pifile.cpp.obj: pimutex.h +CMakeFiles/pip.dir/pifile.cpp.obj: piobject.h +CMakeFiles/pip.dir/pifile.cpp.obj: pip_export.h +CMakeFiles/pip.dir/pifile.cpp.obj: piqueue.h +CMakeFiles/pip.dir/pifile.cpp.obj: pistack.h +CMakeFiles/pip.dir/pifile.cpp.obj: pistring.h +CMakeFiles/pip.dir/pifile.cpp.obj: pithread.h +CMakeFiles/pip.dir/pifile.cpp.obj: pitime.h +CMakeFiles/pip.dir/pifile.cpp.obj: pitimer.h +CMakeFiles/pip.dir/pifile.cpp.obj: pivariant.h +CMakeFiles/pip.dir/pifile.cpp.obj: pivector.h + +CMakeFiles/pip.dir/piincludes.cpp.obj: piconfig.h +CMakeFiles/pip.dir/piincludes.cpp.obj: piconsole.h +CMakeFiles/pip.dir/piincludes.cpp.obj: pidiagnostics.h +CMakeFiles/pip.dir/piincludes.cpp.obj: piethernet.h +CMakeFiles/pip.dir/piincludes.cpp.obj: piincludes.cpp +CMakeFiles/pip.dir/piincludes.cpp.obj: piincludes.h +CMakeFiles/pip.dir/piincludes.cpp.obj: pikbdlistener.h +CMakeFiles/pip.dir/piincludes.cpp.obj: pimonitor.h +CMakeFiles/pip.dir/piincludes.cpp.obj: pip_export.h +CMakeFiles/pip.dir/piincludes.cpp.obj: pipacketextractor.h +CMakeFiles/pip.dir/piincludes.cpp.obj: piprocess.h +CMakeFiles/pip.dir/piincludes.cpp.obj: piprotocol.h +CMakeFiles/pip.dir/piincludes.cpp.obj: pisystemmonitor.h +CMakeFiles/pip.dir/piincludes.cpp.obj: pithread.h +CMakeFiles/pip.dir/piincludes.cpp.obj: pibinarylog.h +CMakeFiles/pip.dir/piincludes.cpp.obj: pibitarray.h +CMakeFiles/pip.dir/piincludes.cpp.obj: pibytearray.h +CMakeFiles/pip.dir/piincludes.cpp.obj: pichar.h +CMakeFiles/pip.dir/piincludes.cpp.obj: picli.h +CMakeFiles/pip.dir/piincludes.cpp.obj: picodec.h +CMakeFiles/pip.dir/piincludes.cpp.obj: picollection.h +CMakeFiles/pip.dir/piincludes.cpp.obj: picontainers.h +CMakeFiles/pip.dir/piincludes.cpp.obj: picrc.h +CMakeFiles/pip.dir/piincludes.cpp.obj: pideque.h +CMakeFiles/pip.dir/piincludes.cpp.obj: pievaluator.h +CMakeFiles/pip.dir/piincludes.cpp.obj: pifile.h +CMakeFiles/pip.dir/piincludes.cpp.obj: piiodevice.h +CMakeFiles/pip.dir/piincludes.cpp.obj: pimap.h +CMakeFiles/pip.dir/piincludes.cpp.obj: pimath.h +CMakeFiles/pip.dir/piincludes.cpp.obj: pimultiprotocol.h +CMakeFiles/pip.dir/piincludes.cpp.obj: pimutex.h +CMakeFiles/pip.dir/piincludes.cpp.obj: piobject.h +CMakeFiles/pip.dir/piincludes.cpp.obj: pip.h +CMakeFiles/pip.dir/piincludes.cpp.obj: pipeer.h +CMakeFiles/pip.dir/piincludes.cpp.obj: piqueue.h +CMakeFiles/pip.dir/piincludes.cpp.obj: piserial.h +CMakeFiles/pip.dir/piincludes.cpp.obj: pisignals.h +CMakeFiles/pip.dir/piincludes.cpp.obj: pistack.h +CMakeFiles/pip.dir/piincludes.cpp.obj: pistatemachine.h +CMakeFiles/pip.dir/piincludes.cpp.obj: pistring.h +CMakeFiles/pip.dir/piincludes.cpp.obj: pitime.h +CMakeFiles/pip.dir/piincludes.cpp.obj: pitimer.h +CMakeFiles/pip.dir/piincludes.cpp.obj: piusb.h +CMakeFiles/pip.dir/piincludes.cpp.obj: pivariant.h +CMakeFiles/pip.dir/piincludes.cpp.obj: pivector.h + +CMakeFiles/pip.dir/piiodevice.cpp.obj: pibitarray.h +CMakeFiles/pip.dir/piiodevice.cpp.obj: pibytearray.h +CMakeFiles/pip.dir/piiodevice.cpp.obj: pichar.h +CMakeFiles/pip.dir/piiodevice.cpp.obj: picollection.h +CMakeFiles/pip.dir/piiodevice.cpp.obj: piconfig.h +CMakeFiles/pip.dir/piiodevice.cpp.obj: picontainers.h +CMakeFiles/pip.dir/piiodevice.cpp.obj: pideque.h +CMakeFiles/pip.dir/piiodevice.cpp.obj: pifile.h +CMakeFiles/pip.dir/piiodevice.cpp.obj: piincludes.h +CMakeFiles/pip.dir/piiodevice.cpp.obj: piiodevice.cpp +CMakeFiles/pip.dir/piiodevice.cpp.obj: piiodevice.h +CMakeFiles/pip.dir/piiodevice.cpp.obj: pimap.h +CMakeFiles/pip.dir/piiodevice.cpp.obj: pimath.h +CMakeFiles/pip.dir/piiodevice.cpp.obj: pimonitor.h +CMakeFiles/pip.dir/piiodevice.cpp.obj: pimutex.h +CMakeFiles/pip.dir/piiodevice.cpp.obj: piobject.h +CMakeFiles/pip.dir/piiodevice.cpp.obj: pip_export.h +CMakeFiles/pip.dir/piiodevice.cpp.obj: piqueue.h +CMakeFiles/pip.dir/piiodevice.cpp.obj: pistack.h +CMakeFiles/pip.dir/piiodevice.cpp.obj: pistring.h +CMakeFiles/pip.dir/piiodevice.cpp.obj: pithread.h +CMakeFiles/pip.dir/piiodevice.cpp.obj: pitime.h +CMakeFiles/pip.dir/piiodevice.cpp.obj: pitimer.h +CMakeFiles/pip.dir/piiodevice.cpp.obj: pivariant.h +CMakeFiles/pip.dir/piiodevice.cpp.obj: pivector.h + +CMakeFiles/pip.dir/pikbdlistener.cpp.obj: pibitarray.h +CMakeFiles/pip.dir/pikbdlistener.cpp.obj: pibytearray.h +CMakeFiles/pip.dir/pikbdlistener.cpp.obj: pichar.h +CMakeFiles/pip.dir/pikbdlistener.cpp.obj: picontainers.h +CMakeFiles/pip.dir/pikbdlistener.cpp.obj: pideque.h +CMakeFiles/pip.dir/pikbdlistener.cpp.obj: piincludes.h +CMakeFiles/pip.dir/pikbdlistener.cpp.obj: pikbdlistener.cpp +CMakeFiles/pip.dir/pikbdlistener.cpp.obj: pikbdlistener.h +CMakeFiles/pip.dir/pikbdlistener.cpp.obj: pimap.h +CMakeFiles/pip.dir/pikbdlistener.cpp.obj: pimath.h +CMakeFiles/pip.dir/pikbdlistener.cpp.obj: pimonitor.h +CMakeFiles/pip.dir/pikbdlistener.cpp.obj: pimutex.h +CMakeFiles/pip.dir/pikbdlistener.cpp.obj: piobject.h +CMakeFiles/pip.dir/pikbdlistener.cpp.obj: pip_export.h +CMakeFiles/pip.dir/pikbdlistener.cpp.obj: piqueue.h +CMakeFiles/pip.dir/pikbdlistener.cpp.obj: pistack.h +CMakeFiles/pip.dir/pikbdlistener.cpp.obj: pistring.h +CMakeFiles/pip.dir/pikbdlistener.cpp.obj: pithread.h +CMakeFiles/pip.dir/pikbdlistener.cpp.obj: pitime.h +CMakeFiles/pip.dir/pikbdlistener.cpp.obj: pivariant.h +CMakeFiles/pip.dir/pikbdlistener.cpp.obj: pivector.h + +CMakeFiles/pip.dir/pimath.cpp.obj: pibitarray.h +CMakeFiles/pip.dir/pimath.cpp.obj: pibytearray.h +CMakeFiles/pip.dir/pimath.cpp.obj: picontainers.h +CMakeFiles/pip.dir/pimath.cpp.obj: pideque.h +CMakeFiles/pip.dir/pimath.cpp.obj: piincludes.h +CMakeFiles/pip.dir/pimath.cpp.obj: pimap.h +CMakeFiles/pip.dir/pimath.cpp.obj: pimath.cpp +CMakeFiles/pip.dir/pimath.cpp.obj: pimath.h +CMakeFiles/pip.dir/pimath.cpp.obj: pimonitor.h +CMakeFiles/pip.dir/pimath.cpp.obj: pip_export.h +CMakeFiles/pip.dir/pimath.cpp.obj: piqueue.h +CMakeFiles/pip.dir/pimath.cpp.obj: pistack.h +CMakeFiles/pip.dir/pimath.cpp.obj: pivector.h + +CMakeFiles/pip.dir/pimonitor.cpp.obj: pimonitor.cpp +CMakeFiles/pip.dir/pimonitor.cpp.obj: pimonitor.h +CMakeFiles/pip.dir/pimonitor.cpp.obj: pip_export.h + +CMakeFiles/pip.dir/pimultiprotocol.cpp.obj: pibitarray.h +CMakeFiles/pip.dir/pimultiprotocol.cpp.obj: pibytearray.h +CMakeFiles/pip.dir/pimultiprotocol.cpp.obj: pichar.h +CMakeFiles/pip.dir/pimultiprotocol.cpp.obj: picollection.h +CMakeFiles/pip.dir/pimultiprotocol.cpp.obj: piconfig.h +CMakeFiles/pip.dir/pimultiprotocol.cpp.obj: picontainers.h +CMakeFiles/pip.dir/pimultiprotocol.cpp.obj: pideque.h +CMakeFiles/pip.dir/pimultiprotocol.cpp.obj: piethernet.h +CMakeFiles/pip.dir/pimultiprotocol.cpp.obj: pifile.h +CMakeFiles/pip.dir/pimultiprotocol.cpp.obj: piincludes.h +CMakeFiles/pip.dir/pimultiprotocol.cpp.obj: piiodevice.h +CMakeFiles/pip.dir/pimultiprotocol.cpp.obj: pimap.h +CMakeFiles/pip.dir/pimultiprotocol.cpp.obj: pimath.h +CMakeFiles/pip.dir/pimultiprotocol.cpp.obj: pimonitor.h +CMakeFiles/pip.dir/pimultiprotocol.cpp.obj: pimultiprotocol.cpp +CMakeFiles/pip.dir/pimultiprotocol.cpp.obj: pimultiprotocol.h +CMakeFiles/pip.dir/pimultiprotocol.cpp.obj: pimutex.h +CMakeFiles/pip.dir/pimultiprotocol.cpp.obj: piobject.h +CMakeFiles/pip.dir/pimultiprotocol.cpp.obj: pip_export.h +CMakeFiles/pip.dir/pimultiprotocol.cpp.obj: pipacketextractor.h +CMakeFiles/pip.dir/pimultiprotocol.cpp.obj: piprocess.h +CMakeFiles/pip.dir/pimultiprotocol.cpp.obj: piprotocol.h +CMakeFiles/pip.dir/pimultiprotocol.cpp.obj: piqueue.h +CMakeFiles/pip.dir/pimultiprotocol.cpp.obj: piserial.h +CMakeFiles/pip.dir/pimultiprotocol.cpp.obj: pistack.h +CMakeFiles/pip.dir/pimultiprotocol.cpp.obj: pistring.h +CMakeFiles/pip.dir/pimultiprotocol.cpp.obj: pithread.h +CMakeFiles/pip.dir/pimultiprotocol.cpp.obj: pitime.h +CMakeFiles/pip.dir/pimultiprotocol.cpp.obj: pitimer.h +CMakeFiles/pip.dir/pimultiprotocol.cpp.obj: pivariant.h +CMakeFiles/pip.dir/pimultiprotocol.cpp.obj: pivector.h + +CMakeFiles/pip.dir/pimutex.cpp.obj: piincludes.h +CMakeFiles/pip.dir/pimutex.cpp.obj: pimonitor.h +CMakeFiles/pip.dir/pimutex.cpp.obj: pimutex.cpp +CMakeFiles/pip.dir/pimutex.cpp.obj: pimutex.h +CMakeFiles/pip.dir/pimutex.cpp.obj: pip_export.h + +CMakeFiles/pip.dir/piobject.cpp.obj: pibitarray.h +CMakeFiles/pip.dir/piobject.cpp.obj: pibytearray.h +CMakeFiles/pip.dir/piobject.cpp.obj: pichar.h +CMakeFiles/pip.dir/piobject.cpp.obj: picontainers.h +CMakeFiles/pip.dir/piobject.cpp.obj: pideque.h +CMakeFiles/pip.dir/piobject.cpp.obj: piincludes.h +CMakeFiles/pip.dir/piobject.cpp.obj: pimap.h +CMakeFiles/pip.dir/piobject.cpp.obj: pimath.h +CMakeFiles/pip.dir/piobject.cpp.obj: pimonitor.h +CMakeFiles/pip.dir/piobject.cpp.obj: pimutex.h +CMakeFiles/pip.dir/piobject.cpp.obj: piobject.cpp +CMakeFiles/pip.dir/piobject.cpp.obj: piobject.h +CMakeFiles/pip.dir/piobject.cpp.obj: pip_export.h +CMakeFiles/pip.dir/piobject.cpp.obj: piqueue.h +CMakeFiles/pip.dir/piobject.cpp.obj: pistack.h +CMakeFiles/pip.dir/piobject.cpp.obj: pistring.h +CMakeFiles/pip.dir/piobject.cpp.obj: pitime.h +CMakeFiles/pip.dir/piobject.cpp.obj: pivariant.h +CMakeFiles/pip.dir/piobject.cpp.obj: pivector.h + +CMakeFiles/pip.dir/pipacketextractor.cpp.obj: pibitarray.h +CMakeFiles/pip.dir/pipacketextractor.cpp.obj: pibytearray.h +CMakeFiles/pip.dir/pipacketextractor.cpp.obj: pichar.h +CMakeFiles/pip.dir/pipacketextractor.cpp.obj: picollection.h +CMakeFiles/pip.dir/pipacketextractor.cpp.obj: picontainers.h +CMakeFiles/pip.dir/pipacketextractor.cpp.obj: pideque.h +CMakeFiles/pip.dir/pipacketextractor.cpp.obj: piincludes.h +CMakeFiles/pip.dir/pipacketextractor.cpp.obj: piiodevice.h +CMakeFiles/pip.dir/pipacketextractor.cpp.obj: pimap.h +CMakeFiles/pip.dir/pipacketextractor.cpp.obj: pimath.h +CMakeFiles/pip.dir/pipacketextractor.cpp.obj: pimonitor.h +CMakeFiles/pip.dir/pipacketextractor.cpp.obj: pimutex.h +CMakeFiles/pip.dir/pipacketextractor.cpp.obj: piobject.h +CMakeFiles/pip.dir/pipacketextractor.cpp.obj: pip_export.h +CMakeFiles/pip.dir/pipacketextractor.cpp.obj: pipacketextractor.cpp +CMakeFiles/pip.dir/pipacketextractor.cpp.obj: pipacketextractor.h +CMakeFiles/pip.dir/pipacketextractor.cpp.obj: piqueue.h +CMakeFiles/pip.dir/pipacketextractor.cpp.obj: pistack.h +CMakeFiles/pip.dir/pipacketextractor.cpp.obj: pistring.h +CMakeFiles/pip.dir/pipacketextractor.cpp.obj: pithread.h +CMakeFiles/pip.dir/pipacketextractor.cpp.obj: pitime.h +CMakeFiles/pip.dir/pipacketextractor.cpp.obj: pitimer.h +CMakeFiles/pip.dir/pipacketextractor.cpp.obj: pivariant.h +CMakeFiles/pip.dir/pipacketextractor.cpp.obj: pivector.h + +CMakeFiles/pip.dir/pipeer.cpp.obj: pibitarray.h +CMakeFiles/pip.dir/pipeer.cpp.obj: pibytearray.h +CMakeFiles/pip.dir/pipeer.cpp.obj: pichar.h +CMakeFiles/pip.dir/pipeer.cpp.obj: picollection.h +CMakeFiles/pip.dir/pipeer.cpp.obj: picontainers.h +CMakeFiles/pip.dir/pipeer.cpp.obj: pideque.h +CMakeFiles/pip.dir/pipeer.cpp.obj: pidiagnostics.h +CMakeFiles/pip.dir/pipeer.cpp.obj: piethernet.h +CMakeFiles/pip.dir/pipeer.cpp.obj: pifile.h +CMakeFiles/pip.dir/pipeer.cpp.obj: piincludes.h +CMakeFiles/pip.dir/pipeer.cpp.obj: piiodevice.h +CMakeFiles/pip.dir/pipeer.cpp.obj: pimap.h +CMakeFiles/pip.dir/pipeer.cpp.obj: pimath.h +CMakeFiles/pip.dir/pipeer.cpp.obj: pimonitor.h +CMakeFiles/pip.dir/pipeer.cpp.obj: pimutex.h +CMakeFiles/pip.dir/pipeer.cpp.obj: piobject.h +CMakeFiles/pip.dir/pipeer.cpp.obj: pip_export.h +CMakeFiles/pip.dir/pipeer.cpp.obj: pipeer.cpp +CMakeFiles/pip.dir/pipeer.cpp.obj: pipeer.h +CMakeFiles/pip.dir/pipeer.cpp.obj: piprocess.h +CMakeFiles/pip.dir/pipeer.cpp.obj: piqueue.h +CMakeFiles/pip.dir/pipeer.cpp.obj: pistack.h +CMakeFiles/pip.dir/pipeer.cpp.obj: pistring.h +CMakeFiles/pip.dir/pipeer.cpp.obj: pithread.h +CMakeFiles/pip.dir/pipeer.cpp.obj: pitime.h +CMakeFiles/pip.dir/pipeer.cpp.obj: pitimer.h +CMakeFiles/pip.dir/pipeer.cpp.obj: pivariant.h +CMakeFiles/pip.dir/pipeer.cpp.obj: pivector.h + +CMakeFiles/pip.dir/piprocess.cpp.obj: pibitarray.h +CMakeFiles/pip.dir/piprocess.cpp.obj: pibytearray.h +CMakeFiles/pip.dir/piprocess.cpp.obj: pichar.h +CMakeFiles/pip.dir/piprocess.cpp.obj: picollection.h +CMakeFiles/pip.dir/piprocess.cpp.obj: picontainers.h +CMakeFiles/pip.dir/piprocess.cpp.obj: pideque.h +CMakeFiles/pip.dir/piprocess.cpp.obj: pifile.h +CMakeFiles/pip.dir/piprocess.cpp.obj: piincludes.h +CMakeFiles/pip.dir/piprocess.cpp.obj: piiodevice.h +CMakeFiles/pip.dir/piprocess.cpp.obj: pimap.h +CMakeFiles/pip.dir/piprocess.cpp.obj: pimath.h +CMakeFiles/pip.dir/piprocess.cpp.obj: pimonitor.h +CMakeFiles/pip.dir/piprocess.cpp.obj: pimutex.h +CMakeFiles/pip.dir/piprocess.cpp.obj: piobject.h +CMakeFiles/pip.dir/piprocess.cpp.obj: pip_export.h +CMakeFiles/pip.dir/piprocess.cpp.obj: piprocess.cpp +CMakeFiles/pip.dir/piprocess.cpp.obj: piprocess.h +CMakeFiles/pip.dir/piprocess.cpp.obj: piqueue.h +CMakeFiles/pip.dir/piprocess.cpp.obj: pistack.h +CMakeFiles/pip.dir/piprocess.cpp.obj: pistring.h +CMakeFiles/pip.dir/piprocess.cpp.obj: pithread.h +CMakeFiles/pip.dir/piprocess.cpp.obj: pitime.h +CMakeFiles/pip.dir/piprocess.cpp.obj: pitimer.h +CMakeFiles/pip.dir/piprocess.cpp.obj: pivariant.h +CMakeFiles/pip.dir/piprocess.cpp.obj: pivector.h + +CMakeFiles/pip.dir/piprotocol.cpp.obj: pibitarray.h +CMakeFiles/pip.dir/piprotocol.cpp.obj: pibytearray.h +CMakeFiles/pip.dir/piprotocol.cpp.obj: pichar.h +CMakeFiles/pip.dir/piprotocol.cpp.obj: picollection.h +CMakeFiles/pip.dir/piprotocol.cpp.obj: piconfig.h +CMakeFiles/pip.dir/piprotocol.cpp.obj: picontainers.h +CMakeFiles/pip.dir/piprotocol.cpp.obj: pideque.h +CMakeFiles/pip.dir/piprotocol.cpp.obj: piethernet.h +CMakeFiles/pip.dir/piprotocol.cpp.obj: pifile.h +CMakeFiles/pip.dir/piprotocol.cpp.obj: piincludes.h +CMakeFiles/pip.dir/piprotocol.cpp.obj: piiodevice.h +CMakeFiles/pip.dir/piprotocol.cpp.obj: pimap.h +CMakeFiles/pip.dir/piprotocol.cpp.obj: pimath.h +CMakeFiles/pip.dir/piprotocol.cpp.obj: pimonitor.h +CMakeFiles/pip.dir/piprotocol.cpp.obj: pimutex.h +CMakeFiles/pip.dir/piprotocol.cpp.obj: piobject.h +CMakeFiles/pip.dir/piprotocol.cpp.obj: pip_export.h +CMakeFiles/pip.dir/piprotocol.cpp.obj: pipacketextractor.h +CMakeFiles/pip.dir/piprotocol.cpp.obj: piprocess.h +CMakeFiles/pip.dir/piprotocol.cpp.obj: piprotocol.cpp +CMakeFiles/pip.dir/piprotocol.cpp.obj: piprotocol.h +CMakeFiles/pip.dir/piprotocol.cpp.obj: piqueue.h +CMakeFiles/pip.dir/piprotocol.cpp.obj: piserial.h +CMakeFiles/pip.dir/piprotocol.cpp.obj: pistack.h +CMakeFiles/pip.dir/piprotocol.cpp.obj: pistring.h +CMakeFiles/pip.dir/piprotocol.cpp.obj: pithread.h +CMakeFiles/pip.dir/piprotocol.cpp.obj: pitime.h +CMakeFiles/pip.dir/piprotocol.cpp.obj: pitimer.h +CMakeFiles/pip.dir/piprotocol.cpp.obj: pivariant.h +CMakeFiles/pip.dir/piprotocol.cpp.obj: pivector.h + +CMakeFiles/pip.dir/piserial.cpp.obj: pibitarray.h +CMakeFiles/pip.dir/piserial.cpp.obj: pibytearray.h +CMakeFiles/pip.dir/piserial.cpp.obj: pichar.h +CMakeFiles/pip.dir/piserial.cpp.obj: picollection.h +CMakeFiles/pip.dir/piserial.cpp.obj: piconfig.h +CMakeFiles/pip.dir/piserial.cpp.obj: picontainers.h +CMakeFiles/pip.dir/piserial.cpp.obj: pideque.h +CMakeFiles/pip.dir/piserial.cpp.obj: pidir.h +CMakeFiles/pip.dir/piserial.cpp.obj: pifile.h +CMakeFiles/pip.dir/piserial.cpp.obj: piincludes.h +CMakeFiles/pip.dir/piserial.cpp.obj: piiodevice.h +CMakeFiles/pip.dir/piserial.cpp.obj: pimap.h +CMakeFiles/pip.dir/piserial.cpp.obj: pimath.h +CMakeFiles/pip.dir/piserial.cpp.obj: pimonitor.h +CMakeFiles/pip.dir/piserial.cpp.obj: pimutex.h +CMakeFiles/pip.dir/piserial.cpp.obj: piobject.h +CMakeFiles/pip.dir/piserial.cpp.obj: pip_export.h +CMakeFiles/pip.dir/piserial.cpp.obj: piqueue.h +CMakeFiles/pip.dir/piserial.cpp.obj: piserial.cpp +CMakeFiles/pip.dir/piserial.cpp.obj: piserial.h +CMakeFiles/pip.dir/piserial.cpp.obj: pistack.h +CMakeFiles/pip.dir/piserial.cpp.obj: pistring.h +CMakeFiles/pip.dir/piserial.cpp.obj: pithread.h +CMakeFiles/pip.dir/piserial.cpp.obj: pitime.h +CMakeFiles/pip.dir/piserial.cpp.obj: pitimer.h +CMakeFiles/pip.dir/piserial.cpp.obj: pivariant.h +CMakeFiles/pip.dir/piserial.cpp.obj: pivector.h + +CMakeFiles/pip.dir/pisignals.cpp.obj: picontainers.h +CMakeFiles/pip.dir/pisignals.cpp.obj: pideque.h +CMakeFiles/pip.dir/pisignals.cpp.obj: piincludes.h +CMakeFiles/pip.dir/pisignals.cpp.obj: pimap.h +CMakeFiles/pip.dir/pisignals.cpp.obj: pimonitor.h +CMakeFiles/pip.dir/pisignals.cpp.obj: pip_export.h +CMakeFiles/pip.dir/pisignals.cpp.obj: piqueue.h +CMakeFiles/pip.dir/pisignals.cpp.obj: pisignals.cpp +CMakeFiles/pip.dir/pisignals.cpp.obj: pisignals.h +CMakeFiles/pip.dir/pisignals.cpp.obj: pistack.h +CMakeFiles/pip.dir/pisignals.cpp.obj: pivector.h + +CMakeFiles/pip.dir/pistring.cpp.obj: pibitarray.h +CMakeFiles/pip.dir/pistring.cpp.obj: pibytearray.h +CMakeFiles/pip.dir/pistring.cpp.obj: pichar.h +CMakeFiles/pip.dir/pistring.cpp.obj: picontainers.h +CMakeFiles/pip.dir/pistring.cpp.obj: pideque.h +CMakeFiles/pip.dir/pistring.cpp.obj: piincludes.h +CMakeFiles/pip.dir/pistring.cpp.obj: pimap.h +CMakeFiles/pip.dir/pistring.cpp.obj: pimonitor.h +CMakeFiles/pip.dir/pistring.cpp.obj: pip_export.h +CMakeFiles/pip.dir/pistring.cpp.obj: piqueue.h +CMakeFiles/pip.dir/pistring.cpp.obj: pistack.h +CMakeFiles/pip.dir/pistring.cpp.obj: pistring.cpp +CMakeFiles/pip.dir/pistring.cpp.obj: pistring.h +CMakeFiles/pip.dir/pistring.cpp.obj: pivector.h + +CMakeFiles/pip.dir/pisystemmonitor.cpp.obj: pibitarray.h +CMakeFiles/pip.dir/pisystemmonitor.cpp.obj: pibytearray.h +CMakeFiles/pip.dir/pisystemmonitor.cpp.obj: pichar.h +CMakeFiles/pip.dir/pisystemmonitor.cpp.obj: picollection.h +CMakeFiles/pip.dir/pisystemmonitor.cpp.obj: picontainers.h +CMakeFiles/pip.dir/pisystemmonitor.cpp.obj: pideque.h +CMakeFiles/pip.dir/pisystemmonitor.cpp.obj: pifile.h +CMakeFiles/pip.dir/pisystemmonitor.cpp.obj: piincludes.h +CMakeFiles/pip.dir/pisystemmonitor.cpp.obj: piiodevice.h +CMakeFiles/pip.dir/pisystemmonitor.cpp.obj: pimap.h +CMakeFiles/pip.dir/pisystemmonitor.cpp.obj: pimath.h +CMakeFiles/pip.dir/pisystemmonitor.cpp.obj: pimonitor.h +CMakeFiles/pip.dir/pisystemmonitor.cpp.obj: pimutex.h +CMakeFiles/pip.dir/pisystemmonitor.cpp.obj: piobject.h +CMakeFiles/pip.dir/pisystemmonitor.cpp.obj: pip_export.h +CMakeFiles/pip.dir/pisystemmonitor.cpp.obj: piprocess.h +CMakeFiles/pip.dir/pisystemmonitor.cpp.obj: piqueue.h +CMakeFiles/pip.dir/pisystemmonitor.cpp.obj: pistack.h +CMakeFiles/pip.dir/pisystemmonitor.cpp.obj: pistring.h +CMakeFiles/pip.dir/pisystemmonitor.cpp.obj: pisystemmonitor.cpp +CMakeFiles/pip.dir/pisystemmonitor.cpp.obj: pisystemmonitor.h +CMakeFiles/pip.dir/pisystemmonitor.cpp.obj: pithread.h +CMakeFiles/pip.dir/pisystemmonitor.cpp.obj: pitime.h +CMakeFiles/pip.dir/pisystemmonitor.cpp.obj: pitimer.h +CMakeFiles/pip.dir/pisystemmonitor.cpp.obj: pivariant.h +CMakeFiles/pip.dir/pisystemmonitor.cpp.obj: pivector.h + +CMakeFiles/pip.dir/pisystemtests.cpp.obj: pibitarray.h +CMakeFiles/pip.dir/pisystemtests.cpp.obj: pibytearray.h +CMakeFiles/pip.dir/pisystemtests.cpp.obj: pichar.h +CMakeFiles/pip.dir/pisystemtests.cpp.obj: picollection.h +CMakeFiles/pip.dir/pisystemtests.cpp.obj: piconfig.h +CMakeFiles/pip.dir/pisystemtests.cpp.obj: picontainers.h +CMakeFiles/pip.dir/pisystemtests.cpp.obj: pideque.h +CMakeFiles/pip.dir/pisystemtests.cpp.obj: pifile.h +CMakeFiles/pip.dir/pisystemtests.cpp.obj: piincludes.h +CMakeFiles/pip.dir/pisystemtests.cpp.obj: piiodevice.h +CMakeFiles/pip.dir/pisystemtests.cpp.obj: pimap.h +CMakeFiles/pip.dir/pisystemtests.cpp.obj: pimath.h +CMakeFiles/pip.dir/pisystemtests.cpp.obj: pimonitor.h +CMakeFiles/pip.dir/pisystemtests.cpp.obj: pimutex.h +CMakeFiles/pip.dir/pisystemtests.cpp.obj: piobject.h +CMakeFiles/pip.dir/pisystemtests.cpp.obj: pip_export.h +CMakeFiles/pip.dir/pisystemtests.cpp.obj: piqueue.h +CMakeFiles/pip.dir/pisystemtests.cpp.obj: pistack.h +CMakeFiles/pip.dir/pisystemtests.cpp.obj: pistring.h +CMakeFiles/pip.dir/pisystemtests.cpp.obj: pisystemtests.cpp +CMakeFiles/pip.dir/pisystemtests.cpp.obj: pisystemtests.h +CMakeFiles/pip.dir/pisystemtests.cpp.obj: pithread.h +CMakeFiles/pip.dir/pisystemtests.cpp.obj: pitime.h +CMakeFiles/pip.dir/pisystemtests.cpp.obj: pitimer.h +CMakeFiles/pip.dir/pisystemtests.cpp.obj: pivariant.h +CMakeFiles/pip.dir/pisystemtests.cpp.obj: pivector.h + +CMakeFiles/pip.dir/pithread.cpp.obj: pibitarray.h +CMakeFiles/pip.dir/pithread.cpp.obj: pibytearray.h +CMakeFiles/pip.dir/pithread.cpp.obj: pichar.h +CMakeFiles/pip.dir/pithread.cpp.obj: picollection.h +CMakeFiles/pip.dir/pithread.cpp.obj: piconfig.h +CMakeFiles/pip.dir/pithread.cpp.obj: picontainers.h +CMakeFiles/pip.dir/pithread.cpp.obj: pideque.h +CMakeFiles/pip.dir/pithread.cpp.obj: pifile.h +CMakeFiles/pip.dir/pithread.cpp.obj: piincludes.h +CMakeFiles/pip.dir/pithread.cpp.obj: piiodevice.h +CMakeFiles/pip.dir/pithread.cpp.obj: pimap.h +CMakeFiles/pip.dir/pithread.cpp.obj: pimath.h +CMakeFiles/pip.dir/pithread.cpp.obj: pimonitor.h +CMakeFiles/pip.dir/pithread.cpp.obj: pimutex.h +CMakeFiles/pip.dir/pithread.cpp.obj: piobject.h +CMakeFiles/pip.dir/pithread.cpp.obj: pip_export.h +CMakeFiles/pip.dir/pithread.cpp.obj: piqueue.h +CMakeFiles/pip.dir/pithread.cpp.obj: pistack.h +CMakeFiles/pip.dir/pithread.cpp.obj: pistring.h +CMakeFiles/pip.dir/pithread.cpp.obj: pisystemtests.h +CMakeFiles/pip.dir/pithread.cpp.obj: pithread.cpp +CMakeFiles/pip.dir/pithread.cpp.obj: pithread.h +CMakeFiles/pip.dir/pithread.cpp.obj: pitime.h +CMakeFiles/pip.dir/pithread.cpp.obj: pitimer.h +CMakeFiles/pip.dir/pithread.cpp.obj: pivariant.h +CMakeFiles/pip.dir/pithread.cpp.obj: pivector.h + +CMakeFiles/pip.dir/pitime.cpp.obj: pibitarray.h +CMakeFiles/pip.dir/pitime.cpp.obj: pibytearray.h +CMakeFiles/pip.dir/pitime.cpp.obj: pichar.h +CMakeFiles/pip.dir/pitime.cpp.obj: picollection.h +CMakeFiles/pip.dir/pitime.cpp.obj: piconfig.h +CMakeFiles/pip.dir/pitime.cpp.obj: picontainers.h +CMakeFiles/pip.dir/pitime.cpp.obj: pideque.h +CMakeFiles/pip.dir/pitime.cpp.obj: pifile.h +CMakeFiles/pip.dir/pitime.cpp.obj: piincludes.h +CMakeFiles/pip.dir/pitime.cpp.obj: piiodevice.h +CMakeFiles/pip.dir/pitime.cpp.obj: pimap.h +CMakeFiles/pip.dir/pitime.cpp.obj: pimath.h +CMakeFiles/pip.dir/pitime.cpp.obj: pimonitor.h +CMakeFiles/pip.dir/pitime.cpp.obj: pimutex.h +CMakeFiles/pip.dir/pitime.cpp.obj: piobject.h +CMakeFiles/pip.dir/pitime.cpp.obj: pip_export.h +CMakeFiles/pip.dir/pitime.cpp.obj: piqueue.h +CMakeFiles/pip.dir/pitime.cpp.obj: pistack.h +CMakeFiles/pip.dir/pitime.cpp.obj: pistring.h +CMakeFiles/pip.dir/pitime.cpp.obj: pisystemtests.h +CMakeFiles/pip.dir/pitime.cpp.obj: pithread.h +CMakeFiles/pip.dir/pitime.cpp.obj: pitime.cpp +CMakeFiles/pip.dir/pitime.cpp.obj: pitime.h +CMakeFiles/pip.dir/pitime.cpp.obj: pitimer.h +CMakeFiles/pip.dir/pitime.cpp.obj: pivariant.h +CMakeFiles/pip.dir/pitime.cpp.obj: pivector.h + +CMakeFiles/pip.dir/pitimer.cpp.obj: pibitarray.h +CMakeFiles/pip.dir/pitimer.cpp.obj: pibytearray.h +CMakeFiles/pip.dir/pitimer.cpp.obj: pichar.h +CMakeFiles/pip.dir/pitimer.cpp.obj: picollection.h +CMakeFiles/pip.dir/pitimer.cpp.obj: piconfig.h +CMakeFiles/pip.dir/pitimer.cpp.obj: picontainers.h +CMakeFiles/pip.dir/pitimer.cpp.obj: pideque.h +CMakeFiles/pip.dir/pitimer.cpp.obj: pifile.h +CMakeFiles/pip.dir/pitimer.cpp.obj: piincludes.h +CMakeFiles/pip.dir/pitimer.cpp.obj: piiodevice.h +CMakeFiles/pip.dir/pitimer.cpp.obj: pimap.h +CMakeFiles/pip.dir/pitimer.cpp.obj: pimath.h +CMakeFiles/pip.dir/pitimer.cpp.obj: pimonitor.h +CMakeFiles/pip.dir/pitimer.cpp.obj: pimutex.h +CMakeFiles/pip.dir/pitimer.cpp.obj: piobject.h +CMakeFiles/pip.dir/pitimer.cpp.obj: pip_export.h +CMakeFiles/pip.dir/pitimer.cpp.obj: piqueue.h +CMakeFiles/pip.dir/pitimer.cpp.obj: pistack.h +CMakeFiles/pip.dir/pitimer.cpp.obj: pistring.h +CMakeFiles/pip.dir/pitimer.cpp.obj: pisystemtests.h +CMakeFiles/pip.dir/pitimer.cpp.obj: pithread.h +CMakeFiles/pip.dir/pitimer.cpp.obj: pitime.h +CMakeFiles/pip.dir/pitimer.cpp.obj: pitimer.cpp +CMakeFiles/pip.dir/pitimer.cpp.obj: pitimer.h +CMakeFiles/pip.dir/pitimer.cpp.obj: pivariant.h +CMakeFiles/pip.dir/pitimer.cpp.obj: pivector.h + +CMakeFiles/pip.dir/piusb.cpp.obj: pibitarray.h +CMakeFiles/pip.dir/piusb.cpp.obj: pibytearray.h +CMakeFiles/pip.dir/piusb.cpp.obj: pichar.h +CMakeFiles/pip.dir/piusb.cpp.obj: picollection.h +CMakeFiles/pip.dir/piusb.cpp.obj: piconfig.h +CMakeFiles/pip.dir/piusb.cpp.obj: picontainers.h +CMakeFiles/pip.dir/piusb.cpp.obj: pideque.h +CMakeFiles/pip.dir/piusb.cpp.obj: pifile.h +CMakeFiles/pip.dir/piusb.cpp.obj: piincludes.h +CMakeFiles/pip.dir/piusb.cpp.obj: piiodevice.h +CMakeFiles/pip.dir/piusb.cpp.obj: pimap.h +CMakeFiles/pip.dir/piusb.cpp.obj: pimath.h +CMakeFiles/pip.dir/piusb.cpp.obj: pimonitor.h +CMakeFiles/pip.dir/piusb.cpp.obj: pimutex.h +CMakeFiles/pip.dir/piusb.cpp.obj: piobject.h +CMakeFiles/pip.dir/piusb.cpp.obj: pip_export.h +CMakeFiles/pip.dir/piusb.cpp.obj: piqueue.h +CMakeFiles/pip.dir/piusb.cpp.obj: pistack.h +CMakeFiles/pip.dir/piusb.cpp.obj: pistring.h +CMakeFiles/pip.dir/piusb.cpp.obj: pithread.h +CMakeFiles/pip.dir/piusb.cpp.obj: pitime.h +CMakeFiles/pip.dir/piusb.cpp.obj: pitimer.h +CMakeFiles/pip.dir/piusb.cpp.obj: piusb.cpp +CMakeFiles/pip.dir/piusb.cpp.obj: piusb.h +CMakeFiles/pip.dir/piusb.cpp.obj: pivariant.h +CMakeFiles/pip.dir/piusb.cpp.obj: pivector.h + +CMakeFiles/pip.dir/pivariant.cpp.obj: pibitarray.h +CMakeFiles/pip.dir/pivariant.cpp.obj: pibytearray.h +CMakeFiles/pip.dir/pivariant.cpp.obj: pichar.h +CMakeFiles/pip.dir/pivariant.cpp.obj: picontainers.h +CMakeFiles/pip.dir/pivariant.cpp.obj: pideque.h +CMakeFiles/pip.dir/pivariant.cpp.obj: piincludes.h +CMakeFiles/pip.dir/pivariant.cpp.obj: pimap.h +CMakeFiles/pip.dir/pivariant.cpp.obj: pimath.h +CMakeFiles/pip.dir/pivariant.cpp.obj: pimonitor.h +CMakeFiles/pip.dir/pivariant.cpp.obj: pip_export.h +CMakeFiles/pip.dir/pivariant.cpp.obj: piqueue.h +CMakeFiles/pip.dir/pivariant.cpp.obj: pistack.h +CMakeFiles/pip.dir/pivariant.cpp.obj: pistring.h +CMakeFiles/pip.dir/pivariant.cpp.obj: pitime.h +CMakeFiles/pip.dir/pivariant.cpp.obj: pivariant.cpp +CMakeFiles/pip.dir/pivariant.cpp.obj: pivariant.h +CMakeFiles/pip.dir/pivariant.cpp.obj: pivector.h + diff --git a/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/flags.make b/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/flags.make new file mode 100644 index 0000000..66dcdad --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/flags.make @@ -0,0 +1,8 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "MinGW Makefiles" Generator, CMake Version 2.8 + +# compile CXX with C:/mingw/x32/bin/g++.exe +CXX_FLAGS = -O3 -DNDEBUG @CMakeFiles/pip.dir/includes_CXX.rsp -O2 + +CXX_DEFINES = -DPIP_MATH_J0 -DPIP_MATH_J1 -DPIP_MATH_JN -DPIP_MATH_Y0 -DPIP_MATH_Y1 -DPIP_MATH_YN -Dpip_EXPORTS + diff --git a/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/includes_CXX.rsp b/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/includes_CXX.rsp new file mode 100644 index 0000000..f7bb099 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/includes_CXX.rsp @@ -0,0 +1 @@ +-IC:/libs/oldpip/pip_0.4.0_r5 -IC:/libs/oldpip/pip_0.4.0_r5/. -IC:/Qt/4.8.6/include/ActiveQt -IC:/Qt/4.8.6/include/QtDesigner -IC:/Qt/4.8.6/include/QtDeclarative -IC:/Qt/4.8.6/include/QtScriptTools -IC:/Qt/4.8.6/include/QtDBus -IC:/Qt/4.8.6/include/QtXml -IC:/Qt/4.8.6/include/QtSql -IC:/Qt/4.8.6/include/QtOpenGL -IC:/Qt/4.8.6/include/QtMultimedia -IC:/Qt/4.8.6/include/QtNetwork -IC:/Qt/4.8.6/include/phonon -IC:/Qt/4.8.6/include/QtXmlPatterns -IC:/Qt/4.8.6/include/QtWebKit -IC:/Qt/4.8.6/include/QtHelp -IC:/Qt/4.8.6/include/QtUiTools -IC:/Qt/4.8.6/include/QtTest -IC:/Qt/4.8.6/include/QtScript -IC:/Qt/4.8.6/include/QtSvg -IC:/Qt/4.8.6/include/Qt3Support -IC:/Qt/4.8.6/include/QtGui -IC:/Qt/4.8.6/include/QtCore -IC:/Qt/4.8.6/mkspecs/default -IC:/Qt/4.8.6/include diff --git a/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/link.txt b/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/link.txt new file mode 100644 index 0000000..3183d66 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/link.txt @@ -0,0 +1,3 @@ +"C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" -E remove -f CMakeFiles\pip.dir/objects.a +C:\mingw\x32\bin\ar.exe cr CMakeFiles\pip.dir/objects.a @CMakeFiles\pip.dir\objects1.rsp +C:\mingw\x32\bin\g++.exe -shared -o libpip.dll -Wl,--out-implib,libpip.dll.a -Wl,--major-image-version,0,--minor-image-version,0 -Wl,--whole-archive CMakeFiles\pip.dir/objects.a -Wl,--no-whole-archive -lws2_32 -lIphlpapi -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 diff --git a/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/objects1.rsp b/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/objects1.rsp new file mode 100644 index 0000000..3a8a56d --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/objects1.rsp @@ -0,0 +1 @@ +CMakeFiles/pip.dir/pibinarylog.cpp.obj CMakeFiles/pip.dir/pibytearray.cpp.obj CMakeFiles/pip.dir/picli.cpp.obj CMakeFiles/pip.dir/picodec.cpp.obj CMakeFiles/pip.dir/picodeinfo.cpp.obj CMakeFiles/pip.dir/picodeparser.cpp.obj CMakeFiles/pip.dir/picollection.cpp.obj CMakeFiles/pip.dir/piconfig.cpp.obj CMakeFiles/pip.dir/piconnection.cpp.obj CMakeFiles/pip.dir/piconsole.cpp.obj CMakeFiles/pip.dir/picontainers.cpp.obj CMakeFiles/pip.dir/pidevicepool.cpp.obj CMakeFiles/pip.dir/pidiagnostics.cpp.obj CMakeFiles/pip.dir/pidir.cpp.obj CMakeFiles/pip.dir/piethernet.cpp.obj CMakeFiles/pip.dir/pievaluator.cpp.obj CMakeFiles/pip.dir/pifile.cpp.obj CMakeFiles/pip.dir/piincludes.cpp.obj CMakeFiles/pip.dir/piiodevice.cpp.obj CMakeFiles/pip.dir/pikbdlistener.cpp.obj CMakeFiles/pip.dir/pimath.cpp.obj CMakeFiles/pip.dir/pimonitor.cpp.obj CMakeFiles/pip.dir/pimultiprotocol.cpp.obj CMakeFiles/pip.dir/pimutex.cpp.obj CMakeFiles/pip.dir/piobject.cpp.obj CMakeFiles/pip.dir/pipacketextractor.cpp.obj CMakeFiles/pip.dir/pipeer.cpp.obj CMakeFiles/pip.dir/piprocess.cpp.obj CMakeFiles/pip.dir/piprotocol.cpp.obj CMakeFiles/pip.dir/piserial.cpp.obj CMakeFiles/pip.dir/pisignals.cpp.obj CMakeFiles/pip.dir/pistring.cpp.obj CMakeFiles/pip.dir/pisystemmonitor.cpp.obj CMakeFiles/pip.dir/pisystemtests.cpp.obj CMakeFiles/pip.dir/pithread.cpp.obj CMakeFiles/pip.dir/pitime.cpp.obj CMakeFiles/pip.dir/pitimer.cpp.obj CMakeFiles/pip.dir/piusb.cpp.obj CMakeFiles/pip.dir/pivariant.cpp.obj pip_resource_win.o diff --git a/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/pibinarylog.cpp.obj b/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/pibinarylog.cpp.obj new file mode 100644 index 0000000000000000000000000000000000000000..be91349f8f529f9044a51308f88bcd98147f30a0 GIT binary patch literal 94707 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ξ^ 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 literal 0 HcmV?d00001 diff --git a/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/pibytearray.cpp.obj b/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/pibytearray.cpp.obj new file mode 100644 index 0000000000000000000000000000000000000000..2f976365eea17564c6958f7ec3891c0171f75c19 GIT binary patch literal 26837 zcmc(I4R{pQx&KUd5*A!DLDw23>Y`gr6hc-4W+j${WciQ;BMJD0h7dxD1`?A^00oL{ zHso|V7JExC?UlCP>%H~b_SUL!u`QYq%mzPdAgBQ>YSqdRqyYpXDEa^1b7m&HBw+9J zzt3~`Av^E9=RNP&dCz-3=FCzcCrR`iK@tLtWqWfZ6EY6cuv|#*%TVs(! z+YFs zGD&s&lLIINbkQHs<&5`D^hM*w;-&_4afku>kbXHyM3Vyvj^TYkYEZ-?T zI7ZU)+~Jm>)2grKDbcr~b~)6R;Xha3EjXaAlciXqlJ0-7v~7d_(imcH%A3nR8|^=`n|0mDI3@h`Ssx3$W-o)$W%9}5}E21msD|~HkP!62*olA zo#H}{#a)uPq=-whxOnIiYR!23O9@d`|1(y<*VoU^^xU{1lIMh066@AxC|XWZvs(`B zkYU;5XSkt_Bghg-&z#fxH%0D^#qN` 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 literal 0 HcmV?d00001 diff --git a/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/picli.cpp.obj b/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/picli.cpp.obj new file mode 100644 index 0000000000000000000000000000000000000000..c8b6f17b8f882af5e5dbb5342ad92cb591416b2b GIT binary patch literal 43733 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

?BhiczCSTZk3N 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 Ak^lez literal 0 HcmV?d00001 diff --git a/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/picodeinfo.cpp.obj b/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/picodeinfo.cpp.obj new file mode 100644 index 0000000000000000000000000000000000000000..a13c0d81bc400622e8a846a238f41527248cede0 GIT binary patch literal 4213 zcmcInZ){Ul6u)onMrC7+P?5-@Pbd=z>ss7K=bz9qA7fz~3v-Zw@YZ#2+k?@T_7%p2 zWU&l<)CrhkW~~pC9k0k85FZF=p^KlM97GXjgcplj&5&n$OzeZ zv%w(oWxYL#gnh2UKHzu+cr~@NOx&iDiLblH-%z0S!Kkc+5D&zFtq2~uqNBT}b`2fp zy43(42cEs5e>L@JA>Xn92Y?sg_E6Ax!$vf2iv-d_R?H#fB#wecuXS@Pjg#_z@nGc@O(8^ZRXEJI%|P zw(->Tp;PE?dZ)`$#&FV7PB3wjiC0jhvPGF^WJ@`NgVVU+6e3G`oryP@c$S5#7A*>E0|rb|)!0j^VjM}<1{V&k4VYUH6->C9Sjdtd6p8o=~ z=FNX^%5;0sY3>4dh$mzcGG+HYO+$G$m$3pb+Q!WZx-8Q+Mx|NF^SZUdoEW_ViFR|v zA`u!5#@fI`qk-C)P)xbFcuIJJXz~hn;q~`fW}p0@N|4tduR41f&QgE8_-Gl@`r~z% zFGG9%@#3Rpco+58>@kzq%w$3RWsQD+Hsj8wOCY0; zRQ#fYJny&d;lsTQx!AAq5 zz_2ky{z|7~7y`GWm9qKwBey09bC^W5IRYO%nx4jT*J#oDdBsh~97mn0Vn;-pJJEQ) z(Q5n%c4{dt8nz9aN{J8F4!|=8>ra6n&U;~SyNz{r8yib;zYFl-e(%6Tn#$#(x5}M& ziVfq+#kKM!&5>YgkGkoL!d5!jtTTGAQt&$K+E89ldlD; z0)tFfC(uSfGB8TWW`V8<^p!y00AiMJ0%BGOFhqC z+b?u)2ps^j5S|j6F|_O^>!5##>Yjq0>2?A_A4|vyp*tmXmjIy^H?@Lq7B}(s>4O>| zY=7P&q+g2Z;b^a>NBW}Pa4d#;RaK2}pNf}+NU+u+A)48SL4~g)NHu*3d7hJSFNcJA zfCJ_&htNN4#bBA~@HSxvaWAHsg3)n+c})fPVGeK{#Qr-SCmfO=j%5{~e6#;XN2{|% zVgG$jqmbt14cHLgBWze14ykY-Isx5w;URJ`rraBiF}$|l&@NCpB&;O9h*4-iz*SgX z4hc_vW=n7m?%z*cuB3zO1sSwSlGVF@9Su3g1gxQ zcQc?wl6w*OeS5XNJzBgSwpMhwt9K;&8F6c9FsUh9Hi<}KO>^t!^^L8nnn?DjEq`O8 zaIgO%JMC-gR5c%E3nWPo4eG;MTvY=q=1l8V6&j^I8-9OyFqBAW3CzgM=>`pwm79y{ zZBeijjpKW*e`rXJY4Jof0=pOo)%`wdyVD5h(S+I)N@%s{11$#3i%43m6;jx#0=p{$ dKY@DHEm|T8hfk9ySlYfEYkT|cHk+`({sJ?I4if+X literal 0 HcmV?d00001 diff --git a/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/picodeparser.cpp.obj b/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/picodeparser.cpp.obj new file mode 100644 index 0000000000000000000000000000000000000000..83992cc383fb57ba4d8a9a3aaeba0fee406f65a3 GIT binary patch literal 133017 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 Y%nHRS>s?vNPiE422X23T`e2RmzZzYmO8@`> literal 0 HcmV?d00001 diff --git a/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/picollection.cpp.obj b/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/picollection.cpp.obj new file mode 100644 index 0000000000000000000000000000000000000000..d9852d308cbc6ac710f2afb27c26193b0e1a1134 GIT binary patch literal 8813 zcmd5>e{fURmA2AzPB#F}0Q~?Gi{^6H`ien+A@BaI8T#rL)Yxg< z12mUr3AzKFudJzc!J;L0#v*S%R^7T_alkfGjkhxByK3r#>q6h%_KE92uLGZFHUJ(c zK78IlbuA~D&35#C;Ilpymj!`^HUm$A;Uf6vnfg9~cOK{Vc(lh7K?U@qA7!ixYeo%-$0usd7{hWEi&Yt>hVI0tI)w#w2(6(3`4rOEdZ3<`Zg8y`7e zfm}Ist-gf|Z2=^{R`7lA8ouZIFp$HCW&VxY7X9^&8=5nT1DQ2P9v?pd%3%tDvDa

u3xZp8lwXiKD7r(`B`=m_)o&BZs^1me_eFO^ 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 literal 0 HcmV?d00001 diff --git a/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/piconsole.cpp.obj b/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/piconsole.cpp.obj new file mode 100644 index 0000000000000000000000000000000000000000..7f5a426b684b8626756327fa9dc98d6b4ff6973e GIT binary patch literal 113752 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 literal 0 HcmV?d00001 diff --git a/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/pidevicepool.cpp.obj b/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/pidevicepool.cpp.obj new file mode 100644 index 0000000000000000000000000000000000000000..32e065e288c725cfa6dfadc10029c954f337d2ae GIT binary patch literal 13932 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 literal 0 HcmV?d00001 diff --git a/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/pidiagnostics.cpp.obj b/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/pidiagnostics.cpp.obj new file mode 100644 index 0000000000000000000000000000000000000000..a822ba426277048f7e54b514af1fd25828f0180a GIT binary patch literal 12507 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%0Ayx9J3X@1fqRGGZp;5g5)fgCMEeN zNDjk*Dao%hBzb623{#{ye+WqfrjU}{OAC%vsH{2&Nhc&Ub20m!klbgJ;L9GP#Yl0E zK;p4U{u~mTMT&D05=tq_FQkO?`1kRYeMH~*-+|=NUU6u&vZ-WpOxODisvH`(wj!CF zo27eFWLZehU6MmFW+6TINDf7LhnDgb>d@?~O>$^gJ2aYIDw&)?$-&Q=;BenlB;r{A z`=N2p3s|{M#UWt*-v?RFLBzCV{m%#Kb!gku7|>(+-v#-#L#xZ+kRT?NzesE`Mi*F+gFUIUP(xEpf{}R zG&G*fzB=rjz~-L**3mRhuZ=^MPi9CCWk`-?NKR%*-pr6(&XDA)FlmnYcAF#+#2?E- z(X=tw**NP^;xVW!uz7=e5$3JI`=en!tlqu)H?BivTQnRR+-Bp87i2YE`nJ%Ze>7EP zz9XyF2YamYb!jimR(AIXBasck0o`O(j12aN9@YD|rI&grcJCW zv&qtCWTCHJxaxrgs&?$y!7B7V_&99*aTYnPP5MGxtIbK6i*2pD_JW&C`w-KnBG%5N zF1Y4a0_-oG)$S{50k7@gflp*FNG<7xqd$An9MX(N>@<} z8bmlyYO|S{v}Kd0d^^+8%o(M(qn(&d-!*n9(d}!OMS%~$4?XH{9SvpEUK7?MdNg~_ zO;!G`Y;Bsn+2wU%y;~2B>OKBY)^@cKL^rC1(tBIJw7Rh+5QvO)1=eO6wApuy*V{cb zFx;T1zo?I`K*~6p{0_x25fDF3dQK5MTy|1A$G!P;|{uxD7XjeqH>o z)=m5fCyta)n?pf=)XMY@5s zg?8xvF&bYg?hUu#y44oQ5Vo%C=CagPY*06u9fSB;uqUulkBkiHoMo;c0#ECjQAA6B sTV+6mF|(?MUwr&MHvUSzKR6uGdjb(T@boDnT8g-Cs;Lf-(B1Dp0n)>z=>Px# literal 0 HcmV?d00001 diff --git a/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/pidir.cpp.obj b/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/pidir.cpp.obj new file mode 100644 index 0000000000000000000000000000000000000000..3c31eb415588494faa13013beda00f3e34533c97 GIT binary patch literal 45743 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 literal 0 HcmV?d00001 diff --git a/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/pievaluator.cpp.obj b/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/pievaluator.cpp.obj new file mode 100644 index 0000000000000000000000000000000000000000..a60a0fb6ff2f3ed76e4de0673c56543927a1c2aa GIT binary patch literal 86389 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

mjIIJ`8AkyciRrstV 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 Va5nWYVMZm+(IcNWkOYYhBqkdk3L4xj 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 WmybRL_o*uMdTzD2wb`Kr|NjGgWa9_` literal 0 HcmV?d00001 diff --git a/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/piiodevice.cpp.obj b/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/piiodevice.cpp.obj new file mode 100644 index 0000000000000000000000000000000000000000..cd8b5a650c8b94e44d8bde971d68a020191a2494 GIT binary patch literal 96864 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̅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
  • T3m$RV_%*(YvT*l1`{Te7u){S=f<1%odj9Knq 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 FzX5A05gq^l literal 0 HcmV?d00001 diff --git a/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/pimath.cpp.obj b/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/pimath.cpp.obj new file mode 100644 index 0000000000000000000000000000000000000000..e06c6f9ce8a59caf3cbff2bea1492503387d9490 GIT binary patch literal 67937 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 d literal 0 HcmV?d00001 diff --git a/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/pimonitor.cpp.obj b/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/pimonitor.cpp.obj new file mode 100644 index 0000000000000000000000000000000000000000..55234ee3de19b1b4ca786afe337775046013816e GIT binary patch literal 1284 zcma)6y>1gh5T5nfCPFDF3_^lp3kpDZ?bw!OQ@}YEGL{?&2q_XmI{)Mh2abI@pPj^_ zprD|Gf`*<4i9~VKJOocbK?Tgrt}o{}1taawH{Z<8&d%OmM{EGe&lJFAMrol!_b6nn zCmYo>ksuIC*zKzQUf5fu*DM=~C#pZ4CLJpCxyy6jx&^mVz;nWUtzmwea8BZ z@C+n$BCc-`PJ+bFY2<%l+;bL*AJ7A6vai2 z>$EazT-7S4)g`Sqwc@r%4XOzu-t5~aBTDyoZis7}>GTIY2GvH@Qx!EFB*YbQ5cdQJ3H9nCjx5j_G`bQa8Kc`V zqTcJcdog+#BLti&3ldQlM-FHOWzT^cdLtJR$)CRfFNN;3^A}uZL1tV%Y~1hAR1Ts1w#XdnI3u#W51+b(tF~gW3|*-{rTU z9V+n(s4teFdsyG_y$**99CP1TtLmdMX$MQ#I8*hj^2L}`a|*uV%pFm)@yL7Qj*g8v z4SPX2^Faml7rC)mEI_%hoMF&AaKUk&KdSGxck~rCOAqE}sV$~joyXgaj^j*ceW&gC Mo>}l;TbxG!1IzrK(*OVf literal 0 HcmV?d00001 diff --git a/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/pimultiprotocol.cpp.obj b/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/pimultiprotocol.cpp.obj new file mode 100644 index 0000000000000000000000000000000000000000..3adf5d78ed82877de3b70cc21e7630bcb0cd9851 GIT binary patch literal 1972 zcma)7O=uHA6rOEjtx`lJ0nw^^@SxIclQz~U24hpLm8hjH6ueB*WUHgwY}jmU8$^nF z5KqOEXFYiG=0)&OP+RmM9z-amUacS=1h4A*X4lzGtKbX!=6m0~_h#PwrJ!{%$oB|i zx%lVaE+X;;vB|c3)AE;Icg)q#or>{@ie^ib@#?KXS z$y`smb%KM`IZJ+@{Co(Ze7Wbd1im10LCT%4U6NV{wH!T&M&gxk^H~^dHCu#EK(DN? zW-Vz!ue@2!o|Bf;*>Q=X(UX)GG^~@-f?kX3l3R-(@>}fTT70)>?W2aR?du@j=%xvE z5?I;-Qd@^!hGNS(EEqNLV~?Tkyy|+numCia&!5l_iT+G~Vn$T^dJ~nIk~5WX%p1vW zeV`#MSD&2IFNo^UL}H>pt=Am;npt)a>uKY-(aTs2Nl3KjDAR6sXnQ-O(R;KZm}eJ# z75cr}-aPR12`5k)O+Z|EtAN8z4u!^~4@zujank!GhaQ}hc82Zn zB916T6ZE-^LOF%bDpXKtRH4fX6&1RwP*ovUp_>ZbRp`D#4-|T+&=W%5?4J@kKwpe4 zk={!m)`GEJ66vH-d5on=gNrd^N?0Z#$j@JlUBNQ4ekdiJbGJOjvFLP5bQY05s#}5c zgmBn#0lZ6q>LFVYCDAR?Mfw7t1+vbyFptQ>V1dswvh)__HCfoFz~>`b5RVDJT9|G` z!}-CT3?%$wq33UPg^C9d(3T$kZWx; zs+PEJT64ZxcT0}js4>IA|H8p$v&jteDxY#n(4xPBdIns(Y+FXTRzvPFw~*mn z*rH0Kaz0eJG;q4WdA%{ohxtEZ3aM1to~~KutX1IxSz4InCMM-ENk2*j1%w|H5UKyE ziAKKIdzAB$;k<2G^tuVVI!uL#k|mm^li{e!tnf1!|6-~)?01Y`aqLE|?)8ni8DZD? UWT|eZkzp`(=7tQ~*pWxaZ|l$?7XSbN literal 0 HcmV?d00001 diff --git a/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/pimutex.cpp.obj b/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/pimutex.cpp.obj new file mode 100644 index 0000000000000000000000000000000000000000..b56fc986bb10d85d365e02dfc9dffa1b1b7dcef5 GIT binary patch literal 1627 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
    Ne0llE@i&&)xQ@L; zCYP?BDJZI(9E~qdbUkmGKG|1B`D&gnr)TB(DU&f^Dl6g_tQ8bpXANPw)22t+O%o+= zT`O*yGWmwGDKnd8A}3cyJ_J0MO-J0t*`?O#W3v|xQz%~Vb}V5AhZQ$b19RyWch>ad6nIWH5t-H5T1jK`l9S7C*pu(dvllt& z2bJAiQ8x6tf?m_h%JCMyg6l8GUOgpEI{|5`g6pr3>+PLzUD<>iMi9ks;t-7NSu}LS z_-R9x(4t~0=tCYiO)Q&HP!Kc}V;yt<NrBPXwjok+BE4=Xq(Wcwoq|2s`PJEe6bZJ zsvH|BR2f4P+AA8aky1TMIM!BHqIiOjr%J71;)tKssg+160jW~sdd4yo)fvtCDfMcN z)!IUpinS5MDS<|6_GsjBRjoCUU7K3eZPP?bxX#7C;eAR=Cr>3C#8U5LMH1D^c75Iyk3Zpf`lv}X>M2yMjm?EnyiLT%N?FXv z(g-a6_(jGYul~j9TqvnyB#o9|9JXml-xS-;4)-ZgOn)Uap*)mWVqM~L-y0TWxo>*K z1fQ}VE#vq`{T#8-$Vufj>MpxIJGIp{PD9S=iJLyBl}-1}%)f5@P1lx9jBmtR)wt|E zg)}WqLb@x~;w5MAQAHH7h4r7BH%&zwuYYcW){AKoIbC4Qe6)pw?YO2BMc9;|5{;ce z_VKYnrBA$oww}LH&=|jXWzpRyZniC(c)6HluucUi{!V1k$RQcYzj^<`!!I2;V0dY1dBtx^hZ1=lX&;^c;TR1~y>Z%< zvKdn*VxkA}*j%z>TyoeY+YF@wMIFpAQHLChJ^cTyMIV2%s_~q~FDAWpQq*dH#HpQ@ z@#Rq{Z3D=o&^9qHw1u+tcyf|d`u}3mW9FMQ7|oJOq0lUaeNbfcijH4?G3m{jSX<|9 z6V`v!E!$#hzJF+9><$fYomQns%Y>@*HD^twujSD`eJTj7eI4}RS9 z<@S@O-ZT_clM(LLvgv(FsY5TDSZemo-K})JORt?iwPISi@EbK6vlpeM6K2d9|C`B` zIXS(7Np+R_W=<hI) z=o_%}1VM|`l%GfFSk#AN!Jl_U literal 0 HcmV?d00001 diff --git a/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/pipeer.cpp.obj b/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/pipeer.cpp.obj new file mode 100644 index 0000000000000000000000000000000000000000..c34097fac5b094befa901802b3816e61594e4b92 GIT binary patch literal 117515 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 literal 0 HcmV?d00001 diff --git a/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/piserial.cpp.obj b/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/piserial.cpp.obj new file mode 100644 index 0000000000000000000000000000000000000000..55c42d581dc8e67a365e566ff3f1cf0ef79242bc GIT binary patch literal 100895 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 O<#BX>OuVxd;{Oj$tJ@*~ literal 0 HcmV?d00001 diff --git a/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/pisignals.cpp.obj b/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/pisignals.cpp.obj new file mode 100644 index 0000000000000000000000000000000000000000..2de0601fc1eeb909623e2db48560a1d587ccbfd6 GIT binary patch literal 2447 zcmb7F-)mcS6hAk)P2*OQqEUx-?kZs_uD3}WV(WuTm!w@K&S)xSR=7>ln|d`%!p%*y zl|2-*%0>(ef^R+y5e)cJM8tu}poQVv5dQ!fK5V!LVF)U+c+U5GbMsABA3Sir-*Z0a z_sPAvDd`a)`g#Q5StiMnYU$@KCi7!k0=S6Wmbv~YUJ9hw)b*^D75okoV-UKb=BicE z<`orN-bTNv$N`2SNP*DWRCsOxRZ#oK1(3iQh^S50U*0O4LS@1y+yF(}4@UylpE)?l zHpQc#NHM6yre(aPO+^L=*+su!&~MYO>p>ms#+r|#0L?^D-ucOTu5rh8 zT|vF^XJFHFB^8vrx0_=-om|^l3L%=nQ7cR(tJ0lG#|Ti zt8rVZo$R=3s~x#k?|A(?SJ9y}?%(;6ZlyNT*gvwmcN1$<RSy(jMW$Wrg_9q0p*MF(n?RE=oA)X$IUi`TK((17NaNmCSRW!2x zn#(~se53VRxAE7p`l$bh4>k0;^aDUyFN9)Cr7 z!HCXAC+kLOW_ohHo;3@TroI_Ep`5B2MN7$DP+m7miz|~W(TGwp%kS%X>qRA^&Z*M? z0Xv(t^%h7Mz0%WTvV2(rpq?j?sULJ>L|6zpfqaM|04HpH8Smc+oA-GeuDDMr9`bqT z_k8mF;T2n2pynxug`B_|PvT8P*k$B(#GWDmiTe5snd%=!226R@C$l}1zXyVN(rP>~ zk0-}ILTQX)pWyinasa+?uw4h+cd%Oy_N#;a?qD)@#Pf}##PbCmEaYHsqQrZ#9BBcw zQ0DIJMDXO&X-7KmNFO`WHIyhe0BXS~>L?LC z=mKm=6{Biwl(NODny*y20nex{Nm$K=T^~em+u$hPZqPK%$``ay3^j`4e{E~1$;hN} zgleRbS!TQeK1YsWjXv@tB5TMzGYarC^4fsU9|R+fuv+3*2i?FeZQ(^T_euQX&>QI{ z#~~8GHmqmK{@We$J8H+0)h*F4NmKSo6}}!GgxwO^2MemgmxE0zZTAxh(o1$2z2y`x0r(?mPl zzFI34jSuwV1zW9JS<|XjfR7p6+S&qDe@`oz*>gHRE$^I}OD|>kqZgj$r8Rw1FIhtfLJQNw;Fta&3P4eaR(n2x2QC&Kd(V`qoCWj+JyjHxt zt|tY*e$DCOhzO5ZFw5sy6!xbrrrtO;pVG8yEvGFF_B3nimR6{h^2z_d2_cq}W~^DG XT-9>fsvcRw=@a4PChKn45GTXG#T|B{ literal 0 HcmV?d00001 diff --git a/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/pistring.cpp.obj b/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/pistring.cpp.obj new file mode 100644 index 0000000000000000000000000000000000000000..61ca23ec06af1a917bfe4b9e732963f65420df10 GIT binary patch literal 51461 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 N4e7hK2NX6){|{;`f_ne} literal 0 HcmV?d00001 diff --git a/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/pisystemmonitor.cpp.obj b/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/pisystemmonitor.cpp.obj new file mode 100644 index 0000000000000000000000000000000000000000..6409c24d6c5aa5bf5ab2cd5001c1303322af30a0 GIT binary patch literal 16644 zcmeHOeRNbsmak5C$AFOV5ncR1+A+GU10fwk2nu6j(n=&iAVC~JJ6{bph9r~j@HHr4 zr)O;2o?#ty(RI(L1H0&v5ocjU#WP{SG>GfrI2;cQxVkfXmKb)#BZH_6?C;jCSN&eU zj-zMS`D1q8Ij`RD-TKw7TlZGoSN&d6Yzl?Ub?eMG3a=C8Jrhc-6~l0QGS4dW3`4)2){aMk zaxRUBe#<9JDz-ExefcO(6|mTW3+bCsX6=}G1yq<0$@6->CXpaYNk-npQZp|T_K2c} z3EoK-eMKNvLEq=fzAW5xzmqKn9)jUv@N%zZ&H0))WfDuc90gw02(v^8ipPXv??kio zJ(m!RMhfw^(l;5EvfttoOTVYUn+j*2`&({Zrg@Vs{T_mR+-RKFGw*WZ(R^tRw|AOm z0@R6f;1zwFc@z(}uWSlSxXhu;RYKgLc;uJzVTkWUFS$$~Lx6I?Gat;GXz?@g^1+*> z^f__QJnMuZo+qQe$rk^S|HozGl@wVfAn7XyuQk2j603dX;MIWlpyJW^%ZD|TPbew1 zjF)&1rT0tozGSjxyyL)o1H9iTebUe5ze&ZGaS-n;c<#t`=f-I&ZSqqK|m>;B89deX=*P<2urj*ezGYODloB3!)DLk`a}6kQFpEvV?eMOJk87j3E&{0d_Lt0>)#6Y|c?vb_^VH z2xcUrKLIb1*n|=qUEI!aS0cJm^=a*h`j$q;qECPjk5co*PQtN|tiJxuDHx`P!Ug%?&z7kXgphpc*VIy?S*JhY|gp7 zA3a2ZOQ2Q6rL zDCmecETQfYZ-rv{aw4446{j^itI;`)gbu$;q4c1y16Kw85kLyMH08_V-UIuRk=-aW zMto|)iT^l95q}ga6Nx8L(hSD9R9F9?x*9Onn?Z<2sbOL#;ja;EYGjW!S!~4mDe|cd zHL0dB{ei+{4)qxbBrPtjC(d)}oNXl7Ns*!1;ztLFv{Yz`bebd?*$*Zi$;cZT9n$Eq zMn^O{uF-oMy|2*;jZSKGN~6;noz>`^Mgn7CTU;8IXjG=rRE^3ts?un>Ml~AMYE-Y$ z9U3jts6nF^jqcW{Rih4#!Wykq=qb7;BWrZUI*qzDdO)Lx6pHj*l#Fc9;*ARZjIJ{H z$;c*M`-DbMYP4CQ$O$Ogs>L)@=txGkYqUe7T^jAys7IrH8tvEU4UG{M-$oGnf8E!L z3tHWe^HH47;(ROC+c#8-`>x{4x8#MVu{qYp9M0>WPYgAZzT4>L<5*OOKfaS-U$Ig{ z^T?`(28PMd{U{#RT1^Z$6#sd>6(x??2XS9c(wB1?Vi;RbOaFk}l5W_r;on>WW$LJ{ zuD`o8(AXlbZ4u3_?V&)6D5TKuqGE4~_lXIUH2of1*2u|G@rq#BvD}()W>5j_#fZD(?)Js2x;%J5m+xpoZaUdG-#6Kus4Ti6v(4$Fd&+Wl7(D zvOnp2gD>=J6nBUDa)d9(`SKoL-lt23#T}oKgJs~o;5`#Pur|Mco?4fYUPmN3?#58g zy_NAwm*Z^Aw<9qIlFl`78b!qudkuE~?hP9*TyTsT?*2SW+={*4W{3NHmN@RX{7jbU%Yxt;Ckjw* zcsk4d*dXz4mivJm@ky3@-yrdV(|vG|*hPd#T<+)~@s?|JY>?>5c0V#me4IVHJ4d`i zzZ6vKXJqS5vh`uv`j~3{q>Ebo)-@U(9LjcY86?(UGIH+28T>~v!9Pa)R;@=(a zXGV(0vfNunikGw8PmL7Ev%F70;&dlQh{xUTUyT&6x!t=)ifFd`g^}W)v)$W9iv8K% z$051M{m}^V-$UKKBgN-K-G3M6fMVioSq}Jtq!Lz|1J{DfZQkKarVZZQ0GVC~TUIYtg`xc8QL z<)V~(?8$dP_k)V^A}^iiJ4pZ{(v%QPv&9Y zY2KdH%56wrHDCO=r1k`a{+i!RZ*0C|e%pkEU|nm`Zpu*RR|`=ReAWE6g2-w4Z8oJd zv&LEySo2%#O5W!i+XLhuOp32RR31HWY}#~rC(CK{P2t#hDyfEk3LG0xCEZPxcT~P}iAT!bxn!)mQlIZ!GK%l; z?F@ILb5M4TQ%koO8&7N-PEeVoLL|$vrK1b+_|=d6^ss?$r3}}y+UnU&O9RbelZ@&i zS3eSk@J_0&u3Hrf2bRrjZwumEUK*G9|C{61%E}u&V}qq-rQ=rw+a?x|Z&}gUxp;hM zV0qCv&&^%I*085(m1kzK?bi9@=a-gvIy&3Q;=l8h6iz9`m$rP>xnuQQ;aHR7xMGOQ z^#IZ%`Rq!Z^BR&==6d|OE;&}Z zb*!$fk)F7S?u0P>L3*f7JMQ%*k^E${#v^;EK4N%d!XWt>~>tR=fr; z-gdDEl!*c(XeMP$8Lg6Aur~B#^ ztI|JZx8Z-%`CHQ2m_g@Wv(BoEhl6q>&TK&+Qz_eI%ljZuz6hhFGheJj`CXjZ;&&*U zB>GUJGeBK9^F=oN)c}+&t^!&vWmQ0|c`48eDU0jcZ9prfY>(#k0* z5}g8S1j-ili-ysBprx`lsL>IiCdqqOqkbT^6mJuhrI$JlOG|;+(%XU9(iOV)F(9^d zo96ujh%J2$h%J2^h%G$^#P($&9*io0*wQ+Uof<~_(VQ}qHAhyqowa2nD zjlKi4O!{C3&>D%FfVj7?Mlqm!W$ix#vA$1$lm!}55@&tGfmq*IAl7$-Mzeuf-&&w{ zsrh-0j%svXqv7~&O?%6HF&3ypq7oo_qUDR5bnR_G^i0YZbAaf%kT1Rq^gW3>fw=91 z8a=Ji&w*IqP9W~>OvcL=KefNm@}$ zrEH8wLxCD_W{VLh@4=ZbzJ-!!#B?CGbO8`+*#yM#pd`v@3lPWS9iTRx`QkEk%)O1% zs2GSfHvn-wXytJqKLFyfJr2bFds^2%3&h@i35YfC*N8rBa~4RA%?laxDm9v?(Grbl zl`t=^(LZVQyheL8`n5(MX!NN@gS1uTg9ga6#Wg_e-6=qgQbs=Dk&_RYN3VXEM|r4G z@_qrtJQ_LAwSzz$k3m^R6zFp~$Kz5Ujz=93$Kw$o9_3bzwgGV;$ACBP?#F{&SSn~@&ta+bCuLH4WdYQ(WhaszQd<%d$zT<&-Z1ftA$2Jv+BRvC%H80Sp z4T#&W0OGc5fp|6k7>N6zZ;#ye6^;JC%@TTUg)oQm#oKzm&^xv!Ij^qJ=xQL2YBLZ= zbqf&tZ?cs92*ijmkB;MWY&x=4wQFm-RJhL>ZoC ziJ*d&c8c`l+-oF5`_1l2fLrOWzuZ9 z7rj#=JWK`I&23Y)cj?+i5|I|amR%vy5R@K?hM^=)*|3Ipy4Y0#T`Xl+qU0!efO4gb z5T+&ggs68$6gx(woe{Oo7bPee(UXo5W#49;*1c>~?`Y5yH3o5zo zSRi^D=L>oYaa(KcWnWs0KT5Q;EnFOIrFhVB{(=znl3$3AXtQnYE=@NjZVj#4vLm>7_HW8j$!lPE6GsVihf0Et2KKdsfCbzNVPZEB=wMNfOAruHA+t& z^l<-MAZbABl%HROWV%Ii0Fok$M%5}RUFC)nffyS z|A9ktwxP57lp-MW{~pkYokUDK%>Q>FJ?5ajt@SYfF9A8%=^(4@#}mqC=@|$8Wxf6Q zx#HxZ3abF+lQMsixH#L0&- zuE!L|1F_RV^TN*AtvFYI3FlqKp-jTM&nOA4CYHF>FlZ*TBwtBrrLg20C82e}l42#H zRlt&JC862Hk_IJ#0205ya&EnUrk>=?S!Ur7bETGel%5}HiJ^IyO>)>K`NAf-mNo|R zFf@P1BJnTo3rBp=!&pIan;|ALm*+U3ed!@?mt zQ5ljkHVM5);KSh1`vj|Gy-o74O|r!%*=3U)v`PNcCi%i98BUK@d60$vM*NFbFl?6i z7qqQdssu7R*Q15Zqy_#3v-InI?r ze@b&}V<tVD$4>x9+ZW}wiTIeI{;@Mf$wLTpsp ztTRX0Alag9uCR@rv z?PX;^n$$cDu2O!t&`mO%6DM|d(HaH6E?iUQ_Xpd9_<%?EHIqXfSo-0`wav9NnpYP# zx3`7Dlp+d?i!A;#MN)NZl4uLftCwizdrh*LCu2b;f2!S2bR5bNjN6*1*cv z7C$vzV38ErBwm&jsaCpCN}$@L1YUFQ$&}ar+{rF;Voy)af6aH4yat@u^%<4}rjPk? zMz^Ne8nx*{Zx zv0~}Z<*NeAgUz%pk|r0`R#(qvQI(NJu+%t9cGUQgUL`TL-D(S9 z^Ht}U(z;NIe{P@yL!0Su353F(?W?G=vAUT(VyO>?I?%nTeqI~?V4?*ILS4%OQlEZ; zn{DAZBk?rJJOf9jY=+dd6P#7&_ZIPBX12Ek3>&<~{yM*WM09pFhkZ+%ttKKzVw6_d zaYNqLkYL-yr(vtrn|=~@ff8rp>|MR}bhFWXtCnJ_bH zx1op1dRPQu@#M*i2T$Tn@V20A(Zk|pg;Mq&LA-bqS^d8^FEf+P3j2rupYQ+v|NZa1 z|INJAvZ&`Y< z52xoP_i#F^o-asN54_n4c(c!u?VYCuO%k|wmJHJdu*Wd$xFYv^TtPPb8s^qdGqgvb zm1^~EecmdTikW?@vzX7c_D#2)am8Ntynd-?*}mR5(63mXm1~)6#e&{-og1R*zo8e5 z3r3!?G>VXD{dJ}tPG~PpCX=_RSyVya<9#lRI(WfE$EJR;~=*tj&Lr5o0v2V$~Mw({#$i6H&GO~XunS-6D zS%GYT-dE8yGuoCd$b&rkm$B4?J~}}-)wUn3BBJsOK3pjQY7k# z6yFP!F?0!?$Ee^W-7)4XVjyQxS)$*_qFYg&0eSTi=5O+FE>X@Tt!jRRnI#6_L6l<< zGZ8ZJ`;Y>(FPz2jjUz}BzY7sbsC!igm5JYjaxU$YcsRrtF$oF2yo7e2EN-+&jM%+~ zw>hEVZC8V$GCef+_W(f-=Ubiq8-X7%do)6xnbGUm*2ls=P_E~j zuHWl2!^J<>T)*FEhS=e4*W4ATv*FiDoLi37p&7_u%PrPdH{@G>6>oX26nEE!*%EFw ze|hhzb8|9xrS`$4cWaz`y#`->;xxXsE4V8>$L{%-)8QTOGUlk|a!qHqYm1w9i(6w% zc8tjdOjeBw2StP$6A`(m?A2Irmehsd`L1k?T=7^|vFF)Bbh*=Rd&1|vU}IxxOR@vP zHoKl^4Yxm*Rr;Skt>u?Eudh}e+ot~(YTzmzsAbw#U$`ZX)1{(neffCaTl~7~^tx(M Z8-B@hJl-%pQ9y;|;P|%I9uHIz_zz^;ikkoc literal 0 HcmV?d00001 diff --git a/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/pithread.cpp.obj b/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/pithread.cpp.obj new file mode 100644 index 0000000000000000000000000000000000000000..80dffcd51042850818ffa3c50f10aee3a89764f0 GIT binary patch literal 22592 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 osAvwO`?@zq7z;Vgy2NOTcO52T2 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 literal 0 HcmV?d00001 diff --git a/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/progress.make b/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/progress.make new file mode 100644 index 0000000..46dc81f --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/progress.make @@ -0,0 +1,40 @@ +CMAKE_PROGRESS_1 = 1 +CMAKE_PROGRESS_2 = 2 +CMAKE_PROGRESS_3 = 3 +CMAKE_PROGRESS_4 = 4 +CMAKE_PROGRESS_5 = 5 +CMAKE_PROGRESS_6 = 6 +CMAKE_PROGRESS_7 = 7 +CMAKE_PROGRESS_8 = 8 +CMAKE_PROGRESS_9 = 9 +CMAKE_PROGRESS_10 = 10 +CMAKE_PROGRESS_11 = 11 +CMAKE_PROGRESS_12 = 12 +CMAKE_PROGRESS_13 = 13 +CMAKE_PROGRESS_14 = 14 +CMAKE_PROGRESS_15 = 15 +CMAKE_PROGRESS_16 = 16 +CMAKE_PROGRESS_17 = 17 +CMAKE_PROGRESS_18 = 18 +CMAKE_PROGRESS_19 = 19 +CMAKE_PROGRESS_20 = 20 +CMAKE_PROGRESS_21 = 21 +CMAKE_PROGRESS_22 = 22 +CMAKE_PROGRESS_23 = 23 +CMAKE_PROGRESS_24 = 24 +CMAKE_PROGRESS_25 = 25 +CMAKE_PROGRESS_26 = 26 +CMAKE_PROGRESS_27 = 27 +CMAKE_PROGRESS_28 = 28 +CMAKE_PROGRESS_29 = 29 +CMAKE_PROGRESS_30 = 30 +CMAKE_PROGRESS_31 = 31 +CMAKE_PROGRESS_32 = 32 +CMAKE_PROGRESS_33 = 33 +CMAKE_PROGRESS_34 = 34 +CMAKE_PROGRESS_35 = 35 +CMAKE_PROGRESS_36 = 36 +CMAKE_PROGRESS_37 = 37 +CMAKE_PROGRESS_38 = 38 +CMAKE_PROGRESS_39 = 39 + diff --git a/_oldpip/pip_0.4.0_r5/CMakeFiles/pip_test.dir/CXX.includecache b/_oldpip/pip_0.4.0_r5/CMakeFiles/pip_test.dir/CXX.includecache new file mode 100644 index 0000000..f9c7dc5 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/CMakeFiles/pip_test.dir/CXX.includecache @@ -0,0 +1,794 @@ +#IncludeRegexLine: ^[ ]*#[ ]*(include|import)[ ]*[<"]([^">]+)([">]) + +#IncludeRegexScan: ^.*$ + +#IncludeRegexComplain: ^$ + +#IncludeRegexTransform: + +C:/Qt/4.8.6/include/QtCore/QList +qlist.h +C:/Qt/4.8.6/include/QtCore/qlist.h + +C:/Qt/4.8.6/include/QtCore/qalgorithms.h +../../src/corelib/tools/qalgorithms.h +C:/Qt/4.8.6/src/corelib/tools/qalgorithms.h + +C:/Qt/4.8.6/include/QtCore/qatomic.h +../../src/corelib/thread/qatomic.h +C:/Qt/4.8.6/src/corelib/thread/qatomic.h + +C:/Qt/4.8.6/include/QtCore/qatomic_alpha.h +../../src/corelib/arch/qatomic_alpha.h +C:/Qt/4.8.6/src/corelib/arch/qatomic_alpha.h + +C:/Qt/4.8.6/include/QtCore/qatomic_arch.h +../../src/corelib/arch/qatomic_arch.h +C:/Qt/4.8.6/src/corelib/arch/qatomic_arch.h + +C:/Qt/4.8.6/include/QtCore/qatomic_arm.h +../../src/corelib/arch/qatomic_arm.h +C:/Qt/4.8.6/src/corelib/arch/qatomic_arm.h + +C:/Qt/4.8.6/include/QtCore/qatomic_armv5.h +../../src/corelib/arch/qatomic_armv5.h +C:/Qt/4.8.6/src/corelib/arch/qatomic_armv5.h + +C:/Qt/4.8.6/include/QtCore/qatomic_armv6.h +../../src/corelib/arch/qatomic_armv6.h +C:/Qt/4.8.6/src/corelib/arch/qatomic_armv6.h + +C:/Qt/4.8.6/include/QtCore/qatomic_armv7.h +../../src/corelib/arch/qatomic_armv7.h +C:/Qt/4.8.6/src/corelib/arch/qatomic_armv7.h + +C:/Qt/4.8.6/include/QtCore/qatomic_avr32.h +../../src/corelib/arch/qatomic_avr32.h +C:/Qt/4.8.6/src/corelib/arch/qatomic_avr32.h + +C:/Qt/4.8.6/include/QtCore/qatomic_bfin.h +../../src/corelib/arch/qatomic_bfin.h +C:/Qt/4.8.6/src/corelib/arch/qatomic_bfin.h + +C:/Qt/4.8.6/include/QtCore/qatomic_bootstrap.h +../../src/corelib/arch/qatomic_bootstrap.h +C:/Qt/4.8.6/src/corelib/arch/qatomic_bootstrap.h + +C:/Qt/4.8.6/include/QtCore/qatomic_generic.h +../../src/corelib/arch/qatomic_generic.h +C:/Qt/4.8.6/src/corelib/arch/qatomic_generic.h + +C:/Qt/4.8.6/include/QtCore/qatomic_i386.h +../../src/corelib/arch/qatomic_i386.h +C:/Qt/4.8.6/src/corelib/arch/qatomic_i386.h + +C:/Qt/4.8.6/include/QtCore/qatomic_ia64.h +../../src/corelib/arch/qatomic_ia64.h +C:/Qt/4.8.6/src/corelib/arch/qatomic_ia64.h + +C:/Qt/4.8.6/include/QtCore/qatomic_integrity.h +../../src/corelib/arch/qatomic_integrity.h +C:/Qt/4.8.6/src/corelib/arch/qatomic_integrity.h + +C:/Qt/4.8.6/include/QtCore/qatomic_m68k.h +../../src/corelib/arch/qatomic_m68k.h +C:/Qt/4.8.6/src/corelib/arch/qatomic_m68k.h + +C:/Qt/4.8.6/include/QtCore/qatomic_macosx.h +../../src/corelib/arch/qatomic_macosx.h +C:/Qt/4.8.6/src/corelib/arch/qatomic_macosx.h + +C:/Qt/4.8.6/include/QtCore/qatomic_mips.h +../../src/corelib/arch/qatomic_mips.h +C:/Qt/4.8.6/src/corelib/arch/qatomic_mips.h + +C:/Qt/4.8.6/include/QtCore/qatomic_parisc.h +../../src/corelib/arch/qatomic_parisc.h +C:/Qt/4.8.6/src/corelib/arch/qatomic_parisc.h + +C:/Qt/4.8.6/include/QtCore/qatomic_powerpc.h +../../src/corelib/arch/qatomic_powerpc.h +C:/Qt/4.8.6/src/corelib/arch/qatomic_powerpc.h + +C:/Qt/4.8.6/include/QtCore/qatomic_s390.h +../../src/corelib/arch/qatomic_s390.h +C:/Qt/4.8.6/src/corelib/arch/qatomic_s390.h + +C:/Qt/4.8.6/include/QtCore/qatomic_sh.h +../../src/corelib/arch/qatomic_sh.h +C:/Qt/4.8.6/src/corelib/arch/qatomic_sh.h + +C:/Qt/4.8.6/include/QtCore/qatomic_sh4a.h +../../src/corelib/arch/qatomic_sh4a.h +C:/Qt/4.8.6/src/corelib/arch/qatomic_sh4a.h + +C:/Qt/4.8.6/include/QtCore/qatomic_sparc.h +../../src/corelib/arch/qatomic_sparc.h +C:/Qt/4.8.6/src/corelib/arch/qatomic_sparc.h + +C:/Qt/4.8.6/include/QtCore/qatomic_symbian.h +../../src/corelib/arch/qatomic_symbian.h +C:/Qt/4.8.6/src/corelib/arch/qatomic_symbian.h + +C:/Qt/4.8.6/include/QtCore/qatomic_vxworks.h +../../src/corelib/arch/qatomic_vxworks.h +C:/Qt/4.8.6/src/corelib/arch/qatomic_vxworks.h + +C:/Qt/4.8.6/include/QtCore/qatomic_windows.h +../../src/corelib/arch/qatomic_windows.h +C:/Qt/4.8.6/src/corelib/arch/qatomic_windows.h + +C:/Qt/4.8.6/include/QtCore/qatomic_windowsce.h +../../src/corelib/arch/qatomic_windowsce.h +C:/Qt/4.8.6/src/corelib/arch/qatomic_windowsce.h + +C:/Qt/4.8.6/include/QtCore/qatomic_x86_64.h +../../src/corelib/arch/qatomic_x86_64.h +C:/Qt/4.8.6/src/corelib/arch/qatomic_x86_64.h + +C:/Qt/4.8.6/include/QtCore/qbasicatomic.h +../../src/corelib/thread/qbasicatomic.h +C:/Qt/4.8.6/src/corelib/thread/qbasicatomic.h + +C:/Qt/4.8.6/include/QtCore/qconfig.h +../../src/corelib/global/qconfig.h +C:/Qt/4.8.6/src/corelib/global/qconfig.h + +C:/Qt/4.8.6/include/QtCore/qfeatures.h +../../src/corelib/global/qfeatures.h +C:/Qt/4.8.6/src/corelib/global/qfeatures.h + +C:/Qt/4.8.6/include/QtCore/qglobal.h +../../src/corelib/global/qglobal.h +C:/Qt/4.8.6/src/corelib/global/qglobal.h + +C:/Qt/4.8.6/include/QtCore/qiterator.h +../../src/corelib/tools/qiterator.h +C:/Qt/4.8.6/src/corelib/tools/qiterator.h + +C:/Qt/4.8.6/include/QtCore/qlist.h +../../src/corelib/tools/qlist.h +C:/Qt/4.8.6/src/corelib/tools/qlist.h + +C:/Qt/4.8.6/src/corelib/arch/qatomic_alpha.h + +C:/Qt/4.8.6/src/corelib/arch/qatomic_arch.h +QtCore/qglobal.h +C:/Qt/4.8.6/src/corelib/arch/QtCore/qglobal.h +QtCore/qatomic_integrity.h +C:/Qt/4.8.6/src/corelib/arch/QtCore/qatomic_integrity.h +QtCore/qatomic_vxworks.h +C:/Qt/4.8.6/src/corelib/arch/QtCore/qatomic_vxworks.h +QtCore/qatomic_alpha.h +C:/Qt/4.8.6/src/corelib/arch/QtCore/qatomic_alpha.h +QtCore/qatomic_arm.h +C:/Qt/4.8.6/src/corelib/arch/QtCore/qatomic_arm.h +QtCore/qatomic_armv6.h +C:/Qt/4.8.6/src/corelib/arch/QtCore/qatomic_armv6.h +QtCore/qatomic_avr32.h +C:/Qt/4.8.6/src/corelib/arch/QtCore/qatomic_avr32.h +QtCore/qatomic_bfin.h +C:/Qt/4.8.6/src/corelib/arch/QtCore/qatomic_bfin.h +QtCore/qatomic_generic.h +C:/Qt/4.8.6/src/corelib/arch/QtCore/qatomic_generic.h +QtCore/qatomic_i386.h +C:/Qt/4.8.6/src/corelib/arch/QtCore/qatomic_i386.h +QtCore/qatomic_ia64.h +C:/Qt/4.8.6/src/corelib/arch/QtCore/qatomic_ia64.h +QtCore/qatomic_m68k.h +C:/Qt/4.8.6/src/corelib/arch/QtCore/qatomic_m68k.h +QtCore/qatomic_macosx.h +C:/Qt/4.8.6/src/corelib/arch/QtCore/qatomic_macosx.h +QtCore/qatomic_mips.h +C:/Qt/4.8.6/src/corelib/arch/QtCore/qatomic_mips.h +QtCore/qatomic_parisc.h +C:/Qt/4.8.6/src/corelib/arch/QtCore/qatomic_parisc.h +QtCore/qatomic_powerpc.h +C:/Qt/4.8.6/src/corelib/arch/QtCore/qatomic_powerpc.h +QtCore/qatomic_s390.h +C:/Qt/4.8.6/src/corelib/arch/QtCore/qatomic_s390.h +QtCore/qatomic_sparc.h +C:/Qt/4.8.6/src/corelib/arch/QtCore/qatomic_sparc.h +QtCore/qatomic_windows.h +C:/Qt/4.8.6/src/corelib/arch/QtCore/qatomic_windows.h +QtCore/qatomic_windowsce.h +C:/Qt/4.8.6/src/corelib/arch/QtCore/qatomic_windowsce.h +QtCore/qatomic_x86_64.h +C:/Qt/4.8.6/src/corelib/arch/QtCore/qatomic_x86_64.h +QtCore/qatomic_symbian.h +C:/Qt/4.8.6/src/corelib/arch/QtCore/qatomic_symbian.h +QtCore/qatomic_sh.h +C:/Qt/4.8.6/src/corelib/arch/QtCore/qatomic_sh.h +QtCore/qatomic_sh4a.h +C:/Qt/4.8.6/src/corelib/arch/QtCore/qatomic_sh4a.h +QtCore/qatomic_generic.h +C:/Qt/4.8.6/src/corelib/arch/QtCore/qatomic_generic.h + +C:/Qt/4.8.6/src/corelib/arch/qatomic_arm.h +QtCore/qatomic_armv7.h +C:/Qt/4.8.6/src/corelib/arch/QtCore/qatomic_armv7.h +QtCore/qatomic_armv6.h +C:/Qt/4.8.6/src/corelib/arch/QtCore/qatomic_armv6.h +QtCore/qatomic_armv5.h +C:/Qt/4.8.6/src/corelib/arch/QtCore/qatomic_armv5.h + +C:/Qt/4.8.6/src/corelib/arch/qatomic_armv5.h + +C:/Qt/4.8.6/src/corelib/arch/qatomic_armv6.h + +C:/Qt/4.8.6/src/corelib/arch/qatomic_armv7.h +QtCore/qatomic_armv6.h +C:/Qt/4.8.6/src/corelib/arch/QtCore/qatomic_armv6.h + +C:/Qt/4.8.6/src/corelib/arch/qatomic_avr32.h + +C:/Qt/4.8.6/src/corelib/arch/qatomic_bfin.h +asm/fixed_code.h +- + +C:/Qt/4.8.6/src/corelib/arch/qatomic_bootstrap.h + +C:/Qt/4.8.6/src/corelib/arch/qatomic_generic.h + +C:/Qt/4.8.6/src/corelib/arch/qatomic_i386.h + +C:/Qt/4.8.6/src/corelib/arch/qatomic_ia64.h +ia64intrin.h +- +ia64/sys/inline.h +- + +C:/Qt/4.8.6/src/corelib/arch/qatomic_integrity.h +INTEGRITY.h +- + +C:/Qt/4.8.6/src/corelib/arch/qatomic_m68k.h + +C:/Qt/4.8.6/src/corelib/arch/qatomic_macosx.h +QtCore/qatomic_x86_64.h +- +QtCore/qatomic_i386.h +- +QtCore/qatomic_powerpc.h +- + +C:/Qt/4.8.6/src/corelib/arch/qatomic_mips.h + +C:/Qt/4.8.6/src/corelib/arch/qatomic_parisc.h + +C:/Qt/4.8.6/src/corelib/arch/qatomic_powerpc.h + +C:/Qt/4.8.6/src/corelib/arch/qatomic_s390.h + +C:/Qt/4.8.6/src/corelib/arch/qatomic_sh.h + +C:/Qt/4.8.6/src/corelib/arch/qatomic_sh4a.h + +C:/Qt/4.8.6/src/corelib/arch/qatomic_sparc.h + +C:/Qt/4.8.6/src/corelib/arch/qatomic_symbian.h +QtCore/qglobal.h +- +e32std.h +- + +C:/Qt/4.8.6/src/corelib/arch/qatomic_vxworks.h +QtCore/qatomic_powerpc.h +- +vxWorksCommon.h +- +taskLib.h +- + +C:/Qt/4.8.6/src/corelib/arch/qatomic_windows.h +QtCore/qatomic_i386.h +C:/Qt/4.8.6/src/corelib/arch/QtCore/qatomic_i386.h +QtCore/qatomic_x86_64.h +C:/Qt/4.8.6/src/corelib/arch/QtCore/qatomic_x86_64.h +winbase.h +- + +C:/Qt/4.8.6/src/corelib/arch/qatomic_windowsce.h +QtCore/qglobal.h +- +QtCore/qatomic_windows.h +C:/Qt/4.8.6/src/corelib/arch/QtCore/qatomic_windows.h + +C:/Qt/4.8.6/src/corelib/arch/qatomic_x86_64.h + +C:/Qt/4.8.6/src/corelib/global/qconfig.h + +C:/Qt/4.8.6/src/corelib/global/qfeatures.h + +C:/Qt/4.8.6/src/corelib/global/qglobal.h +stddef.h +- +QtCore/qconfig.h +- +algorithm +- +AvailabilityMacros.h +- +utility +- +e32def.h +- +QtCore/qfeatures.h +- + +C:/Qt/4.8.6/src/corelib/thread/qatomic.h +QtCore/qglobal.h +- +QtCore/qbasicatomic.h +- + +C:/Qt/4.8.6/src/corelib/thread/qbasicatomic.h +QtCore/qglobal.h +- +QtCore/qatomic_bootstrap.h +- +QtCore/qatomic_arch.h +- + +C:/Qt/4.8.6/src/corelib/tools/qalgorithms.h +QtCore/qglobal.h +- + +C:/Qt/4.8.6/src/corelib/tools/qiterator.h +QtCore/qglobal.h +- +new +- + +C:/Qt/4.8.6/src/corelib/tools/qlist.h +QtCore/qiterator.h +- +QtCore/qatomic.h +- +QtCore/qalgorithms.h +- +iterator +- +list +- +iterator +- +initializer_list +- +new +- +limits.h +- +string.h +- + +C:/libs/oldpip/pip_0.4.0_r5/main.cpp +pip.h +C:/libs/oldpip/pip_0.4.0_r5/pip.h +pivariant.h +C:/libs/oldpip/pip_0.4.0_r5/pivariant.h +picodeparser.h +C:/libs/oldpip/pip_0.4.0_r5/picodeparser.h +pidir.h +C:/libs/oldpip/pip_0.4.0_r5/pidir.h +piconnection.h +C:/libs/oldpip/pip_0.4.0_r5/piconnection.h +QList +- + +C:/libs/oldpip/pip_0.4.0_r5/pibinarylog.h +pifile.h +C:/libs/oldpip/pip_0.4.0_r5/pifile.h + +C:/libs/oldpip/pip_0.4.0_r5/pibitarray.h +picontainers.h +C:/libs/oldpip/pip_0.4.0_r5/picontainers.h + +C:/libs/oldpip/pip_0.4.0_r5/pibytearray.h +pibitarray.h +C:/libs/oldpip/pip_0.4.0_r5/pibitarray.h + +C:/libs/oldpip/pip_0.4.0_r5/pichar.h +pibytearray.h +C:/libs/oldpip/pip_0.4.0_r5/pibytearray.h + +C:/libs/oldpip/pip_0.4.0_r5/picli.h +piobject.h +C:/libs/oldpip/pip_0.4.0_r5/piobject.h + +C:/libs/oldpip/pip_0.4.0_r5/picodec.h +piprocess.h +C:/libs/oldpip/pip_0.4.0_r5/piprocess.h + +C:/libs/oldpip/pip_0.4.0_r5/picodeparser.h +pifile.h +C:/libs/oldpip/pip_0.4.0_r5/pifile.h +pievaluator.h +C:/libs/oldpip/pip_0.4.0_r5/pievaluator.h + +C:/libs/oldpip/pip_0.4.0_r5/picollection.h +piobject.h +C:/libs/oldpip/pip_0.4.0_r5/piobject.h + +C:/libs/oldpip/pip_0.4.0_r5/piconfig.h +pifile.h +C:/libs/oldpip/pip_0.4.0_r5/pifile.h + +C:/libs/oldpip/pip_0.4.0_r5/piconnection.h +pipacketextractor.h +C:/libs/oldpip/pip_0.4.0_r5/pipacketextractor.h + +C:/libs/oldpip/pip_0.4.0_r5/piconsole.h +pikbdlistener.h +C:/libs/oldpip/pip_0.4.0_r5/pikbdlistener.h +piprotocol.h +C:/libs/oldpip/pip_0.4.0_r5/piprotocol.h +pidiagnostics.h +C:/libs/oldpip/pip_0.4.0_r5/pidiagnostics.h +pisystemmonitor.h +C:/libs/oldpip/pip_0.4.0_r5/pisystemmonitor.h +sys/ioctl.h +- +fcntl.h +- + +C:/libs/oldpip/pip_0.4.0_r5/picontainers.h +piincludes.h +C:/libs/oldpip/pip_0.4.0_r5/piincludes.h +pivector.h +C:/libs/oldpip/pip_0.4.0_r5/pivector.h +pistack.h +C:/libs/oldpip/pip_0.4.0_r5/pistack.h +piqueue.h +C:/libs/oldpip/pip_0.4.0_r5/piqueue.h +pideque.h +C:/libs/oldpip/pip_0.4.0_r5/pideque.h +pimap.h +C:/libs/oldpip/pip_0.4.0_r5/pimap.h + +C:/libs/oldpip/pip_0.4.0_r5/picrc.h +pistring.h +C:/libs/oldpip/pip_0.4.0_r5/pistring.h + +C:/libs/oldpip/pip_0.4.0_r5/pideque.h +piincludes.h +C:/libs/oldpip/pip_0.4.0_r5/piincludes.h + +C:/libs/oldpip/pip_0.4.0_r5/pidiagnostics.h +pitimer.h +C:/libs/oldpip/pip_0.4.0_r5/pitimer.h + +C:/libs/oldpip/pip_0.4.0_r5/pidir.h +pifile.h +C:/libs/oldpip/pip_0.4.0_r5/pifile.h +sys/dirent.h +- +sys/dir.h +- +sys/stat.h +- + +C:/libs/oldpip/pip_0.4.0_r5/piethernet.h +pitimer.h +C:/libs/oldpip/pip_0.4.0_r5/pitimer.h +piiodevice.h +C:/libs/oldpip/pip_0.4.0_r5/piiodevice.h +piprocess.h +C:/libs/oldpip/pip_0.4.0_r5/piprocess.h + +C:/libs/oldpip/pip_0.4.0_r5/pievaluator.h +pistring.h +C:/libs/oldpip/pip_0.4.0_r5/pistring.h +pimath.h +C:/libs/oldpip/pip_0.4.0_r5/pimath.h + +C:/libs/oldpip/pip_0.4.0_r5/pifile.h +piiodevice.h +C:/libs/oldpip/pip_0.4.0_r5/piiodevice.h +cstdio +- + +C:/libs/oldpip/pip_0.4.0_r5/piincludes.h +pip_export.h +C:/libs/oldpip/pip_0.4.0_r5/pip_export.h +iostream +- +unistd.h +- +stdarg.h +- +stddef.h +- +cstdio +- +cstdlib +- +clocale +- +stdio.h +- +locale.h +- +stdlib.h +- +sys/stat.h +- +sys/types.h +- +errno.h +- +cctype +- +ctime +- +csignal +- +cassert +- +cmath +- +typeinfo +- +algorithm +- +string.h +- +string +- +vector +- +list +- +queue +- +deque +- +stack +- +set +- +map +- +conio.h +- +io.h +- +winsock2.h +- +windows.h +- +wincon.h +- +iphlpapi.h +- +netinet/in.h +- +arpa/inet.h +- +sys/socket.h +- +fcntl.h +- +sys/ioctl.h +- +net/if.h +- +pthread.h +- +ifaddrs.h +- +mach/mach_traps.h +- +mach/mach.h +- +mach/clock.h +- +crt_externs.h +- +pimonitor.h +C:/libs/oldpip/pip_0.4.0_r5/pimonitor.h + +C:/libs/oldpip/pip_0.4.0_r5/piiodevice.h +picollection.h +C:/libs/oldpip/pip_0.4.0_r5/picollection.h +pivariant.h +C:/libs/oldpip/pip_0.4.0_r5/pivariant.h +pitimer.h +C:/libs/oldpip/pip_0.4.0_r5/pitimer.h + +C:/libs/oldpip/pip_0.4.0_r5/pikbdlistener.h +pithread.h +C:/libs/oldpip/pip_0.4.0_r5/pithread.h +termios.h +- + +C:/libs/oldpip/pip_0.4.0_r5/pimap.h +pivector.h +C:/libs/oldpip/pip_0.4.0_r5/pivector.h +pideque.h +C:/libs/oldpip/pip_0.4.0_r5/pideque.h + +C:/libs/oldpip/pip_0.4.0_r5/pimath.h +pibytearray.h +C:/libs/oldpip/pip_0.4.0_r5/pibytearray.h +complex +- +cmath +- +complex.h +- +math.h +- + +C:/libs/oldpip/pip_0.4.0_r5/pimonitor.h +pip_export.h +C:/libs/oldpip/pip_0.4.0_r5/pip_export.h + +C:/libs/oldpip/pip_0.4.0_r5/pimultiprotocol.h +piprotocol.h +C:/libs/oldpip/pip_0.4.0_r5/piprotocol.h + +C:/libs/oldpip/pip_0.4.0_r5/pimutex.h +piincludes.h +C:/libs/oldpip/pip_0.4.0_r5/piincludes.h + +C:/libs/oldpip/pip_0.4.0_r5/piobject.h +pivariant.h +C:/libs/oldpip/pip_0.4.0_r5/pivariant.h +pimutex.h +C:/libs/oldpip/pip_0.4.0_r5/pimutex.h + +C:/libs/oldpip/pip_0.4.0_r5/pip.h +pitimer.h +C:/libs/oldpip/pip_0.4.0_r5/pitimer.h +pivariant.h +C:/libs/oldpip/pip_0.4.0_r5/pivariant.h +piconsole.h +C:/libs/oldpip/pip_0.4.0_r5/piconsole.h +picli.h +C:/libs/oldpip/pip_0.4.0_r5/picli.h +pievaluator.h +C:/libs/oldpip/pip_0.4.0_r5/pievaluator.h +pimultiprotocol.h +C:/libs/oldpip/pip_0.4.0_r5/pimultiprotocol.h +picodec.h +C:/libs/oldpip/pip_0.4.0_r5/picodec.h +pisignals.h +C:/libs/oldpip/pip_0.4.0_r5/pisignals.h +piobject.h +C:/libs/oldpip/pip_0.4.0_r5/piobject.h +pisystemmonitor.h +C:/libs/oldpip/pip_0.4.0_r5/pisystemmonitor.h +pipeer.h +C:/libs/oldpip/pip_0.4.0_r5/pipeer.h +picrc.h +C:/libs/oldpip/pip_0.4.0_r5/picrc.h +pistatemachine.h +C:/libs/oldpip/pip_0.4.0_r5/pistatemachine.h +picollection.h +C:/libs/oldpip/pip_0.4.0_r5/picollection.h +piserial.h +C:/libs/oldpip/pip_0.4.0_r5/piserial.h +pibinarylog.h +C:/libs/oldpip/pip_0.4.0_r5/pibinarylog.h +piusb.h +C:/libs/oldpip/pip_0.4.0_r5/piusb.h + +C:/libs/oldpip/pip_0.4.0_r5/pip_export.h + +C:/libs/oldpip/pip_0.4.0_r5/pipacketextractor.h +piiodevice.h +C:/libs/oldpip/pip_0.4.0_r5/piiodevice.h + +C:/libs/oldpip/pip_0.4.0_r5/pipeer.h +piethernet.h +C:/libs/oldpip/pip_0.4.0_r5/piethernet.h +pidiagnostics.h +C:/libs/oldpip/pip_0.4.0_r5/pidiagnostics.h + +C:/libs/oldpip/pip_0.4.0_r5/piprocess.h +pithread.h +C:/libs/oldpip/pip_0.4.0_r5/pithread.h +pifile.h +C:/libs/oldpip/pip_0.4.0_r5/pifile.h +sys/wait.h +- + +C:/libs/oldpip/pip_0.4.0_r5/piprotocol.h +piserial.h +C:/libs/oldpip/pip_0.4.0_r5/piserial.h +piethernet.h +C:/libs/oldpip/pip_0.4.0_r5/piethernet.h +pipacketextractor.h +C:/libs/oldpip/pip_0.4.0_r5/pipacketextractor.h +pitimer.h +C:/libs/oldpip/pip_0.4.0_r5/pitimer.h +piconfig.h +C:/libs/oldpip/pip_0.4.0_r5/piconfig.h +math.h +C:/libs/oldpip/pip_0.4.0_r5/math.h + +C:/libs/oldpip/pip_0.4.0_r5/piqueue.h +pivector.h +C:/libs/oldpip/pip_0.4.0_r5/pivector.h + +C:/libs/oldpip/pip_0.4.0_r5/piserial.h +pitimer.h +C:/libs/oldpip/pip_0.4.0_r5/pitimer.h +piiodevice.h +C:/libs/oldpip/pip_0.4.0_r5/piiodevice.h +termios.h +- +fcntl.h +- +sys/ioctl.h +- + +C:/libs/oldpip/pip_0.4.0_r5/pisignals.h +picontainers.h +C:/libs/oldpip/pip_0.4.0_r5/picontainers.h +csignal +- + +C:/libs/oldpip/pip_0.4.0_r5/pistack.h +pivector.h +C:/libs/oldpip/pip_0.4.0_r5/pivector.h + +C:/libs/oldpip/pip_0.4.0_r5/pistatemachine.h +piobject.h +C:/libs/oldpip/pip_0.4.0_r5/piobject.h + +C:/libs/oldpip/pip_0.4.0_r5/pistring.h +pibytearray.h +C:/libs/oldpip/pip_0.4.0_r5/pibytearray.h +pichar.h +C:/libs/oldpip/pip_0.4.0_r5/pichar.h +math.h +C:/libs/oldpip/pip_0.4.0_r5/math.h + +C:/libs/oldpip/pip_0.4.0_r5/pisystemmonitor.h +pithread.h +C:/libs/oldpip/pip_0.4.0_r5/pithread.h +piprocess.h +C:/libs/oldpip/pip_0.4.0_r5/piprocess.h + +C:/libs/oldpip/pip_0.4.0_r5/pithread.h +signal.h +- +pimutex.h +C:/libs/oldpip/pip_0.4.0_r5/pimutex.h +piobject.h +C:/libs/oldpip/pip_0.4.0_r5/piobject.h + +C:/libs/oldpip/pip_0.4.0_r5/pitime.h +ctime +- +csignal +- +pistring.h +C:/libs/oldpip/pip_0.4.0_r5/pistring.h + +C:/libs/oldpip/pip_0.4.0_r5/pitimer.h +pithread.h +C:/libs/oldpip/pip_0.4.0_r5/pithread.h +pitime.h +C:/libs/oldpip/pip_0.4.0_r5/pitime.h + +C:/libs/oldpip/pip_0.4.0_r5/piusb.h +piiodevice.h +C:/libs/oldpip/pip_0.4.0_r5/piiodevice.h + +C:/libs/oldpip/pip_0.4.0_r5/pivariant.h +pistring.h +C:/libs/oldpip/pip_0.4.0_r5/pistring.h +pibitarray.h +C:/libs/oldpip/pip_0.4.0_r5/pibitarray.h +pitime.h +C:/libs/oldpip/pip_0.4.0_r5/pitime.h +pimath.h +C:/libs/oldpip/pip_0.4.0_r5/pimath.h + +C:/libs/oldpip/pip_0.4.0_r5/pivector.h +piincludes.h +C:/libs/oldpip/pip_0.4.0_r5/piincludes.h + diff --git a/_oldpip/pip_0.4.0_r5/CMakeFiles/pip_test.dir/DependInfo.cmake b/_oldpip/pip_0.4.0_r5/CMakeFiles/pip_test.dir/DependInfo.cmake new file mode 100644 index 0000000..bcd8a49 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/CMakeFiles/pip_test.dir/DependInfo.cmake @@ -0,0 +1,56 @@ +# The set of languages for which implicit dependencies are needed: +SET(CMAKE_DEPENDS_LANGUAGES + "CXX" + ) +# The set of files for implicit dependencies of each language: +SET(CMAKE_DEPENDS_CHECK_CXX + "C:/libs/oldpip/pip_0.4.0_r5/main.cpp" "C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/pip_test.dir/main.cpp.obj" + ) +SET(CMAKE_CXX_COMPILER_ID "GNU") + +# Preprocessor definitions for this target. +SET(CMAKE_TARGET_DEFINITIONS + "PIP_MATH_J0" + "PIP_MATH_J1" + "PIP_MATH_JN" + "PIP_MATH_Y0" + "PIP_MATH_Y1" + "PIP_MATH_YN" + ) + +# Targets to which this target links. +SET(CMAKE_TARGET_LINKED_INFO_FILES + "C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/DependInfo.cmake" + ) + +# The include file search paths: +SET(CMAKE_C_TARGET_INCLUDE_PATH + "." + "." + "C:/Qt/4.8.6/include/ActiveQt" + "C:/Qt/4.8.6/include/QtDesigner" + "C:/Qt/4.8.6/include/QtDeclarative" + "C:/Qt/4.8.6/include/QtScriptTools" + "C:/Qt/4.8.6/include/QtDBus" + "C:/Qt/4.8.6/include/QtXml" + "C:/Qt/4.8.6/include/QtSql" + "C:/Qt/4.8.6/include/QtOpenGL" + "C:/Qt/4.8.6/include/QtMultimedia" + "C:/Qt/4.8.6/include/QtNetwork" + "C:/Qt/4.8.6/include/phonon" + "C:/Qt/4.8.6/include/QtXmlPatterns" + "C:/Qt/4.8.6/include/QtWebKit" + "C:/Qt/4.8.6/include/QtHelp" + "C:/Qt/4.8.6/include/QtUiTools" + "C:/Qt/4.8.6/include/QtTest" + "C:/Qt/4.8.6/include/QtScript" + "C:/Qt/4.8.6/include/QtSvg" + "C:/Qt/4.8.6/include/Qt3Support" + "C:/Qt/4.8.6/include/QtGui" + "C:/Qt/4.8.6/include/QtCore" + "C:/Qt/4.8.6/mkspecs/default" + "C:/Qt/4.8.6/include" + ) +SET(CMAKE_CXX_TARGET_INCLUDE_PATH ${CMAKE_C_TARGET_INCLUDE_PATH}) +SET(CMAKE_Fortran_TARGET_INCLUDE_PATH ${CMAKE_C_TARGET_INCLUDE_PATH}) +SET(CMAKE_ASM_TARGET_INCLUDE_PATH ${CMAKE_C_TARGET_INCLUDE_PATH}) diff --git a/_oldpip/pip_0.4.0_r5/CMakeFiles/pip_test.dir/build.make b/_oldpip/pip_0.4.0_r5/CMakeFiles/pip_test.dir/build.make new file mode 100644 index 0000000..d73d58d --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/CMakeFiles/pip_test.dir/build.make @@ -0,0 +1,108 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "MinGW Makefiles" Generator, CMake Version 2.8 + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Remove some rules from gmake that .SUFFIXES does not remove. +SUFFIXES = + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +SHELL = cmd.exe + +# The CMake executable. +CMAKE_COMMAND = "C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" + +# The command to remove a file. +RM = "C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" -E remove -f + +# Escaping for special characters. +EQUALS = = + +# The program to use to edit the cache. +CMAKE_EDIT_COMMAND = "C:\Program Files (x86)\CMake 2.8\bin\cmake-gui.exe" + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = C:\libs\oldpip\pip_0.4.0_r5 + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = C:\libs\oldpip\pip_0.4.0_r5 + +# Include any dependencies generated for this target. +include CMakeFiles/pip_test.dir/depend.make + +# Include the progress variables for this target. +include CMakeFiles/pip_test.dir/progress.make + +# Include the compile flags for this target's objects. +include CMakeFiles/pip_test.dir/flags.make + +CMakeFiles/pip_test.dir/main.cpp.obj: CMakeFiles/pip_test.dir/flags.make +CMakeFiles/pip_test.dir/main.cpp.obj: CMakeFiles/pip_test.dir/includes_CXX.rsp +CMakeFiles/pip_test.dir/main.cpp.obj: main.cpp + $(CMAKE_COMMAND) -E cmake_progress_report C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles $(CMAKE_PROGRESS_1) + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object CMakeFiles/pip_test.dir/main.cpp.obj" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles\pip_test.dir\main.cpp.obj -c C:\libs\oldpip\pip_0.4.0_r5\main.cpp + +CMakeFiles/pip_test.dir/main.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/pip_test.dir/main.cpp.i" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -E C:\libs\oldpip\pip_0.4.0_r5\main.cpp > CMakeFiles\pip_test.dir\main.cpp.i + +CMakeFiles/pip_test.dir/main.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/pip_test.dir/main.cpp.s" + C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -S C:\libs\oldpip\pip_0.4.0_r5\main.cpp -o CMakeFiles\pip_test.dir\main.cpp.s + +CMakeFiles/pip_test.dir/main.cpp.obj.requires: +.PHONY : CMakeFiles/pip_test.dir/main.cpp.obj.requires + +CMakeFiles/pip_test.dir/main.cpp.obj.provides: CMakeFiles/pip_test.dir/main.cpp.obj.requires + $(MAKE) -f CMakeFiles\pip_test.dir\build.make CMakeFiles/pip_test.dir/main.cpp.obj.provides.build +.PHONY : CMakeFiles/pip_test.dir/main.cpp.obj.provides + +CMakeFiles/pip_test.dir/main.cpp.obj.provides.build: CMakeFiles/pip_test.dir/main.cpp.obj + +# Object files for target pip_test +pip_test_OBJECTS = \ +"CMakeFiles/pip_test.dir/main.cpp.obj" + +# External object files for target pip_test +pip_test_EXTERNAL_OBJECTS = + +pip_test.exe: CMakeFiles/pip_test.dir/main.cpp.obj +pip_test.exe: CMakeFiles/pip_test.dir/build.make +pip_test.exe: libpip.dll.a +pip_test.exe: C:/Qt/4.8.6/lib/libQtCore4.a +pip_test.exe: CMakeFiles/pip_test.dir/objects1.rsp +pip_test.exe: CMakeFiles/pip_test.dir/link.txt + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --red --bold "Linking CXX executable pip_test.exe" + $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles\pip_test.dir\link.txt --verbose=$(VERBOSE) + +# Rule to build all files generated by this target. +CMakeFiles/pip_test.dir/build: pip_test.exe +.PHONY : CMakeFiles/pip_test.dir/build + +CMakeFiles/pip_test.dir/requires: CMakeFiles/pip_test.dir/main.cpp.obj.requires +.PHONY : CMakeFiles/pip_test.dir/requires + +CMakeFiles/pip_test.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles\pip_test.dir\cmake_clean.cmake +.PHONY : CMakeFiles/pip_test.dir/clean + +CMakeFiles/pip_test.dir/depend: + $(CMAKE_COMMAND) -E cmake_depends "MinGW Makefiles" C:\libs\oldpip\pip_0.4.0_r5 C:\libs\oldpip\pip_0.4.0_r5 C:\libs\oldpip\pip_0.4.0_r5 C:\libs\oldpip\pip_0.4.0_r5 C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles\pip_test.dir\DependInfo.cmake --color=$(COLOR) +.PHONY : CMakeFiles/pip_test.dir/depend + diff --git a/_oldpip/pip_0.4.0_r5/CMakeFiles/pip_test.dir/cmake_clean.cmake b/_oldpip/pip_0.4.0_r5/CMakeFiles/pip_test.dir/cmake_clean.cmake new file mode 100644 index 0000000..fc6a41b --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/CMakeFiles/pip_test.dir/cmake_clean.cmake @@ -0,0 +1,12 @@ +FILE(REMOVE_RECURSE + "CMakeFiles/pip_test.dir/main.cpp.obj" + "pip_test.pdb" + "pip_test.exe" + "pip_test.exe.manifest" + "libpip_test.dll.a" +) + +# Per-language clean rules from dependency scanning. +FOREACH(lang CXX) + INCLUDE(CMakeFiles/pip_test.dir/cmake_clean_${lang}.cmake OPTIONAL) +ENDFOREACH(lang) diff --git a/_oldpip/pip_0.4.0_r5/CMakeFiles/pip_test.dir/depend.internal b/_oldpip/pip_0.4.0_r5/CMakeFiles/pip_test.dir/depend.internal new file mode 100644 index 0000000..46e9914 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/CMakeFiles/pip_test.dir/depend.internal @@ -0,0 +1,123 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "MinGW Makefiles" Generator, CMake Version 2.8 + +CMakeFiles/pip_test.dir/main.cpp.obj + C:/Qt/4.8.6/include/QtCore/QList + C:/Qt/4.8.6/include/QtCore/qalgorithms.h + C:/Qt/4.8.6/include/QtCore/qatomic.h + C:/Qt/4.8.6/include/QtCore/qatomic_alpha.h + C:/Qt/4.8.6/include/QtCore/qatomic_arch.h + C:/Qt/4.8.6/include/QtCore/qatomic_arm.h + C:/Qt/4.8.6/include/QtCore/qatomic_armv5.h + C:/Qt/4.8.6/include/QtCore/qatomic_armv6.h + C:/Qt/4.8.6/include/QtCore/qatomic_armv7.h + C:/Qt/4.8.6/include/QtCore/qatomic_avr32.h + C:/Qt/4.8.6/include/QtCore/qatomic_bfin.h + C:/Qt/4.8.6/include/QtCore/qatomic_bootstrap.h + C:/Qt/4.8.6/include/QtCore/qatomic_generic.h + C:/Qt/4.8.6/include/QtCore/qatomic_i386.h + C:/Qt/4.8.6/include/QtCore/qatomic_ia64.h + C:/Qt/4.8.6/include/QtCore/qatomic_integrity.h + C:/Qt/4.8.6/include/QtCore/qatomic_m68k.h + C:/Qt/4.8.6/include/QtCore/qatomic_macosx.h + C:/Qt/4.8.6/include/QtCore/qatomic_mips.h + C:/Qt/4.8.6/include/QtCore/qatomic_parisc.h + C:/Qt/4.8.6/include/QtCore/qatomic_powerpc.h + C:/Qt/4.8.6/include/QtCore/qatomic_s390.h + C:/Qt/4.8.6/include/QtCore/qatomic_sh.h + C:/Qt/4.8.6/include/QtCore/qatomic_sh4a.h + C:/Qt/4.8.6/include/QtCore/qatomic_sparc.h + C:/Qt/4.8.6/include/QtCore/qatomic_symbian.h + C:/Qt/4.8.6/include/QtCore/qatomic_vxworks.h + C:/Qt/4.8.6/include/QtCore/qatomic_windows.h + C:/Qt/4.8.6/include/QtCore/qatomic_windowsce.h + C:/Qt/4.8.6/include/QtCore/qatomic_x86_64.h + C:/Qt/4.8.6/include/QtCore/qbasicatomic.h + C:/Qt/4.8.6/include/QtCore/qconfig.h + C:/Qt/4.8.6/include/QtCore/qfeatures.h + C:/Qt/4.8.6/include/QtCore/qglobal.h + C:/Qt/4.8.6/include/QtCore/qiterator.h + C:/Qt/4.8.6/include/QtCore/qlist.h + C:/Qt/4.8.6/src/corelib/arch/qatomic_alpha.h + C:/Qt/4.8.6/src/corelib/arch/qatomic_arch.h + C:/Qt/4.8.6/src/corelib/arch/qatomic_arm.h + C:/Qt/4.8.6/src/corelib/arch/qatomic_armv5.h + C:/Qt/4.8.6/src/corelib/arch/qatomic_armv6.h + C:/Qt/4.8.6/src/corelib/arch/qatomic_armv7.h + C:/Qt/4.8.6/src/corelib/arch/qatomic_avr32.h + C:/Qt/4.8.6/src/corelib/arch/qatomic_bfin.h + C:/Qt/4.8.6/src/corelib/arch/qatomic_bootstrap.h + C:/Qt/4.8.6/src/corelib/arch/qatomic_generic.h + C:/Qt/4.8.6/src/corelib/arch/qatomic_i386.h + C:/Qt/4.8.6/src/corelib/arch/qatomic_ia64.h + C:/Qt/4.8.6/src/corelib/arch/qatomic_integrity.h + C:/Qt/4.8.6/src/corelib/arch/qatomic_m68k.h + C:/Qt/4.8.6/src/corelib/arch/qatomic_macosx.h + C:/Qt/4.8.6/src/corelib/arch/qatomic_mips.h + C:/Qt/4.8.6/src/corelib/arch/qatomic_parisc.h + C:/Qt/4.8.6/src/corelib/arch/qatomic_powerpc.h + C:/Qt/4.8.6/src/corelib/arch/qatomic_s390.h + C:/Qt/4.8.6/src/corelib/arch/qatomic_sh.h + C:/Qt/4.8.6/src/corelib/arch/qatomic_sh4a.h + C:/Qt/4.8.6/src/corelib/arch/qatomic_sparc.h + C:/Qt/4.8.6/src/corelib/arch/qatomic_symbian.h + C:/Qt/4.8.6/src/corelib/arch/qatomic_vxworks.h + C:/Qt/4.8.6/src/corelib/arch/qatomic_windows.h + C:/Qt/4.8.6/src/corelib/arch/qatomic_windowsce.h + C:/Qt/4.8.6/src/corelib/arch/qatomic_x86_64.h + C:/Qt/4.8.6/src/corelib/global/qconfig.h + C:/Qt/4.8.6/src/corelib/global/qfeatures.h + C:/Qt/4.8.6/src/corelib/global/qglobal.h + C:/Qt/4.8.6/src/corelib/thread/qatomic.h + C:/Qt/4.8.6/src/corelib/thread/qbasicatomic.h + C:/Qt/4.8.6/src/corelib/tools/qalgorithms.h + C:/Qt/4.8.6/src/corelib/tools/qiterator.h + C:/Qt/4.8.6/src/corelib/tools/qlist.h + C:/libs/oldpip/pip_0.4.0_r5/main.cpp + C:/libs/oldpip/pip_0.4.0_r5/pibinarylog.h + C:/libs/oldpip/pip_0.4.0_r5/pibitarray.h + C:/libs/oldpip/pip_0.4.0_r5/pibytearray.h + C:/libs/oldpip/pip_0.4.0_r5/pichar.h + C:/libs/oldpip/pip_0.4.0_r5/picli.h + C:/libs/oldpip/pip_0.4.0_r5/picodec.h + C:/libs/oldpip/pip_0.4.0_r5/picodeparser.h + C:/libs/oldpip/pip_0.4.0_r5/picollection.h + C:/libs/oldpip/pip_0.4.0_r5/piconfig.h + C:/libs/oldpip/pip_0.4.0_r5/piconnection.h + C:/libs/oldpip/pip_0.4.0_r5/piconsole.h + C:/libs/oldpip/pip_0.4.0_r5/picontainers.h + C:/libs/oldpip/pip_0.4.0_r5/picrc.h + C:/libs/oldpip/pip_0.4.0_r5/pideque.h + C:/libs/oldpip/pip_0.4.0_r5/pidiagnostics.h + C:/libs/oldpip/pip_0.4.0_r5/pidir.h + C:/libs/oldpip/pip_0.4.0_r5/piethernet.h + C:/libs/oldpip/pip_0.4.0_r5/pievaluator.h + C:/libs/oldpip/pip_0.4.0_r5/pifile.h + C:/libs/oldpip/pip_0.4.0_r5/piincludes.h + C:/libs/oldpip/pip_0.4.0_r5/piiodevice.h + C:/libs/oldpip/pip_0.4.0_r5/pikbdlistener.h + C:/libs/oldpip/pip_0.4.0_r5/pimap.h + C:/libs/oldpip/pip_0.4.0_r5/pimath.h + C:/libs/oldpip/pip_0.4.0_r5/pimonitor.h + C:/libs/oldpip/pip_0.4.0_r5/pimultiprotocol.h + C:/libs/oldpip/pip_0.4.0_r5/pimutex.h + C:/libs/oldpip/pip_0.4.0_r5/piobject.h + C:/libs/oldpip/pip_0.4.0_r5/pip.h + C:/libs/oldpip/pip_0.4.0_r5/pip_export.h + C:/libs/oldpip/pip_0.4.0_r5/pipacketextractor.h + C:/libs/oldpip/pip_0.4.0_r5/pipeer.h + C:/libs/oldpip/pip_0.4.0_r5/piprocess.h + C:/libs/oldpip/pip_0.4.0_r5/piprotocol.h + C:/libs/oldpip/pip_0.4.0_r5/piqueue.h + C:/libs/oldpip/pip_0.4.0_r5/piserial.h + C:/libs/oldpip/pip_0.4.0_r5/pisignals.h + C:/libs/oldpip/pip_0.4.0_r5/pistack.h + C:/libs/oldpip/pip_0.4.0_r5/pistatemachine.h + C:/libs/oldpip/pip_0.4.0_r5/pistring.h + C:/libs/oldpip/pip_0.4.0_r5/pisystemmonitor.h + C:/libs/oldpip/pip_0.4.0_r5/pithread.h + C:/libs/oldpip/pip_0.4.0_r5/pitime.h + C:/libs/oldpip/pip_0.4.0_r5/pitimer.h + C:/libs/oldpip/pip_0.4.0_r5/piusb.h + C:/libs/oldpip/pip_0.4.0_r5/pivariant.h + C:/libs/oldpip/pip_0.4.0_r5/pivector.h diff --git a/_oldpip/pip_0.4.0_r5/CMakeFiles/pip_test.dir/depend.make b/_oldpip/pip_0.4.0_r5/CMakeFiles/pip_test.dir/depend.make new file mode 100644 index 0000000..eb60a3e --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/CMakeFiles/pip_test.dir/depend.make @@ -0,0 +1,123 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "MinGW Makefiles" Generator, CMake Version 2.8 + +CMakeFiles/pip_test.dir/main.cpp.obj: C:/Qt/4.8.6/include/QtCore/QList +CMakeFiles/pip_test.dir/main.cpp.obj: C:/Qt/4.8.6/include/QtCore/qalgorithms.h +CMakeFiles/pip_test.dir/main.cpp.obj: C:/Qt/4.8.6/include/QtCore/qatomic.h +CMakeFiles/pip_test.dir/main.cpp.obj: C:/Qt/4.8.6/include/QtCore/qatomic_alpha.h +CMakeFiles/pip_test.dir/main.cpp.obj: C:/Qt/4.8.6/include/QtCore/qatomic_arch.h +CMakeFiles/pip_test.dir/main.cpp.obj: C:/Qt/4.8.6/include/QtCore/qatomic_arm.h +CMakeFiles/pip_test.dir/main.cpp.obj: C:/Qt/4.8.6/include/QtCore/qatomic_armv5.h +CMakeFiles/pip_test.dir/main.cpp.obj: C:/Qt/4.8.6/include/QtCore/qatomic_armv6.h +CMakeFiles/pip_test.dir/main.cpp.obj: C:/Qt/4.8.6/include/QtCore/qatomic_armv7.h +CMakeFiles/pip_test.dir/main.cpp.obj: C:/Qt/4.8.6/include/QtCore/qatomic_avr32.h +CMakeFiles/pip_test.dir/main.cpp.obj: C:/Qt/4.8.6/include/QtCore/qatomic_bfin.h +CMakeFiles/pip_test.dir/main.cpp.obj: C:/Qt/4.8.6/include/QtCore/qatomic_bootstrap.h +CMakeFiles/pip_test.dir/main.cpp.obj: C:/Qt/4.8.6/include/QtCore/qatomic_generic.h +CMakeFiles/pip_test.dir/main.cpp.obj: C:/Qt/4.8.6/include/QtCore/qatomic_i386.h +CMakeFiles/pip_test.dir/main.cpp.obj: C:/Qt/4.8.6/include/QtCore/qatomic_ia64.h +CMakeFiles/pip_test.dir/main.cpp.obj: C:/Qt/4.8.6/include/QtCore/qatomic_integrity.h +CMakeFiles/pip_test.dir/main.cpp.obj: C:/Qt/4.8.6/include/QtCore/qatomic_m68k.h +CMakeFiles/pip_test.dir/main.cpp.obj: C:/Qt/4.8.6/include/QtCore/qatomic_macosx.h +CMakeFiles/pip_test.dir/main.cpp.obj: C:/Qt/4.8.6/include/QtCore/qatomic_mips.h +CMakeFiles/pip_test.dir/main.cpp.obj: C:/Qt/4.8.6/include/QtCore/qatomic_parisc.h +CMakeFiles/pip_test.dir/main.cpp.obj: C:/Qt/4.8.6/include/QtCore/qatomic_powerpc.h +CMakeFiles/pip_test.dir/main.cpp.obj: C:/Qt/4.8.6/include/QtCore/qatomic_s390.h +CMakeFiles/pip_test.dir/main.cpp.obj: C:/Qt/4.8.6/include/QtCore/qatomic_sh.h +CMakeFiles/pip_test.dir/main.cpp.obj: C:/Qt/4.8.6/include/QtCore/qatomic_sh4a.h +CMakeFiles/pip_test.dir/main.cpp.obj: C:/Qt/4.8.6/include/QtCore/qatomic_sparc.h +CMakeFiles/pip_test.dir/main.cpp.obj: C:/Qt/4.8.6/include/QtCore/qatomic_symbian.h +CMakeFiles/pip_test.dir/main.cpp.obj: C:/Qt/4.8.6/include/QtCore/qatomic_vxworks.h +CMakeFiles/pip_test.dir/main.cpp.obj: C:/Qt/4.8.6/include/QtCore/qatomic_windows.h +CMakeFiles/pip_test.dir/main.cpp.obj: C:/Qt/4.8.6/include/QtCore/qatomic_windowsce.h +CMakeFiles/pip_test.dir/main.cpp.obj: C:/Qt/4.8.6/include/QtCore/qatomic_x86_64.h +CMakeFiles/pip_test.dir/main.cpp.obj: C:/Qt/4.8.6/include/QtCore/qbasicatomic.h +CMakeFiles/pip_test.dir/main.cpp.obj: C:/Qt/4.8.6/include/QtCore/qconfig.h +CMakeFiles/pip_test.dir/main.cpp.obj: C:/Qt/4.8.6/include/QtCore/qfeatures.h +CMakeFiles/pip_test.dir/main.cpp.obj: C:/Qt/4.8.6/include/QtCore/qglobal.h +CMakeFiles/pip_test.dir/main.cpp.obj: C:/Qt/4.8.6/include/QtCore/qiterator.h +CMakeFiles/pip_test.dir/main.cpp.obj: C:/Qt/4.8.6/include/QtCore/qlist.h +CMakeFiles/pip_test.dir/main.cpp.obj: C:/Qt/4.8.6/src/corelib/arch/qatomic_alpha.h +CMakeFiles/pip_test.dir/main.cpp.obj: C:/Qt/4.8.6/src/corelib/arch/qatomic_arch.h +CMakeFiles/pip_test.dir/main.cpp.obj: C:/Qt/4.8.6/src/corelib/arch/qatomic_arm.h +CMakeFiles/pip_test.dir/main.cpp.obj: C:/Qt/4.8.6/src/corelib/arch/qatomic_armv5.h +CMakeFiles/pip_test.dir/main.cpp.obj: C:/Qt/4.8.6/src/corelib/arch/qatomic_armv6.h +CMakeFiles/pip_test.dir/main.cpp.obj: C:/Qt/4.8.6/src/corelib/arch/qatomic_armv7.h +CMakeFiles/pip_test.dir/main.cpp.obj: C:/Qt/4.8.6/src/corelib/arch/qatomic_avr32.h +CMakeFiles/pip_test.dir/main.cpp.obj: C:/Qt/4.8.6/src/corelib/arch/qatomic_bfin.h +CMakeFiles/pip_test.dir/main.cpp.obj: C:/Qt/4.8.6/src/corelib/arch/qatomic_bootstrap.h +CMakeFiles/pip_test.dir/main.cpp.obj: C:/Qt/4.8.6/src/corelib/arch/qatomic_generic.h +CMakeFiles/pip_test.dir/main.cpp.obj: C:/Qt/4.8.6/src/corelib/arch/qatomic_i386.h +CMakeFiles/pip_test.dir/main.cpp.obj: C:/Qt/4.8.6/src/corelib/arch/qatomic_ia64.h +CMakeFiles/pip_test.dir/main.cpp.obj: C:/Qt/4.8.6/src/corelib/arch/qatomic_integrity.h +CMakeFiles/pip_test.dir/main.cpp.obj: C:/Qt/4.8.6/src/corelib/arch/qatomic_m68k.h +CMakeFiles/pip_test.dir/main.cpp.obj: C:/Qt/4.8.6/src/corelib/arch/qatomic_macosx.h +CMakeFiles/pip_test.dir/main.cpp.obj: C:/Qt/4.8.6/src/corelib/arch/qatomic_mips.h +CMakeFiles/pip_test.dir/main.cpp.obj: C:/Qt/4.8.6/src/corelib/arch/qatomic_parisc.h +CMakeFiles/pip_test.dir/main.cpp.obj: C:/Qt/4.8.6/src/corelib/arch/qatomic_powerpc.h +CMakeFiles/pip_test.dir/main.cpp.obj: C:/Qt/4.8.6/src/corelib/arch/qatomic_s390.h +CMakeFiles/pip_test.dir/main.cpp.obj: C:/Qt/4.8.6/src/corelib/arch/qatomic_sh.h +CMakeFiles/pip_test.dir/main.cpp.obj: C:/Qt/4.8.6/src/corelib/arch/qatomic_sh4a.h +CMakeFiles/pip_test.dir/main.cpp.obj: C:/Qt/4.8.6/src/corelib/arch/qatomic_sparc.h +CMakeFiles/pip_test.dir/main.cpp.obj: C:/Qt/4.8.6/src/corelib/arch/qatomic_symbian.h +CMakeFiles/pip_test.dir/main.cpp.obj: C:/Qt/4.8.6/src/corelib/arch/qatomic_vxworks.h +CMakeFiles/pip_test.dir/main.cpp.obj: C:/Qt/4.8.6/src/corelib/arch/qatomic_windows.h +CMakeFiles/pip_test.dir/main.cpp.obj: C:/Qt/4.8.6/src/corelib/arch/qatomic_windowsce.h +CMakeFiles/pip_test.dir/main.cpp.obj: C:/Qt/4.8.6/src/corelib/arch/qatomic_x86_64.h +CMakeFiles/pip_test.dir/main.cpp.obj: C:/Qt/4.8.6/src/corelib/global/qconfig.h +CMakeFiles/pip_test.dir/main.cpp.obj: C:/Qt/4.8.6/src/corelib/global/qfeatures.h +CMakeFiles/pip_test.dir/main.cpp.obj: C:/Qt/4.8.6/src/corelib/global/qglobal.h +CMakeFiles/pip_test.dir/main.cpp.obj: C:/Qt/4.8.6/src/corelib/thread/qatomic.h +CMakeFiles/pip_test.dir/main.cpp.obj: C:/Qt/4.8.6/src/corelib/thread/qbasicatomic.h +CMakeFiles/pip_test.dir/main.cpp.obj: C:/Qt/4.8.6/src/corelib/tools/qalgorithms.h +CMakeFiles/pip_test.dir/main.cpp.obj: C:/Qt/4.8.6/src/corelib/tools/qiterator.h +CMakeFiles/pip_test.dir/main.cpp.obj: C:/Qt/4.8.6/src/corelib/tools/qlist.h +CMakeFiles/pip_test.dir/main.cpp.obj: main.cpp +CMakeFiles/pip_test.dir/main.cpp.obj: pibinarylog.h +CMakeFiles/pip_test.dir/main.cpp.obj: pibitarray.h +CMakeFiles/pip_test.dir/main.cpp.obj: pibytearray.h +CMakeFiles/pip_test.dir/main.cpp.obj: pichar.h +CMakeFiles/pip_test.dir/main.cpp.obj: picli.h +CMakeFiles/pip_test.dir/main.cpp.obj: picodec.h +CMakeFiles/pip_test.dir/main.cpp.obj: picodeparser.h +CMakeFiles/pip_test.dir/main.cpp.obj: picollection.h +CMakeFiles/pip_test.dir/main.cpp.obj: piconfig.h +CMakeFiles/pip_test.dir/main.cpp.obj: piconnection.h +CMakeFiles/pip_test.dir/main.cpp.obj: piconsole.h +CMakeFiles/pip_test.dir/main.cpp.obj: picontainers.h +CMakeFiles/pip_test.dir/main.cpp.obj: picrc.h +CMakeFiles/pip_test.dir/main.cpp.obj: pideque.h +CMakeFiles/pip_test.dir/main.cpp.obj: pidiagnostics.h +CMakeFiles/pip_test.dir/main.cpp.obj: pidir.h +CMakeFiles/pip_test.dir/main.cpp.obj: piethernet.h +CMakeFiles/pip_test.dir/main.cpp.obj: pievaluator.h +CMakeFiles/pip_test.dir/main.cpp.obj: pifile.h +CMakeFiles/pip_test.dir/main.cpp.obj: piincludes.h +CMakeFiles/pip_test.dir/main.cpp.obj: piiodevice.h +CMakeFiles/pip_test.dir/main.cpp.obj: pikbdlistener.h +CMakeFiles/pip_test.dir/main.cpp.obj: pimap.h +CMakeFiles/pip_test.dir/main.cpp.obj: pimath.h +CMakeFiles/pip_test.dir/main.cpp.obj: pimonitor.h +CMakeFiles/pip_test.dir/main.cpp.obj: pimultiprotocol.h +CMakeFiles/pip_test.dir/main.cpp.obj: pimutex.h +CMakeFiles/pip_test.dir/main.cpp.obj: piobject.h +CMakeFiles/pip_test.dir/main.cpp.obj: pip.h +CMakeFiles/pip_test.dir/main.cpp.obj: pip_export.h +CMakeFiles/pip_test.dir/main.cpp.obj: pipacketextractor.h +CMakeFiles/pip_test.dir/main.cpp.obj: pipeer.h +CMakeFiles/pip_test.dir/main.cpp.obj: piprocess.h +CMakeFiles/pip_test.dir/main.cpp.obj: piprotocol.h +CMakeFiles/pip_test.dir/main.cpp.obj: piqueue.h +CMakeFiles/pip_test.dir/main.cpp.obj: piserial.h +CMakeFiles/pip_test.dir/main.cpp.obj: pisignals.h +CMakeFiles/pip_test.dir/main.cpp.obj: pistack.h +CMakeFiles/pip_test.dir/main.cpp.obj: pistatemachine.h +CMakeFiles/pip_test.dir/main.cpp.obj: pistring.h +CMakeFiles/pip_test.dir/main.cpp.obj: pisystemmonitor.h +CMakeFiles/pip_test.dir/main.cpp.obj: pithread.h +CMakeFiles/pip_test.dir/main.cpp.obj: pitime.h +CMakeFiles/pip_test.dir/main.cpp.obj: pitimer.h +CMakeFiles/pip_test.dir/main.cpp.obj: piusb.h +CMakeFiles/pip_test.dir/main.cpp.obj: pivariant.h +CMakeFiles/pip_test.dir/main.cpp.obj: pivector.h + diff --git a/_oldpip/pip_0.4.0_r5/CMakeFiles/pip_test.dir/flags.make b/_oldpip/pip_0.4.0_r5/CMakeFiles/pip_test.dir/flags.make new file mode 100644 index 0000000..660a87e --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/CMakeFiles/pip_test.dir/flags.make @@ -0,0 +1,8 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "MinGW Makefiles" Generator, CMake Version 2.8 + +# compile CXX with C:/mingw/x32/bin/g++.exe +CXX_FLAGS = -O3 -DNDEBUG @CMakeFiles/pip_test.dir/includes_CXX.rsp -O2 + +CXX_DEFINES = -DPIP_MATH_J0 -DPIP_MATH_J1 -DPIP_MATH_JN -DPIP_MATH_Y0 -DPIP_MATH_Y1 -DPIP_MATH_YN + diff --git a/_oldpip/pip_0.4.0_r5/CMakeFiles/pip_test.dir/includes_CXX.rsp b/_oldpip/pip_0.4.0_r5/CMakeFiles/pip_test.dir/includes_CXX.rsp new file mode 100644 index 0000000..f7bb099 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/CMakeFiles/pip_test.dir/includes_CXX.rsp @@ -0,0 +1 @@ +-IC:/libs/oldpip/pip_0.4.0_r5 -IC:/libs/oldpip/pip_0.4.0_r5/. -IC:/Qt/4.8.6/include/ActiveQt -IC:/Qt/4.8.6/include/QtDesigner -IC:/Qt/4.8.6/include/QtDeclarative -IC:/Qt/4.8.6/include/QtScriptTools -IC:/Qt/4.8.6/include/QtDBus -IC:/Qt/4.8.6/include/QtXml -IC:/Qt/4.8.6/include/QtSql -IC:/Qt/4.8.6/include/QtOpenGL -IC:/Qt/4.8.6/include/QtMultimedia -IC:/Qt/4.8.6/include/QtNetwork -IC:/Qt/4.8.6/include/phonon -IC:/Qt/4.8.6/include/QtXmlPatterns -IC:/Qt/4.8.6/include/QtWebKit -IC:/Qt/4.8.6/include/QtHelp -IC:/Qt/4.8.6/include/QtUiTools -IC:/Qt/4.8.6/include/QtTest -IC:/Qt/4.8.6/include/QtScript -IC:/Qt/4.8.6/include/QtSvg -IC:/Qt/4.8.6/include/Qt3Support -IC:/Qt/4.8.6/include/QtGui -IC:/Qt/4.8.6/include/QtCore -IC:/Qt/4.8.6/mkspecs/default -IC:/Qt/4.8.6/include diff --git a/_oldpip/pip_0.4.0_r5/CMakeFiles/pip_test.dir/link.txt b/_oldpip/pip_0.4.0_r5/CMakeFiles/pip_test.dir/link.txt new file mode 100644 index 0000000..7600067 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/CMakeFiles/pip_test.dir/link.txt @@ -0,0 +1,3 @@ +"C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" -E remove -f CMakeFiles\pip_test.dir/objects.a +C:\mingw\x32\bin\ar.exe cr CMakeFiles\pip_test.dir/objects.a @CMakeFiles\pip_test.dir\objects1.rsp +C:\mingw\x32\bin\g++.exe -O3 -DNDEBUG -Wl,--whole-archive CMakeFiles\pip_test.dir/objects.a -Wl,--no-whole-archive -o pip_test.exe -Wl,--out-implib,libpip_test.dll.a -Wl,--major-image-version,0,--minor-image-version,0 libpip.dll.a C:\Qt\4.8.6\lib\libQtCore4.a -lws2_32 -lIphlpapi -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 diff --git a/_oldpip/pip_0.4.0_r5/CMakeFiles/pip_test.dir/main.cpp.obj b/_oldpip/pip_0.4.0_r5/CMakeFiles/pip_test.dir/main.cpp.obj new file mode 100644 index 0000000000000000000000000000000000000000..f356d5d78d91fac716b1f9c8eedbeb616792c08f GIT binary patch literal 25836 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 literal 0 HcmV?d00001 diff --git a/_oldpip/pip_0.4.0_r5/CMakeFiles/pip_test.dir/objects1.rsp b/_oldpip/pip_0.4.0_r5/CMakeFiles/pip_test.dir/objects1.rsp new file mode 100644 index 0000000..bc52c8d --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/CMakeFiles/pip_test.dir/objects1.rsp @@ -0,0 +1 @@ +CMakeFiles/pip_test.dir/main.cpp.obj diff --git a/_oldpip/pip_0.4.0_r5/CMakeFiles/pip_test.dir/progress.make b/_oldpip/pip_0.4.0_r5/CMakeFiles/pip_test.dir/progress.make new file mode 100644 index 0000000..c17bd70 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/CMakeFiles/pip_test.dir/progress.make @@ -0,0 +1,2 @@ +CMAKE_PROGRESS_1 = 43 + diff --git a/_oldpip/pip_0.4.0_r5/CMakeFiles/progress.marks b/_oldpip/pip_0.4.0_r5/CMakeFiles/progress.marks new file mode 100644 index 0000000..fbc941d --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/CMakeFiles/progress.marks @@ -0,0 +1 @@ +43 diff --git a/_oldpip/pip_0.4.0_r5/CMakeLists.txt b/_oldpip/pip_0.4.0_r5/CMakeLists.txt new file mode 100644 index 0000000..af00dda --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/CMakeLists.txt @@ -0,0 +1,127 @@ +project(pip) +cmake_minimum_required(VERSION 2.6) +include_directories(${CMAKE_CURRENT_SOURCE_DIR} .) +include(CheckFunctionExists) +set(VERSION "0.0400") +set(SOVERSION ${VERSION}) +set(CMAKE_BUILD_TYPE "Release") +set(LIBS) +file(GLOB HDRS "pi*.h") +file(GLOB CPPS "pi*.cpp") + + +# Check Bessel functions +set(CMAKE_REQUIRED_INCLUDES math.h) +set(CMAKE_REQUIRED_LIBRARIES m) +CHECK_FUNCTION_EXISTS(j0 PIP_MATH_J0) +CHECK_FUNCTION_EXISTS(j1 PIP_MATH_J1) +CHECK_FUNCTION_EXISTS(jn PIP_MATH_JN) +CHECK_FUNCTION_EXISTS(y0 PIP_MATH_Y0) +CHECK_FUNCTION_EXISTS(y1 PIP_MATH_Y1) +CHECK_FUNCTION_EXISTS(yn PIP_MATH_YN) +if (DEFINED PIP_MATH_J0) + add_definitions("-DPIP_MATH_J0") +endif () +if (DEFINED PIP_MATH_J1) + add_definitions("-DPIP_MATH_J1") +endif () +if (DEFINED PIP_MATH_JN) + add_definitions("-DPIP_MATH_JN") +endif () +if (DEFINED PIP_MATH_Y0) + add_definitions("-DPIP_MATH_Y0") +endif () +if (DEFINED PIP_MATH_Y1) + add_definitions("-DPIP_MATH_Y1") +endif () +if (DEFINED PIP_MATH_YN) + add_definitions("-DPIP_MATH_YN") +endif () + + +# Check if USB is on (to enable use "-DUSB=" argument of cmake) +if (DEFINED USB) + message(STATUS "Building with USB support") + unset(USB) + add_definitions("-DPIP_USB") + list(APPEND LIBS usb) +else () + message(STATUS "Building without USB support") +endif () + + +# Check if STL containers is on (to enable use "-DPIP_CONTAINERS_STL=" argument of cmake) +if (DEFINED PIP_CONTAINERS_STL) + message(STATUS "Building with STL containers") + unset(PIP_CONTAINERS_STL) + add_definitions("-DPIP_CONTAINERS_STL") +else () + message(STATUS "Building with PIP containers") +endif () + + +if (${WIN32}) + list(APPEND LIBS ws2_32 Iphlpapi) + execute_process(COMMAND "make_rc_win.bat" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) + list(APPEND CPPS "pip_resource_win.o") + add_library(pip SHARED ${CPPS}) + if (${CMAKE_C_COMPILER} STREQUAL "cl") + include(GenerateExportHeader) + generate_export_header(pip) + add_definitions("/O2 /Ob2 /Ot") + else () + add_definitions("-O2") + endif () +else () + add_definitions("-O2") + if (DEFINED ENV{QNX_HOST}) + list(APPEND LIBS socket) + add_definitions("-ftemplate-depth-32") + add_library(pip STATIC ${CPPS}) + else () + list(APPEND LIBS pthread) + if (NOT APPLE) + list(APPEND LIBS rt) + endif() + add_definitions("-Wall") + add_definitions("-g3") + add_library(pip SHARED ${CPPS}) + endif () +endif () +target_link_libraries(pip ${LIBS}) +#install(TARGETS pip DESTINATION bin) + + +# Test program +find_package(Qt4 REQUIRED) +include_directories(${QT_INCLUDES}) +add_executable(pip_test "main.cpp") +target_link_libraries(pip_test pip ${QT_QTCORE_LIBRARY}) +#target_link_libraries(pip_test pip) + + +add_subdirectory(system_test) +add_subdirectory(remote_console) +add_subdirectory(code_model_generator) + +if (DEFINED LIB) + unset(LIB) + if (${WIN32}) + get_filename_component(MGWDIR ${CMAKE_C_COMPILER} PATH) + find_path(MGWINCLUDE windows.h HINTS ${MGWDIR}/include) + file(RELATIVE_PATH MGWINCLUDE "${MGWDIR}" ${MGWINCLUDE}) + get_filename_component(MGWINCLUDE ${MGWINCLUDE} PATH) + string(SUBSTRING ${MGWINCLUDE} 1 -1 MGWINCLUDE) + message(STATUS "MGWINCLUDE = ${MGWINCLUDE}/include") + set(CMAKE_INSTALL_PREFIX ${MGWDIR}/..) + install(FILES ${HDRS} DESTINATION ${MGWINCLUDE}/include/pip) + install(TARGETS pip DESTINATION ${MGWINCLUDE}/lib) + else () + set(CMAKE_INSTALL_PREFIX /usr) + install(TARGETS pip DESTINATION lib) + install(FILES ${HDRS} DESTINATION include/pip) + endif () + install(FILES "FindPIP.cmake" DESTINATION ${CMAKE_ROOT}/Modules) +else () + install(TARGETS pip DESTINATION bin) +endif () diff --git a/_oldpip/pip_0.4.0_r5/Doxyfile b/_oldpip/pip_0.4.0_r5/Doxyfile new file mode 100644 index 0000000..baaafba --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/Doxyfile @@ -0,0 +1,2350 @@ +# Doxyfile 1.8.6 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project. +# +# All text after a double hash (##) is considered a comment and is placed in +# front of the TAG it is preceding. +# +# All text after a single hash (#) is considered a comment and will be ignored. +# The format is: +# TAG = value [value, ...] +# For lists, items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (\" \"). + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# This tag specifies the encoding used for all characters in the config file +# that follow. The default is UTF-8 which is also the encoding used for all text +# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv +# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv +# for the list of possible encodings. +# The default value is: UTF-8. + +DOXYFILE_ENCODING = UTF-8 + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by +# double-quotes, unless you are using Doxywizard) that should identify the +# project for which the documentation is generated. This name is used in the +# title of most generated pages and in a few other places. +# The default value is: My Project. + +PROJECT_NAME = PIP + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. This +# could be handy for archiving the generated documentation or if some version +# control system is used. + +PROJECT_NUMBER = 0.4.0 + +# Using the PROJECT_BRIEF tag one can provide an optional one line description +# for a project that appears at the top of each page and should give viewer a +# quick idea about the purpose of the project. Keep the description short. + +PROJECT_BRIEF = "Platform-Independent Primitives" + +# With the PROJECT_LOGO tag one can specify an logo or icon that is included in +# the documentation. The maximum height of the logo should not exceed 55 pixels +# and the maximum width should not exceed 200 pixels. Doxygen will copy the logo +# to the output directory. + +PROJECT_LOGO = + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path +# into which the generated documentation will be written. If a relative path is +# entered, it will be relative to the location where doxygen was started. If +# left blank the current directory will be used. + +OUTPUT_DIRECTORY = doc + +# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 4096 sub- +# directories (in 2 levels) under the output directory of each output format and +# will distribute the generated files over these directories. Enabling this +# option can be useful when feeding doxygen a huge amount of source files, where +# putting all generated files in the same directory would otherwise causes +# performance problems for the file system. +# The default value is: NO. + +CREATE_SUBDIRS = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese, +# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States), +# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian, +# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages), +# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian, +# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian, +# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish, +# Ukrainian and Vietnamese. +# The default value is: English. + +OUTPUT_LANGUAGE = English + +# If the BRIEF_MEMBER_DESC tag is set to YES doxygen will include brief member +# descriptions after the members that are listed in the file and class +# documentation (similar to Javadoc). Set to NO to disable this. +# The default value is: YES. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES doxygen will prepend the brief +# description of a member or function before the detailed description +# +# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. +# The default value is: YES. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator that is +# used to form the text in various listings. Each string in this list, if found +# as the leading text of the brief description, will be stripped from the text +# and the result, after processing the whole list, is used as the annotated +# text. Otherwise, the brief description is used as-is. If left blank, the +# following values are used ($name is automatically replaced with the name of +# the entity):The $name class, The $name widget, The $name file, is, provides, +# specifies, contains, represents, a, an and the. + +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# doxygen will generate a detailed section even if there is only a brief +# description. +# The default value is: NO. + +ALWAYS_DETAILED_SEC = NO + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. +# The default value is: NO. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES doxygen will prepend the full path +# before files name in the file list and in the header files. If set to NO the +# shortest path that makes the file name unique will be used +# The default value is: YES. + +FULL_PATH_NAMES = YES + +# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. +# Stripping is only done if one of the specified strings matches the left-hand +# part of the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the path to +# strip. +# +# Note that you can specify absolute paths here, but also relative paths, which +# will be relative from the directory where doxygen is started. +# This tag requires that the tag FULL_PATH_NAMES is set to YES. + +STRIP_FROM_PATH = + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the +# path mentioned in the documentation of a class, which tells the reader which +# header file to include in order to use a class. If left blank only the name of +# the header file containing the class definition is used. Otherwise one should +# specify the list of include paths that are normally passed to the compiler +# using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but +# less readable) file names. This can be useful is your file systems doesn't +# support long names like on DOS, Mac, or CD-ROM. +# The default value is: NO. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the +# first line (until the first dot) of a Javadoc-style comment as the brief +# description. If set to NO, the Javadoc-style will behave just like regular Qt- +# style comments (thus requiring an explicit @brief command for a brief +# description.) +# The default value is: NO. + +JAVADOC_AUTOBRIEF = NO + +# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first +# line (until the first dot) of a Qt-style comment as the brief description. If +# set to NO, the Qt-style will behave just like regular Qt-style comments (thus +# requiring an explicit \brief command for a brief description.) +# The default value is: NO. + +QT_AUTOBRIEF = NO + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a +# multi-line C++ special comment block (i.e. a block of //! or /// comments) as +# a brief description. This used to be the default behavior. The new default is +# to treat a multi-line C++ comment block as a detailed description. Set this +# tag to YES if you prefer the old behavior instead. +# +# Note that setting this tag to YES also means that rational rose comments are +# not recognized any more. +# The default value is: NO. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the +# documentation from any documented member that it re-implements. +# The default value is: YES. + +INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce a +# new page for each member. If set to NO, the documentation of a member will be +# part of the file/class/namespace that contains it. +# The default value is: NO. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen +# uses this value to replace tabs by spaces in code fragments. +# Minimum value: 1, maximum value: 16, default value: 4. + +TAB_SIZE = 4 + +# This tag can be used to specify a number of aliases that act as commands in +# the documentation. An alias has the form: +# name=value +# For example adding +# "sideeffect=@par Side Effects:\n" +# will allow you to put the command \sideeffect (or @sideeffect) in the +# documentation, which will result in a user-defined paragraph with heading +# "Side Effects:". You can put \n's in the value part of an alias to insert +# newlines. + +ALIASES = "handlers=\name Handlers" \ + "vhandlers=\name Virtual handlers" \ + "events=\name Events" \ + "ioparams=\name Configurable parameters" + +# This tag can be used to specify a number of word-keyword mappings (TCL only). +# A mapping has the form "name=value". For example adding "class=itcl::class" +# will allow you to use the command class in the itcl::class meaning. + +TCL_SUBST = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources +# only. Doxygen will then generate output that is more tailored for C. For +# instance, some of the names that are used will be different. The list of all +# members will be omitted, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_FOR_C = NO + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or +# Python sources only. Doxygen will then generate output that is more tailored +# for that language. For instance, namespaces will be presented as packages, +# qualified scopes will look different, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran +# sources. Doxygen will then generate output that is tailored for Fortran. +# The default value is: NO. + +OPTIMIZE_FOR_FORTRAN = NO + +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL +# sources. Doxygen will then generate output that is tailored for VHDL. +# The default value is: NO. + +OPTIMIZE_OUTPUT_VHDL = NO + +# Doxygen selects the parser to use depending on the extension of the files it +# parses. With this tag you can assign which parser to use for a given +# extension. Doxygen has a built-in mapping, but you can override or extend it +# using this tag. The format is ext=language, where ext is a file extension, and +# language is one of the parsers supported by doxygen: IDL, Java, Javascript, +# C#, C, C++, D, PHP, Objective-C, Python, Fortran, VHDL. For instance to make +# doxygen treat .inc files as Fortran files (default is PHP), and .f files as C +# (default is Fortran), use: inc=Fortran f=C. +# +# Note For files without extension you can use no_extension as a placeholder. +# +# Note that for custom extensions you also need to set FILE_PATTERNS otherwise +# the files are not read by doxygen. + +EXTENSION_MAPPING = + +# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments +# according to the Markdown format, which allows for more readable +# documentation. See http://daringfireball.net/projects/markdown/ for details. +# The output of markdown processing is further processed by doxygen, so you can +# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in +# case of backward compatibilities issues. +# The default value is: YES. + +MARKDOWN_SUPPORT = YES + +# When enabled doxygen tries to link words that correspond to documented +# classes, or namespaces to their corresponding documentation. Such a link can +# be prevented in individual cases by by putting a % sign in front of the word +# or globally by setting AUTOLINK_SUPPORT to NO. +# The default value is: YES. + +AUTOLINK_SUPPORT = YES + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want +# to include (a tag file for) the STL sources as input, then you should set this +# tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); +# versus func(std::string) {}). This also make the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. +# The default value is: NO. + +BUILTIN_STL_SUPPORT = NO + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. +# The default value is: NO. + +CPP_CLI_SUPPORT = NO + +# Set the SIP_SUPPORT tag to YES if your project consists of sip (see: +# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen +# will parse them like normal C++ but will assume all classes use public instead +# of private inheritance when no explicit protection keyword is present. +# The default value is: NO. + +SIP_SUPPORT = NO + +# For Microsoft's IDL there are propget and propput attributes to indicate +# getter and setter methods for a property. Setting this option to YES will make +# doxygen to replace the get and set methods by a property in the documentation. +# This will only work if the methods are indeed getting or setting a simple +# type. If this is not the case, or you want to show the methods anyway, you +# should set this option to NO. +# The default value is: YES. + +IDL_PROPERTY_SUPPORT = NO + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES, then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. +# The default value is: NO. + +DISTRIBUTE_GROUP_DOC = NO + +# Set the SUBGROUPING tag to YES to allow class member groups of the same type +# (for instance a group of public functions) to be put as a subgroup of that +# type (e.g. under the Public Functions section). Set it to NO to prevent +# subgrouping. Alternatively, this can be done per class using the +# \nosubgrouping command. +# The default value is: YES. + +SUBGROUPING = NO + +# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions +# are shown inside the group in which they are included (e.g. using \ingroup) +# instead of on a separate page (for HTML and Man pages) or section (for LaTeX +# and RTF). +# +# Note that this feature does not work in combination with +# SEPARATE_MEMBER_PAGES. +# The default value is: NO. + +INLINE_GROUPED_CLASSES = NO + +# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions +# with only public data fields or simple typedef fields will be shown inline in +# the documentation of the scope in which they are defined (i.e. file, +# namespace, or group documentation), provided this scope is documented. If set +# to NO, structs, classes, and unions are shown on a separate page (for HTML and +# Man pages) or section (for LaTeX and RTF). +# The default value is: NO. + +INLINE_SIMPLE_STRUCTS = NO + +# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or +# enum is documented as struct, union, or enum with the name of the typedef. So +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct +# with name TypeT. When disabled the typedef will appear as a member of a file, +# namespace, or class. And the struct will be named TypeS. This can typically be +# useful for C code in case the coding convention dictates that all compound +# types are typedef'ed and only the typedef is referenced, never the tag name. +# The default value is: NO. + +TYPEDEF_HIDES_STRUCT = NO + +# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This +# cache is used to resolve symbols given their name and scope. Since this can be +# an expensive process and often the same symbol appears multiple times in the +# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small +# doxygen will become slower. If the cache is too large, memory is wasted. The +# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range +# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 +# symbols. At the end of a run doxygen will report the cache usage and suggest +# the optimal cache size from a speed point of view. +# Minimum value: 0, maximum value: 9, default value: 0. + +LOOKUP_CACHE_SIZE = 0 + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in +# documentation are documented, even if no documentation was available. Private +# class members and static file members will be hidden unless the +# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. +# Note: This will also disable the warnings about undocumented members that are +# normally produced when WARNINGS is set to YES. +# The default value is: NO. + +EXTRACT_ALL = NO + +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class will +# be included in the documentation. +# The default value is: NO. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal +# scope will be included in the documentation. +# The default value is: NO. + +EXTRACT_PACKAGE = NO + +# If the EXTRACT_STATIC tag is set to YES all static members of a file will be +# included in the documentation. +# The default value is: NO. + +EXTRACT_STATIC = NO + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) defined +# locally in source files will be included in the documentation. If set to NO +# only classes defined in header files are included. Does not have any effect +# for Java sources. +# The default value is: YES. + +EXTRACT_LOCAL_CLASSES = YES + +# This flag is only useful for Objective-C code. When set to YES local methods, +# which are defined in the implementation section but not in the interface are +# included in the documentation. If set to NO only methods in the interface are +# included. +# The default value is: NO. + +EXTRACT_LOCAL_METHODS = YES + +# If this flag is set to YES, the members of anonymous namespaces will be +# extracted and appear in the documentation as a namespace called +# 'anonymous_namespace{file}', where file will be replaced with the base name of +# the file that contains the anonymous namespace. By default anonymous namespace +# are hidden. +# The default value is: NO. + +EXTRACT_ANON_NSPACES = NO + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all +# undocumented members inside documented classes or files. If set to NO these +# members will be included in the various overviews, but no documentation +# section is generated. This option has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_MEMBERS = YES + +# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. If set +# to NO these classes will be included in the various overviews. This option has +# no effect if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_CLASSES = YES + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend +# (class|struct|union) declarations. If set to NO these declarations will be +# included in the documentation. +# The default value is: NO. + +HIDE_FRIEND_COMPOUNDS = YES + +# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any +# documentation blocks found inside the body of a function. If set to NO these +# blocks will be appended to the function's detailed documentation block. +# The default value is: NO. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation that is typed after a +# \internal command is included. If the tag is set to NO then the documentation +# will be excluded. Set it to YES to include the internal documentation. +# The default value is: NO. + +INTERNAL_DOCS = NO + +# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file +# names in lower-case letters. If set to YES upper-case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# and Mac users are advised to set this option to NO. +# The default value is: system dependent. + +CASE_SENSE_NAMES = NO + +# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with +# their full class and namespace scopes in the documentation. If set to YES the +# scope will be hidden. +# The default value is: NO. + +HIDE_SCOPE_NAMES = NO + +# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of +# the files that are included by a file in the documentation of that file. +# The default value is: YES. + +SHOW_INCLUDE_FILES = NO + +# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each +# grouped member an include statement to the documentation, telling the reader +# which file to include in order to use the member. +# The default value is: NO. + +SHOW_GROUPED_MEMB_INC = NO + +# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include +# files with double quotes in the documentation rather than with sharp brackets. +# The default value is: NO. + +FORCE_LOCAL_INCLUDES = NO + +# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the +# documentation for inline members. +# The default value is: YES. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the +# (detailed) documentation of file and class members alphabetically by member +# name. If set to NO the members will appear in declaration order. +# The default value is: YES. + +SORT_MEMBER_DOCS = NO + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief +# descriptions of file, namespace and class members alphabetically by member +# name. If set to NO the members will appear in declaration order. Note that +# this will also influence the order of the classes in the class list. +# The default value is: NO. + +SORT_BRIEF_DOCS = NO + +# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the +# (brief and detailed) documentation of class members so that constructors and +# destructors are listed first. If set to NO the constructors will appear in the +# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. +# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief +# member documentation. +# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting +# detailed member documentation. +# The default value is: NO. + +SORT_MEMBERS_CTORS_1ST = NO + +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy +# of group names into alphabetical order. If set to NO the group names will +# appear in their defined order. +# The default value is: NO. + +SORT_GROUP_NAMES = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by +# fully-qualified names, including namespaces. If set to NO, the class list will +# be sorted only by class name, not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the alphabetical +# list. +# The default value is: NO. + +SORT_BY_SCOPE_NAME = NO + +# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper +# type resolution of all parameters of a function it will reject a match between +# the prototype and the implementation of a member function even if there is +# only one candidate or it is obvious which candidate to choose by doing a +# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still +# accept a match between prototype and implementation in such cases. +# The default value is: NO. + +STRICT_PROTO_MATCHING = NO + +# The GENERATE_TODOLIST tag can be used to enable ( YES) or disable ( NO) the +# todo list. This list is created by putting \todo commands in the +# documentation. +# The default value is: YES. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable ( YES) or disable ( NO) the +# test list. This list is created by putting \test commands in the +# documentation. +# The default value is: YES. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable ( YES) or disable ( NO) the bug +# list. This list is created by putting \bug commands in the documentation. +# The default value is: YES. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable ( YES) or disable ( NO) +# the deprecated list. This list is created by putting \deprecated commands in +# the documentation. +# The default value is: YES. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional documentation +# sections, marked by \if ... \endif and \cond +# ... \endcond blocks. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the +# initial value of a variable or macro / define can have for it to appear in the +# documentation. If the initializer consists of more lines than specified here +# it will be hidden. Use a value of 0 to hide initializers completely. The +# appearance of the value of individual variables and macros / defines can be +# controlled using \showinitializer or \hideinitializer command in the +# documentation regardless of this setting. +# Minimum value: 0, maximum value: 10000, default value: 30. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at +# the bottom of the documentation of classes and structs. If set to YES the list +# will mention the files that were used to generate the documentation. +# The default value is: YES. + +SHOW_USED_FILES = NO + +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This +# will remove the Files entry from the Quick Index and from the Folder Tree View +# (if specified). +# The default value is: YES. + +SHOW_FILES = YES + +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces +# page. This will remove the Namespaces entry from the Quick Index and from the +# Folder Tree View (if specified). +# The default value is: YES. + +SHOW_NAMESPACES = YES + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from +# the version control system). Doxygen will invoke the program by executing (via +# popen()) the command command input-file, where command is the value of the +# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided +# by doxygen. Whatever the program writes to standard output is used as the file +# version. For an example see the documentation. + +FILE_VERSION_FILTER = + +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed +# by doxygen. The layout file controls the global structure of the generated +# output files in an output format independent way. To create the layout file +# that represents doxygen's defaults, run doxygen with the -l option. You can +# optionally specify a file name after the option, if omitted DoxygenLayout.xml +# will be used as the name of the layout file. +# +# Note that if you run doxygen from a directory containing a file called +# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE +# tag is left empty. + +LAYOUT_FILE = + +# The CITE_BIB_FILES tag can be used to specify one or more bib files containing +# the reference definitions. This must be a list of .bib files. The .bib +# extension is automatically appended if omitted. This requires the bibtex tool +# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info. +# For LaTeX the style of the bibliography can be controlled using +# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the +# search path. Do not use file names with spaces, bibtex cannot handle them. See +# also \cite for info how to create references. + +CITE_BIB_FILES = + +#--------------------------------------------------------------------------- +# Configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated to +# standard output by doxygen. If QUIET is set to YES this implies that the +# messages are off. +# The default value is: NO. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated to standard error ( stderr) by doxygen. If WARNINGS is set to YES +# this implies that the warnings are on. +# +# Tip: Turn warnings on while writing the documentation. +# The default value is: YES. + +WARNINGS = YES + +# If the WARN_IF_UNDOCUMENTED tag is set to YES, then doxygen will generate +# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag +# will automatically be disabled. +# The default value is: YES. + +WARN_IF_UNDOCUMENTED = YES + +# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some parameters +# in a documented function, or documenting parameters that don't exist or using +# markup commands wrongly. +# The default value is: YES. + +WARN_IF_DOC_ERROR = YES + +# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that +# are documented, but have no documentation for their parameters or return +# value. If set to NO doxygen will only warn about wrong or incomplete parameter +# documentation, but not about the absence of documentation. +# The default value is: NO. + +WARN_NO_PARAMDOC = NO + +# The WARN_FORMAT tag determines the format of the warning messages that doxygen +# can produce. The string should contain the $file, $line, and $text tags, which +# will be replaced by the file and line number from which the warning originated +# and the warning text. Optionally the format may contain $version, which will +# be replaced by the version of the file (if it could be obtained via +# FILE_VERSION_FILTER) +# The default value is: $file:$line: $text. + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning and error +# messages should be written. If left blank the output is written to standard +# error (stderr). + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# Configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag is used to specify the files and/or directories that contain +# documented source files. You may enter file names like myfile.cpp or +# directories like /usr/src/myproject. Separate the files or directories with +# spaces. +# Note: If this tag is empty the current directory is searched. + +INPUT = . + +# This tag can be used to specify the character encoding of the source files +# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses +# libiconv (or the iconv built into libc) for the transcoding. See the libiconv +# documentation (see: http://www.gnu.org/software/libiconv) for the list of +# possible encodings. +# The default value is: UTF-8. + +INPUT_ENCODING = UTF-8 + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and +# *.h) to filter out the source-files in the directories. If left blank the +# following patterns are tested:*.c, *.cc, *.cxx, *.cpp, *.c++, *.java, *.ii, +# *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp, +# *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown, +# *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf, +# *.qsf, *.as and *.js. + +FILE_PATTERNS = *.c \ + *.cc \ + *.cxx \ + *.cpp \ + *.c++ \ + *.d \ + *.java \ + *.ii \ + *.ixx \ + *.ipp \ + *.i++ \ + *.inl \ + *.h \ + *.hh \ + *.hxx \ + *.hpp \ + *.h++ \ + *.idl \ + *.odl \ + *.cs \ + *.php \ + *.php3 \ + *.inc \ + *.m \ + *.markdown \ + *.md \ + *.mm \ + *.dox \ + *.py \ + *.f90 \ + *.f \ + *.for \ + *.vhd \ + *.vhdl + +# The RECURSIVE tag can be used to specify whether or not subdirectories should +# be searched for input files as well. +# The default value is: NO. + +RECURSIVE = NO + +# The EXCLUDE tag can be used to specify files and/or directories that should be +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. +# +# Note that relative paths are relative to the directory from which doxygen is +# run. + +EXCLUDE = + +# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or +# directories that are symbolic links (a Unix file system feature) are excluded +# from the input. +# The default value is: NO. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories for example use the pattern */test/* + +EXCLUDE_PATTERNS = + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the +# output. The symbol name can be a fully qualified name, a word, or if the +# wildcard * is used, a substring. Examples: ANamespace, AClass, +# AClass::ANamespace, ANamespace::*Test +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories use the pattern */test/* + +EXCLUDE_SYMBOLS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or directories +# that contain example code fragments that are included (see the \include +# command). + +EXAMPLE_PATH = doc/examples + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and +# *.h) to filter out the source-files in the directories. If left blank all +# files are included. + +EXAMPLE_PATTERNS = * + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude commands +# irrespective of the value of the RECURSIVE tag. +# The default value is: NO. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or directories +# that contain images that are to be included in the documentation (see the +# \image command). + +IMAGE_PATH = doc/images + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command: +# +# +# +# where is the value of the INPUT_FILTER tag, and is the +# name of an input file. Doxygen will then use the output that the filter +# program writes to standard output. If FILTER_PATTERNS is specified, this tag +# will be ignored. +# +# Note that the filter must not add or remove lines; it is applied before the +# code is scanned, but not when the output code is generated. If lines are added +# or removed, the anchors will not be placed correctly. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. The filters are a list of the form: pattern=filter +# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how +# filters are used. If the FILTER_PATTERNS tag is empty or if none of the +# patterns match the file name, INPUT_FILTER is applied. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER ) will also be used to filter the input files that are used for +# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). +# The default value is: NO. + +FILTER_SOURCE_FILES = NO + +# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file +# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and +# it is also possible to disable source filtering for a specific pattern using +# *.ext= (so without naming a filter). +# This tag requires that the tag FILTER_SOURCE_FILES is set to YES. + +FILTER_SOURCE_PATTERNS = + +# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that +# is part of the input, its contents will be placed on the main page +# (index.html). This can be useful if you have a project on for instance GitHub +# and want to reuse the introduction page also for the doxygen output. + +USE_MDFILE_AS_MAINPAGE = + +#--------------------------------------------------------------------------- +# Configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will be +# generated. Documented entities will be cross-referenced with these sources. +# +# Note: To get rid of all source code in the generated output, make sure that +# also VERBATIM_HEADERS is set to NO. +# The default value is: NO. + +SOURCE_BROWSER = NO + +# Setting the INLINE_SOURCES tag to YES will include the body of functions, +# classes and enums directly into the documentation. +# The default value is: NO. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any +# special comment blocks from generated source code fragments. Normal C, C++ and +# Fortran comments will always remain visible. +# The default value is: YES. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES then for each documented +# function all documented functions referencing it will be listed. +# The default value is: NO. + +REFERENCED_BY_RELATION = NO + +# If the REFERENCES_RELATION tag is set to YES then for each documented function +# all documented entities called/used by that function will be listed. +# The default value is: NO. + +REFERENCES_RELATION = NO + +# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set +# to YES, then the hyperlinks from functions in REFERENCES_RELATION and +# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will +# link to the documentation. +# The default value is: YES. + +REFERENCES_LINK_SOURCE = YES + +# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the +# source code will show a tooltip with additional information such as prototype, +# brief description and links to the definition and documentation. Since this +# will make the HTML file larger and loading of large files a bit slower, you +# can opt to disable this feature. +# The default value is: YES. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +SOURCE_TOOLTIPS = YES + +# If the USE_HTAGS tag is set to YES then the references to source code will +# point to the HTML generated by the htags(1) tool instead of doxygen built-in +# source browser. The htags tool is part of GNU's global source tagging system +# (see http://www.gnu.org/software/global/global.html). You will need version +# 4.8.6 or higher. +# +# To use it do the following: +# - Install the latest version of global +# - Enable SOURCE_BROWSER and USE_HTAGS in the config file +# - Make sure the INPUT points to the root of the source tree +# - Run doxygen as normal +# +# Doxygen will invoke htags (and that will in turn invoke gtags), so these +# tools must be available from the command line (i.e. in the search path). +# +# The result: instead of the source browser generated by doxygen, the links to +# source code will now point to the output of htags. +# The default value is: NO. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a +# verbatim copy of the header file for each class for which an include is +# specified. Set to NO to disable this. +# See also: Section \class. +# The default value is: YES. + +VERBATIM_HEADERS = NO + +#--------------------------------------------------------------------------- +# Configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all +# compounds will be generated. Enable this if the project contains a lot of +# classes, structs, unions or interfaces. +# The default value is: YES. + +ALPHABETICAL_INDEX = YES + +# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in +# which the alphabetical index list will be split. +# Minimum value: 1, maximum value: 20, default value: 5. +# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. + +COLS_IN_ALPHA_INDEX = 5 + +# In case all classes in a project start with a common prefix, all classes will +# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag +# can be used to specify a prefix (or a list of prefixes) that should be ignored +# while generating the index headers. +# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES doxygen will generate HTML output +# The default value is: YES. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a +# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of +# it. +# The default directory is: html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_OUTPUT = html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each +# generated HTML page (for example: .htm, .php, .asp). +# The default value is: .html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a user-defined HTML header file for +# each generated HTML page. If the tag is left blank doxygen will generate a +# standard header. +# +# To get valid HTML the header file that includes any scripts and style sheets +# that doxygen needs, which is dependent on the configuration options used (e.g. +# the setting GENERATE_TREEVIEW). It is highly recommended to start with a +# default header using +# doxygen -w html new_header.html new_footer.html new_stylesheet.css +# YourConfigFile +# and then modify the file new_header.html. See also section "Doxygen usage" +# for information on how to generate the default header that doxygen normally +# uses. +# Note: The header is subject to change so you typically have to regenerate the +# default header when upgrading to a newer version of doxygen. For a description +# of the possible markers and block names see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each +# generated HTML page. If the tag is left blank doxygen will generate a standard +# footer. See HTML_HEADER for more information on how to generate a default +# footer and what special commands can be used inside the footer. See also +# section "Doxygen usage" for information on how to generate the default footer +# that doxygen normally uses. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style +# sheet that is used by each HTML page. It can be used to fine-tune the look of +# the HTML output. If left blank doxygen will generate a default style sheet. +# See also section "Doxygen usage" for information on how to generate the style +# sheet that doxygen normally uses. +# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as +# it is more robust and this tag (HTML_STYLESHEET) will in the future become +# obsolete. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_STYLESHEET = + +# The HTML_EXTRA_STYLESHEET tag can be used to specify an additional user- +# defined cascading style sheet that is included after the standard style sheets +# created by doxygen. Using this option one can overrule certain style aspects. +# This is preferred over using HTML_STYLESHEET since it does not replace the +# standard style sheet and is therefor more robust against future updates. +# Doxygen will copy the style sheet file to the output directory. For an example +# see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_STYLESHEET = + +# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or +# other source files which should be copied to the HTML output directory. Note +# that these files will be copied to the base HTML output directory. Use the +# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these +# files. In the HTML_STYLESHEET file, use the file name only. Also note that the +# files will be copied as-is; there are no commands or markers available. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_FILES = + +# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen +# will adjust the colors in the stylesheet and background images according to +# this color. Hue is specified as an angle on a colorwheel, see +# http://en.wikipedia.org/wiki/Hue for more information. For instance the value +# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 +# purple, and 360 is red again. +# Minimum value: 0, maximum value: 359, default value: 220. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_HUE = 246 + +# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors +# in the HTML output. For a value of 0 the output will use grayscales only. A +# value of 255 will produce the most vivid colors. +# Minimum value: 0, maximum value: 255, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_SAT = 79 + +# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the +# luminance component of the colors in the HTML output. Values below 100 +# gradually make the output lighter, whereas values above 100 make the output +# darker. The value divided by 100 is the actual gamma applied, so 80 represents +# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not +# change the gamma. +# Minimum value: 40, maximum value: 240, default value: 80. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_GAMMA = 75 + +# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML +# page will contain the date and time when the page was generated. Setting this +# to NO can help when comparing the output of multiple runs. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_TIMESTAMP = YES + +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML +# documentation will contain sections that can be hidden and shown after the +# page has loaded. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_DYNAMIC_SECTIONS = YES + +# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries +# shown in the various tree structured indices initially; the user can expand +# and collapse entries dynamically later on. Doxygen will expand the tree to +# such a level that at most the specified number of entries are visible (unless +# a fully collapsed tree already exceeds this amount). So setting the number of +# entries 1 will produce a full collapsed tree by default. 0 is a special value +# representing an infinite number of entries and will result in a full expanded +# tree by default. +# Minimum value: 0, maximum value: 9999, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_INDEX_NUM_ENTRIES = 100 + +# If the GENERATE_DOCSET tag is set to YES, additional index files will be +# generated that can be used as input for Apple's Xcode 3 integrated development +# environment (see: http://developer.apple.com/tools/xcode/), introduced with +# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a +# Makefile in the HTML output directory. Running make will produce the docset in +# that directory and running make install will install the docset in +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at +# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html +# for more information. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_DOCSET = NO + +# This tag determines the name of the docset feed. A documentation feed provides +# an umbrella under which multiple documentation sets from a single provider +# (such as a company or product suite) can be grouped. +# The default value is: Doxygen generated docs. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_FEEDNAME = "Doxygen generated docs" + +# This tag specifies a string that should uniquely identify the documentation +# set bundle. This should be a reverse domain-name style string, e.g. +# com.mycompany.MyDocSet. Doxygen will append .docset to the name. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_BUNDLE_ID = org.doxygen.Project + +# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify +# the documentation publisher. This should be a reverse domain-name style +# string, e.g. com.mycompany.MyDocSet.documentation. +# The default value is: org.doxygen.Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_ID = org.doxygen.Publisher + +# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. +# The default value is: Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_NAME = Publisher + +# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three +# additional HTML index files: index.hhp, index.hhc, and index.hhk. The +# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop +# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on +# Windows. +# +# The HTML Help Workshop contains a compiler that can convert all HTML output +# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML +# files are now used as the Windows 98 help format, and will replace the old +# Windows help format (.hlp) on all Windows platforms in the future. Compressed +# HTML files also contain an index, a table of contents, and you can search for +# words in the documentation. The HTML workshop also contains a viewer for +# compressed HTML files. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_HTMLHELP = NO + +# The CHM_FILE tag can be used to specify the file name of the resulting .chm +# file. You can add a path in front of the file if the result should not be +# written to the html output directory. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_FILE = + +# The HHC_LOCATION tag can be used to specify the location (absolute path +# including file name) of the HTML help compiler ( hhc.exe). If non-empty +# doxygen will try to run the HTML help compiler on the generated index.hhp. +# The file has to be specified with full path. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +HHC_LOCATION = + +# The GENERATE_CHI flag controls if a separate .chi index file is generated ( +# YES) or that it should be included in the master .chm file ( NO). +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +GENERATE_CHI = NO + +# The CHM_INDEX_ENCODING is used to encode HtmlHelp index ( hhk), content ( hhc) +# and project file content. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_INDEX_ENCODING = + +# The BINARY_TOC flag controls whether a binary table of contents is generated ( +# YES) or a normal table of contents ( NO) in the .chm file. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members to +# the table of contents of the HTML help documentation and to the tree view. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +TOC_EXPAND = NO + +# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and +# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that +# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help +# (.qch) of the generated HTML documentation. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_QHP = YES + +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify +# the file name of the resulting .qch file. The path specified is relative to +# the HTML output folder. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QCH_FILE = pip.qhp + +# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help +# Project output. For more information please see Qt Help Project / Namespace +# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace). +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_NAMESPACE = PIP + +# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt +# Help Project output. For more information please see Qt Help Project / Virtual +# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual- +# folders). +# The default value is: doc. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_VIRTUAL_FOLDER = doc + +# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom +# filter to add. For more information please see Qt Help Project / Custom +# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- +# filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_NAME = + +# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the +# custom filter to add. For more information please see Qt Help Project / Custom +# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- +# filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_ATTRS = + +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this +# project's filter section matches. Qt Help Project / Filter Attributes (see: +# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_SECT_FILTER_ATTRS = + +# The QHG_LOCATION tag can be used to specify the location of Qt's +# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the +# generated .qhp file. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHG_LOCATION = qhelpgenerator + +# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be +# generated, together with the HTML files, they form an Eclipse help plugin. To +# install this plugin and make it available under the help contents menu in +# Eclipse, the contents of the directory containing the HTML and XML files needs +# to be copied into the plugins directory of eclipse. The name of the directory +# within the plugins directory should be the same as the ECLIPSE_DOC_ID value. +# After copying Eclipse needs to be restarted before the help appears. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_ECLIPSEHELP = NO + +# A unique identifier for the Eclipse help plugin. When installing the plugin +# the directory name containing the HTML and XML files should also have this +# name. Each documentation set should have its own identifier. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. + +ECLIPSE_DOC_ID = org.doxygen.Project + +# If you want full control over the layout of the generated HTML pages it might +# be necessary to disable the index and replace it with your own. The +# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top +# of each HTML page. A value of NO enables the index and the value YES disables +# it. Since the tabs in the index contain the same information as the navigation +# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +DISABLE_INDEX = NO + +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index +# structure should be generated to display hierarchical information. If the tag +# value is set to YES, a side panel will be generated containing a tree-like +# index structure (just like the one that is generated for HTML Help). For this +# to work a browser that supports JavaScript, DHTML, CSS and frames is required +# (i.e. any modern browser). Windows users are probably better off using the +# HTML help feature. Via custom stylesheets (see HTML_EXTRA_STYLESHEET) one can +# further fine-tune the look of the index. As an example, the default style +# sheet generated by doxygen has an example that shows how to put an image at +# the root of the tree instead of the PROJECT_NAME. Since the tree basically has +# the same information as the tab index, you could consider setting +# DISABLE_INDEX to YES when enabling this option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_TREEVIEW = YES + +# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that +# doxygen will group on one line in the generated HTML documentation. +# +# Note that a value of 0 will completely suppress the enum values from appearing +# in the overview section. +# Minimum value: 0, maximum value: 20, default value: 4. +# This tag requires that the tag GENERATE_HTML is set to YES. + +ENUM_VALUES_PER_LINE = 4 + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used +# to set the initial width (in pixels) of the frame in which the tree is shown. +# Minimum value: 0, maximum value: 1500, default value: 250. +# This tag requires that the tag GENERATE_HTML is set to YES. + +TREEVIEW_WIDTH = 250 + +# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open links to +# external symbols imported via tag files in a separate window. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +EXT_LINKS_IN_WINDOW = NO + +# Use this tag to change the font size of LaTeX formulas included as images in +# the HTML documentation. When you change the font size after a successful +# doxygen run you need to manually remove any form_*.png images from the HTML +# output directory to force them to be regenerated. +# Minimum value: 8, maximum value: 50, default value: 10. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FORMULA_FONTSIZE = 10 + +# Use the FORMULA_TRANPARENT tag to determine whether or not the images +# generated for formulas are transparent PNGs. Transparent PNGs are not +# supported properly for IE 6.0, but are supported on all modern browsers. +# +# Note that when changing this option you need to delete any form_*.png files in +# the HTML output directory before the changes have effect. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FORMULA_TRANSPARENT = YES + +# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see +# http://www.mathjax.org) which uses client side Javascript for the rendering +# instead of using prerendered bitmaps. Use this if you do not have LaTeX +# installed or if you want to formulas look prettier in the HTML output. When +# enabled you may also need to install MathJax separately and configure the path +# to it using the MATHJAX_RELPATH option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +USE_MATHJAX = NO + +# When MathJax is enabled you can set the default output format to be used for +# the MathJax output. See the MathJax site (see: +# http://docs.mathjax.org/en/latest/output.html) for more details. +# Possible values are: HTML-CSS (which is slower, but has the best +# compatibility), NativeMML (i.e. MathML) and SVG. +# The default value is: HTML-CSS. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_FORMAT = HTML-CSS + +# When MathJax is enabled you need to specify the location relative to the HTML +# output directory using the MATHJAX_RELPATH option. The destination directory +# should contain the MathJax.js script. For instance, if the mathjax directory +# is located at the same level as the HTML output directory, then +# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax +# Content Delivery Network so you can quickly see the result without installing +# MathJax. However, it is strongly recommended to install a local copy of +# MathJax from http://www.mathjax.org before deployment. +# The default value is: http://cdn.mathjax.org/mathjax/latest. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest + +# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax +# extension names that should be enabled during MathJax rendering. For example +# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_EXTENSIONS = + +# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces +# of code that will be used on startup of the MathJax code. See the MathJax site +# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an +# example see the documentation. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_CODEFILE = + +# When the SEARCHENGINE tag is enabled doxygen will generate a search box for +# the HTML output. The underlying search engine uses javascript and DHTML and +# should work on any modern browser. Note that when using HTML help +# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) +# there is already a search function so this one should typically be disabled. +# For large projects the javascript based search engine can be slow, then +# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to +# search using the keyboard; to jump to the search box use + S +# (what the is depends on the OS and browser, but it is typically +# , /r&XiGn?eU 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ℑtT^;iz^TPEJKOc~m?}Ig0a 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

    k+9yC{z7Ndrm#+10K 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%0Dr%aH*Qv0#A=0s8b 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

    {`b? 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�$j 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 literal 0 HcmV?d00001 diff --git a/_oldpip/pip_0.4.0_r5/main.cpp b/_oldpip/pip_0.4.0_r5/main.cpp new file mode 100644 index 0000000..b5adc27 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/main.cpp @@ -0,0 +1,188 @@ +/* + PIP - Platform Independent Primitives + Test program + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ +//#define PIP_DEBUG +/*#include "pip.h" + + +class ElementA: public PIObject { + PIOBJECT(ElementA) + // ... +}; +ADD_NEW_TO_COLLECTION(ab_group, ElementA) + +class ElementB: public PIObject { + PIOBJECT(ElementB) + // ... +}; +ADD_NEW_TO_COLLECTION(ab_group, ElementB) + +class ElementC: public PIObject { + PIOBJECT(ElementC) + // ... +}; +ADD_NEW_TO_COLLECTION(c_group, ElementC) + +class ElementD: public PIObject { + PIOBJECT(ElementD) + // ... +}; +*/ +#include "pip.h" +#include "pivariant.h" + + + + + +#include "picodeparser.h" +#include "pidir.h" +#include "piconnection.h" +#include + +bool readed(void*, uchar * data, int size) { + piCout << Hex << "readed" << PIByteArray(data, size); + //piCout << PIString((char*)data, size); + return true; +} + +class A: public PIObject { + PIOBJECT(A) +public: + EVENT_HANDLER2(void, cr, const PIString &, from, const PIByteArray &, data) { + piCout << "A readed" << from << Hex << data; + } + EVENT_HANDLER2(void, per, uchar *, data, int, size) { + piCout << "A readed" << size << ":\"" << PIString((const char *)data, size) << "\"" << NewLine; + //piCout << "A readed \""; + } +}; + +class TC: public PIConnection { +public: + TC() { + PIPacketExtractor * pe = addFilter("h&f", addDevice("file://piiodevice.h", PIIODevice::ReadOnly, false), PIPacketExtractor::HeaderAndFooter); + pe->setHeader(PIString("//!").toByteArray()); + pe->setFooter(PIString("\n").toByteArray()); + pe = addFilter(" h ", "file://piiodevice.h", PIPacketExtractor::Header); + addChannel(pe, addDevice("file://out.txt", PIIODevice::WriteOnly)); + pe->setHeader(PIString("PI").toByteArray()); + pe->setPayloadSize(3); + startAllThreadedReads(); + } + virtual void dataReceived(const PIString & from, const PIByteArray & data) { + piCout << "dataReceived" << from << (data.size()); + } + virtual void packetReceived(const PIString & from, const PIByteArray & data) { + piCout << "packetReceived" << from << (data.size()) << PIString(data); + } + virtual bool filterValidatePayload(const PIString & filter_name, uchar * rec, int size) { + //piCout << "filterValidatePayload" << filter_name << PIString((char*)rec, size); + if (filter_name == " h ") return PIString((char*)rec, size) == "IOD"; + return false; + } +}; + +int main (int argc, char * argv[]) { + /*A a_; + PIFile file("piiodevice.h", PIIODevice::ReadOnly); + PIByteArray header = PIString("PI").toByteArray(); + PIByteArray footer = PIString("}").toByteArray(); + PIPacketExtractor pe(&file); + //pe.setPacketData(header.data(), header.size_s(), 10); + pe.setSplitMode(PIPacketExtractor::Footer); + pe.setHeader(header); + pe.setFooter(footer); + pe.setPayloadSize(3); + pe.setThreadedReadBufferSize(40); + //pe.setBufferSize(256); + //pe.setPacketData(0, 0, 20); + CONNECT2(void, uchar * , int , &pe, packetReceived, &a_, per) + pe.startThreadedRead(); + piMSleep(500);*/ + + TC tc; + piMSleep(500); + piCout << tc.makeConfig(); + return 0; + + /*tm = PISystemTime::current(); + for (int i = 0; i < 10000000; ++i) { + ql.append(i*10); + ql.prepend(i*10 + 1); + } + piCout << (PISystemTime::current() - tm).toMicroseconds(); + */ + //tm = PISystemTime::current(); + /*for (int i = 0; i < 100000000; ++i) { + pl.append(i*10); + pl.prepend(i*10 + 1); + }*/ + //PICodeParser cd_; + //cd.includeDirectory("../qpicalculator"); + //cd_.parseFile("piincludes.h"); + //piCout << (PISystemTime::current() - tm).toMilliseconds(); + /*piCout << NewLine; + piForeachCA (i, pl) + piCout << i; + + pl.remove(1, 2).prepend(111).prepend(222); + pl.remove(1, 1); + piCout << NewLine; + piForeachCA (i, pl) + piCout << i;*/ + /*piCout << NewLine; + for (int i = 0; i < pl.size_s(); ++i) + piCout << pl[i]; + */ + + /*PIEthernet eth(PIEthernet::UDP); + eth.setReadAddress("192.168.0.30:4001"); + eth.setSendAddress("192.168.0.50:4001"); + eth.startThreadedRead(readed); + piCout << "Connected"; + //eth.send(PIString("This is test string!\n").toByteArray()); + FOREVER_WAIT*/ + + if (argc < 2) return 0; + PICodeParser cd; + //cd.includeDirectory("../qpicalculator"); + cd.parseFile(argv[1]); + piForeachC (PICodeParser::Enum & e, cd.enums) + piCout << e.name << e.members; + + + //piCout << v.toType(); + //piCout << v.toType().toType(); + //PIFile::remove("ki"); + /*PIConfig conf("protocols_commod.conf"); + piCout << conf.allTree(); + conf.setValue("rmd.123", 456);*/ + + /*PITimer tm; + piCout << tm.debug() << tm.properties(); + tm.setDebug(false); + piCout << tm.debug() << tm.properties(); + tm.setDebug(true); + piCout << tm.debug() << tm.properties();*/ + + //PIObject * ser = (PIObject * )PIIODevice::createFromFullPath("file://OM2:38400:7"); + //piCout << ser << NewLine << ser->properties(); +} + + diff --git a/_oldpip/pip_0.4.0_r5/make.sh b/_oldpip/pip_0.4.0_r5/make.sh new file mode 100644 index 0000000..64fcb2a --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/make.sh @@ -0,0 +1,3 @@ +#! /bin/sh +cmake ./ +make $@ diff --git a/_oldpip/pip_0.4.0_r5/make_lib.bat b/_oldpip/pip_0.4.0_r5/make_lib.bat new file mode 100644 index 0000000..8390812 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/make_lib.bat @@ -0,0 +1 @@ +cmake_mgw -DLIB= && make install diff --git a/_oldpip/pip_0.4.0_r5/make_lib_usb.bat b/_oldpip/pip_0.4.0_r5/make_lib_usb.bat new file mode 100644 index 0000000..e456aca --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/make_lib_usb.bat @@ -0,0 +1 @@ +cmake_mgw -DLIB= -DUSB= && make install diff --git a/_oldpip/pip_0.4.0_r5/make_rc_win.bat b/_oldpip/pip_0.4.0_r5/make_rc_win.bat new file mode 100644 index 0000000..f6c1b22 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/make_rc_win.bat @@ -0,0 +1 @@ +windres -i pip_resource_win.rc -o pip_resource_win.o --include-dir=. \ No newline at end of file diff --git a/_oldpip/pip_0.4.0_r5/pibinarylog.cpp b/_oldpip/pip_0.4.0_r5/pibinarylog.cpp new file mode 100644 index 0000000..8746a45 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/pibinarylog.cpp @@ -0,0 +1,327 @@ +/* + PIP - Platform Independent Primitives + Class for write binary data to logfile, and read or playback this data + Copyright (C) 2014 Andrey Bychkov work.a.b@yandex.ru + + 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 3 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, see . +*/ + +#include "pibinarylog.h" + + +/*! \class PIBinaryLog + * \brief Class for read and write binary data to logfile, and playback this data in realtime + * + * \section PIBinaryLog_sec0 Synopsis + * Binary Log is a file with simle header, where you can read and write some binary data. + * Any written data include special header with ID, size and timestamp. + * This header provides separation different messages from the one file by choosing different IDs. + * With \a filterID or special functions, like \a readBinLog() you can choose IDs what you want to read. + * With function \a writeBinLog() or \a setDefaultID() you can choose ID that mark you data. + * By default ID = 1, and \a filterID is empty, that mean you read any ID without filtering. + * ThreadedRead provide you playback data, with delay that you write data. + * You can choose realtime playbak or variable speed play back by set \a PlayMode. + * + * \section PIBinaryLog_sec1 Basic usage + * This class provide all functions of \a PIIODevice, such \a open(), \a close(), + * \a read() ,\a write(), and threaded read/write. + * function \a setLogDir() need to set directory for BinLog files + * function \a createNewFile() need to create new binlog file + * function \a restart() need start from the begining of binlog file + * + */ + +REGISTER_DEVICE(PIBinaryLog); + + +PIBinaryLog::PIBinaryLog() { + binlog_sig[0] = 'B'; + binlog_sig[1] = 'I'; + binlog_sig[2] = 'N'; + binlog_sig[3] = 'L'; + binlog_sig[4] = 'O'; + binlog_sig[5] = 'G'; + setThreadedReadBufferSize(65536); + is_started = false; + setPlaySpeed(1.f); + setDefaultID(1); + setPlayMode(PlayVariableSpeed); + setLogDir(PIString()); + setFilePrefix(PIString()); + setRapidStart(false); +} + + +bool PIBinaryLog::openDevice() { + lastrecord.timestamp = PISystemTime(); + lastrecord.id = 0; + is_started = false; + is_thread_ok = true; + if (mode_ == ReadWrite) { + piCoutObj << "Error: ReadWrite mode not supported, use WriteOnly or ReadOnly"; + return false; + } + if (!file.open(path(), mode_)) + return false; + setName(path()); + if (mode_ == WriteOnly) { + file.resize(0); + if (!writeFileHeader()) { + piCoutObj << "Error: Can't write binlog file header"; + return false; + } + is_started = true; + } + if (mode_ == ReadOnly) { + if (file.isEmpty()) { + piCoutObj << "Error: File is null"; + fileError(); + return false; + } + if (!checkFileHeader()) { + fileError(); + return false; + } + if (isEmpty()) piCoutObj << "Error: Empty BinLog file"; + // startlogtime = PISystemTime::current(); + play_time = 0; + // nextrecord = readsRecord(); + if (!rapidStart()) is_started = true; + } + startlogtime = PISystemTime::current(); + return true; +} + + +bool PIBinaryLog::closeDevice() { + if (canWrite() && isEmpty()) { + file.remove(); + return true; + } + return file.close(); +} + + +bool PIBinaryLog::threadedRead(uchar *readed, int size) { + is_thread_ok = false; + PISystemTime pt; + double delay; + switch (playMode()) { + case PlayRealTime: + pt = PISystemTime::current() - startlogtime; +// if (real_speedX > 0) +// for (int i=0; i pt) + (lastrecord.timestamp - pt).sleep(); + } else { + startlogtime = PISystemTime::current() - lastrecord.timestamp; + is_started = true; + } + // int delay = piRoundd(lastread_timestamp.toMilliseconds() - (PISystemTime::current() - startlogtime).toMilliseconds()); + break; + case PlayVariableSpeed: + delay = lastrecord.timestamp.toMilliseconds() - play_time; + delay /= playSpeed(); + if (is_started) { + if (delay > 0) + PISystemTime::fromMilliseconds(delay).sleep(); + } else is_started = true; + play_time = lastrecord.timestamp.toMilliseconds(); + break; + default: + return false; + } + bool res = PIIODevice::threadedRead(readed, size); + is_thread_ok = true; + return res; +} + + +PIString PIBinaryLog::createNewFile() { + if (!file.close()) return PIString(); + if (open(logDir() + "/" + filePrefix() + PIDateTime::current().toString("yyyy_MM_dd__hh_mm_ss.binlog"), PIIODevice::WriteOnly)) + return file.path(); + piCoutObj << "Can't create new file, maybe LogDir is invalid."; + return PIString(); +} + + +int PIBinaryLog::writeBinLog(int id, const void *data, int size) { + if (size <= 0 || !canWrite()) return -1; + PIByteArray logdata; + logdata << id << size << (PISystemTime::current() - startlogtime) << PIByteArray::RawData(data, size); + int res = file.write(logdata.data(), logdata.size()); + file.flush(); + if (res > 0) return size; + else return res; +} + + +PIByteArray PIBinaryLog::readBinLog(int id) { + if (!canRead()) return PIByteArray(); + BinLogRecord br = readRecord(); + if (br.id == -1) { + piCoutObj << "End of BinLog file"; + fileEnd(); + return PIByteArray(); + } + if (id == 0 && br.id > 0) return br.data; + while (br.id != id && !isEnd()) br = readRecord(); + if (br.id == -1) { + piCoutObj << "End of BinLog file"; + fileEnd(); + return PIByteArray(); + } + if (br.id == id) return br.data; + piCoutObj << "Can't find record with id =" << id; + return PIByteArray(); +} + + +int PIBinaryLog::readBinLog(int id, void *read_to, int max_size) { + if (max_size <= 0 || read_to == 0) return -1; + PIByteArray ba = readBinLog(id); + if (ba.isEmpty()) return -1; + int sz = piMini(max_size, ba.size()); + memcpy(read_to, ba.data(), sz); + return sz; +} + + + +int PIBinaryLog::read(void *read_to, int max_size) { + // piCoutObj << "read"; + if (lastrecord.id == -1 || isEnd()) return 0; + if(!is_thread_ok && lastrecord.id > 0) return lastrecord.data.size(); + if (!canRead()) return -1; + if (max_size <= 0 || read_to == 0) return -1; + BinLogRecord br; + br.id = 0; + if (filterID.isEmpty()) br = readRecord(); + else { + while (!filterID.contains(br.id) && !isEnd()) br = readRecord(); + } + if (br.id == -1) { + fileEnd(); + piCoutObj << "End of BinLog file"; + //stopThreadedRead(); + return 0; + } + if (br.id <= 0) { + piCoutObj << "Read record error"; + return -1; + } + int sz = piMini(max_size, br.data.size()); + memcpy(read_to, br.data.data(), sz); + return sz; +} + + +void PIBinaryLog::restart() { + bool th = isRunning(); + if (th) stopThreadedRead(); + if (!canRead()) return; + lastrecord.timestamp = PISystemTime(); + lastrecord.id = 0; + is_thread_ok = true; + if (rapidStart()) is_started = false; + else is_started = true; + play_time = 0; + file.seekToBegin(); + checkFileHeader(); + startlogtime = PISystemTime::current(); + if (th) startThreadedRead(); +} + + +bool PIBinaryLog::writeFileHeader() { + if (file.write(&binlog_sig, PIBINARYLOG_SIGNATURE_SIZE) <= 0) return false; + uchar version = PIBINARYLOG_VERSION; + if (file.write(&version, 1) <= 0) return false; + file.flush(); + return true; +} + + +bool PIBinaryLog::checkFileHeader() { + uchar read_sig[PIBINARYLOG_SIGNATURE_SIZE]; + for (int i=0; i PIBINARYLOG_VERSION) + piCoutObj << "BinLogFile has too newest version"; + return false; +} + + +PIBinaryLog::BinLogRecord PIBinaryLog::readRecord() { + // piCoutObj << "readRecord"; + PIByteArray ba; + BinLogRecord br; + lastrecord.id = 0; + lastrecord.data.clear(); + lastrecord.timestamp = PISystemTime(); + ba.resize(sizeof(BinLogRecord) - sizeof(PIByteArray)); + if(file.read(ba.data(), ba.size_s()) > 0) { + ba >> br.id >> br.size >> br.timestamp; + // piCoutObj << "read" << br.id << br.size << br.timestamp; + } else { + br.id = -1; + return br; + } + if (br.id > 0 && br.size > 0) { + ba.resize(br.size); + if(file.read(ba.data(), ba.size_s()) > 0) br.data = ba; + else br.id = 0; + } else br.id = 0; + lastrecord = br; + if (br.id == 0) fileError(); + return br; +} + + +PIString PIBinaryLog::constructFullPath() const { + PIString ret(fullPathPrefix() + "://"); + ret << logDir() << ":" << filePrefix() << ":" << defaultID(); + return ret; +} + + +void PIBinaryLog::configureFromFullPath(const PIString & full_path) { + PIStringList pl = full_path.split(":"); + for (int i = 0; i < pl.size_s(); ++i) { + PIString p(pl[i]); + switch (i) { + case 0: setLogDir(p); break; + case 1: setFilePrefix(p); break; + case 2: setDefaultID(p.toInt()); break; + } + } +} + diff --git a/_oldpip/pip_0.4.0_r5/pibinarylog.h b/_oldpip/pip_0.4.0_r5/pibinarylog.h new file mode 100644 index 0000000..9958fb4 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/pibinarylog.h @@ -0,0 +1,175 @@ +/*! \file pibinarylog.h + * \brief Binary log +*/ +/* + PIP - Platform Independent Primitives + Class for write binary data to logfile, and read or playback this data + Copyright (C) 2014 Andrey Bychkov work.a.b@yandex.ru + + 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 3 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, see . +*/ + +#ifndef PIBINARYLOG_H +#define PIBINARYLOG_H + +#include "pifile.h" + +#define PIBINARYLOG_VERSION 0x31 +#define PIBINARYLOG_SIGNATURE_SIZE 6 + + +class PIBinaryLog: public PIIODevice +{ + PIIODEVICE(PIBinaryLog) +public: + PIBinaryLog(); + ~PIBinaryLog() {closeDevice();} + + //! \brief Play modes for \a PIBinaryLog + enum PlayMode { + PlayRealTime /*! Play in system real time */ , + PlayVariableSpeed /*! Play in software time with speed, set by \a setSpeed. Set by default */ + }; + + + //! Current \a PlayMode + PlayMode playMode() const {return (PlayMode)(property("playMode").toInt());} + + //! Current directory where billogs wiil be saved + PIString logDir() const {return property("logDir").toString();} + + //! Returns current file prefix + PIString filePrefix() const {return property("filePrefix").toString();} + + //! Current LogDir, returns directory where billogs wiil be saved + int defaultID() const {return property("defaultID").toInt();} + + //! Returns current play speed + float playSpeed() const {return property("playSpeed").toFloat();} + + //! Returns if rapid start enabled + bool rapidStart() const {return property("rapidStart").toBool();} + + + //! Set \a PlayMode + void setPlayMode(PlayMode mode) {setProperty("playMode", (int)mode);} + + //! Set path to directory where binlogs will be saved + void setLogDir(const PIString & path) {setProperty("logDir", path);} + + //! Set file prefix, used to + void setFilePrefix(const PIString & prefix) {setProperty("filePrefix", prefix);} + + //! Set defaultID, used in \a write function + void setDefaultID(int id) {setProperty("defaultID", id);} + + //! If enabled BinLog \a ThreadedRead starts without delay for first record, e.g. first record will be readed immediately + void setRapidStart(bool enabled) {setProperty("rapidStart", enabled);} + +// /** \brief Set play speed multiplyer, used only in \a PlayMode = \a PlayRealTime default value 1x. +// * If "speedX" > 0 than it use as speed increase by X times, else as speed decrease by X times. +// * While is running this function does nothing and returns false. If "speedX" is set, returns true.*/ +// bool setRealSpeedX(int speedX) {if (speedX == 0 || isRunning()) return false; real_speedX = speedX; return true;} +// //! Returns current play speed multiplyer +// float realSpeedX() const {return real_speedX;} + //! Set play speed, used only if \a playMode = \a PlayVariableSpeed, default value 1.0 + void setPlaySpeed(float speed) {setProperty("playSpeed", speed);} + + + //! Write one record to BinLog file, with ID = id, id must be greather than 0 + int writeBinLog(int id, PIByteArray data) {return writeBinLog(id, data.data(), data.size_s());} + + int writeBinLog(int id, const void * data, int size); + + //! Read one record from BinLog file, with ID = id, if id = 0 than any id will be readed + PIByteArray readBinLog(int id = 0); + + int readBinLog(int id, void * read_to, int max_size); + + //! Return true, if position at the end of BinLog file + bool isEnd() {if (!opened_) return true; return file.isEnd();} + + //! Returns if BinLog file is empty + bool isEmpty() {return (file.size() <= PIBINARYLOG_SIGNATURE_SIZE + 1);} + + int lastReadedID() const {return lastrecord.id;} + + //! Read one message from binlog file, with ID contains in "filterID" or any ID, if "filterID" is empty + int read(void *read_to, int max_size); + + //! Write one record to BinLog file, with ID = "defaultID" + int write(const void * data, int size) {return writeBinLog(defaultID(), data, size);} + + //! Array of ID, that BinLog can read from binlog file, when use \a read function, or in \a ThreadedRead + PIVector filterID; + + //! Go to begin of BinLog file + void restart(); + + PIString constructFullPath() const; + + //! \handlers + //! \{ + + //! \fn PIString createNewFile() + //! \brief Open device + + //! \} + //! \events + //! \{ + + //! \fn void fileEnd() + //! \brief Create new binlog file in \a logDir, if successful returns filename, else returns empty string. + //! Filename is like \a filePrefix + "yyyy_MM_dd__hh_mm_ss.binlog" + + //! \fn void fileError() + //! \brief Raise on file creation error + + //! \} + + EVENT_HANDLER(PIString, createNewFile); + EVENT(fileEnd) + EVENT(fileError) + +protected: + PIString fullPathPrefix() const {return "binlog";} + void configureFromFullPath(const PIString & full_path); + bool openDevice(); + bool closeDevice(); + bool threadedRead(uchar *readed, int size); + +private: + struct BinLogRecord { + int id; + int size; + PISystemTime timestamp; + PIByteArray data; + }; + + bool writeFileHeader(); + bool checkFileHeader(); + BinLogRecord readRecord(); + + PIFile file; + BinLogRecord lastrecord; + PISystemTime startlogtime; + //BinLogRecord nextrecord; + double play_time; //milliseconds + //int real_speedX; // in X + bool is_started, is_thread_ok; + uchar binlog_sig[PIBINARYLOG_SIGNATURE_SIZE]; + +}; + +#endif // PIBINARYLOG_H diff --git a/_oldpip/pip_0.4.0_r5/pibitarray.h b/_oldpip/pip_0.4.0_r5/pibitarray.h new file mode 100644 index 0000000..2c874f0 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/pibitarray.h @@ -0,0 +1,104 @@ +/* + PIP - Platform Independent Primitives + Bit array + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +#ifndef PIBITARRAY_H +#define PIBITARRAY_H + +#include "picontainers.h" + +class PIP_EXPORT PIBitArray { +public: + PIBitArray(const int & size = 0) {resize(size);} + PIBitArray(uchar val) {resize(sizeof(val) * 8); data_[0] = val;} + PIBitArray(ushort val) {resize(sizeof(val) * 8); memcpy(data(), &val, sizeof(val));} + PIBitArray(uint val) {resize(sizeof(val) * 8); memcpy(data(), &val, sizeof(val));} + PIBitArray(ulong val) {resize(sizeof(val) * 8); memcpy(data(), &val, sizeof(val));} + PIBitArray(ullong val) {resize(sizeof(val) * 8); memcpy(data(), &val, sizeof(val));} + PIBitArray(uchar * bytes, uint size) {resize(size * 8); memcpy(data(), bytes, size);} + + uint bitSize() const {return size_;} + uint byteSize() const {return bytesInBits(size_);} + PIBitArray & resize(const uint & size) {size_ = size; data_.resize(bytesInBits(size_)); return *this;} + + PIBitArray & clearBit(const uint & index) {data_[index / 8] &= ~(1 << (index % 8)); return *this;} + PIBitArray & setBit(const uint & index) {data_[index / 8] |= (1 << (index % 8)); return *this;} + PIBitArray & writeBit(const uint & index, const bool & value) {if (value) setBit(index); else clearBit(index); return *this;} + PIBitArray & writeBit(const uint & index, const uchar & value) {return writeBit(index, value > 0);} + + PIBitArray & push_back(const bool & value) {resize(size_ + 1); writeBit(size_ - 1, value); return *this;} + PIBitArray & push_back(const uchar & value) {return push_back(value > 0);} + PIBitArray & insert(const uint & index, const bool & value) { + resize(size_ + 1); + uint fi = byteSize() - 1, si = index / 8, ti = index % 8; + uchar c = data_[si]; + for (uint i = fi; i > si; --i) { + data_[i] <<= 1; + if ((0x80 & data_[i - 1]) == 0x80) data_[i] |= 1; + else data_[i] &= 0xFE;} + data_[si] &= (0xFF >> (7 - ti)); + data_[si] |= ((c << 1) & (0xFF << (ti))); + if (value) data_[si] |= (1 << ti); + else data_[si] &= ~(1 << ti); + return *this;} + PIBitArray & insert(const uint & index, const uchar & value) {return insert(index, value > 0);} + PIBitArray & push_front(const bool & value) {return insert(0, value);} + PIBitArray & push_front(const uchar & value) {return push_front(value > 0);} + PIBitArray & pop_back() {return resize(size_ - 1);} + PIBitArray & pop_front() { + if (size_ == 0) return *this; + uint fi = byteSize() - 1; + for (uint i = 0; i < fi; ++i) { + data_[i] >>= 1; + if ((1 & data_[i + 1]) == 1) data_[i] |= 0x80; + else data_[i] &= 0x7F;} + data_[fi] >>= 1; + resize(size_ - 1); + return *this;} + PIBitArray & append(const PIBitArray & ba) {for (uint i = 0; i < ba.bitSize(); ++i) push_back(ba[i]); return *this;} + + uchar * data() {return data_.data();} + uchar toUChar() {if (size_ == 0) return 0; return data_[0];} + ushort toUShort() {ushort t = 0; memcpy(&t, data(), piMin(byteSize(), sizeof(t))); return t;} + uint toUInt() {uint t = 0; memcpy(&t, data(), piMin(byteSize(), sizeof(t))); return t;} + ulong toULong() {ulong t = 0; memcpy(&t, data(), piMin(byteSize(), sizeof(t))); return t;} + ullong toULLong() {ullong t = 0; memcpy(&t, data(), piMin(byteSize(), sizeof(t))); return t;} + + bool at(const uint & index) const {return (1 & (data_[index / 8] >> (index % 8))) == 1 ? true : false;} + bool operator [](const uint & index) const {return at(index);} + void operator +=(const PIBitArray & ba) {append(ba);} + bool operator ==(const PIBitArray & ba) const {if (bitSize() != ba.bitSize()) return false; for (uint i = 0; i < bitSize(); ++i) if (at(i) != ba[i]) return false; return true;} + bool operator !=(const PIBitArray & ba) const {return !(*this == ba);} + void operator =(const uchar & val) {resize(sizeof(val) * 8); data_[0] = val;} + void operator =(const ushort & val) {resize(sizeof(val) * 8); memcpy(data(), &val, sizeof(val));} + void operator =(const uint & val) {resize(sizeof(val) * 8); memcpy(data(), &val, sizeof(val));} + void operator =(const ulong & val) {resize(sizeof(val) * 8); memcpy(data(), &val, sizeof(val));} + void operator =(const ullong & val) {resize(sizeof(val) * 8); memcpy(data(), &val, sizeof(val));} + +private: + uint bytesInBits(const uint & bits) const {return (bits + 7) / 8;} + + PIVector data_; + uint size_; + +}; + +inline std::ostream & operator <<(std::ostream & s, const PIBitArray & ba) {for (uint i = 0; i < ba.bitSize(); ++i) {s << ba[i]; if (i % 8 == 7) s << ' ';} return s;} +inline PICout operator <<(PICout s, const PIBitArray & ba) {s.space(); s.setControl(0, true); for (uint i = 0; i < ba.bitSize(); ++i) {s << ba[i]; if (i % 8 == 7) s << ' ';} s.restoreControl(); return s;} + +#endif // PIBITARRAY_H diff --git a/_oldpip/pip_0.4.0_r5/pibytearray.cpp b/_oldpip/pip_0.4.0_r5/pibytearray.cpp new file mode 100644 index 0000000..679afde --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/pibytearray.cpp @@ -0,0 +1,293 @@ +/* + PIP - Platform Independent Primitives + Byte array + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +#include "pibytearray.h" +#include "pistring.h" + +/*! \class PIByteArray + * \brief Byte array + * \details This class based on PIDeque and provide some handle function + * to manipulate it. + * + * \section PIByteArray_sec0 Usage + * %PIByteArray can be used to store custom data and manipulate it. There are many + * stream operators to store/restore common types to byte array. Store operators + * places data at the end of array, restore operators takes data from the beginning + * of array. + * In addition there are Base 64 convertions and checksums: + * * plain 8-bit + * * plain 32-bit + * + * One of the major usage of %PIByteArray is stream functions. You can form binary + * packet from many types (also dynamic types, e.g. PIVector) with one line: + * \snippet pibytearray.cpp 0 + * + * Or you can descibe stream operator of your own type and store/restore vectors of + * your type: + * \snippet pibytearray.cpp 1 + * + * For store/restore custom data blocks there is PIByteArray::RawData class. Stream + * operators of this class simply store/restore data block to/from byte array. + * \snippet pibytearray.cpp 2 + * + * \section PIByteArray_sec1 Attention + * Stream operator of %PIByteArray store byte array as vector, not simply append + * content of byte array. This operators useful to transmit custom data as %PIByteArray + * packed into parent byte array, e.g. to form packet from %PIByteArray. + * To append one byte array to another use funtion \a append(). + * \snippet pibytearray.cpp 3 + * + * + */ + + +#pragma pack(push, 1) + +const char PIByteArray::base64Table[64] = { +0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, +0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, +0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, +0x59, 0x5a, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, +0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, +0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, +0x77, 0x78, 0x79, 0x7a, 0x30, 0x31, 0x32, 0x33, +0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x2b, 0x2f}; + +const char PIByteArray::base64InvTable[256] = { +0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x3E, 0x0, 0x0, 0x0, 0x3F, +0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, +0x3C, 0x3D, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, +0x7, 0x8, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, +0xF, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, +0x17, 0x18, 0x19, 0x0, 0x0, 0x0, 0x0, 0x0, +0x0, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x20, +0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, +0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x30, +0x31, 0x32, 0x33, 0x0, 0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}; + +#pragma pack(pop) + + +int PIHuffman::nodeCompare(const void * f, const void * s) { + return (reinterpret_cast(const_cast(s))->freq - + reinterpret_cast(const_cast(f))->freq); +} + + +PIDeque PIHuffman::compress(const PIDeque & src) { + calcFrequencies(src); + return src; +} + + +void PIHuffman::calcFrequencies(const PIDeque & src) { + nodes.resize(256); + for (int i = 0; i < 256; ++i) { + nodes[i].parent = nodes[i].right = nodes[i].left = 0; + nodes[i].freq = 0; + nodes[i].word.resize(1); + nodes[i].word[0] = static_cast(i); + } + for (int i = 0; i < src.size_s(); ++i) + nodes[src[i]].freq++; + std::qsort(nodes.data(), 256, sizeof(node), nodeCompare); + for (int i = 255; i >= 0; --i) + if (nodes[i].freq > 0 && i < 255) + {nodes.remove(i + 1, 255 - i); break;} + for (int i = 0; i < nodes.size_s(); ++i) + cout << string((char*)nodes[i].word.data(), 1) << ": " << nodes[i].freq << endl; +} + + +PIHuffman PIByteArray::huffman; + +PIByteArray & PIByteArray::convertToBase64() { + base64HelpStruct hs; + PIByteArray t; + if (size() == 0) return *this; + int sz = (size_s() / 3) * 3; + for (int i = 0; i < sz; ++i) { + hs.byte.byte0 = hs.byte.byte1 = hs.byte.byte2 = 0; + hs.byte.byte0 = at(i); + hs.byte.byte1 = at(++i); + hs.byte.byte2 = at(++i); + t.push_back(base64Table[hs.ascii.ascii0]); + t.push_back(base64Table[hs.ascii.ascii1]); + t.push_back(base64Table[hs.ascii.ascii2]); + t.push_back(base64Table[hs.ascii.ascii3]); + } + hs.byte.byte0 = hs.byte.byte1 = hs.byte.byte2 = 0; sz = size() % 3; + switch (sz) { + case 1: + hs.byte.byte0 = back(); + t.push_back(base64Table[hs.ascii.ascii0]); + t.push_back(base64Table[hs.ascii.ascii1]); + t.push_back('='); + t.push_back('='); + break; + case 2: + hs.byte.byte0 = at(size() - 2); hs.byte.byte1 = back(); + t.push_back(base64Table[hs.ascii.ascii0]); + t.push_back(base64Table[hs.ascii.ascii1]); + t.push_back(base64Table[hs.ascii.ascii2]); + t.push_back('='); + break; + default: break; + } + *this = t; + return *this; +} + + +PIByteArray & PIByteArray::convertFromBase64() { + base64HelpStruct hs; + PIByteArray t; + uint sz = size(); + if (sz == 0) return *this; + for (uint i = 0; i < sz; ++i) { + hs.byte.byte0 = hs.byte.byte1 = hs.byte.byte2 = 0; + hs.ascii.ascii0 = base64InvTable[at(i)]; + hs.ascii.ascii1 = base64InvTable[at(++i)]; + hs.ascii.ascii2 = base64InvTable[at(++i)]; + hs.ascii.ascii3 = base64InvTable[at(++i)]; + t.push_back(hs.byte.byte0); + t.push_back(hs.byte.byte1); + t.push_back(hs.byte.byte2); + } + if (back() == '=') t.pop_back(); + if (sz > 1) if (at(sz - 2) == '=') t.pop_back(); + *this = t; + return *this; +} + + +PIByteArray & PIByteArray::compressRLE(uchar threshold) { + PIByteArray t; + uchar fb, clen, mlen = 255 - threshold; + for (uint i = 0; i < size();) { + fb = at(i); + clen = 1; + while (at(++i) == fb) { + ++clen; + if (clen == mlen) + break; + } + if (clen > 1) { + t.push_back(threshold + clen); + t.push_back(fb); + continue; + } + if (fb >= threshold) { + t.push_back(threshold + 1); + t.push_back(fb); + } else + t.push_back(fb); + } + *this = t; + return *this; +} + + +PIByteArray & PIByteArray::decompressRLE(uchar threshold) { + PIByteArray t; + uchar fb, clen; + for (uint i = 0; i < size(); ++i) { + fb = at(i); + if (fb >= threshold) { + clen = fb - threshold; + fb = at(++i); + for (uint j = 0; j < clen; ++j) + t.push_back(fb); + continue; + } else + t.push_back(fb); + } + *this = t; + return *this; +} + + +uchar PIByteArray::checksumPlain8() const { + uchar c = 0; + int sz = size_s(); + for (int i = 0; i < sz; ++i) + c += at(i); + c = ~(c + 1); + return c; +} + + +uint PIByteArray::checksumPlain32() const { + uint c = 0; + int sz = size_s(); + for (int i = 0; i < sz; ++i) + c += at(i) * (i + 1); + c = ~(c + 1); + return c; +} + + +PIString PIByteArray::toString(int base) const { + PIString ret; + int sz = size_s(); + for (int i = 0; i < sz; ++i) { + if (i > 0) ret += " "; + if (base == 2) ret += "b"; + if (base == 8) ret += "0"; + if (base == 16) ret += "0x"; + ret += PIString::fromNumber(at(i), base); + } + return ret; +} + + +PIByteArray PIByteArray::fromString(PIString str) { + PIByteArray ret; + if (str.trim().isEmpty()) return ret; + str.replaceAll("\n", " ").replaceAll("\t", " ").replaceAll(" ", " "); + PIStringList bl(str.split(" ")); + bool ok(false); + piForeachC (PIString & b, bl) { + int bv = b.toInt(-1, &ok); + if (ok) ret << uchar(bv); + } + return ret; +} diff --git a/_oldpip/pip_0.4.0_r5/pibytearray.h b/_oldpip/pip_0.4.0_r5/pibytearray.h new file mode 100644 index 0000000..92e1acf --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/pibytearray.h @@ -0,0 +1,261 @@ +/*! \file pibytearray.h + * \brief Byte array +*/ +/* + PIP - Platform Independent Primitives + Byte array + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +#ifndef PIBYTEARRAY_H +#define PIBYTEARRAY_H + +#ifdef DOXYGEN +//! This macro allow stream template operators for write and read any type from byte array. Use it with attention! +# define PIP_BYTEARRAY_STREAM_ANY_TYPE +#endif + +#include "pibitarray.h" + +class PIString; +class PIByteArray; + +class PIHuffman { +public: + PIDeque compress(const PIDeque & src); + +private: + struct node { + int freq; + PIDeque word; + PIBitArray path; + node * parent; + node * right; + node * left; + }; + static int nodeCompare(const void * f, const void * s); + void calcFrequencies(const PIDeque & src); + PIVector nodes; +}; + +class PIP_EXPORT PIByteArray: public PIDeque +{ +public: + + //! Constructs an empty byte array + PIByteArray() {;} + + //! Constructs 0-filled byte array with size "size" + PIByteArray(const uint size) {resize(size);} + + //! Constructs byte array from data "data" and size "size" + PIByteArray(const void * data, const uint size): PIDeque((const uchar*)data, size_t(size)) {/*for (uint i = 0; i < size; ++i) push_back(((uchar * )data)[i]);*/} + + + //! Help struct to store/restore custom blocks of data to/from PIByteArray + struct RawData { + friend PIByteArray & operator <<(PIByteArray & s, const PIByteArray::RawData & v); + friend PIByteArray & operator >>(PIByteArray & s, PIByteArray::RawData v); + public: + //! Constructs data block + RawData(void * data = 0, int size = 0) {d = data; s = size;} + //! Constructs data block + RawData(const void * data, const int size) {d = const_cast(data); s = size;} + RawData & operator =(const RawData & o) {d = o.d; s = o.s; return *this;} + private: + void * d; + int s; + }; + + //! Return resized byte array + PIByteArray resized(int new_size) const {PIByteArray tv(*this); tv.resize(new_size); return tv;} + + //! Convert data to Base 64 and return this byte array + PIByteArray & convertToBase64(); + + //! Convert data from Base 64 and return this byte array + PIByteArray & convertFromBase64(); + + //! Return converted to Base 64 data + PIByteArray toBase64() const {PIByteArray ba(*this); ba.convertToBase64(); return ba;} + + //! Return converted from Base 64 data + PIByteArray fromBase64() const {PIByteArray ba(*this); ba.convertFromBase64(); return ba;} + + PIByteArray & compressRLE(uchar threshold = 192); + PIByteArray & decompressRLE(uchar threshold = 192); + PIByteArray compressedRLE(uchar threshold = 192) {PIByteArray ba(*this); ba.compressRLE(threshold); return ba;} + PIByteArray decompressedRLE(uchar threshold = 192) {PIByteArray ba(*this); ba.decompressRLE(threshold); return ba;} + + PIByteArray & compressHuffman() {*this = huffman.compress(*this); return *this;} + + PIString toString(int base = 16) const; + + //! Add to the end data "data" with size "size" + PIByteArray & append(const void * data_, int size_) {uint ps = size(); enlarge(size_); memcpy(data(ps), data_, size_); return *this;} + + //! Add to the end byte array "data" + PIByteArray & append(const PIByteArray & data_) {uint ps = size(); enlarge(data_.size_s()); memcpy(data(ps), data_.data(), data_.size()); return *this;} + /*PIByteArray & operator <<(short v) {for (uint i = 0; i < sizeof(v); ++i) push_back(((uchar*)(&v))[i]); return *this;} + PIByteArray & operator <<(ushort v) {for (uint i = 0; i < sizeof(v); ++i) push_back(((uchar*)(&v))[i]); return *this;} + PIByteArray & operator <<(int v) {for (uint i = 0; i < sizeof(v); ++i) push_back(((uchar*)(&v))[i]); return *this;} + PIByteArray & operator <<(uint v) {for (uint i = 0; i < sizeof(v); ++i) push_back(((uchar*)(&v))[i]); return *this;} + PIByteArray & operator <<(llong v) {for (uint i = 0; i < sizeof(v); ++i) push_back(((uchar*)(&v))[i]); return *this;} + PIByteArray & operator <<(ullong v) {for (uint i = 0; i < sizeof(v); ++i) push_back(((uchar*)(&v))[i]); return *this;}*/ + //PIByteArray & operator <<(const PIByteArray & v) {for (uint i = 0; i < v.size(); ++i) push_back(v[i]); return *this;} + + //! Returns plain 8-bit checksum + uchar checksumPlain8() const; + + //! Returns plain 32-bit checksum + uint checksumPlain32() const; + + void operator =(const PIDeque & d) {resize(d.size()); memcpy(data(), d.data(), d.size());} + + static PIByteArray fromString(PIString str); + +private: + union base64HelpStruct { + base64HelpStruct() {memset(this, 0, sizeof(base64HelpStruct));} + struct { + uchar ascii0: 6; + uchar ascii1: 6; + uchar ascii2: 6; + uchar ascii3: 6; + } ascii; + struct { + uchar byte0; + uchar byte1; + uchar byte2; + } byte; + }; + + static const char base64Table[64]; + static const char base64InvTable[256]; + static PIHuffman huffman; + +}; + +inline bool operator <(const PIByteArray & v0, const PIByteArray & v1) {if (v0.size() == v1.size()) {for (uint i = 0; i < v0.size(); ++i) if (v0[i] != v1[i]) return v0[i] < v1[i]; return false;} return v0.size() < v1.size();} +//! \relatesalso PIByteArray \brief Output to std::ostream operator +inline std::ostream & operator <<(std::ostream & s, const PIByteArray & ba) {s << "{"; for (uint i = 0; i < ba.size(); ++i) {s << ba[i]; if (i < ba.size() - 1) s << ", ";} s << "}"; return s;} + +//! \relatesalso PIByteArray \brief Output to PICout operator +inline PICout operator <<(PICout s, const PIByteArray & ba) {s.space(); s.setControl(0, true); s << "{"; for (uint i = 0; i < ba.size(); ++i) {s << ba[i]; if (i < ba.size() - 1) s << ", ";} s << "}"; s.restoreControl(); return s;} + +#define PBA_OPERATOR_TO int os = s.size_s(); s.enlarge(sizeof(v)); memcpy(s.data(os), &v, sizeof(v)); + +//! \relatesalso PIByteArray \brief Store operator +inline PIByteArray & operator <<(PIByteArray & s, uchar v) {s.push_back(v); return s;} +//! \relatesalso PIByteArray \brief Store operator +inline PIByteArray & operator <<(PIByteArray & s, const short v) {PBA_OPERATOR_TO return s;} +//! \relatesalso PIByteArray \brief Store operator +inline PIByteArray & operator <<(PIByteArray & s, const int v) {PBA_OPERATOR_TO return s;} +//! \relatesalso PIByteArray \brief Store operator +inline PIByteArray & operator <<(PIByteArray & s, const long & v) {PBA_OPERATOR_TO return s;} +//! \relatesalso PIByteArray \brief Store operator +inline PIByteArray & operator <<(PIByteArray & s, const llong & v) {PBA_OPERATOR_TO return s;} +//! \relatesalso PIByteArray \brief Store operator +inline PIByteArray & operator <<(PIByteArray & s, const ushort v) {PBA_OPERATOR_TO return s;} +//! \relatesalso PIByteArray \brief Store operator +inline PIByteArray & operator <<(PIByteArray & s, const uint v) {PBA_OPERATOR_TO return s;} +//! \relatesalso PIByteArray \brief Store operator +inline PIByteArray & operator <<(PIByteArray & s, const ulong & v) {PBA_OPERATOR_TO return s;} +//! \relatesalso PIByteArray \brief Store operator +inline PIByteArray & operator <<(PIByteArray & s, const ullong & v) {PBA_OPERATOR_TO return s;} +//! \relatesalso PIByteArray \brief Store operator +inline PIByteArray & operator <<(PIByteArray & s, const float v) {PBA_OPERATOR_TO return s;} +//! \relatesalso PIByteArray \brief Store operator +inline PIByteArray & operator <<(PIByteArray & s, const double & v) {PBA_OPERATOR_TO return s;} +//! \relatesalso PIByteArray \brief Store operator, see \ref PIByteArray_sec1 for details +inline PIByteArray & operator <<(PIByteArray & s, const PIByteArray & v) {s << v.size_s(); int os = s.size_s(); s.enlarge(v.size_s()); if (v.size_s() > 0) memcpy(s.data(os), v.data(), v.size()); return s;} +//! \relatesalso PIByteArray \brief Store operator, see \ref PIByteArray_sec1 for details +inline PIByteArray & operator <<(PIByteArray & s, const PIByteArray::RawData & v) {int os = s.size_s(); s.enlarge(v.s); if (v.s > 0) memcpy(s.data(os), v.d, v.s); return s;} +//! \relatesalso PIByteArray \brief Store operator +template +inline PIByteArray & operator <<(PIByteArray & s, const PIPair & v) {s << v.first << v.second; return s;} +//! \relatesalso PIByteArray \brief Store operator +template +inline PIByteArray & operator <<(PIByteArray & s, const PIVector & v) {s << v.size_s(); for (uint i = 0; i < v.size(); ++i) s << v[i]; return s;} +//! \relatesalso PIByteArray \brief Store operator +template +inline PIByteArray & operator <<(PIByteArray & s, const PIList & v) {s << v.size_s(); for (uint i = 0; i < v.size(); ++i) s << v[i]; return s;} +//! \relatesalso PIByteArray \brief Store operator +template +inline PIByteArray & operator <<(PIByteArray & s, const PIDeque & v) {s << v.size_s(); for (uint i = 0; i < v.size(); ++i) s << v[i]; return s;} +#ifdef PIP_BYTEARRAY_STREAM_ANY_TYPE +template +inline PIByteArray & operator <<(PIByteArray & s, const T & v) {PBA_OPERATOR_TO return s;} +#endif + +#undef PBA_OPERATOR_TO +#define PBA_OPERATOR_FROM memcpy(&v, s.data(), sizeof(v)); s.remove(0, sizeof(v)); + +//! \relatesalso PIByteArray \brief Restore operator +inline PIByteArray & operator >>(PIByteArray & s, uchar & v) {assert(s.size() >= 1u); v = s.take_front(); return s;} +//! \relatesalso PIByteArray \brief Restore operator +inline PIByteArray & operator >>(PIByteArray & s, short & v) {assert(s.size() >= sizeof(v)); PBA_OPERATOR_FROM return s;} +//! \relatesalso PIByteArray \brief Restore operator +inline PIByteArray & operator >>(PIByteArray & s, int & v) {assert(s.size() >= sizeof(v)); PBA_OPERATOR_FROM return s;} +//! \relatesalso PIByteArray \brief Restore operator +inline PIByteArray & operator >>(PIByteArray & s, long & v) {assert(s.size() >= sizeof(v)); PBA_OPERATOR_FROM return s;} +//! \relatesalso PIByteArray \brief Restore operator +inline PIByteArray & operator >>(PIByteArray & s, llong & v) {assert(s.size() >= sizeof(v)); PBA_OPERATOR_FROM return s;} +//! \relatesalso PIByteArray \brief Restore operator +inline PIByteArray & operator >>(PIByteArray & s, ushort & v) {assert(s.size() >= sizeof(v)); PBA_OPERATOR_FROM return s;} +//! \relatesalso PIByteArray \brief Restore operator +inline PIByteArray & operator >>(PIByteArray & s, uint & v) {assert(s.size() >= sizeof(v)); PBA_OPERATOR_FROM return s;} +//! \relatesalso PIByteArray \brief Restore operator +inline PIByteArray & operator >>(PIByteArray & s, ulong & v) {assert(s.size() >= sizeof(v)); PBA_OPERATOR_FROM return s;} +//! \relatesalso PIByteArray \brief Restore operator +inline PIByteArray & operator >>(PIByteArray & s, ullong & v) {assert(s.size() >= sizeof(v)); PBA_OPERATOR_FROM return s;} +//! \relatesalso PIByteArray \brief Restore operator +inline PIByteArray & operator >>(PIByteArray & s, float & v) {assert(s.size() >= sizeof(v)); PBA_OPERATOR_FROM return s;} +//! \relatesalso PIByteArray \brief Restore operator +inline PIByteArray & operator >>(PIByteArray & s, double & v) {assert(s.size() >= sizeof(v)); PBA_OPERATOR_FROM return s;} +//! \relatesalso PIByteArray \brief Restore operator, see \ref PIByteArray_sec1 for details +inline PIByteArray & operator >>(PIByteArray & s, PIByteArray & v) {assert(s.size_s() >= 4); int sz; s >> sz; v.resize(sz); if (sz > 0) memcpy(v.data(), s.data(), v.size()); s.remove(0, v.size()); return s;} +//! \relatesalso PIByteArray \brief Restore operator, see \ref PIByteArray_sec1 for details +inline PIByteArray & operator >>(PIByteArray & s, PIByteArray::RawData v) {assert(s.size_s() >= v.s); if (v.s > 0) memcpy(v.d, s.data(), v.s); s.remove(0, v.s); return s;} +//! \relatesalso PIByteArray \brief Restore operator +template +inline PIByteArray & operator >>(PIByteArray & s, PIPair & v) {s >> v.first >> v.second; return s;} +//! \relatesalso PIByteArray \brief Restore operator +template +inline PIByteArray & operator >>(PIByteArray & s, PIVector & v) {assert(s.size_s() >= 4); int sz; s >> sz; v.resize(sz); for (int i = 0; i < sz; ++i) s >> v[i]; return s;} +//! \relatesalso PIByteArray \brief Restore operator +template +inline PIByteArray & operator >>(PIByteArray & s, PIList & v) {assert(s.size_s() >= 4); int sz; s >> sz; v.resize(sz); for (int i = 0; i < sz; ++i) s >> v[i]; return s;} +//! \relatesalso PIByteArray \brief Restore operator +template +inline PIByteArray & operator >>(PIByteArray & s, PIDeque & v) {assert(s.size_s() >= 4); int sz; s >> sz; v.resize(sz); for (int i = 0; i < sz; ++i) s >> v[i]; return s;} +// //! \relatesalso PIByteArray \brief Restore operator +//template +//inline PIByteArray & operator >>(PIByteArray & s, PIMap & v) {assert(s.size_s() >= 4); int sz; s >> sz; v.resize(sz); for (int i = 0; i < sz; ++i) s >> v[i]; return s;} +#ifdef PIP_BYTEARRAY_STREAM_ANY_TYPE +template +inline PIByteArray & operator >>(PIByteArray & s, T & v) {assert(s.size() >= sizeof(v)); PBA_OPERATOR_FROM return s;} +#endif + + +#undef PBA_OPERATOR_FROM + +//! \relatesalso PIByteArray \brief Byte arrays compare operator +inline bool operator ==(PIByteArray & f, PIByteArray & s) {if (f.size_s() != s.size_s()) return false; for (int i = 0; i < f.size_s(); ++i) if (f[i] != s[i]) return false; return true;} +//! \relatesalso PIByteArray \brief Byte arrays compare operator +inline bool operator !=(PIByteArray & f, PIByteArray & s) {if (f.size_s() != s.size_s()) return true; for (int i = 0; i < f.size_s(); ++i) if (f[i] != s[i]) return true; return false;} + +#endif // PIBYTEARRAY_H diff --git a/_oldpip/pip_0.4.0_r5/pichar.h b/_oldpip/pip_0.4.0_r5/pichar.h new file mode 100644 index 0000000..c0cd81e --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/pichar.h @@ -0,0 +1,221 @@ +/*! \file pichar.h + * \brief Unicode char +*/ +/* + PIP - Platform Independent Primitives + Unicode char + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +#ifndef PICHAR_H +#define PICHAR_H + +#include "pibytearray.h" +/*! \brief Unicode char + * \details This class is wrapper around \c "uint". + * There are many contructors and information functions + */ +class PIP_EXPORT PIChar +{ + friend class PIString; + friend PIByteArray & operator <<(PIByteArray & s, const PIChar & v); + friend PIByteArray & operator >>(PIByteArray & s, PIChar & v); +public: + //! Contructs ascii symbol + PIChar(const char c) {ch = c; ch &= 0xFF;} + + //! Contructs 2-bytes symbol + PIChar(const short c) {ch = c; ch &= 0xFFFF;} + + //! Contructs 4-bytes symbol + PIChar(const int c) {ch = c;} + + //! Contructs ascii symbol + PIChar(const uchar c) {ch = c; ch &= 0xFF;} + + //! Contructs 2-bytes symbol + PIChar(const ushort c) {ch = c; ch &= 0xFFFF;} + + //! Default constructor. Contructs 4-bytes symbol + PIChar(const uint c = 0) {ch = c;} + + //! Contructs symbol from no more than 4 bytes of string + PIChar(const char * c) {ch = *reinterpret_cast(c);} + + //inline operator const int() {return static_cast(ch);} + //inline operator const char() {return toAscii();} + + //! Copy operator + PIChar & operator =(const char v) {ch = v; return *this;} + /*inline PIChar & operator =(const short v) {ch = v; return *this;} + inline PIChar & operator =(const int v) {ch = v; return *this;} + inline PIChar & operator =(const uchar v) {ch = v; return *this;} + inline PIChar & operator =(const ushort v) {ch = v; return *this;} + inline PIChar & operator =(const uint v) {ch = v; return *this;}*/ + + //! Compare operator + bool operator ==(const PIChar & o) const {return strcmp(o.toCharPtr(), toCharPtr()) == 0;} + /*inline bool operator ==(const PIChar & o) const {if (o.isAscii() ^ isAscii()) return false; + if (isAscii()) return (o.toAscii() == toAscii()); + return (o.toInt() == toInt());} + inline bool operator ==(const char o) const {return (PIChar(o) == *this);} + inline bool operator ==(const short o) const {return (PIChar(o) == *this);} + inline bool operator ==(const int o) const {return (PIChar(o) == *this);} + inline bool operator ==(const uchar o) const {return (PIChar(o) == *this);} + inline bool operator ==(const ushort o) const {return (PIChar(o) == *this);} + inline bool operator ==(const uint o) const {return (PIChar(o) == *this);}*/ + + //! Compare operator + bool operator !=(const PIChar & o) const {return !(o == *this);} + /*inline bool operator !=(const char o) const {return (PIChar(o) != *this);} + inline bool operator !=(const short o) const {return (PIChar(o) != *this);} + inline bool operator !=(const int o) const {return (PIChar(o) != *this);} + inline bool operator !=(const uchar o) const {return (PIChar(o) != *this);} + inline bool operator !=(const ushort o) const {return (PIChar(o) != *this);} + inline bool operator !=(const uint o) const {return (PIChar(o) != *this);}*/ + + //! Compare operator + bool operator >(const PIChar & o) const {return strcmp(o.toCharPtr(), toCharPtr()) < 0;} + + //! Compare operator + bool operator <(const PIChar & o) const {return strcmp(o.toCharPtr(), toCharPtr()) > 0;} + + //! Compare operator + bool operator >=(const PIChar & o) const {return strcmp(o.toCharPtr(), toCharPtr()) <= 0;} + + //! Compare operator + bool operator <=(const PIChar & o) const {return strcmp(o.toCharPtr(), toCharPtr()) >= 0;} + + //! Return \b true if symbol is digit ('0' to '9') + bool isDigit() const {return isdigit(ch) != 0;} + + //! Return \b true if symbol is HEX digit ('0' to '9', 'a' to 'f', 'A' to 'F') + bool isHex() const {return isxdigit(ch) != 0;} + + //! Return \b true if symbol is drawable (without space) + bool isGraphical() const {return isgraph(ch) != 0;} + + //! Return \b true if symbol is control byte (< 32 or 127) + bool isControl() const {return iscntrl(ch) != 0;} + + //! Return \b true if symbol is in lower case + bool isLower() const {return islower(ch) != 0;} + + //! Return \b true if symbol is in upper case + bool isUpper() const {return isupper(ch) != 0;} + + //! Return \b true if symbol is printable (with space) + bool isPrint() const {return isprint(ch) != 0;} + + //! Return \b true if symbol is space or tab + bool isSpace() const {return isspace(ch) != 0;} + + //! Return \b true if symbol is alphabetical letter + bool isAlpha() const {return isalpha(ch) != 0;} + + //! Return \b true if symbol is ascii (< 128) + bool isAscii() const {return isascii(ch) != 0;} + + int toInt() const {return int(ch);} + const wchar_t * toWCharPtr() const {return reinterpret_cast(&ch);} + + //! Return as "char * " string + const char * toCharPtr() const {return reinterpret_cast(&ch);} + + wchar_t toWChar() const {return wchar_t(ch);} + char toAscii() const {return ch % 256;} + int unicode16Code() const {wchar_t wc; if (mbtowc(&wc, toCharPtr(), 4) > 0) return wc; return 0;} +//#ifdef WINDOWS +// inline PIChar toUpper() const __attribute__ ((optimize(0))) {return PIChar(toupper(ch));} +// inline PIChar toLower() const __attribute__ ((optimize(0))) {return PIChar(tolower(ch));} +//#else + + //! Return symbol in upper case + PIChar toUpper() const {return PIChar(toupper(ch));} + + //! Return symbol in lower case + PIChar toLower() const {return PIChar(tolower(ch));} +//#endif + +private: + uint ch; + +}; + +__PICONTAINERS_SIMPLE_TYPE__(PIChar) + +//! Output operator to \c std::ostream +inline std::ostream & operator <<(std::ostream & s, const PIChar & v) {s << v.toCharPtr(); return s;} + +//! Output operator to \a PICout +inline PICout operator <<(PICout s, const PIChar & v) {s.space(); s.setControl(0, true); s << v.toCharPtr(); s.restoreControl(); return s;} + + +//! Write operator to \c PIByteArray +inline PIByteArray & operator <<(PIByteArray & s, const PIChar & v) {s << uint(v.ch); return s;} + +//! Read operator from \c PIByteArray +inline PIByteArray & operator >>(PIByteArray & s, PIChar & v) {uint i; s >> i; v.ch = wchar_t(i); return s;} + + +//! Compare operator +inline bool operator ==(const char v, const PIChar & c) {return (PIChar(v) == c);} + +//! Compare operator +inline bool operator >(const char v, const PIChar & c) {return (PIChar(v) > c);} + +//! Compare operator +inline bool operator <(const char v, const PIChar & c) {return (PIChar(v) < c);} + +//! Compare operator +inline bool operator >=(const char v, const PIChar & c) {return (PIChar(v) >= c);} + +//! Compare operator +inline bool operator <=(const char v, const PIChar & c) {return (PIChar(v) <= c);} + + +//! Compare operator +inline bool operator ==(const char * v, const PIChar & c) {return (PIChar(v) == c);} + +//! Compare operator +inline bool operator >(const char * v, const PIChar & c) {return (PIChar(v) > c);} + +//! Compare operator +inline bool operator <(const char * v, const PIChar & c) {return (PIChar(v) < c);} + +//! Compare operator +inline bool operator >=(const char * v, const PIChar & c) {return (PIChar(v) >= c);} + +//! Compare operator +inline bool operator <=(const char * v, const PIChar & c) {return (PIChar(v) <= c);} + + +//! Compare operator +inline bool operator ==(const int v, const PIChar & c) {return (PIChar(v) == c);} + +//! Compare operator +inline bool operator >(const int v, const PIChar & c) {return (PIChar(v) > c);} + +//! Compare operator +inline bool operator <(const int v, const PIChar & c) {return (PIChar(v) < c);} + +//! Compare operator +inline bool operator >=(const int v, const PIChar & c) {return (PIChar(v) >= c);} + +//! Compare operator +inline bool operator <=(const int v, const PIChar & c) {return (PIChar(v) <= c);} + +#endif // PICHAR_H diff --git a/_oldpip/pip_0.4.0_r5/picli.cpp b/_oldpip/pip_0.4.0_r5/picli.cpp new file mode 100644 index 0000000..eeeae75 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/picli.cpp @@ -0,0 +1,97 @@ +/* + PIP - Platform Independent Primitives + Command-Line Parser + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +#include "picli.h" + + +/*! \class PICLI + * \brief Command-line arguments parser + * + * \section PICLI_sec0 Synopsis + * This class provide handy parsing of command-line arguments. First you should add + * arguments to PICLI with function \a addArgument(). Then you can check if there + * is some argument in application command-line with function \a hasArgument(); + * \section PICLI_sec1 Example + * \snippet picli.cpp main + */ + + +PICLI::PICLI(int argc, char * argv[]) { + needParse = true; + _prefix_short = "-"; + _prefix_full = "--"; + _count_opt = 0; + _count_mand = 0; + for (int i = 0; i < argc; ++i) + _args_raw << argv[i]; +} + + +void PICLI::parse() { + if (!needParse) return; + PIString cra, full; + Argument * last = 0; + for (int i = 1; i < _args_raw.size_s(); ++i) { + cra = _args_raw[i]; + if (cra.left(2) == _prefix_full) { + last = 0; + full = cra.right(cra.length() - 2); + piForeach (Argument & a, _args) { + if (a.full_key == full) { + a.found = true; + last = &a; + break; + } + } + } else { + if (cra.left(1) == _prefix_short) { + last = 0; + for (int j = 1; j < cra.length(); ++j) { + bool found = false; + piForeach (Argument & a, _args) { + if (a.short_key == cra[j]) { + a.found = true; + last = &a; + found = true; + break; + } + } + if (!found) break; + } + } else { + if (last == 0 ? true : !last->has_value) { + if (_args_mand.size_s() < _count_mand) { + _args_mand << cra; + continue; + } + if (_args_opt.size_s() < _count_opt || _count_opt < 0) { + _args_opt << cra; + continue; + } + piCoutObj << "[PICli] Arguments overflow, \"" << cra << "\" ignored"; + } + if (last == 0 ? false : last->has_value) { + last->value = cra; + last = 0; + } + } + } + } + needParse = false; +} diff --git a/_oldpip/pip_0.4.0_r5/picli.h b/_oldpip/pip_0.4.0_r5/picli.h new file mode 100644 index 0000000..ce58d5f --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/picli.h @@ -0,0 +1,101 @@ +/*! \file picli.h + * \brief Command-Line parser +*/ +/* + PIP - Platform Independent Primitives + Command-Line Parser + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +#ifndef PICLI_H +#define PICLI_H + +#include "piobject.h" + +class PIP_EXPORT PICLI: public PIObject +{ + PIOBJECT(PICLI) +public: + + //! Constructor + PICLI(int argc, char * argv[]); + + + //! Add argument with name "name", short key = name first letter, full key = name + void addArgument(const PIString & name, bool value = false) {_args << Argument(name, name[0], name, value); needParse = true;} + + //! Add argument with name "name", short key = "shortKey", full key = name + void addArgument(const PIString & name, const PIChar & shortKey, bool value = false) {_args << Argument(name, shortKey, name, value); needParse = true;} + + //! Add argument with name "name", short key = "shortKey", full key = name + void addArgument(const PIString & name, const char * shortKey, bool value = false) {_args << Argument(name, PIChar(shortKey), name, value); needParse = true;} + + //! Add argument with name "name", short key = "shortKey", full key = "fullKey" + void addArgument(const PIString & name, const PIChar & shortKey, const PIString & fullKey, bool value = false) {_args << Argument(name, shortKey, fullKey, value); needParse = true;} + + //! Add argument with name "name", short key = "shortKey", full key = "fullKey" + void addArgument(const PIString & name, const char * shortKey, const PIString & fullKey, bool value = false) {_args << Argument(name, PIChar(shortKey), fullKey, value); needParse = true;} + + + //! Returns unparsed command-line argument by index "index". Index 0 is program execute command. + PIString rawArgument(int index) {parse(); return _args_raw[index];} + PIString mandatoryArgument(int index) {parse(); return _args_mand[index];} + PIString optionalArgument(int index) {parse(); return _args_opt[index];} + + //! Returns unparsed command-line arguments + const PIStringList & rawArguments() {parse(); return _args_raw;} + const PIStringList & mandatoryArguments() {parse(); return _args_mand;} + const PIStringList & optionalArguments() {parse(); return _args_opt;} + + //! Returns program execute command without arguments + PIString programCommand() {parse(); return _args_raw.size() > 0 ? _args_raw.front() : PIString();} + bool hasArgument(const PIString & name) {parse(); piForeach (Argument & i, _args) if (i.name == name && i.found) return true; return false;} + PIString argumentValue(const PIString & name) {parse(); piForeach (Argument &i, _args) if (i.name == name && i.found) return i.value; return PIString();} + PIString argumentShortKey(const PIString & name) {piForeach (Argument &i, _args) if (i.name == name) return i.short_key; return PIString();} + PIString argumentFullKey(const PIString & name) {piForeach (Argument &i, _args) if (i.name == name) return i.full_key; return PIString();} + + const PIString & shortKeyPrefix() const {return _prefix_short;} + const PIString & fullKeyPrefix() const {return _prefix_full;} + int mandatoryArgumentsCount() const {return _count_mand;} + int optionalArgumentsCount() const {return _count_opt;} + void setShortKeyPrefix(const PIString & prefix) {_prefix_short = prefix; needParse = true;} + void setFullKeyPrefix(const PIString & prefix) {_prefix_full = prefix; needParse = true;} + void setMandatoryArgumentsCount(const int count) {_count_mand = count; needParse = true;} + void setOptionalArgumentsCount(const int count) {_count_opt = count; needParse = true;} + +private: + struct Argument { + Argument() {has_value = found = false;} + Argument(const PIString & n, const PIChar & s, const PIString & f, bool v) {name = n; short_key = s; full_key = f; has_value = v; found = false;} + PIString name; + PIChar short_key; + PIString full_key; + PIString value; + bool has_value, found; + }; + + void parse(); + + PIString _prefix_short, _prefix_full; + PIStringList _args_raw, _args_mand, _args_opt; + PISet keys_full, keys_short; + PIVector _args; + int _count_mand, _count_opt; + bool needParse; + +}; + +#endif // PICLI_H diff --git a/_oldpip/pip_0.4.0_r5/picodec.cpp b/_oldpip/pip_0.4.0_r5/picodec.cpp new file mode 100644 index 0000000..cecb3d3 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/picodec.cpp @@ -0,0 +1,41 @@ +/* + PIP - Platform Independent Primitives + Text codings coder, based on "iconv" + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +#include "picodec.h" + + +PIStringList PICodec::availableCodecs() { + exec("/usr/bin/iconv", "-l"); + waitForFinish(); + PIString str(readOutput()); + str.cutLeft(str.find("\n ")); + str.replaceAll("\n", ""); + return str.split("//"); +} + + +PIByteArray PICodec::exec_iconv(const PIString & from, const PIString & to, const PIByteArray & str) { + tf.open(); + tf.clear(); + tf << str; + tf.close(); + exec("/usr/bin/iconv", ("-f=" + from), ("-t=" + to), tf.path()); + waitForFinish(); + return readOutput(); +} diff --git a/_oldpip/pip_0.4.0_r5/picodec.h b/_oldpip/pip_0.4.0_r5/picodec.h new file mode 100644 index 0000000..81517b4 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/picodec.h @@ -0,0 +1,50 @@ +/* + PIP - Platform Independent Primitives + Text codings coder, based on "iconv" + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +#ifndef PICODEC_H +#define PICODEC_H + +#include "piprocess.h" + +class PIP_EXPORT PICodec: private PIProcess +{ +public: + PICodec(): PIProcess() {setGrabOutput(true); tf = PIFile::openTemporary(PIIODevice::ReadWrite); tf.open();} + PICodec(const PIString & from, const PIString & to): PIProcess() {setCodings(from, to); tf = PIFile::openTemporary(PIIODevice::ReadWrite);} + ~PICodec() {tf.remove();} + + void setFromCoding(const PIString & from) {c_from = from;} + void setToCoding(const PIString & to) {c_to = to;} + void setCodings(const PIString & from, const PIString & to) {c_from = from; c_to = to;} + + PIStringList availableCodecs(); + PIString encode(PIString & str) {return PIString(exec_iconv(c_from, c_to, str.toByteArray()));} + PIString encode(const PIByteArray & str) {return PIString(exec_iconv(c_from, c_to, str));} + PIString decode(PIString & str) {return PIString(exec_iconv(c_to, c_from, str.toByteArray()));} + PIString decode(const PIByteArray & str) {return PIString(exec_iconv(c_to, c_from, str));} + +private: + PIByteArray exec_iconv(const PIString & from, const PIString & to, const PIByteArray & str); + + PIString c_from, c_to; + PIFile tf; + +}; + +#endif // PICODEC_H diff --git a/_oldpip/pip_0.4.0_r5/picodeinfo.cpp b/_oldpip/pip_0.4.0_r5/picodeinfo.cpp new file mode 100644 index 0000000..ef2801b --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/picodeinfo.cpp @@ -0,0 +1,42 @@ +/* + PIP - Platform Independent Primitives + C++ code info structs + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +#include "picodeinfo.h" + + +PIString PICodeInfo::EnumInfo::memberName(int value_) const { + piForeachC (PICodeInfo::EnumeratorInfo & e, members) + if (e.value == value_) + return e.name; + return PIString(); +} + + +int PICodeInfo::EnumInfo::memberValue(const PIString & name_) const { + piForeachC (PICodeInfo::EnumeratorInfo & e, members) + if (e.name == name_) + return e.value; + return -1; +} + + +PIMap * PICodeInfo::classesInfo; +PIMap * PICodeInfo::enumsInfo; + +bool __PICodeInfoInitializer__::_inited_ = false; diff --git a/_oldpip/pip_0.4.0_r5/picodeinfo.h b/_oldpip/pip_0.4.0_r5/picodeinfo.h new file mode 100644 index 0000000..c303941 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/picodeinfo.h @@ -0,0 +1,149 @@ +/*! \file picodeinfo.h + * \brief C++ code info structs +*/ +/* + PIP - Platform Independent Primitives + C++ code info structs + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + + +#ifndef PICODEINFO_H +#define PICODEINFO_H + +#include "pistring.h" + +namespace PICodeInfo { + +enum TypeFlag {NoFlag, Const = 0x01, Static = 0x02, Mutable = 0x04, Volatile = 0x08, Inline = 0x10, Virtual = 0x20}; + +typedef PIFlags TypeFlags; + +struct TypeInfo { + TypeInfo(const PIString & n = PIString(), const PIString & t = PIString(), PICodeInfo::TypeFlags f = 0) {name = n; type = t; flags = f;} + PIString name; + PIString type; + PICodeInfo::TypeFlags flags; +}; + +struct FunctionInfo { + PIString name; + TypeInfo return_type; + PIVector arguments; +}; + +struct ClassInfo { + PIString name; + PIStringList parents; + PIVector variables; + PIVector functions; +}; + +struct EnumeratorInfo { + EnumeratorInfo(const PIString & n = PIString(), int v = 0) {name = n; value = v;} + PIString name; + int value; +}; + +struct EnumInfo { + PIString memberName(int value) const; + int memberValue(const PIString & name) const; + PIString name; + PIVector members; +}; + + +inline PICout operator <<(PICout s, const PICodeInfo::TypeInfo & v) { + if (v.flags[Inline]) s << "inline "; + if (v.flags[Virtual]) s << "virtual "; + if (v.flags[Mutable]) s << "mutable "; + if (v.flags[Volatile]) s << "volatile "; + if (v.flags[Static]) s << "static "; + if (v.flags[Const]) s << "const "; + s << v.type; + if (!v.name.isEmpty()) + s << " " << v.name; + return s; +} + +inline PICout operator <<(PICout s, const PICodeInfo::EnumeratorInfo & v) {s << v.name << " = " << v.value; return s;} + +inline PICout operator <<(PICout s, const PICodeInfo::ClassInfo & v) { + s.setControl(0, true); + s << "class " << v.name; + if (!v.parents.isEmpty()) { + s << ": "; + bool first = true; + piForeachC (PIString & i, v.parents) { + if (first) first = false; + else s << ", "; + s << i; + } + } + s << " {\n"; + piForeachC (FunctionInfo & i, v.functions) { + s << Tab << i.return_type << " " << i.name << "("; + bool fa = true; + piForeachC (TypeInfo & a, i.arguments) { + if (fa) fa = false; + else s << ", "; + s << a; + } + s << ");\n"; + } + if (!v.functions.isEmpty() && !v.variables.isEmpty()) + s << "\n"; + piForeachC (TypeInfo & i, v.variables) { + s << Tab << i << ";\n"; + } + s << "}\n"; + s.restoreControl(); + return s; +} + +inline PICout operator <<(PICout s, const PICodeInfo::EnumInfo & v) { + s.setControl(0, true); + s << "enum " << v.name << " {\n"; + piForeachC (EnumeratorInfo & i, v.members) { + bool f = true; + if (f) f = false; + else s << ", "; + s << Tab << i << "\n"; + } + s << "}\n"; + s.restoreControl(); + return s; +} + +extern PIMap * classesInfo; +extern PIMap * enumsInfo; + +} + +class __PICodeInfoInitializer__ { +public: + __PICodeInfoInitializer__() { + if (_inited_) return; + _inited_ = true; + PICodeInfo::classesInfo = new PIMap; + PICodeInfo::enumsInfo = new PIMap; + } + static bool _inited_; +}; + +static __PICodeInfoInitializer__ __picodeinfoinitializer__; + +#endif // PICODEINFO_H diff --git a/_oldpip/pip_0.4.0_r5/picodeparser.cpp b/_oldpip/pip_0.4.0_r5/picodeparser.cpp new file mode 100644 index 0000000..04644f1 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/picodeparser.cpp @@ -0,0 +1,762 @@ +/* + PIP - Platform Independent Primitives + C++ code parser + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +#include "picodeparser.h" + + + +PIString PICodeParser::Macro::expand(const PIStringList & arg_vals, bool * ok) const { + if (args.size() != arg_vals.size()) { + piCout << ("Error: in expansion of macro \"" + name + "(" + args.join(", ") + ")\": expect") + << args.size() << "arguments but takes" << arg_vals.size() << "!"; + if (ok != 0) *ok = false; + return PIString(); + } + PIString ret = value; + for (int i = 0; i < args.size_s(); ++i) { + const PIString & an(args[i]), av(arg_vals[i]); + int ind(-1); + while ((ind = ret.find(an, ind + 1)) >= 0) { + PIChar ppc(0), pc(0), nc(0); + if (ind > 1) ppc = ret[ind - 2]; + if (ind > 0) pc = ret[ind - 1]; + if (ind + an.size_s() < ret.size_s()) nc = ret[ind + an.size_s()]; + if (ppc != '#' && pc == '#' && !_isCChar(nc)) { // to chars + ind--; + ret.replace(ind, an.size_s() + 1, "\"" + av + "\""); + ind -= an.size_s() - av.size_s() - 1; + continue; + } + if (_isCChar(pc) || _isCChar(nc)) continue; + ret.replace(ind, an.size_s(), av); + ind -= an.size_s() - av.size_s(); + } + } + ret.replaceAll("##", ""); + if (ok != 0) *ok = true; + return ret; +} + + + +PICodeParser::PICodeParser() { + macros_iter = 32; + clear(); + includes << ""; +} + + +void PICodeParser::parseFile(const PIString & file) { + clear(); + parseFileInternal(file); + /*piCout << "\n\nDefines:"; + piForeachC (Define & m, defines) + piCout << "define" << m.first << m.second; + piCout << "\n\nMacros:"; + piForeachC (Macro & m, macros) + piCout << "Macro:" << m.name << m.args << m.value; + piCout << "\n\nClasses:"; + piForeachC (Entity * c, entities) + piCout << "class" << c->name << c->parents; + piCout << "\n\nEnums:"; + piForeachC (Enum & c, enums) + piCout << "enum" << c.name << c.members; + piCout << "\n\nTypedefs:"; + piForeachC (Typedef & c, typedefs) + piCout << "typedef" << c;*/ +} + + +void PICodeParser::parseFiles(const PIStringList & files) { + clear(); + piForeachC (PIString & f, files) + parseFileInternal(f); + /*piCout << "\n\nDefines:"; + piForeachC (Define & m, defines) + piCout << "define" << m.first << m.second; + piCout << "\n\nMacros:"; + piForeachC (Macro & m, macros) + piCout << "Macro:" << m.name << m.args << m.value; + piCout << "\n\nClasses:"; + piForeachC (Entity * c, entities) + piCout << "class" << c->name << c->parents; + piCout << "\n\nEnums:"; + piForeachC (Enum & c, enums) + piCout << "enum" << c.name << c.members; + piCout << "\n\nTypedefs:"; + piForeachC (Typedef & c, typedefs) + piCout << "typedef" << c;*/ +} + + +bool PICodeParser::isEnum(const PIString & name) { + piForeachC (Enum & e, enums) + if (e.name == name) + return true; + return false; +} + + +bool PICodeParser::parseFileInternal(const PIString & file) { + if (proc_files[file]) return true; + proc_files << file; + cur_file = file; + PIFile f(file, PIIODevice::ReadOnly); + int ii = 0; + while (!f.isOpened() && ii < (includes.size_s() - 1)) { + f.setPath(includes[++ii] + "/" + file); + //piCout << "try" << f.path(); + f.open(PIIODevice::ReadOnly); + } + if (!f.isOpened()) { + //piCout << ("Error: can`t open file \"" + file + "\"!"); + return false; + } + PIString fc = f.readAll(); + piCout << "parsing" << f.path() << "..."; + bool ret = parseFileContent(fc); + piCout << "parsing" << f.path() << "done"; + return ret; +} + + +void PICodeParser::clear() { + piForeach (Entity * i, entities) delete i; + defines.clear(); + macros.clear(); + enums.clear(); + typedefs.clear(); + entities.clear(); + proc_files.clear(); + cur_namespace.clear(); + evaluator.clearCustomVariables(); + defines << Define("PICODE", "") << custom_defines; +} + + +bool PICodeParser::parseFileContent(PIString & fc) { + bool mlc = false, cc = false; + int mls = 0, ole = -1, /*ccs = 0,*/ end = 0; + char c = 0, pc = 0; + PIString pfc, line, ccmn, tmp; + PIMap cchars; + + /// Remove comments, join multiline "*" and replace "*" to $n (cchars) + fc.replaceAll("\r\n", "\n"); + fc.replaceAll("\r", "\n"); + for (int i = 0; i < fc.size_s() - 1; ++i) { + if (i > 0) pc = c; + c = fc[i].toAscii(); + if (c == '"' && !mlc && pc != '\'') { + if (i > 0) if (fc[i - 1] == '\\') continue; + cc = !cc; + /*if (cc) ccs = i; + if (!cc) { + ccmn = "$" + PIString::fromNumber(cchars.size()); + cchars[ccmn] = fc.mid(ccs, i - ccs + 1); + fc.replace(ccs, i - ccs + 1, ccmn); + i = ccs - 1 + ccmn.size_s(); + }*/ + continue; + } + if (i > 0) + if (c == '\\' && fc[i - 1].toAscii() != '\\') { + fc.cutMid(i, 2); + --i; + continue; + } + if (cc) continue; + if (fc.mid(i, 2) == "/*") {mlc = true; mls = i; ++i; continue;} + if (fc.mid(i, 2) == "*/" && mlc) {mlc = false; fc.cutMid(mls, i - mls + 2); i = mls - 1; continue;} + if (fc.mid(i, 2) == "//" && !mlc) {ole = fc.find('\n', i); fc.cutMid(i, ole < 0 ? -1 : ole - i); --i; continue;} + } + //piCout << fc; + pfc = procMacros(fc); + + bool replaced = true; + int replaced_cnt = 0; + while (replaced) { + //piCout << "MACRO iter" << replaced_cnt; + if (replaced_cnt >= macros_iter) { + piCout << "Error: recursive macros detected!"; + break;//return false; + } + replaced_cnt++; + replaced = false; + piForeachC (Define & d, defines) { + int ind(-1); + while ((ind = pfc.find(d.first, ind + 1)) >= 0) { + PIChar pc(0), nc(0); + if (ind > 0) pc = pfc[ind - 1]; + if (ind + d.first.size_s() < pfc.size_s()) nc = pfc[ind + d.first.size_s()]; + if (_isCChar(pc) || _isCChar(nc) || nc.isDigit()) continue; + pfc.replace(ind, d.first.size_s(), d.second); + ind -= d.first.size_s() - d.second.size_s(); + replaced = true; + } + } + piForeachC (Macro & m, macros) { + int ind(-1); + while ((ind = pfc.find(m.name, ind + 1)) >= 0) { + PIChar pc(0), nc(0); + if (ind > 0) pc = pfc[ind - 1]; + if (ind + m.name.size_s() < pfc.size_s()) nc = pfc[ind + m.name.size_s()]; + if (_isCChar(pc) || _isCChar(nc) || nc.isDigit()) continue; + PIString ret, range; bool ok(false); + range = pfc.mid(ind + m.name.size_s()).takeRange("(", ")"); + ret = m.expand(range.split(",").trim(), &ok); + if (!ok) return false; + int rlen = pfc.find(range, ind + m.name.size_s()) + range.size_s() + 1 - ind; + pfc.replace(ind, rlen, ret); + ind -= rlen - ret.size_s(); + replaced = true; + } + } + } + + //piCout << NewLine << "file" << cur_file << pfc; + for (int i = 0; i < pfc.size_s() - 5; ++i) { + if (pfc.mid(i, 8) == "template") { + pfc.cutLeft(i + 8); + pfc.takeRange("<", ">"); + bool def = !isDeclaration(pfc, 0, &end); + pfc.cutLeft(end); + if (def) pfc.takeRange("{", "}"); + else pfc.takeSymbol(); + i = 0; + continue; + } + if (pfc.mid(i, 5) == "class" || pfc.mid(i, 6) == "struct") { + int dind = pfc.find("{", i), find = pfc.find(";", i); + if (dind < 0 && find < 0) {pfc.cutLeft(i + 6); i = 0; continue;} + if (dind < 0 || find < dind) {pfc.cutLeft(i + 6); i = 0; continue;} + ccmn = pfc.mid(i, dind - i) + "{\n" + pfc.mid(dind).takeRange('{', '}') + "\n}\n"; + pfc.remove(i, ccmn.size()); + parseClass(ccmn); + i = 0; + continue; + } + if (pfc.mid(i, 4) == "enum") { + pfc.cutLeft(i + 4); + tmp = pfc.takeCWord(); + parseEnum(cur_namespace + tmp, pfc.takeRange("{", "}")); + pfc.takeSymbol(); + i = 0; + continue; + } + if (pfc.mid(i, 7) == "typedef") { + pfc.cutLeft(i + 7); + typedefs << parseTypedef(pfc.takeLeft(pfc.find(";"))); + if (typedefs.back().first.isEmpty()) typedefs.pop_back(); + pfc.takeSymbol(); + i = 0; + continue; + } + } + + return true; +} + + +PICodeParser::Entity * PICodeParser::parseClassDeclaration(const PIString & fc) { + PIString cd = fc.trimmed().removeAll('\n').replaceAll("\t", " ").replaceAll(" ", " "), pn; + //piCout << "found class <****\n" << cd << "\n****>"; + int ind = cd.find(":"); + PIVector parents; + if (ind > 0) { + PIStringList pl = cd.takeMid(ind + 1).trim().split(","); + cd.cutRight(1); + Entity * pe = 0; + piForeachC (PIString & p, pl) { + if (p.contains(" ")) pn = p.mid(p.find(" ") + 1); + else pn = p; + pe = findEntityByName(pn); + if (pe == 0) ;//{piCout << "Error: can`t find" << pn;} + else parents << pe; + } + } + bool is_class = cd.left(5) == "class"; + cur_def_vis = (is_class ? Private : Public); + PIString cn = cd.mid(6).trim(); + if (cn.isEmpty()) return 0; + Entity * e = new Entity(); + e->name = cur_namespace + cn; + e->type = (is_class ? "class" : "struct"); + e->parents = parents; + e->file = cur_file; + entities << e; + return e; +} + + +PIString PICodeParser::parseClass(PIString & fc) { + Visibility prev_vis = cur_def_vis; + int dind = fc.find("{"), find = fc.find(";"), end = 0; + if (dind < 0 && find < 0) return PIString(); + if (dind < 0 || find < dind) return fc.left(find); + Entity * ce = parseClassDeclaration(fc.takeLeft(dind)); + fc.trim().cutLeft(1).cutRight(1).trim(); + //piCout << "found class <****\n" << fc << "\n****>"; + if (!ce) return PIString(); + int ps = -1; + bool def = false; + PIString prev_namespace = cur_namespace, stmp; + cur_namespace = ce->name + "::"; + //piCout << "parse class" << ce->name << "namespace" << cur_namespace; + //piCout << "\nparse class" << ce->name << "namespace" << cur_namespace; + while (!fc.isEmpty()) { + PIString cw = fc.takeCWord(), tmp; + //piCout << "\ntaked word" << cw; + if (cw == "public") {cur_def_vis = Public; fc.cutLeft(1); continue;} + if (cw == "protected") {cur_def_vis = Protected; fc.cutLeft(1); continue;} + if (cw == "private") {cur_def_vis = Private; fc.cutLeft(1); continue;} + if (cw == "class") {if (isDeclaration(fc, 0, &end)) {fc.cutLeft(end); fc.takeSymbol(); continue;} tmp = fc.takeLeft(fc.find("{")); stmp = fc.takeRange("{", "}"); fc.takeSymbol(); stmp = "class " + tmp + "{" + stmp + "}"; parseClass(stmp); continue;} + if (cw == "struct") {if (isDeclaration(fc, 0, &end)) {fc.cutLeft(end); fc.takeSymbol(); continue;} tmp = fc.takeLeft(fc.find("{")); stmp = fc.takeRange("{", "}"); fc.takeSymbol(); stmp = "struct " + tmp + "{" + stmp + "}"; parseClass(stmp); continue;} + if (cw == "enum") {tmp = fc.takeCWord(); parseEnum(cur_namespace + tmp, fc.takeRange("{", "}")); fc.takeSymbol(); continue;} + if (cw == "friend") {fc.cutLeft(fc.find(";") + 1); continue;} + if (cw == "typedef") {ce->typedefs << parseTypedef(fc.takeLeft(fc.find(";"))); typedefs << ce->typedefs.back(); typedefs.back().first.insert(0, cur_namespace); if (ce->typedefs.back().first.isEmpty()) ce->typedefs.pop_back(); fc.takeSymbol(); continue;} + if (cw == "template") { + fc.takeRange("<", ">"); + def = !isDeclaration(fc, 0, &end); + fc.cutLeft(end); + if (def) fc.takeRange("{", "}"); + else fc.takeSymbol(); + continue; + } + def = !isDeclaration(fc, 0, &end); + tmp = (cw + fc.takeLeft(end)).trim(); + if (!tmp.isEmpty()) + parseMember(ce, tmp); + if (def) fc.takeRange("{", "}"); + else fc.takeSymbol(); + if (ps == fc.size_s()) {/*cur_namespace = prev_namespace;*/ fc.cutLeft(1);/*return false*/;} + ps = fc.size_s(); + } + cur_def_vis = prev_vis; + cur_namespace = prev_namespace; + return ce->name; +} + + +bool PICodeParser::parseEnum(const PIString & name, PIString fc) { + //piCout << "enum" << name << fc; + Enum e(name); + PIStringList vl(fc.split(",")); + PIString vn; + int cv = -1, ind = 0; + piForeachC (PIString & v, vl) { + vn = v; ind = v.find("="); + if (ind > 0) {cv = v.right(v.size_s() - ind - 1).toInt(); vn = v.left(ind);} + if (ind < 0) ++cv; + e.members << Enumerator(vn.trim(), cv); + } + enums << e; + return true; +} + + +PICodeParser::Typedef PICodeParser::parseTypedef(PIString fc) { + //piCout << "parse typedef" << fc; + Typedef td; + fc.replaceAll("\t", " "); + + if (fc.contains("(")) { + int start = fc.find("("), end = fc.find(")"); + td.first = fc.takeMid(start + 1, end - start - 1).trim(); + if (td.first.left(1) == "*") {td.first.cutLeft(1).trim(); fc.insert(start + 1, "*");} + td.second = fc.trim(); + } else { + td.first = fc.takeMid(fc.findLast(" ")).trim(); + td.second = fc.trim(); + } + //piCout << "found typedef" << td; + return td; +} + + +bool PICodeParser::parseMember(Entity * parent, PIString & fc) { + if (fc.trim().isEmpty()) return true; + if (fc.find("operator") >= 0) return true; + tmp_temp.clear(); + //piCout << "parse member" << fc; + int ts = fc.find("<"), te = 0; + PIString ctemp, crepl; + while (ts >= 0) { + ctemp = fc.mid(ts).takeRange("<", ">"); + if (ctemp.isEmpty()) {te = ts + 1; ts = fc.find("<", te); continue;} + crepl = "$" + PIString::fromNumber(tmp_temp.size_s()).expandLeftTo(3, "0"); + fc.replace(ts, ctemp.size_s() + 2, crepl); + tmp_temp[crepl] = "<" + ctemp + ">"; + ts = fc.find("<", te); + } + fc.replaceAll("\n", " ").replaceAll("\t", " ").replaceAll(" ", " ").replaceAll(", ", ","); + PIStringList tl, al; + Member me; + //piCout << fc; + if (fc.contains("(")) { + fc.cutRight(fc.size_s() - fc.findLast(")") - 1); + te = fc.find("("); + //piCout << fc; + for (ts = te - 1; ts >= 0; --ts) + if (!_isCChar(fc[ts]) && !(fc[ts].isDigit())) break; + //piCout << "takeMid" << ts + 1 << te - ts - 1; + me.name = fc.takeMid(ts + 1, te - ts - 1); + if (me.name == parent->name) return true; + me.arguments_full = fc.takeMid(ts + 2).cutRight(1).split(","); + me.type = fc.cutRight(1).trim(); + me.visibility = cur_def_vis; + if (me.type.find("inline ") >= 0) { + me.attributes |= Inline; + me.type.removeAll("inline "); + } + if (me.type.find("static ") >= 0) { + me.attributes |= Static; + me.type.removeAll("static "); + } + if (me.type.find("virtual ") >= 0) { + me.attributes |= Virtual; + me.type.removeAll("virtual "); + } + normalizeEntityNamespace(me.type); + int i = 0; + piForeach (PIString & a, me.arguments_full) + if ((i = a.find("=")) > 0) + a.cutRight(a.size_s() - i).trim(); + me.arguments_type = me.arguments_full; + piForeach (PIString & a, me.arguments_type) { + crepl.clear(); + if (a.contains("[")) + crepl = a.takeMid(a.find("["), a.findLast("]") - a.find("[") + 1); + for (ts = a.size_s() - 1; ts >= 0; --ts) + if (!_isCChar(a[ts]) && !(a[ts].isDigit())) break; + a.cutRight(a.size_s() - ts - 1); + normalizeEntityNamespace(a); + a += crepl; + a.trim(); + } + restoreTmpTemp(&me); + //piCout << "func" << me.type << me.name << me.arguments_full << me.arguments_type; + parent->functions << me; + } else { + tl = fc.split(","); + bool vn = true; + ctemp = tl.front(); + for (ts = ctemp.size_s() - 1; ts > 0; --ts) { + if (vn) {if (!_isCChar(ctemp[ts]) && !ctemp[ts].isDigit() && ctemp[ts] != '[' && ctemp[ts] != ']') vn = false;} + else {if (_isCChar(ctemp[ts]) || ctemp[ts].isDigit()) break;} + } + me.type = ctemp.takeLeft(ts + 1); + me.visibility = cur_def_vis; + restoreTmpTemp(&me); + PIString type = " " + me.type; + if (type.find(" const ") >= 0) { + me.attributes |= Const; + type.replaceAll(" const ", " "); + } + if (type.find(" static ") >= 0) { + me.attributes |= Static; + type.replaceAll(" static ", " "); + } + if (type.find(" mutable ") >= 0) { + me.attributes |= Mutable; + type.replaceAll(" mutable ", " "); + } + if (type.find(" volatile ") >= 0) { + me.attributes |= Volatile; + type.replaceAll(" volatile ", " "); + } + type.trim(); + normalizeEntityNamespace(type); + tl[0] = ctemp.trim(); + piForeachC (PIString & v, tl) { + crepl.clear(); + me.name = v.trimmed(); + me.type = type; + if (me.name.isEmpty()) continue; + if (me.name.contains("[")) + crepl = me.name.takeMid(me.name.find("["), me.name.findLast("]") - me.name.find("[") + 1); + while (!me.name.isEmpty()) { + if (me.name.front() == "*" || me.name.front() == "&") { + me.type += me.name.takeLeft(1); + me.name.trim(); + } else break; + } + me.is_type_ptr = (me.type.right(1) == "]" || me.type.right(1) == "*"); + me.type += crepl; + //piCout << "var" << me.type << me.name << me.is_const << me.is_static; + parent->members << me; + } + } + //piCout << "parse member" << fc; + return true; +} + + +void PICodeParser::normalizeEntityNamespace(PIString & n) { + PIString suff, pref; + for (int i = n.size_s() - 1; i > 0; --i) + if (_isCChar(n[i]) || n[i].isDigit()) { + suff = n.right(n.size_s() - i - 1); + n.cutRight(suff.size_s()); + break; + } + n.push_front(" "); + if (n.find(" static ") >= 0) {n.replaceAll(" static ", ""); pref += "static ";} + if (n.find(" const ") >= 0) {n.replaceAll(" const ", ""); pref += "const ";} + if (n.find(" mutable ") >= 0) {n.replaceAll(" mutable ", ""); pref += "mutable ";} + if (n.find(" volatile ") >= 0) {n.replaceAll(" volatile ", ""); pref += "volatile ";} + n.trim(); + int f = 0; + piForeachC (Entity * e, entities) { + if (e->name == n) { + n = (pref + n + suff).trim(); + return; + } + if ((f = e->name.find(n)) >= 0) + if (e->name.mid(f - 1, 1) == ":") + if (e->name.find(cur_namespace) >= 0) { + n = pref + e->name + suff; + return; + } + } + piForeachC (Enum & e, enums) + if ((f = e.name.find(n)) >= 0) + if (e.name.mid(f - 1, 1) == ":") + if (e.name.find(cur_namespace) >= 0) { + //piCout << "change" << n << "to" << e.name + suff; + n = pref + e.name + suff; + return; + } + piForeachC (Typedef & e, typedefs) + if ((f = e.first.find(n)) >= 0) + if (e.first.mid(f - 1, 1) == ":") + if (e.first.find(cur_namespace) >= 0) { + //piCout << "change" << n << "to" << e.name + suff; + n = pref + e.first + suff; + return; + } + n = (pref + n + suff).trim(); +} + + +void PICodeParser::restoreTmpTemp(Member * e) { + int i = 0; + piForeach (PIString & a, e->arguments_full) { + while ((i = a.find("$")) >= 0) + a.replace(i, 4, tmp_temp[a.mid(i, 4)]); + } + piForeach (PIString & a, e->arguments_type) { + while ((i = a.find("$")) >= 0) + a.replace(i, 4, tmp_temp[a.mid(i, 4)]); + } + while ((i = e->type.find("$")) >= 0) + e->type.replace(i, 4, tmp_temp[e->type.mid(i, 4)]); +} + + +bool PICodeParser::macroCondition(const PIString & mif, PIString mifcond) { + //piCout << "macroCondition" << mif << mifcond; + if (mif == "ifdef") return isDefineExists(mifcond); + if (mif == "ifndef") return !isDefineExists(mifcond); + if (mif == "if" || mif == "elif") { + mifcond.removeAll(" ").removeAll("\t"); + return procMacrosCond(mifcond) > 0.; + } + return false; +} + + +double PICodeParser::procMacrosCond(PIString fc) { + bool neg = false, first = true, br = false; + double ret = 0., brv = 0.; + int oper = 0, ps = -1; + char cc, nc; + PIString ce; + fc.removeAll("defined"); + //piCout << "procMacrosCond" << fc; + while (!fc.isEmpty()) { + cc = fc[0].toAscii(); + nc = (fc.size() > 1 ? fc[1].toAscii() : 0); + if (cc == '!') {neg = true; fc.pop_front(); continue;} + if (cc == '(') {br = true; brv = procMacrosCond(fc.takeRange('(', ')'));} + if (cc == '&' && nc == '&') {fc.remove(0, 2); oper = 1; continue;} + if (cc == '|' && nc == '|') {fc.remove(0, 2); oper = 2; continue;} + if (!br) { + ce = fc.takeCWord(); + if (ce.isEmpty()) ce = fc.takeNumber(); + } + if (first) { + first = false; + ret = br ? brv : defineValue(ce); + if (neg) ret = -ret; + } else { + //piCout << "oper" << oper << "with" << ce; + if (!br) brv = defineValue(ce); + switch (oper) { + case 1: ret = ret && (neg ? -brv : brv); break; + case 2: ret = ret || (neg ? -brv : brv); break; + } + } + if (ps == fc.size_s()) fc.cutLeft(1); + ps = fc.size_s(); + br = neg = false; + } + //piCout << "return" << ret; + return ret; +} + + +bool PICodeParser::isDefineExists(const PIString & dn) { + piForeachC (Define & d, defines) { + if (d.first == dn) + return true; + } + return false; +} + + +double PICodeParser::defineValue(const PIString & dn) { + piForeachC (Define & d, defines) { + if (d.first == dn) + return d.second.isEmpty() ? 1. : d.second.toDouble(); + } + return dn.toDouble(); +} + + +PICodeParser::Entity * PICodeParser::findEntityByName(const PIString & en) { + piForeach (Entity * e, entities) + if (e->name == en) + return e; + return 0; +} + + +bool PICodeParser::isDeclaration(const PIString & fc, int start, int * end) { + int dind = fc.find("{", start), find = fc.find(";", start); + //piCout << "isDeclaration" << dind << find; + if (dind < 0 && find < 0) {if (end) *end = -1; return true;} + if (dind < 0 || find < dind) {if (end) *end = find; return true;} + if (end) *end = dind; + return false; +} + + +PIString PICodeParser::procMacros(PIString fc) { + if (fc.isEmpty()) return PIString(); + int ifcnt = 0; + bool grab = false, skip = false, cond_ok = false; + PIString pfc, nfc, line, mif, mifcond; + //piCout << "procMacros\n<******" << fc << "\n******>"; + fc += "\n"; + while (!fc.isEmpty()) { + line = fc.takeLine().trimmed(); + if (line.left(1) == "#") { + mifcond = line.mid(1); + mif = mifcond.takeCWord(); + //piCout << "mif mifcond" << mif << mifcond << ifcnt; + if (skip || grab) { + if (mif.left(2) == "if") ifcnt++; + if (mif.left(5) == "endif") { + if (ifcnt > 0) ifcnt--; + else { + //piCout << "main endif" << skip << grab; + if (grab) pfc << procMacros(nfc); + skip = grab = false; + continue; + } + } + if (mif.left(4) == "elif" && ifcnt == 0) { + //piCout << "main elif" << skip << grab << cond_ok; + if (cond_ok) { + if (grab) { + pfc << procMacros(nfc); + skip = true; grab = false; + } + continue; + } + if (skip) { + //piCout << "check elif" << skip << grab << cond_ok; + if (!macroCondition(mif, mifcond.trimmed())) continue; + //piCout << "check elif ok"; + skip = false; grab = cond_ok = true; + continue; + } + continue; + } + if (mif.left(4) == "else" && ifcnt == 0) { + //piCout << "main else" << skip << grab; + if (grab) pfc << procMacros(nfc); + if (skip && !cond_ok) {skip = false; grab = true;} + else {skip = true; grab = false;} + continue; + } + if (grab) nfc << line << "\n"; + continue; + } + if (mif.left(2) == "if") { + //piCout << "main if"; + skip = grab = cond_ok = false; + if (macroCondition(mif, mifcond.trimmed())) grab = cond_ok = true; + else skip = true; + ifcnt = 0; + nfc.clear(); + } else { + if (!parseDirective(line.cutLeft(1).trim())) + ;//return false; /// WARNING + } + } else { + if (grab) nfc << line << "\n"; + else if (!skip) pfc << line << "\n"; + } + } + return pfc; +} + + +bool PICodeParser::parseDirective(PIString d) { + if (d.isEmpty()) return true; + PIString dname = d.takeCWord(); + //piCout << "parseDirective" << d; + if (dname == "include") { + d.replaceAll("<", "\"").replaceAll(">", "\""); + PIString cf = cur_file; + bool ret = parseFileInternal(d.takeRange("\"", "\"")); + cur_file = cf; + return ret; + } + if (dname == "define") { + PIString mname = d.takeCWord(); + if (d.left(1) == "(") { // macro + PIStringList args = d.takeRange("(", ")").split(",").trim(); + macros << Macro(mname, d.trim(), args); + } else { // define + defines << Define(mname, d.trim()); + evaluator.setVariable(mname, complexd_1); + } + return true; + } + if (dname == "undef") { + PIString mname = d.takeCWord(); + for (int i = 0; i < defines.size_s(); ++i) + if (defines[i].first == mname) {defines.remove(i); --i;} + return true; + } + return true; +} diff --git a/_oldpip/pip_0.4.0_r5/picodeparser.h b/_oldpip/pip_0.4.0_r5/picodeparser.h new file mode 100644 index 0000000..9ed6b1c --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/picodeparser.h @@ -0,0 +1,148 @@ +/*! \file picodeparser.h + * \brief C++ code parser +*/ +/* + PIP - Platform Independent Primitives + C++ code parser + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + + +#ifndef PICODEPARSER_H +#define PICODEPARSER_H + +#include "pifile.h" +#include "pievaluator.h" + +inline bool _isCChar(const PIChar & c) {return (c.isAlpha() || (c.toAscii() == '_'));} +inline bool _isCChar(const PIString & c) {if (c.isEmpty()) return false; return _isCChar(c[0]);} + +class PIP_EXPORT PICodeParser { +public: + PICodeParser(); + + enum PIP_EXPORT Visibility {Global, Public, Protected, Private}; + enum PIP_EXPORT Attribute {NoAttributes = 0x0, Const = 0x01, Static = 0x02, Mutable = 0x04, Volatile = 0x08, Inline = 0x10, Virtual = 0x20}; + + typedef PIFlags Attributes; + typedef PIPair Define; + typedef PIPair Typedef; + typedef PIPair Enumerator; + + struct PIP_EXPORT Macro { + Macro(const PIString & n = PIString(), const PIString & v = PIString(), const PIStringList & a = PIStringList()) { + name = n; + value = v; + args = a; + } + PIString expand(const PIStringList & arg_vals, bool * ok = 0) const; + PIString name; + PIString value; + PIStringList args; + }; + + struct PIP_EXPORT Member { + Member() { + visibility = Global; + size = 0; + is_type_ptr = false; + attributes = NoAttributes; + } + PIString type; + PIString name; + PIStringList arguments_full; + PIStringList arguments_type; + Visibility visibility; + Attributes attributes; + bool is_type_ptr; + int size; + }; + + struct PIP_EXPORT Entity { + Entity() { + visibility = Global; + size = 0; + } + PIString type; + PIString name; + PIString file; + Visibility visibility; + int size; + PIVector parents; + //PIVector children; + PIVector functions; + PIVector members; + PIVector typedefs; + }; + + struct PIP_EXPORT Enum { + Enum(const PIString & n = PIString()) { + name = n; + } + PIString name; + PIVector members; + }; + + void parseFile(const PIString & file); + void parseFiles(const PIStringList & files); + + void includeDirectory(const PIString & dir) {includes << dir;} + void addDefine(const PIString & def_name, const PIString & def_value) {custom_defines << Define(def_name, def_value);} + bool isEnum(const PIString & name); + Entity * findEntityByName(const PIString & en); + + int macrosSubstitutionMaxIterations() const {return macros_iter;} + void setMacrosSubstitutionMaxIterations(int value) {macros_iter = value;} + + PIVector defines, custom_defines; + PIVector macros; + PIVector enums; + PIVector typedefs; + PIVector entities; + +private: + void clear(); + bool parseFileInternal(const PIString & file); + bool parseFileContent(PIString & fc); + bool parseDirective(PIString d); + Entity * parseClassDeclaration(const PIString & fc); + PIString parseClass(PIString & fc); + bool parseEnum(const PIString & name, PIString fc); + Typedef parseTypedef(PIString fc); + bool parseMember(Entity * parent, PIString & fc); + void restoreTmpTemp(Member * e); + bool macroCondition(const PIString & mif, PIString mifcond); + bool isDefineExists(const PIString & dn); + double defineValue(const PIString & dn); + PIString procMacros(PIString fc); + double procMacrosCond(PIString fc); + bool isDeclaration(const PIString & fc, int start, int * end); + void normalizeEntityNamespace(PIString & n); + + int macros_iter; + PIEvaluator evaluator; + //PIVector tree; + PISet proc_files; + PIString cur_file; + PIStringList includes; + Entity root_; + Visibility cur_def_vis; + PIString cur_namespace; + PIMap tmp_temp; + +}; + +#endif // PICODEPARSER_H diff --git a/_oldpip/pip_0.4.0_r5/picollection.cpp b/_oldpip/pip_0.4.0_r5/picollection.cpp new file mode 100644 index 0000000..ad64b69 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/picollection.cpp @@ -0,0 +1,49 @@ +#include "picollection.h" + + +/** \class PICollection + * \brief Interface to discover element groups + * \details + * \section PICollection_sec0 Synopsis + * This class has only static functions so no need to create instance of the + * %PICollection. This class provide macros to add some classes or existing + * objects to global collection and access to them from any place of the code. + * \snippet picollection.cpp main + * */ + + +PIStringList PICollection::groups() { + PIStringList sl; + piForeachC (Group & g, *_groups) + sl << g.name; + return sl; +} + + +PIVector PICollection::groupElements(const PIString & group) { + piForeachC (Group & g, *_groups) + if (g.name == group) + return g.elements; + return PIVector(); +} + + +void PICollection::addToGroup(const PIString & group, const PIObject * element) { + //piCout << "add to" << group << element; + PIString n = element->className(); + piForeach (Group & g, *_groups) + if (g.name == group) { + for (int i = 0; i < g.elements.size_s(); ++i) + if (PIString(g.elements[i]->className()) == n) + return; + g.elements << element; + //piCout << "new group" << group << ", ok"; + return; + } + *_groups << Group(group); + _groups->back().elements << element; + //piCout << "new group" << group << ", ok"; +} + +bool __PICollectionInitializer::_inited_(false); +PIVector * PICollection::_groups; diff --git a/_oldpip/pip_0.4.0_r5/picollection.h b/_oldpip/pip_0.4.0_r5/picollection.h new file mode 100644 index 0000000..b9f0488 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/picollection.h @@ -0,0 +1,94 @@ +/*! \file picollection.h + * \brief Custom elements collection +*/ +/* + PIP - Platform Independent Primitives + Peer - named I/O ethernet node, forming self-organized peering network + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +#ifndef PICOLLECTION_H +#define PICOLLECTION_H + +#include "piobject.h" + +#ifdef DOXYGEN + +/** \brief Add existing element "object" in group with name "group" + * \relatesalso PICollection + * \details If there is no group with name "group" it will be created. + * Only one element of the class "object" can be in group "group". If + * this is already exists nothing be happens. \n "object" should to + * be pointer to object based on PIObject. */ +# define ADD_TO_COLLECTION(group, object) + +/** \brief Add new element of class "class" in group with name "group" + * \relatesalso PICollection + * \details If there is no group with name "group" it will be created. + * Only one element of the class "class" can be in group "group". If + * this is already exists nothing be happens. \n "class" should to + * be name of the any class based on PIObject. */ +# define ADD_NEW_TO_COLLECTION(group, class) + +#else +# define ADD_TO_COLLECTION(group, object) static PICollection::CollectionAdder __##group##_##__LINE__##_##adder##__(#group, object); +# define ADD_NEW_TO_COLLECTION(group, class) static PICollection::CollectionAdder __##group##_##class##_##adder##__(#group, new class()); +#endif + +class PIP_EXPORT PICollection +{ + friend class __PICollectionInitializer; +public: + PICollection() {;} + + //! \brief Returns all existing groups by their names + static PIStringList groups(); + + //! \brief Returns all elements of group "group" + static PIVector groupElements(const PIString & group); + + static void addToGroup(const PIString & group, const PIObject * element); + + class CollectionAdder { + public: + CollectionAdder(const PIString & group, const PIObject * element) {PICollection::addToGroup(group, element);} + }; + +protected: + struct Group { + Group(const PIString & name_ = PIString()) {name = name_;} + //~Group() {piCout << "delete group" << name << this; piForeach (const PIObject * o, elements) delete o; elements.clear();} + PIString name; + PIVector elements; + }; + + static PIVector * _groups; + +}; + +class PIP_EXPORT __PICollectionInitializer { +public: + __PICollectionInitializer() { + if (_inited_) return; + _inited_ = true; + PICollection::_groups = new PIVector(); + } + static bool _inited_; +}; + +static __PICollectionInitializer __picollectioninitializer; + +#endif // PICOLLECTION_H diff --git a/_oldpip/pip_0.4.0_r5/piconfig.cpp b/_oldpip/pip_0.4.0_r5/piconfig.cpp new file mode 100644 index 0000000..15cd1d4 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/piconfig.cpp @@ -0,0 +1,601 @@ +/* + PIP - Platform Independent Primitives + Config parser + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +#include "piconfig.h" + +/*! \class PIConfig + * \brief Configuration file + * \details This class provide handle access to configuration file. + * + * \section PIConfig_sec0 Synopsis + * PIConfig reads configuration file and create internal dendritic + * representation of all entries of this file. You can easily read + * some values and write new. + * \image html piconfig.png + * + * %PIConfig supports also INI-style files with sections "[section]". + * In this case line with section name interpret as prefix to the next + * lines. For example, these configs are equal: + * \code + * ser.device = /dev/ttyS0 + * ser.speed = 115200 + * debug = true + * \endcode + * \code + * [ser] + * device = /dev/ttyS0 + * speed = 115200 + * [] + * debug = true + * \endcode + * + * \section PIConfig_sec1 Concepts + * Each node of internal tree has type PIConfig::Entry. %PIConfig + * has one root element \a rootEntry(). Any entry of configuration file is a + * child of this element. + * + */ + +/*! \class PIConfig::Entry + * \brief %Entry of configuration file + * \details This class is node of internal PIConfig tree. + * %Entry provide access to elements of PIConfig. Each entry has + * children or next properties: + * * name + * * value + * * type + * * comment + * + * Each property is a PIString. These properties forms from text line with + * format: \code{.cpp} = # \endcode + * Type and comment are optional fields. Type is a single letter immediately + * after comment symbol "#". \n \n + * %Entry has many implicit convertions to common types: boolean, integers, + * float, double, PIString, PIStringList. \n \n + * Generally there is no need to create instance of %PIConfig::Entry manually, + * it returns by functions \a getValue() of \a PIConfig, \a PIConfig::Entry or + * \a PIConfig::Branch. If there is no suitable entry to return, reference to + * internal instance of %PIConfig::Entry with "default" value will be returned. + * \snippet piconfig.cpp PIConfig::Entry + * +*/ + +/*! \class PIConfig::Branch + * \brief %Branch is a list of entries of configuration file + * \details %Branch provides some features to get entries lists. + * \snippet piconfig.cpp PIConfig::Branch + * +*/ + + +PIConfig::Entry PIConfig::Branch::_empty; +PIConfig::Entry PIConfig::Entry::_empty; + + +PIConfig::Branch PIConfig::Branch::allLeaves() { + Branch b; + b.delim = delim; + piForeach (Entry * i, *this) { + if (i->isLeaf()) b << i; + else allLeaves(b, i); + } + return b; +} + + +PIConfig::Entry & PIConfig::Branch::getValue(const PIString & vname, const PIString & def, bool * exist) { + if (vname.isEmpty()) { + _empty.clear(); + _empty.delim = delim; + if (exist != 0) *exist = false; + return _empty; + } + PIStringList tree = vname.split(delim); + PIString name = tree.front(); + tree.pop_front(); + Entry * ce = 0; + piForeach (Entry * i, *this) + if (i->_name == name) { + ce = i; + break; + } + if (ce == 0) { + _empty._name = vname; + _empty._value = def; + _empty.delim = delim; + if (exist != 0) *exist = false; + return _empty; + } + piForeach (PIString & i, tree) { + ce = ce->findChild(i); + if (ce == 0) { + _empty._name = vname; + _empty._value = def; + _empty.delim = delim; + if (exist != 0) *exist = false; + return _empty; + } + } + if (exist != 0) *exist = true; + return *ce; +} + + +PIConfig::Branch PIConfig::Branch::getValues(const PIString & name) { + Branch b; + b.delim = delim; + piForeach (Entry * i, *this) { + if (i->isLeaf()) { + if (i->_name.find(name) >= 0) + b << i; + } else { + piForeach (Entry * j, i->_children) + if (j->_name.find(name) >= 0) + b << j; + } + } + return b; +} + + +PIConfig::Branch PIConfig::Branch::getLeaves() { + Branch b; + b.delim = delim; + piForeach (Entry * i, *this) + if (i->isLeaf()) + b << i; + return b; +} + + +PIConfig::Branch PIConfig::Branch::getBranches() { + Branch b; + b.delim = delim; + piForeach (Entry * i, *this) + if (!i->isLeaf()) + b << i; + return b; +} + + +PIConfig::Branch & PIConfig::Branch::filter(const PIString & f) { + for (int i = 0; i < size_s(); ++i) { + if (at(i)->_name.find(f) < 0) { + remove(i); + --i; + } + } + return *this; +} + + +bool PIConfig::Branch::entryExists(const Entry * e, const PIString & name) const { + if (e->_children.isEmpty()) { + if (e->_name == name) return true; + else return false; + } + piForeachC (Entry * i, e->_children) + if (entryExists(i, name)) return true; + return false; +} + + +PIConfig::Entry & PIConfig::Entry::getValue(const PIString & vname, const PIString & def, bool * exist) { + PIStringList tree = vname.split(delim); + Entry * ce = this; + piForeach (PIString & i, tree) { + ce = ce->findChild(i); + if (ce == 0) { + _empty._name = vname; + _empty._value = def; + _empty.delim = delim; + if (exist != 0) *exist = false; + return _empty; + } + } + if (exist != 0) *exist = true; + return *ce; +} + + +PIConfig::Branch PIConfig::Entry::getValues(const PIString & vname) { + Branch b; + b.delim = delim; + piForeach (Entry * i, _children) + if (i->_name.find(vname) >= 0) + b << i; + return b; +}; + + +bool PIConfig::Entry::entryExists(const Entry * e, const PIString & name) const { + if (e->_children.isEmpty()) { + if (e->_name == name) return true; + else return false; + } + piForeachC (Entry * i, e->_children) + if (entryExists(i, name)) return true; + return false; +} + + +PIConfig::PIConfig(const PIString & path, PIIODevice::DeviceMode mode): PIFile(path, mode) { + delim = "."; + root.delim = delim; + empty.delim = delim; + empty._parent = 0; + if (!isOpened()) + open(path, mode); + parse(); +} + + +PIConfig::Entry & PIConfig::getValue(const PIString & vname, const PIString & def, bool * exist) { + PIStringList tree = vname.split(delim); + Entry * ce = &root; + piForeach (PIString & i, tree) { + ce = ce->findChild(i); + if (ce == 0) { + if (exist != 0) *exist = false; + empty._name = vname; + empty._value = def; + empty.delim = delim; + return empty; + } + } + if (exist != 0) *exist = true; + return *ce; +} + + +PIConfig::Branch PIConfig::getValues(const PIString & vname) { + Branch b; + b.delim = delim; + piForeach (Entry * i, root._children) + if (i->_name.find(vname) >= 0) + b << i; + return b; +}; + + +void PIConfig::addEntry(const PIString & name, const PIString & value, const PIString & type, bool write) { + if (getValue(name)._parent != 0) + return; + bool toRoot = false; + PIStringList tree = name.split(delim); + PIString ename = tree.back(); + tree.pop_back(); + Entry * te, * ce, * entry = &root; + if (tree.isEmpty()) toRoot = true; + piForeach (PIString & i, tree) { + te = entry->findChild(i); + if (te == 0) { + ce = new Entry(); + ce->delim = delim; + ce->_tab = entry->_tab; + ce->_line = entry->_line; + ce->_name = i; + ce->_parent = entry; + entry->_children << ce; + entry = ce; + } else entry = te; + } + PIConfig::Branch ch = entry->_children; + ch.sort(PIConfig::Entry::compare); + te = (entry->isLeaf() ? 0 : ch.back()); + ce = new Entry(); + ce->delim = delim; + ce->_name = ename; + ce->_value = value; + ce->_type = type; + if (te == 0) { + ce->_tab = entry->_tab; + if (toRoot) ce->_line = other.size_s() - 1; + else ce->_line = entry->_line; + } else { + ce->_tab = te->_tab; + if (toRoot) ce->_line = other.size_s() - 1; + else { + ch = entry->_parent->_children; + ch.sort(PIConfig::Entry::compare); + ce->_line = ch.back()->_line + 1; + } + } + ce->_parent = entry; + entry->_children << ce; + other.insert(ce->_line, ""); + Branch b = allLeaves(); + bool found = false; + for (int i = 0; i < b.size_s(); ++i) { + if (found) { + b[i]->_line++; + continue; + } + if (b[i] == ce) { + found = true; + if (i > 0) + if (b[i - 1]->_line == b[i]->_line) + b[i - 1]->_line++; + } + } + if (write) writeAll(); +} + + +void PIConfig::setValue(const PIString & name, const PIString & value, const PIString & type, bool write) { + Entry & e(getValue(name)); + if (&e == &empty) { + addEntry(name, value, type, write); + return; + } + e._value = value; + e._type = type; + if (write) writeAll(); +} + + +int PIConfig::entryIndex(const PIString & name) { + PIStringList tree = name.split(delim); + Entry * ce = &root; + piForeach (PIString & i, tree) { + ce = ce->findChild(i); + if (ce == 0) + return -1; + } + Branch b = allLeaves(); + return allLeaves().indexOf(ce); +} + + +void PIConfig::setValue(uint number, const PIString & value, bool write) { + Entry & e(entryByIndex(number)); + if (&e == &empty) return; + e._value = value; + if (write) writeAll(); +} + + +void PIConfig::setName(uint number, const PIString & name, bool write) { + Entry & e(entryByIndex(number)); + if (&e == &empty) return; + e._name = name; + if (write) writeAll(); +} + + +void PIConfig::setType(uint number, const PIString & type, bool write) { + Entry & e(entryByIndex(number)); + if (&e == &empty) return; + e._type = type; + if (write) writeAll(); +} + + +void PIConfig::setComment(uint number, const PIString & comment, bool write) { + Entry & e(entryByIndex(number)); + if (&e == &empty) return; + e._comment = comment; + if (write) writeAll(); +} + + +void PIConfig::removeEntry(const PIString & name, bool write) { + Entry & e(getValue(name)); + if (&e == &empty) return; + Branch b = allLeaves(); + removeEntry(b, &e); + if (write) writeAll(); +} + + +void PIConfig::removeEntry(uint number, bool write) { + Entry & e(entryByIndex(number)); + if (&e == &empty) return; + Branch b = allLeaves(); + removeEntry(b, &e); + if (write) writeAll(); +} + + +void PIConfig::removeEntry(Branch & b, PIConfig::Entry * e) { + bool leaf = true; + if (e->isLeaf()) other.remove(e->_line); + if (!e->isLeaf() && !e->_value.isEmpty()) { + e->_value.clear(); + leaf = false; + } else { + int cc = e->_children.size_s(); + piForTimes (cc) + removeEntry(b, e->_children.back()); + } + bool found = false; + for (int i = 0; i < b.size_s(); ++i) { + if (found) { + b[i]->_line--; + continue; + } + if (b[i] == e) found = true; + } + if (!leaf) return; + e->_parent->_children.removeOne(e); + b.removeOne(e); + delete e; +} + + +PIString PIConfig::getPrefixFromLine(PIString line, bool * exists) { + line.trim(); + if (line.left(1) == "#") {if (exists) *exists = false; return PIString();} + int ci = line.find("#"); + if (ci >= 0) line.cutRight(line.size() - ci); + if (line.find("=") >= 0) {if (exists) *exists = false; return PIString();} + if (line.find("[") >= 0 && line.find("]") >= 0) { + if (exists) *exists = true; + return line.takeRange('[', ']').trim(); + } + if (exists) *exists = false; + return PIString(); +} + + +void PIConfig::writeAll() { + //cout << this << " write < " << size() << endl; + PIFile::clear(); + //*this << "1234567894132456798\n"; return; + //writeEntry(&root); + buildFullNames(&root); + Branch b = allLeaves(); + PIString prefix, tprefix; + bool isPrefix; + //for (int i = 0; i < b.size_s(); ++i) + // cout << b[i]->_name << " = " << b[i]->_value << endl; + int j = 0; + for (int i = 0; i < other.size_s(); ++i) { + //cout << j << endl; + if (j >= 0 && j < b.size_s()) { + if (b[j]->_line == i) { + b[j]->buildLine(); + *this << (b[j]->_all).cutLeft(prefix.size()) << '\n'; + //cout << this << " " << b[j]->_all << endl; + ++j; + } else { + *this << other[i]; + tprefix = getPrefixFromLine(other[i], &isPrefix); + if (isPrefix) { + prefix = tprefix; + if (!prefix.isEmpty()) + prefix += delim; + } + if (i < other.size_s() - 1) *this << '\n'; + //cout << this << " " << other[i] << endl; + } + } else { + *this << other[i]; + tprefix = getPrefixFromLine(other[i], &isPrefix); + if (isPrefix) { + prefix = tprefix; + if (!prefix.isEmpty()) + prefix += delim; + } + if (i < other.size_s() - 1) *this << '\n'; + //cout << this << " " << other[i] << endl; + } + } + flush(); + readAll(); + //cout << this << " write > " << size() << endl; +} + + +void PIConfig::readAll() { + root.deleteBranch(); + root.clear(); + parse(); +} + + +bool PIConfig::entryExists(const Entry * e, const PIString & name) const { + if (e->_children.isEmpty()) { + if (e->_name == name) return true; + else return false; + } + piForeachC (Entry * i, e->_children) + if (entryExists(i, name)) return true; + return false; +} + + +void PIConfig::parse() { + PIString src, str, tab, comm, all, name, type, prefix, tprefix; + PIStringList tree; + Entry * entry, * te, * ce; + int ind, sind; + bool isNew, isPrefix; + if (!isOpened()) return; + seekToBegin(); + other.clear(); + lines = centry = 0; + while (!isEnd()) { + other.push_back(PIString()); + src = str = readLine(); + tprefix = getPrefixFromLine(src, &isPrefix); + if (isPrefix) { + prefix = tprefix; + if (!prefix.isEmpty()) + prefix += delim; + } + tab = str.left(str.find(str.trimmed().left(1))); + str.trim(); + //cout << endl << str << endl << endl; + all = str; + ind = str.find('='); + if ((ind > 0) && !(str[0] == '#')) { + sind = str.find('#'); + if (sind > 0) { + comm = str.right(str.length() - sind - 1).trimmed(); + if (comm.length() > 0) type = comm[0]; + else type = "s"; + comm = comm.right(comm.length() - 1).trimmed(); + str = str.left(sind); + } else { + type = "s"; + comm = ""; + } + //name = str.left(ind).trimmed(); + tree = (prefix + str.left(ind).trimmed()).split(delim); + name = tree.back(); + tree.pop_back(); + entry = &root; + piForeachC (PIString & i, tree) { + te = entry->findChild(i); + if (te == 0) { + ce = new Entry(); + ce->delim = delim; + ce->_tab = tab; + ce->_line = lines; + ce->_name = i; + ce->_parent = entry; + entry->_children << ce; + entry = ce; + } else entry = te; + } + isNew = false; + ce = entry->findChild(name); + if (ce == 0) { + ce = new Entry(); + isNew = true; + } + ce->delim = delim; + ce->_tab = tab; + ce->_name = name; + ce->_value = str.right(str.length() - ind - 1).trimmed(); + ce->_type = type; + ce->_comment = comm; + ce->_line = lines; + ce->_all = all; + if (isNew) { + ce->_parent = entry; + entry->_children << ce; + } + } else other.back() = src; + lines++; + } + setEntryDelim(&root, delim); + buildFullNames(&root); +} diff --git a/_oldpip/pip_0.4.0_r5/piconfig.h b/_oldpip/pip_0.4.0_r5/piconfig.h new file mode 100644 index 0000000..951bbd6 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/piconfig.h @@ -0,0 +1,502 @@ +/*! \file piconfig.h + * \brief Configuration file +*/ +/* + PIP - Platform Independent Primitives + Config parser + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +#ifndef PICONFIG_H +#define PICONFIG_H + +#include "pifile.h" + +#define PICONFIG_GET_VALUE \ + Entry & getValue(const PIString & vname, const char * def, bool * exists = 0) {return getValue(vname, PIString(def), exists);} \ + Entry & getValue(const PIString & vname, const PIStringList & def, bool * exists = 0) {return getValue(vname, def.join("%|%"), exists);} \ + Entry & getValue(const PIString & vname, const bool def, bool * exists = 0) {return getValue(vname, PIString::fromBool(def), exists);} \ + Entry & getValue(const PIString & vname, const short def, bool * exists = 0) {return getValue(vname, itos(def), exists);} \ + Entry & getValue(const PIString & vname, const int def, bool * exists = 0) {return getValue(vname, itos(def), exists);} \ + Entry & getValue(const PIString & vname, const long def, bool * exists = 0) {return getValue(vname, ltos(def), exists);} \ + Entry & getValue(const PIString & vname, const uchar def, bool * exists = 0) {return getValue(vname, uitos(def), exists);} \ + Entry & getValue(const PIString & vname, const ushort def, bool * exists = 0) {return getValue(vname, uitos(def), exists);} \ + Entry & getValue(const PIString & vname, const uint def, bool * exists = 0) {return getValue(vname, uitos(def), exists);} \ + Entry & getValue(const PIString & vname, const ulong def, bool * exists = 0) {return getValue(vname, ultos(def), exists);} \ + Entry & getValue(const PIString & vname, const float def, bool * exists = 0) {return getValue(vname, ftos(def), exists);} \ + Entry & getValue(const PIString & vname, const double def, bool * exists = 0) {return getValue(vname, dtos(def), exists);} \ + \ + Entry & getValue(const PIString & vname, const char * def, bool * exists = 0) const {return getValue(vname, PIString(def), exists);} \ + Entry & getValue(const PIString & vname, const PIStringList & def, bool * exists = 0) const {return getValue(vname, def.join("%|%"), exists);} \ + Entry & getValue(const PIString & vname, const bool def, bool * exists = 0) const {return getValue(vname, PIString::fromBool(def), exists);} \ + Entry & getValue(const PIString & vname, const short def, bool * exists = 0) const {return getValue(vname, itos(def), exists);} \ + Entry & getValue(const PIString & vname, const int def, bool * exists = 0) const {return getValue(vname, itos(def), exists);} \ + Entry & getValue(const PIString & vname, const long def, bool * exists = 0) const {return getValue(vname, ltos(def), exists);} \ + Entry & getValue(const PIString & vname, const uchar def, bool * exists = 0) const {return getValue(vname, uitos(def), exists);} \ + Entry & getValue(const PIString & vname, const ushort def, bool * exists = 0) const {return getValue(vname, uitos(def), exists);} \ + Entry & getValue(const PIString & vname, const uint def, bool * exists = 0) const {return getValue(vname, uitos(def), exists);} \ + Entry & getValue(const PIString & vname, const ulong def, bool * exists = 0) const {return getValue(vname, ultos(def), exists);} \ + Entry & getValue(const PIString & vname, const float def, bool * exists = 0) const {return getValue(vname, ftos(def), exists);} \ + Entry & getValue(const PIString & vname, const double def, bool * exists = 0) const {return getValue(vname, dtos(def), exists);} + +class PIP_EXPORT PIConfig: public PIFile +{ + friend class Entry; + friend class Branch; +public: + + //! Contructs and read configuration file at path "path" in mode "mode" + PIConfig(const PIString & path, PIIODevice::DeviceMode mode = PIIODevice::ReadWrite); + + ~PIConfig() {root.deleteBranch(); close();} + + class Entry; + + + class PIP_EXPORT Branch: public PIVector { + friend class PIConfig; + friend class Entry; + friend std::ostream & operator <<(std::ostream & s, const Branch & v); + friend PICout operator <<(PICout s, const Branch & v); + public: + Branch() {;} + + Entry & getValue(const PIString & vname, const PIString & def = PIString(), bool * exists = 0); + Entry & getValue(const PIString & vname, const PIString & def = PIString(), bool * exists = 0) const {return const_cast(this)->getValue(vname, def, exists);} + PICONFIG_GET_VALUE + + Branch allLeaves(); + Branch getValues(const PIString & name); + Branch getLeaves(); + Branch getBranches(); + Branch & filter(const PIString & f); + bool isEntryExists(const PIString & name) const {piForeachC (Entry * i, *this) if (entryExists(i, name)) return true; return false;} + int indexOf(const Entry * e) {for (int i = 0; i < size_s(); ++i) if (at(i) == e) return i; return -1;} + + //void clear() {piForeach (Entry * i, *this) delete i; PIVector::clear();} + + private: + bool entryExists(const Entry * e, const PIString & name) const; + void allLeaves(Branch & b, Entry * e) {piForeach (Entry * i, e->_children) {if (i->isLeaf()) b << i; else allLeaves(b, i);}} + void coutt(std::ostream & s, const PIString & p) const {piForeachC (Entry * i, *this) i->coutt(s, p);} + void piCoutt(PICout s, const PIString & p) const {piForeachC (Entry * i, *this) i->piCoutt(s, p);} + + static Entry _empty; + PIString delim; + + }; + + + class PIP_EXPORT Entry { + friend class PIConfig; + friend class Branch; + public: + Entry() {_parent = 0;} + + //! Returns parent entry, or 0 if there is no parent (root of default value) + Entry * parent() const {return _parent;} + + //! Returns children count + int childCount() const {return _children.size_s();} + + //! Returns children as \a PIConfig::Branch + Branch & children() const {_children.delim = delim; return _children;} + + //! Returns child at index "index" + Entry * child(const int index) const {return _children[index];} + + //! Returns first child with name "name" + Entry * findChild(const PIString & name) {piForeach (Entry * i, _children) if (i->_name == name) return i; return 0;} + + //! Returns first child with name "name" + const Entry * findChild(const PIString & name) const {piForeachC (Entry * i, _children) if (i->_name == name) return i; return 0;} + + //! Returns \b true if there is no children + bool isLeaf() const {return _children.isEmpty();} + + + //! Returns name + const PIString & name() const {return _name;} + + //! Returns value + const PIString & value() const {return _value;} + + //! Returns type + const PIString & type() const {return _type;} + + //! Returns comment + const PIString & comment() const {return _comment;} + + /** \brief Returns full name, i.e. name as it looks in file + * \details In case of default entry full name always is empty + * \snippet piconfig.cpp fullName */ + const PIString & fullName() const {return _full_name;} + + //! Set name to "value" and returns this + Entry & setName(const PIString & value) {_name = value; return *this;} + + //! Set type to "value" and returns this + Entry & setType(const PIString & value) {_type = value; return *this;} + + //! Set comment to "value" and returns this + Entry & setComment(const PIString & value) {_comment = value; return *this;} + + //! Set value to "value" and returns this + Entry & setValue(const PIString & value) {_value = value; return *this;} + + //! Set value to "value" and returns this. Type is set to "l" + Entry & setValue(const PIStringList & value) {setValue(value.join("%|%")); setType("l"); return *this;} + + //! Set value to "value" and returns this. Type is set to "s" + Entry & setValue(const char * value) {setValue(PIString(value)); setType("s"); return *this;} + + //! Set value to "value" and returns this. Type is set to "b" + Entry & setValue(const bool value) {setValue(btos(value)); setType("b"); return *this;} + + //! Set value to "value" and returns this. Type is set to "s" + Entry & setValue(const char value) {setValue(PIString(1, value)); setType("s"); return *this;} + + //! Set value to "value" and returns this. Type is set to "n" + Entry & setValue(const short value) {setValue(itos(value)); setType("n"); return *this;} + + //! Set value to "value" and returns this. Type is set to "n" + Entry & setValue(const int value) {setValue(itos(value)); setType("n"); return *this;} + + //! Set value to "value" and returns this. Type is set to "n" + Entry & setValue(const long value) {setValue(ltos(value)); setType("n"); return *this;} + + //! Set value to "value" and returns this. Type is set to "n" + Entry & setValue(const uchar value) {setValue(uitos(value)); setType("n"); return *this;} + + //! Set value to "value" and returns this. Type is set to "n" + Entry & setValue(const ushort value) {setValue(uitos(value)); setType("n"); return *this;} + + //! Set value to "value" and returns this. Type is set to "n" + Entry & setValue(const uint value) {setValue(uitos(value)); setType("n"); return *this;} + + //! Set value to "value" and returns this. Type is set to "n" + Entry & setValue(const ulong value) {setValue(ultos(value)); setType("n"); return *this;} + + //! Set value to "value" and returns this. Type is set to "f" + Entry & setValue(const float value) {setValue(ftos(value)); setType("f"); return *this;} + + //! Set value to "value" and returns this. Type is set to "f" + Entry & setValue(const double value) {setValue(dtos(value)); setType("f"); return *this;} + + + /** \brief Returns entry with name "vname" and default value "def" + * \details If there is no suitable entry found, reference to default internal entry with + * value = "def" will be returned, and if "exists" not null it will be set to \b false */ + Entry & getValue(const PIString & vname, const PIString & def = PIString(), bool * exists = 0); + Entry & getValue(const PIString & vname, const PIString & def = PIString(), bool * exists = 0) const {return const_cast(this)->getValue(vname, def, exists);} + PICONFIG_GET_VALUE + + //! \fn Entry & getValue(const PIString & vname, const char * def, bool * exists = 0) + //! \brief Returns entry with name "vname" and default value "def" + + //! \fn Entry & getValue(const PIString & vname, const char * def, bool * exists = 0) + //! \brief Returns entry with name "vname" and default value "def" + + //! \fn Entry & getValue(const PIString & vname, const PIStringList & def, bool * exists = 0) + //! \brief Returns entry with name "vname" and default value "def" + + //! \fn Entry & getValue(const PIString & vname, const bool def, bool * exists = 0) + //! \brief Returns entry with name "vname" and default value "def" + + //! \fn Entry & getValue(const PIString & vname, const short def, bool * exists = 0) + //! \brief Returns entry with name "vname" and default value "def" + + //! \fn Entry & getValue(const PIString & vname, const int def, bool * exists = 0) + //! \brief Returns entry with name "vname" and default value "def" + + //! \fn Entry & getValue(const PIString & vname, const long def, bool * exists = 0) + //! \brief Returns entry with name "vname" and default value "def" + + //! \fn Entry & getValue(const PIString & vname, const uchar def, bool * exists = 0) + //! \brief Returns entry with name "vname" and default value "def" + + //! \fn Entry & getValue(const PIString & vname, const ushort def, bool * exists = 0) + //! \brief Returns entry with name "vname" and default value "def" + + //! \fn Entry & getValue(const PIString & vname, const uint def, bool * exists = 0) + //! \brief Returns entry with name "vname" and default value "def" + + //! \fn Entry & getValue(const PIString & vname, const ulong def, bool * exists = 0) + //! \brief Returns entry with name "vname" and default value "def" + + //! \fn Entry & getValue(const PIString & vname, const float def, bool * exists = 0) + //! \brief Returns entry with name "vname" and default value "def" + + //! \fn Entry & getValue(const PIString & vname, const double def, bool * exists = 0) + //! \brief Returns entry with name "vname" and default value "def" + + + //! Find all entries with names with substrings "vname" and returns them as \a PIConfig::Branch + Branch getValues(const PIString & vname); + + + //! If there is no children returns if name == "name". Else returns if any child has name == "name" + bool isEntryExists(const PIString & name) const {return entryExists(this, name);} + + + //! Convertion to boolean + operator bool() {return _value.toBool();} + + //! Convertion to char + operator char() {return (_value.isEmpty() ? 0 : _value[0].toAscii());} + + //! Convertion to short + operator short() {return _value.toShort();} + + //! Convertion to int + operator int() {return _value.toInt();} + + //! Convertion to long + operator long() {return _value.toLong();} + + //! Convertion to uchar + operator uchar() {return _value.toInt();} + + //! Convertion to ushort + operator ushort() {return _value.toShort();} + + //! Convertion to uint + operator uint() {return _value.toInt();} + + //! Convertion to ulong + operator ulong() {return _value.toLong();} + + //! Convertion to float + operator float() {return _value.toFloat();} + + //! Convertion to double + operator double() {return _value.toDouble();} + + //! Convertion to PIString + operator PIString() {return _value;} + + //! Convertion to PIStringList + operator PIStringList() {return _value.split("%|%");} + + private: + typedef PIConfig::Entry * EntryPtr; + static int compare(const EntryPtr * f, const EntryPtr * s) {return (*f)->_line == (*s)->_line ? 0 : (*f)->_line < (*s)->_line ? -1 : 1;} + bool entryExists(const Entry * e, const PIString & name) const; + void buildLine() {_all = _tab + _full_name + " = " + _value + " #" + _type + " " + _comment;} + void clear() {_children.clear(); _name = _value = _type = _comment = _all = PIString(); _line = 0; _parent = 0;} + void coutt(std::ostream & s, const PIString & p) const {PIString nl = p + " "; if (!_value.isEmpty()) s << p << _name << " = " << _value << endl; else cout << p << _name << endl; piForeachC (Entry * i, _children) i->coutt(s, nl);} + void piCoutt(PICout s, const PIString & p) const {PIString nl = p + " "; if (!_value.isEmpty()) s << p << _name << " = " << _value << NewLine; else cout << p << _name << endl; piForeachC (Entry * i, _children) i->piCoutt(s, nl);} + void deleteBranch() {piForeach (Entry * i, _children) {i->deleteBranch(); delete i;}} + + static Entry _empty; + Entry * _parent; + mutable Branch _children; + PIString _tab; + PIString _name; + PIString _value; + PIString _type; + PIString _comment; + PIString _all; + PIString _full_name; + PIString delim; + int _line; + }; + + + //! Returns top-level entry with name "vname", if doesn`t exists return entry with value "def" and set *exist to false + Entry & getValue(const PIString & vname, const PIString & def = PIString(), bool * exists = 0); + Entry & getValue(const PIString & vname, const PIString & def = PIString(), bool * exists = 0) const {return const_cast(this)->getValue(vname, def, exists);} + + PICONFIG_GET_VALUE + + //! \fn Entry & getValue(const PIString & vname, const char * def, bool * exists = 0) + //! \brief Returns top-level entry with name "vname" and default value "def" + + //! \fn Entry & getValue(const PIString & vname, const char * def, bool * exists = 0) + //! \brief Returns top-level entry with name "vname" and default value "def" + + //! \fn Entry & getValue(const PIString & vname, const PIStringList & def, bool * exists = 0) + //! \brief Returns top-level entry with name "vname" and default value "def" + + //! \fn Entry & getValue(const PIString & vname, const bool def, bool * exists = 0) + //! \brief Returns top-level entry with name "vname" and default value "def" + + //! \fn Entry & getValue(const PIString & vname, const short def, bool * exists = 0) + //! \brief Returns top-level entry with name "vname" and default value "def" + + //! \fn Entry & getValue(const PIString & vname, const int def, bool * exists = 0) + //! \brief Returns top-level entry with name "vname" and default value "def" + + //! \fn Entry & getValue(const PIString & vname, const long def, bool * exists = 0) + //! \brief Returns top-level entry with name "vname" and default value "def" + + //! \fn Entry & getValue(const PIString & vname, const uchar def, bool * exists = 0) + //! \brief Returns top-level entry with name "vname" and default value "def" + + //! \fn Entry & getValue(const PIString & vname, const ushort def, bool * exists = 0) + //! \brief Returns top-level entry with name "vname" and default value "def" + + //! \fn Entry & getValue(const PIString & vname, const uint def, bool * exists = 0) + //! \brief Returns top-level entry with name "vname" and default value "def" + + //! \fn Entry & getValue(const PIString & vname, const ulong def, bool * exists = 0) + //! \brief Returns top-level entry with name "vname" and default value "def" + + //! \fn Entry & getValue(const PIString & vname, const float def, bool * exists = 0) + //! \brief Returns top-level entry with name "vname" and default value "def" + + //! \fn Entry & getValue(const PIString & vname, const double def, bool * exists = 0) + //! \brief Returns top-level entry with name "vname" and default value "def" + + + //! Returns top-level entries with names with substrings "vname" + Branch getValues(const PIString & vname); + + + //! Set top-level entry with name "name" value to "value", type to "type" and if "write" immediate write to file. Add new entry if there is no suitable exists + void setValue(const PIString & name, const PIString & value, const PIString & type = "s", bool write = true); + + //! Set top-level entry with name "name" value to "value", type to "l" and if "write" immediate write to file. Add new entry if there is no suitable exists + void setValue(const PIString & name, const PIStringList & value, bool write = true) {setValue(name, value.join("%|%"), "l", write);} + + //! Set top-level entry with name "name" value to "value", type to "s" and if "write" immediate write to file. Add new entry if there is no suitable exists + void setValue(const PIString & name, const char * value, bool write = true) {setValue(name, PIString(value), "s", write);} + + //! Set top-level entry with name "name" value to "value", type to "b" and if "write" immediate write to file. Add new entry if there is no suitable exists + void setValue(const PIString & name, const bool value, bool write = true) {setValue(name, btos(value), "b", write);} + + //! Set top-level entry with name "name" value to "value", type to "n" and if "write" immediate write to file. Add new entry if there is no suitable exists + void setValue(const PIString & name, const short value, bool write = true) {setValue(name, itos(value), "n", write);} + + //! Set top-level entry with name "name" value to "value", type to "n" and if "write" immediate write to file. Add new entry if there is no suitable exists + void setValue(const PIString & name, const int value, bool write = true) {setValue(name, itos(value), "n", write);} + + //! Set top-level entry with name "name" value to "value", type to "n" and if "write" immediate write to file. Add new entry if there is no suitable exists + void setValue(const PIString & name, const long value, bool write = true) {setValue(name, ltos(value), "n", write);} + + //! Set top-level entry with name "name" value to "value", type to "n" and if "write" immediate write to file. Add new entry if there is no suitable exists + void setValue(const PIString & name, const uchar value, bool write = true) {setValue(name, uitos(value), "n", write);} + + //! Set top-level entry with name "name" value to "value", type to "n" and if "write" immediate write to file. Add new entry if there is no suitable exists + void setValue(const PIString & name, const ushort value, bool write = true) {setValue(name, uitos(value), "n", write);} + + //! Set top-level entry with name "name" value to "value", type to "n" and if "write" immediate write to file. Add new entry if there is no suitable exists + void setValue(const PIString & name, const uint value, bool write = true) {setValue(name, uitos(value), "n", write);} + + //! Set top-level entry with name "name" value to "value", type to "n" and if "write" immediate write to file. Add new entry if there is no suitable exists + void setValue(const PIString & name, const ulong value, bool write = true) {setValue(name, ultos(value), "n", write);} + + //! Set top-level entry with name "name" value to "value", type to "f" and if "write" immediate write to file. Add new entry if there is no suitable exists + void setValue(const PIString & name, const float value, bool write = true) {setValue(name, ftos(value), "f", write);} + + //! Set top-level entry with name "name" value to "value", type to "f" and if "write" immediate write to file. Add new entry if there is no suitable exists + void setValue(const PIString & name, const double value, bool write = true) {setValue(name, dtos(value), "f", write);} + + //! Returns root entry + Entry & rootEntry() {return root;} + + //! Returns top-level entries count + int entriesCount() const {return childCount(&root);} + + //! Returns if top-level entry with name "name" exists + bool isEntryExists(const PIString & name) const {return entryExists(&root, name);} + + //! Returns all top-level entries + Branch allTree() {Branch b; piForeach (Entry * i, root._children) b << i; b.delim = delim; return b;} + + //! Returns all entries without children + Branch allLeaves() {Branch b; allLeaves(b, &root); b.sort(Entry::compare); b.delim = delim; return b;} + + int entryIndex(const PIString & name); + + PIString getName(uint number) {return entryByIndex(number)._name;} + PIString getValue(uint number) {return entryByIndex(number)._value;} + PIChar getType(uint number) {return entryByIndex(number)._type[0];} + PIString getComment(uint number) {return entryByIndex(number)._comment;} + + void addEntry(const PIString & name, const PIString & value, const PIString & type = "s", bool write = true); + void setName(uint number, const PIString & name, bool write = true); + void setValue(uint number, const PIString & value, bool write = true); + void setType(uint number, const PIString & type, bool write = true); + void setComment(uint number, const PIString & comment, bool write = true); + + void removeEntry(const PIString & name, bool write = true); + void removeEntry(uint number, bool write = true); + + //! Remove all tree and file content + void clear() {PIFile::clear(); parse();} + + //! Parse file and build internal tree + void readAll(); + + //! Write all internal tree to file + void writeAll(); + + //! Returns current tree delimiter, default "." + const PIString & delimiter() const {return delim;} + + //! Set current tree delimiter + void setDelimiter(const PIString & d) {delim = d; setEntryDelim(&root, d); readAll();} + +private: + int childCount(const Entry * e) const {int c = 0; piForeachC (Entry * i, e->_children) c += childCount(i); c += e->_children.size_s(); return c;} + bool entryExists(const Entry * e, const PIString & name) const; + void buildFullNames(Entry * e) {piForeach (Entry * i, e->_children) {if (e != &root) i->_full_name = e->_full_name + delim + i->_name; else i->_full_name = i->_name; buildFullNames(i);}} + void allLeaves(Branch & b, Entry * e) {piForeach (Entry * i, e->_children) {if ((!i->_value.isEmpty() && !i->isLeaf()) || i->isLeaf()) b << i; allLeaves(b, i);}} + void setEntryDelim(Entry * e, const PIString & d) {piForeach (Entry * i, e->_children) setEntryDelim(i, d); e->delim = d;} + Entry & entryByIndex(const int index) {Branch b = allLeaves(); if (index < 0 || index >= b.size_s()) return empty; return *(b[index]);} + void removeEntry(Branch & b, Entry * e); + void deleteEntry(Entry * e) {piForeach (Entry * i, e->_children) deleteEntry(i); delete e;} + PIString getPrefixFromLine(PIString line, bool * exists); + void parse(); + + int centry; + PIString delim; + Entry root, empty; + uint lines; + PIStringList other; + +}; + + +inline std::ostream & operator <<(std::ostream & s, const PIConfig::Branch & v) {v.coutt(s, ""); return s;} +inline std::ostream & operator <<(std::ostream & s, const PIConfig::Entry & v) {s << v.value(); return s;} +inline PICout operator <<(PICout s, const PIConfig::Branch & v) {s.setControl(0, true); v.piCoutt(s, ""); s.restoreControl(); return s;} +inline PICout operator <<(PICout s, const PIConfig::Entry & v) {s << v.value(); return s;} + + +/** \relatesalso PIConfig \relatesalso PIIODevice + * \brief Service function. useful for configuring devices + * \details Function takes entry name "name", default value "def" and two + * \a PIConfig::Entry sections: "em" and their parent "ep". If there is no + * parent ep = 0. If "ep" is not null and entry "name" exists in "ep" function + * returns this value. Else returns value of entry "name" in section "em" or + * "def" if entry doesn`t exists. \n This function useful to read settings + * from configuration file in implementation \a PIIODevice::configureDevice() function */ +template +T readDeviceSetting(const PIString & name, const T & def, const PIConfig::Entry * em, const PIConfig::Entry * ep) { + if (ep != 0) { + T ret; + bool ex; + ret = ep->getValue(name, def, &ex); + if (!ex) ret = em->getValue(name, def); + return ret; + } + return em->getValue(name, def); + +} + +#endif // PICONFIG_H diff --git a/_oldpip/pip_0.4.0_r5/piconnection.cpp b/_oldpip/pip_0.4.0_r5/piconnection.cpp new file mode 100644 index 0000000..fcc3d2f --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/piconnection.cpp @@ -0,0 +1,764 @@ +/* + PIP - Platform Independent Primitives + Complex I/O point + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +#include "piconnection.h" +#include "piconfig.h" + +/** \class PIConnection + * \brief Complex Input/Output point + * + * \section PIConnection_synopsis Synopsis + * %PIConnection provides abstract layer over physical devices, + * filtering and connecting data streams. Each %PIConnection + * works through Device Pool, so several %PIConnections can + * read from single physical device. General scheme: + * \image html piconnection.png + * + * \section PIConnection_pool Device pool concept + * Device pool is static object, single for each application, which + * contains unique devices. Each %PIConnection works with real devices + * through Device pool. Each device has assosiated thread for read + * and it can be started or stopped with %PIConnection functions + * \a startThreadedRead() and \a stopThreadedRead(). + * + * \section PIConnection_config Configuration + * You can create %PIConnection from config file section or configure + * it later with function \a configureFromConfig(). Devices describes + * with its full pathes, for details see \ref PIIODevice_sec7. Example: + * \image html piconnection_conf.png + * +*/ + + +PIVector PIConnection::_connections; + + +PIConnection::PIConnection(): PIObject() { + _connections << this; +} + + +PIConnection::PIConnection(const PIString & config, const PIString & name_): PIObject(name_) { + _connections << this; + configureFromConfig(config, name_); +} + + +PIConnection::~PIConnection() { + __device_pool__->unboundConnection(this); + removeAllFilters(); + _connections.removeAll(this); +} + + +bool PIConnection::configureFromConfig(const PIString & conf_path, const PIString & name_) { + PIConfig conf(conf_path, PIIODevice::ReadOnly); + if (!conf.isOpened()) return false; + __device_pool__->unboundConnection(this); + removeAllChannels(); + removeAllFilters(); + removeAllDevices(); + setName(name_); + PIConfig::Entry ce(conf.getValue(name_)); + PIConfig::Branch db(ce.getValue("device").children()), fb(ce.getValue("filter").children()), cb(ce.getValue("channel").children()); + PIStringList dev_list(ce.getValue("device").value()); + piForeachC (PIConfig::Entry * e, db) + dev_list << e->value(); + dev_list.removeStrings(""); + piForeachC (PIString & s, dev_list) { + PIString fn(s); + PIIODevice::DeviceMode dm = PIIODevice::ReadWrite; + if (fn.find("(") > 0 && fn.find(")") > 0) { + PIString dms(fn.right(fn.length() - fn.find("(")).takeRange("(", ")").trim().toLowerCase().removeAll(" ")); + //piCout << dms; + if (dms == "r" || dms == "ro" || dms == "read" || dms == "readonly") + dm = PIIODevice::ReadOnly; + if (dms == "w" || dms == "wo" || dms == "write" || dms == "writeonly") + dm = PIIODevice::WriteOnly; + fn.cutRight(fn.length() - fn.find("(") + 1).trim(); + } + //piCout << fn; + PIIODevice * dev = addDevice(fn, dm); + if (dev) dev->setName(name_ + ".device." + s); + } + piForeachC (PIConfig::Entry * e, fb) { + PIPacketExtractor::SplitMode sm = PIPacketExtractor::None; + PIString sms(e->getValue("splitMode").value()); + int smi = sms.toInt(); + if (smi >= 1 && smi <= 5) sm = (PIPacketExtractor::SplitMode)smi; + else { + sms = sms.trim().toLowerCase(); + if (sms.find("header") >= 0 && sms.find("footer") >= 0) + sm = PIPacketExtractor::HeaderAndFooter; + else { + if (sms.find("header") >= 0) + sm = PIPacketExtractor::Header; + else { + if (sms.find("footer") >= 0) + sm = PIPacketExtractor::Footer; + else { + if (sms.find("time") >= 0) + sm = PIPacketExtractor::Timeout; + else { + if (sms.find("size") >= 0) + sm = PIPacketExtractor::Size; + } + } + } + } + } + PIStringList devs(e->value()); + PIConfig::Branch db(e->getValue("device").children()); + piForeachC (PIConfig::Entry * e2, db) + devs << e2->value(); + devs.removeStrings(""); + if (devs.isEmpty()) continue; + PIPacketExtractor * pe = addFilter(e->name(), devs.front(), sm); + if (pe == 0) continue; + for (int i = 1; i < devs.size_s(); ++i) + addFilter(e->name(), devs[i], sm); + pe->setPayloadSize(e->getValue("payloadSize", pe->payloadSize())); + pe->setPacketSize(e->getValue("packetSize", pe->packetSize())); + pe->setTimeout(e->getValue("timeout", pe->timeout())); + pe->setHeader(PIByteArray::fromString(e->getValue("header", "").value())); + pe->setFooter(PIByteArray::fromString(e->getValue("footer", "").value())); + } + piForeachC (PIConfig::Entry * e, cb) { + PIString f(e->getValue("from").value()), t(e->getValue("to").value()); + addChannel(f, t); + } + return true; +} + + +PIString PIConnection::makeConfig() const { + PIString ret; + ret << "[" << name() << "]\n"; + PIVector devs(boundedDevices()); + int dn(0); + piForeachC (PIIODevice * d, devs) { + ret << "device." << dn << " = " << d->constructFullPath(); ++dn; + if (d->mode() == PIIODevice::ReadOnly) ret << " (ro)"; + if (d->mode() == PIIODevice::WriteOnly) ret << " (wo)"; + ret << "\n"; + } + piForeachC (PEPair & f, extractors) { + if (f.second == 0) continue; + if (f.second->extractor == 0) continue; + PIString prefix = "filter." + f.first; + for (int i = 0; i < f.second->devices.size_s(); ++i) + ret << prefix << ".device." << i << " = " << f.second->devices[i]->constructFullPath() << "\n"; + ret << prefix << ".splitMode = "; + switch (f.second->extractor->splitMode()) { + case PIPacketExtractor::None: ret << "none"; break; + case PIPacketExtractor::Header: ret << "header"; break; + case PIPacketExtractor::Footer: ret << "footer"; break; + case PIPacketExtractor::HeaderAndFooter: ret << "header & footer"; break; + case PIPacketExtractor::Size: ret << "size"; break; + case PIPacketExtractor::Timeout: ret << "timeout"; break; + } + ret << "\n"; + ret << prefix << ".payloadSize = " << f.second->extractor->payloadSize() << "\n"; + ret << prefix << ".packetSize = " << f.second->extractor->packetSize() << "\n"; + ret << prefix << ".timeout = " << f.second->extractor->timeout() << "\n"; + ret << prefix << ".header = " << f.second->extractor->header().toString() << "\n"; + ret << prefix << ".footer = " << f.second->extractor->footer().toString() << "\n"; + } + dn = 0; + piForeachC (CPair & c, channels_) { + piForeachC (PIIODevice * d, c.second) { + PIString prefix = "channel." + PIString::fromNumber(dn); ++dn; + ret << prefix << ".from = " << devPath(c.first) << "\n"; + ret << prefix << ".to = " << devPath(d) << "\n"; + } + } + ret << "[]\n"; + return ret; +} + + +PIIODevice * PIConnection::addDevice(const PIString & full_path, PIIODevice::DeviceMode mode, bool start) { + PIIODevice * dev = __device_pool__->addDevice(this, full_path, mode, start); + if (dev) { + dev->setName(name() + ".device." + full_path); + device_modes[dev] = mode; + } + return dev; +} + + +bool PIConnection::removeDevice(const PIString & full_path) { + PIIODevice * dev = __device_pool__->device(full_path); + if (dev == 0) return false; + device_modes.remove(dev); + piForeachC (PEPair & i, extractors) { + if (i.second == 0) continue; + i.second->devices.removeAll(dev); + } + bounded_extractors.remove(dev); + channels_.remove(dev); + for (PIMap >::iterator it = channels_.begin(); it != channels_.end(); ++it) + it.value().removeAll(dev); + return __device_pool__->removeDevice(this, full_path); +} + + +void PIConnection::removeAllDevices() { + PIVector bdevs(__device_pool__->boundedDevices(this)); + piForeach (PIIODevice * d, bdevs) { + channels_.remove(d); + for (PIMap >::iterator it = channels_.begin(); it != channels_.end(); ++it) + it.value().removeAll(d); + } + __device_pool__->unboundConnection(this); + device_modes.clear(); + bounded_extractors.clear(); + piForeachC (PEPair & i, extractors) { + if (i.second == 0) continue; + i.second->devices.clear(); + } +} + + +PIIODevice * PIConnection::device(const PIString & full_path) const { + DevicePool::DeviceData * dd = __device_pool__->devices.value(full_path); + if (dd == 0) return 0; + if (dd->dev == 0) return 0; + if (!dd->listeners.contains(const_cast(this))) return 0; + return dd->dev; +} + + +PIVector PIConnection::boundedDevices() const { + return __device_pool__->boundedDevices(this); +} + + +PIPacketExtractor * PIConnection::addFilter(const PIString & name_, const PIString & full_path, PIPacketExtractor::SplitMode mode) { + Extractor * e = extractors.value(name_); + PIIODevice * dev = __device_pool__->device(full_path); + if (dev == 0) { + piCoutObj << "\"addPacketExtractor\" error: no such device \"" << full_path << "\"!"; + return 0; + } + if (e == 0) { + e = new Extractor(); + extractors[name_] = e; + } + if (e->extractor == 0) { + e->extractor = new PIPacketExtractor(0, mode); + e->extractor->setName(name_); + e->extractor->setThreadedReadData(new PIPair(this, name_)); + e->extractor->setHeaderCheckSlot(filterValidateHeaderS); + e->extractor->setFooterCheckSlot(filterValidateFooterS); + e->extractor->setPayloadCheckSlot(filterValidatePayloadS); + CONNECT2(void, uchar * , int, e->extractor, packetReceived, this, packetExtractorReceived) + } + if (!e->devices.contains(dev)) { + bounded_extractors[dev] << e->extractor; + e->devices << dev; + } + return e->extractor; +} + + +PIPacketExtractor * PIConnection::addFilter(const PIString & name_, const PIIODevice * dev, PIPacketExtractor::SplitMode mode) { + if (dev == 0) return 0; + PIString fp; + if (dev->isPropertyExists("__fullPath__")) fp = dev->property("__fullPath__").toString(); + fp = dev->constructFullPath(); + return addFilter(name_, fp, mode); +} + + +bool PIConnection::removeFilter(const PIString & name_, const PIString & full_path) { + Extractor * p = extractors.value(name_); + if (p == 0) return false; + bool ret = false; + for (int i = 0; i < p->devices.size_s(); ++i) { + if (p->devices[i]->property("__fullPath__").toString() == full_path) { + bounded_extractors[p->devices[i]].removeAll(p->extractor); + p->devices.remove(i); + --i; + ret = true; + } + } + if (p->devices.isEmpty()) { + unboundExtractor(p->extractor); + delete p; + } + return ret; +} + + +bool PIConnection::removeFilter(const PIString & name, const PIIODevice * dev) { + if (dev == 0) return false; + return removeFilter(name, dev->property("__fullPath__").toString()); +} + + +bool PIConnection::removeFilter(const PIString & name_) { + Extractor * p = extractors.value(name_); + if (p == 0) return false; + unboundExtractor(p->extractor); + delete p; + return true; +} + + +void PIConnection::removeAllFilters() { + piForeachC (PEPair & i, extractors) { + if (i.second == 0) continue; + channels_.remove(i.second->extractor); + for (PIMap >::iterator it = channels_.begin(); it != channels_.end(); ++it) + it.value().removeAll(i.second->extractor); + delete i.second; + } + extractors.clear(); + bounded_extractors.clear(); +} + + +PIVector PIConnection::filters() const { + PIVector ret; + piForeachC (PEPair & i, extractors) + if (i.second != 0) + if (i.second->extractor != 0) ret << i.second->extractor; + return ret; +} + + +PIStringList PIConnection::filterNames() const { + PIStringList ret; + piForeachC (PEPair & i, extractors) + if (i.second != 0) + if (i.second->extractor != 0) ret << i.first; + return ret; +} + + +PIPacketExtractor * PIConnection::filter(const PIString & name) const { + piForeachC (PEPair & i, extractors) + if (i.second != 0) + if (i.second->extractor != 0 && i.first == name) + return i.second->extractor; + return 0; +} + + +PIVector PIConnection::filterBoundedDevices(const PIString & name_) const { + PIVector ret; + Extractor * p = extractors.value(name_); + if (p == 0) return ret; + return p->devices; +} + + +bool PIConnection::addChannel(const PIString & name0, const PIString & name1) { + //piCout << "addChannel" << name0 << name1; + if (name0.isEmpty() || name1.isEmpty()) return false; + PIIODevice * dev0 = device(name0), * dev1 = device(name1); + PIPacketExtractor * pe0(0), * pe1(0); + if (extractors.value(name0) != 0) pe0 = extractors.value(name0)->extractor; + if (extractors.value(name1) != 0) pe1 = extractors.value(name1)->extractor; + if (pe0 != 0) dev0 = pe0; + if (pe1 != 0) dev1 = pe1; + if (dev0 == 0 || dev1 == 0) { + if (dev0 == 0) piCoutObj << "\"addChannel\" error: no such device \"" << name0 << "\"!"; + if (dev1 == 0) piCoutObj << "\"addChannel\" error: no such device \"" << name1 << "\"!"; + return false; + } + if (!channels_[dev0].contains(dev1)) + channels_[dev0] << dev1; + return true; +} + + +bool PIConnection::removeChannel(const PIString & name0, const PIString & name1) { + PIIODevice * dev0 = device(name0), * dev1 = device(name1); + PIPacketExtractor * pe0(0), * pe1(0); + if (extractors.value(name0) != 0) pe0 = extractors.value(name0)->extractor; + if (extractors.value(name1) != 0) pe1 = extractors.value(name1)->extractor; + if (pe0 != 0) dev0 = pe0; + if (pe1 != 0) dev1 = pe1; + if (dev0 == 0 || dev1 == 0) return false; + channels_[dev0].removeAll(dev1); + return true; +} + + +bool PIConnection::removeChannel(const PIString & name0) { + PIIODevice * dev0 = device(name0); + PIPacketExtractor * pe0(0); + if (extractors.value(name0) != 0) pe0 = extractors.value(name0)->extractor; + if (pe0 != 0) dev0 = pe0; + if (dev0 == 0) return false; + channels_.remove(dev0); + for (PIMap >::iterator it = channels_.begin(); it != channels_.end(); ++it) + it.value().removeAll(dev0); + return true; +} + + +void PIConnection::removeAllChannels() { + channels_.clear(); +} + + +PIString PIConnection::devPath(const PIIODevice * d) const { + if (d == 0) return PIString(); + if (strcmp(d->className(), "PIPacketExtractor") == 0) return d->name(); + return d->constructFullPath(); +} + + +PIString PIConnection::devFPath(const PIIODevice * d) const { + if (d == 0) return PIString(); + if (d->isPropertyExists("__fullPath__")) return d->property("__fullPath__").toString(); + return d->name(); +} + + +PIVector > PIConnection::channels() const { + PIVector > ret; + piForeachC (CPair & i, channels_) { + PIString fp0(devFPath(i.first)); + piForeachC (PIIODevice * d, i.second) + ret << PIPair(fp0, devFPath(d)); + } + return ret; +} + + +void PIConnection::startThreadedRead(const PIString & full_path) { + DevicePool::DeviceData * dd = __device_pool__->devices.value(full_path, 0); + if (dd == 0) return; + if (dd->dev == 0) return; + if (dd->started || dd->dev->mode() == PIIODevice::WriteOnly) return; + dd->rthread->start(); + dd->started = true; +} + + +void PIConnection::startAllThreadedReads() { + piForeachC (DevicePool::DDPair & d, __device_pool__->devices) + startThreadedRead(d.first); +} + + +void PIConnection::stopThreadedRead(const PIString & full_path) { + DevicePool::DeviceData * dd = __device_pool__->devices.value(full_path, 0); + if (dd == 0) return; + if (dd->dev == 0) return; + if (!dd->started || dd->dev->mode() == PIIODevice::WriteOnly) return; + dd->rthread->stop(); + dd->started = false; +} + + +void PIConnection::stopAllThreadedReads() { + piForeachC (DevicePool::DDPair & d, __device_pool__->devices) + stopThreadedRead(d.first); +} + + +int PIConnection::write(const PIString & full_path, const PIByteArray & data) { + PIIODevice * dev = __device_pool__->device(full_path); + if (dev == 0) { + piCoutObj << "Null Device!"; + return -1; + } + if (!dev->canWrite()) { + piCoutObj << "Device \"" << full_path << "\" can`t write!"; + return -1; + } + return dev->write(data); +} + + +PIVector< PIConnection * > PIConnection::allConnections() { + return _connections; +} + + +PIVector< PIIODevice * > PIConnection::allDevices() { + return __device_pool__->boundedDevices(); +} + + + +PIIODevice * PIConnection::DevicePool::addDevice(PIConnection * parent, const PIString & fp, PIIODevice::DeviceMode mode, bool start) { + DeviceData * dd = devices[fp]; + int pmode(0); + bool need_start = false; + if (dd == 0) { + dd = new DeviceData(); + devices[fp] = dd; + } + if (dd->dev == 0) { + //piCout << "new device" << fp; + dd->dev = PIIODevice::createFromFullPath(fp); + if (dd->dev == 0) { + piCoutObj << "Error: can`t create device \"" << fp << "\"!"; //:" << errorString(); + return 0; + } + dd->dev->setProperty("__fullPath__", fp); + } else + pmode = dd->dev->mode(); + if (!dd->listeners.contains(parent)) + dd->listeners << parent; + if (pmode == mode || pmode == PIIODevice::ReadWrite) + return dd->dev; + if ((mode & PIIODevice::ReadOnly) > 0) { + if (dd->rthread != 0) { + delete dd->rthread; + dd->rthread = 0; + dd->started = false; + } + dd->rthread = new PIThread(dd, threadReadDP); + need_start = true; + pmode |= PIIODevice::ReadOnly; + } + if ((mode & PIIODevice::WriteOnly) > 0) + pmode |= PIIODevice::WriteOnly; + dd->dev->close(); + dd->dev->open((PIIODevice::DeviceMode)pmode); + if (need_start && start) { + dd->rthread->start(); + dd->started = true; + } + return dd->dev; +} + + +bool PIConnection::DevicePool::removeDevice(PIConnection * parent, const PIString & fp) { + DeviceData * dd = devices.value(fp); + if (dd == 0) + return false; + if (dd->dev == 0) + return false; + bool ok = dd->listeners.contains(parent); + dd->listeners.removeAll(parent); + if (dd->listeners.isEmpty()) { + delete dd; + devices.remove(fp); + } + return ok; +} + + +void PIConnection::DevicePool::unboundConnection(PIConnection * parent) { + PIStringList rem; + piForeachC (DDPair & i, devices) { + if (i.second == 0) { + rem << i.first; + continue; + } + i.second->listeners.removeAll(parent); + if (i.second->listeners.isEmpty()) + rem << i.first; + } + piForeachC (PIString & i, rem) { + DeviceData * dd = devices.value(i); + if (dd == 0) + continue; + delete dd; + devices.remove(i); + } +} + + +PIIODevice * PIConnection::DevicePool::device(const PIString & fp) const { + DeviceData * dd = devices.value(fp); + if (dd == 0) return 0; + return dd->dev; +} + + +PIVector PIConnection::DevicePool::boundedConnections() const { + PIVector ret; + piForeachC (DDPair & i, devices) { + if (i.second == 0) + continue; + ret << i.second->listeners; + } + for (int i = 0; i < ret.size_s(); ++i) + for (int j = i + 1; j < ret.size_s(); ++j) + if (ret[i] == ret[j]) { + ret.remove(j); + --j; + } + return ret; +} + + +PIVector< PIIODevice * > PIConnection::DevicePool::boundedDevices() const { + PIVector ret; + piForeachC (DDPair & i, devices) { + if (i.second == 0) continue; + if (i.second->dev == 0) continue; + ret << i.second->dev; + } + return ret; +} + + +PIVector PIConnection::DevicePool::boundedDevices(const PIConnection * parent) const { + PIVector ret; + piForeachC (DDPair & i, devices) { + if (i.second == 0) continue; + if (i.second->dev == 0) continue; + if (i.second->listeners.contains(const_cast(parent))) + ret << i.second->dev; + } + return ret; +} + + +PIConnection::DevicePool::DeviceData::~DeviceData() { + if (rthread != 0) { + rthread->stop(); + delete rthread; + rthread = 0; + } + if (dev != 0) { + delete dev; + dev = 0; + } +} + + +void PIConnection::DevicePool::threadReadDP(void * ddp) { + DeviceData * dd((DeviceData * )ddp); + if (dd->dev == 0) {piMSleep(100); return;} + PIByteArray ba; + ba = dd->dev->read(dd->dev->threadedReadBufferSize()); + if (ba.isEmpty()) {piMSleep(10); return;} + //piCout << "Readed from" << dd->dev->path() << Hex << ba; + __device_pool__->deviceReaded(dd, ba); +} + + +void PIConnection::DevicePool::deviceReaded(PIConnection::DevicePool::DeviceData * dd, const PIByteArray & data) { + PIString from = dd->dev->property("__fullPath__").toString(); + piForeach (PIConnection * ld, dd->listeners) + ld->rawReceived(dd->dev, from, data); +} + + +bool PIConnection::filterValidateHeaderS(void * c, uchar * src, uchar * rec, int size) { + PIPair * p((PIPair * )c); + return p->first->filterValidateHeader(p->second, src, rec, size); +} + + +bool PIConnection::filterValidateFooterS(void * c, uchar * src, uchar * rec, int size) { + PIPair * p((PIPair * )c); + return p->first->filterValidateFooter(p->second, src, rec, size); +} + + +bool PIConnection::filterValidatePayloadS(void * c, uchar * rec, int size) { + PIPair * p((PIPair * )c); + return p->first->filterValidatePayload(p->second, rec, size); +} + + +void PIConnection::rawReceived(PIIODevice * dev, const PIString & from, const PIByteArray & data) { + dataReceived(from, data); + dataReceivedEvent(from, data); + PIVector be(bounded_extractors.value(dev)); + //piCout << be; + piForeach (PIPacketExtractor * i, be) + i->threadedRead(const_cast(data.data()), data.size_s()); + PIVector chd(channels_.value(dev)); + piForeach (PIIODevice * d, chd) + d->write(data); +} + + +bool PIConnection::filterValidateHeader(const PIString & filter_name, uchar * src, uchar * rec, int size) { + for (int i = 0; i < size; ++i) + if (src[i] != rec[i]) + return false; + return true; +} + + +bool PIConnection::filterValidateFooter(const PIString & filter_name, uchar * src, uchar * rec, int size) { + for (int i = 0; i < size; ++i) + if (src[i] != rec[i]) + return false; + return true; +} + + +bool PIConnection::filterValidatePayload(const PIString & filter_name, uchar * rec, int size) { + return true; +} + + +PIConnection::Extractor::~Extractor() { + if (extractor != 0) { + if (extractor->threadedReadData() != 0) + delete (PIPair * )(extractor->threadedReadData()); + delete extractor; + extractor = 0; + } +} + + +void PIConnection::unboundExtractor(PIPacketExtractor * pe) { + if (pe == 0) return; + channels_.remove(pe); + for (PIMap >::iterator it = channels_.begin(); it != channels_.end(); ++it) + it.value().removeAll(pe); + PIVector k = bounded_extractors.keys(); + piForeach (PIIODevice * i, k) { + PIVector & be(bounded_extractors[i]); + be.removeAll(pe); + if (be.isEmpty()) + bounded_extractors.remove(i); + } + extractors.remove(pe->name()); +} + + +void PIConnection::packetExtractorReceived(uchar * data, int size) { + PIString from(emitter() == 0 ? "" : emitter()->name()); + packetReceived(from, PIByteArray(data, size)); + packetReceivedEvent(from, PIByteArray(data, size)); + PIIODevice * cd = (PIIODevice * )emitter(); + if (cd == 0) return; + PIVector chd(channels_.value(cd)); + piForeach (PIIODevice * d, chd) + d->write(data, size); +} + + + +PIConnection::DevicePool * __device_pool__; + +bool __DevicePoolContainer__::inited_(false); + +__DevicePoolContainer__::__DevicePoolContainer__() { + if (inited_) return; + inited_ = true; + __device_pool__ = new PIConnection::DevicePool(); +} diff --git a/_oldpip/pip_0.4.0_r5/piconnection.h b/_oldpip/pip_0.4.0_r5/piconnection.h new file mode 100644 index 0000000..c00f85d --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/piconnection.h @@ -0,0 +1,291 @@ +/*! \file piconnection.h + * \brief Complex I/O point +*/ +/* + PIP - Platform Independent Primitives + Complex I/O point + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +#ifndef PICONNECTION_H +#define PICONNECTION_H + +#include "pipacketextractor.h" + + +class PIP_EXPORT PIConnection: public PIObject +{ + PIOBJECT(PIConnection) +public: + + //! Constructs an empty connection + PIConnection(); + + //! Constructs connection and configure it from config file "config" from section "name" + PIConnection(const PIString & config, const PIString & name); + + ~PIConnection(); + + + /*! \brief Configure connection from config file "config" from section "name". Returns if configuration was successful + * \details \b Warning: all devices, filters and channels removed before configure! */ + bool configureFromConfig(const PIString & config, const PIString & name); + + //! Returns config file section of current connection configuration + PIString makeConfig() const; + + + /*! \brief Add device with full path "full_path", open mode "mode" to Device pool and connection + * \details Returns pointer to device or null if device can not be created. If "start" is true, + * read thread is started immediately. Else, you can start read thread with functions \a startThreadedRead() + * or \a startAllThreadedReads(). By default, read thread doesn`t start */ + PIIODevice * addDevice(const PIString & full_path, PIIODevice::DeviceMode mode = PIIODevice::ReadWrite, bool start = false); + + /*! \brief Remove device with full path "full_path" from connection + * \details Returns if device was removed. If there is no connection bounded to this device, + * it will be removed from Device pool */ + bool removeDevice(const PIString & full_path); + + /*! \brief Remove all device from connection + * \details If there is no connection bounded to there devices, they removed from Device pool */ + void removeAllDevices(); + + //! Returns device with full path "full_path" or null if there is no such device + PIIODevice * device(const PIString & full_path) const; + + //! Returns all devices bounded to this connection + PIVector boundedDevices() const; + + + /*! \brief Add filter with name "name" to device with full path "full_path" + * \details If there is no filter with name "name", connection create new with split mode "mode" and bound + * to it device "full_path". If filter with name "name" already exists, device "full_path" add to this filter. + * \b Attention! "mode" is altual olny if new filter was created! + * This function returns PIPacketExtractor * assosiated with this filter */ + PIPacketExtractor * addFilter(const PIString & name, const PIString & full_path, PIPacketExtractor::SplitMode mode = PIPacketExtractor::None); + + //! Add filter with name "name" to device "dev" + PIPacketExtractor * addFilter(const PIString & name, const PIIODevice * dev, PIPacketExtractor::SplitMode mode = PIPacketExtractor::None); + + /*! \brief Remove from filter with name "name" device with full path "full_path" + * \details If there is no devices bounded to this filter, it will be removed. Returns + * if device was removed */ + bool removeFilter(const PIString & name, const PIString & full_path); + + //! Remove from filter with name "name" device "dev" + bool removeFilter(const PIString & name, const PIIODevice * dev); + + //! Remove filter with name "name". Returns if filter was removed + bool removeFilter(const PIString & name); + + //! Remove all filters from connection + void removeAllFilters(); + + + //! Returns all filters of connection + PIVector filters() const; + + //! Returns all filter names of connection + PIStringList filterNames() const; + + //! Returns PIPacketExtractor * assosiated with filter "name" or null if there is no such filter + PIPacketExtractor * filter(const PIString & name) const; + + //! Returns all devices bounded to filter "name" + PIVector filterBoundedDevices(const PIString & name) const; + + + /*! \brief Add to connection channel from "name_from" to "name_to" + * \details "name_from" and "name_to" can be full pathes of devices or filter names. + * Returns \b false if there if no such device or filter, else create channel and returns \b true */ + bool addChannel(const PIString & name_from, const PIString & name_to); + + //! Add to connection channel from "name_from" to "dev_to" + bool addChannel(const PIString & name_from, const PIIODevice * dev_to) {return addChannel(name_from, devFPath(dev_to));} + + //! Add to connection channel from "dev_from" to "name_to" + bool addChannel(const PIIODevice * dev_from, const PIString & name_to) {return addChannel(devFPath(dev_from), name_to);} + + //! Add to connection channel from "dev_from" to "dev_to" + bool addChannel(const PIIODevice * dev_from, const PIIODevice * dev_to) {return addChannel(devFPath(dev_from), devFPath(dev_to));} + + /*! \brief Remove from connection channel from "name_from" to "name_to" + * \details "name_from" and "name_to" can be full pathes of devices or filter names. + * Returns \b false if there if no such device or filter, else remove channel and returns \b true */ + bool removeChannel(const PIString & name_from, const PIString & name_to); + + //! Remove from connection channel from "name_from" to "dev_to" + bool removeChannel(const PIString & name_from, const PIIODevice * dev_to) {return removeChannel(name_from, devFPath(dev_to));} + + //! Remove from connection channel from "dev_from" to "name_to" + bool removeChannel(const PIIODevice * dev_from, const PIString & name_to) {return removeChannel(devFPath(dev_from), name_to);} + + //! Remove from connection channel from "dev_from" to "dev_to" + bool removeChannel(const PIIODevice * dev_from, const PIIODevice * dev_to) {return removeChannel(devFPath(dev_from), devFPath(dev_to));} + + /*! \brief Remove from connection all channels from "name_from" + * \details "name_from" can be full path of device or filter name. + * Returns \b false if there if no such device or filter, else remove channels and returns \b true */ + bool removeChannel(const PIString & name_from); + + //! Remove from connection all channels from "dev_from" + bool removeChannel(const PIIODevice * dev_from) {return removeChannel(devFPath(dev_from));} + + //! Remove from connection all channels + void removeAllChannels(); + + //! Returns all channels of this connection as full pathes or filter names pair array (from, to) + PIVector > channels() const; + + + //! Start read thread of device with full path "full_path" + void startThreadedRead(const PIString & full_path); + + //! Start read thread of device "dev" + void startThreadedRead(const PIIODevice * dev) {startThreadedRead(devFPath(dev));} + + //! Start read threads of all Device pool device + void startAllThreadedReads(); + + //! Stop read thread of device with full path "full_path" + void stopThreadedRead(const PIString & full_path); + + //! Stop read thread of device "dev" + void stopThreadedRead(const PIIODevice * dev) {stopThreadedRead(devFPath(dev));} + + //! Stop read threads of all Device pool device + void stopAllThreadedReads(); + + + //! Returns if there is no devices in this connection + bool isEmpty() const {return device_modes.isEmpty();} + + + //! Write data "data" to device with full path "full_path" and returns result of \a write() function of device + int write(const PIString & full_path, const PIByteArray & data); + + + //! Returns all connections in application + static PIVector allConnections(); + + //! Returns all devices in Device pool + static PIVector allDevices(); + + class DevicePool: public PIObject { + PIOBJECT(DevicePool) + friend class PIConnection; + public: + DevicePool(): PIObject("PIConnection::DevicePool") {} + + PIIODevice * addDevice(PIConnection * parent, const PIString & fp, PIIODevice::DeviceMode mode = PIIODevice::ReadWrite, bool start = true); + bool removeDevice(PIConnection * parent, const PIString & fp); + void unboundConnection(PIConnection * parent); + PIIODevice * device(const PIString & fp) const; + PIVector boundedConnections() const; + PIVector boundedDevices() const; + PIVector boundedDevices(const PIConnection * parent) const; + + protected: + struct DeviceData { + DeviceData(): dev(0), rthread(0), started(false) {} + ~DeviceData(); + PIIODevice * dev; + PIThread * rthread; + bool started; + PIVector listeners; + }; + + static void threadReadDP(void * ddp); + void deviceReaded(DeviceData * dd, const PIByteArray & data); + + typedef PIMap::value_type DDPair; + PIMap devices; + }; + + EVENT2(dataReceivedEvent, const PIString &, from, const PIByteArray &, data) + EVENT2(packetReceivedEvent, const PIString &, from, const PIByteArray &, data) + +//! \events +//! \{ + + //! \fn void dataReceivedEvent(const PIString & from, const PIByteArray & data) + //! \brief Raise on data received from device with full path "from" + + //! \fn void packetReceivedEvent(const PIString & from, const PIByteArray & data) + //! \brief Raise on packet received from filter with name "from" + +//! \} + +protected: + + //! Executes on data received from device with full path "from" + virtual void dataReceived(const PIString & from, const PIByteArray & data) {} + + //! Executes on packet received from filter with name "from" + virtual void packetReceived(const PIString & from, const PIByteArray & data) {} + + //! Validate header "rec" with source header "src" and size "size", executes from filter "filter_name" + virtual bool filterValidateHeader(const PIString & filter_name, uchar * src, uchar * rec, int size); + + //! Validate footer "rec" with source footer "src" and size "size", executes from filter "filter_name" + virtual bool filterValidateFooter(const PIString & filter_name, uchar * src, uchar * rec, int size); + + //! Validate payload "rec" with size "size", executes from filter "filter_name" + virtual bool filterValidatePayload(const PIString & filter_name, uchar * rec, int size); + +private: + static bool filterValidateHeaderS(void * c, uchar * src, uchar * rec, int size); + static bool filterValidateFooterS(void * c, uchar * src, uchar * rec, int size); + static bool filterValidatePayloadS(void * c, uchar * rec, int size); + void rawReceived(PIIODevice * dev, const PIString & from, const PIByteArray & data); + void unboundExtractor(PIPacketExtractor * pe); + EVENT_HANDLER2(void, packetExtractorReceived, uchar * , data, int, size); + + PIString devPath(const PIIODevice * d) const; + PIString devFPath(const PIIODevice * d) const; + + struct Extractor { + Extractor(): extractor(0) {} + ~Extractor(); + PIPacketExtractor * extractor; + PIVector devices; + }; + + typedef PIMap::value_type PEPair; + typedef PIMap >::value_type BEPair; + typedef PIMap >::value_type CPair; + PIMap extractors; + PIMap device_modes; + PIMap > bounded_extractors; + PIMap > channels_; + + static PIVector _connections; + +}; + + +extern PIConnection::DevicePool * __device_pool__; + +class __DevicePoolContainer__ { +public: + __DevicePoolContainer__(); + static bool inited_; +}; + +static __DevicePoolContainer__ __device_pool_container__; + + +#endif // PICONNECTION_H diff --git a/_oldpip/pip_0.4.0_r5/piconsole.cpp b/_oldpip/pip_0.4.0_r5/piconsole.cpp new file mode 100644 index 0000000..b5526da --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/piconsole.cpp @@ -0,0 +1,1011 @@ +/* + PIP - Platform Independent Primitives + Console output/input + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +#include "piconsole.h" +#include "pipeer.h" + + +/** \class PIConsole + * \brief Console output class + * \details + * \section PIConsole_sec0 Synopsis + * This class provides output to console with automatic alignment and update. + * It supports tabs, keyboard listening, formats and colors. + * + * \section PIConsole_sec1 Layout + * %PIConsole works with variable pointers. You should add your variables with + * functions \a addVariable() which receives label name, pointer to variable + * and optional column and format. Columns count is dynamically increased if + * new column used. E.g. if you add variable to empty tab to column 3, columns + * count will be increased to 3, but two firsts columns will be empty. Each column + * filled from top to bottom, but you can add just string with function + * \a addString() or add empty line with function \a addEmptyLine(). Layout scheme: + * \image html piconsole_layout.png + * + * \section PIConsole_sec2 Keyboard usage + * %PIConsole should to be single in application. %PIConsole aggregate PIKbdListener + * which grab keyboard and automatic switch tabs by theirs bind keys. If there is no + * tab binded to pressed key external function "slot" will be called + * + **/ + + +extern PIMutex __PICout_mutex__; + + +PIConsole::PIConsole(bool startNow, KBFunc slot): PIThread() { + setPriority(piLow); + needLockRun(true); + ret_func = slot; + num_format = systime_format = 0; + vid = 0; + cur_tab = width = height = pwidth = pheight = max_y = 0; + def_align = Nothing; +#ifdef WINDOWS + ulcoord.X = 0; + hOut = GetStdHandle(STD_OUTPUT_HANDLE); + GetConsoleScreenBufferInfo(hOut, &sbi); + dattr = sbi.wAttributes; + width = sbi.srWindow.Right - sbi.srWindow.Left; + height = sbi.srWindow.Bottom - sbi.srWindow.Top; + ulcoord.Y = sbi.srWindow.Top; + GetConsoleMode(hOut, &smode); + GetConsoleCursorInfo(hOut, &curinfo); +#endif + tabs.reserve(16); + addTab("main"); + listener = new PIKbdListener(key_event, this); + peer = 0; + server_mode = false; + state = Disconnected; + peer_timer.addDelimiter(20); + CONNECT2(void, void * , int, &peer_timer, timeout, this, peerTimer); + if (startNow) start(); +} + + +PIConsole::~PIConsole() { + stopPeer(); + if (isRunning()) + stop(); + clearTabs(false); + delete listener; +#ifdef WINDOWS + SetConsoleMode(hOut, smode); + SetConsoleTextAttribute(hOut, dattr); +#endif +} + + +int PIConsole::addTab(const PIString & name, char bind_key) { + if (isRunning()) lock(); + tabs.push_back(Tab(name, bind_key)); + cur_tab = tabs.size() - 1; + if (isRunning()) unlock(); + return tabs.size(); +} + + +void PIConsole::removeTab(uint index) { + if (index >= tabs.size()) return; + if (isRunning()) lock(); + tabs.remove(index); + if (cur_tab >= tabs.size()) cur_tab = tabs.size() - 1; + if (isRunning()) unlock(); +} + + +void PIConsole::removeTab(const PIString & name) { + uint index = tabs.size() + 1; + for (uint i = 0; i < tabs.size(); ++i) { + if (tabs[i].name == name) { + index = i; + break; + } + } + removeTab(index); +} + + +bool PIConsole::setTab(uint index) { + if (index >= tabs.size()) + return false; + if (!isRunning()) { + cur_tab = index; + return true; + } + lock(); + __PICout_mutex__.lock(); + cur_tab = index; + clearScreen(); + fillLabels(); + __PICout_mutex__.unlock(); + unlock(); + return true; +} + + +bool PIConsole::setTab(const PIString & name) { + uint index = tabs.size() + 1; + for (uint i = 0; i < tabs.size(); ++i) { + if (tabs[i].name == name) { + index = i; + break; + } + } + return setTab(index); +} + + +bool PIConsole::setTabBindKey(uint index, char bind_key) { + if (index >= tabs.size()) + return false; + tabs[index].key = bind_key; + return true; +} + + +bool PIConsole::setTabBindKey(const PIString & name, char bind_key) { + uint index =tabs.size() + 1; + for (uint i = 0; i < tabs.size(); ++i) { + if (tabs[i].name == name) { + index = i; + break; + } + } + return setTabBindKey(index, bind_key); +} + + +void PIConsole::key_event(char key, void * t) { + PIConsole * p = (PIConsole * )t; + int ct = p->cur_tab; + if (key == char(PIKbdListener::LeftArrow)) { + do { + ct--; + if (ct < 0) return; + } while (p->tabs[ct].key == 0); + p->setTab(ct); + return; + } + if (key == char(PIKbdListener::RightArrow)) { + do { + ct++; + if (ct >= p->tabs.size_s()) return; + } while (p->tabs[ct].key == 0); + p->setTab(ct); + return; + } + for (uint i = 0; i < p->tabsCount(); ++i) { + if (p->tabs[i].key == key) { + p->setTab(i); + return; + } + } + if (p->ret_func != 0) p->ret_func(key, t); + p->keyPressed(key, t); +} + + +void PIConsole::stop(bool clear) { + PIThread::stop(true); + if (clear) clearScreen(); + moveTo(0, max_y + 4); + showCursor(); + couts(fstr(Normal)); +#ifdef WINDOWS + SetConsoleMode(hOut, smode); + SetConsoleTextAttribute(hOut, dattr); +#endif + fflush(0); +} + + +PIString PIConsole::fstr(PIFlags f) { + num_format = systime_format = 0; + if (f[PIConsole::Dec]) num_format = 0; + if (f[PIConsole::Hex]) num_format = 1; + if (f[PIConsole::Oct]) num_format = 2; + if (f[PIConsole::Bin]) num_format = 4; + if (f[PIConsole::Scientific]) num_format = 3; + if (f[PIConsole::SystemTimeSplit]) systime_format = 0; + if (f[PIConsole::SystemTimeSeconds]) systime_format = 1; + +#ifdef WINDOWS + WORD attr = 0; + + if (f[PIConsole::Inverse]) { + if (f[PIConsole::Red]) attr |= BACKGROUND_RED; + if (f[PIConsole::Green]) attr |= BACKGROUND_GREEN; + if (f[PIConsole::Blue]) attr |= BACKGROUND_BLUE; + if (f[PIConsole::Yellow]) attr |= (BACKGROUND_RED | BACKGROUND_GREEN); + if (f[PIConsole::Magenta]) attr |= (BACKGROUND_RED | BACKGROUND_BLUE); + if (f[PIConsole::Cyan]) attr |= (BACKGROUND_GREEN | BACKGROUND_BLUE); + if (f[PIConsole::White]) attr |= (BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE); + if (f[PIConsole::BackRed]) attr |= FOREGROUND_RED; + if (f[PIConsole::BackGreen]) attr |= FOREGROUND_GREEN; + if (f[PIConsole::BackBlue]) attr |= FOREGROUND_BLUE; + if (f[PIConsole::BackYellow]) attr |= (FOREGROUND_RED | FOREGROUND_GREEN); + if (f[PIConsole::BackMagenta]) attr |= (FOREGROUND_RED | FOREGROUND_BLUE); + if (f[PIConsole::BackCyan]) attr |= (FOREGROUND_GREEN | FOREGROUND_BLUE); + if (f[PIConsole::BackWhite]) attr |= (FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE); + if ((attr & BACKGROUND_RED) + (attr & BACKGROUND_GREEN) + (attr & BACKGROUND_BLUE) == 0) + attr |= FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE; + } else { + if (f[PIConsole::Red]) attr |= FOREGROUND_RED; + if (f[PIConsole::Green]) attr |= FOREGROUND_GREEN; + if (f[PIConsole::Blue]) attr |= FOREGROUND_BLUE; + if (f[PIConsole::Yellow]) attr |= (FOREGROUND_RED | FOREGROUND_GREEN); + if (f[PIConsole::Magenta]) attr |= (FOREGROUND_RED | FOREGROUND_BLUE); + if (f[PIConsole::Cyan]) attr |= (FOREGROUND_GREEN | FOREGROUND_BLUE); + if (f[PIConsole::White]) attr |= (FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE); + if (f[PIConsole::BackRed]) attr |= BACKGROUND_RED; + if (f[PIConsole::BackGreen]) attr |= BACKGROUND_GREEN; + if (f[PIConsole::BackBlue]) attr |= BACKGROUND_BLUE; + if (f[PIConsole::BackYellow]) attr |= (BACKGROUND_RED | BACKGROUND_GREEN); + if (f[PIConsole::BackMagenta]) attr |= (BACKGROUND_RED | BACKGROUND_BLUE); + if (f[PIConsole::BackCyan]) attr |= (BACKGROUND_GREEN | BACKGROUND_BLUE); + if (f[PIConsole::BackWhite]) attr |= (BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE); + if ((attr & FOREGROUND_RED) + (attr & FOREGROUND_GREEN) + (attr & FOREGROUND_BLUE) == 0) + attr |= FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE; + } + if (f[PIConsole::Bold]) attr |= FOREGROUND_INTENSITY; + if (f[PIConsole::Underline]) attr |= COMMON_LVB_UNDERSCORE; + + SetConsoleTextAttribute(hOut, attr); + return PIString(); +#else + PIString ts("\e[0"); + + if (f[PIConsole::Bold]) ts += ";1"; + if (f[PIConsole::Faint]) ts += ";2"; + if (f[PIConsole::Italic]) ts += ";3"; + if (f[PIConsole::Underline]) ts += ";4"; + if (f[PIConsole::Blink]) ts += ";5"; + if (f[PIConsole::Inverse]) ts += ";7"; + + if (f[PIConsole::Black]) ts += ";30"; + if (f[PIConsole::Red]) ts += ";31"; + if (f[PIConsole::Green]) ts += ";32"; + if (f[PIConsole::Yellow]) ts += ";33"; + if (f[PIConsole::Blue]) ts += ";34"; + if (f[PIConsole::Magenta]) ts += ";35"; + if (f[PIConsole::Cyan]) ts += ";36"; + if (f[PIConsole::White]) ts += ";37"; + + if (f[PIConsole::BackBlack]) ts += ";40"; + if (f[PIConsole::BackRed]) ts += ";41"; + if (f[PIConsole::BackGreen]) ts += ";42"; + if (f[PIConsole::BackYellow]) ts += ";43"; + if (f[PIConsole::BackBlue]) ts += ";44"; + if (f[PIConsole::BackMagenta]) ts += ";45"; + if (f[PIConsole::BackCyan]) ts += ";46"; + if (f[PIConsole::BackWhite]) ts += ";47"; + + return ts + "m"; +#endif +} + + +inline int PIConsole::couts(const PIString & v) {return printf("%s", v.data());} +inline int PIConsole::couts(const char * v) {return printf("%s", v);} +inline int PIConsole::couts(const bool v) {return (v ? printf("true") : printf("false"));} +inline int PIConsole::couts(const char v) {return printf("%c", v);} +inline int PIConsole::couts(const short v) { + switch (num_format) {case (1): return printf("0x%.4hX", v); break; case (2): return printf("%o", v); break; case (4): return printf("%s", toBin(&v, 2)); break; default: return printf("%hd", v); break;} +} +inline int PIConsole::couts(const int v) { + switch (num_format) {case (1): return printf("0x%.8X", v); break; case (2): return printf("%o", v); break; case (4): return printf("%s", toBin(&v, 4)); break; default: return printf("%d", v); break;} +} +inline int PIConsole::couts(const long v) { + switch (num_format) {case (1): return printf("0x%.16lX", v); break; case (2): return printf("%lo", v); break; case (4): return printf("%s", toBin(&v, sizeof(v))); break; default: return printf("%ld", v); break;} +} +inline int PIConsole::couts(const llong v) { + switch (num_format) {case (1): return printf("0x%.16llX", v); break; case (2): return printf("%llo", v); break; case (4): return printf("%s", toBin(&v, sizeof(v))); break; default: return printf("%lld", v); break;} +} +inline int PIConsole::couts(const uchar v) { + switch (num_format) {case (1): return printf("0x%.2X", v); break; case (2): return printf("%o", v); break; case (4): return printf("%s", toBin(&v, 1)); break; default: return printf("%u", v); break;} +} +inline int PIConsole::couts(const ushort v) { + switch (num_format) {case (1): return printf("0x%.4hX", v); break; case (2): return printf("%o", v); break; case (4): return printf("%s", toBin(&v, 2)); break; default: return printf("%hu", v); break;} +} +inline int PIConsole::couts(const uint v) { + switch (num_format) {case (1): return printf("0x%.8X", v); break; case (2): return printf("%o", v); break; case (4): return printf("%s", toBin(&v, 4)); break; default: return printf("%u", v); break;} +} +inline int PIConsole::couts(const ulong v) { + switch (num_format) {case (1): return printf("0x%.16lX", v); break; case (2): return printf("%lo", v); break; case (4): return printf("%s", toBin(&v, sizeof(v))); break; default: return printf("%lu", v); break;} +} +inline int PIConsole::couts(const ullong v) { + switch (num_format) {case (1): return printf("0x%.16llX", v); break; case (2): return printf("%llo", v); break; case (4): return printf("%s", toBin(&v, sizeof(v))); break; default: return printf("%llu", v); break;} +} +inline int PIConsole::couts(const float v) { + switch (num_format) {case (3): return printf("%e", v); break; default: return printf("%.5g", v); break;} +} +inline int PIConsole::couts(const double v) { + switch (num_format) {case (3): return printf("%le", v); break; default: return printf("%.5lg", v); break;} +} +inline int PIConsole::couts(const PISystemTime & v) { + switch (systime_format) {case (1): return printf("%.6lg", v.toSeconds()); break; + default: return couts(v.seconds) + printf(" s, ") + couts(v.nanoseconds) + printf(" ns"); break;} +} + + +void PIConsole::begin() { +#ifdef WINDOWS + SetConsoleMode(hOut, ENABLE_WRAP_AT_EOL_OUTPUT); +#endif + max_y = 0; + __PICout_mutex__.lock(); + clearScreen(); + hideCursor(); + fillLabels(); + __PICout_mutex__.unlock(); +} + + +void PIConsole::run() { + uint cx, clen = 0; + int j; +#ifdef WINDOWS + GetConsoleScreenBufferInfo(hOut, &sbi); + width = sbi.srWindow.Right - sbi.srWindow.Left; + height = sbi.srWindow.Bottom - sbi.srWindow.Top; +#else + winsize ws; + ioctl(0, TIOCGWINSZ, &ws); + width = ws.ws_col; + height = ws.ws_row; +#endif + //fflush(0); return; + __PICout_mutex__.lock(); + if (pwidth != width || pheight != height) { + clearScreen(); + fillLabels(); + } + pwidth = width; + pheight = height; + col_cnt = columns().size(); + col_wid = (col_cnt > 0) ? width / col_cnt : width; + for (uint i = 0; i < col_cnt; ++i) { + PIVector & cvars(tabs[cur_tab].columns[i].variables); + cx = col_wid * i; + toUpperLeft(); + if (max_y < cvars.size()) max_y = cvars.size(); + j = 0; + piForeachC (Variable & tv, cvars) { + if (j > height - 3) continue; + j++; + moveRight(cx); + if (tv.type == 15) { + newLine(); + continue; + } + moveRight(tv.offset); + const void * ptr = 0; + if (tv.remote) { + if (tv.type == 0) { + rstr.clear(); + rba = tv.rdata; + rba >> rstr; + rstr.trim(); + ptr = &rstr; + } else + ptr = tv.rdata.data(); + } else + ptr = tv.ptr; + switch (tv.type) { + case 0: clen = printValue(ptr != 0 ? *(const PIString*)ptr : PIString(), tv.format); break; + case 1: clen = printValue(ptr != 0 ? *(const bool*)ptr : false, tv.format); break; + case 2: clen = printValue(ptr != 0 ? *(const int*)ptr : 0, tv.format); break; + case 3: clen = printValue(ptr != 0 ? *(const long*)ptr : 0l, tv.format); break; + case 4: clen = printValue(ptr != 0 ? *(const char*)ptr : char(0), tv.format); break; + case 5: clen = printValue(ptr != 0 ? *(const float*)ptr : 0.f, tv.format); break; + case 6: clen = printValue(ptr != 0 ? *(const double*)ptr : 0., tv.format); break; + case 7: clen = printValue(ptr != 0 ? *(const short*)ptr : short(0), tv.format); break; + case 8: clen = printValue(ptr != 0 ? *(const uint*)ptr : 0u, tv.format); break; + case 9: clen = printValue(ptr != 0 ? *(const ulong*)ptr : 0ul, tv.format); break; + case 10: clen = printValue(ptr != 0 ? *(const ushort*)ptr : ushort(0), tv.format); break; + case 11: clen = printValue(ptr != 0 ? *(const uchar*)ptr : uchar(0), tv.format); break; + case 12: clen = printValue(ptr != 0 ? *(const llong*)ptr : 0l, tv.format); break; + case 13: clen = printValue(ptr != 0 ? *(const ullong*)ptr: 0ull, tv.format); break; + case 20: clen = printValue(ptr != 0 ? *(const PISystemTime*)ptr: PISystemTime(), tv.format); break; + case 14: clen = printValue(bitsValue(ptr, tv.bitFrom, tv.bitCount), tv.format); break; + } + if (clen + tv.offset < (uint)col_wid) { + PIString ts = PIString( +#if defined(QNX) || defined(FREE_BSD) + col_wid - clen - tv.offset - 1, ' '); +#else + col_wid - clen - tv.offset, ' '); +#endif + printf("%s", ts.data()); + } + newLine(); + } + } +#ifdef WINDOWS + moveTo(0, max_y + 1); +#else + moveTo(0, max_y + 2); +#endif + fflush(0); + __PICout_mutex__.unlock(); +} + + +void PIConsole::fillLabels() { + if (!isRunning()) return; + uint cx, cy, mx = 0, dx; +#ifdef WINDOWS + GetConsoleScreenBufferInfo(hOut, &sbi); + width = sbi.srWindow.Right - sbi.srWindow.Left; + height = sbi.srWindow.Bottom - sbi.srWindow.Top; +#else + winsize ws; + ioctl(0, TIOCGWINSZ, &ws); + width = ws.ws_col; + height = ws.ws_row; +#endif + max_y = 0; + col_cnt = columns().size(); + col_wid = (col_cnt > 0) ? width / col_cnt : width; + for (uint i = 0; i < col_cnt; ++i) { + Column & ccol(tabs[cur_tab].columns[i]); + PIVector & cvars(ccol.variables); + if (ccol.alignment != Nothing) { + mx = 0; + piForeachC (Variable & j, cvars) + if (!j.isEmpty()) + if (mx < j.name.size()) + mx = j.name.size(); + mx += 2; + } + cx = col_wid * i; + cy = 1; + toUpperLeft(); + for (uint j = 0; j < cvars.size(); ++j) { + if (int(j) > height - 3) continue; + if (max_y < j) max_y = j; + moveRight(cx); + Variable & tv(cvars[j]); + cvars[j].nx = cx; + cvars[j].ny = cy; + if (tv.name.isEmpty()) { + cvars[j].offset = 0; + clearLine(); + newLine(); + cy++; + continue; + } + clearLine(); + //piCout << tv.name << tv.type << tv.ptr; + if (tv.type == 15) { + cvars[j].offset = cvars[j].name.length(); + cvars[j].nx += cvars[j].offset; + printLine(tv.name, cx, tv.format); + newLine(); + cy++; + continue; + } + if (!tv.isEmpty()) { + switch (ccol.alignment) { + case Nothing: + cvars[j].offset = (tv.name + ": ").length(); + cvars[j].nx += cvars[j].offset; + printValue(tv.name + ": ", tv.format); + break; + case Left: + cvars[j].offset = mx; + cvars[j].nx += cvars[j].offset; + printValue(tv.name + ": ", tv.format); + break; + case Right: + cvars[j].offset = mx; + cvars[j].nx += cvars[j].offset; + dx = mx - (tv.name + ": ").length(); + moveRight(dx); + printValue(tv.name + ": ", tv.format); + moveLeft(dx); + break; + } + } + newLine(); + cy++; + } + } +#ifdef WINDOWS + moveTo(0, max_y + 1); +#else + moveTo(0, max_y + 2); +#endif + if (!tabs[cur_tab].status.isEmpty()) { + printValue(tabs[cur_tab].status); + newLine(); + } + status(); + //fflush(0); +} + + +void PIConsole::status() { + Tab * ctab; + //clearLine(); + for (uint i = 0; i < tabsCount(); ++i) { + ctab = &tabs[i]; + if (ctab->key == 0) continue; + printValue(ctab->key, PIConsole::White | PIConsole::Bold); + if (i == cur_tab) + printValue(ctab->name + " ", PIConsole::BackYellow | PIConsole::Black); + else + printValue(ctab->name + " ", PIConsole::Cyan | PIConsole::Inverse); + printValue(" "); + } + newLine(); +} + + +int PIConsole::bitsValue(const void * src, int offset, int count) const { + int ret = 0, stbyte = offset / 8, cbit = offset - stbyte * 8; + char cbyte = reinterpret_cast(src)[stbyte]; + for (int i = 0; i < count; i++) { + ret |= ((cbyte >> cbit & 1) << i); + cbit++; + if (cbit == 8) { + cbit = 0; + stbyte++; + cbyte = reinterpret_cast(src)[stbyte]; + } + } + return ret; +} + + +const char * PIConsole::toBin(const void * d, int s) { + binstr.clear(); + uchar cc, b; + for (int i = 0; i < s; ++i) { + cc = ((const uchar *)d)[i]; + b = 1; + for (int j = 0; j < 8; ++j) { + binstr << (cc & b ? "1" : "0"); + b <<= 1; + } + if (i < s - 1) binstr << " "; + } + binstr.reverse(); + return binstr.data(); +} + + +#define ADD_VAR_BODY vid++; tv.id = vid; tv.name = name; tv.bitFrom = tv.bitCount = 0; tv.format = format; tv.remote = false; checkColumn(col); + +void PIConsole::addString(const PIString & name, int col, PIFlags format) { + ADD_VAR_BODY tv.type = 15; tv.size = 0; tv.ptr = 0; column(col).push_back(tv);} +void PIConsole::addVariable(const PIString & name, const PIString * ptr, int col, PIFlags format) { + ADD_VAR_BODY tv.type = 0; tv.size = 0; tv.ptr = ptr; column(col).push_back(tv);} +void PIConsole::addVariable(const PIString & name, const bool * ptr, int col, PIFlags format) { + ADD_VAR_BODY tv.type = 1; tv.size = sizeof(*ptr); tv.ptr = ptr; column(col).push_back(tv);} +void PIConsole::addVariable(const PIString & name, const int * ptr, int col, PIFlags format) { + ADD_VAR_BODY tv.type = 2; tv.size = sizeof(*ptr); tv.ptr = ptr; column(col).push_back(tv);} +void PIConsole::addVariable(const PIString & name, const long * ptr, int col, PIFlags format) { + ADD_VAR_BODY tv.type = 3; tv.size = sizeof(*ptr); tv.ptr = ptr; column(col).push_back(tv);} +void PIConsole::addVariable(const PIString & name, const char * ptr, int col, PIFlags format) { + ADD_VAR_BODY tv.type = 4; tv.size = sizeof(*ptr); tv.ptr = ptr; column(col).push_back(tv);} +void PIConsole::addVariable(const PIString & name, const float * ptr, int col, PIFlags format) { + ADD_VAR_BODY tv.type = 5; tv.size = sizeof(*ptr); tv.ptr = ptr; column(col).push_back(tv);} +void PIConsole::addVariable(const PIString & name, const double * ptr, int col, PIFlags format) { + ADD_VAR_BODY tv.type = 6; tv.size = sizeof(*ptr); tv.ptr = ptr; column(col).push_back(tv);} +void PIConsole::addVariable(const PIString & name, const short * ptr, int col, PIFlags format) { + ADD_VAR_BODY tv.type = 7; tv.size = sizeof(*ptr); tv.ptr = ptr; column(col).push_back(tv);} +void PIConsole::addVariable(const PIString & name, const uint * ptr, int col, PIFlags format) { + ADD_VAR_BODY tv.type = 8; tv.size = sizeof(*ptr); tv.ptr = ptr; column(col).push_back(tv);} +void PIConsole::addVariable(const PIString & name, const ulong * ptr, int col, PIFlags format) { + ADD_VAR_BODY tv.type = 9; tv.size = sizeof(*ptr); tv.ptr = ptr; column(col).push_back(tv);} +void PIConsole::addVariable(const PIString & name, const ushort * ptr, int col, PIFlags format) { + ADD_VAR_BODY tv.type = 10; tv.size = sizeof(*ptr); tv.ptr = ptr; column(col).push_back(tv);} +void PIConsole::addVariable(const PIString & name, const uchar * ptr, int col, PIFlags format) { + ADD_VAR_BODY tv.type = 11; tv.size = sizeof(*ptr); tv.ptr = ptr; column(col).push_back(tv);} +void PIConsole::addVariable(const PIString & name, const llong * ptr, int col, PIFlags format) { + ADD_VAR_BODY tv.type = 12; tv.size = sizeof(*ptr); tv.ptr = ptr; column(col).push_back(tv);} +void PIConsole::addVariable(const PIString & name, const ullong * ptr, int col, PIFlags format) { + ADD_VAR_BODY tv.type = 13; tv.size = sizeof(*ptr); tv.ptr = ptr; column(col).push_back(tv);} +void PIConsole::addVariable(const PIString & name, const PISystemTime * ptr, int col, PIFlags format) { + ADD_VAR_BODY tv.type = 20; tv.size = sizeof(*ptr); tv.ptr = ptr; column(col).push_back(tv);} +/** \brief Add to current tab to column "column" variable with label "name", pointer "ptr" and format "format" + * \details This function add to column "column" next lines: + * * "protocol " + * * "Rec - receiverDeviceName": \a PIProtocol::receiverDeviceState + * * "Send - senderDeviceName": \a PIProtocol::senderDeviceState + * * "Received count": \a PIProtocol::receiveCount + * * "Invalid count": \a PIProtocol::wrongCount + * * "Missed count": \a PIProtocol::missedCount + * * "Sended count": \a PIProtocol::sendCount + * * "Immediate Frequency, Hz": \a PIProtocol::immediateFrequency + * * "Integral Frequency, Hz": \a PIProtocol::integralFrequency + * * "Receive speed": \a PIProtocol::receiveSpeed + * * "Send speed": \a PIProtocol::sendSpeed + * * "Receiver history size": \a PIProtocol::receiverHistorySize + * * "Sender history size": \a PIProtocol::senderHistorySize + * * "Disconnect Timeout, s": \a PIProtocol::disconnectTimeout + * * "Quality": \a PIProtocol::quality + * */ +void PIConsole::addVariable(const PIString & name, const PIProtocol * ptr, int col, PIFlags format) { + addString("protocol " + name, col, format | PIConsole::Bold); + addVariable("Rec - " + ptr->receiverDeviceName(), ptr->receiverDeviceState_ptr(), col, format); + addVariable("Send - " + ptr->senderDeviceName(), ptr->senderDeviceState_ptr(), col, format); + addVariable("Received count", ptr->receiveCount_ptr(), col, format); + addVariable("Invalid count", ptr->wrongCount_ptr(), col, format); + addVariable("Missed count", ptr->missedCount_ptr(), col, format); + addVariable("Sended count", ptr->sendCount_ptr(), col, format); + addVariable("Immediate Frequency, Hz", ptr->immediateFrequency_ptr(), col, format); + addVariable("Integral Frequency, Hz", ptr->integralFrequency_ptr(), col, format); + addVariable("Receive speed", ptr->receiveSpeed_ptr(), col, format); + addVariable("Send speed", ptr->sendSpeed_ptr(), col, format); + addVariable("Receiver history size", ptr->receiverHistorySize_ptr(), col, format); + addVariable("Sender history size", ptr->senderHistorySize_ptr(), col, format); + addVariable("Disconnect Timeout, s", ptr->disconnectTimeout_ptr(), col, format); + addVariable("Quality", ptr->quality_ptr(), col, format); +} +/** \brief Add to current tab to column "column" variable with label "name", pointer "ptr" and format "format" + * \details This function add to column "column" next lines: + * * " diagnostics" + * * "Received count": \a PIDiagnostics::receiveCount + * * "Invalid count": \a PIDiagnostics::wrongCount + * * "Sended count": \a PIDiagnostics::sendCount + * * "Immediate Frequency, Hz": \a PIDiagnostics::immediateFrequency + * * "Integral Frequency, Hz": \a PIDiagnostics::integralFrequency + * * "Receive speed": \a PIDiagnostics::receiveSpeed + * * "Send speed": \a PIDiagnostics::sendSpeed + * * "Quality": \a PIDiagnostics::quality + * */ +void PIConsole::addVariable(const PIString & name, const PIDiagnostics * ptr, int col, PIFlags format) { + addString(name + " diagnostics", col, format | PIConsole::Bold); + addVariable("Received count", ptr->receiveCount_ptr(), col, format); + addVariable("Invalid count", ptr->wrongCount_ptr(), col, format); + addVariable("Sended count", ptr->sendCount_ptr(), col, format); + addVariable("Immediate Frequency, Hz", ptr->immediateFrequency_ptr(), col, format); + addVariable("Integral Frequency, Hz", ptr->integralFrequency_ptr(), col, format); + addVariable("Receive speed", ptr->receiveSpeed_ptr(), col, format); + addVariable("Send speed", ptr->sendSpeed_ptr(), col, format); + addVariable("Quality", ptr->quality_ptr(), col, format); +} +void PIConsole::addVariable(const PIString & name, const PISystemMonitor * ptr, int col, PIFlags format) { + addString("monitor " + name, col, format | PIConsole::Bold); + addVariable("state", &(ptr->statistic().state), col, format); + addVariable("threads", &(ptr->statistic().threads), col, format); + addVariable("priority", &(ptr->statistic().priority), col, format); + addVariable("memory physical", &(ptr->statistic().physical_memsize_readable), col, format); + addVariable("memory shared", &(ptr->statistic().share_memsize_readable), col, format); + addVariable("cpu load", &(ptr->statistic().cpu_load_user), col, format); +} +void PIConsole::addBitVariable(const PIString & name, const void * ptr, int fromBit, int bitCount, int col, PIFlags format) { + vid++; tv.id = vid; tv.size = sizeof(ullong); tv.name = name; tv.bitFrom = fromBit; tv.bitCount = bitCount; tv.type = 14; tv.ptr = ptr; tv.format = format; + checkColumn(col); column(col).push_back(tv);} +void PIConsole::addEmptyLine(int col, uint count) { + tv.id = 0; tv.size = 0; tv.name = ""; tv.type = 0; tv.ptr = 0; tv.format = Normal; + for (uint i = 0; i < count; ++i) { + checkColumn(col); + column(col).push_back(tv); + } +} + + +PIString PIConsole::getString(int x, int y) { + bool run = isRunning(); + if (run) PIThread::stop(true); + listener->setActive(false); + msleep(50); +#ifdef WINDOWS + moveTo(x - 1, y - 1); +#else + moveTo(x, y); +#endif + showCursor(); + PIByteArray ba(4096); +#ifdef CC_VC + int ret = scanf_s(" %s", ba.data()); +#else + int ret = scanf(" %s", ba.data()); +#endif + listener->setActive(true); + if (run) start(); + if (ret >= 1) return PIString(ba); + else return PIString(); +} + + +PIString PIConsole::getString(const PIString & name) { + piForeachC (Column & i, tabs[cur_tab].columns) + piForeachC (Variable & j, i.variables) + if (j.name == name) + return getString(j.nx + 1, j.ny); + return PIString(); +} + + +#define PRINT_VAR_BODY couts(fstr(format)); int ret = couts(value); couts(fstr(PIConsole::Dec)); return ret; + +inline void PIConsole::printLine(const PIString & value, int dx, PIFlags format) { + int i = width - value.length() - dx; +#if defined(QNX) || defined(FREE_BSD) + --i; +#endif + PIString ts = fstr(format); + couts(ts); + if (i >= 0) ts = value + PIString(i, ' '); + else ts = value.left(value.size() + i); + couts(ts); + couts(fstr(Dec)); +} +inline int PIConsole::printValue(const PIString & value, PIFlags format) { + couts(fstr(format)); + int ret = couts(value); + fstr(PIConsole::Dec); + return ret; +} +inline int PIConsole::printValue(const char * value, PIFlags format) {PRINT_VAR_BODY} +inline int PIConsole::printValue(const bool value, PIFlags format) {PRINT_VAR_BODY} +inline int PIConsole::printValue(const int value, PIFlags format) {PRINT_VAR_BODY} +inline int PIConsole::printValue(const long value, PIFlags format) {PRINT_VAR_BODY} +inline int PIConsole::printValue(const llong value, PIFlags format) {PRINT_VAR_BODY} +inline int PIConsole::printValue(const float value, PIFlags format) {PRINT_VAR_BODY} +inline int PIConsole::printValue(const double value, PIFlags format) {PRINT_VAR_BODY} +inline int PIConsole::printValue(const char value, PIFlags format) {PRINT_VAR_BODY} +inline int PIConsole::printValue(const short value, PIFlags format) {PRINT_VAR_BODY} +inline int PIConsole::printValue(const uchar value, PIFlags format) {PRINT_VAR_BODY} +inline int PIConsole::printValue(const ushort value, PIFlags format) {PRINT_VAR_BODY} +inline int PIConsole::printValue(const uint value, PIFlags format) {PRINT_VAR_BODY} +inline int PIConsole::printValue(const ulong value, PIFlags format) {PRINT_VAR_BODY} +inline int PIConsole::printValue(const ullong value, PIFlags format) {PRINT_VAR_BODY} +inline int PIConsole::printValue(const PISystemTime & value, PIFlags format) {PRINT_VAR_BODY} + + + +void PIConsole::startServer(const PIString & name) { + stopPeer(); + server_mode = true; + peer = new PIPeer("_rcs_:" + name); + CONNECT2(void, const PIString & , const PIByteArray &, peer, dataReceivedEvent, this, peerReceived); + CONNECT1(void, const PIString & , peer, peerDisconnectedEvent, this, peerDisconnectedEvent); + peer_timer.start(50.); + serverSendInfo(); +} + + +void PIConsole::stopPeer() { + remote_clients.clear(); + peer_timer.stop(); + if (peer != 0) delete peer; + peer = 0; + state = Disconnected; +} + + +PIStringList PIConsole::clients() const { + PIStringList sl; + if (peer == 0) return sl; + piForeachC (PIPeer::PeerInfo & i, peer->allPeers()) { + if (i.name.left(6) != "_rcc_:") continue; + sl << i.name.right(i.name.length() - 6); + } + return sl; +} + + +void PIConsole::listenServers() { + stopPeer(); + server_mode = false; + server_name.clear(); + srand(PISystemTime::current().nanoseconds); + peer = new PIPeer("_rcc_:" + PIDateTime::current().toString("hhmmssddMMyy_") + PIString::fromNumber(rand())); + CONNECT2(void, const PIString & , const PIByteArray &, peer, dataReceivedEvent, this, peerReceived); + peer_timer.start(100.); +} + + +PIStringList PIConsole::availableServers() const { + PIStringList sl; + if (peer == 0) return sl; + piForeachC (PIPeer::PeerInfo & i, peer->allPeers()) { + if (i.name.left(6) != "_rcs_:") continue; + sl << i.name.right(i.name.length() - 6); + } + return sl; +} + + +void PIConsole::connectToServer(const PIString & name) { + if (peer == 0) listenServers(); + server_name = name; +} + + +void PIConsole::disconnect() { + stopPeer(); +} + + +void PIConsole::serverSendInfo() { + if (peer == 0) return; + PIByteArray ba; + ba << int(0xAA); + peer->sendToAll(ba); +} + + +void PIConsole::serverSendData() { + if (peer == 0) return; + PIByteArray ba; + PIVector content; + piForeach (Tab & t, tabs) + piForeach (Column & c, t.columns) + piForeach (Variable & v, c.variables) + if (!v.isEmpty() && v.id > 0) { + VariableContent vc; + vc.id = v.id; + v.writeData(vc.rdata); + content << vc; + } + piForeach (RemoteClient & rc, remote_clients) { + ba.clear(); + switch (rc.state) { + case FetchingData: + ba << int(0xCC) << tabs; + //piCout << "server send const data" << rc.name << ba.size_s(); + break; + case Committing: + ba << int(0xDD); + break; + case Connected: + ba << int(0xEE) << content; + //piCout << "send data" << ba.size(); + break; + default: break; + } + if (!ba.isEmpty()) + peer->send(rc.name, ba); + } +} + + +PIConsole::RemoteClient & PIConsole::remoteClient(const PIString & fname) { + piForeach (RemoteClient & i, remote_clients) + if (i.name == fname) + return i; + remote_clients << RemoteClient(fname); + return remote_clients.back(); +} + + +void PIConsole::peerReceived(const PIString & from, const PIByteArray & data) { + int type; + PIByteArray ba(data); + ba >> type; + //piCout << "rec packet from" << from << "type" << PICoutManipulators::Hex << type; + if (server_mode) { + if (from.left(5) != "_rcc_") return; + //PIString rcn = from.right(from.length() - 6); + RemoteClient & rc(remoteClient(from)); + switch (type) { + case 0xBB: // fetch const data request + //piCout << "fetch data request from" << from << rc.state; + if (rc.state != Connected) + rc.state = FetchingData; + break; + case 0xCC: // const data commit + //piCout << "commit from" << from; + if (rc.state != Connected) + rc.state = Connected; + break; + default: break; + } + } else { + PIVector content; + PIMap vids; + if (from.left(5) != "_rcs_") return; + PIString rcn = from.right(from.length() - 6); + switch (type) { + case 0xAA: // new server + //piCout << "new server" << rcn; + break; + case 0xCC: // const data + //piCout << "received const data"; + state = Committing; + ba >> tabs; + cur_tab = tabs.isEmpty() ? -1 : 0; + piForeach (Tab & t, tabs) + piForeach (Column & c, t.columns) + piForeach (Variable & v, c.variables) + v.remote = true; + break; + case 0xDD: // const data commit + //piCout << "received commit"; + state = Connected; + break; + case 0xEE: // dynamic data + //piCout << "received data" << ba.size_s(); + piForeach (Tab & t, tabs) + piForeach (Column & c, t.columns) + piForeach (Variable & v, c.variables) + if (!v.isEmpty() && v.id > 0) + vids[v.id] = &v; + ba >> content; + piForeach (VariableContent & vc, content) { + if (vc.id <= 0) continue; + Variable * v = vids.at(vc.id); + if (v == 0) continue; + //piCout << "read" << v->name << vc.rdata.size_s(); + v->rdata = vc.rdata; + } + break; + default: break; + } + } +} + + +void PIConsole::peerTimer(void * data, int delim) { + if (peer == 0) return; + //piCout << "timer" << delim; + if (server_mode) { + if (delim == 20) + serverSendInfo(); + else + serverSendData(); + } else { + if (delim != 1 || server_name.isEmpty()) return; + const PIPeer::PeerInfo * p = peer->getPeerByName("_rcs_:" + server_name); + if (p == 0) return; + PIByteArray ba; + switch (state) { + case Disconnected: + peer_timer.reset(); + ba << int(0xBB); + //piCout << "send to" << server_name << "fetch request disc"; + peer->send(p, ba); + state = FetchingData; + break; + case FetchingData: + if (peer_timer.elapsed_s() < 3.) + return; + peer_timer.reset(); + ba << int(0xBB); + //piCout << "send to" << server_name << "fetch request fd"; + peer->send(p, ba); + break; + case Committing: + peer_timer.reset(); + ba << int(0xCC); + //piCout << "send to" << server_name << "committing"; + state = Connected; + peer->send(p, ba); + break; + default: break; + }; + } +} + + +void PIConsole::peerDisconnectedEvent(const PIString & name) { + for (int i = 0; i < remote_clients.size_s(); ++i) + if (remote_clients[i].name == name) { + remote_clients.remove(i); + --i; + } +} diff --git a/_oldpip/pip_0.4.0_r5/piconsole.h b/_oldpip/pip_0.4.0_r5/piconsole.h new file mode 100644 index 0000000..429fdd5 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/piconsole.h @@ -0,0 +1,489 @@ +/*! \file piconsole.h + * \brief Console output class +*/ +/* + PIP - Platform Independent Primitives + Console output/input + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +#ifndef PICONSOLE_H +#define PICONSOLE_H + +#include "pikbdlistener.h" +#include "piprotocol.h" +#include "pidiagnostics.h" +#include "pisystemmonitor.h" +#ifndef WINDOWS +# include +# include +#else +# define COMMON_LVB_UNDERSCORE 0x8000 +#endif + +class PIPeer; + +class PIP_EXPORT PIConsole: public PIThread +{ + PIOBJECT(PIConsole) +public: + + //! Constructs %PIConsole with key handler "slot" and if "startNow" start it + PIConsole(bool startNow = true, KBFunc slot = 0); + + ~PIConsole(); + + + //! Variables output format + enum Format { + Normal /** Default console format */ = 0x01, + Bold /** Bold text */ = 0x02, + Faint = 0x04, + Italic = 0x08, + Underline /** Underlined text */ = 0x10, + Blink /** Blinked text */ = 0x20, + Inverse /** Swap text and background colors */ = 0x40, + Black /** Black text */ = 0x100, + Red /** Red text */ = 0x200, + Green /** Green text */ = 0x400, + Yellow /** Yellow text */ = 0x800, + Blue /** Blue text */ = 0x1000, + Magenta /** Magenta text */ = 0x2000, + Cyan /** Cyan text */ = 0x4000, + White /** White text */ = 0x8000, + BackBlack /** Black background */ = 0x10000, + BackRed /** Red background */ = 0x20000, + BackGreen /** Green background */ = 0x40000, + BackYellow /** Yellow background */ = 0x80000, + BackBlue /** Blue background */ = 0x100000, + BackMagenta /** Magenta background */ = 0x200000, + BackCyan /** Cyan background */ = 0x400000, + BackWhite /** White background */ = 0x800000, + Dec /** Decimal base for integers */ = 0x1000000, + Hex /** Hexadecimal base for integers */ = 0x2000000, + Oct /** Octal base for integers */ = 0x4000000, + Bin /** Binary base for integers */ = 0x8000000, + Scientific /** Scientific representation of floats */ = 0x10000000, + SystemTimeSplit /** PISystemTime split representation (* s, * ns) */ = 0x20000000, + SystemTimeSeconds /** PISystemTime seconds representation (*.* s) */ = 0x40000000 + }; + + //! Column labels alignment + enum Alignment { + Nothing /** No alignment */ , + Left /** Labels align left and variables align left */ , + Right /** Labels align right and variables align left */ + }; + + //! Add to current tab to column "column" string "name" with format "format" + void addString(const PIString & name, int column = 1, PIFlags format = PIConsole::Normal); + + //! Add to current tab to column "column" variable with label "name", pointer "ptr" and format "format" + void addVariable(const PIString & name, const PIString * ptr, int column = 1, PIFlags format = PIConsole::Normal); + + //! Add to current tab to column "column" variable with label "name", pointer "ptr" and format "format" + void addVariable(const PIString & name, const char * ptr, int column = 1, PIFlags format = PIConsole::Normal); + + //! Add to current tab to column "column" variable with label "name", pointer "ptr" and format "format" + void addVariable(const PIString & name, const bool * ptr, int column = 1, PIFlags format = PIConsole::Normal); + + //! Add to current tab to column "column" variable with label "name", pointer "ptr" and format "format" + void addVariable(const PIString & name, const short * ptr, int column = 1, PIFlags format = PIConsole::Normal); + + //! Add to current tab to column "column" variable with label "name", pointer "ptr" and format "format" + void addVariable(const PIString & name, const int * ptr, int column = 1, PIFlags format = PIConsole::Normal); + + //! Add to current tab to column "column" variable with label "name", pointer "ptr" and format "format" + void addVariable(const PIString & name, const long * ptr, int column = 1, PIFlags format = PIConsole::Normal); + + //! Add to current tab to column "column" variable with label "name", pointer "ptr" and format "format" + void addVariable(const PIString & name, const llong * ptr, int column = 1, PIFlags format = PIConsole::Normal); + + //! Add to current tab to column "column" variable with label "name", pointer "ptr" and format "format" + void addVariable(const PIString & name, const uchar * ptr, int column = 1, PIFlags format = PIConsole::Normal); + + //! Add to current tab to column "column" variable with label "name", pointer "ptr" and format "format" + void addVariable(const PIString & name, const ushort * ptr, int column = 1, PIFlags format = PIConsole::Normal); + + //! Add to current tab to column "column" variable with label "name", pointer "ptr" and format "format" + void addVariable(const PIString & name, const uint * ptr, int column = 1, PIFlags format = PIConsole::Normal); + + //! Add to current tab to column "column" variable with label "name", pointer "ptr" and format "format" + void addVariable(const PIString & name, const ulong * ptr, int column = 1, PIFlags format = PIConsole::Normal); + + //! Add to current tab to column "column" variable with label "name", pointer "ptr" and format "format" + void addVariable(const PIString & name, const ullong * ptr, int column = 1, PIFlags format = PIConsole::Normal); + + //! Add to current tab to column "column" variable with label "name", pointer "ptr" and format "format" + void addVariable(const PIString & name, const float * ptr, int column = 1, PIFlags format = PIConsole::Normal); + + //! Add to current tab to column "column" variable with label "name", pointer "ptr" and format "format" + void addVariable(const PIString & name, const double * ptr, int column = 1, PIFlags format = PIConsole::Normal); + + //! Add to current tab to column "column" variable with label "name", pointer "ptr" and format "format" + void addVariable(const PIString & name, const PISystemTime * ptr, int column = 1, PIFlags format = PIConsole::Normal); + + void addVariable(const PIString & name, const PIProtocol * ptr, int column = 1, PIFlags format = PIConsole::Normal); + void addVariable(const PIString & name, const PIDiagnostics * ptr, int column = 1, PIFlags format = PIConsole::Normal); + void addVariable(const PIString & name, const PISystemMonitor * ptr, int column = 1, PIFlags format = PIConsole::Normal); + + //! Add to current tab to column "column" bits field with label "name", pointer "ptr" and format "format" + void addBitVariable(const PIString & name, const void * ptr, int fromBit, int bitsCount, int column = 1, PIFlags format = PIConsole::Normal); + + //! Add to current tab to column "column" "count" empty lines + void addEmptyLine(int column = 1, uint count = 1); + + PIString getString(int x, int y); + short getShort(int x, int y) {return getString(x, y).toShort();} + int getInt(int x, int y) {return getString(x, y).toInt();} + float getFloat(int x, int y) {return getString(x, y).toFloat();} + double getDouble(int x, int y) {return getString(x, y).toDouble();} + PIString getString(const PIString & name); + short getShort(const PIString & name) {return getString(name).toShort();} + int getInt(const PIString & name) {return getString(name).toInt();} + float getFloat(const PIString & name) {return getString(name).toFloat();} + double getDouble(const PIString & name) {return getString(name).toDouble();} + + + //! Returns tabs count + uint tabsCount() const {return tabs.size();} + + //! Returns current tab name + PIString currentTab() const {return tabs[cur_tab].name;} + + //! Add new tab with name "name", bind key "bind_key" and returns this tab index + int addTab(const PIString & name, char bind_key = 0); + + //! Remove tab with index "index" + void removeTab(uint index); + + //! Remove tab with name "name" + void removeTab(const PIString & name); + + //! Set current tab to tab with index "index", returns if tab exists + bool setTab(uint index); + + //! Set current tab to tab with name "name", returns if tab exists + bool setTab(const PIString & name); + + //! Set tab with index "index" bind key to "bind_key", returns if tab exists + bool setTabBindKey(uint index, char bind_key); + + //! Set tab with name "name" bind key to "bind_key", returns if tab exists + bool setTabBindKey(const PIString & name, char bind_key); + + //! Remove all tabs and if "clearScreen" clear the screen + void clearTabs(bool clearScreen = true) {if (clearScreen && isRunning()) {toUpperLeft(); clearScreenLower();} tabs.clear();} + + + //! Set custom status text of current tab to "str" + void addCustomStatus(const PIString & str) {tabs[cur_tab].status = str;} + + //! Clear custom status text of current tab + void clearCustomStatus() {tabs[cur_tab].status.clear();} + + //! Returns default alignment + Alignment defaultAlignment() const {return def_align;} + + //! Set default alignment to "align" + void setDefaultAlignment(Alignment align) {def_align = align;} + + //! Set column "col" alignment to "align" + void setColumnAlignment(int col, Alignment align) {if (col < 0 || col >= columns().size_s()) return; column(col).alignment = align;} + + //! Set all columns of all tabs alignment to "align" + void setColumnAlignmentToAll(Alignment align) {piForeach (Tab & i, tabs) piForeach (Column & j, i.columns) j.alignment = align; fillLabels();} + PIString fstr(PIFlags f); + + + //! Directly call function from \a PIKbdListener + void enableExitCapture(char key = 'Q') {listener->enableExitCapture(key);} + + //! Directly call function from \a PIKbdListener + void disableExitCapture() {listener->disableExitCapture();} + + //! Directly call function from \a PIKbdListener + bool exitCaptured() const {return listener->exitCaptured();} + + //! Directly call function from \a PIKbdListener + char exitKey() const {return listener->exitKey();} + + // Server functions + void startServer(const PIString & name); + void stopPeer(); + bool isServerStarted() const {return peer != 0;} + PIStringList clients() const; + + // Client functions + void listenServers(); + PIStringList availableServers() const; + PIString selectedServer() const {return server_name;} + void connectToServer(const PIString & name); + void disconnect(); + bool isConnected() const {return state == Connected;} + +#ifdef WINDOWS + void toUpperLeft() {SetConsoleCursorPosition(hOut, ulcoord);} + void moveRight(int n = 1) {SetConsoleCursorPosition(hOut, getWinCoord(n));} + void moveLeft(int n = 1) {SetConsoleCursorPosition(hOut, getWinCoord(-n));} + void moveTo(int x = 0, int y = 0) {ccoord.X = x; ccoord.Y = ulcoord.Y + y; SetConsoleCursorPosition(hOut, ccoord);} + void clearScreen() {toUpperLeft(); FillConsoleOutputAttribute(hOut, dattr, width * (height + 1), ulcoord, &written); + FillConsoleOutputCharacter(hOut, ' ', width * (height + 1), ulcoord, &written);} + void clearScreenLower() {getWinCurCoord(); FillConsoleOutputAttribute(hOut, dattr, width * height - width * ccoord.Y + ccoord.X, ccoord, &written); + FillConsoleOutputCharacter(hOut, ' ', width * height - width * ccoord.Y + ccoord.X, ccoord, &written);} + void clearLine() {getWinCurCoord(); FillConsoleOutputAttribute(hOut, dattr, width - ccoord.X, ccoord, &written); + FillConsoleOutputCharacter(hOut, ' ', width - ccoord.X, ccoord, &written);} + void newLine() {getWinCurCoord(); ccoord.X = 0; ccoord.Y++; SetConsoleCursorPosition(hOut, ccoord);} + void hideCursor() {curinfo.bVisible = false; SetConsoleCursorInfo(hOut, &curinfo);} + void showCursor() {curinfo.bVisible = true; SetConsoleCursorInfo(hOut, &curinfo);} +#else + void toUpperLeft() {printf("\e[H");} + void moveRight(int n = 1) {if (n > 0) printf("\e[%dC", n);} + void moveLeft(int n = 1) {if (n > 0) printf("\e[%dD", n);} + void moveTo(int x = 0, int y = 0) {printf("\e[%d;%dH", y, x);} + void clearScreen() {printf("\e[H\e[J");} + void clearScreenLower() {printf("\e[J");} + void clearLine() {printf("\e[K");} + void newLine() {printf("\eE");} + void hideCursor() {printf("\e[?25l");} + void showCursor() {printf("\e[?25h");} +#endif + + EVENT_HANDLER0(void, clearVariables) {clearVariables(true);} + EVENT_HANDLER1(void, clearVariables, bool, clearScreen) {if (clearScreen && isRunning()) {toUpperLeft(); clearScreenLower();} columns().clear();} + + EVENT_HANDLER0(void, waitForFinish) {WAIT_FOR_EXIT} + EVENT_HANDLER0(void, start) {start(false);} + EVENT_HANDLER1(void, start, bool, wait) {PIThread::start(40); if (wait) waitForFinish();} + EVENT_HANDLER0(void, stop) {stop(false);} + EVENT_HANDLER1(void, stop, bool, clear); + + EVENT2(keyPressed, char, key, void * , data) + +//! \handlers +//! \{ + + //! \fn void waitForFinish() + //! \brief block until finished (exit key will be pressed) + + //! \fn void clearVariables(bool clearScreen = true) + //! \brief Remove all columns at current tab and if "clearScreen" clear the screen + + //! \fn void start(bool wait = false) + //! \brief Start console output and if "wait" block until finished (exit key will be pressed) + + //! \fn void stop(bool clear = false) + //! \brief Stop console output and if "clear" clear the screen + +//! \} +//! \events +//! \{ + + //! \fn void keyPressed(char key, void * data) + //! \brief Raise on key "key" pressed, "data" is pointer to %PIConsole object + +//! \} + +private: +#ifdef WINDOWS + void getWinCurCoord() {GetConsoleScreenBufferInfo(hOut, &csbi); ccoord = csbi.dwCursorPosition;} + COORD & getWinCoord(int dx = 0, int dy = 0) {getWinCurCoord(); ccoord.X += dx; ccoord.Y += dy; return ccoord;} +#endif + + void begin(); + void run(); + void fillLabels(); + void status(); + void checkColumn(uint col) {while (columns().size() < col) columns().push_back(Column(def_align));} + int bitsValue(const void * src, int offset, int count) const; + const char * toBin(const void * d, int s); + inline void printLine(const PIString & str, int dx = 0, PIFlags format = PIConsole::Normal); + inline int printValue(const PIString & str, PIFlags format = PIConsole::Normal); + inline int printValue(const char * str, PIFlags format = PIConsole::Normal); + inline int printValue(const bool value, PIFlags format = PIConsole::Normal); + inline int printValue(const int value, PIFlags format = PIConsole::Normal); + inline int printValue(const long value, PIFlags format = PIConsole::Normal); + inline int printValue(const llong value, PIFlags format = PIConsole::Normal); + inline int printValue(const float value, PIFlags format = PIConsole::Normal); + inline int printValue(const double value, PIFlags format = PIConsole::Normal); + inline int printValue(const char value, PIFlags format = PIConsole::Normal); + inline int printValue(const short value, PIFlags format = PIConsole::Normal); + inline int printValue(const uchar value, PIFlags format = PIConsole::Normal); + inline int printValue(const ushort value, PIFlags format = PIConsole::Normal); + inline int printValue(const uint value, PIFlags format = PIConsole::Normal); + inline int printValue(const ulong value, PIFlags format = PIConsole::Normal); + inline int printValue(const ullong value, PIFlags format = PIConsole::Normal); + inline int printValue(const PISystemTime & value, PIFlags format = PIConsole::Normal); + static void key_event(char key, void * t); + + struct Variable { + Variable() {nx = ny = type = offset = bitFrom = bitCount = size = 0; format = Normal; remote = false; ptr = 0; id = 1;} + bool isEmpty() const {return (remote ? false : ptr == 0);} + const void * data() {return (remote ? rdata.data() : ptr);} + void writeData(PIByteArray & ba) { + if (remote) ba << rdata; + else { + if (type == 0) ba << (*(PIString * )ptr); + else ba << PIByteArray::RawData(ptr, size); + } + } + PIString name; + PIFlags format; + int nx; + int ny; + int type; + int offset; + int bitFrom; + int bitCount; + int size; + int id; + bool remote; + const void * ptr; + PIByteArray rdata; + void operator =(const Variable & src) {remote = src.remote; name = src.name; format = src.format; type = src.type; offset = src.offset; size = src.size; + bitFrom = src.bitFrom; bitCount = src.bitCount; ptr = src.ptr; nx = src.nx; ny = src.ny; rdata = src.rdata; id = src.id;} + }; + + struct VariableContent { + int id; + PIByteArray rdata; + }; + + struct Column { + Column(Alignment align = PIConsole::Right) {variables.reserve(16); alignment = align;} + PIVector variables; + Alignment alignment; + uint size() const {return variables.size();} + Variable & operator [](int index) {return variables[index];} + const Variable & operator [](int index) const {return variables[index];} + void push_back(const Variable & v) {variables.push_back(v);} + void operator =(const Column & src) {variables = src.variables; alignment = src.alignment;} + }; + + struct Tab { + Tab(PIString n = "", char k = 0) {columns.reserve(16); name = n; key = k;} + PIVector columns; + PIString name; + PIString status; + char key; + }; + + enum ConnectedState {Disconnected, FetchingData, Committing, Connected}; + + friend PIByteArray & operator <<(PIByteArray & ba, const PIConsole::VariableContent & v); + friend PIByteArray & operator >>(PIByteArray & ba, PIConsole::VariableContent & v); + + friend PIByteArray & operator <<(PIByteArray & ba, const PIConsole::Variable & v); + friend PIByteArray & operator >>(PIByteArray & ba, PIConsole::Variable & v); + + friend PIByteArray & operator <<(PIByteArray & ba, const PIConsole::Column & v); + friend PIByteArray & operator >>(PIByteArray & ba, PIConsole::Column & v); + + friend PIByteArray & operator <<(PIByteArray & ba, const PIConsole::Tab & v); + friend PIByteArray & operator >>(PIByteArray & ba, PIConsole::Tab & v); + + PIVector & columns() {return tabs[cur_tab].columns;} + Column & column(int index) {return tabs[cur_tab].columns[index - 1];} + inline int couts(const PIString & v); + inline int couts(const char * v); + inline int couts(const bool v); + inline int couts(const char v); + inline int couts(const short v); + inline int couts(const int v); + inline int couts(const long v); + inline int couts(const llong v); + inline int couts(const uchar v); + inline int couts(const ushort v); + inline int couts(const uint v); + inline int couts(const ulong v); + inline int couts(const ullong v); + inline int couts(const float v); + inline int couts(const double v); + inline int couts(const PISystemTime & v); + + struct RemoteClient; + + void serverSendInfo(); + void serverSendData(); + RemoteClient & remoteClient(const PIString & fname); + EVENT_HANDLER2(void, peerReceived, const PIString &, from, const PIByteArray &, data); + EVENT_HANDLER2(void, peerTimer, void * , data, int, delim); + EVENT_HANDLER1(void, peerDisconnectedEvent, const PIString &, name); + +#ifdef WINDOWS + void * hOut; + CONSOLE_SCREEN_BUFFER_INFO sbi, csbi; + CONSOLE_CURSOR_INFO curinfo; + COORD ccoord, ulcoord; + WORD dattr; + DWORD smode, written; +#else + struct termios sterm, vterm; +#endif + PIVector tabs; + PIString binstr, rstr; + PIByteArray rba; + Variable tv; + PIKbdListener * listener; + Alignment def_align; + KBFunc ret_func; + int width, height, pwidth, pheight, ret, col_wid, num_format, systime_format; + uint max_y; + int vid; + uint cur_tab, col_cnt; + + PIPeer * peer; + PITimer peer_timer; + PIString server_name; + bool server_mode; + ConnectedState state; + + /*struct RemoteData { + RemoteData() {msg_count = msg_rec = msg_send = 0;} + void clear() {msg_count = msg_rec = msg_send = 0; data.clear();} + bool isEmpty() const {return msg_count == 0;} + bool isReadyRec() const {return msg_count == msg_rec;} + bool isReadySend() const {return msg_count == msg_send;} + void setData(const PIByteArray & ba) {data = ba; msg_rec = msg_send = 0; msg_count = (data.size_s() - 1) / 4096 + 1;} + PIByteArray data; + int msg_count; + int msg_rec; + int msg_send; + };*/ + + struct RemoteClient { + RemoteClient(const PIString & n = "") {name = n; state = Disconnected;} + PIString name; + ConnectedState state; + }; + + PIVector remote_clients; + +}; + +inline PIByteArray & operator <<(PIByteArray & ba, const PIConsole::VariableContent & v) {ba << v.id << v.rdata; return ba;} +inline PIByteArray & operator >>(PIByteArray & ba, PIConsole::VariableContent & v) {ba >> v.id; ba >> v.rdata; return ba;} + +inline PIByteArray & operator <<(PIByteArray & ba, const PIConsole::Variable & v) {ba << v.name << v.id << (int)v.format << v.type << v.size << v.bitFrom << v.bitCount; return ba;} +inline PIByteArray & operator >>(PIByteArray & ba, PIConsole::Variable & v) {ba >> v.name >> v.id >> (int & )v.format >> v.type >> v.size >> v.bitFrom >> v.bitCount; return ba;} + +inline PIByteArray & operator <<(PIByteArray & ba, const PIConsole::Column & v) {ba << (int)v.alignment << v.variables; return ba;} +inline PIByteArray & operator >>(PIByteArray & ba, PIConsole::Column & v) {ba >> (int & )v.alignment >> v.variables; return ba;} + +inline PIByteArray & operator <<(PIByteArray & ba, const PIConsole::Tab & v) {ba << v.name << v.status << (uchar)v.key << v.columns; return ba;} +inline PIByteArray & operator >>(PIByteArray & ba, PIConsole::Tab & v) {ba >> v.name >> v.status >> (uchar&)v.key >> v.columns; return ba;} + +#endif // PICONSOLE_H diff --git a/_oldpip/pip_0.4.0_r5/picontainers.cpp b/_oldpip/pip_0.4.0_r5/picontainers.cpp new file mode 100644 index 0000000..bf43856 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/picontainers.cpp @@ -0,0 +1,177 @@ +/* + PIP - Platform Independent Primitives + Generic containers + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +// * This class based on std::vector, expanding his functionality + +#include "pivector.h" + +/** \class PIVector + * \brief Dynamic array of any type + * \details This class used to store dynamic array of any + * type of data. In memory data stored linear. You can insert + * item in any place of remove some items from any place. + * For quick add elements this is stream operator <<. + + * \fn PIVector::PIVector(); + * Contructs an empty vector + + * \fn PIVector::PIVector(ullong size, const Type & value = Type()); + * \brief Contructs vector with size "size" filled elements "value" + * \details Example: \snippet picontainers.cpp PIVector::PIVector + + * \fn const Type & PIVector::at(ullong index) const; + * \brief Read-only access to element by index "index" + * \details Example: \snippet picontainers.cpp PIVector::at_c + * \sa \a operator[] + + * \fn Type & PIVector::at(ullong index); + * \brief Full access to element by index "index" + * \details Example: \snippet picontainers.cpp PIVector::at + * \sa \a operator[] + + * \fn const Type * PIVector::data(ullong index = 0) const; + * \brief Read-only pointer to element by index "index" + * \details Example: \snippet picontainers.cpp PIVector::data_c + + * \fn Type * PIVector::data(ullong index = 0); + * \brief Pointer to element by index "index" + * \details Example: \snippet picontainers.cpp PIVector::data + + * \fn ullong PIVector::size() const; + * \brief Elements count + + * \fn int PIVector::size_s() const; + * \brief Elements count + + * \fn bool PIVector::isEmpty() const; + * \brief Return \c "true" if vector is empty, i.e. size = 0 + + * \fn bool PIVector::has(const Type & t) const; + + * \fn bool PIVector::contains(const Type & v) const; + * \brief Return \c "true" if vector has at least one element equal "t" + + * \fn int PIVector::etries(const Type & t) const; + * \brief Return how many times element "t" appears in vector + + * \fn static int PIVector::compare_func(const Type * t0, const Type * t1); + * \brief Standard compare function for type "Type". Return 0 if t0 = t1, -1 if t0 < t1 and 1 if t0 > t1. + + * \fn void PIVector::resize(ullong size, const Type & new_type = Type()); + * \brief Resize vector to size "size" + * \details Elements removed from end of vector if new size < old size, or added new elements = "new_type" if new size > old size.\n + * Example: \snippet picontainers.cpp PIVector::resize + * \sa \a size(), \a clear() + + * \fn PIVector & PIVector::enlarge(ullong size); + * \brief Increase vector size with "size" elements + + * \fn void PIVector::clear(); + * \brief Clear vector. Equivalent to call "resize(0)" + + * \fn PIVector & PIVector::sort(CompareFunc compare = compare_func); + * \brief Sort vector using quick sort algorithm and standard compare function + * \details Example: \snippet picontainers.cpp PIVector::sort_0 + * With custom compare function: \snippet picontainers.cpp PIVector::sort_1 + + * \fn PIVector & PIVector::fill(const Type & t); + * \brief Fill vector with elements "t" leave size is unchanged and return reference to vector + * \details Example: \snippet picontainers.cpp PIVector::fill + + * \fn Type & PIVector::back(); + * \brief Last element of the vector + + * \fn const Type & PIVector::back() const; + * \brief Last element of the vector + + * \fn Type & PIVector::front(); + * \brief First element of the vector + + * \fn const Type & PIVector::front() const; + * \brief First element of the vector + + * \fn PIVector & PIVector::push_back(const Type & t); + * \brief Add new element "t" at the end of vector and return reference to vector + + * \fn PIVector & PIVector::push_front(const Type & t); + * \brief Add new element "t" at the beginning of vector and return reference to vector + + * \fn PIVector & PIVector::pop_back(); + * \brief Remove one element from the end of vector and return reference to vector + + * \fn PIVector & PIVector::pop_front(); + * \brief Remove one element from the beginning of vector and return reference to vector + + * \fn Type PIVector::take_back(); + * \brief Remove one element from the end of vector and return it + + * \fn Type PIVector::take_front(); + * \brief Remove one element from the beginning of vector and return it + + * \fn PIVector & PIVector::remove(uint index); + * \brief Remove one element by index "index" and return reference to vector + * \details Example: \snippet picontainers.cpp PIVector::remove_0 + * \sa \a removeOne(), \a removeAll() + + * \fn PIVector & PIVector::remove(uint index, uint count); + * \brief Remove "count" elements by first index "index" and return reference to vector + * \details Example: \snippet picontainers.cpp PIVector::remove_1 + * \sa \a removeOne(), \a removeAll() + + * \fn PIVector & PIVector::removeOne(const Type & v); + * \brief Remove no more than one element equal "v" and return reference to vector + * \details Example: \snippet picontainers.cpp PIVector::removeOne + * \sa \a remove(), \a removeAll() + + * \fn PIVector & PIVector::removeAll(const Type & v); + * \brief Remove all elements equal "v" and return reference to vector + * \details Example: \snippet picontainers.cpp PIVector::removeAll + * \sa \a remove(), \a removeOne() + + * \fn PIVector & PIVector::insert(uint pos, const Type & t); + * \brief Insert element "t" after index "pos" and return reference to vector + * \details Example: \snippet picontainers.cpp PIVector::insert_0 + + * \fn PIVector & PIVector::insert(uint pos, const PIVector & t); + * \brief Insert other vector "t" after index "pos" and return reference to vector + * \details Example: \snippet picontainers.cpp PIVector::insert_1 + + * \fn Type & PIVector::operator [](uint index); + * \brief Full access to element by index "index" + * \details Example: \snippet picontainers.cpp PIVector::() + * \sa \a at() + + * \fn const Type & PIVector::operator [](uint index) const; + * \brief Read-only access to element by index "index" + * \details Example: \snippet picontainers.cpp PIVector::()_c + * \sa \a at() + + * \fn PIVector & PIVector::operator <<(const Type & t); + * \brief Add new element "t" at the end of vector and return reference to vector + + * \fn PIVector & PIVector::operator <<(const PIVector & t); + * \brief Add vector "t" at the end of vector and return reference to vector + + * \fn bool PIVector::operator ==(const PIVector & t); + * \brief Compare with vector "t" + + * \fn bool PIVector::operator !=(const PIVector & t); + * \brief Compare with vector "t" + + * */ diff --git a/_oldpip/pip_0.4.0_r5/picontainers.h b/_oldpip/pip_0.4.0_r5/picontainers.h new file mode 100644 index 0000000..2ecb6e8 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/picontainers.h @@ -0,0 +1,324 @@ +/*! \file picontainers.h + * \brief Generic containers + * + * This file declare all containers and useful macros + * to use them +*/ +/* + PIP - Platform Independent Primitives + Generic containers + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +#ifndef PICONTAINERS_H +#define PICONTAINERS_H + +#include "piincludes.h" + +template +class PIP_EXPORT PIPair { +public: + PIPair() {first = Type0(); second = Type1();} + PIPair(const Type0 & value0, const Type1 & value1) {first = value0; second = value1;} + Type0 first; + Type1 second; +}; +template +inline bool operator <(const PIPair & value0, const PIPair & value1) {return value0.first < value1.first;} +template +inline bool operator ==(const PIPair & value0, const PIPair & value1) {return (value0.first == value1.first) && (value0.second == value1.second);} +template +inline bool operator !=(const PIPair & value0, const PIPair & value1) {return (value0.first != value1.first) || (value0.second != value1.second);} +template +inline std::ostream & operator <<(std::ostream & s, const PIPair & v) {s << "(" << v.first << ", " << v.second << ")"; return s;} +template +inline PICout operator <<(PICout s, const PIPair & v) {s.space(); s.setControl(0, true); s << "(" << v.first << ", " << v.second << ")"; s.restoreControl(); return s;} + +#include "pivector.h" +#include "pistack.h" +#include "piqueue.h" +#include "pideque.h" +#include "pimap.h" + +#ifdef DOXYGEN +/*! \def piForeach(i,c) + * \brief Macro for iterate any container + * \details Use this macros instead of standard "for" + * to get read/write access to each element of container. + * Pass direction is direct \n + * Example: \snippet picontainers.cpp foreach + */ +/*! \def piForeachC(i,c) + * \brief Macro for iterate any container only for read + * \details Use this macros instead of standard "for" + * to get read access to each element of container. + * Pass direction is direct \n + * Example: \snippet picontainers.cpp foreachC + */ +/*! \def piForeachR(i,c) + * \brief Macro for iterate any container with reverse direction + * \details Use this macros instead of standard "for" + * to get read/write access to each element of container. + * Pass direction is reverse \n + * Example: \snippet picontainers.cpp foreachR + */ +/*! \def piForeachCR(i,c) + * \brief Macro for iterate any container only for read with reverse direction + * \details Use this macros instead of standard "for" + * to get read access to each element of container. + * Pass direction is reverse \n + * Example: \snippet picontainers.cpp foreachCR + */ +#endif + +#ifdef CC_GCC + +template +class _PIForeach { +public: + _PIForeach(Type & t): _t(t) {_it = _t.begin(); _break = false;} + typename Type::value_type _var; + typename Type::iterator _it; + Type & _t; + bool _break; + inline bool isEnd() {return _it == _t.end();} + inline void operator ++() {_it++; _break = false;} +}; + +template +class _PIForeachR { +public: + _PIForeachR(Type & t): _t(t) {_rit = _t.rbegin(); _break = false;} + typename Type::value_type _var; + typename Type::reverse_iterator _rit; + Type & _t; + bool _break; + inline bool isEnd() {return _rit == _t.rend();} + inline void operator ++() {_rit++; _break = false;} +}; + +template +class _PIForeachC { +public: + _PIForeachC(const Type & t): _t(t) {_it = _t.begin(); _break = false;} + typename Type::value_type _var; + typename Type::const_iterator _it; + const Type & _t; + bool _break; + inline bool isEnd() {return _it == _t.end();} + inline void operator ++() {_it++; _break = false;} +}; + +template +class _PIForeachCR { +public: + _PIForeachCR(const Type & t): _t(t) {_rit = _t.rbegin(); _break = false;} + typename Type::value_type _var; + typename Type::const_reverse_iterator _rit; + const Type & _t; + bool _break; + inline bool isEnd() {return _rit == _t.rend();} + inline void operator ++() {_rit++; _break = false;} +}; + +#define piForeach(i,c) for(_PIForeach _for(c); !_for.isEnd(); ++_for) \ + for(i(*_for._it); !_for._break; _for._break = true) +#define piForeachR(i,c) for(_PIForeachR _for(c); !_for.isEnd(); ++_for) \ + for(i(*_for._rit); !_for._break; _for._break = true) +#define piForeachA(i,c) for(_PIForeach _for(c); !_for.isEnd(); ++_for) \ + for(typeof(_for._var) & i(*_for._it); !_for._break; _for._break = true) +#define piForeachAR(i,c) for(_PIForeachR _for(c); !_for.isEnd(); ++_for) \ + for(typeof(_for._var) & i(*_for._rit); !_for._break; _for._break = true) +#define piForeachC(i,c) for(_PIForeachC _for(c); !_for.isEnd(); ++_for) \ + for(const i(*_for._it); !_for._break; _for._break = true) +#define piForeachCR(i,c) for(_PIForeachCR _for(c); !_for.isEnd(); ++_for) \ + for(const i(*_for._rit); !_for._break; _for._break = true) +#define piForeachCA(i,c) for(_PIForeachC _for(c); !_for.isEnd(); ++_for) \ + for(const typeof(_for._var) & i(*_for._it); !_for._break; _for._break = true) +#define piForeachCAR(i,c) for(_PIForeachCR _for(c); !_for.isEnd(); ++_for) \ + for(const typeof(_for._var) & i(*_for._rit); !_for._break; _for._break = true) + +#define piForeachRA piForeachAR +#define piForeachAC piForeachCA +#define piForeachCRA piForeachCAR +#define piForeachARC piForeachCAR +#define piForeachACR piForeachCAR +#define piForeachRCA piForeachCAR +#define piForeachRAC piForeachCAR + +#else + +struct _PIForeachBase {mutable bool _break;}; + +template +class _PIForeach: public _PIForeachBase { +public: + _PIForeach(Type & t, bool i = false): _t(t), _inv(i) {if (_inv) _rit = _t.rbegin(); else _it = _t.begin(); _break = false;} + mutable typename Type::value_type _var; + mutable typename Type::iterator _it; + mutable typename Type::reverse_iterator _rit; + Type & _t; + bool _inv; + bool isEnd() {if (_inv) return _rit == _t.rend(); else return _it == _t.end();} + void operator ++() {if (_inv) _rit++; else _it++; _break = false;} +}; + +template +class _PIForeachC: public _PIForeachBase { +public: + _PIForeachC(const Type & t, bool i = false): _t(t), _inv(i) {if (_inv) _rit = _t.rbegin(); else _it = _t.begin(); _break = false;} + mutable typename Type::value_type _var; + mutable typename Type::const_iterator _it; + mutable typename Type::const_reverse_iterator _rit; + const Type & _t; + bool _inv; + bool isEnd() {if (_inv) return _rit == _t.rend(); else return _it == _t.end();} + void operator ++() {if (_inv) _rit++; else _it++; _break = false;} +}; + +template inline _PIForeach _PIForeachNew(T & t, bool i = false) {return _PIForeach(t, i);} +template inline _PIForeach * _PIForeachCast(_PIForeachBase & c, T & ) {return static_cast<_PIForeach * >(&c);} + +template inline _PIForeachC _PIForeachNewC(const T & t, bool i = false) {return _PIForeachC(t, i);} +template inline _PIForeachC * _PIForeachCastC(_PIForeachBase & c, const T & ) {return static_cast<_PIForeachC * >(&c);} + +#define piForeach(i,c) for(_PIForeachBase & _for = _PIForeachNew(c); !_PIForeachCast(_for, c)->isEnd(); ++(*_PIForeachCast(_for, c))) \ + for(i = *(_PIForeachCast(_for, c)->_it); !_for._break; _for._break = true) +#define piForeachR(i,c) for(_PIForeachBase & _for = _PIForeachNew(c, true); !_PIForeachCast(_for, c)->isEnd(); ++(*_PIForeachCast(_for, c))) \ + for(i = *(_PIForeachCast(_for, c)->_rit); !_for._break; _for._break = true) +#define piForeachC(i,c) for(_PIForeachBase & _for = _PIForeachNewC(c); !_PIForeachCastC(_for, c)->isEnd(); ++(*_PIForeachCastC(_for, c))) \ + for(const i = *(_PIForeachCastC(_for, c)->_it); !_for._break; _for._break = true) +#define piForeachCR(i,c) for(_PIForeachBase & _for = _PIForeachNewC(c, false); !_PIForeachCastC(_for, c)->isEnd(); ++(*_PIForeachCastC(_for, c))) \ + for(const i = *(_PIForeachCastC(_for, c)->_rit); !_for._break; _for._break = true) + +#endif + +#define piForeachRC piForeachCR + +#define piForTimes(c) for(int _i##c = 0; _i##c < c; ++_i##c) + + +template > +class PIP_EXPORT PIList: public list { + typedef PIList _CList; + typedef list _stlc; +public: + PIList() {piMonitor.containers++;} + PIList(const Type & value) {piMonitor.containers++; _stlc::resize(1, value);} + PIList(const Type & v0, const Type & v1) {piMonitor.containers++; _stlc::push_back(v0); _stlc::push_back(v1);} + PIList(const Type & v0, const Type & v1, const Type & v2) {piMonitor.containers++; _stlc::push_back(v0); _stlc::push_back(v1); _stlc::push_back(v2);} + PIList(const Type & v0, const Type & v1, const Type & v2, const Type & v3) {piMonitor.containers++; _stlc::push_back(v0); _stlc::push_back(v1); _stlc::push_back(v2); _stlc::push_back(v3);} + PIList(uint size, const Type & value = Type()) {piMonitor.containers++; _stlc::resize(size, value);} + ~PIList() {piMonitor.containers--;} + Type & operator [](uint index) {return (*this)[index];} + Type & operator [](uint index) const {return (*this)[index];} + const Type * data(uint index = 0) const {return &(*this)[index];} + Type * data(uint index = 0) {return &(*this)[index];} + int size_s() const {return static_cast(_stlc::size());} + bool isEmpty() const {return _stlc::empty();} + bool has(const Type & t) const {for (typename _stlc::const_iterator i = _stlc::begin(); i != _stlc::end(); ++i) if (t == *i) return true; return false;} + int etries(const Type & t) const {int ec = 0; for (typename _stlc::const_iterator i = _stlc::begin(); i != _stlc::end(); ++i) if (t == *i) ++ec; return ec;} + _CList & fill(const Type & t) {_stlc::assign(_stlc::size(), t); return *this;} + _CList & remove(uint index) {_stlc::erase(_stlc::begin() + index); return *this;} + _CList & remove(uint index, uint count) {_stlc::erase(_stlc::begin() + index, _stlc::begin() + index + count); return *this;} + _CList & insert(uint pos, const Type & t) {_stlc::insert(_stlc::begin() + pos, t); return *this;} + _CList & operator <<(const Type & t) {_stlc::push_back(t); return *this;} + PIVector toVector() {PIVector v; for (typename _stlc::const_iterator i = _stlc::begin(); i != _stlc::end(); ++i) v << *i; return v;} +}; + +/*! \brief Set of any type + * \details This class used to store collection of unique elements + * of any type. You can only add values to set with \a operator<< or + * with function \a insert(). You can discover if value already in + * set with \a operator[] or with function \a find(). These function + * has logarithmic complexity. + */ +template, typename Allocator = std::allocator > +class PIP_EXPORT PISet: public set { + typedef PISet _CSet; + typedef set _stlc; +public: + + //! Contructs an empty set + PISet() {piMonitor.containers++;} + + //! Contructs set with one element "value" + PISet(const Type & value) {piMonitor.containers++; _stlc::resize(1, value);} + + //! Contructs set with elements "v0" and "v1" + PISet(const Type & v0, const Type & v1) {piMonitor.containers++; _stlc::insert(v0); _stlc::insert(v1);} + + //! Contructs set with elements "v0", "v1" and "v2" + PISet(const Type & v0, const Type & v1, const Type & v2) {piMonitor.containers++; _stlc::insert(v0); _stlc::insert(v1); _stlc::insert(v2);} + + //! Contructs set with elements "v0", "v1", "v2" and "v3" + PISet(const Type & v0, const Type & v1, const Type & v2, const Type & v3) {piMonitor.containers++; _stlc::insert(v0); _stlc::insert(v1); _stlc::insert(v2); _stlc::insert(v3);} + + ~PISet() {piMonitor.containers--;} + + //! Returns elements count + int size_s() const {return static_cast(_stlc::size());} + + //! Returns if set is empty + bool isEmpty() const {return _stlc::empty();} + +#ifdef DOXYGEN + + //! Clear th set + void clear(); + + //! Insert element "t" if it doesn`t exists in this set + void insert(const Type & t); + +#endif + + _CSet & remove(uint index) {_stlc::erase(_stlc::begin() + index); return *this;} + _CSet & remove(uint index, uint count) {_stlc::erase(_stlc::begin() + index, _stlc::begin() + index + count); return *this;} + _CSet & operator <<(const Type & t) {_stlc::insert(t); return *this;} + + //! Returns if element "t" exists in this set + bool operator [](const Type & t) {return _stlc::find(t) != _stlc::end();} + + //! Returns content of set as PIVector + PIVector toVector() {PIVector v; for (typename _stlc::const_iterator i = _stlc::begin(); i != _stlc::end(); ++i) v << *i; return v;} +}; + + +#ifndef PIP_CONTAINERS_STL + +# define __PICONTAINERS_SIMPLE_TYPE__(T) \ +__PIDEQUE_SIMPLE_TYPE__(T)\ +__PIVECTOR_SIMPLE_TYPE__(T) + +__PICONTAINERS_SIMPLE_TYPE__(bool) +__PICONTAINERS_SIMPLE_TYPE__(char) +__PICONTAINERS_SIMPLE_TYPE__(uchar) +__PICONTAINERS_SIMPLE_TYPE__(short) +__PICONTAINERS_SIMPLE_TYPE__(ushort) +__PICONTAINERS_SIMPLE_TYPE__(int) +__PICONTAINERS_SIMPLE_TYPE__(uint) +__PICONTAINERS_SIMPLE_TYPE__(long) +__PICONTAINERS_SIMPLE_TYPE__(ulong) +__PICONTAINERS_SIMPLE_TYPE__(llong) +__PICONTAINERS_SIMPLE_TYPE__(ullong) +__PICONTAINERS_SIMPLE_TYPE__(float) +__PICONTAINERS_SIMPLE_TYPE__(double) +__PICONTAINERS_SIMPLE_TYPE__(ldouble) + +#endif + + +#endif // PICONTAINERS_H diff --git a/_oldpip/pip_0.4.0_r5/picrc.h b/_oldpip/pip_0.4.0_r5/picrc.h new file mode 100644 index 0000000..7677fbf --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/picrc.h @@ -0,0 +1,234 @@ +/*! \file picrc.h + * \brief CRC checksum calculator +*/ +/* + PIP - Platform Independent Primitives + Abstract input/output device + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +#ifndef PICRC_H +#define PICRC_H + +#include "pistring.h" + +template +class PIP_EXPORT uint_cl { +public: + uint_cl() {for (int i = 0; i < L / 8; ++i) data_[i] = 0;} + uint_cl(const uint_cl & v) {for (int i = 0; i < L / 8; ++i) data_[i] = v.data_[i];} + uint_cl(uchar v) {for (int i = 0; i < L / 8; ++i) data_[i] = (i == 0 ? v : 0);} + uint_cl(char v) {for (int i = 0; i < L / 8; ++i) data_[i] = (i == 0 ? v : 0);} + uint_cl(ushort v) {int l = piMin(L / 8, sizeof(v)); memcpy(data_, &v, l); for (int i = l; i < L / 8; ++i) data_[i] = 0;} + uint_cl(short v) {int l = piMin(L / 8, sizeof(v)); memcpy(data_, &v, l); for (int i = l; i < L / 8; ++i) data_[i] = 0;} + uint_cl(uint v) {int l = piMin(L / 8, sizeof(v)); memcpy(data_, &v, l); for (int i = l; i < L / 8; ++i) data_[i] = 0;} + uint_cl(int v) {int l = piMin(L / 8, sizeof(v)); memcpy(data_, &v, l); for (int i = l; i < L / 8; ++i) data_[i] = 0;} + uint_cl(ulong v) {int l = piMin(L / 8, sizeof(v)); memcpy(data_, &v, l); for (int i = l; i < L / 8; ++i) data_[i] = 0;} + uint_cl(long v) {int l = piMin(L / 8, sizeof(v)); memcpy(data_, &v, l); for (int i = l; i < L / 8; ++i) data_[i] = 0;} + uint_cl(ullong v) {int l = piMin(L / 8, sizeof(v)); memcpy(data_, &v, l); for (int i = l; i < L / 8; ++i) data_[i] = 0;} + uint_cl(llong v) {int l = piMin(L / 8, sizeof(v)); memcpy(data_, &v, l); for (int i = l; i < L / 8; ++i) data_[i] = 0;} + + operator bool() {for (int i = 0; i < L / 8; ++i) if (data_[i] > 0) return true; return false;} + operator char() {return (char)data_[0];} + operator short() {short t(0); int l = piMin(L / 8, sizeof(t)); memcpy(&t, data_, l); return t;} + operator int() {int t(0); int l = piMin(L / 8, sizeof(t)); memcpy(&t, data_, l); return t;} + operator long() {long t(0); int l = piMin(L / 8, sizeof(t)); memcpy(&t, data_, l); return t;} + operator llong() {llong t(0); int l = piMin(L / 8, sizeof(t)); memcpy(&t, data_, l); return t;} + operator uchar() {return data_[0];} + operator ushort() {ushort t(0); int l = piMin(L / 8, sizeof(t)); memcpy(&t, data_, l); return t;} + operator uint() {uint t(0); int l = piMin(L / 8, sizeof(t)); memcpy(&t, data_, l); return t;} + operator ulong() {ulong t(0); int l = piMin(L / 8, sizeof(t)); memcpy(&t, data_, l); return t;} + operator ullong() {ullong t(0); int l = piMin(L / 8, sizeof(t)); memcpy(&t, data_, l); return t;} + + uint_cl operator +(const uint_cl & v) { + uint_cl t; + uint cv; + bool ov = false; + for (int i = 0; i < L / 8; ++i) { + cv = v.data_[i] + data_[i]; + if (ov) ++cv; + ov = cv > 255; + t.data_[i] = ov ? cv - 256 : cv; + } + return t; + } + + uint_cl operator &(const uint_cl & v) const {uint_cl t; for (int i = 0; i < L / 8; ++i) t.data_[i] = v.data_[i] & data_[i]; return t;} + uint_cl operator &(const uchar & v) const {return *this & uint_cl(v);} + uint_cl operator &(const ushort & v) const {return *this & uint_cl(v);} + uint_cl operator &(const uint & v) const {return *this & uint_cl(v);} + uint_cl operator &(const ulong & v) const {return *this & uint_cl(v);} + uint_cl operator &(const ullong & v) const {return *this & uint_cl(v);} + uint_cl operator &(const char & v) const {return *this & uint_cl(v);} + uint_cl operator &(const short & v) const {return *this & uint_cl(v);} + uint_cl operator &(const int & v) const {return *this & uint_cl(v);} + uint_cl operator &(const long & v) const {return *this & uint_cl(v);} + uint_cl operator &(const llong & v) const {return *this & uint_cl(v);} + + uint_cl operator |(const uint_cl & v) const {uint_cl t; for (int i = 0; i < L / 8; ++i) t.data_[i] = v.data_[i] | data_[i]; return t;} + uint_cl operator |(const uchar & v) const {return *this | uint_cl(v);} + uint_cl operator |(const ushort & v) const {return *this | uint_cl(v);} + uint_cl operator |(const uint & v) const {return *this | uint_cl(v);} + uint_cl operator |(const ulong & v) const {return *this | uint_cl(v);} + uint_cl operator |(const ullong & v) const {return *this | uint_cl(v);} + uint_cl operator |(const char & v) const {return *this | uint_cl(v);} + uint_cl operator |(const short & v) const {return *this | uint_cl(v);} + uint_cl operator |(const int & v) const {return *this | uint_cl(v);} + uint_cl operator |(const long & v) const {return *this | uint_cl(v);} + uint_cl operator |(const llong & v) const {return *this | uint_cl(v);} + + uint_cl operator ^(const uint_cl & v) const {uint_cl t; for (int i = 0; i < L / 8; ++i) t.data_[i] = v.data_[i] ^ data_[i]; return t;} + uint_cl operator ^(const uchar & v) const {return *this ^ uint_cl(v);} + uint_cl operator ^(const ushort & v) const {return *this ^ uint_cl(v);} + uint_cl operator ^(const uint & v) const {return *this ^ uint_cl(v);} + uint_cl operator ^(const ulong & v) const {return *this ^ uint_cl(v);} + uint_cl operator ^(const ullong & v) const {return *this ^ uint_cl(v);} + uint_cl operator ^(const char & v) const {return *this ^ uint_cl(v);} + uint_cl operator ^(const short & v) const {return *this ^ uint_cl(v);} + uint_cl operator ^(const int & v) const {return *this ^ uint_cl(v);} + uint_cl operator ^(const long & v) const {return *this ^ uint_cl(v);} + uint_cl operator ^(const llong & v) const {return *this ^ uint_cl(v);} + + bool operator <(const uint_cl & v) const {for (int i = 0; i < L / 8; ++i) {if (v.data_[i] > data_[i]) return true; if (v.data_[i] < data_[i]) return false;} return false;} + bool operator <=(const uint_cl & v) const {for (int i = 0; i < L / 8; ++i) {if (v.data_[i] > data_[i]) return true; if (v.data_[i] < data_[i]) return false;} return true;} + bool operator >(const uint_cl & v) const {for (int i = 0; i < L / 8; ++i) {if (v.data_[i] < data_[i]) return true; if (v.data_[i] > data_[i]) return false;} return false;} + bool operator >=(const uint_cl & v) const {for (int i = 0; i < L / 8; ++i) {if (v.data_[i] < data_[i]) return true; if (v.data_[i] > data_[i]) return false;} return true;} + bool operator ==(const uint_cl & v) const {for (int i = 0; i < L / 8; ++i) if (v.data_[i] != data_[i]) return false; return true;} + bool operator !=(const uint_cl & v) const {for (int i = 0; i < L / 8; ++i) if (v.data_[i] != data_[i]) return true; return false;} + + uint_cl operator >>(const int & c) const { + uint_cl t; + int l = L - c; + bool bit; + if (l <= 0) return t; + for (int i = 0; i < l; ++i) { + bit = 1 & (data_[(i + c) / 8] >> ((i + c) % 8)); + if (bit) t.data_[i / 8] |= (1 << (i % 8)); + else t.data_[i / 8] &= ~(1 << (i % 8)); + } + return t; + } + uint_cl operator >>(const uint & c) const {return (*this << (int)c);} + uint_cl operator <<(const int & c) const { + uint_cl t; + int l = L - c; + bool bit; + if (l <= 0) return t; + for (int i = c; i < L; ++i) { + bit = 1 & (data_[(i - c) / 8] >> ((i - c) % 8)); + if (bit) t.data_[i / 8] |= (1 << (i % 8)); + else t.data_[i / 8] &= ~(1 << (i % 8)); + } + return t; + } + uint_cl operator <<(const uint & c) const {return (*this >> (int)c);} + + uint_cl & inverse() const {for (int i = 0; i < L / 8; ++i) data_[i] = ~data_[i]; return *this;} + uint_cl inversed() const {uint_cl t(*this); for (int i = 0; i < L / 8; ++i) t.data_[i] = ~t.data_[i]; return t;} + uint_cl reversed() const { + uint_cl t; + bool bit; + for (int i = 0; i < L; ++i) { + bit = 1 & (data_[(L - i - 1) / 8] >> ((L - i - 1) % 8)); + if (bit) t.data_[i / 8] |= (1 << (i % 8)); + else t.data_[i / 8] &= ~(1 << (i % 8)); + } + return t; + } + + const uchar * data() const {return data_;} + uchar * data() {return data_;} + uint length() const {return L / 8;} + +private: + uchar data_[L / 8]; + +}; + +template +inline std::ostream & operator <<(std::ostream & s, const uint_cl & v) {std::ios::fmtflags f = s.flags(); s << std::hex; for (uint i = 0; i < v.length(); ++i) {s << int(v.data()[i]); if (v.data()[i] < 0x10) s << '0'; s << ' ';} s.flags(f); return s;} + + +template +class PIP_EXPORT PICRC { +public: + PICRC(const uint_cl & poly) {poly_ = poly; reverse_poly = true; init_ = uint_cl(0).inversed(); out_ = uint_cl(0).inversed(); reverse_before_xor = reverse_data = false; initTable();} + PICRC(const uint_cl & poly, bool reverse_poly_, const uint_cl & initial, const uint_cl & out_xor) {poly_ = poly; reverse_poly = reverse_poly_; init_ = initial; out_ = out_xor; reverse_before_xor = reverse_data = false; initTable();} + + void setInitial(const uint_cl & v) {init_ = v;} + void setOutXor(const uint_cl & v) {out_ = v;} + void setReversePolynome(bool yes) {reverse_poly = yes; initTable();} + void setReverseOutBeforeXOR(bool yes) {reverse_before_xor = yes;} + void setReverseDataBytes(bool yes) {reverse_data = yes;} + + void initTable() { + uint_cl tmp, pol = reverse_poly ? poly_.reversed() : poly_; + //cout << std::hex << "poly " << (uint)uint_cl(poly_) << " -> " << (uint)uint_cl(pol) << endl; + for (int i = 0; i < 256; ++i) { + tmp = uchar(i); + for (int j = 0; j < 8; ++j) + tmp = ((tmp & 1) ? ((tmp >> 1) ^ pol) : (tmp >> 1)); + table[i] = tmp; + } + + } + + uint_cl calculate(const void * data, int size) { + uint_cl crc = init_; + uchar * data_ = (uchar * )data, cb; + //cout << "process " << size << endl; + uchar nTemp; + for (int i = 0; i < size; ++i) { + cb = data_[i]; + if (reverse_data) cb = reverseByte(cb); + nTemp = cb ^ uchar(crc); + crc = crc >> 8; + crc = crc ^ table[nTemp]; + } + if (reverse_before_xor) crc = crc.reversed(); + return crc ^ out_; + + } + uint_cl calculate(const PIByteArray & d) {return calculate(d.data(), d.size());} + uint_cl calculate(const char * str) {string s(str); return calculate((void * )s.data(), s.size());} + +private: + uchar reverseByte(uchar b) { + uchar ret = 0; + bool bit; + for (int i = 0; i < 8; ++i) { + bit = 1 & (b >> (7 - i)); + if (bit) ret |= (1 << i); + } + return ret; + } + + uint_cl table[256]; + uint_cl poly_, init_, out_; + bool reverse_poly, reverse_before_xor, reverse_data; + +}; + +typedef PICRC<32> CRC_32; +typedef PICRC<24> CRC_24; +typedef PICRC<16> CRC_16; +typedef PICRC<8> CRC_8; + +inline CRC_32 standardCRC_32() {return CRC_32(0x04C11DB7, true, 0xFFFFFFFF, 0xFFFFFFFF);} +inline CRC_16 standardCRC_16() {return CRC_16(0x8005, true, 0x0, 0x0);} +inline CRC_8 standardCRC_8() {return CRC_8(0xD5, true, 0x0, 0x0);} + +#endif // CRC_H diff --git a/_oldpip/pip_0.4.0_r5/pideque.h b/_oldpip/pip_0.4.0_r5/pideque.h new file mode 100644 index 0000000..074a48a --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/pideque.h @@ -0,0 +1,477 @@ +/*! \file pideque.h + * \brief Dynamic array of any type + * + * This file declares PIDeque +*/ +/* + PIP - Platform Independent Primitives + Dynamic array of any type + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +#ifndef PIDEQUE_H +#define PIDEQUE_H + +#include "piincludes.h" + + +#if !defined(PIP_CONTAINERS_STL) || defined(DOXYGEN) + + +template +class PIDeque { +public: + PIDeque(): pid_data(0), pid_size(0), pid_rsize(0), pid_start(0) { + //printf("new vector 1 %p (%s) ... !{\n", this, typeid(T).name()); + //printf("(s=%d, d=%p) }!\n", int(pid_size), pid_data); + } + PIDeque(const PIDeque & other): pid_data(0), pid_size(0), pid_rsize(0), pid_start(0) { + //printf("new vector 2 %p (%s) ... !{\n", this, typeid(T).name()); + alloc(other.pid_size, true); + newT(pid_data + pid_start, other.pid_data + other.pid_start, pid_size); + //printf("(s=%d, d=%p) }!\n", int(pid_size), pid_data); + } + PIDeque(const T * data, size_t size): pid_data(0), pid_size(0), pid_rsize(0), pid_start(0) { + //printf("new vector 2 %p (%s) ... !{\n", this, typeid(T).name()); + alloc(size, true); + newT(pid_data + pid_start, data, pid_size); + //printf("(s=%d, d=%p) }!\n", int(pid_size), pid_data); + } + PIDeque(size_t pid_size, const T & f = T()): pid_data(0), pid_size(0), pid_rsize(0), pid_start(0) { + //printf("new vector 3 %p (%s) ... !{\n", this, typeid(T).name()); + resize(pid_size, f); + //printf("(s=%d, d=%p) }!\n", int(pid_size), pid_data); + } + ~PIDeque() { + //printf("delete deque %p (%s) (s=%d, rs=%d, st=%d, d=%p) ... ~{\n", this, typeid(T).name(), int(pid_size), int(pid_rsize), int(pid_start), pid_data); + deleteT(pid_data + pid_start, pid_size); + dealloc(); + //deleteRaw(pid_tdata); + _reset(); + //printf("}~\n"); + } + + PIDeque & operator =(const PIDeque & other) { + if (this == &other) return *this; + deleteT(pid_data + pid_start, pid_size); + alloc(other.pid_size, true); + newT(pid_data + pid_start, other.pid_data + other.pid_start, pid_size); + return *this; + } + + typedef T value_type; + + class iterator { + friend class PIDeque; + private: + iterator(PIDeque * v, size_t p): parent(v), pos(p) {} + PIDeque * parent; + size_t pos; + public: + iterator(): parent(0) {} + T & operator *() {return (*parent)[pos];} + const T & operator *() const {return (*parent)[pos];} + void operator ++() {++pos;} + void operator ++(int) {++pos;} + void operator --() {--pos;} + void operator --(int) {--pos;} + bool operator ==(const iterator & it) const {return (pos == it.pos);} + bool operator !=(const iterator & it) const {return (pos != it.pos);} + }; + + class const_iterator { + friend class PIDeque; + private: + const_iterator(const PIDeque * v, size_t p): parent(v), pos(p) {} + const PIDeque * parent; + size_t pos; + public: + const_iterator(): parent(0) {} + //T & operator *() {return (*parent)[pos];} + const T & operator *() const {return (*parent)[pos];} + void operator ++() {++pos;} + void operator ++(int) {++pos;} + void operator --() {--pos;} + void operator --(int) {--pos;} + bool operator ==(const const_iterator & it) const {return (pos == it.pos);} + bool operator !=(const const_iterator & it) const {return (pos != it.pos);} + }; + + class reverse_iterator { + friend class PIDeque; + private: + reverse_iterator(PIDeque * v, size_t p): parent(v), pos(p) {} + PIDeque * parent; + size_t pos; + public: + reverse_iterator(): parent(0) {} + T & operator *() {return (*parent)[pos];} + const T & operator *() const {return (*parent)[pos];} + void operator ++() {--pos;} + void operator ++(int) {--pos;} + void operator --() {++pos;} + void operator --(int) {++pos;} + bool operator ==(const reverse_iterator & it) const {return (pos == it.pos);} + bool operator !=(const reverse_iterator & it) const {return (pos != it.pos);} + }; + + class const_reverse_iterator { + friend class PIDeque; + private: + const_reverse_iterator(const PIDeque * v, size_t p): parent(v), pos(p) {} + const PIDeque * parent; + size_t pos; + public: + const_reverse_iterator(): parent(0) {} + //T & operator *() {return (*parent)[pos];} + const T & operator *() const {return (*parent)[pos];} + void operator ++() {--pos;} + void operator ++(int) {--pos;} + void operator --() {++pos;} + void operator --(int) {++pos;} + bool operator ==(const const_reverse_iterator & it) const {return (pos == it.pos);} + bool operator !=(const const_reverse_iterator & it) const {return (pos != it.pos);} + }; + + iterator begin() {return iterator(this, 0);} + iterator end() {return iterator(this, pid_size);} + const_iterator begin() const {return const_iterator(this, 0);} + const_iterator end() const {return const_iterator(this, pid_size);} + reverse_iterator rbegin() {return reverse_iterator(this, pid_size - 1);} + reverse_iterator rend() {return reverse_iterator(this, -1);} + const_reverse_iterator rbegin() const {return const_reverse_iterator(this, pid_size - 1);} + const_reverse_iterator rend() const {return const_reverse_iterator(this, -1);} + + size_t size() const {return pid_size;} + ssize_t size_s() const {return pid_size;} + size_t length() const {return pid_size;} + size_t capacity() const {return pid_rsize;} + bool isEmpty() const {return (pid_size == 0);} + + T & operator [](size_t index) {return pid_data[pid_start + index];} + T & at(size_t index) {return pid_data[pid_start + index];} + const T & operator [](size_t index) const {return pid_data[pid_start + index];} + const T & at(size_t index) const {return pid_data[pid_start + index];} + T & back() {return pid_data[pid_start + pid_size - 1];} + const T & back() const {return pid_data[pid_start + pid_size - 1];} + T & front() {return pid_data[pid_start];} + const T & front() const {return pid_data[pid_start];} + bool operator ==(const PIDeque & t) const {if (pid_size != t.pid_size) return false; for (size_t i = 0; i < pid_size; ++i) if (t[i] != pid_data[pid_start + i]) return false; return true;} + bool operator !=(const PIDeque & t) const {if (pid_size != t.pid_size) return true; for (size_t i = 0; i < pid_size; ++i) if (t[i] != pid_data[pid_start + i]) return true; return false;} + bool contains(const T & v) const {for (size_t i = pid_start; i < pid_start + pid_size; ++i) if (v == pid_data[i]) return true; return false;} + int etries(const T & v) const {int ec = 0; for (size_t i = pid_start; i < pid_start + pid_size; ++i) if (v == pid_data[i]) ++ec; return ec;} + + T * data(size_t index = 0) {return &(pid_data[pid_start + index]);} + const T * data(size_t index = 0) const {return &(pid_data[pid_start + index]);} + PIDeque & clear() {resize(0); return *this;} + PIDeque & fill(const T & f = T()) { + //if (sizeof(T) == 1) memset(pid_data, f, pid_size); + deleteT(pid_data + pid_start, pid_size); + //zeroRaw(pid_data, pid_size); + for (size_t i = pid_start; i < pid_start + pid_size; ++i) + elementNew(pid_data + i, f); + return *this; + } + PIDeque & assign(const T & f = T()) {return fill(f);} + PIDeque & assign(size_t new_size, const T & f) {resize(new_size); return fill(f);} + PIDeque & resize(size_t new_size, const T & f = T()) { + if (new_size < pid_size) { + deleteT(&(pid_data[new_size + pid_start]), pid_size - new_size); + pid_size = new_size; + } + if (new_size > pid_size) { + size_t os = pid_size; + alloc(new_size, true); + //if (sizeof(T) == 1) memset(&(pid_data[os]), f, ds); + //zeroRaw(&(pid_data[os]), new_size - os); + for (size_t i = os + pid_start; i < new_size + pid_start; ++i) elementNew(pid_data + i, f); + } + return *this; + } + PIDeque & reserve(size_t new_size) {if (new_size <= pid_rsize) return *this; size_t os = pid_size; alloc(new_size, true); pid_size = os; return *this;} + + PIDeque & insert(size_t index, const T & v = T()) { + bool dir = pid_rsize <= 2 ? true : (index >= pid_rsize / 2 ? true : false); + //piCout << "insert" << dir << index << pid_size << pid_rsize << pid_start << "!<"; + if (dir) { + alloc(pid_size + 1, true); + if (index < pid_size - 1) { + size_t os = pid_size - index - 1; + memmove(&(pid_data[index + pid_start + 1]), &(pid_data[index + pid_start]), os * sizeof(T)); + } + } else { + pid_start--; + alloc(pid_size + 1, false); + //piCout << "insert front" << pid_size << pid_rsize << pid_start << "!<"; + if (index > 0) + memmove(&(pid_data[pid_start]), &(pid_data[pid_start + 1]), index * sizeof(T)); + } + //piCout << "insert" << pid_start << index << (pid_start + ssize_t(index)) << pid_size << ">!"; + elementNew(pid_data + pid_start + index, v); + return *this; + } + PIDeque & insert(size_t index, const PIDeque & other) { + if (other.isEmpty()) return *this; + bool dir = pid_rsize <= 2 ? true : (index >= pid_rsize / 2 ? true : false); + //piCout << "insert" << dir << index << pid_size << pid_rsize << pid_start << "!<"; + if (dir) { + ssize_t os = pid_size - index; + alloc(pid_size + other.pid_size, true); + if (os > 0) + memmove(&(pid_data[index + pid_start + other.pid_size]), &(pid_data[index + pid_start]), os * sizeof(T)); + } else { + pid_start -= other.pid_size; + alloc(pid_size + other.pid_size, false); + //piCout << "insert front" << pid_size << pid_rsize << pid_start << "!<"; + if (index > 0) + memmove(&(pid_data[pid_start]), &(pid_data[pid_start + other.pid_size]), index * sizeof(T)); + } + //piCout << "insert" << pid_start << index << (pid_start + ssize_t(index)) << pid_size << ">!"; + newT(pid_data + pid_start + index, other.pid_data + other.pid_start, other.pid_size); + return *this; + } + + PIDeque & remove(size_t index, size_t count = 1) { + if (count == 0) return *this; + if (index + count >= pid_size) { + resize(index); + return *this; + } + size_t os = pid_size - index - count; + deleteT(&(pid_data[index + pid_start]), count); + if (os <= index) { + //if (true) { + if (os > 0) memmove(&(pid_data[index + pid_start]), &(pid_data[index + pid_start + count]), os * sizeof(T)); + } else { + if (index > 0) memmove(&(pid_data[pid_start + count]), &(pid_data[pid_start]), index * sizeof(T)); + pid_start += count; + } + pid_size -= count; + return *this; + } + + void swap(PIDeque & other) { + piSwap(pid_data, other.pid_data); + piSwap(pid_size, other.pid_size); + piSwap(pid_rsize, other.pid_rsize); + piSwap(pid_start, other.pid_start); + } + + typedef int (*CompareFunc)(const T * , const T * ); + static int compare_func(const T * t0, const T * t1) {return (*t0) < (*t1) ? -1 : ((*t0) == (*t1) ? 0 : 1);} + PIDeque & sort(CompareFunc compare = compare_func) {qsort(pid_data + pid_start, pid_size, sizeof(T), (int(*)(const void * , const void * ))compare); return *this;} + + PIDeque & enlarge(llong pid_size) {llong ns = size_s() + pid_size; if (ns <= 0) clear(); else resize(size_t(ns)); return *this;} + + PIDeque & removeOne(const T & v) {for (size_t i = 0; i < pid_size; ++i) if (pid_data[i + pid_start] == v) {remove(i); return *this;} return *this;} + PIDeque & removeAll(const T & v) {for (llong i = 0; i < pid_size; ++i) if (pid_data[i + pid_start] == v) {remove(i); --i;} return *this;} + + PIDeque & push_back(const T & v) {alloc(pid_size + 1, true); elementNew(pid_data + pid_start + pid_size - 1, v); return *this;} + PIDeque & append(const T & v) {return push_back(v);} + PIDeque & operator <<(const T & v) {return push_back(v);} + PIDeque & operator <<(const PIDeque & t) { + size_t ps = pid_size; + alloc(pid_size + t.pid_size, true); + newT(pid_data + ps + pid_start, t.pid_data + t.pid_start, t.pid_size); + return *this; + } + + PIDeque & push_front(const T & v) {insert(0, v); return *this;} + PIDeque & prepend(const T & v) {return push_front(v);} + + PIDeque & pop_back() {if (pid_size == 0) return *this; resize(pid_size - 1); return *this;} + PIDeque & pop_front() {if (pid_size == 0) return *this; remove(0); return *this;} + + T take_back() {T t(back()); pop_back(); return t;} + T take_front() {T t(front()); pop_front(); return t;} + +private: + void _reset() {pid_size = pid_rsize = pid_start = 0; pid_data = 0;} + /*void * qmemmove(void * dst, void * src, size_t size) { + if (piAbs(ssize_t(dst) - ssize_t(src)) >= size) + memcpy(dst, src, size); + else { + char * tb = new char[size]; + memcpy(tb, src, size); + memcpy(dst, tb, size); + delete tb; + } + return dst; + }*/ + inline size_t asize(ssize_t s) { + if (s <= 0) return 0; + if (pid_rsize + pid_rsize >= size_t(s) && pid_rsize < size_t(s)) + return pid_rsize + pid_rsize; + size_t t = 0, s_ = size_t(s) - 1; + while (s_ >> t) ++t; + return (1 << t); + } + inline void newT(T * dst, const T * src, size_t s) { + for (size_t i = 0; i < s; ++i) + elementNew(dst + i, src[i]); + } + inline T * newRaw(size_t s) { + //cout << std::dec << " ![("< (new 0x" << (llong)ret << ") ok]!" << endl; + return (T*)ret; + } + /*void reallocRawTemp(size_t s) { + if (pid_tdata == 0) pid_tdata = (T*)(malloc(s * sizeof(T))); + else pid_tdata = (T*)(realloc(pid_tdata, s * sizeof(T))); + }*/ + inline void deleteT(T * d, size_t sz) { + //cout << " ~[("< ok]~" << endl; + } + inline void deleteRaw(T *& d) { + //cout << " ~[("< ok]~" << endl; + } + void zeroRaw(T * d, size_t s) { + //cout << " ~[("< ok]~" << endl; + } + inline void elementNew(T * to, const T & from) {new(to)T(from);} + inline void elementDelete(T & from) {from.~T();} + void dealloc() {deleteRaw(pid_data);} + inline void checkMove(bool direction) { + if (pid_size >= 4 && pid_size < pid_rsize / 4) { + /*if (direction) { + if (pid_start >= 4 && pid_start > pid_size + pid_size && pid_start > pid_rsize / 2) { + piCout << (int)this << "checkMove" << direction << pid_start << (int)pid_data << pid_rsize << pid_size; + piCout << (int)this << "move from" << pid_start << "to" << pid_size << "," << (int)pid_data << pid_rsize << pid_size; + memmove(pid_data + pid_size, pid_data + pid_start, pid_size * sizeof(T)); + pid_start = pid_size; + } + } else { + if (ssize_t(pid_start) < ssize_t(pid_rsize) - pid_size - pid_size && ssize_t(pid_start) < ssize_t(pid_rsize / 2) - pid_size) { + piCout << (int)this << "checkMove" << direction << pid_start << (int)pid_data << pid_rsize << pid_size; + piCout << (int)this << "move from" << pid_start << "to" << (ssize_t(pid_rsize) - pid_size) << "," << (int)pid_data << pid_rsize << pid_size; + memmove(pid_data + ssize_t(pid_rsize) - pid_size - pid_size, pid_data + pid_start, pid_size * sizeof(T)); + pid_start = ssize_t(pid_rsize) - pid_size - pid_size; + } + }*/ + if (pid_start < pid_size + pid_size || pid_start > pid_rsize - pid_size - pid_size) { + size_t ns = (pid_rsize - pid_size) / 2; + if (pid_start != ns) { + memmove(pid_data + ns, pid_data + pid_start, pid_size * sizeof(T)); + pid_start = ns; + } + } + } + } + inline void alloc(size_t new_size, bool direction) { // direction == true -> alloc forward + if (direction) { + if (pid_start + new_size <= pid_rsize) { + pid_size = new_size; + checkMove(direction); + return; + } + pid_size = new_size; + size_t as = asize(pid_start + new_size); + if (as != pid_rsize) { + pid_data = (T*)(realloc(pid_data, as*sizeof(T))); + pid_rsize = as; + } + } else { + size_t as = asize(piMax(new_size, pid_rsize) - pid_start); + //piCout << "alloc" << new_size << pid_size << pid_rsize << as << pid_start; + if (pid_start >= 0 && as <= pid_rsize) { + pid_size = new_size; + checkMove(direction); + return; + } + size_t os = pid_size; + pid_size = new_size; + if (as > pid_rsize) { + //piCout << "alloc new size" << as; + //cout << std::hex << " ![("< 0 && pid_data != 0) { + memcpy(td + pid_start + ns, pid_data + ost, os * sizeof(T)); + deleteRaw(pid_data); + } + pid_data = td; + pid_rsize = as; + } + } + //checkMove(direction); + //piCout << "alloc new start" << pid_start; + } + + T * pid_data; + size_t pid_size, pid_rsize; + size_t pid_start; +}; + +#define __PIDEQUE_SIMPLE_TYPE__(T) \ + template<> inline void PIDeque::newT(T * dst, const T * src, size_t s) {memcpy(dst, src, s * sizeof(T));} \ + template<> inline void PIDeque::deleteT(T * d, size_t sz) {;} \ + template<> inline void PIDeque::elementNew(T * to, const T & from) {(*to) = from;} \ + template<> inline void PIDeque::elementDelete(T & from) {;} + +#else + + +template > +class PIP_EXPORT PIDeque: public deque { + typedef PIDeque _CDeque; + typedef deque _stlc; +public: + PIDeque() {piMonitor.containers++;} + PIDeque(const Type & value) {piMonitor.containers++; _stlc::resize(1, value);} + PIDeque(const Type & v0, const Type & v1) {piMonitor.containers++; _stlc::push_back(v0); _stlc::push_back(v1);} + PIDeque(const Type & v0, const Type & v1, const Type & v2) {piMonitor.containers++; _stlc::push_back(v0); _stlc::push_back(v1); _stlc::push_back(v2);} + PIDeque(const Type & v0, const Type & v1, const Type & v2, const Type & v3) {piMonitor.containers++; _stlc::push_back(v0); _stlc::push_back(v1); _stlc::push_back(v2); _stlc::push_back(v3);} + ~PIDeque() {piMonitor.containers--;} + int size_s() const {return static_cast(_stlc::size());} + bool isEmpty() const {return _stlc::empty();} + bool has(const Type & t) const {for (typename _stlc::const_iterator i = _stlc::begin(); i != _stlc::end(); ++i) if (t == *i) return true; return false;} + int etries(const Type & t) const {int ec = 0; for (typename _stlc::const_iterator i = _stlc::begin(); i != _stlc::end(); ++i) if (t == *i) ++ec; return ec;} + _CDeque & operator <<(const Type & t) {_CDeque::push_back(t); return *this;} + PIDeque toVector() {PIDeque v; for (typename _stlc::const_iterator i = _stlc::begin(); i != _stlc::end(); ++i) v << *i; return v;} +}; + + +#define __PIDEQUE_SIMPLE_FUNCTIONS__(T) + + +#endif + + +template +inline std::ostream & operator <<(std::ostream & s, const PIDeque & v) {s << "{"; for (size_t i = 0; i < v.size(); ++i) {s << v[i]; if (i < v.size() - 1) s << ", ";} s << "}"; return s;} + +template +inline PICout operator <<(PICout s, const PIDeque & v) {s.space(); s.setControl(0, true); s << "{"; for (size_t i = 0; i < v.size(); ++i) {s << v[i]; if (i < v.size() - 1) s << ", ";} s << "}"; s.restoreControl(); return s;} + + +#endif // PIDEQUE_H diff --git a/_oldpip/pip_0.4.0_r5/pidevicepool.cpp b/_oldpip/pip_0.4.0_r5/pidevicepool.cpp new file mode 100644 index 0000000..27ff379 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/pidevicepool.cpp @@ -0,0 +1,44 @@ +/* + PIP - Platform Independent Primitives + Single collection of devices + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +#include "pidevicepool.h" + + +/*! \class PIDevicePool + * \brief Single collection of devices + * + * \section PIDevicePool_sec0 Synopsis + * + * \section PIDevicePool_ex0 Example + * \snippet pidevicepool.cpp 0 + */ + + +PIDevicePool::PIDevicePool(): PIObject() { +} + + +PIDevicePool::~PIDevicePool() { + /*stop(); + if (opened_) { + closeDevice(); + if (!opened_) + closed(); + }*/ +} diff --git a/_oldpip/pip_0.4.0_r5/pidevicepool.h b/_oldpip/pip_0.4.0_r5/pidevicepool.h new file mode 100644 index 0000000..6a1538b --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/pidevicepool.h @@ -0,0 +1,65 @@ +/*! \file pidevicepool.h + * \brief Single collection of devices +*/ +/* + PIP - Platform Independent Primitives + Single collection of devices + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +#ifndef PIDEVICEPOOL_H +#define PIDEVICEPOOL_H + +#include "piiodevice.h" + +class PIP_EXPORT PIDevicePool: public PIObject +{ + PIOBJECT(PIDevicePool) +public: + + PIDevicePool(); + ~PIDevicePool(); + + +//! \handlers +//! \{ + + //! \fn bool initialize() + //! \brief Initialize device + +//! \} +//! \vhandlers +//! \{ + + //! \fn void flush() + //! \brief Immediate write all buffers + +//! \} +//! \events +//! \{ + + //! \fn void threadedWriteEvent(ullong id, int written_size) + //! \brief Raise if write thread succesfull write some data of task with ID "id" + +//! \} + +protected: + +private: + +}; + +#endif // PIDEVICEPOOL_H diff --git a/_oldpip/pip_0.4.0_r5/pidiagnostics.cpp b/_oldpip/pip_0.4.0_r5/pidiagnostics.cpp new file mode 100644 index 0000000..d199912 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/pidiagnostics.cpp @@ -0,0 +1,116 @@ +/* + PIP - Platform Independent Primitives + Speed and quality in/out diagnostics + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +#include "pidiagnostics.h" + + +/** \class PIDiagnostics + * \brief Connection quality diagnostics + * \details + * \section PIDiagnostics_sec0 Synopsis + * This class provide abstract connection quality diagnostics and + * counting. You should create instance of %PIDiagnostics and on + * packet receive call function \a received(), on packet send call + * function \a sended(). %PIDiagnostics calculates correct, wrong + * and sended counters, packets per second, bytes per seconds, + * immediate and integral receive frequencies and receive/send speeds + * in human readable representation. There statistics are calculates + * one time per period, by default 1 second. To calculate them you + * should start %PIDiagnostics with function \a start() or pass \b true + * to constructor. + * */ + + +PIDiagnostics::PIDiagnostics(bool start_): PITimer() { + PITimer::reset(); + reset(); + if (start_) start(); +} + + +void PIDiagnostics::reset() { + lock(); + qual = PIDiagnostics::Unknown; + speedIn = speedOut = PIString::readableSize(0) + "/s"; + ifreq = immediate_freq = integral_freq = 0.f; + packets[0] = packets[1] = 0; + cur_pckt = rec_once = 0; + wrong_count = receive_count = send_count = 0; + packets_in_sec = packets_out_sec = bytes_in_sec = bytes_out_sec = 0; + unlock(); +} + + +void PIDiagnostics::received(int size, bool correct) { + lock(); + packets[correct ? 1 : 0]++; + rec_once = 1; + if (correct) { + float el = elapsed_s(); + PITimer::reset(); + if (el > 0.f) immediate_freq = ifreq = 1.f / el; + else immediate_freq = ifreq = 0.f; + receive_count++; + packets_in_sec++; + bytes_in_sec += size; + } else { + immediate_freq = ifreq = 0.f; + wrong_count++; + } + unlock(); +} + + +void PIDiagnostics::sended(int size) { + lock(); + send_count++; + packets_out_sec++; + bytes_out_sec += size; + unlock(); +} + + +void PIDiagnostics::tick(void * data, int delimiter) { + lock(); + PIDiagnostics::Quality diag; + float fdel = 1. / (interval() / 1000.); + immediate_freq = ifreq; + ifreq = 0.f; + speedIn = PIString::readableSize(bytes_in_sec * fdel) + "/s"; + speedOut = PIString::readableSize(bytes_out_sec * fdel) + "/s"; + bytes_in_sec = bytes_out_sec = packets_in_sec = packets_out_sec = 0; + int arc = packets[0] + packets[1]; + float good_percents = 0.f; + if (arc > 0) good_percents = (float)packets[1] / arc * 100.f; + integral_freq = packets[1] * fdel; + if (rec_once == 0) { + diag = PIDiagnostics::Unknown; + } else { + if (good_percents == 0.f) diag = PIDiagnostics::Failure; + else if (good_percents <= 20.f) diag = PIDiagnostics::Bad; + else if (good_percents > 20.f && good_percents <= 80.f) diag = PIDiagnostics::Average; + else diag = PIDiagnostics::Good; + if (diag != qual) { + qualityChanged(diag, qual); + qual = diag; + } + } + packets[0] = packets[1] = 0; + unlock(); +} diff --git a/_oldpip/pip_0.4.0_r5/pidiagnostics.h b/_oldpip/pip_0.4.0_r5/pidiagnostics.h new file mode 100644 index 0000000..cecd9ab --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/pidiagnostics.h @@ -0,0 +1,170 @@ +/*! \file pidiagnostics.h + * \brief Connection quality diagnostics +*/ +/* + PIP - Platform Independent Primitives + Speed and quality in/out diagnostics + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com, Bychkov Andrey wapmobil@gmail.com + + 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 3 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, see . +*/ + +#ifndef PIDIAGNOSTICS_H +#define PIDIAGNOSTICS_H + +#include "pitimer.h" + + +class PIP_EXPORT PIDiagnostics: private PITimer +{ + PIOBJECT(PIDiagnostics) +public: + + //! Constructs an empty diagnostics and if "strat_" start it + PIDiagnostics(bool start_ = true); + + virtual ~PIDiagnostics() {;} + + //! Connection quality + enum Quality { + Unknown /** Unknown, no one packet received yet */ = 1, + Failure /** No connection, no one correct packet received for last period */ = 2, + Bad /** Bad connection, correct packets received <= 20% */ = 3, + Average /** Average connection, correct packets received > 20% and <= 80% */ = 4, + Good /** Good connection, correct packets received > 80% */ = 5 + }; + + + //! Returns immediate receive frequency, packets/s + float immediateFrequency() const {return immediate_freq;} + + //! Returns integral receive frequency for period, packets/s + float integralFrequency() const {return integral_freq;} + + //! Returns correct received packets per second + ullong receiveCountPerSec() const {return packets_in_sec;} + + //! Returns sended packets per second + ullong sendCountPerSec() const {return packets_out_sec;} + + //! Returns correct received bytes per second + ullong receiveBytesPerSec() const {return bytes_in_sec;} + + //! Returns sended bytes per second + ullong sendBytesPerSec() const {return bytes_out_sec;} + + //! Returns overall correct received packets count + ullong receiveCount() const {return receive_count;} + + //! Returns overall wrong received packets count + ullong wrongCount() const {return wrong_count;} + + //! Returns overall sended packets count + ullong sendCount() const {return send_count;} + + //! Returns connection quality + PIDiagnostics::Quality quality() const {return qual;} + + //! Returns receive speed in format "n {B|kB|MB|GB|TB}/s" + PIString receiveSpeed() const {return speedIn;} + + //! Returns send speed in format "n {B|kB|MB|GB|TB}/s" + PIString sendSpeed() const {return speedOut;} + + + //! Returns immediate receive frequency pointer, packets/s. Useful for output to PIConsole + const float * immediateFrequency_ptr() const {return &immediate_freq;} + + //! Returns integral receive frequency pointer for period, packets/s. Useful for output to PIConsole + const float * integralFrequency_ptr() const {return &integral_freq;} + + //! Returns correct received packets per second pointer. Useful for output to PIConsole + const ullong * receiveCountPerSec_ptr() const {return &packets_in_sec;} + + //! Returns sended packets per second pointer. Useful for output to PIConsole + const ullong * sendCountPerSec_ptr() const {return &packets_out_sec;} + + //! Returns correct received bytes per second pointer. Useful for output to PIConsole + const ullong * receiveBytesPerSec_ptr() const {return &bytes_in_sec;} + + //! Returns sended bytes per second pointer. Useful for output to PIConsole + const ullong * sendBytesPerSec_ptr() const {return &bytes_out_sec;} + + //! Returns overall correct received packets count pointer. Useful for output to PIConsole + const ullong * receiveCount_ptr() const {return &receive_count;} + + //! Returns overall wrong received packets count pointer. Useful for output to PIConsole + const ullong * wrongCount_ptr() const {return &wrong_count;} + + //! Returns overall sended packets count pointer. Useful for output to PIConsole + const ullong * sendCount_ptr() const {return &send_count;} + + //! Returns connection quality pointer. Useful for output to PIConsole + const int * quality_ptr() const {return (int * )&qual;} + + //! Returns receive speed pointer in format "n {B|kB|MB|GB|TB}/s". Useful for output to PIConsole + const PIString * receiveSpeed_ptr() const {return &speedIn;} + + //! Returns send speed pointer in format "n {B|kB|MB|GB|TB}/s". Useful for output to PIConsole + const PIString * sendSpeed_ptr() const {return &speedOut;} + + EVENT_HANDLER0(void, start) {start(1000.);} + EVENT_HANDLER1(void, start, double, msecs) {if (msecs > 0.) PITimer::start(msecs);} + EVENT_HANDLER0(void, reset); + + EVENT_HANDLER1(void, received, int, size) {received(size, true);} + EVENT_HANDLER2(void, received, int, size, bool, correct); + EVENT_HANDLER1(void, sended, int, size); + + EVENT2(qualityChanged, PIDiagnostics::Quality, new_quality, PIDiagnostics::Quality, old_quality) + +//! \handlers +//! \{ + + //! \fn void start(double msecs = 1000.) + //! \brief Start diagnostics evaluations with period "msecs" milliseconds + + //! \fn void reset() + //! \brief Reset diagnostics counters + + //! \fn void received(int size, bool correct = true) + //! \brief Notify diagnostics about "correct" corected received packet + + //! \fn void sended(int size) + //! \brief Notify diagnostics about sended packet + +//! \} +//! \events +//! \{ + + //! \fn void qualityChanged(PIDiagnostics::Quality new_quality, PIDiagnostics::Quality old_quality) + //! \brief Raise on change receive quality from "old_quality" to "new_quality" + +//! \} + +private: + void tick(void * data, int delimiter); + void changeDisconnectTimeout(); + + PIDiagnostics::Quality qual; + PIString speedIn, speedOut; + float ifreq, immediate_freq, integral_freq; + int packets[2]; + char cur_pckt, rec_once; + ullong wrong_count, receive_count, send_count; + ullong packets_in_sec, packets_out_sec, bytes_in_sec, bytes_out_sec; + +}; + +#endif // PIDIAGNOSTICS_H diff --git a/_oldpip/pip_0.4.0_r5/pidir.cpp b/_oldpip/pip_0.4.0_r5/pidir.cpp new file mode 100644 index 0000000..0fb1cc3 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/pidir.cpp @@ -0,0 +1,313 @@ +/* + PIP - Platform Independent Primitives + Directory + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +#include "pidir.h" + +#if !defined(ANDROID) +#ifdef WINDOWS + const PIChar PIDir::separator = '\\'; +#else + const PIChar PIDir::separator = '/'; +#endif + + +PIDir::PIDir(const PIString & dir) { + path_ = dir; +} + + +PIDir::PIDir(const PIFile & file) { + path_ = file.path(); + if (isExists()) return; + int pos = path_.findLast(separator); + path_.cutRight(path_.size_s() - pos); +} + + +bool PIDir::operator ==(const PIDir & d) const { + return d.absolutePath() == absolutePath(); +} + + +bool PIDir::isAbsolute() const { + if (path_.size() == 0) return false; +#ifdef WINDOWS + if (path_.size() < 3) return false; + return (path_[1] == ":"); +#else + return (path_[0] == separator); +#endif +} + + +PIString PIDir::absolutePath() const { + if (isAbsolute()) return path_; + PIDir d(path_); + d.setDir(PIDir::current().path_ + separator + path_); + return d.path_; +} + + +PIDir & PIDir::cleanPath() { + PIString p(path_); + if (p.size() == 0) { + path_ = "."; + return *this; + } + path_.replaceAll(PIString(separator) + PIString(separator), PIString(separator)); + bool is_abs = isAbsolute(); + PIStringList l = PIString(p).split(separator); +#ifdef WINDOWS + PIString letter; + if (is_abs) letter = l.take_front(); +#endif + l.removeAll("."); + l.removeAll(""); + bool found = true; + while (found) { + found = false; + for (uint i = 0; i < l.size() - 1; ++i) { + if (l.size() < 2) break; + if (l[i] != ".." && l[i + 1] == "..") { + if (l.size() + i > 2) l.remove(i, 2); + else l.remove(i, 1); + --i; + found = true; + } + } + } + found = true; + while (found) { + found = false; + if (l.size() > 0) if (l[0] == "..") + {l.pop_front(); found = true;} + } + path_ = separator + l.join(separator); /// TODO think about windows + if (!is_abs) path_.prepend("."); +#ifdef WINDOWS + else path_.prepend(letter); +#endif + if (path_.size() == 0) path_ = "."; + return *this; +} + + +PIDir & PIDir::setDir(const PIString & path) { + path_ = path; + cleanPath(); + return *this; +} + + +PIDir & PIDir::cd(const PIString & path) { + if (path_.size() == 0) return *this; + if (path_[path_.size() - 1] != separator) path_ += separator; + path_ += path; + return cleanPath(); +} + + +bool PIDir::make(bool withParents) { + PIDir d = cleanedPath(); + PIString tp; + bool is_abs = isAbsolute(); + if (withParents) { + PIStringList l = d.path_.split(separator); + for (int i = l.size_s() - 1; i >= 0; --i) { + if (i > 1) tp = PIStringList(l).remove(i, l.size_s() - i).join(separator); + else { + tp = separator; + if (!is_abs) tp.push_front('.'); + } + //cout << tp << endl; + if (isExists(tp)) { + for (int j = i + 1; j <= l.size_s(); ++j) { + tp = PIStringList(l).remove(j, l.size_s() - j).join(separator); + //cout << tp << endl; + if (makeDir(tp)) continue; + else return false; + } + break; + }; + } + } else + if (makeDir(d.path_)) return true; + return false; +} + + +PIVector PIDir::entries() { + PIVector l; + PIString p(cleanedPath().path_); +#ifdef WINDOWS + WIN32_FIND_DATA fd; memset(&fd, 0, sizeof(fd)); + p += "\\*"; + void * hf = FindFirstFile((LPCTSTR)(p.data()), &fd); + if (!hf) return l; + LARGE_INTEGER filesize; + do { + int m = 0; + filesize.LowPart = filesize.HighPart = 0; + if (fd.dwFileAttributes & FILE_ATTRIBUTE_HIDDEN) m |= S_IFHDN; + if (fd.dwFileAttributes & FILE_ATTRIBUTE_DEVICE) m |= S_IFBLK; + if (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) m |= S_IFDIR; + else { + m |= S_IFREG; + filesize.LowPart = fd.nFileSizeLow; + filesize.HighPart = fd.nFileSizeHigh; + } + l << DirEntry(fd.cFileName, m, filesize.QuadPart); + memset(&fd, 0, sizeof(fd)); + } while (FindNextFile(hf, &fd) != 0); + FindClose(hf); +#else + dirent ** list; +# ifndef QNX + int cnt = scandir(p.data(), &list, 0, versionsort); +# else + int cnt = scandir(const_cast(p.data()), 0, 0, versionsort); +# endif + struct stat fs; + for (int i = 0; i < cnt; ++i) { + stat((p + separator + PIString(list[i]->d_name)).data(), &fs); + l << DirEntry(list[i]->d_name, fs.st_mode, fs.st_size); + if (list[i]->d_name[0] == '.') l.back().mode |= S_IFHDN; + delete list[i]; + } + delete list; +#endif + return l; +} + + + +bool PIDir::isExists(const PIString & path) { +#ifdef WINDOWS + return (GetFileAttributes((LPCTSTR)(path.data())) & FILE_ATTRIBUTE_DIRECTORY); +#else + DIR * dir_ = opendir(path.data()); + if (dir_ == 0) return false; + closedir(dir_); +#endif + return true; +} + + +PIDir PIDir::current() { + char rc[1024]; +#ifdef WINDOWS + memset(rc, 0, 1024); + if (GetCurrentDirectory(1024, (LPTSTR)rc) == 0) return PIString(); +#else + if (getcwd(rc, 1024) == 0) return PIString(); +#endif + return PIDir(rc); +} + + +PIDir PIDir::home() { + char * rc = 0; +#ifdef WINDOWS + rc = new char[1024]; + memset(rc, 0, 1024); + if (ExpandEnvironmentStrings((LPCTSTR)"%HOMEPATH%", (LPTSTR)rc, 1024) == 0) { + delete[] rc; + return PIDir(); + } + PIString s(rc); + delete[] rc; + return PIDir(s); +#else + rc = getenv("HOME"); + if (rc == 0) return PIDir(); + return PIDir(rc); +#endif +} + + +PIDir PIDir::temporary() { + char * rc = 0; +#ifdef WINDOWS + rc = new char[1024]; + memset(rc, 0, 1024); + int ret = GetTempPath(1024, (LPTSTR)rc); + if (ret == 0) { + delete[] rc; + return PIDir(); + } + PIString s(rc); + delete[] rc; + return PIDir(s); +#else + rc = tmpnam(0); + if (rc == 0) return PIDir(); + PIString s(rc); + return PIDir(s.left(s.findLast(PIDir::separator))); +#endif +} + + +bool PIDir::make(const PIString & path, bool withParents) { + PIDir d(path); + if (d.isExists()) return true; + return d.make(withParents); +} + + +bool PIDir::setCurrent(const PIString & path) { +#ifdef WINDOWS + if (SetCurrentDirectory((LPCTSTR)(path.data())) != 0) return true; +#else + if (chdir(path.data()) == 0) return true; +#endif + printf("[PIDir] setCurrent(\"%s\") error: %s\n", path.data(), errorString().c_str()); + return false; +} + + +bool PIDir::makeDir(const PIString & path) { +#ifdef WINDOWS + if (CreateDirectory((LPCTSTR)(path.data()), NULL) != 0) return true; +#else + if (mkdir(path.data(), 16877) == 0) return true; +#endif + printf("[PIDir] makeDir(\"%s\") error: %s\n", path.data(), errorString().c_str()); + return false; +} + + +bool PIDir::removeDir(const PIString & path) { +#ifdef WINDOWS + if (RemoveDirectory((LPCTSTR)(path.data())) != 0) return true; +#else + if (rmdir(path.data()) == 0) return true; +#endif + printf("[PIDir] removeDir(\"%s\") error: %s\n", path.data(), errorString().c_str()); + return false; +} + + +bool PIDir::renameDir(const PIString & path, const PIString & new_name) { + if (::rename(path.data(), new_name.data()) == 0) return true; + printf("[PIDir] renameDir(\"%s\", \"%s\") error: %s\n", path.data(), new_name.data(), errorString().c_str()); + return false; +} + + +#endif diff --git a/_oldpip/pip_0.4.0_r5/pidir.h b/_oldpip/pip_0.4.0_r5/pidir.h new file mode 100644 index 0000000..8a22796 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/pidir.h @@ -0,0 +1,127 @@ +/* + PIP - Platform Independent Primitives + Directory + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +#ifndef PIDIR_H +#define PIDIR_H + +#include "pifile.h" +#if !defined(ANDROID) +#ifdef WINDOWS +# undef S_IFDIR +# undef S_IFREG +# undef S_IFLNK +# undef S_IFBLK +# undef S_IFCHR +# undef S_IFSOCK +# define S_IFDIR 0x01 +# define S_IFREG 0x02 +# define S_IFLNK 0x04 +# define S_IFBLK 0x08 +# define S_IFCHR 0x10 +# define S_IFSOCK 0x20 +#else +# ifdef ANDROID +# include +# else +# include +# endif +# include +#endif +#define S_IFHDN 0x40 + +class PIP_EXPORT PIDir +{ +public: + PIDir(const PIString & dir = PIString()); + PIDir(const PIFile & file); + + struct DirEntry { + DirEntry(const PIString & name_ = PIString(), int mode_ = 0, int size_ = 0) { + name = name_; mode = mode_; size = size_; + } + + PIString name; + int mode; + int size; + + bool isDir() const {return (mode & S_IFDIR);} + bool isFile() const {return (mode & S_IFREG);} + bool isSymbolicLink() const {return (mode & S_IFLNK);} + bool isBlockDevice() const {return (mode & S_IFBLK);} + bool isCharacterDevice() const {return (mode & S_IFCHR);} + bool isSocket() const {return (mode & S_IFSOCK);} + bool isHidden() const {return (mode & S_IFHDN);} + }; + + bool isExists() const {return PIDir::isExists(path_);} + bool isAbsolute() const; + bool isRelative() const {return !isAbsolute();} + + const PIString & path() const {return path_;} + PIString absolutePath() const; + PIDir & cleanPath(); + PIDir cleanedPath() const {PIDir d(path_); d.cleanPath(); return d;} + PIDir & setDir(const PIString & path); + bool setCurrent() {return PIDir::setCurrent(path_);} + + PIVector entries(); + + bool make(bool withParents = true); + bool remove() {return PIDir::remove(path_);} + bool rename(const PIString & new_name) {if (!PIDir::rename(path_, new_name)) return false; path_ = new_name; return true;} + PIDir & cd(const PIString & path); + PIDir & up() {return cd("..");} + + bool operator ==(const PIDir & d) const; + bool operator !=(const PIDir & d) const {return !((*this) == d);} + + + static const PIChar separator; + + static PIDir current(); + static PIDir home(); + static PIDir temporary(); + static bool isExists(const PIString & path); + static bool make(const PIString & path, bool withParents = true); + static bool remove(const PIString & path) {return removeDir(path);} + static bool rename(const PIString & path, const PIString & new_name) {return PIDir::renameDir(path, new_name);} + static bool setCurrent(const PIString & path); + static bool setCurrent(const PIDir & dir) {return setCurrent(dir.path_);} + +private: + static bool makeDir(const PIString & path); + static bool removeDir(const PIString & path); + static bool renameDir(const PIString & path, const PIString & new_name); + + PIString path_; + +}; + + +inline bool operator <(const PIDir::DirEntry & v0, const PIDir::DirEntry & v1) {return (v0.name < v1.name);} +inline bool operator >(const PIDir::DirEntry & v0, const PIDir::DirEntry & v1) {return (v0.name > v1.name);} +inline bool operator ==(const PIDir::DirEntry & v0, const PIDir::DirEntry & v1) {return (v0.name == v1.name);} +inline bool operator !=(const PIDir::DirEntry & v0, const PIDir::DirEntry & v1) {return (v0.name != v1.name);} + +inline PICout operator <<(PICout s, const PIDir & v) {s.setControl(0, true); s << "PIDir(\"" << v.path() << "\")"; s.restoreControl(); return s;} +inline PICout operator <<(PICout s, const PIDir::DirEntry & v) {s.setControl(0, true); s << "DirEntry(\"" << v.name << "\", " << v.size << " b, " << PIString::fromNumber(v.mode, 16) << ")"; s.restoreControl(); return s;} + + +#endif +#endif // PIDIR_H diff --git a/_oldpip/pip_0.4.0_r5/piethernet.cpp b/_oldpip/pip_0.4.0_r5/piethernet.cpp new file mode 100644 index 0000000..35b2d2c --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/piethernet.cpp @@ -0,0 +1,877 @@ +/* + PIP - Platform Independent Primitives + Ethernet, UDP/TCP Broadcast/Multicast + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +#include "piethernet.h" +#include "piconfig.h" +#ifdef QNX +# include +# include +# include +#endif + + +/** \class PIEthernet + * \brief Ethernet device + * \details + * \section PIEthernet_sec0 Synopsis + * %PIEthernet designed to work with IPv4 network by two protocols: + * UDP and TCP. This class allow you send and receive packets to/from + * another computer through network. + * + * \section PIEthernet_sec1 IPv4 + * + * + * \section PIEthernet_sec2 UDP + * User Datagram Protocol + * + * \section PIEthernet_sec3 TCP + * Transmission Control Protocol + * + * */ + +REGISTER_DEVICE(PIEthernet); + + +PIEthernet::PIEthernet(): PIIODevice("", ReadWrite) { + piMonitor.ethernets++; + ip_ = ip_s = ""; + port_ = port_s = 0; + sock = sock_s = -1; + connected_ = connecting_ = listen_threaded = server_bounded = false; + server_thread_.setData(this); + setThreadedReadBufferSize(65536); + setPriority(piHigh); + setType(UDP); + setParameters(PIEthernet::ReuseAddress); + //if (type_ != UDP) init(); +} + + +PIEthernet::PIEthernet(PIEthernet::Type type_, const PIString & ip_port, const PIFlags params_): PIIODevice(ip_port, ReadWrite) { + piMonitor.ethernets++; + parseAddress(ip_port, &ip_, &port_); + ip_s = ""; + port_s = 0; + sock = sock_s = -1; + connected_ = connecting_ = listen_threaded = server_bounded = false; + server_thread_.setData(this); + setThreadedReadBufferSize(65536); + setPriority(piHigh); + setType(type_); + setParameters(params_); + if (type_ != UDP) init(); +} + + +PIEthernet::PIEthernet(int sock_, PIString ip_port): PIIODevice("", ReadWrite) { + piMonitor.ethernets++; + parseAddress(ip_port, &ip_s, &port_s); + sock = sock_; + sock_s = -1; + init_ = opened_ = connected_ = true; + connecting_ = listen_threaded = server_bounded = false; + server_thread_.setData(this); + setParameters(PIEthernet::ReuseAddress); + setThreadedReadBufferSize(65536); + setPriority(piHigh); + setType(TCP_Client, false); + setPath(ip_port); +} + + +PIEthernet::~PIEthernet() { + piMonitor.ethernets--; + stop(); + closeDevice(); + //if (buffer_ != 0) delete buffer_; + //buffer_ = 0; +} + + +bool PIEthernet::init() { + //cout << "init " << type_ << endl; + closeSocket(sock); + closeSocket(sock_s); + int st = 0, pr = 0; +#ifdef WINDOWS + int flags = WSA_FLAG_OVERLAPPED; +#else + int so = 1; +#endif + if (type() == UDP) { + st = SOCK_DGRAM; + pr = IPPROTO_UDP; + } else { + st = SOCK_STREAM; + pr = IPPROTO_TCP; + } +#ifdef WINDOWS + if (type() == UDP) flags = WSA_FLAG_MULTIPOINT_C_LEAF | WSA_FLAG_MULTIPOINT_D_LEAF; + sock = WSASocket(AF_INET, st, pr, NULL, 0, flags); + sock_s = WSASocket(AF_INET, st, pr, NULL, 0, WSA_FLAG_OVERLAPPED); +#else + sock = socket(AF_INET, st, pr); + sock_s = socket(AF_INET, st, pr); +#endif + if (sock == -1 || sock_s == -1) { + piCoutObj << "Can`t create socket, " << ethErrorString(); + return false; + } + PIFlags params = parameters(); +#ifndef WINDOWS + timeval to; + to.tv_sec = 10; + to.tv_usec = 0; + setsockopt(sock, SOL_SOCKET, SO_RCVTIMEO, &to, sizeof(to)); + setsockopt(sock, SOL_SOCKET, SO_SNDTIMEO, &to, sizeof(to)); + if (params[PIEthernet::ReuseAddress]) setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &so, sizeof(so)); + if (params[PIEthernet::Broadcast]) setsockopt(sock, SOL_SOCKET, SO_BROADCAST, &so, sizeof(so)); +#else + BOOL bv = TRUE; + if (params[PIEthernet::ReuseAddress]) setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (const char * )&bv, sizeof(bv)); +#endif + //cout << "inited " << sock << ": bc = " << params << endl; + //fcntl(sock, F_SETFL, 0/*O_NONBLOCK*/); + return true; +} + + +void PIEthernet::parseAddress(const PIString & ipp, PIString * ip, int * port) { + if (ip != 0) *ip = ipp.left(ipp.find(":")); + if (port != 0) *port = ipp.right(ipp.length() - ipp.find(":") - 1).toInt(); +} + + +bool PIEthernet::openDevice() { + if (connected_) return true; + init(); + if (sock == -1 || path().isEmpty()) return false; + parseAddress(path(), &ip_, &port_); + if (type() != UDP || mode() == PIIODevice::WriteOnly) + return true; + //piCout << "bind to" << (params[PIEthernet::Broadcast] ? "bc" : ip_) << ":" << port_ << " ..."; + memset(&addr_, 0, sizeof(addr_)); + addr_.sin_family = AF_INET; + addr_.sin_port = htons(port_); + PIFlags params = parameters(); + if (params[PIEthernet::Broadcast]) addr_.sin_addr.s_addr = INADDR_ANY; + else addr_.sin_addr.s_addr = inet_addr(ip_.data()); +#ifdef QNX + addr_.sin_len = sizeof(addr_); +#endif + int tries = 0; + while ((bind(sock, (sockaddr * )&addr_, sizeof(addr_)) == -1) && (tries < 10)) { + init(); + tries++; + } + if (tries == 10) { + piCoutObj << "Can`t bind to " << ip_ << ":" << port_ << ", " << ethErrorString(); + return false; + } + opened_ = true; + while (!mcast_queue.isEmpty()) + joinMulticastGroup(mcast_queue.dequeue()); + //cout << "!" << endl; + return true; +} + + +bool PIEthernet::closeDevice() { + //cout << "close\n"; + if (server_thread_.isRunning()) { + server_thread_.stop(); + if (!server_thread_.waitForFinish(100)) + server_thread_.terminate(); + } + closeSocket(sock); + closeSocket(sock_s); + piForeach (PIEthernet * i, clients_) + delete i; + clients_.clear(); + if (connected_) disconnected(false); + connected_ = false; + return true; +} + + +void PIEthernet::closeSocket(int & sd) { + if (sd != -1) { +#ifdef WINDOWS + shutdown(sd, SD_BOTH); + closesocket(sd); +#else + shutdown(sd, SHUT_RDWR); + ::close(sd); +#endif + } + sd = -1; +} + + +void PIEthernet::setParameter(PIEthernet::Parameters parameter, bool on) { + PIFlags cp = (PIFlags)(property("parameters").toInt()); + cp.setFlag(parameter, on); + setParameters(cp); +} + + +bool PIEthernet::joinMulticastGroup(const PIString & group) { + if (sock == -1) init(); + if (sock == -1) return false; + if (type() != UDP) { + piCoutObj << "Only UDP sockets can join multicast groups"; + return false; + } + if (!opened_) { + if (mcast_queue.contains(group)) + return false; + mcast_queue.enqueue(group); + if (!mcast_groups.contains(group)) mcast_groups << group; + return true; + } + PIFlags params = parameters(); +#ifdef WINDOWS + parseAddress(path(), &ip_, &port_); + memset(&addr_, 0, sizeof(addr_)); + addr_.sin_family = AF_INET; + addr_.sin_addr.s_addr = inet_addr(group.data()); + //int so = 1; + //setsockopt(sock, IPPROTO_IP, IP_MULTICAST_LOOP, (char * )&so, sizeof(so)); + SOCKET ret = WSAJoinLeaf(sock, (sockaddr *)&addr_, sizeof(addr_), NULL, NULL, NULL, NULL, JL_BOTH); + if (ret == INVALID_SOCKET) { + piCoutObj << "Can`t join multicast group " << group << ", " << ethErrorString(); + return false; + } + if (ret != sock) { + leafs.insert(group, ret); + if (!mcast_groups.contains(group)) mcast_groups << group; + } +#else +# ifndef QNX + if (!params[Broadcast]) + piCoutObj << "Warning: \"Broadcast\" parameter not set, \"joinMulticastGroup(\"" << group << "\")\" may be useless!"; + parseAddress(path(), &ip_, &port_); + struct ip_mreqn mreq; + memset(&mreq, 0, sizeof(mreq)); + mreq.imr_ifindex = 0; + if (params[PIEthernet::Broadcast]) mreq.imr_address.s_addr = INADDR_ANY; + else mreq.imr_address.s_addr = inet_addr(ip_.data()); + PIEthernet::InterfaceList il = interfaces(); + const PIEthernet::Interface * ci = il.getByAddress(ip_); + if (ci != 0) mreq.imr_ifindex = ci->index; + //piCout << "join group" << group << "ip" << ip_ << "with index" << mreq.imr_ifindex; + mreq.imr_multiaddr.s_addr = inet_addr(group.data()); + int so = 1; + //setsockopt(sock, SOL_SOCKET, SO_BROADCAST, &so, sizeof(so)); + setsockopt(sock, IPPROTO_IP, IP_MULTICAST_LOOP, &so, sizeof(so)); + setsockopt(sock, IPPROTO_IP, IP_MULTICAST_IF, &mreq, sizeof(mreq)); + if (setsockopt(sock, IPPROTO_IP, IP_ADD_MEMBERSHIP, &mreq, sizeof(mreq)) != 0) { + piCoutObj << "Can`t join multicast group " << group << ", " << ethErrorString(); + return false; + } + if (!mcast_groups.contains(group)) mcast_groups << group; +# endif +#endif + return true; +} + + +bool PIEthernet::leaveMulticastGroup(const PIString & group) { + if (sock == -1) init(); + if (sock == -1) return false; + if (type() != UDP) { + piCoutObj << "Only UDP sockets can leave multicast groups"; + return false; + } + PIFlags params = parameters(); +#ifdef WINDOWS + SOCKET s = leafs[group]; + if (s != SOCKET()) { + leafs.erase(group); + closesocket(s); + mcast_groups.removeAll(group); + } +#else +# ifndef QNX + parseAddress(path(), &ip_, &port_); + struct ip_mreqn mreq; + memset(&mreq, 0, sizeof(mreq)); + if (params[PIEthernet::Broadcast]) mreq.imr_address.s_addr = INADDR_ANY; + else mreq.imr_address.s_addr = inet_addr(ip_.data()); + mreq.imr_multiaddr.s_addr = inet_addr(group.data()); + mreq.imr_ifindex = 0; + if (setsockopt(sock, IPPROTO_IP, IP_DROP_MEMBERSHIP, &mreq, sizeof(mreq)) == -1) { + piCoutObj << "Can`t leave multicast group " << group << ", " << ethErrorString(); + return false; + } + mcast_groups.removeAll(group); +#endif +#endif + return true; +} + + +bool PIEthernet::connect() { + connecting_ = true; + return true; + /*if (sock == -1) return false; + memset(&addr_, 0, sizeof(addr_)); + parseAddress(path_, &ip_, &port_); + addr_.sin_port = htons(port_); + addr_.sin_addr.s_addr = inet_addr(ip_.data()); + addr_.sin_family = AF_INET; +#ifdef QNX + addr_.sin_len = sizeof(addr_); +#endif + //piCoutObj << "connect to " << ip << ":" << port_; + connected_ = (::connect(sock, (sockaddr * )&addr_, sizeof(addr_)) == 0); + if (!connected_) + piCoutObj << "Can`t connect to " << ip_ << ":" << port_ << ", " << ethErrorString(); + opened_ = connected_; + if (connected_) connected(); + return connected_;*/ +} + + +bool PIEthernet::listen(bool threaded) { + if (sock == -1) init(); + if (sock == -1) return false; + if (threaded) { + if (server_thread_.isRunning()) { + if (!server_bounded) return true; + server_thread_.stop(); + if (!server_thread_.waitForFinish(100)) + server_thread_.terminate(); + } + listen_threaded = true; + server_bounded = false; + server_thread_.start(server_func); + return true; + } + listen_threaded = server_bounded = false; + parseAddress(path(), &ip_, &port_); + memset(&addr_, 0, sizeof(addr_)); + addr_.sin_port = htons(port_); + addr_.sin_addr.s_addr = inet_addr(ip_.data()); + addr_.sin_family = AF_INET; +#ifdef QNX + addr_.sin_len = sizeof(addr_); +#endif + opened_ = false; + int tries = 0; + while ((bind(sock, (sockaddr * )&addr_, sizeof(addr_)) == -1) && (tries < 10)) { + init(); + tries++; + } + if (tries == 10) { + piCoutObj << "Can`t bind to " << ip_ << ":" << port_ << ", " << ethErrorString(); + return false; + } + if (::listen(sock, 64) == -1) { + piCoutObj << "Can`t listen on "<< ip_ << ":" << port_ << ", " << ethErrorString(); + return false; + } + opened_ = server_bounded = true; + //piCoutObj << "listen on " << ip_ << ":" << port_; + server_thread_.start(server_func); + return true; +} + + +int PIEthernet::read(void * read_to, int max_size) { + //cout << "read " << sock << endl; + if (sock == -1) init(); + if (sock == -1 || read_to == 0) return -1; + int rs = 0, s = 0, lerr = 0; + sockaddr_in client_addr; + socklen_t slen = sizeof(client_addr); + //piCoutObj << "read from " << ip_ << ":" << port_ << endl; + switch (type()) { + case TCP_SingleTCP: + ::listen(sock, 64); + s = accept(sock, (sockaddr * )&client_addr, &slen); + if (s == -1) { + //piCoutObj << "Can`t accept new connection, " << ethErrorString(); + msleep(1); + return -1; + } + rs = recv(s, (char * )read_to, max_size, 0); + closeSocket(s); + return rs; + case TCP_Client: + if (connecting_) { + memset(&addr_, 0, sizeof(addr_)); + parseAddress(path(), &ip_, &port_); + addr_.sin_port = htons(port_); + addr_.sin_addr.s_addr = inet_addr(ip_.data()); + addr_.sin_family = AF_INET; +#ifdef QNX + addr_.sin_len = sizeof(addr_); +#endif + //piCoutObj << "connect to " << ip_ << ":" << port_ << "..."; + connected_ = (::connect(sock, (sockaddr * )&addr_, sizeof(addr_)) == 0); + //piCoutObj << "connect to " << ip_ << ":" << port_ << connected_; + if (!connected_) + piCoutObj << "Can`t connect to " << ip_ << ":" << port_ << ", " << ethErrorString(); + opened_ = connected_; + if (connected_) { + connecting_ = false; + connected(); + } else + piMSleep(10); + //piCout << "connected to" << path(); + } + if (!connected_) return -1; + errorClear(); +#ifdef WINDOWS + rs = recv(sock, (char * )read_to, max_size, 0); +#else + rs = recv(sock, read_to, max_size, MSG_DONTWAIT); +#endif + //piCoutObj << "readed" << rs; + if (rs <= 0) { +#ifdef WINDOWS + lerr = WSAGetLastError(); + if (lerr == WSAEWOULDBLOCK) { + piMSleep(10); + return -1; + } +#else + lerr = errno; + //piCoutObj << errorString(); + if (lerr == EAGAIN || lerr == EWOULDBLOCK) { + piMSleep(10); + return -1; + } +#endif + if (connected_) { + init(); + disconnected(rs < 0); + } + connected_ = false; + //piCoutObj << "eth" << ip_ << "disconnected"; + } + if (rs > 0) received(read_to, rs); + return rs; + case UDP: +#ifdef WINDOWS + rs = recv(sock, (char * )read_to, max_size, 0); +#else + rs = recv(sock, read_to, max_size, 0); +#endif + //piCout << "eth" << path() << "read return" << rs << errno; + if (rs > 0) received(read_to, rs); + return rs; + //return ::read(sock, read_to, max_size); + default: break; + //return ::read(sock, (char * )read_to, max_size); + } + return -1; +} + + +int PIEthernet::write(const void * data, int max_size) { + if (sock == -1) init(); + if (sock == -1 || !isWriteable()) { + //piCoutObj << "Can`t send to uninitialized socket"; + return -1; + } + //piCoutObj << "sending to " << ip_s << ":" << port_s << " " << max_size << " bytes"; + int ret = 0; + switch (type()) { + case TCP_SingleTCP: + memset(&addr_, 0, sizeof(addr_)); + addr_.sin_port = htons(port_s); + addr_.sin_addr.s_addr = inet_addr(ip_s.data()); + addr_.sin_family = AF_INET; +#ifdef QNX + addr_.sin_len = sizeof(addr_); +#endif + //piCoutObj << "connect SingleTCP" << ip_s << ":" << port_s << "..."; + if (::connect(sock, (sockaddr * )&addr_, sizeof(addr_)) != 0) { + //piCoutObj << "Can`t connect to " << ip_s << ":" << port_s << ", " << ethErrorString(); + msleep(1); + return -1; + } + //piCoutObj << "ok, write SingleTCP" << int(data) << max_size << "bytes ..."; + ret = ::send(sock, (const char *)data, max_size, 0); + //piCoutObj << "ok, ret" << ret; + closeSocket(sock); + init(); + return ret; + case UDP: + saddr_.sin_port = htons(port_s); + /*if (params[PIEthernet::Broadcast]) saddr_.sin_addr.s_addr = INADDR_BROADCAST; + else*/ saddr_.sin_addr.s_addr = inet_addr(ip_s.data()); + saddr_.sin_family = AF_INET; + //piCout << "[PIEth] write to" << ip_s << ":" << port_s << max_size << "bytes ..."; +#ifdef WINDOWS + return sendto(sock_s, (const char * )data, max_size, 0, (sockaddr * )&saddr_, sizeof(saddr_)); +#else + return sendto(sock_s, data, max_size, 0, (sockaddr * )&saddr_, sizeof(saddr_)); +#endif + //piCout << "[PIEth] write to" << ip_s << ":" << port_s << "ok"; + case TCP_Client: + if (connecting_) { + memset(&addr_, 0, sizeof(addr_)); + parseAddress(path(), &ip_, &port_); + addr_.sin_port = htons(port_); + addr_.sin_addr.s_addr = inet_addr(ip_.data()); + addr_.sin_family = AF_INET; +#ifdef QNX + addr_.sin_len = sizeof(addr_); +#endif + //piCoutObj << "connect to " << ip << ":" << port_; + connected_ = (::connect(sock, (sockaddr * )&addr_, sizeof(addr_)) == 0); + if (!connected_) + piCoutObj << "Can`t connect to " << ip_ << ":" << port_ << ", " << ethErrorString(); + opened_ = connected_; + if (connected_) { + connecting_ = false; + connected(); + } + } + if (!connected_) return -1; + ret = ::send(sock, (const char *)data, max_size, 0); + if (ret < 0) { + connected_ = false; { + init(); + disconnected(true); + } + } + return ret; + default: break; + //return ::read(sock, read_to, max_size); + } + return -1; +} + +void PIEthernet::server_func(void * eth) { + PIEthernet * ce = (PIEthernet * )eth; + if (ce->listen_threaded) { + if (!ce->server_bounded) { + if (!ce->listen(false)) { + ce->listen_threaded = true; + piMSleep(100); + return; + } + } + } + sockaddr_in client_addr; + socklen_t slen = sizeof(client_addr); + int s = accept(ce->sock, (sockaddr * )&client_addr, &slen); + if (s == -1) { + if (ce->debug()) piCout << "[PIEthernet] Can`t accept new connection, " << ethErrorString(); + piMSleep(10); + return; + } + PIString ip(inet_ntoa(client_addr.sin_addr)); + ip += ":" + PIString::fromNumber(htons(client_addr.sin_port)); + ce->clients_ << new PIEthernet(s, ip); + ce->newConnection(ce->clients_.back()); + //cout << "connected " << ip << endl; + //char d[256]; + //cout << " recv " << recv(s, d, 256, 0) << endl; + //cout << recv(ce->clients_.back()->sock, d, 256, 0) << endl; + +} + + +bool PIEthernet::configureDevice(const void * e_main, const void * e_parent) { + PIConfig::Entry * em = (PIConfig::Entry * )e_main; + PIConfig::Entry * ep = (PIConfig::Entry * )e_parent; + setReadIP(readDeviceSetting("ip", readIP(), em, ep)); + setReadPort(readDeviceSetting("port", readPort(), em, ep)); + setParameter(PIEthernet::Broadcast, readDeviceSetting("broadcast", isParameterSet(PIEthernet::Broadcast), em, ep)); + setParameter(PIEthernet::ReuseAddress, readDeviceSetting("reuseAddress", isParameterSet(PIEthernet::ReuseAddress), em, ep)); + return true; +} + + +PIString PIEthernet::constructFullPath() const { + PIString ret(fullPathPrefix() + "://"); + ret << (type() == PIEthernet::UDP ? "UDP" : "TCP") << ":" << readIP() << ":" << readPort(); + if (type() == PIEthernet::UDP) { + piForeachC (PIString & m, multicastGroups()) + ret << ":mcast:" << m; + } + return ret; +} + + +void PIEthernet::configureFromFullPath(const PIString & full_path) { + PIStringList pl = full_path.split(":"); + bool mcast = false; + for (int i = 0; i < pl.size_s(); ++i) { + PIString p(pl[i]); + switch (i) { + case 0: + p = p.toLowerCase(); + if (p == "udp") setType(UDP); + if (p == "tcp") setType(TCP_Client); + break; + case 1: setReadIP(p); setSendIP(p); break; + case 2: setReadPort(p.toInt()); setSendPort(p.toInt()); break; + } + if (i <= 2) continue; + if (i % 2 == 1) {if (p.toLowerCase() == "mcast") mcast = true;} + else {if (mcast) {joinMulticastGroup(p); mcast = false;}} + } +} + + +PIEthernet::InterfaceList PIEthernet::interfaces() { + PIEthernet::InterfaceList il; + Interface ci; +#ifdef WINDOWS + PIP_ADAPTER_INFO pAdapterInfo, pAdapter = 0; + int ret = 0; + ulong ulOutBufLen = sizeof(IP_ADAPTER_INFO); + pAdapterInfo = (IP_ADAPTER_INFO * ) HeapAlloc(GetProcessHeap(), 0, (sizeof (IP_ADAPTER_INFO))); + if (pAdapterInfo == 0) { + piCout << "[PIEthernet] Error allocating memory needed to call GetAdaptersinfo"; + return il; + } + if (GetAdaptersInfo(pAdapterInfo, &ulOutBufLen) == ERROR_BUFFER_OVERFLOW) { + HeapFree(GetProcessHeap(), 0, (pAdapterInfo)); + pAdapterInfo = (IP_ADAPTER_INFO *) HeapAlloc(GetProcessHeap(), 0, (ulOutBufLen)); + if (pAdapterInfo == 0) { + piCout << "[PIEthernet] Error allocating memory needed to call GetAdaptersinfo"; + return il; + } + } + if ((ret = GetAdaptersInfo(pAdapterInfo, &ulOutBufLen)) == NO_ERROR) { + pAdapter = pAdapterInfo; + while (pAdapter) { + ci.name = PIString(pAdapter->AdapterName); + ci.index = pAdapter->Index; + ci.address = PIString(pAdapter->IpAddressList.IpAddress.String); + if (ci.address == "0.0.0.0") { + pAdapter = pAdapter->Next; + continue; + } + ci.mac = macFromBytes(PIByteArray(pAdapter->Address, pAdapter->AddressLength)); + ci.netmask = PIString(pAdapter->IpAddressList.IpMask.String); + ci.flags = PIEthernet::ifActive | PIEthernet::ifRunning; + //if (ret->ifa_flags & IFF_BROADCAST) ci.flags |= PIEthernet::ifBroadcast; + //if (ret->ifa_flags & IFF_MULTICAST) ci.flags |= PIEthernet::ifMulticast; + if (pAdapter->Type == MIB_IF_TYPE_PPP) ci.flags |= PIEthernet::ifPTP; + if (pAdapter->Type == MIB_IF_TYPE_LOOPBACK) ci.flags |= PIEthernet::ifLoopback; + ci.broadcast.clear(); + ci.ptp.clear(); + /*if (ci.flags[PIEthernet::ifBroadcast]) + ci.broadcast = getSockAddr(ret->ifa_broadaddr); + if (ci.flags[PIEthernet::ifPTP]) + ci.ptp = getSockAddr(ret->ifa_dstaddr);*/ + il << ci; + pAdapter = pAdapter->Next; + } + } else + piCout << "[PIEthernet] GetAdaptersInfo failed with error: " << ret; + if (pAdapterInfo) + HeapFree(GetProcessHeap(), 0, (pAdapterInfo)); +#else +/*# ifdef QNX + PIStringList il, sl; + PIProcess proc; + proc.setGrabOutput(true); + proc.exec(ifconfigPath.c_str(), "-l"); + if (!proc.waitForFinish(1000)) return sl; + PIString out(proc.readOutput()); + il = out.split(" "); + il.removeAll(""); + piForeachC (PIString & i, il) { + proc.exec(ifconfigPath.c_str(), i); + if (!proc.waitForFinish(1000)) return il; + sl << i.trimmed(); + out = proc.readOutput(); + int al = out.length(); + al = (al - out.replaceAll("alias", "").length()) / 5; + for (int j = 0; j < al; ++j) + sl << i.trimmed() + ":" + PIString::fromNumber(j); + } + return sl; +# else + PIStringList sl; + PIProcess proc; + proc.setGrabOutput(true); + proc.exec(ifconfigPath.c_str(), "-s"); + if (!proc.waitForFinish(1000)) return sl; + PIString out(proc.readOutput()); + out.cutLeft(out.find('\n') + 1); + while (!out.isEmpty()) { + sl << out.left(out.find(' ')); + out.cutLeft(out.find('\n') + 1); + } + return sl; +# endif*/ +# ifdef ANDROID + struct ifconf ifc; + int s = socket(AF_INET, SOCK_STREAM, IPPROTO_IP); + ifc.ifc_len = 256; + ifc.ifc_buf = new char[ifc.ifc_len]; + if (ioctl(s, SIOCGIFCONF, &ifc) < 0) { + piCout << "[PIEthernet] Can`t get interfaces:" << errorString(); + delete ifc.ifc_buf; + return il; + } + int icnt = ifc.ifc_len / sizeof(ifreq); + PIStringList inl; + struct ifreq ir; + for (int i = 0; i < icnt; ++i) { + PIString in(ifc.ifc_req[i].ifr_name); + if (in.isEmpty()) continue; + ci.name = in; + strcpy(ir.ifr_name, in.data()); + if (ioctl(s, SIOCGIFHWADDR, &ir) == 0) + ci.mac = macFromBytes(PIByteArray(ir.ifr_hwaddr.sa_data, 6)); + if (ioctl(s, SIOCGIFADDR, &ir) >= 0) + ci.address = getSockAddr(&ir.ifr_addr); + if (ioctl(s, SIOCGIFNETMASK, &ir) >= 0) + ci.netmask = getSockAddr(&ir.ifr_addr); + il << ci; + } + delete ifc.ifc_buf; +# else + struct ifaddrs * ret; + int s = socket(AF_INET, SOCK_STREAM, IPPROTO_IP); + if (getifaddrs(&ret) == 0) { + while (ret != 0) { + if (ret->ifa_addr->sa_family != AF_INET) { + ret = ret->ifa_next; + continue; + } + ci.name = PIString(ret->ifa_name); + ci.address = getSockAddr(ret->ifa_addr); + ci.netmask = getSockAddr(ret->ifa_netmask); + ci.mac.clear(); +# ifdef QNX + int fd = ::open((PIString("/dev/io-net/") + ci.name).data(), O_RDONLY); + if (fd != 0) { + nic_config_t nic; + devctl(fd, DCMD_IO_NET_GET_CONFIG, &nic, sizeof(nic), 0); + ::close(fd); + ci.mac = macFromBytes(PIByteArray(nic.permanent_address, 6)); + } +# else +# ifdef MAC_OS + PIString req = PIString(PIInit::instance()->ifconfigPath) + " " + ci.name + " | grep ether"; + FILE * fp = popen(req.data(), "r"); + if (fp != 0) { + char in[256]; + if (fgets(in, 256, fp) != 0) { + req = PIString(in).trim(); + ci.mac = req.cutLeft(req.find(" ") + 1).trim().toUpperCase(); + } + pclose(fp); + } +# else + if (s != -1) { + struct ifreq ir; + strcpy(ir.ifr_name, ret->ifa_name); + if (ioctl(s, SIOCGIFHWADDR, &ir) == 0) + ci.mac = macFromBytes(PIByteArray(ir.ifr_hwaddr.sa_data, 6)); + } +# endif +# endif + ci.flags = 0; + if (ret->ifa_flags & IFF_UP) ci.flags |= PIEthernet::ifActive; + if (ret->ifa_flags & IFF_RUNNING) ci.flags |= PIEthernet::ifRunning; + if (ret->ifa_flags & IFF_BROADCAST) ci.flags |= PIEthernet::ifBroadcast; + if (ret->ifa_flags & IFF_MULTICAST) ci.flags |= PIEthernet::ifMulticast; + if (ret->ifa_flags & IFF_LOOPBACK) ci.flags |= PIEthernet::ifLoopback; + if (ret->ifa_flags & IFF_POINTOPOINT) ci.flags |= PIEthernet::ifPTP; + ci.broadcast.clear(); + ci.ptp.clear(); + if (ci.flags[PIEthernet::ifBroadcast]) + ci.broadcast = getSockAddr(ret->ifa_broadaddr); + if (ci.flags[PIEthernet::ifPTP]) + ci.ptp = getSockAddr(ret->ifa_dstaddr); + ci.index = if_nametoindex(ret->ifa_name); + il << ci; + ret = ret->ifa_next; + } + freeifaddrs(ret); + } else + piCout << "[PIEthernet] Can`t get interfaces:" << errorString(); + if (s != -1) ::close(s); +# endif +#endif + return il; +} + + +PIString PIEthernet::interfaceAddress(const PIString & interface_) { +#ifdef WINDOWS + piCout << "[PIEthernet] Not implemented on Windows, use \"PIEthernet::allAddresses\" or \"PIEthernet::interfaces\" instead"; + return PIString(); +#else + struct ifreq ifr; + memset(&ifr, 0, sizeof(ifr)); + strcpy(ifr.ifr_name, interface_.data()); + int s = socket(AF_INET, SOCK_DGRAM, 0); + ioctl(s, SIOCGIFADDR, &ifr); + ::close(s); + struct sockaddr_in * sa = (struct sockaddr_in * )&ifr.ifr_addr; + return PIString(inet_ntoa(sa->sin_addr)); +#endif + +} + + +PIStringList PIEthernet::allAddresses() { +/*#ifdef WINDOWS + PIStringList al; + PIString ca; + PIP_ADAPTER_INFO pAdapterInfo, pAdapter = 0; + int ret = 0; + ulong ulOutBufLen = sizeof(IP_ADAPTER_INFO); + pAdapterInfo = (IP_ADAPTER_INFO * ) HeapAlloc(GetProcessHeap(), 0, (sizeof (IP_ADAPTER_INFO))); + if (pAdapterInfo == 0) { + piCout << "[PIEthernet] Error allocating memory needed to call GetAdaptersinfo"; + return PIStringList(); + } + if (GetAdaptersInfo(pAdapterInfo, &ulOutBufLen) == ERROR_BUFFER_OVERFLOW) { + HeapFree(GetProcessHeap(), 0, (pAdapterInfo)); + pAdapterInfo = (IP_ADAPTER_INFO *) HeapAlloc(GetProcessHeap(), 0, (ulOutBufLen)); + if (pAdapterInfo == 0) { + piCout << "[PIEthernet] Error allocating memory needed to call GetAdaptersinfo"; + return PIStringList(); + } + } + if ((ret = GetAdaptersInfo(pAdapterInfo, &ulOutBufLen)) == NO_ERROR) { + pAdapter = pAdapterInfo; + while (pAdapter) { + ca = PIString(pAdapter->IpAddressList.IpAddress.String); + if (ca != "0.0.0.0") al << ca; + pAdapter = pAdapter->Next; + } + } else + piCout << "[PIEthernet] GetAdaptersInfo failed with error: " << ret; + if (pAdapterInfo) + HeapFree(GetProcessHeap(), 0, (pAdapterInfo)); + return al; +#else*/ + PIEthernet::InterfaceList il = interfaces(); + PIStringList al; + piForeachC (PIEthernet::Interface & i, il) + al << i.address; + return al.removeStrings("0.0.0.0"); +//#endif +} diff --git a/_oldpip/pip_0.4.0_r5/piethernet.h b/_oldpip/pip_0.4.0_r5/piethernet.h new file mode 100644 index 0000000..705f4de --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/piethernet.h @@ -0,0 +1,364 @@ +/*! \file piethernet.h + * \brief Ethernet device +*/ +/* + PIP - Platform Independent Primitives + Ethernet, UDP/TCP Broadcast/Multicast + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +#ifndef PIETHERNET_H +#define PIETHERNET_H + +#include "pitimer.h" +#include "piiodevice.h" +#include "piprocess.h" + +class PIP_EXPORT PIEthernet: public PIIODevice +{ + PIIODEVICE(PIEthernet) + friend class PIPeer; +public: + + //! Contructs UDP %PIEthernet with empty read address + PIEthernet(); + + //! \brief Type of %PIEthernet + enum PIP_EXPORT Type { + UDP /** UDP - User Datagram Protocol */ , + TCP_Client /** TCP client - allow connection to TCP server */ , + TCP_Server /** TCP server - receive connections from TCP clients */ , + TCP_SingleTCP + }; + + //! \brief Parameters of %PIEthernet + enum PIP_EXPORT Parameters { + ReuseAddress /** Rebind address if there is already binded */ = 0x1, + Broadcast /** Broadcast send */ = 0x2 + }; + + //! Contructs %PIEthernet with type "type", read address "ip_port" and parameters "params" + PIEthernet(Type type, const PIString & ip_port = PIString(), const PIFlags params = 0); + + virtual ~PIEthernet(); + + + //! Set read address + void setReadAddress(const PIString & ip, int port) {setPath(ip + ":" + PIString::fromNumber(port));} + + //! Set read address in format "i.i.i.i:p" + void setReadAddress(const PIString & ip_port) {setPath(ip_port);} + + //! Set read IP + void setReadIP(const PIString & ip) {parseAddress(path(), &ip_, &port_); setPath(ip + ":" + PIString::fromNumber(port_));} + + //! Set read port + void setReadPort(int port) {parseAddress(path(), &ip_, &port_); setPath(ip_ + ":" + PIString::fromNumber(port));} + + + //! Set send address + void setSendAddress(const PIString & ip, int port) {ip_s = ip; port_s = port;} + + //! Set send address in format "i.i.i.i:p" + void setSendAddress(const PIString & ip_port) {parseAddress(ip_port, &ip_s, &port_s);} + + //! Set send IP + void setSendIP(const PIString & ip) {ip_s = ip;} + + //! Set send port + void setSendPort(int port) {port_s = port;} + + + //! Returns read address in format "i.i.i.i:p" + PIString readAddress() const {return path();} + + //! Returns read IP + PIString readIP() const {parseAddress(path(), &ip_, &port_); return ip_;} + + //! Returns read port + int readPort() const {parseAddress(path(), &ip_, &port_); return port_;} + + + //! Returns send address in format "i.i.i.i:p" + PIString sendAddress() const {return ip_s + ":" + PIString::fromNumber(port_s);} + + //! Returns send IP + PIString sendIP() const {return ip_s;} + + //! Returns send port + int sendPort() const {return port_s;} + + + //! Set parameters to "parameters_". You should to reopen %PIEthernet to apply them + void setParameters(PIFlags parameters_) {setProperty("parameters", (int)parameters_);} + + //! Set parameter "parameter" to state "on". You should to reopen %PIEthernet to apply this + void setParameter(PIEthernet::Parameters parameter, bool on = true); + + //! Returns if parameter "parameter" is set + bool isParameterSet(PIEthernet::Parameters parameter) const {return ((PIFlags)(property("parameters").toInt()))[parameter];} + + //! Returns parameters + PIFlags parameters() const {return (PIFlags)(property("parameters").toInt());} + + //PIByteArray macAddress() {if (!init_) init(); struct ifreq ifr; memset(&ifr, 0, sizeof(ifr)); memcpy(ifr.ifr_name, "eth0", 5); ioctl(sock, SIOCSIFHWADDR, &ifr); return PIByteArray(&ifr.ifr_hwaddr.sa_data, 6);} + + //! Returns %PIEthernet type + Type type() const {return (Type)(property("type").toInt());} + + + //! Join to multicast group with address "group". Use only for UDP + bool joinMulticastGroup(const PIString & group); + + //! Leave multicast group with address "group". Use only for UDP + bool leaveMulticastGroup(const PIString & group); + + //! Returns joined multicast groups. Use only for UDP + const PIStringList & multicastGroups() const {return mcast_groups;} + + + //! Connect to TCP server with address \a readAddress(). Use only for TCP_Client + bool connect(); + + //! Connect to TCP server with address "ip":"port". Use only for TCP_Client + bool connect(const PIString & ip, int port) {setPath(ip + ":" + PIString::fromNumber(port)); return connect();} + + //! Connect to TCP server with address "ip_port". Use only for TCP_Client + bool connect(const PIString & ip_port) {setPath(ip_port); return connect();} + + //! Returns if %PIEthernet connected to TCP server. Use only for TCP_Client + bool isConnected() const {return connected_;} + + + //! Start listen for incoming TCP connections on address \a readAddress(). Use only for TCP_Server + bool listen(bool threaded = false); + + //! Start listen for incoming TCP connections on address "ip":"port". Use only for TCP_Server + bool listen(const PIString & ip, int port, bool threaded = false) {setReadAddress(ip, port); return listen(threaded);} + + //! Start listen for incoming TCP connections on address "ip_port". Use only for TCP_Server + bool listen(const PIString & ip_port, bool threaded = false) {setReadAddress(ip_port); return listen(threaded);} + + PIEthernet * client(int index) {return clients_[index];} + int clientsCount() const {return clients_.size_s();} + PIVector clients() const {return clients_;} + + + //! Send data "data" with size "size" to address "ip":"port" + bool send(const PIString & ip, int port, const void * data, int size, bool threaded = false) {ip_s = ip; port_s = port; if (threaded) {writeThreaded(data, size); return true;} return send(data, size);} + + //! Send data "data" with size "size" to address "ip_port" + bool send(const PIString & ip_port, const void * data, int size, bool threaded = false) {parseAddress(ip_port, &ip_s, &port_s); if (threaded) {writeThreaded(data, size); return true;} return send(data, size);} + + //! Send data "data" with size "size" to address \a sendAddress() for UDP or \a readAddress() for TCP_Client + bool send(const void * data, int size, bool threaded = false) {if (threaded) {writeThreaded(data, size); return true;} return (write(data, size) == size);} + + //! Send data "data" to address \a sendAddress() for UDP or \a readAddress() for TCP_Client + bool send(const PIByteArray & data, bool threaded = false) {if (threaded) {writeThreaded(data); return true;} return (write(data) == data.size_s());} + + + //! Wait for some data and read it to "read_to" + int read(void * read_to, int max_size); + + //! Send data "read_to" with size "max_size" to address \a sendAddress() for UDP or \a readAddress() for TCP_Client + int write(const void * data, int max_size); + + //! Send data "data" to address \a sendAddress() for UDP or \a readAddress() for TCP_Client + int write(const PIByteArray & data) {return write(data.data(), data.size_s());} + + PIString constructFullPath() const; + + EVENT1(newConnection, PIEthernet * , client) + EVENT0(connected) + EVENT1(disconnected, bool, withError) + + + //! Flags of network interface + enum PIP_EXPORT InterfaceFlag { + ifActive /** Is active */ = 0x1, + ifRunning /** Is running */ = 0x2, + ifBroadcast /** Support broadcast */ = 0x4, + ifMulticast /** Support multicast */ = 0x8, + ifLoopback /** Is loopback */ = 0x10, + ifPTP /** Is point-to-point */ = 0x20 + }; + + //! %PIFlags of network interface flags + typedef PIFlags InterfaceFlags; + + + //! Network interface descriptor + struct PIP_EXPORT Interface { + + //! System index + int index; + + //! System name + PIString name; + + //! MAC address in format "hh:hh:hh:hh:hh:hh" or empty if there is no MAC address + PIString mac; + + //! IP address in format "i.i.i.i" or empty if there is no IP address + PIString address; + + //! Netmask of IP address in format "i.i.i.i" or empty if there is no netmask + PIString netmask; + + //! Broadcast address in format "i.i.i.i" or empty if there is no broadcast address + PIString broadcast; + + //! Point-to-point address or empty if there is no point-to-point address + PIString ptp; + + //! Flags of interface + InterfaceFlags flags; + + //! Returns if interface is active + bool isActive() const {return flags[PIEthernet::ifActive];} + + //! Returns if interface is running + bool isRunning() const {return flags[PIEthernet::ifRunning];} + + //! Returns if interface support broadcast + bool isBroadcast() const {return flags[PIEthernet::ifBroadcast];} + + //! Returns if interface support multicast + bool isMulticast() const {return flags[PIEthernet::ifMulticast];} + + //! Returns if interface is loopback + bool isLoopback() const {return flags[PIEthernet::ifLoopback];} + + //! Returns if interface is point-to-point + bool isPTP() const {return flags[PIEthernet::ifPTP];} + }; + + + //! Array of \a Interface with some features + class PIP_EXPORT InterfaceList: public PIVector { + public: + InterfaceList(): PIVector() {} + + //! Get interface with system index "index" or 0 if there is no one + const Interface * getByIndex(int index) const {for (int i = 0; i < size_s(); ++i) if ((*this)[i].index == index) return &((*this)[i]); return 0;} + + //! Get interface with system name "name" or 0 if there is no one + const Interface * getByName(const PIString & name) const {for (int i = 0; i < size_s(); ++i) if ((*this)[i].name == name) return &((*this)[i]); return 0;} + + //! Get interface with IP address "address" or 0 if there is no one + const Interface * getByAddress(const PIString & address) const {for (int i = 0; i < size_s(); ++i) if ((*this)[i].address == address) return &((*this)[i]); return 0;} + + //! Get loopback interface or 0 if there is no one + const Interface * getLoopback() const {for (int i = 0; i < size_s(); ++i) if ((*this)[i].isLoopback()) return &((*this)[i]); return 0;} + }; + + + //! Returns all system network interfaces + static InterfaceList interfaces(); + + static PIString interfaceAddress(const PIString & interface_); + + //! Returns all system network IP addresses + static PIStringList allAddresses(); + + static void parseAddress(const PIString & ipp, PIString * ip, int * port); + static PIString macFromBytes(const PIByteArray & mac) {PIString r; for (int i = 0; i < mac.size_s(); ++i) {r += PIString::fromNumber(mac[i], 16).expandLeftTo(2, '0'); if (i < mac.size_s() - 1) r += ":";} return r;} + static PIByteArray macToBytes(const PIString & mac) {PIByteArray r; PIStringList sl = mac.split(":"); piForeachC (PIString & i, sl) r << uchar(i.toInt(16)); return r;} + static PIString applyMask(const PIString & ip, const PIString & mask) {struct in_addr ia; ia.s_addr = inet_addr(ip.data()) & inet_addr(mask.data()); return PIString(inet_ntoa(ia));} + static PIString getBroadcast(const PIString & ip, const PIString & mask) {struct in_addr ia; ia.s_addr = inet_addr(ip.data()) | ~inet_addr(mask.data()); return PIString(inet_ntoa(ia));} + +//! \events +//! \{ + + //! \fn void newConnection(PIEthernet * client) + //! \brief Raise on new TCP connection received + + //! \fn void connected() + //! \brief Raise if succesfull TCP connection + + //! \fn void disconnected(bool withError) + //! \brief Raise if TCP connection was closed + +//! \} +//! \ioparams +//! \{ +#ifdef DOXYGEN + //! \brief read ip, default "" + string ip; + + //! \brief read port, default 0 + int port; + + //! \brief Broadcast parameter, default false + bool broadcast; + + //! \brief ReuseAddress parameter, default false + bool reuseAddress; +#endif +//! \} + +protected: + PIEthernet(int sock, PIString ip_port); + + PIString fullPathPrefix() const {return "eth";} + void configureFromFullPath(const PIString & full_path); + bool configureDevice(const void * e_main, const void * e_parent = 0); + + //! Executes when any read function was successful. Default implementation does nothing + virtual void received(const void * data, int size) {;} + + bool init(); + bool openDevice(); + bool closeDevice(); + void closeSocket(int & sd); +#ifndef WINDOWS + static PIString getSockAddr(sockaddr * s) {return s == 0 ? PIString() : PIString(inet_ntoa(((sockaddr_in*)s)->sin_addr));} +#endif + + + int sock, sock_s, wrote; + mutable int port_, port_s, port_c; + bool connected_, connecting_, listen_threaded, server_bounded; + sockaddr_in addr_, saddr_; + mutable PIString ip_, ip_s, ip_c; + PIThread server_thread_; + PIVector clients_; + PIQueue mcast_queue; + PIStringList mcast_groups; +#ifdef WINDOWS + PIMap leafs; +#endif + +private: + static void server_func(void * eth); + void setType(Type t, bool reopen = true) {setProperty("type", (int)t); if (reopen && isOpened()) {closeDevice(); init(); openDevice();}} + + static std::string ethErrorString() { +#ifdef WINDOWS + char * msg; + int err = WSAGetLastError(); + FormatMessageA(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, err, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPSTR)&msg, 0, NULL); + return "code " + itos(err) + " - " + string(msg); +#else + return errorString(); +#endif + } + +}; + +inline bool operator <(const PIEthernet::Interface & v0, const PIEthernet::Interface & v1) {return (v0.name < v1.name);} + +#endif // PIETHERNET_H diff --git a/_oldpip/pip_0.4.0_r5/pievaluator.cpp b/_oldpip/pip_0.4.0_r5/pievaluator.cpp new file mode 100644 index 0000000..9882156 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/pievaluator.cpp @@ -0,0 +1,1252 @@ +/* + PIP - Platform Independent Primitives + Evaluator designed for stream computing + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +#include "pievaluator.h" + + +/*! \class PIEvaluator + * \brief This class provide mathematical evaluations of custom expression + * + * \section PIEvaluator_sec0 Synopsis + * %PIEvaluator developed for stream evaluations of once set expression. + * It`s create internal list of instructions on function \a check() and + * executes very fast on function \a evaluate(). Once given expression + * can be evaluated any times with different variable values. Evaluator + * supports many common mathematic functions described below. Also it`s + * automatic puts unnecessarily signs and bracets. Processed expression + * can be obtains with function \a expression(). If there is an error + * in expression you can get it with function \a error(). Last evaluated + * result you can get with function \a lastResult(). + * \section PIEvaluator_sec1 Using + * First you should set your variables with function \a setVariable(). + * Next give your expression with function \a check() and check for error + * with functions \a isCorrect() and \a error(). If expression is correct + * you can get processed expression with function \a expression() and + * evaluate it with function \a evaluate(). You can change variable values + * without rechecking expression. + * + * \section PIEvaluator_sec2 Functions + * %PIEvaluator supports arithmetical operations with complex numbers, this + * is their list in priority order: + * * ^ (power) + * * * (multiply) + * * / (divide) + * * % (residue) + * * + (add) + * * - (subtract) + * + * In addition there are compare and logical operations: + * * == (equal) + * * != (not equal) + * * > (greater) + * * < (smaller) + * * >= (greater or equal) + * * <= (smaller or equal) + * * && (and) + * * || (or) + * + * Compare and logical functions works with real operators part and returns 0 or 1. + * + * Mathematical functions: + * * sin(x) - sine + * * cos(x) - cosine + * * tg(x) - tangent + * * ctg(x) - cotangent + * * arcsin(x) - arcsine + * * arccos(x) - arccosine + * * arctg(x) -arccotangent + * * arcctg(x) - arctangent + * * sh(x) - hyperbolical sine + * * ch(x) - hyperbolical cosine + * * th(x) - hyperbolical tangent + * * cth(x) - hyperbolical cotangent + * * sqr(x) - square + * * sqrt(x) - square root + * * abs(x) - absolute value + * * sign(x) - sign of real part (-1 or 1) + * * exp(x) - exponent + * * pow(x, p) - x in power p + * * ln(x) - natural logarithm + * * lg(x) - decimal logarithm + * * log(x, b) - logarithm of x with base b + * * im(x) - imaginary part of complex number + * * re(x) - real part of complex number + * * arg(x) - argument of complex number + * * len(x) - length of complex number + * * conj(x) - length of complex number + * * rad(x) - convert degrees to radians + * * deg(x) - convert radians to degrees + * * j0(x) - Bessel function first kind order 0 + * * j1(x) - Bessel function first kind order 1 + * * jn(x, n) - Bessel function first kind order n + * * y0(x) - Bessel function second kind order 0 + * * y1(x) - Bessel function second kind order 1 + * * yn(x, n) - Bessel function second kind order n + * * random(s, f) - regular random number in range [s, f] + * * min(x0, x1, ...) - minimum of x0, x1, ... + * * max(x0, x1, ...) - maximum of x0, x1, ... + * * clamp(x, a, b) - trim x on range [a, b] + * * step(x, s) - 0 if x < s, else 1 + * * mix(x, a, b) - interpolate between a and b linear for x (a * (1 - x) + b * x) + * + * There are some built-in constans: + * * i (imaginary 1) + * * e + * * pi + * + * All trigonometric functions takes angle in radians. + * + * \section PIEvaluator_sec3 Example + * \snippet pievaluator.cpp main + */ + + +PIEvaluatorContent::PIEvaluatorContent() { + addFunction("arcsin", 1); + addFunction("arccos", 1); + addFunction("arctg", 1); + addFunction("arcctg", 1); + addFunction("random", 2); + addFunction("sin", 1); + addFunction("cos", 1); + addFunction("ctg", 1); + addFunction("tg", 1); + addFunction("exp", 1); + addFunction("cth", 1); + addFunction("sh", 1); + addFunction("ch", 1); + addFunction("th", 1); + addFunction("sqrt", 1); + addFunction("sqr", 1); + addFunction("pow", 2); + addFunction("abs", 1); + addFunction("ln", 1); + addFunction("lg", 1); + addFunction("log", 2); + addFunction("im", 1); + addFunction("re", 1); + addFunction("arg", 1); + addFunction("len", 1); + addFunction("conj", 1); + addFunction("sign", 1); + addFunction("rad", 1); + addFunction("deg", 1); + addFunction("j0", 1); + addFunction("j1", 1); + addFunction("jn", 2); + addFunction("y0", 1); + addFunction("y1", 1); + addFunction("yn", 2); + addFunction("min", -2); // (x0,x1,...) + addFunction("max", -2); // (x0,x1,...) + addFunction("clamp", 3); // (x,a,b) = x < a ? a : (x > b ? b : x) + addFunction("step", 2); // (x,s) = x >= s ? 1. : 0. (1 if 'x' >= 's', else 0) + addFunction("mix", 3); // (x,a,b) = a*(1.-x) + b*x (interpolate between 'a' and 'b' linear for 'x') + addFunction("defined", 1); + clearCustomVariables(); + //addVariable("n", 0.); + //addVariable("x1", 123); +} + + +bool PIEvaluatorContent::setVariableValue(int index, complexd new_value) { + if (index < 0 || index >= variables.size_s()) return false; + variables[index].value = new_value; + return true; +} + + +bool PIEvaluatorContent::setVariableName(int index, const PIString & new_name) { + if (index < 0 || index >= variables.size_s()) return false; + variables[index].name = new_name; + return true; +} + + +void PIEvaluatorContent::clearCustomVariables() { + variables.clear(); + addVariable("i", complexd_i); + addVariable("pi", atan(1.) * 4.); + addVariable("e", exp(1.)); + cv_count = variables.size(); +} + + +void PIEvaluatorContent::sortVariables() { + PIEvaluatorTypes::Variable tv; + for (uint i = 0; i < variables.size(); i++) { + for (uint j = variables.size() - 1; j > i; j--) { + if (variables[j].name.length() <= variables[i].name.length()) continue; + piSwap(variables[i], variables[j]); + } + } + /* + * qDebug() << "---"; + * for (int i = 0; i < variables.size(); i++) { + * qDebug() << variables[i].name; + } + */ +} + + +PIEvaluatorTypes::BaseFunctions PIEvaluatorContent::getBaseFunction(const PIString & name) { + if (name == "sin") return PIEvaluatorTypes::bfSin; + if (name == "cos") return PIEvaluatorTypes::bfCos; + if (name == "tg") return PIEvaluatorTypes::bfTg; + if (name == "ctg") return PIEvaluatorTypes::bfCtg; + if (name == "arcsin") return PIEvaluatorTypes::bfArcsin; + if (name == "arccos") return PIEvaluatorTypes::bfArccos; + if (name == "arctg") return PIEvaluatorTypes::bfArctg; + if (name == "arcctg") return PIEvaluatorTypes::bfArcctg; + if (name == "exp") return PIEvaluatorTypes::bfExp; + if (name == "random") return PIEvaluatorTypes::bfRandom; + if (name == "sh") return PIEvaluatorTypes::bfSh; + if (name == "ch") return PIEvaluatorTypes::bfCh; + if (name == "th") return PIEvaluatorTypes::bfTh; + if (name == "cth") return PIEvaluatorTypes::bfCth; + if (name == "sqrt") return PIEvaluatorTypes::bfSqrt; + if (name == "sqr") return PIEvaluatorTypes::bfSqr; + if (name == "pow") return PIEvaluatorTypes::bfPow; + if (name == "abs") return PIEvaluatorTypes::bfAbs; + if (name == "ln") return PIEvaluatorTypes::bfLn; + if (name == "lg") return PIEvaluatorTypes::bfLg; + if (name == "log") return PIEvaluatorTypes::bfLog; + if (name == "im") return PIEvaluatorTypes::bfIm; + if (name == "re") return PIEvaluatorTypes::bfRe; + if (name == "arg") return PIEvaluatorTypes::bfArg; + if (name == "len") return PIEvaluatorTypes::bfLen; + if (name == "conj") return PIEvaluatorTypes::bfConj; + if (name == "sign") return PIEvaluatorTypes::bfSign; + if (name == "rad") return PIEvaluatorTypes::bfRad; + if (name == "deg") return PIEvaluatorTypes::bfDeg; + if (name == "j0") return PIEvaluatorTypes::bfJ0; + if (name == "j1") return PIEvaluatorTypes::bfJ1; + if (name == "jn") return PIEvaluatorTypes::bfJN; + if (name == "y0") return PIEvaluatorTypes::bfY0; + if (name == "y1") return PIEvaluatorTypes::bfY1; + if (name == "yn") return PIEvaluatorTypes::bfYN; + if (name == "min") return PIEvaluatorTypes::bfMin; + if (name == "max") return PIEvaluatorTypes::bfMax; + if (name == "clamp") return PIEvaluatorTypes::bfClamp; + if (name == "step") return PIEvaluatorTypes::bfStep; + if (name == "mix") return PIEvaluatorTypes::bfMix; + if (name == "defined") return PIEvaluatorTypes::bfDefined; + return PIEvaluatorTypes::bfUnknown; +} + +const PIString & PIEvaluator::prepare(const PIString & string) { + currentString = string.trimmed(); + if (currentString.isEmpty()) currentString = "0"; + replaceOperators(); + removeSpaces(); + checkBrackets(); + while (fillElements()) checkBrackets(); + while (setSignes()) fillElements(); + removeJunk(); + findUnknownVariables(); + return currentString; +} + + +void PIEvaluator::removeSpaces() { + PIString tmps = currentString; + for (int i = 0; i < tmps.length(); i++) { + if (tmps[i] == ' ' || tmps[i] == '\t') { + tmps.remove(i, 1); + i--; + } + } + currentString = tmps; +} + + +void PIEvaluator::removeJunk() { + PIChar cc; + bool junk = true; + int bcnt; + while (junk) { + if (currentString.left(1) != "(" || currentString.right(1) != ")") return; + bcnt = 1; + junk = false; + for (int i = 1; i < currentString.length(); i++) { + cc = currentString[i]; + if (cc == '(') bcnt++; + if (cc == ')') bcnt--; + if (bcnt == 0) { + if (i == currentString.length() - 1) { + currentString = currentString.mid(1, currentString.length() - 2); + elements.pop_front(); + elements.pop_back(); + junk = true; + break; + } else break; + } + } + } +} + + +void PIEvaluator::replaceOperators() { + currentString.replaceAll("==", "="); + currentString.replaceAll("!=", ":"); + currentString.replaceAll(">=", "}"); + currentString.replaceAll("<=", "{"); + currentString.replaceAll("&&", "&"); + currentString.replaceAll("||", "|"); +} + + +void PIEvaluator::makeOutput(PIString & string) { + string.replaceAll(":", "≠"); + string.replaceAll("}", "≥"); + string.replaceAll("{", "≤"); + string.replaceAll("&", "â‹€"); + string.replaceAll("|", "â‹"); +} + + +void PIEvaluator::findUnknownVariables() { + PIString cvar; + unknownVars.clear(); + for (int i = 0; i < currentString.length(); i++) { + if (elements[i].var_num == -666) cvar += currentString[i]; + else { + if (cvar.length() == 0) continue; + unknownVars << cvar; + cvar = ""; + } + } + if (cvar.length() > 0) unknownVars << cvar; + unknownVars.removeDuplicates(); +} + + +bool PIEvaluator::isSign(const PIChar & ch) { + return ch == '+' || ch == '-' || + ch == '*' || ch == '/' || + ch == '%' || ch == '^' || + ch == '=' || ch == ':' || + ch == '>' || ch == '<' || + ch == '}' || ch == '{' || + ch == '&' || ch == '|'; +} + + +void PIEvaluator::checkBrackets() { + PIString tmps = currentString; + PIChar fc, sc; + int bcnt = 0, bpos = 0, inserted = 0; + currentString = tmps; + for (int i = 0; i < tmps.length(); i++) { + if (tmps[i] == '(') { + if (bcnt == 0) bpos = i; + bcnt++; + } + if (tmps[i] == ')') { + if (bcnt == 0) { + currentString.insert(bpos + inserted, "("); + inserted++; + } else bcnt--; + } + } + if (bcnt > 0) currentString += PIString(bcnt, ')'); + tmps = currentString; + for (int i = 0; i < tmps.length() - 1; i++) { + fc = tmps[i].toLower(); + sc = tmps[i + 1].toLower(); + if ((fc == ')' && sc == '(') || + (fc == ')' && sc >= '0' && sc <= '9') || + (fc == ')' && sc >= 'a' && sc <= 'z') ) tmps.insert(++i, '*'); + } + currentString = tmps; +} + + +bool PIEvaluator::fillElements() { + int fstart, flen, cnum = 0, cpart = 0, cfunc; + PIChar cc, nc, pc, fc = '!'; + bool numFound = false; + PIString curfind, tmps = currentString; + elements.resize(tmps.length()); + for (uint i = 0; i < elements.size(); i++) { + elements[i].type = PIEvaluatorTypes::etVariable; + elements[i].var_num = -666; + } + currentVariables.clear(); + //qDebug().nospace() << "search for functions ..."; + for (int i = 0; i < content.functionsCount(); i++) { + curfind = content.function(i).identifier; + cfunc = i; //(int)content.function(i).type; + flen = curfind.length(); + fstart = 0; + while (fstart >= 0) { + fstart = tmps.find(curfind, fstart); + if (fstart < 0) break; + if (tmps[fstart + flen] != '(') { + currentString.insert(fstart + flen, "("); + return true; + } + for (int j = fstart; j < fstart + flen; j++) { + elements[j].set(PIEvaluatorTypes::etFunction, cnum, cfunc); + tmps.replace(j, 1, fc); + } + cnum++; + } + } + cnum = 0; + //qDebug().nospace() << "search for variables ..."; + for (int i = 0; i < content.variablesCount(); i++) { + curfind = content.variable(i).name; + flen = curfind.length(); + fstart = 0; + while (fstart >= 0) { + fstart = tmps.find(curfind, fstart); + if (fstart < 0) break; + for (int j = fstart; j < fstart + flen; j++) { + elements[j].set(PIEvaluatorTypes::etVariable, cnum, i); + tmps.replace(j, 1, fc); + } + cnum++; + } + } + curfind = ""; + cnum = 1; + //qDebug().nospace() << "search for numbers ..."; + for (int i = 0; i < tmps.length(); i++) { + cc = tmps[i]; + /*if (cc == " " || cc == "(" || cc == ")") { + curfind = ""; + cpart = 0; + numFound = false; + continue; + }*/ + switch (cpart) { + case 0: + if ((cc >= '0' && cc <= '9')) {// || cc == '-' || cc == '+') { + curfind += cc; + cpart = 1; + continue; + } + if (cc == '.') { + curfind += cc; + cpart = 2; + continue; + } + if (cc == 'E') { + curfind += cc; + cpart = 3; + continue; + } + break; + case 1: + if (cc >= '0' && cc <= '9') { + curfind += cc; + continue; + } + if (cc == '.') { + curfind += cc; + cpart = 2; + continue; + } + if (cc == 'E') { + curfind += cc; + cpart = 3; + continue; + } + numFound = true; + break; + case 2: + if (cc >= '0' && cc <= '9') { + curfind += cc; + continue; + } + if (cc == 'E') { + curfind += cc; + cpart = 3; + continue; + } + numFound = true; + break; + case 3: + if ((cc >= '0' && cc <= '9') || cc == '-' || cc == '+') { + curfind += cc; + cpart = 4; + continue; + } + numFound = true; + break; + case 4: + if (cc >= '0' && cc <= '9') { + curfind += cc; + continue; + } + numFound = true; + break; + } + if (numFound) { + //qDebug().nospace() << "add " << cnum << ": " << curfind << " = " << curfind.toDouble(); + currentVariables.push_back(PIEvaluatorTypes::Variable("tmp" + PIString::fromNumber(cnum), curfind.toDouble())); + for (int j = i - curfind.length(); j < i; j++) { + elements[j].set(PIEvaluatorTypes::etNumber, cnum, -cnum); + tmps.replace(j, 1, fc); + } + curfind = ""; + cnum++; + cpart = 0; + numFound = false; + } + } + if (cpart > 0) { + //qDebug().nospace() << "add " << cnum << ": " << curfind << " = " << curfind.toDouble(); + currentVariables.push_back(PIEvaluatorTypes::Variable("tmp" + PIString::fromNumber(cnum), curfind.toDouble())); + for (int j = tmps.length() - curfind.length(); j < tmps.length(); j++) { + elements[j].set(PIEvaluatorTypes::etNumber, cnum, -cnum); + tmps.replace(j, 1, fc); + } + } + cc = nc = fc; + //qDebug().nospace() << "search for signes ..."; + for (int i = 0; i < tmps.length(); i++) { + cc = tmps[i]; + if (i > 0) pc = tmps[i - 1]; + else pc = fc; + if (i < tmps.length() - 1) nc = tmps[i + 1]; + else nc = fc; + if (cc == '(' || cc == ')' || cc == ',') { + elements[i].set(PIEvaluatorTypes::etOperator, -1); + continue; + } + if (cc == '-' || cc == '+') { + elements[i].set(PIEvaluatorTypes::etOperator, -1); + if (i < tmps.length() - 1) if (elements[i + 1].type == PIEvaluatorTypes::etVariable || + elements[i + 1].type == PIEvaluatorTypes::etFunction) continue; + if ((pc == '(' || isSign(pc) || i == 0) && i < tmps.length() - 1) { + if (elements[i + 1].type != PIEvaluatorTypes::etOperator) { + cnum = elements[i + 1].num; + elements[i].set(PIEvaluatorTypes::etNumber, cnum); + tmps.replace(i, 1, fc); + ///cout << "found sign " << cc << " :" << cnum - 1 << endl; + if (cc == '-' && currentVariables.size_s() >= cnum) + currentVariables[cnum - 1].value = -currentVariables[cnum - 1].value; + //i++; + continue; + } + } + } + if (isSign(cc)) { + elements[i].set(PIEvaluatorTypes::etOperator, -1); + continue; + } + } + /* + qDebug().nospace() << tmps; + cout << " "; + for (int i = 0; i < elements.size(); i++) { + switch (elements[i].type) { + case etFunction: cout << "f"; break; + case etNumber: cout << "n"; break; + case etOperator: cout << "o"; break; + case etVariable: cout << "v"; break; + } + } + cout << endl; + */ + return false; + //for (int i = 0; i < currentVariables.size(); i++) qDebug() << "var " << i << ": " << currentVariables[i].value.real(); +} + + +bool PIEvaluator::setSignes() { + int inserted = 0, ni, pi = 0, needInsert = 0; + PIChar fc, sc, pc; + PIString tmps = currentString; + for (int i = 0; i < tmps.length() - 1; i++) { + needInsert = 0; + ni = i + 1; + if (i > 0) pi = i - 1; + fc = tmps[i].toLower(); + sc = tmps[ni].toLower(); + pc = tmps[pi].toLower(); + //if (elements[i].type == etOperator || elements[ni].type == etVariable) continue; + if (fc == ',' || sc == ',') continue; + if (elements[i].type == PIEvaluatorTypes::etOperator && elements[ni].type == PIEvaluatorTypes::etOperator) continue; + if (fc == ')' && (elements[ni].type == PIEvaluatorTypes::etNumber || elements[ni].type == PIEvaluatorTypes::etVariable || elements[ni].type == PIEvaluatorTypes::etFunction)) needInsert = 1; + if (sc == '(' && (elements[i].type == PIEvaluatorTypes::etNumber || elements[i].type == PIEvaluatorTypes::etVariable)) needInsert = 1; + if (elements[i].type == PIEvaluatorTypes::etNumber && elements[ni].type == PIEvaluatorTypes::etNumber && elements[i].num != elements[ni].num) needInsert = 1; + if (elements[i].type == PIEvaluatorTypes::etVariable && elements[ni].type == PIEvaluatorTypes::etVariable && elements[i].num != elements[ni].num) needInsert = 1; + if ((elements[i].type == PIEvaluatorTypes::etNumber && elements[ni].type == PIEvaluatorTypes::etVariable) || (elements[i].type == PIEvaluatorTypes::etVariable && elements[ni].type == PIEvaluatorTypes::etNumber)) needInsert = 1; + if ((elements[i].type == PIEvaluatorTypes::etNumber || elements[i].type == PIEvaluatorTypes::etVariable) && elements[ni].type == PIEvaluatorTypes::etFunction) needInsert = 1; + if (elements[i].type == PIEvaluatorTypes::etFunction && elements[ni].type == PIEvaluatorTypes::etFunction && elements[i].num != elements[ni].num) needInsert = 2; + if (elements[i].type == PIEvaluatorTypes::etFunction && elements[ni].type != PIEvaluatorTypes::etFunction && sc != '(') needInsert = 2; + if (elements[pi].type == PIEvaluatorTypes::etOperator && (elements[ni].type == PIEvaluatorTypes::etFunction || elements[ni].type == PIEvaluatorTypes::etVariable) && fc == '-') needInsert = 3; + switch (needInsert) { + case 1: + currentString.insert(ni + inserted, "*"); + elements.insert(ni + inserted, PIEvaluatorTypes::Element(PIEvaluatorTypes::etOperator, -1)); + //inserted++; + //i++; + return true; + /*case 2: + currentString.insert(ni + inserted, ")"); + currentString.insert(ni + inserted, "("); + elements.insert(ni + inserted, Element(etOperator, -1)); + elements.insert(ni + inserted, Element(etOperator, -1)); + inserted++; + i++; + return true;*/ + case 3: + currentString.insert(ni + inserted, "1*"); + elements.insert(ni + inserted, PIEvaluatorTypes::Element(PIEvaluatorTypes::etOperator, -1)); + //inserted; + //i++; + return true; + } + } + /*if (elements[tmps.length() - 1].type == etFunction) { + currentString.insert(tmps.length() + inserted, ")"); + currentString.insert(tmps.length() + inserted, "("); + elements.insert(tmps.length() + inserted, Element(etOperator, -1)); + elements.insert(tmps.length() + inserted, Element(etOperator, -1)); + return true; + }*/ + return false; +} + + +void PIEvaluator::convert() { + int j; + PIEvaluatorTypes::Element ce, pe; + for (int i = 0; i < currentString.length(); i++) { + pe = elements[i]; + if (pe.type != PIEvaluatorTypes::etFunction) continue; + j = i + 1; + while (j < currentString.length()) { + ce = elements[j]; + if (ce != pe) break; + j++; + } + currentString.replace(i, j - i, " "); + for (int k = i + 1; k < j; k++) elements.remove(i); + //i++; + } + for (int i = 0; i < currentString.length(); i++) { + pe = elements[i]; + if (pe.type != PIEvaluatorTypes::etNumber) continue; + j = i + 1; + while (j < currentString.length()) { + ce = elements[j]; + if (ce != pe) break; + j++; + } + currentString.replace(i, j - i, " "); + for (int k = i + 1; k < j; k++) elements.remove(i); + //i++; + } + for (int i = 0; i < currentString.length(); i++) { + pe = elements[i]; + if (pe.type != PIEvaluatorTypes::etVariable) continue; + j = i + 1; + while (j < currentString.length()) { + ce = elements[j]; + if (ce != pe) break; + j++; + } + currentString.replace(i, j - i, " "); + for (int k = i + 1; k < j; k++) elements.remove(i); + //i++; + } + /*qDebug().nospace() << currentString; + cout << " "; + for (int i = 0; i < elements.size(); i++) { + switch (elements[i].type) { + case etFunction: cout << "f"; break; + case etNumber: cout << "n"; break; + case etOperator: cout << "o"; break; + case etVariable: cout << "v"; break; + } + } + cout << endl;*/ +} + + + +const PIString & PIEvaluator::preprocess(const PIString & string) { + static PIString ret; + int lind; + ret = prepare(string); + convert(); + instructions.clear(); + //qDebug() << preproc->currentString; + variables = currentVariables; + lind = parse(currentString); + if (instructions.size() == 0) { + variables.push_back(PIEvaluatorTypes::Variable()); + instructions.push_back(PIEvaluatorTypes::Instruction(PIEvaluatorTypes::oNone, PIVector(1, lind), -variables.size_s())); + } + kvars = &(content.variables); + /* + cout << endl << "variables:" << endl; + for (int i = 0; i < variables.size(); i++) + cout << i << " value = " << variables[i].value << endl; + + cout << endl << "instructions:" << endl; + for (int i = 0; i < instructions.size(); i++) { + cout << i << endl; + cout << " operation " << instructions[i].operation << endl; + cout << " operators: "; + for (int j = 0; j < instructions[i].operators.size(); j++) + cout << instructions[i].operators[j] << "; "; + cout << endl << " function " << instructions[i].function << endl; + cout << " out " << instructions[i].out << endl; + } + */ + makeOutput(ret); + return ret; +} + + +PIEvaluatorTypes::Operation PIEvaluator::operationInOrder(const int & index) { + switch (index) { + case 0: return PIEvaluatorTypes::oPower; + case 1: return PIEvaluatorTypes::oMultiply; + case 2: return PIEvaluatorTypes::oDivide; + case 3: return PIEvaluatorTypes::oResidue; + case 4: return PIEvaluatorTypes::oAdd; + case 5: return PIEvaluatorTypes::oSubtract; + case 6: return PIEvaluatorTypes::oEqual; + case 7: return PIEvaluatorTypes::oNotEqual; + case 8: return PIEvaluatorTypes::oGreaterEqual; + case 9: return PIEvaluatorTypes::oSmallerEqual; + case 10: return PIEvaluatorTypes::oGreater; + case 11: return PIEvaluatorTypes::oSmaller; + case 12: return PIEvaluatorTypes::oAnd; + case 13: return PIEvaluatorTypes::oOr; + default: return PIEvaluatorTypes::oNone; + } +} + + +int PIEvaluator::parse(const PIString & string, int offset) { + int slen = string.length(), /*facnt,*/ farg, bcnt, k; + PIChar cc; + PIEvaluatorTypes::Element ce; + PIEvaluatorTypes::Function cfunc; + PIEvaluatorTypes::Operation coper; + PIString sbrackets, carg; + PIVector args, atmp; + PIVector opers; + + ///qDebug() << "to parse :" + string; + ///cout << " "; for (int i = 0; i < slen; i++) cout << preproc->elements[i + offset].type; cout << endl; + + for (int i = 0; i < slen; i++) { + ce = elements[i + offset]; + cc = string[i]; + switch (ce.type) { + case PIEvaluatorTypes::etNumber: + args.push_back(ce.var_num); + continue; + case PIEvaluatorTypes::etVariable: + args.push_back(ce.var_num); + continue; + case PIEvaluatorTypes::etFunction: + i++; + cfunc = content.function(ce.var_num); + //facnt = cfunc.arguments; + atmp.clear(); + bcnt = farg = 1; + ///qDebug() << "function: " + cfunc.identifier; + //for (int k = 0; k < facnt; k++) { + bcnt = 1; + carg = ""; + k = i + 1; + //if (string.size_s() <= k || k < 0) return -666; + while (bcnt > 0) { + //if (k < facnt - 1) fcomma = string.indexOf(',', j); + cc = string[k]; + switch (cc.toAscii()) { + case '(': bcnt++; break; + case ')': + bcnt--; + if (bcnt == 0) { + ///qDebug() << "arument: " << carg; + atmp.push_back(parse(carg, k + offset - carg.length())); + k++; + carg = ""; + if (atmp.size_s() > 0) if (atmp.back() < 0 && farg > 0) farg = atmp.back(); + continue; + } + break; + case ',': + if (bcnt == 1) { + ///qDebug() << "arument: " << carg; + atmp.push_back(parse(carg, k + offset - carg.length())); + k++; + carg = ""; + if (atmp.size_s() > 0) if (atmp.back() < 0 && farg > 0) farg = atmp.back(); + continue; + } + break; + } + carg += cc; + k++; + } + i = k - 1; + if (farg > 0) { + variables.push_back(PIEvaluatorTypes::Variable()); + farg = -variables.size_s(); + } + instructions.push_back(PIEvaluatorTypes::Instruction(PIEvaluatorTypes::oFunction, atmp, farg, ce.var_num)); + args.push_back(farg); + //for (int i = 0; i < args.size_s(); i++) cout << preproc->currentVariables[-args[i]].value << endl; + //i = j + 1; + continue; + case PIEvaluatorTypes::etOperator: + //qDebug() << "operator: " << cc; + if (cc == '(') { + sbrackets = inBrackets(string.right(slen - i)); + args.push_back(parse(sbrackets, i + offset + 1)); + i += sbrackets.length() + 1; + continue; + } + if (cc == '+') {opers.push_back(PIEvaluatorTypes::oAdd); continue;} + if (cc == '-') {opers.push_back(PIEvaluatorTypes::oSubtract); continue;} + if (cc == '*') {opers.push_back(PIEvaluatorTypes::oMultiply); continue;} + if (cc == '/') {opers.push_back(PIEvaluatorTypes::oDivide); continue;} + if (cc == '%') {opers.push_back(PIEvaluatorTypes::oResidue); continue;} + if (cc == '^') {opers.push_back(PIEvaluatorTypes::oPower); continue;} + if (cc == '=') {opers.push_back(PIEvaluatorTypes::oEqual); continue;} + if (cc == ':') {opers.push_back(PIEvaluatorTypes::oNotEqual); continue;} + if (cc == '}') {opers.push_back(PIEvaluatorTypes::oGreaterEqual); continue;} + if (cc == '{') {opers.push_back(PIEvaluatorTypes::oSmallerEqual); continue;} + if (cc == '>') {opers.push_back(PIEvaluatorTypes::oGreater); continue;} + if (cc == '<') {opers.push_back(PIEvaluatorTypes::oSmaller); continue;} + if (cc == '&') {opers.push_back(PIEvaluatorTypes::oAnd); continue;} + if (cc == '|') {opers.push_back(PIEvaluatorTypes::oOr); continue;} + } + } + /* + cout << "stack: " << endl << "args: "; + for (int i = 0; i < args.size_s(); i++) cout << args[i] << ", "; + cout << endl << "opers: "; + for (int i = 0; i < opers.size_s(); i++) cout << opers[i] << ", "; + */ + if (opers.size_s() == 0) { + if (args.size_s() > 0) return args.back(); + else return -666; + } + for (int i = 0; i < PIEvaluatorTypes::operationCount; i++) { + coper = operationInOrder(i); + for (int j = 0; j < opers.size_s(); j++) { + if (coper == PIEvaluatorTypes::oDivide || coper == PIEvaluatorTypes::oMultiply) { + if (opers[j] != PIEvaluatorTypes::oDivide && opers[j] != PIEvaluatorTypes::oMultiply) continue; + } else { + if (opers[j] != coper) continue; + } + atmp.clear(); + if (j < args.size_s() && j >= 0) atmp.push_back(args[j]); + else atmp.push_back(-666); + if (j + 1 < args.size_s() && j >= -1) atmp.push_back(args[j + 1]); + else atmp.push_back(-666); + farg = 1; + if (atmp[0] < 0) farg = atmp[0]; + else { + if (atmp[1] < 0) farg = atmp[1]; + else { + variables.push_back(PIEvaluatorTypes::Variable()); + farg = -variables.size_s(); + } + } + instructions.push_back(PIEvaluatorTypes::Instruction(opers[j], atmp, farg)); + if (j >= 0 && j < args.size_s()) { + args.remove(j); + if (j < args.size_s()) args[j] = farg; + } + opers.remove(j); + j--; + } + } + return instructions.back().out; + ///cout << endl; +} + + +bool PIEvaluator::check() { + PIEvaluatorTypes::Instruction ci; + bool error; + if (unknownVars.size_s() > 0) { + lastError = "Unknown variables: \"" + unknownVars.join("\", \"") + "\""; + return false; + } + for (int i = 0; i < instructions.size_s(); i++) { + error = false; + ci = instructions[i]; + PIEvaluatorTypes::Function cf; + int fac, gac; + switch (ci.operation) { + case PIEvaluatorTypes::oNone: break; + case PIEvaluatorTypes::oFunction: + cf = content.function(ci.function); + fac = cf.arguments; + gac = ci.operators.size_s(); + for (int j = 0; j < ci.operators.size_s(); j++) { + if (ci.operators[j] == -666) { //(ci.operators[j] < -variables.size_s() || ci.operators[j] >= kvars->size()) { + error = true; + gac--; + } + } + if (fac > 0) { + if (gac != fac) { + lastError = "Invalid arguments count for function \"" + cf.identifier + + "\", expected " + PIString::fromNumber(fac) + " but " + + PIString::fromNumber(gac) + " given"; + return false; + } + if (error) { + lastError = "Invalid at least one of function \"" + cf.identifier + "\" argument"; + return false; + } + } + if (fac < 0) { + if (gac < -fac) { + lastError = "Invalid arguments count for function \"" + cf.identifier + + "\", expected at least " + PIString::fromNumber(-fac) + " but " + + PIString::fromNumber(gac) + " given"; + return false; + } + if (error) { + lastError = "Invalid at least one of function \"" + cf.identifier + "\" argument"; + return false; + } + } + break; + default: + if (ci.operators[0] == -666 || ci.operators[1] == -666) error = true; + if (ci.operators.size_s() != 2 || error) { + lastError = "Invalid arguments count for operation \" " + operationChar(ci.operation) + " \""; + return false; + } + break; + } + if (ci.out < -variables.size_s()) { + lastError = "Invalid variable index \"" + PIString::fromNumber(ci.out) + "\""; + return false; + } + for (int j = 0; j < ci.operators.size_s(); j++) { + if (ci.operators[j] < -variables.size_s() || ci.operators[j] >= kvars->size_s()) { + lastError = "Invalid variable index \"" + PIString::fromNumber(ci.operators[j]) + "\""; + return false; + } + } + } + return true; +} + + +PIString PIEvaluator::inBrackets(const PIString & string) { + int slen = string.length(), bcnt = 0; + PIChar cc; + for (int i = 0; i < slen; i++) { + cc = string[i]; + if (cc == '(') bcnt++; + if (cc == ')') { + bcnt--; + if (bcnt == 0) return string.mid(1, i - 1); + } + } + return PIString(); +} + + +PIString PIEvaluator::operationChar(const PIEvaluatorTypes::Operation & operation) { + switch (operation) { + case PIEvaluatorTypes::oAdd: return "+"; + case PIEvaluatorTypes::oSubtract: return "-"; + case PIEvaluatorTypes::oMultiply: return "*"; + case PIEvaluatorTypes::oDivide: return "/"; + case PIEvaluatorTypes::oPower: return "^"; + case PIEvaluatorTypes::oResidue: return "%"; + case PIEvaluatorTypes::oEqual: return "="; + case PIEvaluatorTypes::oNotEqual: return ("≠"); + case PIEvaluatorTypes::oGreaterEqual: return ("≥"); + case PIEvaluatorTypes::oSmallerEqual: return ("≤"); + case PIEvaluatorTypes::oGreater: return ">"; + case PIEvaluatorTypes::oSmaller: return "<"; + case PIEvaluatorTypes::oAnd: return ("â‹€"); + case PIEvaluatorTypes::oOr: return ("â‹"); + default: return "???"; + } +} + + +inline complexd PIEvaluator::residue(const complexd & f, const complexd & s) { + complexd ret; + if (s.real() != 0.) ret = complexd(f.real() - ((int)(f.real() / s.real())) * s.real(), 0.); + if (s.imag() != 0.) ret = complexd(ret.real(), f.imag() - ((int)(f.imag() / s.imag())) * s.imag()); + return ret; +} + + +inline void PIEvaluator::execFunction(const PIEvaluatorTypes::Instruction & ci) { + PIEvaluatorTypes::Function cfunc = content.function(ci.function); + int oi = -ci.out - 1; + complexd tmp, stmp, ttmp; + //qDebug() << "function " << (int)cfunc.type; + switch (cfunc.type) { + case PIEvaluatorTypes::bfSin: + tmpvars[oi].value = sin(value(ci.operators[0])); + break; + case PIEvaluatorTypes::bfCos: + tmpvars[oi].value = cos(value(ci.operators[0])); + break; + case PIEvaluatorTypes::bfTg: + tmpvars[oi].value = tan(value(ci.operators[0])); + break; + case PIEvaluatorTypes::bfCtg: + tmp = tan(value(ci.operators[0])); + if (tmp == complexd_0) tmpvars[oi].value = 0.; + else tmpvars[oi].value = complexd_1 / tmp; + break; + case PIEvaluatorTypes::bfArcsin: + tmpvars[oi].value = asinc(value(ci.operators[0])); + break; + case PIEvaluatorTypes::bfArccos: + tmpvars[oi].value = acosc(value(ci.operators[0])); + break; + case PIEvaluatorTypes::bfArctg: + tmpvars[oi].value = atanc(value(ci.operators[0])); + break; + case PIEvaluatorTypes::bfArcctg: + tmp = atanc(value(ci.operators[0])); + if (tmp == complexd_0) tmpvars[oi].value = 0.; + else tmpvars[oi].value = complexd_1 / tmp; + break; + case PIEvaluatorTypes::bfSh: + tmpvars[oi].value = sinh(value(ci.operators[0])); + break; + case PIEvaluatorTypes::bfCh: + tmpvars[oi].value = cosh(value(ci.operators[0])); + break; + case PIEvaluatorTypes::bfTh: + tmpvars[oi].value = tanh(value(ci.operators[0])); + break; + case PIEvaluatorTypes::bfCth: + tmp = tanh(value(ci.operators[0])); + if (tmp == complexd_0) tmpvars[oi].value = 0.; + else tmpvars[oi].value = complexd_1 / tmp; + break; + case PIEvaluatorTypes::bfAbs: + tmpvars[oi].value = abs(value(ci.operators[0])); + break; + case PIEvaluatorTypes::bfSqrt: + tmpvars[oi].value = sqrt(value(ci.operators[0])); + break; + case PIEvaluatorTypes::bfSqr: + tmpvars[oi].value = value(ci.operators[0]) * value(ci.operators[0]); + break; + case PIEvaluatorTypes::bfExp: + tmpvars[oi].value = exp(value(ci.operators[0])); + break; + case PIEvaluatorTypes::bfPow: + tmpvars[oi].value = pow(value(ci.operators[0]), value(ci.operators[1])); + break; + case PIEvaluatorTypes::bfLn: + tmpvars[oi].value = log(value(ci.operators[0])); + break; + case PIEvaluatorTypes::bfLg: + tmpvars[oi].value = log10(value(ci.operators[0])); + break; + case PIEvaluatorTypes::bfLog: + tmp = log(value(ci.operators[1])); + if (tmp == complexd_0) tmpvars[oi].value = 0.; + else tmpvars[oi].value = log(value(ci.operators[0])) / tmp; + break; + case PIEvaluatorTypes::bfRe: + tmpvars[oi].value = value(ci.operators[0]).real(); + break; + case PIEvaluatorTypes::bfIm: + tmpvars[oi].value = value(ci.operators[0]).imag(); + break; + case PIEvaluatorTypes::bfArg: + tmpvars[oi].value = arg(value(ci.operators[0])); + break; + case PIEvaluatorTypes::bfLen: + tmpvars[oi].value = abs(value(ci.operators[0])); + break; + case PIEvaluatorTypes::bfConj: + tmpvars[oi].value = conj(value(ci.operators[0])); + break; + case PIEvaluatorTypes::bfSign: + tmpvars[oi].value = value(ci.operators[0]).real() >= 0. ? complexd_1 : -complexd_1; + break; + case PIEvaluatorTypes::bfRad: + tmpvars[oi].value = value(ci.operators[0]) * complexd(deg2rad, 0.); + break; + case PIEvaluatorTypes::bfDeg: + tmpvars[oi].value = value(ci.operators[0]) * complexd(rad2deg, 0.); + break; + case PIEvaluatorTypes::bfJ0: + tmpvars[oi].value = piJ0(value(ci.operators[0]).real()); + break; + case PIEvaluatorTypes::bfJ1: + tmpvars[oi].value = piJ1(value(ci.operators[0]).real()); + break; + case PIEvaluatorTypes::bfJN: + tmpvars[oi].value = piJn(piRoundd(value(ci.operators[1]).real()), value(ci.operators[0]).real()); + break; + case PIEvaluatorTypes::bfY0: + tmpvars[oi].value = piY0(value(ci.operators[0]).real()); + break; + case PIEvaluatorTypes::bfY1: + tmpvars[oi].value = piY1(value(ci.operators[0]).real()); + break; + case PIEvaluatorTypes::bfYN: + tmpvars[oi].value = piYn(piRoundd(value(ci.operators[1]).real()), value(ci.operators[0]).real()); + break; + case PIEvaluatorTypes::bfMin: + tmp = value(ci.operators[0]); + for (int i = 1; i < ci.operators.size_s(); ++i) { + stmp = value(ci.operators[i]); + tmp = complexd(piMind(tmp.real(), stmp.real()), piMind(tmp.imag(), stmp.imag())); + } + tmpvars[oi].value = tmp; + break; + case PIEvaluatorTypes::bfMax: + tmp = value(ci.operators[0]); + for (int i = 1; i < ci.operators.size_s(); ++i) { + stmp = value(ci.operators[i]); + tmp = complexd(piMaxd(tmp.real(), stmp.real()), piMaxd(tmp.imag(), stmp.imag())); + } + tmpvars[oi].value = tmp; + break; + case PIEvaluatorTypes::bfClamp: + tmp = value(ci.operators[0]); + stmp = value(ci.operators[1]); + ttmp = value(ci.operators[2]); + tmpvars[oi].value = complexd(piClampd(tmp.real(), stmp.real(), ttmp.real()), piClampd(tmp.imag(), stmp.imag(), ttmp.imag())); + break; + case PIEvaluatorTypes::bfStep: + tmpvars[oi].value = complexd(value(ci.operators[0]).real() >= value(ci.operators[1]).real() ? complexld_1 : complexld_0); + break; + case PIEvaluatorTypes::bfMix: + tmp = value(ci.operators[0]); + stmp = value(ci.operators[1]); + ttmp = value(ci.operators[2]); + tmpvars[oi].value = stmp.real() * (1. - tmp.real()) + ttmp.real() * tmp.real(); + break; + case PIEvaluatorTypes::bfDefined: + tmpvars[oi].value = value(ci.operators[0]).real() > 0. ? complexd_1 : complexd_0; + break; + case PIEvaluatorTypes::bfRandom: + tmp = static_cast(rand()) / RAND_MAX; + stmp = value(ci.operators[1]) - value(ci.operators[0]); + tmpvars[oi].value = value(ci.operators[0]) + tmp * stmp; + break; + default: break; + } +} + + +inline bool PIEvaluator::execInstructions() { + PIEvaluatorTypes::Instruction ci; + int oi; + complexd tmp; + tmpvars = variables; + //cout << "var count " << tmpvars.size_s() << endl; + for (int i = 0; i < instructions.size_s(); i++) { + ci = instructions[i]; + oi = -ci.out - 1; + //cout << value(ci.operators[0]) << operationChar(ci.operation) << value(ci.operators[1]) << ", " << oi << endl; + switch (ci.operation) { + case PIEvaluatorTypes::oAdd: + tmpvars[oi].value = value(ci.operators[0]) + value(ci.operators[1]); + break; + case PIEvaluatorTypes::oSubtract: + tmpvars[oi].value = value(ci.operators[0]) - value(ci.operators[1]); + break; + case PIEvaluatorTypes::oMultiply: + tmpvars[oi].value = value(ci.operators[0]) * value(ci.operators[1]); + break; + case PIEvaluatorTypes::oDivide: + tmp = value(ci.operators[1]); + if (tmp == complexd(0., 0.)) tmpvars[oi].value = 0.; + else tmpvars[oi].value = value(ci.operators[0]) / tmp; + break; + case PIEvaluatorTypes::oResidue: + tmpvars[oi].value = residue(value(ci.operators[0]), value(ci.operators[1])); + break; + case PIEvaluatorTypes::oPower: + tmpvars[oi].value = pow(value(ci.operators[0]), value(ci.operators[1])); + break; + case PIEvaluatorTypes::oEqual: + tmpvars[oi].value = value(ci.operators[0]) == value(ci.operators[1]); + break; + case PIEvaluatorTypes::oNotEqual: + tmpvars[oi].value = value(ci.operators[0]) != value(ci.operators[1]); + break; + case PIEvaluatorTypes::oGreaterEqual: + tmpvars[oi].value = value(ci.operators[0]).real() >= value(ci.operators[1]).real(); + break; + case PIEvaluatorTypes::oSmallerEqual: + tmpvars[oi].value = value(ci.operators[0]).real() <= value(ci.operators[1]).real(); + break; + case PIEvaluatorTypes::oGreater: + tmpvars[oi].value = value(ci.operators[0]).real() > value(ci.operators[1]).real(); + break; + case PIEvaluatorTypes::oSmaller: + tmpvars[oi].value = value(ci.operators[0]).real() < value(ci.operators[1]).real(); + break; + case PIEvaluatorTypes::oAnd: + tmpvars[oi].value = value(ci.operators[0]).real() > 0. && value(ci.operators[1]).real() > 0.; + break; + case PIEvaluatorTypes::oOr: + tmpvars[oi].value = value(ci.operators[0]).real() > 0. || value(ci.operators[1]).real() > 0.; + break; + case PIEvaluatorTypes::oFunction: + execFunction(ci); + break; + case PIEvaluatorTypes::oNone: + tmpvars[oi].value = value(ci.operators[0]); + break; + } + } + if (!instructions.isEmpty()) + out = value(instructions.back().out); + return true; +} + + +bool PIEvaluator::check(const PIString & string) { + currentString = preprocess(string); + correct = check(); + if (!correct) { + instructions.clear(); + return false; + } + lastError = "Correct"; + return true; +} + + +complexd PIEvaluator::evaluate() { + if (!execInstructions()) out = 0.; + if (fabs(out.real()) < 1E-300) out = complexd(0., out.imag()); + if (fabs(out.imag()) < 1E-300) out = complexd(out.real(), 0.); + return out; +} diff --git a/_oldpip/pip_0.4.0_r5/pievaluator.h b/_oldpip/pip_0.4.0_r5/pievaluator.h new file mode 100644 index 0000000..f2a9bf9 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/pievaluator.h @@ -0,0 +1,227 @@ +/*! \file pievaluator.h + * \brief Mathematic expressions calculator +*/ +/* + PIP - Platform Independent Primitives + Evaluator designed for stream computing + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +#ifndef PIEVALUATOR_H +#define PIEVALUATOR_H + +#include "pistring.h" +#include "pimath.h" + +typedef complexd (*FuncFunc)(void * , int, complexd * ); + +namespace PIEvaluatorTypes { + static const int operationCount = 14; + + enum eType {etNumber, etOperator, etVariable, etFunction}; + enum Operation {oNone, oAdd, oSubtract, oMultiply, oDivide, oResidue, oPower, + oEqual, oNotEqual, oGreater, oSmaller, oGreaterEqual, oSmallerEqual, + oAnd, oOr, oFunction + }; + enum BaseFunctions {bfUnknown, bfSin, bfCos, bfTg, bfCtg, + bfArcsin, bfArccos, bfArctg, bfArcctg, + bfExp, bfRandom, bfSh, bfCh, bfTh, bfCth, + bfSqrt, bfSqr, bfPow, bfAbs, + bfLn, bfLg, bfLog, bfSign, + bfIm, bfRe, bfArg, bfLen, bfConj, + bfRad, bfDeg, bfJ0, bfJ1, bfJN, + bfY0, bfY1, bfYN, bfMin, bfMax, + bfClamp, bfStep, bfMix, bfDefined, + bfCustom = 0xFFFF + }; + + struct Instruction { + Instruction() {;} + Instruction(Operation oper, PIVector opers, int out_ind, int func = -1) { + operation = oper; operators = opers; out = out_ind; function = func;} + Operation operation; + PIVector operators; + int out; + int function; + }; + struct Element { + Element() {;} + Element(eType new_type, int new_num, int new_var_num = -1) {set(new_type, new_num, new_var_num);} + void set(eType new_type, int new_num, int new_var_num = -1) {type = new_type; num = new_num; var_num = new_var_num;} + eType type; + int num; + int var_num; + }; + struct Function { + Function() {arguments = 0; type = bfUnknown; handler = 0;} + Function(const PIString & name, int args, BaseFunctions ftype) {identifier = name; arguments = args; type = ftype; handler = 0;} + Function(const PIString & name, int args, FuncFunc h) {identifier = name; arguments = args; type = bfCustom; handler = h;} + PIString identifier; + BaseFunctions type; + FuncFunc handler; + int arguments; + }; + struct Variable { + Variable() {value = 0.;} + Variable(const PIString & var_name, complexd val) {name = var_name; value = val;} + PIString name; + complexd value; + }; +}; +/* + ≠ : + ≥ } + ≤ { + â‹€ & + â‹ | +*/ + +class PIP_EXPORT PIEvaluatorContent +{ + friend class PIEvaluator; +public: + PIEvaluatorContent(); + ~PIEvaluatorContent() {;} + + void addFunction(const PIString & name, int args = 1) {functions.push_back(PIEvaluatorTypes::Function(name, args, getBaseFunction(name)));} + void addVariable(const PIString & name, const complexd & val = 0.) {variables.push_back(PIEvaluatorTypes::Variable(name, val)); sortVariables();} + void addCustomFunction(const PIString & name, int args_count, FuncFunc func) {functions << PIEvaluatorTypes::Function(name, args_count, func);} + int functionsCount() const {return functions.size();} + int variablesCount() const {return variables.size();} + int customVariablesCount() const {return variables.size() - cv_count;} + int findFunction(const PIString & name) const {for (uint i = 0; i < functions.size(); i++) if (functions[i].identifier == name) return i; return -1;} + int findVariable(const PIString & var_name) const {for (uint i = 0; i < variables.size(); i++) if (variables[i].name == var_name) return i; return -1;} + PIEvaluatorTypes::Function function(int index) {if (index < 0 || index >= functions.size_s()) return PIEvaluatorTypes::Function(); return functions[index];} + PIEvaluatorTypes::Variable variable(int index) {if (index < 0 || index >= variables.size_s()) return PIEvaluatorTypes::Variable(); return variables[index];} + PIEvaluatorTypes::Function function(const PIString & name) {return function(findFunction(name));} + PIEvaluatorTypes::Variable variable(const PIString & name) {return variable(findVariable(name));} + PIEvaluatorTypes::Variable customVariable(int index) {if (index < cv_count || index >= variables.size_s() + cv_count) return PIEvaluatorTypes::Variable(); return variables[index + cv_count];} + bool setVariableValue(int index, complexd new_value); + bool setVariableName(int index, const PIString & new_name); + bool setVariableValue(const PIString & var_name, const complexd & new_value) {return setVariableValue(findVariable(var_name), new_value);} + bool setVariableName(const PIString & var_name, const PIString & new_name) {return setVariableName(findVariable(var_name), new_name);} + void removeVariable(int index) {variables.remove(index);} + void removeVariable(const PIString & var_name) {removeVariable(findVariable(var_name));} + void clearCustomVariables(); + void sortVariables(); + PIEvaluatorTypes::BaseFunctions getBaseFunction(const PIString & name); + +private: + PIVector functions; + PIVector variables; + int cv_count; + +}; + + +class PIP_EXPORT PIEvaluator +{ +public: + + //! Constructs an empty evaluator + PIEvaluator() {correct = false; data_ = 0;} + + ~PIEvaluator() {;} + + + //! Returns custom data + void * data() {return data_;} + + //! Set custom data to "_data" + void setData(void * _data) {data_ = _data;} + + + //! Check mathematical expression and parse it to list of instructions + bool check(const PIString & string); + + //! Returns true if expression was checked succesfully + bool isCorrect() const {return correct;} + + //! Set variable value with name "name" to value "value". Add variable if it doesn`t exists + int setVariable(const PIString & name, complexd value = 0.) {if (content.findVariable(name) < 0) content.addVariable(name, value); else content.setVariableValue(name, value); return content.findVariable(name);} + + //! Set variable value with index "index" to value "value". Don`t add variable if it doesn`t exists + void setVariable(int index, complexd value = 0.) {if (index >= 0 && index < content.variablesCount()) content.setVariableValue(index, value);} + + void setCustomVariableValue(int index, complexd value = 0.) {content.variables[index + content.cv_count].value = value;} +/* + //! Add function "name" with arguments count "args_count" and handler "func". Three arguments will be passed to handler: \a data(), "args_count" and array of input values. + void addFunction(const PIString & name, int args_count, FuncFunc func) {content.addCustomFunction(name, args_count, func);} +*/ + //! Evaluate last successfully checked with function \a check() expression and returns result + complexd evaluate(); + + //! Remove variable with name "name" + void removeVariable(const PIString & name) {content.removeVariable(name);} + + //! Remove all manually added variables + void clearCustomVariables() {content.clearCustomVariables();} + + //! Returns index of variable with name "name" + int variableIndex(const PIString & name) const {return content.findVariable(name);} + + //! Returns all unknown variables founded in last expression passed to \a check() function + const PIStringList & unknownVariables() const {return unknownVars;} + + //! Returns processed last expression passed to \a check() function + const PIString & expression() const {return currentString;} + + //! Returns last error description occured in \a check() function + const PIString & error() const {return lastError;} + + //! Returns last result of \a evaluate() + const complexd & lastResult() const {return out;} + + PIEvaluatorContent content; + +private: + const PIString & prepare(const PIString & string); + const PIString & preprocess(const PIString & string); + int parse(const PIString & string, int offset = 0); + void convert(); + void checkBrackets(); + void removeSpaces(); + void findUnknownVariables(); + void removeJunk(); + void replaceOperators(); + void makeOutput(PIString & string); + bool fillElements(); + bool setSignes(); + bool isSign(const PIChar & ch); + PIString inverse(const PIString & string) {int len = string.length(); PIString s; for (int i = 0; i < len; i++) s += string[len - i - 1]; return s;} + bool check(); + bool execInstructions(); + PIString inBrackets(const PIString & string); + PIString operationChar(const PIEvaluatorTypes::Operation & operation); + PIEvaluatorTypes::Operation operationInOrder(const int & index); + complexd value(const int & index) {if (index < 0) return tmpvars[-index - 1].value; else return kvars->at(index).value;} + inline complexd residue(const complexd & f, const complexd & s); + inline void execFunction(const PIEvaluatorTypes::Instruction & ci); + + PIVector elements; + PIVector currentVariables, variables, tmpvars, * kvars; + PIVector instructions; + PIStringList unknownVars; + PIString currentString, lastError; + complexd out; + bool correct; + void * data_; +}; + +inline bool operator ==(PIEvaluatorTypes::Element e1, PIEvaluatorTypes::Element e2) {return (e1.type == e2.type && e1.num == e2.num);} +inline bool operator !=(PIEvaluatorTypes::Element e1, PIEvaluatorTypes::Element e2) {return (e1.type != e2.type || e1.num != e2.num);} + +#endif // PIEVALUATOR_H diff --git a/_oldpip/pip_0.4.0_r5/pifile.cpp b/_oldpip/pip_0.4.0_r5/pifile.cpp new file mode 100644 index 0000000..92e7132 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/pifile.cpp @@ -0,0 +1,158 @@ +/* + PIP - Platform Independent Primitives + File + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +#include "pifile.h" + + +/*! \class PIFile + * \brief Local file + * + * \section PIFile_sec0 Synopsis + * This class provide access to local file. You can manipulate + * binary content or use this class as text stream. To binary + * access there are function \a read(), \a write(), and many + * \a writeBinary() functions. For write variables to file in + * their text representation threr are many "<<" operators. + * + * \section PIFile_sec1 Position + * Each opened file has a read/write position - logical position + * in the file content you read from or you write to. You can + * find out current position with function \a pos(). Function + * \a seek(llong position) move position to position "position", + * \a seekToBegin() move position to the begin of file, + * \a seekToEnd() move position to the end of file. + * + */ + +REGISTER_DEVICE(PIFile); + + +bool PIFile::openDevice() { + close(); + if (path().isEmpty()) return false; + //piCout << "fopen " << path_.data() << ": " << strType(mode_).data() << fd; + fd = fopen(path().data(), strType(mode_).data()); + opened_ = (fd != 0); +#ifndef WINDOWS + if (opened_) fcntl(fileno(fd), F_SETFL, O_NONBLOCK); +#endif + seekToBegin(); + //piCout << "open file" << fd << opened_; + return opened_; +} + + +bool PIFile::closeDevice() { + //piCout << "close file" << fd << opened_; + if (!opened_ || fd == 0) return true; + bool cs = (fclose(fd) == 0); + if (cs) fd = 0; + //piCout << "closed file" << fd << opened_; + return cs; +} + + +PIString PIFile::readLine() { + PIString str; + if (!opened_) return str; + int cc, cp = 0; + while (!isEnd() && cp < 4095) { + cc = fgetc(fd); + if (char(cc) == '\n' || cc == EOF) break; + str.push_back(char(cc)); + } + //cout << "readline: " << str << endl; + return str; +} + + +llong PIFile::readAll(void * data) { + llong cp = pos(), s = size(), i = -1; + seekToBegin(); + if (s < 0) { + while (!isEnd()) + read(&(((char*)data)[++i]), 1); + } else + read((char * )data, s); + seek(cp); + return s; +} + + +PIByteArray PIFile::readAll(bool forceRead) { + PIByteArray a; + llong cp = pos(); + if (forceRead) { + seekToBegin(); + while (!isEnd()) + a.push_back(readChar()); + seek(cp); + return a; + } + llong s = size(); + if (s < 0) return a; + a.resize(s); + s = readAll(a.data()); + seek(cp); + if (s >= 0) a.resize(s); + return a; +} + + +llong PIFile::size() { + if (!opened_) return -1; + llong s, cp = pos(); + seekToEnd(); + s = pos(); + seek(cp); + return s; +} + + +void PIFile::resize(llong new_size, uchar fill_) { + llong ds = new_size - size(); + if (ds == 0) return; + if (ds > 0) { + uchar * buff = new uchar[ds]; + memset(buff, fill_, ds); + write(buff, ds); + delete[] buff; + return; + } + piCoutObj << "Downsize is not support yet :-("; +} + + + +bool PIFile::isExists(const PIString & path) { + FILE * f = fopen(PIString(path).data(), "r"); + bool ok = (f != 0); + if (ok) fclose(f); + return ok; +} + + +PIString PIFile::constructFullPath() const { + return fullPathPrefix() + "://" + path(); +} + + +void PIFile::configureFromFullPath(const PIString & full_path) { + setPath(full_path); +} diff --git a/_oldpip/pip_0.4.0_r5/pifile.h b/_oldpip/pip_0.4.0_r5/pifile.h new file mode 100644 index 0000000..dd72cc3 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/pifile.h @@ -0,0 +1,240 @@ +/*! \file pifile.h + * \brief Local file +*/ +/* + PIP - Platform Independent Primitives + File + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +#ifndef PIFILE_H +#define PIFILE_H + +#include "piiodevice.h" +#include + +class PIP_EXPORT PIFile: public PIIODevice +{ + PIIODEVICE(PIFile) +public: + + //! Constructs a file with path "path" nad open mode "type" + PIFile(const PIString & path = PIString(), DeviceMode mode = ReadWrite): PIIODevice(path, mode) {setPrecision(5); if (!path.isEmpty()) openDevice();} + + ~PIFile() {close();} + + //PIFile & operator =(const PIFile & f) {path_ = f.path_; type_ = f.type_; return *this;} + + + //! Immediate write all buffered data to disk + void flush() {if (opened_) fflush(fd);} + + //! Move read/write position to "position" + void seek(llong position) {if (!opened_) return; fseek(fd, position, SEEK_SET); clearerr(fd);} + + //! Move read/write position to the begin of the file + void seekToBegin() {if (!opened_) return; fseek(fd, 0, SEEK_SET); clearerr(fd);} + + //! Move read/write position to the end of the file + void seekToEnd() {if (!opened_) return; fseek(fd, 0, SEEK_END); clearerr(fd);} + + //! Move read/write position to text line number "line" + void seekToLine(llong line) {if (!opened_) return; seekToBegin(); piForTimes (line) readLine(); clearerr(fd);} // line 0 - begin of file + //void fill(char c) {stream.fill(c);} + + //! Read one char and return it + char readChar() {return (char)fgetc(fd);} + + //! Read one text line and return it + PIString readLine(); + + //! Read all file content to "data" and return readed bytes count. Position leaved unchanged + llong readAll(void * data); + + //! Read all file content to byte array and return it. Position leaved unchanged + PIByteArray readAll(bool forceRead = false); + + + //! Set file path to "path" and reopen file if need + void setPath(const PIString & path) {PIIODevice::setPath(path); if (opened_) openDevice();} + + //! Returns file size + llong size(); + + //! Returns read/write position + llong pos() {if (!opened_) return -1; return ftell(fd);} + + //! Returns if position is at the end of file + bool isEnd() {if (!opened_) return true; return (feof(fd) || ferror(fd));} + + //! Returns if file is empty + bool isEmpty() {return (size() <= 0);} + + + //! Returns float numbers write precision + int precision() const {return prec_;} + + //! Set float numbers write precision to "prec_" digits + void setPrecision(int prec) {prec_ = prec; if (prec_ >= 0) prec_str = "." + itos(prec_); else prec_str = "";} + + + //! Read from file to "read_to" no more than "max_size" and return readed bytes count + int read(void * read_to, int max_size) {if (!canRead() || fd == 0) return -1; return fread(read_to, 1, max_size, fd);} + + //! Write to file "data" with size "max_size" and return written bytes count + int write(const void * data, int max_size) {if (!canWrite() || fd == 0) return -1; return fwrite(data, 1, max_size, fd);} + + PIFile & writeToBinLog(ushort id, const void * data, int size) {if (!isWriteable() || fd == 0) return *this; writeBinary(id).writeBinary((ushort)size); write(data, size); flush(); return *this;} + + + //! Write to file binary content of "v" + PIFile & writeBinary(const char v) {write(&v, sizeof(v)); return *this;} + //! Write to file binary content of "v" + PIFile & writeBinary(const short v) {write(&v, sizeof(v)); return *this;} + //! Write to file binary content of "v" + PIFile & writeBinary(const int v) {write(&v, sizeof(v)); return *this;} + //! Write to file binary content of "v" + PIFile & writeBinary(const long v) {write(&v, sizeof(v)); return *this;} + //! Write to file binary content of "v" + PIFile & writeBinary(const llong v) {write(&v, sizeof(v)); return *this;} + //! Write to file binary content of "v" + PIFile & writeBinary(const uchar v) {write(&v, sizeof(v)); return *this;} + //! Write to file binary content of "v" + PIFile & writeBinary(const ushort v) {write(&v, sizeof(v)); return *this;} + //! Write to file binary content of "v" + PIFile & writeBinary(const uint v) {write(&v, sizeof(v)); return *this;} + //! Write to file binary content of "v" + PIFile & writeBinary(const ulong v) {write(&v, sizeof(v)); return *this;} + //! Write to file binary content of "v" + PIFile & writeBinary(const ullong v) {write(&v, sizeof(v)); return *this;} + //! Write to file binary content of "v" + PIFile & writeBinary(const float v) {write(&v, sizeof(v)); return *this;} + //! Write to file binary content of "v" + PIFile & writeBinary(const double v) {write(&v, sizeof(v)); return *this;} + + PIFile & operator =(const PIFile & f) {PIIODevice::setPath(f.path()); mode_ = f.mode_; return *this;} + + //! Write to file text representation of "v" + PIFile & operator <<(const char v) {if (canWrite() && fd != 0) write(&v, 1); return *this;} + //PIFile & operator <<(const string & v) {write(v.c_str(), v.size()); return *this;} + //! Write to file string "v" + PIFile & operator <<(const PIString & v) {if (canWrite() && fd != 0) write(v.data(), v.lengthAscii()); return *this;} + //! Write to file text representation of "v" + PIFile & operator <<(const PIByteArray & v) {if (canWrite() && fd != 0) write(v.data(), v.size()); return *this;} + //! Write to file text representation of "v" + PIFile & operator <<(short v) {if (canWrite() && fd != 0) ret = fprintf(fd, "%hd", v); return *this;} + //! Write to file text representation of "v" + PIFile & operator <<(int v) {if (canWrite() && fd != 0) ret = fprintf(fd, "%d", v); return *this;} + //! Write to file text representation of "v" + PIFile & operator <<(long v) {if (canWrite() && fd != 0) ret = fprintf(fd, "%ld", v); return *this;} + //! Write to file text representation of "v" + PIFile & operator <<(llong v) {if (canWrite() && fd != 0) ret = fprintf(fd, "%lld", v); return *this;} + //! Write to file text representation of "v" + PIFile & operator <<(uchar v) {if (canWrite() && fd != 0) ret = fprintf(fd, "%u", int(v)); return *this;} + //! Write to file text representation of "v" + PIFile & operator <<(ushort v) {if (canWrite() && fd != 0) ret = fprintf(fd, "%hu", v); return *this;} + //! Write to file text representation of "v" + PIFile & operator <<(uint v) {if (canWrite() && fd != 0) ret = fprintf(fd, "%u", v); return *this;} + //! Write to file text representation of "v" + PIFile & operator <<(ulong v) {if (canWrite() && fd != 0) ret = fprintf(fd, "%lu", v); return *this;} + //! Write to file text representation of "v" + PIFile & operator <<(ullong v) {if (canWrite() && fd != 0) ret = fprintf(fd, "%llu", v); return *this;} + //! Write to file text representation of "v" with precision \a precision() + PIFile & operator <<(float v) {if (canWrite() && fd != 0) ret = fprintf(fd, ("%" + prec_str + "f").c_str(), v); return *this;} + //! Write to file text representation of "v" with precision \a precision() + PIFile & operator <<(double v) {if (canWrite() && fd != 0) ret = fprintf(fd, ("%" + prec_str + "lf").c_str(), v); return *this;} + + + //! Read from file text representation of "v" + PIFile & operator >>(char & v) {if (canRead() && fd != 0) ret = fscanf(fd, "%hhn", &v); return *this;} + //! Read from file text representation of "v" + PIFile & operator >>(short & v) {if (canRead() && fd != 0) ret = fscanf(fd, "%hn", &v); return *this;} + //! Read from file text representation of "v" + PIFile & operator >>(int & v) {if (canRead() && fd != 0) ret = fscanf(fd, "%n", &v); return *this;} + //! Read from file text representation of "v" + PIFile & operator >>(long & v) {if (canRead() && fd != 0) ret = fscanf(fd, "%ln", &v); return *this;} + //! Read from file text representation of "v" + PIFile & operator >>(llong & v) {if (canRead() && fd != 0) ret = fscanf(fd, "%lln", &v); return *this;} + //! Read from file text representation of "v" + PIFile & operator >>(uchar & v) {if (canRead() && fd != 0) ret = fscanf(fd, "%hhn", &v); return *this;} + //! Read from file text representation of "v" + PIFile & operator >>(ushort & v) {if (canRead() && fd != 0) ret = fscanf(fd, "%hn", &v); return *this;} + //! Read from file text representation of "v" + PIFile & operator >>(uint & v) {if (canRead() && fd != 0) ret = fscanf(fd, "%n", &v); return *this;} + //! Read from file text representation of "v" + PIFile & operator >>(ulong & v) {if (canRead() && fd != 0) ret = fscanf(fd, "%ln", &v); return *this;} + //! Read from file text representation of "v" + PIFile & operator >>(ullong & v) {if (canRead() && fd != 0) ret = fscanf(fd, "%lln", &v); return *this;} + //! Read from file text representation of "v" + PIFile & operator >>(float & v) {if (canRead() && fd != 0) ret = fscanf(fd, "%f", &v); return *this;} + //! Read from file text representation of "v" + PIFile & operator >>(double & v) {if (canRead() && fd != 0) ret = fscanf(fd, "%lf", &v); return *this;} + + PIString constructFullPath() const; + + EVENT_HANDLER(void, clear) {close(); fd = fopen(path().data(), "w"); if (fd != 0) fclose(fd); fd = 0; opened_ = false; open();} + EVENT_HANDLER0(void, remove) {close(); std::remove(path().data());} + EVENT_HANDLER1(void, resize, llong, new_size) {resize(new_size, 0);} + EVENT_HANDLER2(void, resize, llong, new_size, uchar, fill); + + + //! Returns not opened temporary file with open mode "mode" + static PIFile openTemporary(PIIODevice::DeviceMode mode = PIIODevice::ReadWrite) {return PIFile(PIString(tmpnam(0)), mode);} + + //! Returns if file with path "path" does exists + static bool isExists(const PIString & path); + + //! Remove file with path "path" and returns if remove was successful + static bool remove(const PIString & path) {return std::remove(path.data()) == 0;} + +//! \handlers +//! \{ + + //! \fn void clear() + //! \brief Raise on new TCP connection received + + //! \fn void resize(llong new_size) + //! \brief Resize file to "new_size" with "fill" filling + + //! \fn void resize(llong new_size, uchar fill) + //! \brief Resize file to "new_size" with "fill" filling + + //! \fn void remove() + //! \brief Remove file + +//! \} +//! \ioparams +//! \{ +#ifdef DOXYGEN +#endif +//! \} + +protected: + PIString fullPathPrefix() const {return "file";} + void configureFromFullPath(const PIString & full_path); + bool openDevice(); + bool closeDevice(); + +private: + PIString strType(const PIIODevice::DeviceMode type) {switch (type) {case PIIODevice::ReadOnly: return "rb"; case WriteOnly: return "ab"; case ReadWrite: return "a+b";} return "rb";} + + FILE * fd; + int ret, prec_; + string prec_str; + +}; + +#endif // PIFILE_H diff --git a/_oldpip/pip_0.4.0_r5/pigeometry.h b/_oldpip/pip_0.4.0_r5/pigeometry.h new file mode 100644 index 0000000..dd8c25f --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/pigeometry.h @@ -0,0 +1,137 @@ +/* + PIP - Platform Independent Primitives + Geometry + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +#ifndef PIGEOMETRY_H +#define PIGEOMETRY_H + +#include "pimath.h" + +template +class PIP_EXPORT PIPoint { +public: + Type x; + Type y; + + PIPoint() {x = y = 0;}; + PIPoint(Type x_, Type y_) {set(x_, y_);} + + PIPoint & set(Type x_, Type y_) {x = x_; y = y_; return *this;} + PIPoint & move(Type x_, Type y_) {x += x_; y += y_; return *this;} + PIPoint & move(const PIPoint & p) {x += p.x; y += p.y; return *this;} + double angleRad() const {return atan2(y, x);} + int angleDeg() const {return round(atan2(y, x) * 180. / M_PI);} + PIPoint toPolar(bool isDeg = false) const {return PIPoint(sqrt(x*x + y*y), isDeg ? angleDeg() : angleRad());} + static PIPoint fromPolar(const PIPoint & p) {return PIPoint(p.y * cos(p.x), p.y * sin(p.x));} + + PIPoint operator +(const PIPoint & p) {return PIPoint(x + p.x, y + p.y);} + PIPoint operator +(const Type & p) {return PIPoint(x + p, y + p);} + PIPoint operator -(const PIPoint & p) {return PIPoint(x - p.x, y - p.y);} + PIPoint operator -(const Type & p) {return PIPoint(x - p, y - p);} + PIPoint operator -() {return PIPoint(-x, -y);} + PIPoint operator *(const Type & d) {return PIPoint(x * d, y * d);} + PIPoint operator /(const Type & d) {return PIPoint(x / d, y / d);} + bool operator ==(const PIPoint & p) const {return (x == p.x && y == p.y);} + bool operator !=(const PIPoint & p) const {return (x != p.x || y != p.y);} + +}; + +template +std::ostream & operator <<(std::ostream & s, const PIPoint & v) {s << '{' << v.x << ", " << v.y << '}'; return s;} + +template +class PIP_EXPORT PIRect { +public: + Type x0; + Type y0; + Type x1; + Type y1; + + PIRect() {x0 = y0 = x1 = y1 = 0;}; + PIRect(Type x, Type y, Type w, Type h) {set(x, y, w, h);} + PIRect(const PIPoint & tl, const PIPoint & br) {set(tl.x, tl.y, br.x, br.y);} + PIRect(const PIPoint & p0, const PIPoint & p1, const PIPoint & p2) {set(piMin(p0.x, p1.x, p2.x), piMin(p0.y, p1.y, p2.y), + piMax(p0.x, p1.x, p2.x), piMax(p0.y, p1.y, p2.y));} + + PIRect & set(Type x, Type y, Type w, Type h) {x0 = x; y0 = y; x1 = x + w; y1 = y + h; return *this;} + bool pointIn(Type x, Type y) const {return (x <= x1 && x >= x0 && y <= y1 && y >= y0);} + bool pointIn(const PIPoint & p) const {return pointIn(p.x, p.y);} + bool isEmpty() const {return (x1 - x0 == 0 && y1 - y0 == 0);} + PIRect & translate(Type x, Type y) {x0 += x; x1 += x; y0 += y; y1 += y; return *this;} + PIRect & translate(const PIPoint & p) {x0 += p.x; x1 += p.x; y0 += p.y; y1 += p.y; return *this;} + PIRect translated(Type x, Type y) {PIRect r(*this); r.translate(x, y); return r;} + PIRect translated(const PIPoint & p) {PIRect r(*this); r.translate(p); return r;} + PIRect & scale(Type x, Type y) {setWidth(width() * x); setHeight(height() * y); return *this;} + PIRect & scale(const PIPoint & p) {setWidth(width() * p.x); setHeight(height() * p.y); return *this;} + PIRect scaled(Type x, Type y) {PIRect r(*this); r.scale(x, y); return r;} + PIRect scaled(const PIPoint & p) {PIRect r(*this); r.scale(p); return r;} + PIRect & normalize() {if (x0 > x1) piSwap(x0, x1); if (y0 > y1) piSwap(y0, y1); return *this;} + PIRect normalized() {PIRect r(*this); r.normalize(); return r;} + PIRect & unite(const PIRect & r) {x0 = piMin(x0, r.x0); y0 = piMin(y0, r.y0); x1 = piMax(x1, r.x1); y1 = piMax(y1, r.y1); return *this;} + PIRect united(const PIRect & rect) {PIRect r(*this); r.unite(rect); return r;} + PIRect & intersect(const PIRect & r) {x0 = piMax(x0, r.x0); y0 = piMax(y0, r.y0); x1 = piMin(x1, r.x1); y1 = piMin(y1, r.y1); if (x0 > x1 || y0 > y1) x0 = x1 = y0 = y1 = Type(0); return *this;} + PIRect intersected(const PIRect & rect) {PIRect r(*this); r.intersect(rect); return r;} + Type top() const {return y0;} + Type left() const {return x0;} + Type right() const {return x1;} + Type bottom() const {return y1;} + Type width() const {return x1 - x0;} + Type height() const {return y1 - y0;} + PIPoint topLeft() {return PIPoint(x0, y0);} + PIPoint topRigth() {return PIPoint(x1, y0);} + PIPoint bottomLeft() {return PIPoint(x0, y1);} + PIPoint bottomRight() {return PIPoint(x1, y1);} + void setTop(Type v) {y0 = v;} + void setLeft(Type v) {x0 = v;} + void setRigth(Type v) {x1 = v;} + void setBottom(Type v) {y1 = v;} + void setWidth(Type v) {x1 = x0 + v;} + void setHeight(Type v) {y1 = y0 + v;} + + PIRect operator -() {return PIRect(-x0, -y0, -width(), -height());} + void operator +=(Type x) {translate(x, x);} + void operator +=(const PIPoint & p) {translate(p);} + void operator -=(Type x) {translate(-x, -x);} + void operator -=(const PIPoint & p) {translate(-p);} + void operator *=(Type p) {x0 *= p; x1 *= p; y0 *= p; y1 *= p;} + void operator /=(Type p) {x0 /= p; x1 /= p; y0 /= p; y1 /= p;} + void operator |=(const PIRect & r) {unite(r);} + void operator &=(const PIRect & r) {intersect(r);} + PIRect operator +(const PIPoint & p) {return PIRect(*this).translated(p);} + PIRect operator -(const PIPoint & p) {return PIRect(*this).translated(-p);} + PIRect operator |(const PIRect & r) {return PIRect(*this).united(r);} + PIRect operator &(const PIRect & r) {return PIRect(*this).intersected(r);} + bool operator ==(const PIRect & r) const {return (x0 == r.x0 && y0 == r.y0 && x1 == r.x1 && y1 == r.y10);} + bool operator !=(const PIRect & r) const {return (x0 != r.x0 || y0 != r.y0 || x1 != r.x1 || y1 != r.y10);} + +}; + +template +std::ostream & operator <<(std::ostream & s, const PIRect & v) {s << '{' << v.x0 << ", " << v.y0 << "; " << v.x1 - v.x0 << ", " << v.y1 - v.y0 << '}'; return s;} + +typedef PIPoint PIPointi; +typedef PIPoint PIPointu; +typedef PIPoint PIPointf; +typedef PIPoint PIPointd; + +typedef PIRect PIRecti; +typedef PIRect PIRectu; +typedef PIRect PIRectf; +typedef PIRect PIRectd; + +#endif // PIGEOMETRY_H diff --git a/_oldpip/pip_0.4.0_r5/piincludes.cpp b/_oldpip/pip_0.4.0_r5/piincludes.cpp new file mode 100644 index 0000000..f1c534d --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/piincludes.cpp @@ -0,0 +1,592 @@ +/* + PIP - Platform Independent Primitives + Global includes + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +#include "piincludes.h" +#include "piconsole.h" + +bool isPIInit = false; +bool piDebug = true; +string ifconfigPath; + +PIInit piInit; +lconv * currentLocale = +#ifdef ANDROID + 0; +#else + std::localeconv(); +#endif +#ifdef HAS_LOCALE +static locale_t currentLocale_t = 0; +#endif + +#ifdef MAC_OS +clock_serv_t __pi_mac_clock; +#endif + +PIMutex __PICout_mutex__; +PIString __PICout_string__; + + +#ifdef WINDOWS +FILETIME __pi_ftjan1970; +long long __pi_perf_freq = -1; +PINtSetTimerResolution setTimerResolutionAddr = 0; +#endif + + +PIInit::PIInit() { + if (isPIInit) return; + isPIInit = true; +#ifndef WINDOWS + sigset_t ss; + sigemptyset(&ss); + sigaddset(&ss, SIGALRM); + sigprocmask(SIG_BLOCK, &ss, 0); + pthread_sigmask(SIG_BLOCK, &ss, 0); + ifconfigPath = "/bin/ifconfig"; + if (!fileExists(ifconfigPath)) { + ifconfigPath = "/sbin/ifconfig"; + if (!fileExists(ifconfigPath)) { + ifconfigPath = "/usr/bin/ifconfig"; + if (!fileExists(ifconfigPath)) { + ifconfigPath = "/usr/sbin/ifconfig"; + if (!fileExists(ifconfigPath)) { + ifconfigPath = ""; + } + } + } + } +#else + // WinSock inint + WSADATA wsaData; + WSAStartup(MAKEWORD(2, 2), &wsaData); + + // Timers init + SYSTEMTIME jan1970 = {1970, 1, 4, 1, 0, 14, 15, 0}; + SystemTimeToFileTime(&jan1970, &__pi_ftjan1970); + LARGE_INTEGER pf; + pf.QuadPart = -1; + if (QueryPerformanceFrequency(&pf) != 0) __pi_perf_freq = pf.QuadPart; + if (__pi_perf_freq == 0) __pi_perf_freq = -1; + + // Sleep precision init + ntlib = LoadLibrary("ntdll.dll"); + if (ntlib) setTimerResolutionAddr = (PINtSetTimerResolution)GetProcAddress(ntlib, "NtSetTimerResolution"); + /*if (setTimerResolution) setTimerResolutionAddr(1, TRUE, &prev_res);*/ +#endif + //piDebug = true; +#ifdef HAS_LOCALE + //cout << "has locale" << endl; + if (currentLocale_t != 0) { + freelocale(currentLocale_t); + currentLocale_t = 0; + } + currentLocale_t = newlocale(LC_ALL, setlocale(LC_ALL, ""), 0); +#else + setlocale(LC_ALL, ""); + setlocale(LC_NUMERIC, "C"); +#endif +#ifdef MAC_OS + host_get_clock_service(mach_host_self(), CALENDAR_CLOCK, &__pi_mac_clock); +#endif +} + + +PIInit::~PIInit() { +#ifdef WINDOWS + WSACleanup(); + //if (setTimerResolution) setTimerResolutionAddr(prev_res, TRUE, &prev_res); + if (ntlib) FreeLibrary(ntlib); +#endif +#ifdef MAC_OS + mach_port_deallocate(mach_task_self(), __pi_mac_clock); +#endif + //if (currentLocale_t != 0) freelocale(currentLocale_t); +} + + +#ifdef WINDOWS +void * PICout::hOut = 0; +WORD PICout::dattr = 0; +DWORD PICout::smode = 0; +#endif + + +bool PICout::buffer_ = false; + + +PICout::PICout(PIFlags controls): fo_(true), cc_(false), fc_(false), cnb_(10), co_(controls) { +#ifdef WINDOWS + if (hOut == 0) { + hOut = GetStdHandle(STD_OUTPUT_HANDLE); + CONSOLE_SCREEN_BUFFER_INFO sbi; + GetConsoleScreenBufferInfo(hOut, &sbi); + dattr = sbi.wAttributes; + } + attr_ = dattr; +#endif + __PICout_mutex__.lock(); +} + + +PICout::~PICout() { + if (fc_) applyFormat(PICoutManipulators::Default); + if (cc_) return; + newLine(); + __PICout_mutex__.unlock(); +} + + +PICout PICout::operator <<(const PICoutAction v) { +#ifdef WINDOWS + CONSOLE_SCREEN_BUFFER_INFO sbi; + COORD coord; + CONSOLE_CURSOR_INFO curinfo; +#endif + switch (v) { + case PICoutManipulators::Flush: + if (!PICout::buffer_) + std::cout << std::flush; + break; + case PICoutManipulators::Backspace: + if (!PICout::buffer_) { +#ifdef WINDOWS + GetConsoleScreenBufferInfo(hOut, &sbi); + coord = sbi.dwCursorPosition; + coord.X = piMax(0, int(coord.X) - 1); + SetConsoleCursorPosition(hOut, coord); + printf(" "); + SetConsoleCursorPosition(hOut, coord); +#else + printf("\e[1D \e[1D"); +#endif + } + break; + case PICoutManipulators::ShowCursor: + if (!PICout::buffer_) { +#ifdef WINDOWS + GetConsoleCursorInfo(hOut, &curinfo); + curinfo.bVisible = true; + SetConsoleCursorInfo(hOut, &curinfo); +#else + printf("\e[?25h"); +#endif + } + break; + case PICoutManipulators::HideCursor: + if (!PICout::buffer_) { +#ifdef WINDOWS + GetConsoleCursorInfo(hOut, &curinfo); + curinfo.bVisible = false; + SetConsoleCursorInfo(hOut, &curinfo); +#else + printf("\e[?25l"); +#endif + } + break; + case PICoutManipulators::ClearScreen: + if (!PICout::buffer_) { +#ifdef WINDOWS + /// TODO !!! + /*GetConsoleCursorInfo(hOut, &curinfo); + curinfo.bVisible = false; + SetConsoleCursorInfo(hOut, &curinfo); + + SetConsoleCursorPosition(hOut, ulcoord); + FillConsoleOutputAttribute(hOut, dattr, width * (height + 1), ulcoord, &written); + FillConsoleOutputCharacter(hOut, ' ', width * (height + 1), ulcoord, &written);*/ +#else + printf("\e[H\e[J"); +#endif + } + break; + case PICoutManipulators::SaveContol: saveControl(); break; + case PICoutManipulators::RestoreControl: restoreControl(); break; + default: break; + }; + return *this; +} + + +#define PICOUTTOTARGET(v) {if (PICout::buffer_) __PICout_string__ << (v); else std::cout << (v);} +#define PINUMERICCOUT if (cnb_ == 10) PICOUTTOTARGET(v) else PICOUTTOTARGET(PIString::fromNumber(v, cnb_)) + + +PICout PICout::operator <<(const char * v) {space(); quote(); PICOUTTOTARGET(v) quote(); return *this;} + +PICout PICout::operator <<(const string & v) {space(); quote(); PICOUTTOTARGET(v) quote(); return *this;} + +PICout PICout::operator <<(const bool v) {space(); if (v) PICOUTTOTARGET("true") else PICOUTTOTARGET("false") return *this;} + +PICout PICout::operator <<(const char v) {space(); PICOUTTOTARGET(v) return *this;} + +PICout PICout::operator <<(const uchar v) {space(); if (cnb_ == 10) PICOUTTOTARGET(ushort(v)) else PICOUTTOTARGET(PIString::fromNumber(v, cnb_)) return *this;} + +PICout PICout::operator <<(const short int v) {space(); PINUMERICCOUT return *this;} + +PICout PICout::operator <<(const ushort v) {space(); PINUMERICCOUT return *this;} + +PICout PICout::operator <<(const int v) {space(); PINUMERICCOUT return *this;} + +PICout PICout::operator <<(const uint v) {space(); PINUMERICCOUT return *this;} + +PICout PICout::operator <<(const long v) {space(); PINUMERICCOUT return *this;} + +PICout PICout::operator <<(const ulong v) {space(); PINUMERICCOUT return *this;} + +PICout PICout::operator <<(const llong v) {space(); PINUMERICCOUT return *this;} + +PICout PICout::operator <<(const ullong v) {space(); PINUMERICCOUT return *this;} + +PICout PICout::operator <<(const float v) {space(); PICOUTTOTARGET(v) return *this;} + +PICout PICout::operator <<(const double v) {space(); PICOUTTOTARGET(v) return *this;} + +PICout PICout::operator <<(const void * v) {space(); PICOUTTOTARGET("0x") PICOUTTOTARGET(PIString::fromNumber(ullong(v), 16)) return *this;} + +PICout PICout::operator <<(const PIObject * v) { + space(); + if (v == 0) PICOUTTOTARGET("PIObject*(0x0)") + else { + PICOUTTOTARGET(v->className()) + PICOUTTOTARGET("*(0x") + PICOUTTOTARGET(PIString::fromNumber(ullong(v), 16)) + PICOUTTOTARGET(", \"") + PICOUTTOTARGET(v->name()) + PICOUTTOTARGET("\")") + } + return *this; +} + +PICout PICout::operator <<(const PICoutSpecialChar v) { + switch (v) { + case Null: + if (PICout::buffer_) __PICout_string__ << PIChar(0); + else std::cout << char(0); + break; + case NewLine: + if (PICout::buffer_) __PICout_string__ << "\n"; + else std::cout << '\n'; + fo_ = true; + break; + case Tab: + if (PICout::buffer_) __PICout_string__ << "\t"; + else std::cout << '\t'; + break; + case Esc: +#ifdef CC_VC + if (PICout::buffer_) __PICout_string__ << PIChar(27); + else std::cout << char(27); +#else + if (PICout::buffer_) __PICout_string__ << "\e"; + else std::cout << '\e'; +#endif + break; + case Quote: + if (PICout::buffer_) __PICout_string__ << "\""; + else std::cout << '"'; + break; + }; + return *this; +} + +#undef PICOUTTOTARGET +#undef PINUMERICCOUT + +PICout & PICout::space() { + if (!fo_ && co_[AddSpaces]) { + if (PICout::buffer_) __PICout_string__ << " "; + else std::cout << ' '; + } + fo_ = false; + return *this; +} + +PICout & PICout::quote() { + if (co_[AddQuotes]) { + if (PICout::buffer_) __PICout_string__ << "\""; + else std::cout << '"'; + } + fo_ = false; + return *this; +} + +PICout & PICout::newLine() { + if (co_[AddNewLine]) { + if (PICout::buffer_) __PICout_string__ << "\n"; + else std::cout << std::endl; + } + fo_ = false; + return *this; +} + + +void PICout::applyFormat(PICoutFormat f) { + if (PICout::buffer_) return; + fc_ = true; +#ifdef WINDOWS + static int mask_fore = ~(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE); + static int mask_back = ~(BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE); + switch (f) { + case Bin: case Oct: case Dec: case Hex: break; + case PICoutManipulators::Bold: attr_ |= FOREGROUND_INTENSITY; break; + case PICoutManipulators::Underline: attr_ |= COMMON_LVB_UNDERSCORE; break; + case PICoutManipulators::Black: attr_ = (attr_ & mask_fore); break; + case PICoutManipulators::Red: attr_ = (attr_ & mask_fore) | FOREGROUND_RED; break; + case PICoutManipulators::Green: attr_ = (attr_ & mask_fore) | FOREGROUND_GREEN; break; + case PICoutManipulators::Blue: attr_ = (attr_ & mask_fore) | FOREGROUND_BLUE; break; + case PICoutManipulators::Yellow: attr_ = (attr_ & mask_fore) | FOREGROUND_RED | FOREGROUND_GREEN; break; + case PICoutManipulators::Magenta: attr_ = (attr_ & mask_fore) | FOREGROUND_RED | FOREGROUND_BLUE; break; + case PICoutManipulators::Cyan: attr_ = (attr_ & mask_fore) | FOREGROUND_GREEN | FOREGROUND_BLUE; break; + case PICoutManipulators::White: attr_ = (attr_ & mask_fore) | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE; break; + case PICoutManipulators::BackBlack: attr_ = (attr_ & mask_back); break; + case PICoutManipulators::BackRed: attr_ = (attr_ & mask_back) | BACKGROUND_RED; break; + case PICoutManipulators::BackGreen: attr_ = (attr_ & mask_back) | BACKGROUND_GREEN; break; + case PICoutManipulators::BackBlue: attr_ = (attr_ & mask_back) | BACKGROUND_BLUE; break; + case PICoutManipulators::BackYellow: attr_ = (attr_ & mask_back) | BACKGROUND_RED | BACKGROUND_GREEN; break; + case PICoutManipulators::BackMagenta: attr_ = (attr_ & mask_back) | BACKGROUND_RED | BACKGROUND_BLUE; break; + case PICoutManipulators::BackCyan: attr_ = (attr_ & mask_back) | BACKGROUND_GREEN | BACKGROUND_BLUE; break; + case PICoutManipulators::BackWhite: attr_ = (attr_ & mask_back) | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE; break; + case PICoutManipulators::Default: attr_ = dattr; break; + default: break; + } + SetConsoleTextAttribute(hOut, attr_); +#else + switch (f) { + case Bin: case Oct: case Dec: case Hex: break; + case PICoutManipulators::Bold: printf("\e[1m"); break; + case PICoutManipulators::Faint: printf("\e[2m"); break; + case PICoutManipulators::Italic: printf("\e[3m"); break; + case PICoutManipulators::Underline: printf("\e[4m"); break; + case PICoutManipulators::Blink: printf("\e[5m"); break; + case PICoutManipulators::Black: printf("\e[30m"); break; + case PICoutManipulators::Red: printf("\e[31m"); break; + case PICoutManipulators::Green: printf("\e[32m"); break; + case PICoutManipulators::Blue: printf("\e[34m"); break; + case PICoutManipulators::Yellow: printf("\e[33m"); break; + case PICoutManipulators::Magenta: printf("\e[35m"); break; + case PICoutManipulators::Cyan: printf("\e[36m"); break; + case PICoutManipulators::White: printf("\e[37m"); break; + case PICoutManipulators::BackBlack: printf("\e[40m"); break; + case PICoutManipulators::BackRed: printf("\e[41m"); break; + case PICoutManipulators::BackGreen: printf("\e[42m"); break; + case PICoutManipulators::BackBlue: printf("\e[44m"); break; + case PICoutManipulators::BackYellow: printf("\e[43m"); break; + case PICoutManipulators::BackMagenta: printf("\e[45m"); break; + case PICoutManipulators::BackCyan: printf("\e[46m"); break; + case PICoutManipulators::BackWhite: printf("\e[47m"); break; + case PICoutManipulators::Default: printf("\e[0m"); break; + default: break; + } +#endif +} + + +bool PICout::setBufferActive(bool on, bool clear) { + PIMutexLocker ml(__PICout_mutex__); + bool ret = PICout::buffer_; + if (clear) __PICout_string__.clear(); + PICout::buffer_ = on; + return ret; +} + + +bool PICout::isBufferActive() { + return PICout::buffer_; +} + + +PIString PICout::buffer(bool clear) { + PIMutexLocker ml(__PICout_mutex__); + PIString ret = __PICout_string__; + if (clear) __PICout_string__.clear(); + return ret; +} + + +void PICout::clearBuffer() { + PIMutexLocker ml(__PICout_mutex__); + __PICout_string__.clear(); +} + + +/*! \class PICout + * \brief Class for formatted output similar std::cout + * + * \section PICout_sec0 Synopsis + * This class provide many stream operators for output with some features. + * Output to PICout is thread-sequential, i.e. doesn`t mixed from parallel + * threads. + * + * \section PICout_sec1 Features + * - insertion spaces between entries + * - insertion new line at the end of output + * - strings are quoted + * - custom output operator can be easily written + * + * \section PICout_ex0 Usage + * \snippet picout.cpp 0 + * + * \section PICout_ex1 Writing your own output operator + * \snippet picout.cpp own + */ + + +/*! \mainpage What is PIP + * PIP - Platform-Independent Primitives - is crossplatform library for C++ developers. + * It is wrap around STL and pure C++. This library can help developers write non-GUI + * projects much more quickly, efficiently and customizable than on pure C++. + * Library contains many classes, some of them are pure abstract, some classes + * can be used as they are, some classes should be inherited to new classes. + * PIP provide classes: + * * direct output to console (\a PICout) + * * containers (\a PIVector, \a PIList, \a PIMap, \a PIStack) + * * byte array (\a PIByteArray) + * * string (\a PIString, \a PIStringList) + * * base object (events and handlers) (\a PIObject) + * * thread (\a PIThread) + * * timer (\a PITimer) + * * console (information output) (\a PIConsole) + * * stand-alone + * * server + * * client + * * i/o devices + * * base class (\a PIIODevice) + * * file (\a PIFile) + * * serial port (\a PISerial) + * * ethernet (\a PIEthernet) + * * USB (\a PIUSB) + * * packets extractor (\a PIPacketExtractor) + * * binary log (\a PIBinaryLog) + * * connection quality diagnotic (\a PIDiagnostics) + * * command-line arguments parser (\a PICLI) + * * math evaluator (\a PIEvaluator) + * * peering net node (\a PIPeer) + * * process (\a PIProcess) + * * state machine (\a PIStateMachine) + * \n \n Basic using of PIP described at page \ref using_basic */ + + +/*! \page using_basic Getting started + * Many novice programmers are solved many common task with system integrity: output to console, + * keyboard buttons press detecting, working with serial ports, ethernet or files, and many other. + * These tasks can solve this library, and code, based only on PIP will be compile and work + * similar on many systems: Windows, any Linux, Red Hat, FreeBSD, MacOS X and QNX. + * Typical application on PIP looks like this: \n +\code{.cpp} +#include + + +// declare key press handler +void key_event(char key, void * ); + + +PIConsole console(false, key_event); // don`t start now, key handler is "key_event" + + +// some vars +int i = 2, j = 3; + + +// implicit key press handler +void key_event(char key, void * ) { + switch (key) { + case '-': + i--; + break; + case '+': + i++; + break; + case '(': + j--; + break; + case ')': + j++; + break; + }; +}; + + +class MainClass: public PITimer { + PIOBJECT(MainClass) +public: + MainClass() {} +protected: + void tick(void * data, int delimiter) { + piCout << "timer tick"; + // timer tick + } +}; + + +MainClass main_class; + + +int main(int argc, char * argv[]) { + // enabling auto-detection of exit button press, by default 'Q' (shift+q) + console.enableExitCapture(); + + // if we want to parse command-line arguments + PICLI cli(argc, argv); + cli.addArgument("console"); // "-c" or "--console" + cli.addArgument("debug"); // "-d" or "--debug" + + // enabling or disabling global debug flag + piDebug = cli.hasArgument("debug"); + + // configure console + console.addTab("first tab", '1'); + console.addString("PIP console", 1, PIConsole::Bold); + console.addVariable("int var (i)", &i, 1); + console.addVariable("int green var (j)", &j, 1, PIConsole::Green); + console.addString("'-' - i--", 2); + console.addString("'+' - i++", 2); + console.addString("'(' - j--", 2); + console.addString("')' - j++", 2); + console.addTab("second tab", '2'); + console.addString("col 1", 1); + console.addString("col 2", 2); + console.addString("col 3", 3); + console.setTab("first tab"); + + // start output to console if "console" argument exists + if (cli.hasArgument("console")) + console.start(); + + // start main class, e.g. 40 Hz + main_class.start(25.); + + // wait for 'Q' press, independently if console is started or not + console.waitForFinish(); + + return 0; +}; +\endcode + * This code demonstrates simple interactive configurable program, which can be started with console + * display or not, and with debug or not. \b MainClass is central class that also can be inherited from + * \a PIThread and reimplement \a run() function. + * \n Many PIP classes has events and event handlers, which can be connected one to another. + * Details you can see at \a PIObject reference page (\ref PIObject_sec0). + * \n To configure your program from file use \a PIConfig. + * \n If you want more information see \ref using_advanced */ + + +/*! \page using_advanced Advanced using + * Sorry, creativity crisis xD + */ diff --git a/_oldpip/pip_0.4.0_r5/piincludes.h b/_oldpip/pip_0.4.0_r5/piincludes.h new file mode 100644 index 0000000..58005cd --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/piincludes.h @@ -0,0 +1,978 @@ +/*! \file piincludes.h + * \brief Global includes of PIP + * + * This file include all needed system headers, STL + * and declare many useful macros and functions +*/ +/* + PIP - Platform Independent Primitives + Global includes + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +#ifndef PIINCLUDES_H +#define PIINCLUDES_H + +//! Version of PIP in hex - 0x##(Major)##(Minor)##(Revision) +#define PIP_VERSION 0x000400 + +//! Major value of PIP version +#define PIP_VERSION_MAJOR (PIP_VERSION & 0xFF0000) >> 16 + +//! Minor value of PIP version +#define PIP_VERSION_MINOR (PIP_VERSION & 0xFF00) >> 8 + +//! Revision value of PIP version +#define PIP_VERSION_REVISION PIP_VERSION & 0xFF + +//! Suffix of PIP version +#define PIP_VERSION_SUFFIX "_r5" + +#ifdef DOXYGEN + +//! Macro is defined when compile-time debug is enabled +# define PIP_DEBUG + +//! Macro is defined when host is any Windows +# define WINDOWS + +//! Macro is defined when host is QNX +# define QNX + +//! Macro is defined when host is FreeBSD +# define FREE_BSD + +//! Macro is defined when host is Mac OS +# define MAC_OS + +//! Macro is defined when host is Android +# define ANDROID + +//! Macro is defined when host is any Linux +# define LINUX + +//! Macro is defined when compiler is GCC or MinGW +# define CC_GCC + +//! Macro is defined when PIP is decided that host is support language +# define HAS_LOCALE + +//! Macro is defined when compiler is Visual Studio +# define CC_VC + +//! Macro is defined when compiler is unknown +# define CC_OTHER + +//! Macro is defined when PIP use "rt" library for timers implementation +# define PIP_TIMER_RT + +//! Define this macro to use STL implementation of containers, else PIP implementation will be used +# define PIP_CONTAINERS_STL + +#endif + +#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) +# define WINDOWS +# define ARCH_BITS_32 +#endif +#if defined(WIN64) || defined(_WIN64) || defined(__WIN64__) +# define WINDOWS +# define ARCH_BITS_64 +#endif +#if defined(__QNX__) || defined(__QNXNTO__) +# define QNX +#endif +#ifdef __FreeBSD__ +# define FREE_BSD +#endif +#if defined(__APPLE__) || defined(__MACH__) +# define MAC_OS +#endif +#if defined(__ANDROID__) || defined(_ANDROID_) || defined(ANDROID) +# ifndef ANDROID +# define ANDROID +# endif +#endif +#ifndef WINDOWS +# ifndef QNX +# ifndef FREE_BSD +# ifndef MAC_OS +# ifndef ANDROID +# define LINUX +# endif +# endif +# endif +# endif +#endif + +#ifndef WINDOWS +# if defined(__LP64__) || defined(_LP64_) || defined(LP64) +# define ARCH_BITS_64 +# else +# define ARCH_BITS_32 +# endif +#endif + +#ifdef __GNUC__ +# define CC_GCC +# define CC_GCC_VERSION ((__GNUC__ << 8) | __GNUC_MINOR__) +# if CC_GCC_VERSION > 0x025F // > 2.95 +# ifdef LINUX +# define HAS_LOCALE +# endif +# pragma GCC diagnostic ignored "-Wformat" +# pragma GCC diagnostic ignored "-Wformat-extra-args" +# pragma GCC diagnostic ignored "-Wstrict-aliasing" +# endif +# ifdef ANDROID +# pragma GCC diagnostic ignored "-Wunused-parameter" +# pragma GCC diagnostic ignored "-Wextra" +# pragma GCC diagnostic ignored "-Wliteral-suffix" +# endif +# define DEPRECATED __attribute__((deprecated)) +#elif defined(_MSC_VER) +# define CC_VC +# pragma warning(disable: 4018) +# pragma warning(disable: 4061) +# pragma warning(disable: 4100) +# pragma warning(disable: 4239) +# pragma warning(disable: 4242) +# pragma warning(disable: 4244) +# pragma warning(disable: 4251) +# pragma warning(disable: 4365) +# pragma warning(disable: 4512) +# pragma warning(disable: 4668) +# pragma warning(disable: 4710) +# pragma warning(disable: 4800) +# pragma warning(disable: 4820) +# pragma warning(disable: 4986) +# pragma warning(disable: 4996) +# define DEPRECATED +# ifdef ARCH_BITS_32 + typedef long ssize_t; +# else + typedef long long ssize_t; +# endif +#else +# define CC_OTHER +# define DEPRECATED +#endif + +#ifdef WINDOWS +# ifdef CC_GCC +# define typeof __typeof +# endif +#else +# define typeof __typeof__ +#endif + +#include "pip_export.h" +#if defined(DOXYGEN) || defined(CC_GCC) || defined(PICODE) +# undef PIP_EXPORT +# define PIP_EXPORT +#endif +#include +#ifdef CC_GCC +# include +#endif +#include +#include +#ifndef QNX +# include +# include +# include +#else +# include +# include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +//#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#ifdef WINDOWS +# include +# include +# include +# ifdef CC_VC +# define SHUT_RDWR 2 +# pragma comment(lib, "Ws2_32.lib") +# pragma comment(lib, "Iphlpapi.lib") +# else +# define SHUT_RDWR SD_BOTH +# endif +# include +# include +# include + typedef int socklen_t; + typedef void(*PINtSetTimerResolution)(ULONG, BOOLEAN, PULONG); + extern FILETIME __pi_ftjan1970; + extern long long __pi_perf_freq; + extern PINtSetTimerResolution setTimerResolutionAddr; + inline long long __PIQueryPerformanceCounter() {LARGE_INTEGER li; QueryPerformanceCounter(&li); return li.QuadPart;} + inline void __PISetTimerResolution() {if (setTimerResolutionAddr == NULL) return; ULONG ret; setTimerResolutionAddr(1, TRUE, &ret);} +#else +# include +# include +# include +# include +# include +# include +# include +# ifndef ANDROID +# include +# endif +#endif +#ifdef ANDROID +//# include "ifaddrs_3rd.h" +# define tcdrain(fd) ioctl(fd, TCSBRK, 1) + inline int wctomb(char * c, wchar_t w) {*c = ((char * )&w)[0]; return 1;} + inline int mbtowc(wchar_t * w, const char * c, size_t) {*w = ((wchar_t * )&c)[0]; return 1;} +#endif +#ifdef MAC_OS +# include +# include +# include +# include +# define environ (*_NSGetEnviron()) + typedef long time_t; + extern clock_serv_t __pi_mac_clock; +#endif +#ifdef LINUX +# define environ __environ +#endif +#if !defined(WINDOWS) && !defined(MAC_OS) +# define PIP_TIMER_RT +#endif +#ifdef FREE_BSD + extern char ** environ; +#endif +#if defined(DOXYGEN) || defined(PICODE) +# undef PIP_EXPORT +# define PIP_EXPORT +# undef DEPRECATED +# define DEPRECATED +#endif + +#include "pimonitor.h" + +extern PIMonitor piMonitor; + +//! Macro used for infinite loop +#define FOREVER for (;;) + +//! Macro used for infinite wait +#define FOREVER_WAIT FOREVER msleep(1); + +//! Macro used for infinite wait +#define WAIT_FOREVER FOREVER msleep(1); + +typedef long long llong; +typedef unsigned char uchar; +typedef unsigned short int ushort; +typedef unsigned int uint; +typedef unsigned long ulong; +typedef unsigned long long ullong; +typedef long double ldouble; + +using std::cout; +using std::cin; +using std::endl; +using std::flush; +using std::vector; +using std::list; +using std::queue; +using std::deque; +using std::stack; +using std::set; +using std::map; +using std::multimap; +using std::string; +#ifndef QNX + using std::wstring; +#else + typedef std::basic_string wstring; +#endif + +/*! \brief Templated function for swap two values + * \details Example:\n \snippet piincludes.cpp swap */ +template inline void piSwap(T & f, T & s) {T t = f; f = s; s = t;} + +/*! \brief Templated function for swap two values without "=" + * \details Example:\n \snippet piincludes.cpp swapBinary */ +template inline void piSwapBinary(T & f, T & s) { + static size_t j = (sizeof(T) / sizeof(size_t)), bs = j * sizeof(size_t), bf = sizeof(T); + size_t i = 0; + for (i = 0; i < j; ++i) { + ((size_t*)(&f))[i] ^= ((size_t*)(&s))[i]; + ((size_t*)(&s))[i] ^= ((size_t*)(&f))[i]; + ((size_t*)(&f))[i] ^= ((size_t*)(&s))[i]; + } + for (i = bs; i < bf; ++i) { + ((uchar*)(&f))[i] ^= ((uchar*)(&s))[i]; + ((uchar*)(&s))[i] ^= ((uchar*)(&f))[i]; + ((uchar*)(&f))[i] ^= ((uchar*)(&s))[i]; + } +} + +/*! \brief Templated function return round of float falue + * \details Round is the nearest integer value \n + * There are some macros: + * - \c piRoundf for "float" + * - \c piRoundd for "double" + * + * Example: + * \snippet piincludes.cpp round */ +template inline int piRound(const T & v) {return int(v >= T(0.) ? v + T(0.5) : v - T(0.5));} + +/*! \brief Templated function return floor of float falue + * \details Floor is the largest integer that is not greater than value \n + * There are some macros: + * - \c piFloorf for "float" + * - \c piFloord for "double" + * + * Example: + * \snippet piincludes.cpp floor */ +template inline int piFloor(const T & v) {return v < T(0) ? int(v) - 1 : int(v);} + +/*! \brief Templated function return ceil of float falue + * \details Ceil is the smallest integer that is not less than value \n + * There are some macros: + * - \c piCeilf for "float" + * - \c piCeild for "double" + * + * Example: + * \snippet piincludes.cpp ceil */ +template inline int piCeil(const T & v) {return v < T(0) ? int(v) : int(v) + 1;} + +/*! \brief Templated function return absolute of numeric falue + * \details Absolute is the positive or equal 0 value \n + * There are some macros: + * - \c piAbss for "short" + * - \c piAbsi for "int" + * - \c piAbsl for "long" + * - \c piAbsll for "llong" + * - \c piAbsf for "float" + * - \c piAbsd for "double" + * + * Example: + * \snippet piincludes.cpp abs */ +template inline T piAbs(const T & v) {return (v >= T(0) ? v : -v);} + +/*! \brief Templated function return minimum of two values + * \details There are some macros: + * - \c piMins for "short" + * - \c piMini for "int" + * - \c piMinl for "long" + * - \c piMinll for "llong" + * - \c piMinf for "float" + * - \c piMind for "double" + * + * Example: + * \snippet piincludes.cpp min2 */ +template inline T piMin(const T & f, const T & s) {return ((f > s) ? s : f);} + +/*! \brief Templated function return minimum of tree values + * \details There are some macros: + * - \c piMins for "short" + * - \c piMini for "int" + * - \c piMinl for "long" + * - \c piMinll for "llong" + * - \c piMinf for "float" + * - \c piMind for "double" + * + * Example: + * \snippet piincludes.cpp min3 */ +template inline T piMin(const T & f, const T & s, const T & t) {return ((f < s && f < t) ? f : ((s < t) ? s : t));} + +/*! \brief Templated function return maximum of two values + * \details There are some macros: + * - \c piMaxs for "short" + * - \c piMaxi for "int" + * - \c piMaxl for "long" + * - \c piMaxll for "llong" + * - \c piMaxf for "float" + * - \c piMaxd for "double" + * + * Example: + * \snippet piincludes.cpp max2 */ +template inline T piMax(const T & f, const T & s) {return ((f < s) ? s : f);} + +/*! \brief Templated function return maximum of tree values + * \details There are some macros: + * - \c piMaxs for "short" + * - \c piMaxi for "int" + * - \c piMaxl for "long" + * - \c piMaxll for "llong" + * - \c piMaxf for "float" + * - \c piMaxd for "double" + * + * Example: + * \snippet piincludes.cpp max3 */ +template inline T piMax(const T & f, const T & s, const T & t) {return ((f > s && f > t) ? f : ((s > t) ? s : t));} + +/*! \brief Templated function return clamped value + * \details Clamped is the not greater than "max" and not lesser than "min" value \n + * There are some macros: + * - \c piClamps for "short" + * - \c piClampi for "int" + * - \c piClampl for "long" + * - \c piClampll for "llong" + * - \c piClampf for "float" + * - \c piClampd for "double" + * + * Example: + * \snippet piincludes.cpp clamp */ +template inline T piClamp(const T & v, const T & min, const T & max) {return (v > max ? max : (v < min ? min : v));} + +/// Function inverse byte order in memory block +inline void piLetobe(void * data, int size) { + for (int i = 0; i < size / 2; i++) + piSwap(((uchar*)data)[size - i - 1], ((uchar*)data)[i]); +} + +/// \brief Templated function that inverse byte order of value "v" +template inline void piLetobe(T * v) {piLetobe(v, sizeof(T));} + +/*! \brief Templated function that returns "v" with inversed byte order + * \details This function used to convert values between little and big endian \n + * There are some macros: + * - \c piLetobes for "ushort" + * - \c piLetobei for "uint" + * - \c piLetobel for "ulong" + * - \c piLetobell for "ullong" + * + * Example: + * \snippet piincludes.cpp letobe */ +template inline T piLetobe(const T & v) {T tv(v); piLetobe(&tv, sizeof(T)); return tv;} + +// specialization +template<> inline ushort piLetobe(const ushort & v) {return (v << 8) | (v >> 8);} +template<> inline uint piLetobe(const uint & v) {return (v >> 24) | ((v >> 8) & 0xFF00) | ((v << 8) & 0xFF0000) | ((v << 24) & 0xFF000000);} + +DEPRECATED inline ushort letobe_s(const ushort & v) {return (v << 8) | (v >> 8);} +DEPRECATED inline uint letobe_i(const uint & v) {return (v >> 24) | ((v >> 8) & 0xFF00) | ((v << 8) & 0xFF0000) | ((v << 24) & 0xFF000000);} + +#ifdef DOXYGEN + +/// \deprecated \brief Use \a piLetobe() instead of this function +ushort letobe_s(ushort v) {return (v << 8) | (v >> 8);} + +/// \deprecated \brief Use \a piLetobe() instead of this function +uint letobe_i(uint v) {return (v >> 24) | ((v >> 8) & 0xFF00) | ((v << 8) & 0xFF0000) | ((v << 24) & 0xFF000000);} + +#endif + +#define piRoundf piRound +#define piRoundd piRound +#define piFloorf piFloor +#define piFloord piFloor +#define piCeilf piCeil +#define piCeild piCeil +#define piAbss piAbs +#define piAbsi piAbs +#define piAbsl piAbs +#define piAbsll piAbs +#define piAbsf piAbs +#define piAbsd piAbs +#define piMins piMin +#define piMini piMin +#define piMinl piMin +#define piMinll piMin +#define piMinf piMin +#define piMind piMin +#define piMaxs piMax +#define piMaxi piMax +#define piMaxl piMax +#define piMaxll piMax +#define piMaxf piMax +#define piMaxd piMax +#define piClamps piClamp +#define piClampi piClamp +#define piClampl piClamp +#define piClampll piClamp +#define piClampf piClamp +#define piClampd piClamp +#define piLetobes piLetobe +#define piLetobei piLetobe +#define piLetobel piLetobe +#define piLetobell piLetobe + +extern bool isPIInit; + +//! global variable enabling output to piCout +extern PIP_EXPORT bool piDebug; + +extern string ifconfigPath; + +class PIInit { +public: + PIInit(); + ~PIInit(); +private: + bool fileExists(const string & p) {FILE * f = fopen(p.c_str(), "r"); if (f == 0) return false; fclose(f); return true;} +#ifdef WINDOWS + HMODULE ntlib; + ULONG prev_res; +#endif +}; + +extern PIInit piInit; +extern lconv * currentLocale; + +#ifdef WINDOWS +inline int random() {return rand();} +# ifdef CC_VC +inline double round(const double & v) {return floor(v + 0.5);} +# endif +#endif +inline bool atob(const string & str) {return str == "1" ? true : false;} +inline string btos(const bool num) {return num ? "0" : "1";} +inline string itos(const int num) { + char ch[256]; +#ifndef CC_VC + sprintf(ch, "%d", num); +#else + sprintf_s(ch, 256, "%d", num); +#endif + return string(ch);} +inline string ltos(const long num) { + char ch[256]; +#ifndef CC_VC + sprintf(ch, "%ld", num); +#else + sprintf_s(ch, 256, "%ld", num); +#endif + return string(ch);} +inline string uitos(const uint num) { + char ch[256]; +#ifndef CC_VC + sprintf(ch, "%u", num); +#else + sprintf_s(ch, 256, "%u", num); +#endif + return string(ch);} +inline string ultos(const ulong num) { + char ch[256]; +#ifndef CC_VC + sprintf(ch, "%lu", num); +#else + sprintf_s(ch, 256, "%lu", num); +#endif + return string(ch);} +inline string ftos(const float num) { + char ch[256]; +#ifndef CC_VC + sprintf(ch, "%g", num); +#else + sprintf_s(ch, 256, "%g", num); +#endif + return string(ch);} +inline string dtos(const double num) { + char ch[256]; +#ifndef CC_VC + sprintf(ch, "%g", num); +#else + sprintf_s(ch, 256, "%g", num); +#endif + return string(ch);} + +/*! \fn errorString() + * \brief Return readable error description in format "code - " */ +#ifdef WINDOWS +inline void errorClear() {SetLastError(0);} +inline string errorString() { + char * msg; + int err = GetLastError(); + FormatMessageA(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, err, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPSTR)&msg, 0, NULL); + return "code " + itos(err) + " - " + string(msg); +} +#else +inline void errorClear() {errno = 0;} +inline string errorString() {int e = errno; return "code " + itos(e) + " - " + string(strerror(e));} +#endif + +/// Return readable version of PIP +inline string PIPVersion() {return itos(PIP_VERSION_MAJOR) + "." + itos(PIP_VERSION_MINOR) + "." + itos(PIP_VERSION_REVISION) + PIP_VERSION_SUFFIX;} + +/*! \brief This class used as container for bit flags + * \details PIFlags is wrapper around \c "int". There are many + * bit-wise operators, native conversion to int and function + * to test flag. \n Example: + * \snippet piincludes.cpp flags + */ +template +class PIP_EXPORT PIFlags { +public: + //! Constructor with flags = 0 + PIFlags(): flags(0) {;} + //! Constructor with flags = Enum "e" + PIFlags(Enum e): flags(e) {;} + //! Constructor with flags = PIFlags "f" + PIFlags(const PIFlags & f): flags(f.flags) {;} + //! Constructor with flags = int "i" + PIFlags(const int i): flags(i) {;} + //! Set flags "f" to value "on" + PIFlags & setFlag(const PIFlags & f, bool on = true) {if (on) flags |= f.flags; else flags &= ~f.flags; return *this;} + //! Set flag "e" to value "on" + PIFlags & setFlag(const Enum & e, bool on = true) {if (on) flags |= e; else flags &= ~e; return *this;} + //! Set flag "i" to value "on" + PIFlags & setFlag(const int & i, bool on = true) {if (on) flags |= i; else flags &= ~i; return *this;} + //! copy operator + void operator =(const PIFlags & f) {flags = f.flags;} + //! copy operator + void operator =(const Enum & e) {flags = e;} + //! copy operator + void operator =(const int & i) {flags = i;} + //! compare operator + void operator ==(const PIFlags & f) {flags == f.flags;} + //! compare operator + void operator ==(const Enum & e) {flags == e;} + //! compare operator + void operator ==(const int i) {flags == i;} + //! compare operator + void operator !=(const PIFlags & f) {flags != f.flags;} + //! compare operator + void operator !=(const Enum & e) {flags != e;} + //! compare operator + void operator !=(const int i) {flags != i;} + //! compare operator + void operator >(const PIFlags & f) {flags > f.flags;} + //! compare operator + void operator >(const Enum & e) {flags > e;} + //! compare operator + void operator >(const int i) {flags > i;} + //! compare operator + void operator <(const PIFlags & f) {flags < f.flags;} + //! compare operator + void operator <(const Enum & e) {flags < e;} + //! compare operator + void operator <(const int i) {flags < i;} + //! compare operator + void operator >=(const PIFlags & f) {flags >= f.flags;} + //! compare operator + void operator >=(const Enum & e) {flags >= e;} + //! compare operator + void operator >=(const int i) {flags >= i;} + //! compare operator + void operator <=(const PIFlags & f) {flags <= f.flags;} + //! compare operator + void operator <=(const Enum & e) {flags <= e;} + //! compare operator + void operator <=(const int i) {flags <= i;} + //! Bit-wise AND operator + void operator &=(const PIFlags & f) {flags &= f.flags;} + //! Bit-wise AND operator + void operator &=(const Enum & e) {flags &= e;} + //! Bit-wise AND operator + void operator &=(const int i) {flags &= i;} + //! Bit-wise OR operator + void operator |=(const PIFlags & f) {flags |= f.flags;} + //! Bit-wise OR operator + void operator |=(const Enum & e) {flags |= e;} + //! Bit-wise OR operator + void operator |=(const int i) {flags |= i;} + //! Bit-wise XOR operator + void operator ^=(const PIFlags & f) {flags ^= f.flags;} + //! Bit-wise XOR operator + void operator ^=(const Enum & e) {flags ^= e;} + //! Bit-wise XOR operator + void operator ^=(const int i) {flags ^= i;} + //! Bit-wise AND operator + PIFlags operator &(PIFlags f) const {PIFlags tf(flags & f.flags); return tf;} + //! Bit-wise AND operator + PIFlags operator &(Enum e) const {PIFlags tf(flags & e); return tf;} + //! Bit-wise AND operator + PIFlags operator &(int i) const {PIFlags tf(flags & i); return tf;} + //! Bit-wise OR operator + PIFlags operator |(PIFlags f) const {PIFlags tf(flags | f.flags); return tf;} + //! Bit-wise OR operator + PIFlags operator |(Enum e) const {PIFlags tf(flags | e); return tf;} + //! Bit-wise OR operator + PIFlags operator |(int i) const {PIFlags tf(flags | i); return tf;} + //! Bit-wise XOR operator + PIFlags operator ^(PIFlags f) const {PIFlags tf(flags ^ f.flags); return tf;} + //! Bit-wise XOR operator + PIFlags operator ^(Enum e) const {PIFlags tf(flags ^ e); return tf;} + //! Bit-wise XOR operator + PIFlags operator ^(int i) const {PIFlags tf(flags ^ i); return tf;} + //! Test flag operator + bool operator [](Enum e) const {return (flags & e) == e;} + //! Implicity conversion to \c int + operator int() const {return flags;} +private: + int flags; +}; + +#ifdef DOXYGEN + +//! \brief Macro used for conditional (piDebug) output to PICout +# define piCout + +//! \relatesalso PIObject \brief Macro used for conditional (piDebug and PIObject::debug()) output to PICout for subclasses of PIObject +# define piCoutObj + +#else +# define piCout if (piDebug) PICout() +# define piCoutObj if (piDebug && debug()) PICout() << "" << (PIString("[") + className() + " \"" + name() + "\"]") +#endif + +class PIObject; +class PIMutex; +class PIString; + +extern PIMutex __PICout_mutex__; +extern PIString __PICout_string__; + +//! \brief Namespace contains enums controlled PICout +namespace PICoutManipulators { + + //! \brief Enum contains special characters + enum PIP_EXPORT PICoutSpecialChar { + Null /*! Null-character, '\\0' */, + NewLine /*! New line character, '\\n' */, + Tab /*! Tab character, '\\t' */, + Esc /*! Escape character, '\\e' */, + Quote /*! Quote character, '"' */ + }; + + //! \brief Enum contains immediate action + enum PIP_EXPORT PICoutAction { + Flush /*! Flush the output */, + Backspace /*! Remove last symbol */, + ShowCursor /*! Show cursor */, + HideCursor /*! Hide cursor */, + ClearScreen /*! Clear the screen */, + SaveContol /*! Save control flags, equivalent to \a saveControl() */, + RestoreControl /*! Restore control flags, equivalent to \a restoreControl() */ + }; + + //! \brief Enum contains control of PICout + enum PIP_EXPORT PICoutControl { + AddNone /*! No controls */ = 0x0, + AddSpaces /*! Spaces will be appear after each output */ = 0x1, + AddNewLine /*! New line will be appear after all output */ = 0x2, + AddQuotes /*! Each string will be quoted */ = 0x4, + AddAll /*! All controls */ = 0xFFFFFFFF + }; + + //! \brief Enum contains output format + enum PIP_EXPORT PICoutFormat { + Bin /*! Binary representation of integers */ = 0x01, + Oct /*! Octal representation of integers */ = 0x02, + Dec /*! Decimal representation of integers */ = 0x04, + Hex /*! Hexadecimal representation of integers */ = 0x08, + Bold /*! Bold */ = 0x10, + Faint /*! */ = 0x20, + Italic /*! */ = 0x40, + Underline /*! Underline */ = 0x80, + Blink /*! Blink */ = 0x100, + Black /*! Black font */ = 0x400, + Red /*! Red font */ = 0x800, + Green /*! Green font */ = 0x1000, + Blue /*! Blue font */ = 0x2000, + Yellow /*! Yellow font */ = 0x4000, + Magenta /*! Magenta font */ = 0x8000, + Cyan /*! Cyan font */ = 0x10000, + White /*! White font */ = 0x20000, + BackBlack /*! Black background */ = 0x40000, + BackRed /*! Red background */ = 0x80000, + BackGreen /*! Green background */ = 0x100000, + BackBlue /*! Blue background */ = 0x200000, + BackYellow /*! Yellow background */ = 0x400000, + BackMagenta /*! Magenta background */ = 0x800000, + BackCyan /*! Cyan background */ = 0x1000000, + BackWhite /*! White background */ = 0x2000000, + Default /*! Default format */ = 0x4000000 + }; +}; + +using namespace PICoutManipulators; + +typedef PIFlags PICoutControls; + +class PIP_EXPORT PICout { +public: + //! Default constructor with default features (AddSpaces and AddNewLine) + PICout(PIFlags controls = AddSpaces | AddNewLine); + + PICout(const PICout & other): fo_(other.fo_), cc_(true), fc_(false), cnb_(other.cnb_), attr_(other.attr_), co_(other.co_) {;} + ~PICout(); + + //! Output operator for strings with "const char * " type + PICout operator <<(const char * v); + + //! Output operator for strings with "std::string" type + PICout operator <<(const string & v); + + //! Output operator for boolean values + PICout operator <<(const bool v); + + //! Output operator for "char" values + PICout operator <<(const char v); + + //! Output operator for "unsigned char" values + PICout operator <<(const uchar v); + + //! Output operator for "short" values + PICout operator <<(const short v); + + //! Output operator for "unsigned short" values + PICout operator <<(const ushort v); + + //! Output operator for "int" values + PICout operator <<(const int v); + + //! Output operator for "unsigned int" values + PICout operator <<(const uint v); + + //! Output operator for "long" values + PICout operator <<(const long v); + + //! Output operator for "unsigned long" values + PICout operator <<(const ulong v); + + //! Output operator for "long long" values + PICout operator <<(const llong v); + + //! Output operator for "unsigned long long" values + PICout operator <<(const ullong v); + + //! Output operator for "float" values + PICout operator <<(const float v); + + //! Output operator for "double" values + PICout operator <<(const double v); + + //! Output operator for pointers + PICout operator <<(const void * v); + + //! Output operator for PIObject and ancestors + PICout operator <<(const PIObject * v); + + //! Output operator for \a PICoutSpecialChar values + PICout operator <<(const PICoutSpecialChar v); + + //! Output operator for \a PIFlags values + PICout operator <<(const PIFlags v) { + if (v[Bin]) cnb_ = 2; + if (v[Oct]) cnb_ = 8; + if (v[Dec]) cnb_ = 10; + if (v[Hex]) cnb_ = 16; + if (v[Bold]) applyFormat(Bold); + if (v[Faint]) applyFormat(Faint); + if (v[Italic]) applyFormat(Italic); + if (v[Underline]) applyFormat(Underline); + if (v[Blink]) applyFormat(Blink); + if (v[Black]) applyFormat(Black); + if (v[Red]) applyFormat(Red); + if (v[Green]) applyFormat(Green); + if (v[Blue]) applyFormat(Blue); + if (v[Yellow]) applyFormat(Yellow); + if (v[Magenta]) applyFormat(Magenta); + if (v[Cyan]) applyFormat(Cyan); + if (v[White]) applyFormat(White); + if (v[BackBlack]) applyFormat(BackBlack); + if (v[BackRed]) applyFormat(BackRed); + if (v[BackGreen]) applyFormat(BackGreen); + if (v[BackBlue]) applyFormat(BackBlue); + if (v[BackYellow]) applyFormat(BackYellow); + if (v[BackMagenta]) applyFormat(BackMagenta); + if (v[BackCyan]) applyFormat(BackCyan); + if (v[BackWhite]) applyFormat(BackWhite); + if (v[Default]) applyFormat(Default); + return *this; + } + + //! Output operator for \a PICoutFormat values + PICout operator <<(const PICoutFormat v) { + switch (v) { + case Bin: cnb_ = 2; break; + case Oct: cnb_ = 8; break; + case Dec: cnb_ = 10; break; + case Hex: cnb_ = 16; break; + default: applyFormat(v); + }; + return *this; + } + + //! Do some action + PICout operator <<(const PICoutAction v); + + //! Set control flag "c" is "on" state + PICout & setControl(PICoutControl c, bool on = true) {co_.setFlag(c, on); return *this;} + + //! Set control flags "c" and if "save" exec \a saveControl() + PICout & setControl(PICoutControls c, bool save = false) {if (save) saveControl(); co_ = c; return *this;} + + //! Save control flags to internal stack \sa \a restoreControl() + PICout & saveControl() {cos_.push(co_); return *this;} + + //! Restore control flags from internal stack \sa \a saveControl() + PICout & restoreControl() {if (!cos_.empty()) {co_ = cos_.top(); cos_.pop();} return *this;} + + /*! \brief Conditional put space character to output + * \details If it is not a first output and control \a AddSpaces is set + * space character is put \sa \a quote(), \a newLine() */ + PICout & space(); + + /*! \brief Conditional put quote character to output + * \details If control \a AddQuotes is set + * quote character is put \sa \a space(), \a newLine() */ + PICout & quote(); + + /*! \brief Conditional put new line character to output + * \details If control \a AddNewLine is set + * new line character is put \sa \a space(), \a quote() */ + PICout & newLine(); + + static bool setBufferActive(bool on, bool clear = false); + static bool isBufferActive(); + static PIString buffer(bool clear = false); + static void clearBuffer(); + +private: + void applyFormat(PICoutFormat f); + + static bool buffer_; + bool fo_, cc_, fc_; + int cnb_, attr_; + PICoutControls co_; + std::stack cos_; +#ifdef WINDOWS + static void * hOut; + static WORD dattr; + static DWORD smode; +#endif +}; + +#endif // PIINCLUDES_H diff --git a/_oldpip/pip_0.4.0_r5/piiodevice.cpp b/_oldpip/pip_0.4.0_r5/piiodevice.cpp new file mode 100644 index 0000000..8b01cd8 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/piiodevice.cpp @@ -0,0 +1,292 @@ +/* + PIP - Platform Independent Primitives + Abstract input/output device + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +#include "piiodevice.h" +#include "piconfig.h" + + +/*! \class PIIODevice + * \brief Base class for input/output classes + * + * \section PIIODevice_sec0 Synopsis + * This class provide open/close logic, threaded read/write and virtual input/output + * functions \a read() and \a write(). You should implement pure virtual + * function \a openDevice() in your subclass. + * + * \section PIIODevice_sec1 Open and close + * PIIODevice have boolean variable indicated open status. Returns of functions + * \a openDevice() and \a closeDevice() change this variable. + * + * \section PIIODevice_sec2 Threaded read + * PIIODevice based on PIThread, so it`s overload \a run() to exec \a read() + * in background thread. If read is successful virtual function \a threadedRead() + * is executed. Default implementation of this function execute external static + * function set by \a setThreadedReadSlot() with data set by \a setThreadedReadData(). + * Extrenal static function should have format \n + * bool func_name(void * Threaded_read_data, uchar * readed_data, int readed_size)\n + * Threaded read starts with function \a startThreadedRead(). + * + * \section PIIODevice_sec3 Threaded write + * PIIODevice aggregate another PIThread to perform a threaded write by function + * \a writeThreaded(). This function add task to internal queue and return + * queue entry ID. You should start write thread by function \a startThreadedWrite. + * On successful write event \a threadedWriteEvent is raised with two arguments - + * task ID and written bytes count. + * + * \section PIIODevice_sec4 Internal buffer + * PIIODevice have internal buffer for threaded read, and \a threadedRead() function + * receive pointer to this buffer in first argument. You can adjust size of this buffer + * by function \a setThreadedReadBufferSize() \n + * Default size of this buffer is 4096 bytes. + * + * \section PIIODevice_sec5 Reopen + * When threaded read is begin its call \a open() if device is closed. While threaded + * read running PIIODevice check if device opened every read and if not call \a open() + * every reopen timeout if reopen enabled. Reopen timeout is set by \a setReopenTimeout(), + * reopen enable is set by \a setReopenEnabled(). + * + * \section PIIODevice_sec6 Configuration + * This is virtual function \a configureDevice() which executes when \a configure() + * executes. This function takes two arguments: "e_main" and "e_parent" as void*. There + * are pointers to PIConfig::Entry entries of section "section" and their parent. If + * there is no parent "e_parent" = 0. Function \a configure() set three parameters of + * device: "reopenEnabled", "reopenTimeout" and "threadedReadBufferSize", then execute + * function \a configureDevice(). + * \n Each ancestor of %PIIODevice reimlements \a configureDevice() function to be able + * to be confured from configuration file. This parameters described at section + * "Configurable parameters" in the class reference. \n Usage example: + * \snippet piiodevice.cpp configure + * Implementation example: + * \snippet piiodevice.cpp configureDevice + * + * \section PIIODevice_sec7 Creating devices by unambiguous string + * There are some virtual functions to describe child class without its declaration. + * \n \a fullPathPrefix() should returns unique prefix of device + * \n \a constructFullPath() should returns full unambiguous string, contains prefix and all device parameters + * \n \a configureFromFullPath() provide configuring device from full unambiguous string without prefix and "://" + * \n Macro PIIODEVICE should be used instead of PIOBJECT + * \n Macro REGISTER_DEVICE should be used after definition of class, i.e. at the last line of *.cpp file + * \n \n If custom I/O device corresponds there rules, it can be returned by function \a createFromFullPath(). + * \n Each PIP I/O device has custom unambiguous string description: + * * PIFile: "file://" + * * PIBinaryLog: "binlog://[:][:]" + * * PISerial: "ser://:[:][:][:]" + * * PIEthernet: "eth://::[:)>]" + * * PIUSB: "usb://:[:][:][:]" + * \n \n Examples: + * * PIFile: "file://../text.txt" + * * PIBinaryLog: "binlog://../logs/:mylog_:1" + * * PISerial: "ser:///dev/ttyUSB0:9600:8:N:1", equivalent "ser:///dev/ttyUSB0:9600" + * * PIEthernet: "eth://TCP:127.0.0.1:16666", "eth://UDP:192.168.0.5:16666:mcast:234.0.2.1:mcast:234.0.2.2" + * * PIUSB: "usb://0bb4:0c86:1:1:2" + * \n \n + * So, custom I/O device can be created with next call: + * \code{cpp} + * // creatring devices + * PISerial * ser = (PISerial * )PIIODevice::createFromFullPath("ser://COM1:115200"); + * PIEthernet * eth = (PIEthernet * )PIIODevice::createFromFullPath("eth://UDP:127.0.0.1:4001"); + * // examine devices + * piCout << ser << ser->properties(); + * piCout << eth << eth->properties(); + * \endcode + * + * \section PIIODevice_ex0 Example + * \snippet piiodevice.cpp 0 + */ + + +PIIODevice::PIIODevice(): PIThread() { + mode_ = ReadOnly; + _init(); + setPath(PIString()); +} + + +/*! \brief Constructs a PIIODevice with path and mode + * \param path path to device + * \param type mode for open */ +PIIODevice::PIIODevice(const PIString & path, PIIODevice::DeviceMode mode): PIThread() { + mode_ = mode; + _init(); + setPath(path); +} + + +PIIODevice::~PIIODevice() { + stop(); + if (opened_) { + closeDevice(); + if (!opened_) + closed(); + } +} + + +void PIIODevice::_init() { + opened_ = init_ = thread_started_ = false; + raise_threaded_read_ = true; + ret_func_ = 0; + ret_data_ = 0; + tri = 0; + setReopenEnabled(true); + setReopenTimeout(1000); + setThreadedReadBufferSize(4096); + CONNECT2(void, void * , int, &timer, timeout, this, check_start); + CONNECT(void, &write_thread, started, this, write_func); +} + + +void PIIODevice::check_start(void * data, int delim) { + //cout << "check " << tread_started_ << endl; + if (open()) { + thread_started_ = true; + timer.stop(); + } +} + + +void PIIODevice::write_func() { + while (!write_thread.isStopping()) { + while (!write_queue.isEmpty()) { + if (write_thread.isStopping()) return; + write_thread.lock(); + PIPair item(write_queue.dequeue()); + write_thread.unlock(); + int ret = write(item.first); + threadedWriteEvent(item.second, ret); + } + msleep(1); + } +} + + +void PIIODevice::terminate() { + thread_started_ = false; + if (!isInitialized()) return; + if (isRunning()) { + stop(); + PIThread::terminate(); + } +} + + +void PIIODevice::begin() { + //cout << " begin\n"; + thread_started_ = false; + if (!opened_) { + if (open()) { + thread_started_ = true; + //cout << " open && ok\n"; + return; + } + } else { + thread_started_ = true; + //cout << " ok\n"; + return; + } + //init(); + if (!timer.isRunning() && isReopenEnabled()) timer.start(reopenTimeout()); +} + + +void PIIODevice::run() { + if (!isReadable()) { + //cout << "not readable\n"; + PIThread::stop(); + return; + } + if (!thread_started_) { + msleep(1); + //cout << "not started\n"; + return; + } + readed_ = read(buffer_tr.data(), buffer_tr.size_s()); + if (readed_ <= 0) { + msleep(10); + //cout << readed_ << ", " << errno << ", " << errorString() << endl; + return; + } + threadedRead(buffer_tr.data(), readed_); + if (raise_threaded_read_) threadedReadEvent(buffer_tr.data(), readed_); +} + + +PIByteArray PIIODevice::readForTime(double timeout_ms) { + PIByteArray str; + if (timeout_ms <= 0.) return str; + int ret; + uchar * td = new uchar[threadedReadBufferSize()]; + timer.reset(); + while (timer.elapsed_m() < timeout_ms) { + ret = read(td, threadedReadBufferSize()); + if (ret <= 0) msleep(1); + else str.append(td, ret); + } + delete td; + return str; +} + + +ullong PIIODevice::writeThreaded(const PIByteArray & data) { + write_thread.lock(); + write_queue.enqueue(PIPair(data, tri)); + ++tri; + write_thread.unlock(); + return tri - 1; +} + + +bool PIIODevice::configure(const PIString & config_file, const PIString & section, bool parent_section) { + PIConfig conf(config_file, PIIODevice::ReadOnly); + if (!conf.isOpened()) return false; + bool ex = true; + PIConfig::Entry em; + if (section.isEmpty()) em = conf.rootEntry(); + else em = conf.getValue(section, PIString(), &ex); + if (!ex) return false; + PIConfig::Entry * ep = 0; + if (parent_section) ep = em.parent(); + if (ep != 0) { + setReopenEnabled(ep->getValue("reopenEnabled", isReopenEnabled(), &ex)); + if (!ex) setReopenEnabled(em.getValue("reopenEnabled", isReopenEnabled())); + setReopenTimeout(ep->getValue("reopenTimeout", reopenTimeout(), &ex)); + if (!ex) setReopenTimeout(em.getValue("reopenTimeout", reopenTimeout())); + setThreadedReadBufferSize(ep->getValue("threadedReadBufferSize", buffer_tr.size_s(), &ex)); + if (!ex) setThreadedReadBufferSize(em.getValue("threadedReadBufferSize", buffer_tr.size_s())); + } else { + setReopenEnabled(em.getValue("reopenEnabled", isReopenEnabled())); + setReopenTimeout(em.getValue("reopenTimeout", reopenTimeout())); + setThreadedReadBufferSize(em.getValue("threadedReadBufferSize", buffer_tr.size_s())); + } + return configureDevice(&em, ep); +} + + +PIIODevice * PIIODevice::createFromFullPath(const PIString & full_path) { + PIString prefix = full_path.left(full_path.find(":")); + if (prefix.isEmpty()) return 0; + PIVector rd(PICollection::groupElements("__PIIODevices__")); + piForeachC (PIObject * d, rd) + if (prefix == ((const PIIODevice * )d)->fullPathPrefix()) { + PIIODevice * nd = ((const PIIODevice * )d)->copy(); + if (nd) nd->configureFromFullPath(full_path.mid(prefix.length() + 3)); + return nd; + } + return 0; +} diff --git a/_oldpip/pip_0.4.0_r5/piiodevice.h b/_oldpip/pip_0.4.0_r5/piiodevice.h new file mode 100644 index 0000000..33d536e --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/piiodevice.h @@ -0,0 +1,329 @@ +/*! \file piiodevice.h + * \brief Abstract input/output device +*/ +/* + PIP - Platform Independent Primitives + Abstract input/output device + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +#ifndef PIIODEVICE_H +#define PIIODEVICE_H + +#include "picollection.h" +#include "pivariant.h" +#include "pitimer.h" + +// function executed from threaded read, pass ThreadedReadData, readedData, sizeOfData +typedef bool (*ReadRetFunc)(void * , uchar * , int ); + +#ifdef DOXYGEN + +//! \relatesalso PIIODevice \brief Use this macro to enable automatic creation instances of your class with \a createFromFullPath() function +# define REGISTER_DEVICE(class) + +//! \relatesalso PIIODevice \brief Use this macro instead of PIOBJECT when describe your own PIIODevice +# define PIIODEVICE(class) + +#else + +# define REGISTER_DEVICE(class) ADD_NEW_TO_COLLECTION(__PIIODevices__, class) +# define PIIODEVICE(class) PIOBJECT(class) PIIODevice * copy() const {return new class();} + +#endif + +class PIP_EXPORT PIIODevice: public PIThread +{ + PIOBJECT(PIIODevice) +public: + + //! Constructs a empty PIIODevice + PIIODevice(); + + //! \brief Open modes for PIIODevice + enum DeviceMode { + ReadOnly /*! Device can only read */ = 0x01, + WriteOnly /*! Device can only write */ = 0x02, + ReadWrite /*! Device can both read and write */ = 0x03 + }; + + PIIODevice(const PIString & path, DeviceMode mode = ReadWrite); + virtual ~PIIODevice(); + + //! Current open mode of device + DeviceMode mode() const {return mode_;} + + //! Current path of device + PIString path() const {return property("path").toString();} + + //! Set path of device + void setPath(const PIString & path) {setProperty("path", path);} + + //! Return \b true if mode is ReadOnly or ReadWrite + bool isReadable() const {return (mode_ & ReadOnly);} + + //! Return \b true if mode is WriteOnly or ReadWrite + bool isWriteable() const {return (mode_ & WriteOnly);} + + bool isInitialized() const {return init_;} + + //! Return \b true if device is successfully opened + bool isOpened() const {return opened_;} + + //! Return \b true if device is closed + bool isClosed() const {return !opened_;} + + //! Return \b true if device can read \b now + bool canRead() const {return opened_ && (mode_ & ReadOnly);} + + //! Return \b true if device can write \b now + bool canWrite() const {return opened_ && (mode_ & WriteOnly);} + + + //! Set execution of \a open enabled while threaded read on closed device + void setReopenEnabled(bool yes = true) {setProperty("reopenEnabled", yes);} + + //! Set timeout in milliseconds between \a open tryings if reopen is enabled + void setReopenTimeout(int msecs) {setProperty("reopenTimeout", msecs);} + + + //! Return reopen enable + bool isReopenEnabled() const {return property("reopenEnabled").toBool();} + + //! Return reopen timeout + int reopenTimeout() {return property("reopenTimeout").toInt();} + + + /** \brief Set "threaded read slot" + * \details Set external static function of threaded read that will be executed + * at every successful threaded read. Function should have format + * "bool func(void * data, uchar * readed, int size)" */ + void setThreadedReadSlot(ReadRetFunc func) {ret_func_ = func;} + + //! Set custom data that will be passed to "threaded read slot" + void setThreadedReadData(void * d) {ret_data_ = d;} + + /** \brief Set size of threaded read buffer + * \details Default size is 4096 bytes. If your device can read at single read + * more than 4096 bytes you should use this function to adjust buffer size */ + void setThreadedReadBufferSize(int new_size) {buffer_tr.resize(new_size);} + + //! Return size of threaded read buffer + int threadedReadBufferSize() const {return buffer_tr.size_s();} + + //! Return content of threaded read buffer + const uchar * threadedReadBuffer() const {return buffer_tr.data();} + + //! Return custom data that will be passed to "threaded read slot" + void * threadedReadData() const {return ret_data_;} + + + //! Return \b true if threaded read is started + bool isThreadedRead() const {return isRunning();} + + //! Start threaded read + void startThreadedRead() {if (!isRunning()) PIThread::start();} + + //! Start threaded read and assign "threaded read slot" to "func" + void startThreadedRead(ReadRetFunc func) {ret_func_ = func; if (!isRunning()) PIThread::start();} + + //! Stop threaded read + void stopThreadedRead() {PIThread::terminate();} + + + //! Return \b true if threaded write is started + bool isThreadedWrite() const {return write_thread.isRunning();} + + //! Start threaded write + void startThreadedWrite() {if (!write_thread.isRunning()) write_thread.startOnce();} + + //! Stop threaded write + void stopThreadedWrite() {write_thread.terminate();} + + //! Clear threaded write task queue + void clearThreadedWriteQueue() {write_thread.lock(); write_queue.clear(); write_thread.unlock();} + + + //! Start both threaded read and threaded write + void start() {startThreadedRead(); startThreadedWrite();} + + //! Stop both threaded read and threaded write and if "wait" block until both threads are stop + void stop(bool wait = false) {stopThreadedRead(); stopThreadedWrite(); if (wait) while (write_thread.isRunning() || isRunning()) msleep(1);} + + + //! Reimplement this function to read from your device + virtual int read(void * read_to, int max_size) {piCoutObj << "\"read\" is not implemented!"; return -2;} + + //! Reimplement this function to write to your device + virtual int write(const void * data, int max_size) {piCoutObj << "\"write\" is not implemented!"; return -2;} + + + //! Read from device maximum "max_size" bytes and return them as PIByteArray + PIByteArray read(int max_size) {buffer_in.resize(max_size); int ret = read(buffer_in.data(), max_size); if (ret < 0) return PIByteArray(); return buffer_in.resized(ret);} + + //! Read from device for "timeout_ms" milliseconds and return readed data as PIByteArray. Timeout should to be greater than 0 + PIByteArray readForTime(double timeout_ms); + + //! Write "data" to device + int write(const PIByteArray & data) {return write(data.data(), data.size_s());} + + + //! Add task to threaded write queue and return task ID + ullong writeThreaded(const void * data, int max_size) {return writeThreaded(PIByteArray(data, uint(max_size)));} + + //! Add task to threaded write queue and return task ID + ullong writeThreaded(const PIByteArray & data); + + + //! Configure device from section "section" of file "config_file", if "parent_section" parent section also will be read + bool configure(const PIString & config_file, const PIString & section, bool parent_section = false); + + + //! Reimplement to construct full unambiguous string, describes this device, default returns \a path() + virtual PIString constructFullPath() const {return path();} + + //! \brief Try to determine suitable device, create new one, configure it with \a configureFromFullPath() and returns it. + //! \details To function \a configureFromFullPath() "full_path" passed without \a fullPathPrefix() + "://". + //! See \ref PIIODevice_sec7 + static PIIODevice * createFromFullPath(const PIString & full_path); + + + EVENT_HANDLER(bool, open) {if (!init_) init(); opened_ = openDevice(); if (opened_) opened(); return opened_;} + EVENT_HANDLER1(bool, open, const PIString &, _path) {setPath(_path); if (!init_) init(); opened_ = openDevice(); if (opened_) opened(); return opened_;} + EVENT_HANDLER1(bool, open, const DeviceMode &, _mode) {mode_ = _mode; if (!init_) init(); opened_ = openDevice(); if (opened_) opened(); return opened_;} + EVENT_HANDLER2(bool, open, const PIString &, _path, const DeviceMode &, _mode) {setPath(_path); mode_ = _mode; if (!init_) init(); opened_ = openDevice(); if (opened_) opened(); return opened_;} + EVENT_HANDLER(bool, close) {opened_ = !closeDevice(); if (!opened_) closed(); return !opened_;} + EVENT_HANDLER(bool, initialize) {init_ = init(); return init_;} + + EVENT_VHANDLER(void, flush) {;} + + EVENT(opened) + EVENT(closed) + EVENT2(threadedReadEvent, uchar * , readed, int, size) + EVENT2(threadedWriteEvent, ullong, id, int, written_size) + +//! \handlers +//! \{ + + //! \fn bool open() + //! \brief Open device + + //! \fn bool open(const PIString & path) + //! \brief Open device with path "path" + + //! \fn bool open(const DeviceMode & mode) + //! \brief Open device with mode "mode" + + //! \fn bool open(const PIString & path, const DeviceMode & mode) + //! \brief Open device with path "path" and mode "mode" + + //! \fn bool close() + //! \brief Close device + + //! \fn bool initialize() + //! \brief Initialize device + +//! \} +//! \vhandlers +//! \{ + + //! \fn void flush() + //! \brief Immediate write all buffers + +//! \} +//! \events +//! \{ + + //! \fn void opened() + //! \brief Raise if succesfull open + + //! \fn void closed() + //! \brief Raise if succesfull close + + //! \fn void threadedReadEvent(uchar * readed, int size) + //! \brief Raise if read thread succesfull read some data + + //! \fn void threadedWriteEvent(ullong id, int written_size) + //! \brief Raise if write thread succesfull write some data of task with ID "id" + +//! \} +//! \ioparams +//! \{ +#ifdef DOXYGEN + //! \brief setReopenEnabled, default "true" + bool reopenEnabled; + + //! \brief setReopenTimeout in ms, default 1000 + int reopenTimeout; + + //! \brief setThreadedReadBufferSize in bytes, default 4096 + int threadedReadBufferSize; +#endif +//! \} + +protected: + + //! Function executed before first \a openDevice() or from constructor + virtual bool init() {return true;} + + //! Reimplement to configure device from entries "e_main" and "e_parent", cast arguments to \a PIConfig::Entry* + virtual bool configureDevice(const void * e_main, const void * e_parent = 0) {return true;} + + //! Reimplement to open device, return value will be set to "opened_" variable + virtual bool openDevice() = 0; // use path_, type_, opened_, init_ variables + + //! Reimplement to close device, inverse return value will be set to "opened_" variable + virtual bool closeDevice() {return true;} // use path_, type_, opened_, init_ variables + + //! Function executed when thread read some data, default implementation execute external slot "ret_func_" + virtual bool threadedRead(uchar * readed, int size) {if (ret_func_ != 0) return ret_func_(ret_data_, readed, size); return true;} + + + //! Reimplement to construct full unambiguous string prefix. \ref PIIODevice_sec7 + virtual PIString fullPathPrefix() const {return PIString();} + + //! Reimplement to configure your device with parameters of full unambiguous string. Default implementation does nothing + virtual void configureFromFullPath(const PIString & full_path) {;} + + + void terminate(); + + + DeviceMode mode_; + ReadRetFunc ret_func_; + bool init_, opened_, thread_started_, raise_threaded_read_; + void * ret_data_; + +private: + EVENT_HANDLER2(void, check_start, void * , data, int, delim); + EVENT_HANDLER(void, write_func); + + virtual PIIODevice * copy() const {return 0;} + void _init(); + void begin(); + void run(); + void end() {terminate();} + + PITimer timer; + PIThread write_thread; + PIByteArray buffer_in, buffer_tr; + PIQueue > write_queue; + ullong tri; + int readed_; + +}; + +#endif // PIIODEVICE_H diff --git a/_oldpip/pip_0.4.0_r5/pikbdlistener.cpp b/_oldpip/pip_0.4.0_r5/pikbdlistener.cpp new file mode 100644 index 0000000..dddd46c --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/pikbdlistener.cpp @@ -0,0 +1,168 @@ +/* + PIP - Platform Independent Primitives + Keyboard grabber for console + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +#include "pikbdlistener.h" + + +/** \class PIKbdListener + * \brief Keyboard console input listener + * \details This class provide listening of console keyboard input. + * There is two ways to receive pressed key: + * * external static functionwith format "void func(char key, void * data_)" + * * event \a keyPressed() + * + * Also there is static variable \a exiting which by default is set to + * \b false. If \a enableExitCapture() was called and listener was started + * with function \a start(), this variable will be set to \b true if exit + * key will be pressed. By default exit key is 'Q' = shift + 'q'. + * To wait for this variable changes to \b true there is WAIT_FOR_EXIT macro + * \snippet pikbdlistener.cpp main + * */ + + +bool PIKbdListener::exiting; + +PIKbdListener::PIKbdListener(KBFunc slot, void * _data): PIThread() { +#ifdef WINDOWS + hIn = GetStdHandle(STD_INPUT_HANDLE); + GetConsoleMode(hIn, &smode); +#else + struct termios term; + tcgetattr(0, &term); + sterm = term; +#endif + is_active = true; + ret_func = slot; + data_ = _data; + PIKbdListener::exiting = exit_enabled = false; + start(); +} + + +void PIKbdListener::begin() { + //cout << "list begin" << endl; +#ifdef WINDOWS + GetConsoleMode(hIn, &tmode); + SetConsoleMode(hIn, ENABLE_PROCESSED_INPUT); +#else + struct termios term; + tcgetattr(0, &term); + term.c_lflag &= ~(ECHO | ICANON) | NOFLSH; + tterm = term; + tcsetattr(0, TCSAFLUSH, &term); +#endif +} + + +void PIKbdListener::run() { + rc = 0; + char lc = 0; +#ifdef WINDOWS + INPUT_RECORD ir; + ReadConsoleInput(hIn, &ir, 1, &ret); + if (ir.EventType == KEY_EVENT) { + KEY_EVENT_RECORD ker = ir.Event.KeyEvent; + if (ker.bKeyDown) { + bool ctrl = ((ker.dwControlKeyState & LEFT_CTRL_PRESSED) || (ker.dwControlKeyState & RIGHT_CTRL_PRESSED)); + bool shift = (ker.dwControlKeyState & SHIFT_PRESSED); + if (ker.dwControlKeyState & CAPSLOCK_ON) shift = !shift; + //cout << "key " << int(ker.wVirtualKeyCode) << endl; + switch (ker.wVirtualKeyCode) { + case 37: ret = 1; lc = (ctrl ? CtrlLeftArrow : LeftArrow); break; + case 38: ret = 1; lc = (ctrl ? CtrlUpArrow : UpArrow); break; + case 39: ret = 1; lc = (ctrl ? CtrlRightArrow : RightArrow); break; + case 40: ret = 1; lc = (ctrl ? CtrlDownArrow : DownArrow); break; + default: ret = 1; lc = (shift ? char(toupper(ker.uChar.AsciiChar)) : ker.uChar.AsciiChar); break; + } + if (lc == 0) {piMSleep(10); return;} + } else {piMSleep(10); return;} + } else {piMSleep(10); return;} + /*if (lc == 0) { + ReadConsole(hIn, &rc, 1, &ret, 0); + //cout << "read console" << endl; + lc = char(rc); + }*/ + /*if (ret < 0 || ret > 3) return; + lc = char(((uchar * )&rc)[ret - 1]); + for (int i = 0; i < ret; ++i) + cout << std::hex << int(((uchar * )&rc)[i]) << ' '; + cout << endl << std::hex << rc << endl;*/ +#else + ret = read(0, &rc, 4); + if (ret < 0 || ret > 3) {piMSleep(10); return;} + lc = char(((uchar * )&rc)[ret - 1]); + //for (int i = 0; i < ret; ++i) + // cout << std::hex << int(((uchar * )&rc)[i]) << ' '; + //cout << endl << std::hex << rc << endl; + if (((char * )&rc)[0] == '\e' && ret == 3) { + if (((char * )&rc)[1] == '[') { + switch (((char * )&rc)[2]) { + case 'A': lc = UpArrow; break; // up + case 'B': lc = DownArrow; break; // down + case 'C': lc = RightArrow; break; // right + case 'D': lc = LeftArrow; break; // left + } + } + } + if (((char * )&rc)[0] == '5' && ret == 2) { + switch (((char * )&rc)[1]) { + case 'A': lc = CtrlUpArrow; break; // up + case 'B': lc = CtrlDownArrow; break; // down + case 'C': lc = CtrlRightArrow; break; // right + case 'D': lc = CtrlLeftArrow; break; // left + } + } +#endif + if (exit_enabled && ret == 1 && lc == exit_key) { + PIKbdListener::exiting = true; + return; + } + if (ret > 0) { + keyPressed(lc, data_); + if (ret_func != 0) ret_func(lc, data_); + } +} + + +void PIKbdListener::end() { + //cout << "list end" << endl; +#ifdef WINDOWS + SetConsoleMode(hIn, smode); +#else + tcsetattr(0, TCSANOW, &sterm); +#endif +} + + +void PIKbdListener::setActive(bool yes) { + is_active = yes; + if (is_active) { +#ifdef WINDOWS + SetConsoleMode(hIn, tmode); +#else + tcsetattr(0, TCSANOW, &tterm); +#endif + } else { +#ifdef WINDOWS + SetConsoleMode(hIn, smode); +#else + tcsetattr(0, TCSANOW, &sterm); +#endif + } +} diff --git a/_oldpip/pip_0.4.0_r5/pikbdlistener.h b/_oldpip/pip_0.4.0_r5/pikbdlistener.h new file mode 100644 index 0000000..801b80d --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/pikbdlistener.h @@ -0,0 +1,130 @@ +/*! \file pikbdlistener.h + * \brief Keyboard console input listener +*/ +/* + PIP - Platform Independent Primitives + Keyboard grabber for console + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +#ifndef PIKBDLISTENER_H +#define PIKBDLISTENER_H + +#include "pithread.h" +#ifndef WINDOWS +# include +#endif + +#define WAIT_FOR_EXIT while (!PIKbdListener::exiting) msleep(1); + +typedef void (*KBFunc)(char, void * ); + +class PIP_EXPORT PIKbdListener: public PIThread +{ + PIOBJECT(PIKbdListener) + friend class PIConsole; +public: + + //! Special keyboard keys + enum SpecialSymbol { + UpArrow /** Up arrow key */ = -1, + DownArrow /** Down arrow key */ = -2, + RightArrow /** Right arrow key */ = -3, + LeftArrow /** Left arrow key */ = -4, + CtrlUpArrow /** Ctrl + Up arrow key */ = -5, + CtrlDownArrow /** Ctrl + Down arrow key */ = -6, + CtrlRightArrow /** Ctrl + Right arrow key */ = -7, + CtrlLeftArrow /** Ctrl + Left arrow key */ = -8 + }; + + //! Constructs keyboard listener with external function "slot" and custom data "data" + PIKbdListener(KBFunc slot = 0, void * data = 0); + + ~PIKbdListener() {terminate(); end();} + + + //! Returns custom data + void * data() {return data_;} + + //! Set custom data to "_data" + void setData(void * _data) {data_ = _data;} + + //! Set external function to "slot" + void setSlot(KBFunc slot) {ret_func = slot;} + + //! Returns if exit key if awaiting + bool exitCaptured() const {return exit_enabled;} + + //! Returns exit key, default 'Q' + char exitKey() const {return exit_key;} + + + //! Returns if keyboard listening is active (not running!) + bool isActive() {return is_active;} + + EVENT_HANDLER( void, enableExitCapture) {enableExitCapture('Q');} + EVENT_HANDLER1(void, enableExitCapture, char, key) {exit_enabled = true; exit_key = key;} + EVENT_HANDLER(void, disableExitCapture) {exit_enabled = false;} + EVENT_HANDLER(void, setActive) {setActive(true);} + EVENT_HANDLER1(void, setActive, bool, yes); + + EVENT2(keyPressed, char, key, void * , data) + +//! \handlers +//! \{ + + //! \fn void enableExitCapture(char key = 'Q') + //! \brief Enable exit key "key" awaiting + + //! \fn void disableExitCapture() + //! \brief Disable exit key awaiting + + //! \fn void setActive(bool yes = true) + //! \brief Set keyboard listening is active or not + +//! \} +//! \events +//! \{ + + //! \fn void keyPressed(char key, void * data) + //! \brief Raise on key "key" pressed, "data" is custom data + +//! \} + + static bool exiting; + +private: + void begin(); + void run(); + void end(); + + KBFunc ret_func; + char exit_key; + bool exit_enabled, is_active; + void * data_; +#ifdef WINDOWS + DWORD ret, rc; + void * hIn; + DWORD smode, tmode; +#else + int rc; + int ret; + struct termios sterm, tterm; +#endif + +}; + +#endif // PIKBDLISTENER_H diff --git a/_oldpip/pip_0.4.0_r5/pimap.h b/_oldpip/pip_0.4.0_r5/pimap.h new file mode 100644 index 0000000..1debe2b --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/pimap.h @@ -0,0 +1,452 @@ +/*! \file pimap.h + * \brief Associative array with custom types of key and value + * + * This file declares PIMap +*/ +/* + PIP - Platform Independent Primitives + Dynamic array of any type + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +#ifndef PIMAP_H +#define PIMAP_H + +#include "pivector.h" +#include "pideque.h" + + +#if !defined(PIP_CONTAINERS_STL) || defined(DOXYGEN) + +template +void piQuickSort(T * a, ssize_t N) { + if (N < 1) return; + ssize_t i = 0, j = N; + T & p(a[N >> 1]); + do { + while (a[i] < p) i++; + while (a[j] > p) j--; + if (i <= j) { + if (i != j) { + //piCout << "swap" << i << j << a[i] << a[j]; + piSwapBinary(a[i], a[j]); + } + i++; j--; + } + } while (i <= j); + if (j > 0) piQuickSort(a, j); + if (N > i) piQuickSort(a + i, N - i); +} + +template +class PIMap { +public: + PIMap() {;} + PIMap(const PIMap & other) {*this = other;} + ~PIMap() {;} + + PIMap & operator =(const PIMap & other) { + if (this == &other) return *this; + clear(); + pim_content = other.pim_content; + pim_index = other.pim_index; + return *this; + } + + typedef T mapped_type; + typedef Key key_type; + typedef PIPair value_type; + + class iterator { + friend class PIMap; + private: + iterator(const PIMap * v, ssize_t p): parent(v), pos(p) {} + const PIMap * parent; + ssize_t pos; + public: + iterator(): parent(0) {} + const Key & key() const {return const_cast * >(parent)->_key(pos);} + T & value() const {return const_cast * >(parent)->_value(pos);} + void operator ++() {++pos;} + void operator ++(int) {++pos;} + void operator --() {--pos;} + void operator --(int) {--pos;} + bool operator ==(const iterator & it) const {return (pos == it.pos);} + bool operator !=(const iterator & it) const {return (pos != it.pos);} + }; + + class reverse_iterator { + friend class PIMap; + private: + reverse_iterator(const PIMap * v, ssize_t p): parent(v), pos(p) {} + const PIMap * parent; + ssize_t pos; + public: + reverse_iterator(): parent(0) {} + const Key & key() const {return const_cast * >(parent)->_key(pos);} + T & value() const {return const_cast * >(parent)->_value(pos);} + void operator ++() {--pos;} + void operator ++(int) {--pos;} + void operator --() {++pos;} + void operator --(int) {++pos;} + bool operator ==(const reverse_iterator & it) const {return (pos == it.pos);} + bool operator !=(const reverse_iterator & it) const {return (pos != it.pos);} + }; + + class const_iterator { + friend class PIMap; + private: + const_iterator(const PIMap * v, ssize_t p): parent(v), pos(p) {} + const PIMap * parent; + ssize_t pos; + public: + const_iterator(): parent(0) {} + const PIMap::value_type operator *() const {return parent->_pair(pos);} + const PIMap::value_type* operator ->() const {cval = parent->_pair(pos); return &cval;} + void operator ++() {++pos;} + void operator ++(int) {++pos;} + void operator --() {--pos;} + void operator --(int) {--pos;} + bool operator ==(const const_iterator & it) const {return (pos == it.pos);} + bool operator !=(const const_iterator & it) const {return (pos != it.pos);} + mutable value_type cval; + }; + + class const_reverse_iterator { + friend class PIMap; + private: + const_reverse_iterator(const PIMap * v, ssize_t p): parent(v), pos(p) {} + const PIMap * parent; + ssize_t pos; + public: + const_reverse_iterator(): parent(0) {} + const PIMap::value_type operator *() const {return parent->_pair(pos);} + const PIMap::value_type* operator ->() const {cval = parent->_pair(pos); return &cval;} + void operator ++() {--pos;} + void operator ++(int) {--pos;} + void operator --() {++pos;} + void operator --(int) {++pos;} + bool operator ==(const const_reverse_iterator & it) const {return (pos == it.pos);} + bool operator !=(const const_reverse_iterator & it) const {return (pos != it.pos);} + mutable value_type cval; + }; + + iterator begin() {return iterator(this, 0);} + iterator end() {return iterator(this, size());} + const_iterator begin() const {return const_iterator(this, 0);} + const_iterator end() const {return const_iterator(this, size());} + reverse_iterator rbegin() {return reverse_iterator(this, size() - 1);} + reverse_iterator rend() {return reverse_iterator(this, -1);} + const_reverse_iterator rbegin() const {return const_reverse_iterator(this, size() - 1);} + const_reverse_iterator rend() const {return const_reverse_iterator(this, -1);} + + size_t size() const {return pim_content.size();} + int size_s() const {return pim_content.size_s();} + size_t length() const {return pim_content.size();} + bool isEmpty() const {return (pim_content.size() == 0);} + + T & operator [](const Key & key) { + bool f(false); + ssize_t i = _find(key, f); + if (f) return pim_content[pim_index[i].index]; + pim_content.push_back(T()); + pim_index.insert(i, MapIndex(key, pim_content.size() - 1)); + return pim_content.back(); + } + const T operator [](const Key & key) const {bool f(false); ssize_t i = _find(key, f); if (f) return pim_content[pim_index[i].index]; return T();} + T & at(const Key & key) {return (*this)[key];} + const T at(const Key & key) const {return (*this)[key];} + + PIMap & operator <<(const PIMap & other) { + if (other.isEmpty()) return *this; + if (other.size() == 1) {insert(other.pim_index[0].key, other.pim_content[0]); return *this;} + if (other.size() == 2) {insert(other.pim_index[0].key, other.pim_content[0]); insert(other.pim_index[1].key, other.pim_content[1]); return *this;} + pim_content << other.pim_content; + size_t si = pim_index.size(); + for (int i = 0; i < other.pim_content.size_s(); ++i) + pim_index << MapIndex(other.pim_index[i].key, other.pim_index[i].index + si); + _sort(); + return *this; + } + + bool operator ==(const PIMap & t) const {return (pim_content == t.pim_content && pim_index == t.pim_index);} + bool operator !=(const PIMap & t) const {return (pim_content != t.pim_content || pim_index != t.pim_index);} + bool contains(const Key & key) const {bool f(false); _find(key, f); return f;} + //int etries(const T & v) const {int ec = 0; for (size_t i = 0; i < pim_size; ++i) if (v == pim_data[i]) ++ec; return ec;} + + PIMap & reserve(size_t new_size) {pim_content.reserve(new_size); pim_index.reserve(new_size); return *this;} + + //PIMap & removeAll(const T & v) {for (llong i = 0; i < pim_size; ++i) if (pim_data[i] == v) {remove(i); --i;} return *this;} + PIMap & removeOne(const Key & key) {bool f(false); ssize_t i = _find(key, f); if (f) _remove(i); return *this;} + PIMap & remove(const Key & key) {return removeOne(key);} + PIMap & erase(const Key & key) {return removeOne(key);} + PIMap & clear() {pim_content.clear(); pim_index.clear(); return *this;} + + void swap(PIMap & other) { + piSwapBinary >(pim_content, other.pim_content); + piSwapBinary >(pim_index, other.pim_index); + } + + PIMap & insert(const Key & key, const T & value) { + //MapIndex * i = _find(key); + bool f(false); + ssize_t i = _find(key, f); + //piCout << "insert key=" << key << "found=" << f << "index=" << i << "value=" << value; + if (f) { + pim_content[pim_index[i].index] = value; + } else { + pim_content.push_back(value); + pim_index.insert(i, MapIndex(key, pim_content.size() - 1)); + //_sort(); + } + return *this; + } + //const T value(const Key & key, const T & default_ = T()) const {MapIndex * i = _find(key); if (i == 0) return default_; return pim_content[i->index];} + const T value(const Key & key, const T & default_ = T()) const {bool f(false); ssize_t i = _find(key, f); if (!f) return default_; return pim_content[pim_index[i].index];} + Key key(const T & value_, const Key & default_ = Key()) const {for (int i = 0; i < pim_index.size_s(); ++i) if (pim_content[pim_index[i].index] == value_) return pim_index[i].key; return default_;} + PIVector keys() const { + PIVector ret; + for (int i = 0; i < pim_index.size_s(); ++i) + ret << pim_index[i].key; + return ret; + } + + void dump() { + piCout << "PIMap" << size() << "entries" << NewLine << "content:"; + for (size_t i = 0; i < pim_content.size(); ++i) + piCout << Tab << i << ":" << pim_content[i]; + piCout << "index:"; + for (size_t i = 0; i < pim_index.size(); ++i) + piCout << Tab << i << ":" << pim_index[i].key << "->" << pim_index[i].index; + } + +private: + struct MapIndex { + MapIndex(Key k = Key(), size_t i = 0): key(k), index(i) {;} + Key key; + size_t index; + bool operator ==(const MapIndex & s) const {return key == s.key;} + bool operator !=(const MapIndex & s) const {return key != s.key;} + bool operator <(const MapIndex & s) const {return key < s.key;} + bool operator >(const MapIndex & s) const {return key > s.key;} + }; + + ssize_t binarySearch(ssize_t first, ssize_t last, const Key & key, bool & found) const { + ssize_t mid; + while (first <= last) { + mid = (first + last) / 2; + if (key > pim_index[mid].key) first = mid + 1; + else if (key < pim_index[mid].key) last = mid - 1; + else {found = true; return mid;} + } + found = false; + return first; + } + void _sort() {piQuickSort(pim_index.data(), pim_index.size_s() - 1);} + ssize_t _find(const Key & k, bool & found) const { + /*for (size_t i = 0; i < pim_index.size(); ++i) + if (pim_index[i].key == k) { + return (MapIndex * )&(pim_index[i]); + } + return 0;*/ + //piCout << "find for" << k << pim_index.size_s(); + if (pim_index.isEmpty()) { + found = false; + return 0; + } + //piCout << k << ret << found; + return binarySearch(0, pim_index.size_s() - 1, k, found); + } + void _remove(ssize_t i) { + //if (i >= pim_index.size()) return; + size_t ci = pim_index[i].index, bi = pim_index.size() - 1; + pim_index.remove(i); + for (size_t i = 0; i < pim_index.size(); ++i) + if (pim_index[i].index == bi) { + pim_index[i].index = ci; + break; + } + piSwapBinary(pim_content[ci], pim_content.back()); + pim_content.resize(pim_index.size()); + } + const value_type _pair(ssize_t index) const { + if (index < 0 || index >= pim_index.size_s()) + return value_type(); + //piCout << "_pair" << index << pim_index[index].index; + return value_type(pim_index[index].key, pim_content[pim_index[index].index]); + } + Key & _key(ssize_t index) {return pim_index[index].key;} + T & _value(ssize_t index) {return pim_content[pim_index[index].index];} + + PIVector pim_content; + PIDeque pim_index; +}; +//template bool operator <(const typename PIMap::MapIndex & f, const typename PIMap::MapIndex & s) {return f.key < s.key;} +//template bool operator >(const typename PIMap::MapIndex & f, const typename PIMap::MapIndex & s) {return f.key > s.key;} + + +/*#define __PIMAP_SIMPLE_FUNCTIONS__(T) + template<> inline PIMap::~PIMap() {dealloc(); _reset();} \ + template<> inline PIMap & PIMap::push_back(const T & v) {alloc(pim_size + 1); pim_data[pim_size - 1] = v; return *this;} \ + template<> inline PIMap & PIMap::fill(const T & f) { \ + for (size_t i = 0; i < pim_size; ++i) \ + pim_data[i] = f; \ + return *this; \ + } \ + template<> inline PIMap & PIMap::resize(size_t new_size, const T & f) { \ + if (new_size < pim_size) \ + pim_size = new_size; \ + if (new_size > pim_size) { \ + size_t os = pim_size; \ + alloc(new_size); \ + for (size_t i = os; i < new_size; ++i) pim_data[i] = f; \ + } \ + return *this; \ + } \ + template<> inline PIMap & PIMap::insert(size_t index, const T & v) { \ + alloc(pim_size + 1); \ + if (index < pim_size - 1) { \ + size_t os = pim_size - index - 1; \ + memmove(&(pim_data[index + 1]), &(pim_data[index]), os * sizeof(T)); \ + } \ + pim_data[index] = v; \ + return *this; \ + } \ + template<> inline PIMap & PIMap::remove(size_t index, size_t count) { \ + if (index + count >= pim_size) { \ + resize(index); \ + return *this; \ + } \ + size_t os = pim_size - index - count; \ + memmove(&(pim_data[index]), &(pim_data[index + count]), os * sizeof(T)); \ + pim_size -= count; \ + return *this; \ + } + +__PIMAP_SIMPLE_FUNCTIONS__(char) +__PIMAP_SIMPLE_FUNCTIONS__(uchar) +__PIMAP_SIMPLE_FUNCTIONS__(short) +__PIMAP_SIMPLE_FUNCTIONS__(ushort) +__PIMAP_SIMPLE_FUNCTIONS__(int) +__PIMAP_SIMPLE_FUNCTIONS__(uint) +__PIMAP_SIMPLE_FUNCTIONS__(long) +__PIMAP_SIMPLE_FUNCTIONS__(ulong) +__PIMAP_SIMPLE_FUNCTIONS__(llong) +__PIMAP_SIMPLE_FUNCTIONS__(ullong) +__PIMAP_SIMPLE_FUNCTIONS__(float) +__PIMAP_SIMPLE_FUNCTIONS__(double) +__PIMAP_SIMPLE_FUNCTIONS__(ldouble)*/ + +#else + + +template +class PIP_EXPORT PIMap: public map { + typedef PIMap _CMap; + typedef map _stlc; + typedef std::pair _stlpair; +public: + PIMap() {;} + PIMap(const Key & key_, const Type & value_) {insert(key_, value_);} + bool isEmpty() const {return _stlc::empty();} + bool contains(const Key & key_) const {return _stlc::count(key_) > 0;} + int size_s() const {return static_cast(_stlc::size());} + _CMap & insert(const Key & key_, const Type & value_) {_stlc::insert(_stlpair(key_, value_)); return *this;} + _CMap & insert(PIPair entry_) {_stlc::insert(_stlpair(entry_.first, entry_.second)); return *this;} + Key key(Type value_, const Key & default_ = Key()) const {for (typename _stlc::const_iterator i = _stlc::begin(); i != _stlc::end(); i++) if (i->second == value_) return i->first; return default_;} + PIVector keys() const { + PIVector ret; + for (typename _stlc::const_iterator i = _stlc::begin(); i != _stlc::end(); i++) + ret << i->first; + return ret; + } + Type & at(const Key & key_) {return _stlc::find(key_)->second;} + Type value(const Key & key_) const {typename _stlc::const_iterator it = _stlc::find(key_); if (it != _stlc::end()) return it->second; return Type();} +}; + + +template +class PIP_EXPORT PIMultiMap: public multimap { + typedef PIMultiMap _CMultiMap; + typedef multimap _stlc; + typedef std::pair _stlpair; +public: + PIMultiMap() {;} + PIMultiMap(const Key & key_, const Type & value_) {insert(key_, value_);} + _CMultiMap & insert(const Key & key_, const Type & value_) {_stlc::insert(_stlpair(key_, value_)); return *this;} + _CMultiMap & insert(PIPair entry_) {_stlc::insert(_stlpair(entry_.first, entry_.second)); return *this;} + bool isEmpty() const {return _stlc::empty();} + bool contains(const Key & key_) const {return _stlc::count(key_) > 0;} + Key key(Type value_, const Key & default_ = Key()) const {for (typename _stlc::const_iterator i = _stlc::begin(); i != _stlc::end(); i++) if (i->second == value_) return i->first; return default_;} + PIVector keys(Type value_) const { + PIVector ret; + for (typename _stlc::const_iterator i = _stlc::begin(); i != _stlc::end(); i++) + if (i->second == value_) + ret << i->first; + return ret; + } + Type & value(const Key & key_) {typename _stlc::iterator i = _stlc::find(key_); if (i == _stlc::end()) return Type(); return i->second;} + Type value(const Key & key_) const {typename _stlc::const_iterator i = _stlc::find(key_); if (i == _stlc::end()) return Type(); return i->second;} + PIVector values(const Key & key_) const { + std::pair range = _stlc::equal_range(key_); + PIVector ret; + for (typename _stlc::const_iterator i = range.first; i != range.second; ++i) + ret << i->second; + return ret; + } + Type & operator [](const Key & key_) {if (!contains(key_)) return _stlc::insert(_stlpair(key_, Type()))->second; return _stlc::find(key_)->second;} + Type operator [](const Key & key_) const {return _stlc::find(key_)->second;} +}; + +#define __PIMAP_SIMPLE_FUNCTIONS__(T) + + +#endif + + +template +inline std::ostream & operator <<(std::ostream & s, const PIMap & v) { + s << "{"; + bool first = true; + for (typename PIMap::const_iterator i = v.begin(); i != v.end(); i++) { + if (!first) + s << ", "; + first = false; + s << i->first << ": " << i->second; + } + s << "}"; + return s; +} + +template +inline PICout operator <<(PICout s, const PIMap & v) { + s.space(); + s.setControl(0, true); + s << "{"; + bool first = true; + for (typename PIMap::const_iterator i = v.begin(); i != v.end(); i++) { + if (!first) + s << ", "; + first = false; + s << i->first << ": " << i->second; + } + s << "}"; + s.restoreControl(); + return s; +} + + +#endif // PIMAP_H diff --git a/_oldpip/pip_0.4.0_r5/pimath.cpp b/_oldpip/pip_0.4.0_r5/pimath.cpp new file mode 100644 index 0000000..6284aa4 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/pimath.cpp @@ -0,0 +1,1627 @@ +/* + PIP - Platform Independent Primitives + Math + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +#include "pimath.h" + + +double piJ0(const double & v) { +#ifndef PIP_MATH_J0 + double x = v; + double xsq; + double nn; + double pzero; + double qzero; + double p1; + double q1; + double result; + if (x < 0) x = -x; + if (x > 8.) { + double xsq_; + double p2; + double q2; + double p3; + double q3; + xsq_ = 64. / (x * x); + p2 = 0.0; + p2 = 2485.271928957404011288128951 + xsq_ * p2; + p2 = 153982.6532623911470917825993 + xsq_ * p2; + p2 = 2016135.283049983642487182349 + xsq_ * p2; + p2 = 8413041.456550439208464315611 + xsq_ * p2; + p2 = 12332384.76817638145232406055 + xsq_ * p2; + p2 = 5393485.083869438325262122897 + xsq_ * p2; + q2 = 1.0; + q2 = 2615.700736920839685159081813 + xsq_ * q2; + q2 = 156001.7276940030940592769933 + xsq_ * q2; + q2 = 2025066.801570134013891035236 + xsq_ * q2; + q2 = 8426449.050629797331554404810 + xsq_ * q2; + q2 = 12338310.22786324960844856182 + xsq_ * q2; + q2 = 5393485.083869438325560444960 + xsq_ * q2; + p3 = -0.0; + p3 = -4.887199395841261531199129300 +xsq_ * p3; + p3 = -226.2630641933704113967255053 +xsq_ * p3; + p3 = -2365.956170779108192723612816 +xsq_ * p3; + p3 = -8239.066313485606568803548860 +xsq_ * p3; + p3 = -10381.41698748464093880530341 +xsq_ * p3; + p3 = -3984.617357595222463506790588 +xsq_ * p3; + q3 = 1.0; + q3 = 408.7714673983499223402830260 + xsq_ * q3; + q3 = 15704.89191515395519392882766 + xsq_ * q3; + q3 = 156021.3206679291652539287109 + xsq_ * q3; + q3 = 533291.3634216897168722255057 + xsq_ * q3; + q3 = 666745.4239319826986004038103 + xsq_ * q3; + q3 = 255015.5108860942382983170882 + xsq_ * q3; + pzero = p2 / q2; + qzero = 8. * p3 / q3 / x; + nn = x- M_PI / 4.; + result = sqrt(2. / M_PI / x) * (pzero * cos(nn) - qzero * sin(nn)); + return result; + } + xsq = x * x; + p1 = 26857.86856980014981415848441; + p1 = -40504123.71833132706360663322 + xsq * p1; + p1 = 25071582855.36881945555156435 + xsq * p1; + p1 = -8085222034853.793871199468171 + xsq * p1; + p1 = 1434354939140344.111664316553 + xsq * p1; + p1 = -136762035308817138.6865416609 + xsq * p1; + p1 = 6382059341072356562.289432465 + xsq * p1; + p1 = -117915762910761053603.8440800 + xsq * p1; + p1 = 493378725179413356181.6813446 + xsq * p1; + q1 = 1.; + q1 = 1363.063652328970604442810507 + xsq * q1; + q1 = 1114636.098462985378182402543 + xsq * q1; + q1 = 669998767.2982239671814028660 + xsq * q1; + q1 = 312304311494.1213172572469442 + xsq * q1; + q1 = 112775673967979.8507056031594 + xsq * q1; + q1 = 30246356167094626.98627330784 + xsq * q1; + q1 = 5428918384092285160.200195092 + xsq * q1; + q1 = 493378725179413356211.3278438 + xsq * q1; + return p1 / q1; +#else + return j0(v); +#endif +} + + +double piJ1(const double & v) { +#ifndef PIP_MATH_J1 + double x = v; + double s; + double xsq; + double nn; + double pzero; + double qzero; + double p1; + double q1; + double result; + s = sign(x); + if (x < 0) + x = -x; + if (x > 8.) { + double xsq_; + double p2; + double q2; + double p3; + double q3; + xsq_ = 64.0 / (x * x); + p2 = -1611.616644324610116477412898; + p2 = -109824.0554345934672737413139 + xsq_ * p2; + p2 = -1523529.351181137383255105722 + xsq_ * p2; + p2 = -6603373.248364939109255245434 + xsq_ * p2; + p2 = -9942246.505077641195658377899 + xsq_ * p2; + p2 = -4435757.816794127857114720794 + xsq_ * p2; + q2 = 1.0; + q2 = -1455.009440190496182453565068 + xsq_ * q2; + q2 = -107263.8599110382011903063867 + xsq_ * q2; + q2 = -1511809.506634160881644546358 + xsq_ * q2; + q2 = -6585339.479723087072826915069 + xsq_ * q2; + q2 = -9934124.389934585658967556309 + xsq_ * q2; + q2 = -4435757.816794127856828016962 + xsq_ * q2; + p3 = 35.26513384663603218592175580; + p3 = 1706.375429020768002061283546 + xsq_ * p3; + p3 = 18494.26287322386679652009819 + xsq_ * p3; + p3 = 66178.83658127083517939992166 + xsq_ * p3; + p3 = 85145.16067533570196555001171 + xsq_ * p3; + p3 = 33220.91340985722351859704442 + xsq_ * p3; + q3 = 1.0; + q3 = 863.8367769604990967475517183 + xsq_ * q3; + q3 = 37890.22974577220264142952256 + xsq_ * q3; + q3 = 400294.4358226697511708610813 + xsq_ * q3; + q3 = 1419460.669603720892855755253 + xsq_ * q3; + q3 = 1819458.042243997298924553839 + xsq_ * q3; + q3 = 708712.8194102874357377502472 + xsq_ * q3; + pzero = p2 / q2; + qzero = 8 * p3 / q3 / x; + nn = x - 3 * M_PI / 4; + result = sqrt(2 / M_PI / x) * (pzero * cos(nn) - qzero * sin(nn)); + if (s < 0) + result = -result; + return result; + } + xsq = sqr(x); + p1 = 2701.122710892323414856790990; + p1 = -4695753.530642995859767162166 + xsq * p1; + p1 = 3413234182.301700539091292655 + xsq * p1; + p1 = -1322983480332.126453125473247 + xsq * p1; + p1 = 290879526383477.5409737601689 + xsq * p1; + p1 = -35888175699101060.50743641413 + xsq * p1; + p1 = 2316433580634002297.931815435 + xsq * p1; + p1 = -66721065689249162980.20941484 + xsq * p1; + p1 = 581199354001606143928.050809 + xsq * p1; + q1 = 1.0; + q1 = 1606.931573481487801970916749 + xsq * q1; + q1 = 1501793.594998585505921097578 + xsq * q1; + q1 = 1013863514.358673989967045588 + xsq * q1; + q1 = 524371026216.7649715406728642 + xsq * q1; + q1 = 208166122130760.7351240184229 + xsq * q1; + q1 = 60920613989175217.46105196863 + xsq * q1; + q1 = 11857707121903209998.37113348 + xsq * q1; + q1 = 1162398708003212287858.529400 + xsq * q1; + result = s * x * p1 / q1; + return result; +#else + return j1(v); +#endif +} + + +double piJn(int n, const double & v) { +#ifndef PIP_MATH_JN + double x = v; + double pkm2; + double pkm1; + double pk; + double xk; + double r; + double ans; + int k; + int sg; + double result; + if (n < 0) { + n = -n; + if (n % 2 == 0) + sg = 1; + else + sg = -1; + } else + sg = 1; + if (x < 0) { + if (n % 2 != 0) + sg = -sg; + x = -x; + } + if (n == 0) { + result = sg * piJ0(x); + return result; + } + if (n == 1) { + result = sg * piJ1(x); + return result; + } + if (n == 2) { + if (x == 0) + result = 0; + else + result = sg * (2.0 * piJ1(x) / x - piJ0(x)); + return result; + } + if (x < 1E-16) { + result = 0; + return result; + } + k = 53; + pk = 2 * (n + k); + ans = pk; + xk = x * x; + do { + pk = pk - 2.0; + ans = pk - xk / ans; + k = k - 1; + } while (k != 0); + ans = x / ans; + pk = 1.0; + pkm1 = 1.0 / ans; + k = n - 1; + r = 2 * k; + do { + pkm2 = (pkm1 * r - pk * x) / x; + pk = pkm1; + pkm1 = pkm2; + r = r - 2.0; + k = k - 1; + } while (k != 0); + if (fabs(pk) > fabs(pkm1)) + ans = piJ1(x) / pk; + else + ans = piJ0(x) / pkm1; + result = sg * ans; + return result; +#else + return jn(n, v); +#endif +} + + +double piY0(const double & v) { +#ifndef PIP_MATH_Y0 + double x = v; + double nn; + double xsq; + double pzero; + double qzero; + double p4; + double q4; + double result; + if (x > 8.) { + double xsq_; + double p2; + double q2; + double p3; + double q3; + xsq_ = 64.0 / (x * x); + p2 = 0.0; + p2 = 2485.271928957404011288128951 + xsq_ * p2; + p2 = 153982.6532623911470917825993 + xsq_ * p2; + p2 = 2016135.283049983642487182349 + xsq_ * p2; + p2 = 8413041.456550439208464315611 + xsq_ * p2; + p2 = 12332384.76817638145232406055 + xsq_ * p2; + p2 = 5393485.083869438325262122897 + xsq_ * p2; + q2 = 1.0; + q2 = 2615.700736920839685159081813 + xsq_ * q2; + q2 = 156001.7276940030940592769933 + xsq_ * q2; + q2 = 2025066.801570134013891035236 + xsq_ * q2; + q2 = 8426449.050629797331554404810 + xsq_ * q2; + q2 = 12338310.22786324960844856182 + xsq_ * q2; + q2 = 5393485.083869438325560444960 + xsq_ * q2; + p3 = -0.0; + p3 = -4.887199395841261531199129300 + xsq_ * p3; + p3 = -226.2630641933704113967255053 + xsq_ * p3; + p3 = -2365.956170779108192723612816 + xsq_ * p3; + p3 = -8239.066313485606568803548860 + xsq_ * p3; + p3 = -10381.41698748464093880530341 + xsq_ * p3; + p3 = -3984.617357595222463506790588 + xsq_ * p3; + q3 = 1.0; + q3 = 408.7714673983499223402830260 + xsq_ * q3; + q3 = 15704.89191515395519392882766 + xsq_ * q3; + q3 = 156021.3206679291652539287109 + xsq_ * q3; + q3 = 533291.3634216897168722255057 + xsq_ * q3; + q3 = 666745.4239319826986004038103 + xsq_ * q3; + q3 = 255015.5108860942382983170882 + xsq_ * q3; + pzero = p2 / q2; + qzero = 8 * p3 / q3 / x; + nn = x - M_PI / 4; + result = sqrt(2 / M_PI / x) * (pzero * sin(nn) + qzero * cos(nn)); + return result; + } + xsq = sqr(x); + p4 = -41370.35497933148554125235152; + p4 = 59152134.65686889654273830069 + xsq * p4; + p4 = -34363712229.79040378171030138 + xsq * p4; + p4 = 10255208596863.94284509167421 + xsq * p4; + p4 = -1648605817185729.473122082537 + xsq * p4; + p4 = 137562431639934407.8571335453 + xsq * p4; + p4 = -5247065581112764941.297350814 + xsq * p4; + p4 = 65874732757195549259.99402049 + xsq * p4; + p4 = -27502866786291095837.01933175 + xsq * p4; + q4 = 1.0; + q4 = 1282.452772478993804176329391 + xsq * q4; + q4 = 1001702.641288906265666651753 + xsq * q4; + q4 = 579512264.0700729537480087915 + xsq * q4; + q4 = 261306575504.1081249568482092 + xsq * q4; + q4 = 91620380340751.85262489147968 + xsq * q4; + q4 = 23928830434997818.57439356652 + xsq * q4; + q4 = 4192417043410839973.904769661 + xsq * q4; + q4 = 372645883898616588198.9980 + xsq * q4; + result = p4 / q4 + 2 / M_PI * piJ0(x) * log(x); + return result; +#else + return y0(v); +#endif +} + + +double piY1(const double & v) { +#ifndef PIP_MATH_Y1 + double x = v; + double nn; + double xsq; + double pzero; + double qzero; + double p4; + double q4; + double result; + if (x > 8.) { + double xsq_; + double p2; + double q2; + double p3; + double q3; + xsq_ = 64.0 / (x * x); + p2 = -1611.616644324610116477412898; + p2 = -109824.0554345934672737413139 + xsq_ * p2; + p2 = -1523529.351181137383255105722 + xsq_ * p2; + p2 = -6603373.248364939109255245434 + xsq_ * p2; + p2 = -9942246.505077641195658377899 + xsq_ * p2; + p2 = -4435757.816794127857114720794 + xsq_ * p2; + q2 = 1.0; + q2 = -1455.009440190496182453565068 + xsq_ * q2; + q2 = -107263.8599110382011903063867 + xsq_ * q2; + q2 = -1511809.506634160881644546358 + xsq_ * q2; + q2 = -6585339.479723087072826915069 + xsq_ * q2; + q2 = -9934124.389934585658967556309 + xsq_ * q2; + q2 = -4435757.816794127856828016962 + xsq_ * q2; + p3 = 35.26513384663603218592175580; + p3 = 1706.375429020768002061283546 + xsq_ * p3; + p3 = 18494.26287322386679652009819 + xsq_ * p3; + p3 = 66178.83658127083517939992166 + xsq_ * p3; + p3 = 85145.16067533570196555001171 + xsq_ * p3; + p3 = 33220.91340985722351859704442 + xsq_ * p3; + q3 = 1.0; + q3 = 863.8367769604990967475517183 + xsq_ * q3; + q3 = 37890.22974577220264142952256 + xsq_ * q3; + q3 = 400294.4358226697511708610813 + xsq_ * q3; + q3 = 1419460.669603720892855755253 + xsq_ * q3; + q3 = 1819458.042243997298924553839 + xsq_ * q3; + q3 = 708712.8194102874357377502472 + xsq_ * q3; + pzero = p2 / q2; + qzero = 8 * p3 / q3 / x; + nn = x - 3 * M_PI / 4; + result = sqrt(2 / M_PI / x) * (pzero * sin(nn) + qzero * cos(nn)); + return result; + } + xsq = sqr(x); + p4 = -2108847.540133123652824139923; + p4 = 3639488548.124002058278999428 + xsq * p4; + p4 = -2580681702194.450950541426399 + xsq * p4; + p4 = 956993023992168.3481121552788 + xsq * p4; + p4 = -196588746272214065.8820322248 + xsq * p4; + p4 = 21931073399177975921.11427556 + xsq * p4; + p4 = -1212297555414509577913.561535 + xsq * p4; + p4 = 26554738314348543268942.48968 + xsq * p4; + p4 = -99637534243069222259967.44354 + xsq * p4; + q4 = 1.0; + q4 = 1612.361029677000859332072312 + xsq * q4; + q4 = 1563282.754899580604737366452 + xsq * q4; + q4 = 1128686837.169442121732366891 + xsq * q4; + q4 = 646534088126.5275571961681500 + xsq * q4; + q4 = 297663212564727.6729292742282 + xsq * q4; + q4 = 108225825940881955.2553850180 + xsq * q4; + q4 = 29549879358971486742.90758119 + xsq * q4; + q4 = 5435310377188854170800.653097 + xsq * q4; + q4 = 508206736694124324531442.4152 + xsq * q4; + result = x * p4 / q4 + 2 / M_PI * (piJ1(x) * log(x) - 1 / x); + return result; +#else + return y1(v); +#endif +} + + +double piYn(int n, const double & v) { +#ifndef PIP_MATH_YN + int i; + double x = v; + double a; + double b; + double tmp; + double s; + double result; + s = 1; + if (n < 0) { + n = -n; + if (n % 2 != 0) + s = -1; + } + if (n == 0) { + result = piY0(x); + return result; + } + if (n == 1) { + result = s * piY1(x); + return result; + } + a = piY0(x); + b = piY1(x); + for (i = 1; i <= n - 1; i++) { + tmp = b; + b = 2 * i / x * b - a; + a = tmp; + } + result = s * b; + return result; +#else + return yn(n, v); +#endif +} + + +double randomn(double dv, double sv) { + static bool agen = false; + double s = 2., v0 = 0., v1 = 0.; + if (agen) { + agen = false; + v1 = v1 * sqrt(-2 * log(s) / s); + return v1 * sv + dv; + } + while (s > 1. || s == 0.) { + v0 = randomd(); + v1 = randomd(); + s = v0*v0 + v1*v1; + } + v0 = v0 * sqrt(-2 * log(s) / s); + return v0 * sv + dv; +} + + + +const char Solver::methods_desc[] = "b{Methods:}\ +\n -1 - Global settings\ +\n 01 - Eyler 1\ +\n 02 - Eyler 2\ +\n 14 - Runge-Kutta 4\ +\n 23 - Adams-Bashfort-Moulton 3\ +\n 24 - Adams-Bashfort-Moulton 4\ +\n 32 - Polynomial Approximation 2\ +\n 33 - Polynomial Approximation 3\ +\n 34 - Polynomial Approximation 4\ +\n 35 - Polynomial Approximation 5"; + +Solver::Method Solver::method_global = Solver::Eyler_2; + + +void Solver::solve(double u, double h) { + switch (method) { + case Global: + switch (method_global) { + case Eyler_1: solveEyler1(u, h); break; + case Eyler_2: solveEyler2(u, h); break; + case RungeKutta_4: solveRK4(u, h); break; + case AdamsBashfortMoulton_2: solveABM2(u, h); break; + case AdamsBashfortMoulton_3: solveABM3(u, h); break; + case AdamsBashfortMoulton_4: default: solveABM4(u, h); break; + case PolynomialApproximation_2: solvePA2(u, h); break; + case PolynomialApproximation_3: solvePA3(u, h); break; + case PolynomialApproximation_4: solvePA4(u, h); break; + case PolynomialApproximation_5: solvePA5(u, h); break; + } + break; + case Eyler_1: solveEyler1(u, h); break; + case Eyler_2: solveEyler2(u, h); break; + case RungeKutta_4: solveRK4(u, h); break; + case AdamsBashfortMoulton_2: solveABM2(u, h); break; + case AdamsBashfortMoulton_3: solveABM3(u, h); break; + case AdamsBashfortMoulton_4: default: solveABM4(u, h); break; + case PolynomialApproximation_2: solvePA2(u, h); break; + case PolynomialApproximation_3: solvePA3(u, h); break; + case PolynomialApproximation_4: solvePA4(u, h); break; + case PolynomialApproximation_5: solvePA5(u, h); break; + } + step++; +} + + +void Solver::fromTF(const TransferFunction & TF) { + if (TF.vector_An.size() >= TF.vector_Bm.size()) + size = TF.vector_An.size()-1; + else { + piCout << "Solver error: {A} should be greater than {B}"; + return; + } + if (size == 0) return; + + step = 0; + times.fill(0.); + A.resize(size, size); + d.resize(size + 1); d.fill(0.); + a1.resize(size + 1); a1.fill(0.); + b1.resize(size + 1); b1.fill(0.); + X.resize(size); X.fill(0.); + F.resize(5); + for (uint i = 0; i < 5; ++i) + F[i].resize(size), F[i].fill(0.); + k1.resize(size); k1.fill(0.); + k2.resize(size); k2.fill(0.); + k3.resize(size); k3.fill(0.); + k4.resize(size); k4.fill(0.); + xx.resize(size); xx.fill(0.); + XX.resize(size); XX.fill(0.); + for (uint i = 0; i < size + 1; ++i) + a1[size - i] = TF.vector_An[i]; + for (uint i = 0; i < TF.vector_Bm.size(); ++i) + b1[size - i] = TF.vector_Bm[i]; + double a0 = a1[0]; + a1 /= a0; + b1 /= a0; + + d[0] = b1[0]; // РаÑÑчитываем вектор d + for (uint i = 1; i < size + 1; ++i) { + sum = 0.; + for (uint m = 0; m < i; ++m) + sum += a1[i - m] * d[m]; + d[i] = b1[i] - sum; + } + + for (uint i = 0; i < size - 1; ++i) // ЗаполнÑем матрицу Ð + for (uint j = 0; j < size; ++j) + A[j][i] = (j == i + 1); + for (uint i = 0; i < size; ++i) + A[i][size - 1] = -a1[size - i]; + for (uint i = 0; i < size; ++i) + d[i] = d[i + 1]; +} + + +void Solver::solveEyler1(double u, double h) { + /*for (uint i = 0; i < size; ++i) { + * sum = 0.; + * for (uint j = 0; j < size; ++j) + * sum += A[j][i] * X[j]; + * xx[i] = sum + d[i] * u; + }*/ + F[0] = A * X + d * u; + X += F[0] * h; + moveF(); +} + + +void Solver::solveEyler2(double u, double h) { + F[0] = A * X + d * u; + X += (F[0] + F[1]) * h / 2.; + moveF(); +} + + +void Solver::solveRK4(double u, double h) { + td = X[0] - F[0][0]; + k1 = A * X + d * u; xx = k1 * h / 2.; XX = X + xx; + k2 = A * (XX + k1 * h / 2.) + d * (u + td/3.); xx = k2 * h / 2.; XX += xx; + k3 = A * (XX + k2 * h / 2.) + d * (u + td*2./3.); xx = k3 * h; XX += xx; + k4 = A * (XX + k3 * h) + d * (u + td); + //cout << k1 << k2 << k3 << k4 << endl; + X += (k1 + k2 * 2. + k3 * 2. + k4) * h / 6.; + F[0] = X; +} + + +void Solver::solveABM2(double u, double h) { + F[0] = A * X + d * u; + XX = X + (F[0] * 3. - F[1]) * (h / 2.); + F[1] = A * XX + d * u; + X += (F[1] + F[0]) * (h / 2.); + moveF(); +} + + +void Solver::solveABM3(double u, double h) { + F[0] = A * X + d * u; + XX = X + (F[0] * 23. - F[1] * 16. + F[2] * 5.) * (h / 12.); + F[2] = A * XX + d * u; + X += (F[2] * 5. + F[0] * 8. - F[1]) * (h / 12.); + moveF(); +} + + +void Solver::solveABM4(double u, double h) { + F[0] = A * X + d * u; + XX = X + (F[0] * 55. - F[1] * 59. + F[2] * 37. - F[3] * 9.) * (h / 24.); + F[3] = A * XX + d * u; + X += (F[3] * 9. + F[0] * 19. - F[1] * 5. + F[2]) * (h / 24.); + moveF(); +} + + +void Solver::solvePA(double u, double h, uint deg) { + F[0] = A * X + d * u; + M.resize(deg, deg); + Y.resize(deg); + pY.resize(deg); + + for (uint k = 0; k < size; ++k) { + for (uint i = 0; i < deg; ++i) { + td = 1.; + ct = times[i]; + for (uint j = 0; j < deg; ++j) { + M[j][i] = td; + td *= ct; + } + } + for (uint i = 0; i < deg; ++i) + Y[i] = F[i][k]; + /// find polynom + //if (step == 1) cout << M << endl << Y << endl; + M.invert(&ok, &Y); + //if (step == 1) cout << Y << endl; + if (!ok) { + solveEyler2(u, h); + break; + } + /// calc last piece + x0 = 0.; + td = 1.; + t = times[0]; + for (uint i = 0; i < deg; ++i) { + x0 += Y[i] * td / (i + 1.); + td *= t; + } + x0 *= t; + + x1 = 0.; + td = 1.; + t = times[1]; + for (uint i = 0; i < deg; ++i) { + x1 += Y[i] * td / (i + 1.); + td *= t; + } + x1 *= t; + lp = x0 - x1; + + if (deg > 2) { + /// calc prev piece + x0 = 0.; + td = 1.; + dh = times[1] - times[2]; + if (dh != 0. && step > 1) { + t = times[2]; + for (uint i = 0; i < deg; ++i) { + x0 += Y[i] * td / (i + 1.); + td *= t; + } + x0 *= t; + ct = x1 - x0; + /// calc correction + ct -= pY[k]; + } + /// calc final + X[k] += lp - ct; + pY[k] = lp; + } else { + X[k] += lp; + pY[k] = lp; + } + } + moveF(); +} + + + +PIFFT::PIFFT() { + prepared = false; +} + + +PIVector * PIFFT::calcFFT(const PIVector & val) { +// for (uint i=0; i *PIFFT::calcFFTinverse(const PIVector &val) +{ + result.clear(); + if (val.size_s() < 4) return &result; + fftc1dinv(val, val.size()); + return &result; +} + + +PIVector *PIFFT::calcHilbert(const PIVector &val) +{ + result.clear(); + if (val.size_s() < 4) return &result; + fftc1r(val, val.size()); + for (uint i=0; i* PIFFT::calcFFT(const PIVector & val) { + result.clear(); + if (val.size_s() < 4) return &result; + fftc1r(val, val.size()); + return &result; +} + + +PIVector PIFFT::getAmplitude() { + PIVector a; + double tmp; + for (uint i=0; i &a, uint n) { + createPlan(n); + uint i; + PIVector buf; + buf.resize(2*n); + for(i=0; iptr.p_complex[i].x; + buf[2*i+1] = a.at(i).imag();//a->ptr.p_complex[i].y; + } + ftbaseexecuteplan(&buf, 0, n, &curplan); + result.resize(n); + for(i=0; i & a, uint n) { + uint i; + if( n%2==0) { + PIVector buf; + uint n2 = n/2; + //buf.resize(n); + buf = a; + createPlan(n2); + //cout << "fftr " << n2 << endl; + ftbaseexecuteplan(&buf, 0, n2, &curplan); + result.resize(n); + uint idx; + complexd hn, hmnc, v; + for(i=0; i<=n2; i++) { + idx = 2*(i%n2); + hn = complexd(buf[idx+0], buf[idx+1]); + idx = 2*((n2-i)%n2); + hmnc = complexd(buf[idx+0], -buf[idx+1]); + v = complexd(sin(M_PI*i/n2), cos(M_PI*i/n2)); + result[i] = ((hn + hmnc) - (v * (hn - hmnc))); + result[i] *= 0.5; + } + for(i=n2+1; i cbuf; + cbuf.resize(n); + for(i=0; i &a, uint n) +{ + PIVector cbuf; + cbuf.resize(n); + uint i; + for(i=0; i(stackmemsize,1));//ae_vector_set_length(&curplan.stackbuf, ae_maxint(stackmemsize, 1)); + curplan.tmpbuf.resize(piMax(tmpmemsize,1));//ae_vector_set_length(&(curplan.tmpbuf), ae_maxint(tmpmemsize, 1)); + curplan.precomputed.resize(piMax(precomputedsize,1));//ae_vector_set_length(&curplan.precomputed, ae_maxint(precomputedsize, 1)); + stackptr = 0; + ftbase_ftbaseprecomputeplanrec(plan, 0, stackptr); + if (stackptr!=0) { return;}//ae_assert(stackptr==0, "Internal error in FTBaseGenerateComplexFFTPlan: stack ptr!"); +} + + +/************************************************************************* +Recurrent subroutine for the FFTGeneratePlan: + +PARAMETERS: + N plan size + IsReal whether input is real or not. + subroutine MUST NOT ignore this flag because real + inputs comes with non-initialized imaginary parts, + so ignoring this flag will result in corrupted output + HalfOut whether full output or only half of it from 0 to + floor(N/2) is needed. This flag may be ignored if + doing so will simplify calculations + Plan plan array + PlanSize size of used part (in integers) + PrecomputedSize size of precomputed array allocated yet + PlanArraySize plan array size (actual) + TmpMemSize temporary memory required size + BluesteinMemSize temporary memory required size + +-- ALGLIB -- + Copyright 01.05.2009 by Bochkanov Sergey +*************************************************************************/ +void PIFFT::ftbase_ftbasegenerateplanrec( + int n, + int tasktype, + ftplan* plan, + int* plansize, + int* precomputedsize, + int* planarraysize, + int* tmpmemsize, + int* stackmemsize, + ae_int_t stackptr, int debugi) +{ + int k, m, n1, n2, esize, entryoffset; + int ftbase_ftbaseplanentrysize = 8; + int ftbase_ftbasecffttask = 0; + int ftbase_fftcooleytukeyplan = 0; + int ftbase_fftbluesteinplan = 1; + int ftbase_fftcodeletplan = 2; + int ftbase_fftrealcooleytukeyplan = 5; + int ftbase_fftemptyplan = 6; + if( *plansize+ftbase_ftbaseplanentrysize>(*planarraysize)) { + curplan.plan.resize(8*(*planarraysize)); + *planarraysize = 8*(*planarraysize); + } + entryoffset = *plansize; + esize = ftbase_ftbaseplanentrysize; + *plansize = *plansize+esize; + if( n==1) { + curplan.plan[entryoffset+0] = esize; + curplan.plan[entryoffset+1] = -1; + curplan.plan[entryoffset+2] = -1; + curplan.plan[entryoffset+3] = ftbase_fftemptyplan; + curplan.plan[entryoffset+4] = -1; + curplan.plan[entryoffset+5] = -1; + curplan.plan[entryoffset+6] = -1; + curplan.plan[entryoffset+7] = -1; + return; + } + ftbasefactorize(n, &n1, &n2); + if( n1!=1) { + *tmpmemsize = piMax(*tmpmemsize, 2*n1*n2); + curplan.plan[entryoffset+0] = esize; + curplan.plan[entryoffset+1] = n1; + curplan.plan[entryoffset+2] = n2; + if( tasktype==ftbase_ftbasecffttask) + curplan.plan[entryoffset+3] = ftbase_fftcooleytukeyplan; + else + curplan.plan[entryoffset+3] = ftbase_fftrealcooleytukeyplan; + curplan.plan[entryoffset+4] = 0; + curplan.plan[entryoffset+5] = *plansize; + debugi++; + ftbase_ftbasegenerateplanrec(n1, ftbase_ftbasecffttask, plan, plansize, precomputedsize, planarraysize, tmpmemsize, stackmemsize, stackptr,debugi); + curplan.plan[entryoffset+6] = *plansize; + ftbase_ftbasegenerateplanrec(n2, ftbase_ftbasecffttask, plan, plansize, precomputedsize, planarraysize, tmpmemsize, stackmemsize, stackptr,debugi); + curplan.plan[entryoffset+7] = -1; + return; + } else { + if (n>=2 && n<=5) { + curplan.plan[entryoffset+0] = esize; + curplan.plan[entryoffset+1] = n1; + curplan.plan[entryoffset+2] = n2; + curplan.plan[entryoffset+3] = ftbase_fftcodeletplan; + curplan.plan[entryoffset+4] = 0; + curplan.plan[entryoffset+5] = -1; + curplan.plan[entryoffset+6] = -1; + curplan.plan[entryoffset+7] = *precomputedsize; + if( n==3) + *precomputedsize = *precomputedsize+2; + if( n==5) + *precomputedsize = *precomputedsize+5; + return; + } else { + k = 2*n2-1; + m = ftbasefindsmooth(k); + *tmpmemsize = piMax(*tmpmemsize, 2*m); + curplan.plan[entryoffset+0] = esize; + curplan.plan[entryoffset+1] = n2; + curplan.plan[entryoffset+2] = -1; + curplan.plan[entryoffset+3] = ftbase_fftbluesteinplan; + curplan.plan[entryoffset+4] = m; + curplan.plan[entryoffset+5] = *plansize; + stackptr = stackptr+2*2*m; + *stackmemsize = piMax(*stackmemsize, stackptr); + ftbase_ftbasegenerateplanrec(m, ftbase_ftbasecffttask, plan, plansize, precomputedsize, planarraysize, tmpmemsize, stackmemsize, stackptr); + stackptr = stackptr-2*2*m; + curplan.plan[entryoffset+6] = -1; + curplan.plan[entryoffset+7] = *precomputedsize; + *precomputedsize = *precomputedsize+2*m+2*n; + return; + } + } +} + + +/************************************************************************* +Recurrent subroutine for precomputing FFT plans + +-- ALGLIB -- + Copyright 01.05.2009 by Bochkanov Sergey +*************************************************************************/ +void PIFFT::ftbase_ftbaseprecomputeplanrec(ftplan* plan, + int entryoffset, + ae_int_t stackptr) +{ + int n1, n2, n, m, offs; + double v, bx, by; + int ftbase_fftcooleytukeyplan = 0; + int ftbase_fftbluesteinplan = 1; + int ftbase_fftcodeletplan = 2; + int ftbase_fhtcooleytukeyplan = 3; + int ftbase_fhtcodeletplan = 4; + int ftbase_fftrealcooleytukeyplan = 5; + if( (curplan.plan[entryoffset+3]==ftbase_fftcooleytukeyplan||curplan.plan[entryoffset+3]==ftbase_fftrealcooleytukeyplan)||curplan.plan[entryoffset+3]==ftbase_fhtcooleytukeyplan) { + ftbase_ftbaseprecomputeplanrec(plan, curplan.plan[entryoffset+5], stackptr); + ftbase_ftbaseprecomputeplanrec(plan, curplan.plan[entryoffset+6], stackptr); + return; + } + if( curplan.plan[entryoffset+3]==ftbase_fftcodeletplan||curplan.plan[entryoffset+3]==ftbase_fhtcodeletplan) { + n1 = curplan.plan[entryoffset+1]; + n2 = curplan.plan[entryoffset+2]; + n = n1*n2; + if( n==3) { + offs = curplan.plan[entryoffset+7]; + curplan.precomputed[offs+0] = cos(2*M_PI/3)-1; + curplan.precomputed[offs+1] = sin(2*M_PI/3); + return; + } + if( n==5) { + offs = curplan.plan[entryoffset+7]; + v = 2*M_PI/5; + curplan.precomputed[offs+0] = (cos(v)+cos(2*v))/2-1; + curplan.precomputed[offs+1] = (cos(v)-cos(2*v))/2; + curplan.precomputed[offs+2] = -sin(v); + curplan.precomputed[offs+3] = -(sin(v)+sin(2*v)); + curplan.precomputed[offs+4] = sin(v)-sin(2*v); + return; + } + } + if( curplan.plan[entryoffset+3]==ftbase_fftbluesteinplan) { + ftbase_ftbaseprecomputeplanrec(plan, curplan.plan[entryoffset+5], stackptr); + n = curplan.plan[entryoffset+1]; + m = curplan.plan[entryoffset+4]; + offs = curplan.plan[entryoffset+7]; + for(int i=0; i<=2*m-1; i++) + curplan.precomputed[offs+i] = 0; + for(int i=0; i0) { + curplan.precomputed[offs+2*(m-i)+0] = bx; + curplan.precomputed[offs+2*(m-i)+1] = by; + } + } + ftbaseexecuteplanrec(&curplan.precomputed, offs, plan, curplan.plan[entryoffset+5], stackptr); + return; + } +} + + +void PIFFT::ftbasefactorize(int n, int* n1, int* n2) { + *n1 = *n2 = 0; + int ftbase_ftbasecodeletrecommended = 5; + if( (*n1)*(*n2)!=n) { + for(int j=ftbase_ftbasecodeletrecommended; j>=2; j--) { + if( n%j==0) { + *n1 = j; + *n2 = n/j; + break; + } + } + } + if( (*n1)*(*n2)!=n) { + for(int j=ftbase_ftbasecodeletrecommended+1; j<=n-1; j++) { + if( n%j==0) { + *n1 = j; + *n2 = n/j; + break; + } + } + } + if( (*n1)*(*n2)!=n) { + *n1 = 1; + *n2 = n; + } + if( (*n2)==1 && (*n1)!=1) { + *n2 = *n1; + *n1 = 1; + } +} + + +/************************************************************************* +Is number smooth? + +-- ALGLIB -- + Copyright 01.05.2009 by Bochkanov Sergey +*************************************************************************/ +void PIFFT::ftbase_ftbasefindsmoothrec(int n, int seed, int leastfactor, int* best) { + if( seed>=n) { + *best = piMin(*best, seed); + return; + } + if( leastfactor<=2) + ftbase_ftbasefindsmoothrec(n, seed*2, 2, best); + if( leastfactor<=3) + ftbase_ftbasefindsmoothrec(n, seed*3, 3, best); + if( leastfactor<=5) + ftbase_ftbasefindsmoothrec(n, seed*5, 5, best); +} + + +int PIFFT::ftbasefindsmooth(int n) { + int best, result; + best = 2; + while(best* a, int m, int n, int astart, PIVector* buf) { + ftbase_fftirltrec(a, astart, n, buf, 0, m, m, n); + for (int i=0; i<2*m*n; i++) (*a)[astart+i] = (*buf)[i]; +} + + +void PIFFT::ftbase_fftirltrec(PIVector* a, int astart, int astride, PIVector* b, int bstart, int bstride, int m, int n) { + int idx1, idx2; + int m1, n1; + if( m==0||n==0) + return; + if( piMax(m, n)<=8) { + for(int i=0; i<=m-1; i++) { + idx1 = bstart+i; + idx2 = astart+i*astride; + for(int j=0; j<=n-1; j++) { + (*b)[idx1] = a->at(idx2); + idx1 = idx1+bstride; + idx2 = idx2+1; + } + } + return; + } + if( n>m) { + n1 = n/2; + if( n-n1>=8&&n1%8!=0) + n1 = n1+(8-n1%8); + ftbase_fftirltrec(a, astart, astride, b, bstart, bstride, m, n1); + ftbase_fftirltrec(a, astart+n1, astride, b, bstart+n1*bstride, bstride, m, n-n1); + } else { + m1 = m/2; + if( m-m1>=8&&m1%8!=0) + m1 = m1+(8-m1%8); + ftbase_fftirltrec(a, astart, astride, b, bstart, bstride, m1, n); + ftbase_fftirltrec(a, astart+m1*astride, astride, b, bstart+m1, bstride, m-m1, n); + } +} + + +void PIFFT::ftbase_internalcomplexlintranspose(PIVector* a, int m, int n, int astart, PIVector* buf) { + ftbase_ffticltrec(a, astart, n, buf, 0, m, m, n); + for (int i=0; i<2*m*n; i++) + (*a)[astart+i] = (*buf)[i]; +} + + +void PIFFT::ftbase_ffticltrec(PIVector* a, int astart, int astride, PIVector* b, int bstart, int bstride, int m, int n) { + int idx1, idx2, m2, m1, n1; + if( m==0||n==0) + return; + if( piMax(m, n)<=8) { + m2 = 2*bstride; + for(int i=0; i<=m-1; i++) { + idx1 = bstart+2*i; + idx2 = astart+2*i*astride; + for(int j=0; j<=n-1; j++) { + (*b)[idx1+0] = a->at(idx2+0); + (*b)[idx1+1] = a->at(idx2+1); + idx1 = idx1+m2; + idx2 = idx2+2; + } + } + return; + } + if( n>m) { + n1 = n/2; + if( n-n1>=8&&n1%8!=0) + n1 = n1+(8-n1%8); + ftbase_ffticltrec(a, astart, astride, b, bstart, bstride, m, n1); + ftbase_ffticltrec(a, astart+2*n1, astride, b, bstart+2*n1*bstride, bstride, m, n-n1); + } else { + m1 = m/2; + if( m-m1>=8&&m1%8!=0) + m1 = m1+(8-m1%8); + ftbase_ffticltrec(a, astart, astride, b, bstart, bstride, m1, n); + ftbase_ffticltrec(a, astart+2*m1*astride, astride, b, bstart+2*m1, bstride, m-m1, n); + } +} + + +void PIFFT::ftbaseexecuteplan(PIVector* a, int aoffset, int n, ftplan* plan) { + ae_int_t stackptr; + stackptr = 0; + ftbaseexecuteplanrec(a, aoffset, plan, 0, stackptr); +} + + +/************************************************************************* +Recurrent subroutine for the FTBaseExecutePlan + +Parameters: + A FFT'ed array + AOffset offset of the FFT'ed part (distance is measured in doubles) + +-- ALGLIB -- + Copyright 01.05.2009 by Bochkanov Sergey +*************************************************************************/ +void PIFFT::ftbaseexecuteplanrec(PIVector* a, int aoffset, ftplan* plan, int entryoffset, ae_int_t stackptr) { + int n1, n2, n, m, offs, offs1, offs2, offsa, offsb, offsp; + double hk, hnk, x, y, bx, by, v0, v1, v2, v3; + double a0x, a0y, a1x, a1y, a2x, a2y, a3x, a3y; + double t1x, t1y, t2x, t2y, t3x, t3y, t4x, t4y, t5x, t5y; + double m1x, m1y, m2x, m2y, m3x, m3y, m4x, m4y, m5x, m5y; + double s1x, s1y, s2x, s2y, s3x, s3y, s4x, s4y, s5x, s5y; + double c1, c2, c3, c4, c5; + int ftbase_fftcooleytukeyplan = 0; + int ftbase_fftbluesteinplan = 1; + int ftbase_fftcodeletplan = 2; + int ftbase_fhtcooleytukeyplan = 3; + int ftbase_fhtcodeletplan = 4; + int ftbase_fftrealcooleytukeyplan = 5; + int ftbase_fftemptyplan = 6; + PIVector & tmpb(curplan.tmpbuf); + + if( curplan.plan[entryoffset+3]==ftbase_fftemptyplan) + return; + if( curplan.plan[entryoffset+3]==ftbase_fftcooleytukeyplan) { + n1 = curplan.plan[entryoffset+1]; + n2 = curplan.plan[entryoffset+2]; + ftbase_internalcomplexlintranspose(a, n1, n2, aoffset, &(curplan.tmpbuf)); + for(int i=0; i<=n2-1; i++) + ftbaseexecuteplanrec(a, aoffset+i*n1*2, plan, curplan.plan[entryoffset+5], stackptr); + ftbase_ffttwcalc(a, aoffset, n1, n2); + ftbase_internalcomplexlintranspose(a, n2, n1, aoffset, &(curplan.tmpbuf)); + for(int i=0; i<=n1-1; i++) + ftbaseexecuteplanrec(a, aoffset+i*n2*2, plan, curplan.plan[entryoffset+6], stackptr); + ftbase_internalcomplexlintranspose(a, n1, n2, aoffset, &(curplan.tmpbuf)); + return; + } + if( curplan.plan[entryoffset+3]==ftbase_fftrealcooleytukeyplan) { + n1 = curplan.plan[entryoffset+1]; + n2 = curplan.plan[entryoffset+2]; + ftbase_internalcomplexlintranspose(a, n2, n1, aoffset, &(curplan.tmpbuf)); + for(int i=0; i<=n1/2-1; i++) { + offs = aoffset+2*i*n2*2; + for(int k=0; k<=n2-1; k++) + (*a)[offs+2*k+1] = (*a)[offs+2*n2+2*k+0]; + ftbaseexecuteplanrec(a, offs, plan, curplan.plan[entryoffset+6], stackptr); + tmpb[0] = (*a)[offs+0]; + tmpb[1] = 0; + tmpb[2*n2+0] = (*a)[offs+1]; + tmpb[2*n2+1] = 0; + for(int k=1; k<=n2-1; k++) { + offs1 = 2*k; + offs2 = 2*n2+2*k; + hk = (*a)[offs+2*k+0]; + hnk = (*a)[offs+2*(n2-k)+0]; + tmpb[offs1+0] = 0.5*(hk+hnk); + tmpb[offs2+1] = -0.5*(hk-hnk); + hk = (*a)[offs+2*k+1]; + hnk = (*a)[offs+2*(n2-k)+1]; + tmpb[offs2+0] = 0.5*(hk+hnk); + tmpb[offs1+1] = 0.5*(hk-hnk); + } + for (int i=0; i<2*n2*2; i++) (*a)[offs+i] = tmpb[i]; + } + if( n1%2!=0) + ftbaseexecuteplanrec(a, aoffset+(n1-1)*n2*2, plan, curplan.plan[entryoffset+6], stackptr); + ftbase_ffttwcalc(a, aoffset, n2, n1); + ftbase_internalcomplexlintranspose(a, n1, n2, aoffset, &(curplan.tmpbuf)); + for(int i=0; i<=n2-1; i++) + ftbaseexecuteplanrec(a, aoffset+i*n1*2, plan, curplan.plan[entryoffset+5], stackptr); + ftbase_internalcomplexlintranspose(a, n2, n1, aoffset, &(curplan.tmpbuf)); + return; + } + if( curplan.plan[entryoffset+3]==ftbase_fhtcooleytukeyplan) { + n1 = curplan.plan[entryoffset+1]; + n2 = curplan.plan[entryoffset+2]; + n = n1*n2; + ftbase_internalreallintranspose(a, n1, n2, aoffset, &(curplan.tmpbuf)); + for(int i=0; i<=n2-1; i++) + ftbaseexecuteplanrec(a, aoffset+i*n1, plan, curplan.plan[entryoffset+5], stackptr); + for(int i=0; i<=n2-1; i++) { + for(int j=0; j<=n1-1; j++) { + offsa = aoffset+i*n1; + hk = (*a)[offsa+j]; + hnk = (*a)[offsa+(n1-j)%n1]; + offs = 2*(i*n1+j); + tmpb[offs+0] = -0.5*(hnk-hk); + tmpb[offs+1] = 0.5*(hk+hnk); + } + } + ftbase_ffttwcalc(&(curplan.tmpbuf), 0, n1, n2); + for(int j=0; j<=n1-1; j++) + (*a)[aoffset+j] = tmpb[2*j+0]+tmpb[2*j+1]; + if( n2%2==0) { + offs = 2*(n2/2)*n1; + offsa = aoffset+n2/2*n1; + for(int j=0; j<=n1-1; j++) + (*a)[offsa+j] = tmpb[offs+2*j+0]+tmpb[offs+2*j+1]; + } + for(int i=1; i<=(n2+1)/2-1; i++) { + offs = 2*i*n1; + offs2 = 2*(n2-i)*n1; + offsa = aoffset+i*n1; + for(int j=0; j<=n1-1; j++) + (*a)[offsa+j] = tmpb[offs+2*j+1]+tmpb[offs2+2*j+0]; + offsa = aoffset+(n2-i)*n1; + for(int j=0; j<=n1-1; j++) + (*a)[offsa+j] = tmpb[offs+2*j+0]+tmpb[offs2+2*j+1]; + } + ftbase_internalreallintranspose(a, n2, n1, aoffset, &(curplan.tmpbuf)); + for(int i=0; i<=n1-1; i++) + ftbaseexecuteplanrec(a, aoffset+i*n2, plan, curplan.plan[entryoffset+6], stackptr); + ftbase_internalreallintranspose(a, n1, n2, aoffset, &(curplan.tmpbuf)); + return; + } + if( curplan.plan[entryoffset+3]==ftbase_fftcodeletplan) { + n1 = curplan.plan[entryoffset+1]; + n2 = curplan.plan[entryoffset+2]; + n = n1*n2; + if( n==2) { + a0x = (*a)[aoffset+0]; + a0y = (*a)[aoffset+1]; + a1x = (*a)[aoffset+2]; + a1y = (*a)[aoffset+3]; + v0 = a0x+a1x; + v1 = a0y+a1y; + v2 = a0x-a1x; + v3 = a0y-a1y; + (*a)[aoffset+0] = v0; + (*a)[aoffset+1] = v1; + (*a)[aoffset+2] = v2; + (*a)[aoffset+3] = v3; + return; + } + if( n==3) { + offs = curplan.plan[entryoffset+7]; + c1 = curplan.precomputed[offs+0]; + c2 = curplan.precomputed[offs+1]; + a0x = (*a)[aoffset+0]; + a0y = (*a)[aoffset+1]; + a1x = (*a)[aoffset+2]; + a1y = (*a)[aoffset+3]; + a2x = (*a)[aoffset+4]; + a2y = (*a)[aoffset+5]; + t1x = a1x+a2x; + t1y = a1y+a2y; + a0x = a0x+t1x; + a0y = a0y+t1y; + m1x = c1*t1x; + m1y = c1*t1y; + m2x = c2*(a1y-a2y); + m2y = c2*(a2x-a1x); + s1x = a0x+m1x; + s1y = a0y+m1y; + a1x = s1x+m2x; + a1y = s1y+m2y; + a2x = s1x-m2x; + a2y = s1y-m2y; + (*a)[aoffset+0] = a0x; + (*a)[aoffset+1] = a0y; + (*a)[aoffset+2] = a1x; + (*a)[aoffset+3] = a1y; + (*a)[aoffset+4] = a2x; + (*a)[aoffset+5] = a2y; + return; + } + if( n==4) { + a0x = (*a)[aoffset+0]; + a0y = (*a)[aoffset+1]; + a1x = (*a)[aoffset+2]; + a1y = (*a)[aoffset+3]; + a2x = (*a)[aoffset+4]; + a2y = (*a)[aoffset+5]; + a3x = (*a)[aoffset+6]; + a3y = (*a)[aoffset+7]; + t1x = a0x+a2x; + t1y = a0y+a2y; + t2x = a1x+a3x; + t2y = a1y+a3y; + m2x = a0x-a2x; + m2y = a0y-a2y; + m3x = a1y-a3y; + m3y = a3x-a1x; + (*a)[aoffset+0] = t1x+t2x; + (*a)[aoffset+1] = t1y+t2y; + (*a)[aoffset+4] = t1x-t2x; + (*a)[aoffset+5] = t1y-t2y; + (*a)[aoffset+2] = m2x+m3x; + (*a)[aoffset+3] = m2y+m3y; + (*a)[aoffset+6] = m2x-m3x; + (*a)[aoffset+7] = m2y-m3y; + return; + } + if( n==5) { + offs = curplan.plan[entryoffset+7]; + c1 = curplan.precomputed[offs+0]; + c2 = curplan.precomputed[offs+1]; + c3 = curplan.precomputed[offs+2]; + c4 = curplan.precomputed[offs+3]; + c5 = curplan.precomputed[offs+4]; + t1x = (*a)[aoffset+2]+(*a)[aoffset+8]; + t1y = (*a)[aoffset+3]+(*a)[aoffset+9]; + t2x = (*a)[aoffset+4]+(*a)[aoffset+6]; + t2y = (*a)[aoffset+5]+(*a)[aoffset+7]; + t3x = (*a)[aoffset+2]-(*a)[aoffset+8]; + t3y = (*a)[aoffset+3]-(*a)[aoffset+9]; + t4x = (*a)[aoffset+6]-(*a)[aoffset+4]; + t4y = (*a)[aoffset+7]-(*a)[aoffset+5]; + t5x = t1x+t2x; + t5y = t1y+t2y; + (*a)[aoffset+0] = (*a)[aoffset+0]+t5x; + (*a)[aoffset+1] = (*a)[aoffset+1]+t5y; + m1x = c1*t5x; + m1y = c1*t5y; + m2x = c2*(t1x-t2x); + m2y = c2*(t1y-t2y); + m3x = -c3*(t3y+t4y); + m3y = c3*(t3x+t4x); + m4x = -c4*t4y; + m4y = c4*t4x; + m5x = -c5*t3y; + m5y = c5*t3x; + s3x = m3x-m4x; + s3y = m3y-m4y; + s5x = m3x+m5x; + s5y = m3y+m5y; + s1x = (*a)[aoffset+0]+m1x; + s1y = (*a)[aoffset+1]+m1y; + s2x = s1x+m2x; + s2y = s1y+m2y; + s4x = s1x-m2x; + s4y = s1y-m2y; + (*a)[aoffset+2] = s2x+s3x; + (*a)[aoffset+3] = s2y+s3y; + (*a)[aoffset+4] = s4x+s5x; + (*a)[aoffset+5] = s4y+s5y; + (*a)[aoffset+6] = s4x-s5x; + (*a)[aoffset+7] = s4y-s5y; + (*a)[aoffset+8] = s2x-s3x; + (*a)[aoffset+9] = s2y-s3y; + return; + } + } + if( curplan.plan[entryoffset+3]==ftbase_fhtcodeletplan) { + n1 = curplan.plan[entryoffset+1]; + n2 = curplan.plan[entryoffset+2]; + n = n1*n2; + if( n==2) { + a0x = (*a)[aoffset+0]; + a1x = (*a)[aoffset+1]; + (*a)[aoffset+0] = a0x+a1x; + (*a)[aoffset+1] = a0x-a1x; + return; + } + if( n==3) { + offs = curplan.plan[entryoffset+7]; + c1 = curplan.precomputed[offs+0]; + c2 = curplan.precomputed[offs+1]; + a0x = (*a)[aoffset+0]; + a1x = (*a)[aoffset+1]; + a2x = (*a)[aoffset+2]; + t1x = a1x+a2x; + a0x = a0x+t1x; + m1x = c1*t1x; + m2y = c2*(a2x-a1x); + s1x = a0x+m1x; + (*a)[aoffset+0] = a0x; + (*a)[aoffset+1] = s1x-m2y; + (*a)[aoffset+2] = s1x+m2y; + return; + } + if( n==4) { + a0x = (*a)[aoffset+0]; + a1x = (*a)[aoffset+1]; + a2x = (*a)[aoffset+2]; + a3x = (*a)[aoffset+3]; + t1x = a0x+a2x; + t2x = a1x+a3x; + m2x = a0x-a2x; + m3y = a3x-a1x; + (*a)[aoffset+0] = t1x+t2x; + (*a)[aoffset+1] = m2x-m3y; + (*a)[aoffset+2] = t1x-t2x; + (*a)[aoffset+3] = m2x+m3y; + return; + } + if( n==5) { + offs = curplan.plan[entryoffset+7]; + c1 = curplan.precomputed[offs+0]; + c2 = curplan.precomputed[offs+1]; + c3 = curplan.precomputed[offs+2]; + c4 = curplan.precomputed[offs+3]; + c5 = curplan.precomputed[offs+4]; + t1x = (*a)[aoffset+1]+(*a)[aoffset+4]; + t2x = (*a)[aoffset+2]+(*a)[aoffset+3]; + t3x = (*a)[aoffset+1]-(*a)[aoffset+4]; + t4x = (*a)[aoffset+3]-(*a)[aoffset+2]; + t5x = t1x+t2x; + v0 = (*a)[aoffset+0]+t5x; + (*a)[aoffset+0] = v0; + m2x = c2*(t1x-t2x); + m3y = c3*(t3x+t4x); + s3y = m3y-c4*t4x; + s5y = m3y+c5*t3x; + s1x = v0+c1*t5x; + s2x = s1x+m2x; + s4x = s1x-m2x; + (*a)[aoffset+1] = s2x-s3y; + (*a)[aoffset+2] = s4x-s5y; + (*a)[aoffset+3] = s4x+s5y; + (*a)[aoffset+4] = s2x+s3y; + return; + } + } + if( curplan.plan[entryoffset+3]==ftbase_fftbluesteinplan) { + n = curplan.plan[entryoffset+1]; + m = curplan.plan[entryoffset+4]; + offs = curplan.plan[entryoffset+7]; + for(int i=stackptr+2*n; i<=stackptr+2*m-1; i++) + curplan.stackbuf[i] = 0; + offsp = offs+2*m; + offsa = aoffset; + offsb = stackptr; + for(int i=0; i * a, int aoffset, int n1, int n2) { + int n, idx, offs; + double x, y, twxm1, twy, twbasexm1, twbasey, twrowxm1, twrowy, tmpx, tmpy, v; + int ftbase_ftbaseupdatetw = 4; + n = n1*n2; + v = -2*M_PI/n; + twbasexm1 = -2*sqr(sin(0.5*v)); + twbasey = sin(v); + twrowxm1 = 0; + twrowy = 0; + for(int i=0, j = 0; i<=n2-1; i++) { + twxm1 = 0; + twy = 0; + for(j=0; j<=n1-1; j++) { + idx = i*n1+j; + offs = aoffset+2*idx; + x = (*a)[offs+0]; + y = (*a)[offs+1]; + tmpx = x*twxm1-y*twy; + tmpy = x*twy+y*twxm1; + (*a)[offs+0] = x+tmpx; + (*a)[offs+1] = y+tmpy; + if( j. +*/ + +#ifndef PIMATH_H +#define PIMATH_H + +#include "pibytearray.h" +#ifndef QNX +# include +# include +#else +# include +# include +# undef PIP_MATH_J0 +# undef PIP_MATH_J1 +# undef PIP_MATH_JN +# undef PIP_MATH_Y0 +# undef PIP_MATH_Y1 +# undef PIP_MATH_YN +#endif + +#ifndef M_LN2 +# define M_LN2 0.69314718055994530942 +#endif +#ifndef M_LN10 +# define M_LN10 2.30258509299404568402 +#endif +#ifndef M_SQRT2 +# define M_SQRT2 1.41421356237309514547 +#endif +#ifndef M_SQRT3 +# define M_SQRT3 1.73205080756887719318 +#endif +#ifndef M_1_SQRT2 +# define M_1_SQRT2 0.70710678118654746172 +#endif +#ifndef M_1_SQRT3 +# define M_1_SQRT3 0.57735026918962584208 +#endif +#ifndef M_PI +# define M_PI 3.14159265358979323846 +#endif +#ifndef M_2PI +# define M_2PI 6.28318530717958647692 +#endif +#ifndef M_PI_3 +# define M_PI_3 1.04719755119659774615 +#endif +#ifndef M_2PI_3 +# define M_2PI_3 2.0943951023931954923 +#endif +#ifndef M_180_PI +# define M_180_PI 57.2957795130823208768 +#endif +#ifndef M_PI_180 +# define M_PI_180 1.74532925199432957692e-2 +#endif +#ifndef M_E +# define M_E 2.7182818284590452353602874713527 +#endif +#ifndef M_LIGHT_SPEED +# define M_LIGHT_SPEED 2.99792458e+8 +#endif + +using std::complex; + +typedef complex complexi; +typedef complex complexf; +typedef complex complexd; +typedef complex complexld; +const complexld complexld_i(0., 1.); +const complexld complexld_0(0.); +const complexld complexld_1(1.); +const complexd complexd_i(0., 1.); +const complexd complexd_0(0.); +const complexd complexd_1(1.); + +__PICONTAINERS_SIMPLE_TYPE__(complexi) +__PICONTAINERS_SIMPLE_TYPE__(complexf) +__PICONTAINERS_SIMPLE_TYPE__(complexd) +__PICONTAINERS_SIMPLE_TYPE__(complexld) + +const double deg2rad = M_PI_180; +const double rad2deg = M_180_PI; + +inline int sign(const float & x) {return (x < 0.) ? -1 : (x > 0. ? 1 : 0);} +inline int sign(const double & x) {return (x < 0.) ? -1 : (x > 0. ? 1 : 0);} +inline complexd sign(const complexd & x) {return complexd(sign(x.real()), sign(x.imag()));} +inline int pow2(const int p) {return 1 << p;} +inline double sqr(const int v) {return v * v;} +inline double sqr(const float & v) {return v * v;} +inline double sqr(const double & v) {return v * v;} +inline double sinc(const double & v) {if (v == 0.) return 1.; double t = M_PI * v; return sin(t) / t;} +inline complexd round(const complexd & c) {return complexd(piRound(c.real()), piRound(c.imag()));} +inline complexd floor(const complexd & c) {return complexd(floor(c.real()), floor(c.imag()));} +inline complexd ceil(const complexd & c) {return complexd(ceil(c.real()), ceil(c.imag()));} +inline complexd atanc(const complexd & c) {return -complexd(-0.5, 1.) * log((complexd_1 + complexd_i * c) / (complexd_1 - complexd_i * c));} +inline complexd asinc(const complexd & c) {return -complexd_i * log(complexd_i * c + sqrt(complexd_1 - c * c));} +inline complexd acosc(const complexd & c) {return -complexd_i * log(c + complexd_i * sqrt(complexd_1 - c * c));} +#ifdef CC_GCC +# if CC_GCC_VERSION <= 0x025F +inline complexd tan(const complexd & c) {return sin(c) / cos(c);} +inline complexd tanh(const complexd & c) {return sinh(c) / cosh(c);} +inline complexd log2(const complexd & c) {return log(c) / M_LN2;} +inline complexd log10(const complexd & c) {return log(c) / M_LN10;} +# endif +#endif +double piJ0(const double & v); +double piJ1(const double & v); +double piJn(int n, const double & v); +double piY0(const double & v); +double piY1(const double & v); +double piYn(int n, const double & v); +inline double toDb(double val) {return 10. * log10(val);} +inline double fromDb(double val) {return pow(10., val / 10.);} +inline double toRad(double deg) {return deg * M_PI_180;} +inline double toDeg(double rad) {return rad * M_180_PI;} + +template +inline PICout operator <<(PICout s, const complex & v) {s.space(); s.setControl(0, true); s << "(" << v.real() << "; " << v.imag() << ")"; s.restoreControl(); return s;} + +// [-1 ; 1] +inline double randomd() {return (double)random() / RAND_MAX * 2. - 1.;} +// [-1 ; 1] normal +double randomn(double dv = 0., double sv = 1.); + +inline PIVector abs(const PIVector & v) { + PIVector result; + result.resize(v.size()); + for (uint i = 0; i < v.size(); i++) + result[i] = abs(v[i]); + return result; +} +inline PIVector abs(const PIVector & v) { + PIVector result; + result.resize(v.size()); + for (uint i = 0; i < v.size(); i++) + result[i] = abs(v[i]); + return result; +} + +template +class PIMathMatrixT; + +/// Vector templated + +#define PIMV_FOR(v, s) for (uint v = s; v < Size; ++v) + +#pragma pack(push, 1) +template +class PIP_EXPORT PIMathVectorT { + typedef PIMathVectorT _CVector; +public: + PIMathVectorT() {resize(Size);} + //PIMathVectorT(Type val) {resize(Size); PIMV_FOR(i, 0) c[i] = val;} + PIMathVectorT(Type fval, ...) {resize(Size); c[0] = fval; va_list vl; va_start(vl, fval); PIMV_FOR(i, 1) c[i] = va_arg(vl, Type); va_end(vl);} + PIMathVectorT(const PIVector & val) {resize(Size); PIMV_FOR(i, 0) c[i] = val[i];} + PIMathVectorT(const _CVector & st, const _CVector & fn) {resize(Size); set(st, fn);} + + uint size() const {return Size;} + _CVector & fill(const Type & v) {PIMV_FOR(i, 0) c[i] = v; return *this;} + _CVector & set(Type fval, ...) {c[0] = fval; va_list vl; va_start(vl, fval); PIMV_FOR(i, 1) c[i] = va_arg(vl, Type); va_end(vl); return *this;} + _CVector & set(const _CVector & st, const _CVector & fn) {PIMV_FOR(i, 0) c[i] = fn[i] - st[i]; return *this;} + _CVector & move(const Type & v) {PIMV_FOR(i, 0) c[i] += v; return *this;} + _CVector & move(const _CVector & v) {PIMV_FOR(i, 0) c[i] += v[i]; return *this;} + _CVector & move(Type fval, ...) {c[0] += fval; va_list vl; va_start(vl, fval); PIMV_FOR(i, 1) c[i] += va_arg(vl, Type); va_end(vl); return *this;} + Type lengthSqr() const {Type tv(0); PIMV_FOR(i, 0) tv += (c[i] * c[i]); return tv;} + Type length() const {return sqrt(lengthSqr());} + Type manhattanLength() const {Type tv(0); PIMV_FOR(i, 0) tv += fabs(c[i]); return tv;} + Type angleCos(const _CVector & v) const {Type tv = v.length() * length(); return (tv == Type(0) ? Type(0) : ((*this) ^ v) / tv);} + Type angleSin(const _CVector & v) const {Type tv = angleCos(v); return sqrt(Type(1) - tv * tv);} + Type angleRad(const _CVector & v) const {return acos(angleCos(v));} + Type angleDeg(const _CVector & v) const {return toDeg(acos(angleCos(v)));} + _CVector projection(const _CVector & v) {Type tv = v.length(); return (tv == Type(0) ? _CVector() : v * (((*this) ^ v) / tv));} + _CVector & normalize() {Type tv = length(); if (tv == Type(1)) return *this; if (piAbs(tv) <= Type(1E-100)) {fill(Type(0)); return *this;} PIMV_FOR(i, 0) c[i] /= tv; return *this;} + _CVector normalized() {_CVector tv(*this); tv.normalize(); return tv;} + bool isNull() const {PIMV_FOR(i, 0) if (c[i] != Type(0)) return false; return true;} + bool isOrtho(const _CVector & v) const {return ((*this) ^ v) == Type(0);} + + Type & at(uint index) {return c[index];} + Type at(uint index) const {return c[index];} + Type & operator [](uint index) {return c[index];} + Type operator [](uint index) const {return c[index];} + _CVector & operator =(const _CVector & v) {memcpy(c, v.c, sizeof(Type) * Size); return *this;} + bool operator ==(const _CVector & v) const {PIMV_FOR(i, 0) if (c[i] != v[i]) return false; return true;} + bool operator !=(const _CVector & v) const {return !(*this == c);} + void operator +=(const _CVector & v) {PIMV_FOR(i, 0) c[i] += v[i];} + void operator -=(const _CVector & v) {PIMV_FOR(i, 0) c[i] -= v[i];} + void operator *=(const Type & v) {PIMV_FOR(i, 0) c[i] *= v;} + void operator *=(const _CVector & v) {PIMV_FOR(i, 0) c[i] *= v[i];} + void operator /=(const Type & v) {PIMV_FOR(i, 0) c[i] /= v;} + void operator /=(const _CVector & v) {PIMV_FOR(i, 0) c[i] /= v[i];} + _CVector operator -() const {_CVector tv; PIMV_FOR(i, 0) tv[i] = -c[i]; return tv;} + _CVector operator +(const _CVector & v) const {_CVector tv = _CVector(*this); PIMV_FOR(i, 0) tv[i] += v[i]; return tv;} + _CVector operator -(const _CVector & v) const {_CVector tv = _CVector(*this); PIMV_FOR(i, 0) tv[i] -= v[i]; return tv;} + _CVector operator *(const Type & v) const {_CVector tv = _CVector(*this); PIMV_FOR(i, 0) tv[i] *= v; return tv;} + _CVector operator /(const Type & v) const {_CVector tv = _CVector(*this); PIMV_FOR(i, 0) tv[i] /= v; return tv;} + _CVector operator /(const _CVector & v) const {_CVector tv = _CVector(*this); PIMV_FOR(i, 0) tv[i] /= v[i]; return tv;} + _CVector operator *(const _CVector & v) const {if (Size > 3) return _CVector(); _CVector tv; tv.fill(Type(1)); tv[0] = c[1]*v[2] - v[1]*c[2]; tv[1] = v[0]*c[2] - c[0]*v[2]; tv[2] = c[0]*v[1] - v[0]*c[1]; return tv;} + Type operator ^(const _CVector & v) const {Type tv(0); PIMV_FOR(i, 0) tv += c[i] * v[i]; return tv;} + + operator PIMathMatrixT<1, Size, Type>() {return PIMathMatrixT<1, Size, Type>(c);} + Type distToLine(const _CVector & lp0, const _CVector & lp1) { + _CVector a(lp0, lp1), b(lp0, *this), c(lp1, *this); + Type f = fabs(a[0]*b[1] - a[1]*b[0]) / a.length();//, s = b.length() + c.length() - a.length(); + return f;} + + template /// vector {Size, Type} to vector {Size1, Type1} + PIMathVectorT turnTo() const {PIMathVectorT tv; uint sz = piMin(Size, Size1); for (uint i = 0; i < sz; ++i) tv[i] = c[i]; return tv;} + +private: + void resize(uint size, const Type & new_value = Type()) {s = size; for (int i = 0; i < s; ++i) c[i] = new_value;} + + int s; + Type c[Size]; + +}; +#pragma pack(pop) + +template +inline std::ostream & operator <<(std::ostream & s, const PIMathVectorT & v) {s << '{'; PIMV_FOR(i, 0) {s << v[i]; if (i < Size - 1) s << ", ";} s << '}'; return s;} +template +inline PICout operator <<(PICout s, const PIMathVectorT & v) {s << '{'; PIMV_FOR(i, 0) {s << v[i]; if (i < Size - 1) s << ", ";} s << '}'; return s;} +template +inline bool operator ||(const PIMathVectorT & f, const PIMathVectorT & s) {return (f * s).isNull();} +template +inline PIMathVectorT sqrt(const PIMathVectorT & v) {PIMathVectorT ret; PIMV_FOR(i, 0) {ret[i] = sqrt(v[i]);} return ret;} +template +inline PIMathVectorT sqr(const PIMathVectorT & v) {PIMathVectorT ret; PIMV_FOR(i, 0) {ret[i] = sqr(v[i]);} return ret;} + +template +inline PIByteArray & operator <<(PIByteArray & s, const PIMathVectorT & v) {for (int i = 0; i < Size; ++i) s << v[i]; return s;} +template +inline PIByteArray & operator >>(PIByteArray & s, PIMathVectorT & v) {for (int i = 0; i < Size; ++i) s >> v[i]; return s;} + +//template /// vector {Size0, Type0} to vector {Size1, Type1} +//inline operator PIMathVectorT(const PIMathVectorT & v) {PIMathVectorT tv; uint sz = piMin(Size0, Size1); for (uint i = 0; i < sz; ++i) tv[i] = v[i]; return tv;} + +typedef PIMathVectorT<2u, int> PIMathVectorT2i; +typedef PIMathVectorT<3u, int> PIMathVectorT3i; +typedef PIMathVectorT<4u, int> PIMathVectorT4i; +typedef PIMathVectorT<2u, double> PIMathVectorT2d; +typedef PIMathVectorT<3u, double> PIMathVectorT3d; +typedef PIMathVectorT<4u, double> PIMathVectorT4d; + +/// Matrix templated + +#define PIMM_FOR(c, r) for (uint c = 0; c < Cols; ++c) { for (uint r = 0; r < Rows; ++r) { +#define PIMM_FOR_WB(c, r) for (uint c = 0; c < Cols; ++c) for (uint r = 0; r < Rows; ++r) // without brakes +#define PIMM_FOR_I(c, r) for (uint r = 0; r < Rows; ++r) { for (uint c = 0; c < Cols; ++c) { +#define PIMM_FOR_I_WB(c, r) for (uint r = 0; r < Rows; ++r) for (uint c = 0; c < Cols; ++c) // without brakes +#define PIMM_FOR_C(v) for (uint v = 0; v < Cols; ++v) +#define PIMM_FOR_R(v) for (uint v = 0; v < Rows; ++v) + +#pragma pack(push, 1) +template +class PIP_EXPORT PIMathMatrixT { + typedef PIMathMatrixT _CMatrix; + typedef PIMathMatrixT _CMatrixI; + typedef PIMathVectorT _CMCol; + typedef PIMathVectorT _CMRow; +public: + PIMathMatrixT() {resize(Cols, Rows);} + PIMathMatrixT(Type fval, ...) {resize(Cols, Rows); va_list vl; va_start(vl, fval); PIMM_FOR_I_WB(c, r) m[c][r] = (r + c == 0 ? fval : va_arg(vl, Type)); va_end(vl);} + PIMathMatrixT(const PIVector & val) {resize(Cols, Rows); int i = 0; PIMM_FOR_I_WB(c, r) m[c][r] = val[i++];} + + static _CMatrix identity() {_CMatrix tm = _CMatrix(); PIMM_FOR_WB(c, r) tm.m[c][r] = (c == r ? Type(1) : Type(0)); return tm;} + static _CMatrix rotation(double angle) {return _CMatrix();} + static _CMatrix rotationX(double angle) {return _CMatrix();} + static _CMatrix rotationY(double angle) {return _CMatrix();} + static _CMatrix rotationZ(double angle) {return _CMatrix();} + + uint cols() const {return Cols;} + uint rows() const {return Rows;} + _CMCol col(uint index) {_CMCol tv; PIMM_FOR_R(i) tv[i] = m[index][i]; return tv;} + _CMRow row(uint index) {_CMRow tv; PIMM_FOR_C(i) tv[i] = m[i][index]; return tv;} + _CMatrix & setCol(uint index, const _CMCol & v) {PIMM_FOR_R(i) m[index][i] = v[i]; return *this;} + _CMatrix & setRow(uint index, const _CMRow & v) {PIMM_FOR_C(i) m[i][index] = v[i]; return *this;} + _CMatrix & swapRows(uint r0, uint r1) {Type t; PIMM_FOR_C(i) {t = m[i][r0]; m[i][r0] = m[i][r1]; m[i][r1] = t;} return *this;} + _CMatrix & swapCols(uint c0, uint c1) {Type t; PIMM_FOR_R(i) {t = m[c0][i]; m[c0][i] = m[c1][i]; m[c1][i] = t;} return *this;} + _CMatrix & fill(const Type & v) {PIMM_FOR_WB(c, r) m[c][r] = v; return *this;} + //inline _CMatrix & set(Type fval, ...) {m[0] = fval; va_list vl; va_start(vl, fval); PIMV_FOR(i, 1) m[i] = va_arg(vl, Type); va_end(vl); return *this;} + //inline void normalize() {Type tv = length(); if (tv == Type(1)) return; PIMV_FOR(i, 0) m[i] /= tv;} + bool isSquare() const {return cols() == rows();} + bool isIdentity() const {PIMM_FOR_WB(c, r) if ((c == r) ? m[c][r] != Type(1) : m[c][r] != Type(0)) return false; return true;} + bool isNull() const {PIMM_FOR_WB(c, r) if (m[c][r] != Type(0)) return false; return true;} + + Type & at(uint col, uint row) {return m[col][row];} + Type at(uint col, uint row) const {return m[col][row];} + Type * operator [](uint col) {return m[col];} + const Type * operator [](uint col) const {return m[col];} + void operator =(const _CMatrix & sm) {memcpy(m, sm.m, sizeof(Type) * Cols * Rows);} + bool operator ==(const _CMatrix & sm) const {PIMM_FOR_WB(c, r) if (m[c][r] != sm.m[c][r]) return false; return true;} + bool operator !=(const _CMatrix & sm) const {return !(*this == sm);} + void operator +=(const _CMatrix & sm) {PIMM_FOR_WB(c, r) m[c][r] += sm.m[c][r];} + void operator -=(const _CMatrix & sm) {PIMM_FOR_WB(c, r) m[c][r] -= sm.m[c][r];} + void operator *=(const Type & v) {PIMM_FOR_WB(c, r) m[c][r] *= v;} + void operator /=(const Type & v) {PIMM_FOR_WB(c, r) m[c][r] /= v;} + _CMatrix operator -() {_CMatrix tm; PIMM_FOR_WB(c, r) tm.m[c][r] = -m[c][r]; return tm;} + _CMatrix operator +(const _CMatrix & sm) {_CMatrix tm = _CMatrix(*this); PIMM_FOR_WB(c, r) tm.m[c][r] += sm.m[c][r]; return tm;} + _CMatrix operator -(const _CMatrix & sm) {_CMatrix tm = _CMatrix(*this); PIMM_FOR_WB(c, r) tm.m[c][r] -= sm.m[c][r]; return tm;} + _CMatrix operator *(const Type & v) {_CMatrix tm = _CMatrix(*this); PIMM_FOR_WB(c, r) tm.m[c][r] *= v; return tm;} + _CMatrix operator /(const Type & v) {_CMatrix tm = _CMatrix(*this); PIMM_FOR_WB(c, r) tm.m[c][r] /= v; return tm;} + + _CMatrix & toUpperTriangular(bool * ok = 0) { + if (Cols != Rows) { + if (ok != 0) *ok = false; + return *this; + } + _CMatrix smat(*this); + bool ndet; + uint crow; + Type mul; + for (uint i = 0; i < Cols; ++i) { + ndet = true; + for (uint j = 0; j < Rows; ++j) if (smat.m[i][j] != 0) ndet = false; + if (ndet) { + if (ok != 0) *ok = false; + return *this; + } + for (uint j = 0; j < Cols; ++j) if (smat.m[j][i] != 0) ndet = false; + if (ndet) { + if (ok != 0) *ok = false; + return *this; + } + } + for (uint i = 0; i < Cols; ++i) { + crow = i; + while (smat.m[i][i] == Type(0)) + smat.swapRows(i, ++crow); + for (uint j = i + 1; j < Rows; ++j) { + mul = smat.m[i][j] / smat.m[i][i]; + for (uint k = i; k < Cols; ++k) smat.m[k][j] -= mul * smat.m[k][i]; + } + if (i < Cols - 1) { + if (fabs(smat.m[i+1][i+1]) < Type(1E-100)) { + if (ok != 0) *ok = false; + return *this; + } + } + } + if (ok != 0) *ok = true; + memcpy(m, smat.m, sizeof(Type) * Cols * Rows); + return *this; + } + + _CMatrix & invert(bool * ok = 0) { + if (Cols != Rows) { + if (ok != 0) *ok = false; + return *this; + } + _CMatrix mtmp = _CMatrix::identity(), smat(*this); + bool ndet; + uint crow; + Type mul, iddiv; + for (uint i = 0; i < Cols; ++i) { + ndet = true; + for (uint j = 0; j < Rows; ++j) if (smat.m[i][j] != 0) ndet = false; + if (ndet) { + if (ok != 0) *ok = false; + return *this; + } + for (uint j = 0; j < Cols; ++j) if (smat.m[j][i] != 0) ndet = false; + if (ndet) { + if (ok != 0) *ok = false; + return *this; + } + } + for (uint i = 0; i < Cols; ++i) { + crow = i; + while (smat.m[i][i] == Type(0)) { + ++crow; + smat.swapRows(i, crow); + mtmp.swapRows(i, crow); + } + for (uint j = i + 1; j < Rows; ++j) { + mul = smat.m[i][j] / smat.m[i][i]; + for (uint k = i; k < Cols; ++k) smat.m[k][j] -= mul * smat.m[k][i]; + for (uint k = 0; k < Cols; ++k) mtmp.m[k][j] -= mul * mtmp.m[k][i]; + } + //cout << i << endl << smat << endl; + if (i < Cols - 1) { + if (fabs(smat.m[i+1][i+1]) < Type(1E-100)) { + if (ok != 0) *ok = false; + return *this; + } + } + iddiv = smat.m[i][i]; + for (uint j = i; j < Cols; ++j) smat.m[j][i] /= iddiv; + for (uint j = 0; j < Cols; ++j) mtmp.m[j][i] /= iddiv; + } + for (uint i = Cols - 1; i > 0; --i) { + for (uint j = 0; j < i; ++j) { + mul = smat.m[i][j]; + smat.m[i][j] -= mul; + for (uint k = 0; k < Cols; ++k) mtmp.m[k][j] -= mtmp.m[k][i] * mul; + } + } + if (ok != 0) *ok = true; + memcpy(m, mtmp.m, sizeof(Type) * Cols * Rows); + return *this; + } + _CMatrix inverted(bool * ok = 0) {_CMatrix tm(*this); tm.invert(ok); return tm;} + _CMatrixI transposed() {_CMatrixI tm; PIMM_FOR_WB(c, r) tm[r][c] = m[c][r]; return tm;} + +private: + void resize(uint cols_, uint rows_, const Type & new_value = Type()) {c_ = cols_; r_ = rows_; PIMM_FOR_WB(c, r) m[c][r] = new_value;} + int c_, r_; + Type m[Cols][Rows]; + +}; +#pragma pack(pop) + + +template<> inline PIMathMatrixT<2u, 2u> PIMathMatrixT<2u, 2u>::rotation(double angle) {double c = cos(angle), s = sin(angle); PIMathMatrixT<2u, 2u> tm; tm[0][0] = tm[1][1] = c; tm[0][1] = -s; tm[1][0] = s; return tm;} +template<> inline PIMathMatrixT<3u, 3u> PIMathMatrixT<3u, 3u>::rotationX(double angle) {double c = cos(angle), s = sin(angle); PIMathMatrixT<3u, 3u> tm; tm[0][0] = 1.; tm[1][1] = tm[2][2] = c; tm[2][1] = -s; tm[1][2] = s; return tm;} +template<> inline PIMathMatrixT<3u, 3u> PIMathMatrixT<3u, 3u>::rotationY(double angle) {double c = cos(angle), s = sin(angle); PIMathMatrixT<3u, 3u> tm; tm[1][1] = 1.; tm[0][0] = tm[2][2] = c; tm[2][0] = s; tm[0][2] = -s; return tm;} +template<> inline PIMathMatrixT<3u, 3u> PIMathMatrixT<3u, 3u>::rotationZ(double angle) {double c = cos(angle), s = sin(angle); PIMathMatrixT<3u, 3u> tm; tm[2][2] = 1.; tm[0][0] = tm[1][1] = c; tm[1][0] = -s; tm[0][1] = s; return tm;} + +template +inline std::ostream & operator <<(std::ostream & s, const PIMathMatrixT & m) {s << '{'; PIMM_FOR_I(c, r) s << m[c][r]; if (c < Cols - 1 || r < Rows - 1) s << ", ";} if (r < Rows - 1) s << endl << ' ';} s << '}'; return s;} +template +inline PICout operator <<(PICout s, const PIMathMatrixT & m) {s << '{'; PIMM_FOR_I(c, r) s << m[c][r]; if (c < Cols - 1 || r < Rows - 1) s << ", ";} if (r < Rows - 1) s << NewLine << ' ';} s << '}'; return s;} + +/// Multiply matrices {CR x Rows0} on {Cols1 x CR}, result is {Cols1 x Rows0} +template +inline PIMathMatrixT operator *(const PIMathMatrixT & fm, + const PIMathMatrixT & sm) { + PIMathMatrixT tm; + Type t; + for (uint j = 0; j < Rows0; ++j) { + for (uint i = 0; i < Cols1; ++i) { + t = Type(0); + for (uint k = 0; k < CR; ++k) + t += fm[k][j] * sm[i][k]; + tm[i][j] = t; + } + } + return tm; +} + +/// Multiply matrix {Cols x Rows} on vector {Cols}, result is vector {Rows} +template +inline PIMathVectorT operator *(const PIMathMatrixT & fm, + const PIMathVectorT & sv) { + PIMathVectorT tv; + Type t; + for (uint i = 0; i < Rows; ++i) { + t = Type(0); + for (uint j = 0; j < Cols; ++j) + t += fm[j][i] * sv[j]; + tv[i] = t; + } + return tv; +} + +typedef PIMathMatrixT<2u, 2u, int> PIMathMatrixT22i; +typedef PIMathMatrixT<3u, 3u, int> PIMathMatrixT33i; +typedef PIMathMatrixT<4u, 4u, int> PIMathMatrixT44i; +typedef PIMathMatrixT<2u, 2u, double> PIMathMatrixT22d; +typedef PIMathMatrixT<3u, 3u, double> PIMathMatrixT33d; +typedef PIMathMatrixT<4u, 4u, double> PIMathMatrixT44d; + + +template +class PIMathMatrix; + +#undef PIMV_FOR +#undef PIMM_FOR +#undef PIMM_FOR_WB +#undef PIMM_FOR_I +#undef PIMM_FOR_I_WB +#undef PIMM_FOR_C +#undef PIMM_FOR_R + +/// Vector + +#define PIMV_FOR(v, s) for (uint v = s; v < size_; ++v) + +template +class PIP_EXPORT PIMathVector { + typedef PIMathVector _CVector; +public: + PIMathVector(const uint size = 3) {resize(size);} + PIMathVector(const uint size, Type fval, ...) {resize(size); c[0] = fval; va_list vl; va_start(vl, fval); PIMV_FOR(i, 1) c[i] = va_arg(vl, Type); va_end(vl);} + PIMathVector(const PIVector & val) {resize(val.size); PIMV_FOR(i, 0) c[i] = val[i];} + PIMathVector(const _CVector & st, const _CVector & fn) {resize(st.size()); PIMV_FOR(i, 0) c[i] = fn[i] - st[i];} + + uint size() const {return size_;} + _CVector & resize(uint size, const Type & new_value = Type()) {size_ = size; c.resize(size, new_value); return *this;} + _CVector resized(uint size, const Type & new_value = Type()) {_CVector tv = _CVector(*this); tv.resize(size, new_value); return tv;} + _CVector & fill(const Type & v) {PIMV_FOR(i, 0) c[i] = v; return *this;} + _CVector & set(Type fval, ...) {c[0] = fval; va_list vl; va_start(vl, fval); PIMV_FOR(i, 1) c[i] = va_arg(vl, Type); va_end(vl); return *this;} + _CVector & move(const Type & v) {PIMV_FOR(i, 0) c[i] += v; return *this;} + _CVector & move(const _CVector & v) {PIMV_FOR(i, 0) c[i] += v[i]; return *this;} + _CVector & move(Type fval, ...) {c[0] += fval; va_list vl; va_start(vl, fval); PIMV_FOR(i, 1) c[i] += va_arg(vl, Type); va_end(vl); return *this;} + _CVector & swap(uint fe, uint se) {piSwap(c[fe], c[se]); return *this;} + Type lengthSqr() const {Type tv(0); PIMV_FOR(i, 0) tv += (c[i] * c[i]); return tv;} + Type length() const {return sqrt(lengthSqr());} + Type manhattanLength() const {Type tv(0); PIMV_FOR(i, 0) tv += fabs(c[i]); return tv;} + Type angleCos(const _CVector & v) const {Type tv = v.length() * length(); return (tv == Type(0) ? Type(0) : ((*this) ^ v) / tv);} + Type angleSin(const _CVector & v) const {Type tv = angleCos(v); return sqrt(Type(1) - tv * tv);} + Type angleRad(const _CVector & v) const {return acos(angleCos(v));} + Type angleDeg(const _CVector & v) const {return toDeg(acos(angleCos(v)));} + _CVector projection(const _CVector & v) {Type tv = v.length(); return (tv == Type(0) ? _CVector() : v * (((*this) ^ v) / tv));} + _CVector & normalize() {Type tv = length(); if (tv == Type(1)) return *this; if (piAbs(tv) <= Type(1E-100)) {fill(Type(0)); return *this;} PIMV_FOR(i, 0) c[i] /= tv; return *this;} + _CVector normalized() {_CVector tv(*this); tv.normalize(); return tv;} + bool isNull() const {PIMV_FOR(i, 0) if (c[i] != Type(0)) return false; return true;} + bool isOrtho(const _CVector & v) const {return ((*this) ^ v) == Type(0);} + + Type & at(uint index) {return c[index];} + Type at(uint index) const {return c[index];} + Type & operator [](uint index) {return c[index];} + Type operator [](uint index) const {return c[index];} + void operator =(const _CVector & v) {c = v.c;} + bool operator ==(const _CVector & v) const {PIMV_FOR(i, 0) if (c[i] != v[i]) return false; return true;} + bool operator !=(const _CVector & v) const {return !(*this == c);} + void operator +=(const _CVector & v) {PIMV_FOR(i, 0) c[i] += v[i];} + void operator -=(const _CVector & v) {PIMV_FOR(i, 0) c[i] -= v[i];} + void operator *=(const Type & v) {PIMV_FOR(i, 0) c[i] *= v;} + void operator *=(const _CVector & v) {PIMV_FOR(i, 0) c[i] *= v[i];} + void operator /=(const Type & v) {PIMV_FOR(i, 0) c[i] /= v;} + void operator /=(const _CVector & v) {PIMV_FOR(i, 0) c[i] /= v[i];} + _CVector operator -() {_CVector tv; PIMV_FOR(i, 0) tv[i] = -c[i]; return tv;} + _CVector operator +(const _CVector & v) {_CVector tv = _CVector(*this); PIMV_FOR(i, 0) tv[i] += v[i]; return tv;} + _CVector operator -(const _CVector & v) {_CVector tv = _CVector(*this); PIMV_FOR(i, 0) tv[i] -= v[i]; return tv;} + _CVector operator *(const Type & v) {_CVector tv = _CVector(*this); PIMV_FOR(i, 0) tv[i] *= v; return tv;} + _CVector operator /(const Type & v) {_CVector tv = _CVector(*this); PIMV_FOR(i, 0) tv[i] /= v; return tv;} + _CVector operator *(const _CVector & v) {if (size_ < 3) return _CVector(); _CVector tv; tv.fill(Type(1)); tv[0] = c[1]*v[2] - v[1]*c[2]; tv[1] = v[0]*c[2] - c[0]*v[2]; tv[2] = c[0]*v[1] - v[0]*c[1]; return tv;} + Type operator ^(const _CVector & v) const {Type tv(0); PIMV_FOR(i, 0) tv += c[i] * v[i]; return tv;} + + //inline operator PIMathMatrix<1, Size, Type>() {return PIMathMatrix<1, Size, Type>(c);} + Type distToLine(const _CVector & lp0, const _CVector & lp1) { + _CVector a(lp0, lp1), b(lp0, *this), c(lp1, *this); + Type f = fabs(a[0]*b[1] - a[1]*b[0]) / a.length();//, s = b.length() + c.length() - a.length(); + return f;} + + template + PIMathVector turnTo(uint size) {PIMathVector tv; uint sz = piMin(size_, size); for (uint i = 0; i < sz; ++i) tv[i] = c[i]; return tv;} + +private: + uint size_; + PIVector c; + +}; + +template +inline std::ostream & operator <<(std::ostream & s, const PIMathVector & v) {s << '{'; for (uint i = 0; i < v.size(); ++i) {s << v[i]; if (i < v.size() - 1) s << ", ";} s << '}'; return s;} +template +inline PICout operator <<(PICout s, const PIMathVector & v) {s << '{'; for (uint i = 0; i < v.size(); ++i) {s << v[i]; if (i < v.size() - 1) s << ", ";} s << '}'; return s;} + +typedef PIMathVector PIMathVectori; +typedef PIMathVector PIMathVectord; + +/// Matrix + +#define PIMM_FOR(c, r) for (uint c = 0; c < cols_; ++c) { for (uint r = 0; r < rows_; ++r) { +#define PIMM_FOR_WB(c, r) for (uint c = 0; c < cols_; ++c) for (uint r = 0; r < rows_; ++r) // without brakes +#define PIMM_FOR_I(c, r) for (uint r = 0; r < rows_; ++r) { for (uint c = 0; c < cols_; ++c) { +#define PIMM_FOR_I_WB(c, r) for (uint r = 0; r < rows_; ++r) for (uint c = 0; c < cols_; ++c) // without brakes +#define PIMM_FOR_C(v) for (uint v = 0; v < cols_; ++v) +#define PIMM_FOR_R(v) for (uint v = 0; v < rows_; ++v) + +template +class PIP_EXPORT PIMathMatrix { + typedef PIMathMatrix _CMatrix; + typedef PIMathVector _CMCol; + typedef PIMathVector _CMRow; +public: + PIMathMatrix(const uint cols = 3, const uint rows = 3) {resize(cols, rows);} + PIMathMatrix(const uint cols, const uint rows, Type fval, ...) {resize(cols, rows); va_list vl; va_start(vl, fval); PIMM_FOR_I_WB(c, r) m[c][r] = (r + c == 0 ? fval : va_arg(vl, Type)); va_end(vl);} + PIMathMatrix(const uint cols, const uint rows, const PIVector & val) {resize(cols, rows); int i = 0; PIMM_FOR_I_WB(c, r) m[c][r] = val[i++];} + + static _CMatrix identity(const uint cols_, const uint rows_) {_CMatrix tm(cols_, rows_); PIMM_FOR_WB(c, r) tm.m[c][r] = (c == r ? Type(1) : Type(0)); return tm;} + + uint cols() const {return cols_;} + uint rows() const {return rows_;} + _CMCol col(uint index) {_CMCol tv; PIMM_FOR_R(i) tv[i] = m[index][i]; return tv;} + _CMRow row(uint index) {_CMRow tv; PIMM_FOR_C(i) tv[i] = m[i][index]; return tv;} + _CMatrix & resize(const uint cols, const uint rows, const Type & new_value = Type()) {cols_ = cols; rows_ = rows; m.resize(cols); PIMM_FOR_C(i) m[i].resize(rows, new_value); return *this;} + _CMatrix & setCol(uint index, const _CMCol & v) {PIMM_FOR_R(i) m[index][i] = v[i]; return *this;} + _CMatrix & setRow(uint index, const _CMRow & v) {PIMM_FOR_C(i) m[i][index] = v[i]; return *this;} + _CMatrix & swapRows(uint r0, uint r1) {Type t; PIMM_FOR_C(i) {t = m[i][r0]; m[i][r0] = m[i][r1]; m[i][r1] = t;} return *this;} + _CMatrix & swapCols(uint c0, uint c1) {Type t; PIMM_FOR_R(i) {t = m[c0][i]; m[c0][i] = m[c1][i]; m[c1][i] = t;} return *this;} + _CMatrix & fill(const Type & v) {PIMM_FOR_WB(c, r) m[c][r] = v; return *this;} + //inline _CMatrix & set(Type fval, ...) {m[0] = fval; va_list vl; va_start(vl, fval); PIMV_FOR(i, 1) m[i] = va_arg(vl, Type); va_end(vl); return *this;} + //inline void normalize() {Type tv = length(); if (tv == Type(1)) return; PIMV_FOR(i, 0) m[i] /= tv;} + bool isSquare() const {return cols() == rows();} + bool isIdentity() const {PIMM_FOR_WB(c, r) if ((c == r) ? m[c][r] != Type(1) : m[c][r] != Type(0)) return false; return true;} + bool isNull() const {PIMM_FOR_WB(c, r) if (m[c][r] != Type(0)) return false; return true;} + + Type & at(uint col, uint row) {return m[col][row];} + Type at(uint col, uint row) const {return m[col][row];} + PIVector & operator [](uint col) {return m[col];} + PIVector operator [](uint col) const {return m[col];} + void operator =(const _CMatrix & sm) {m = sm.m;} + bool operator ==(const _CMatrix & sm) const {PIMM_FOR_WB(c, r) if (m[c][r] != sm.m[c][r]) return false; return true;} + bool operator !=(const _CMatrix & sm) const {return !(*this == sm);} + void operator +=(const _CMatrix & sm) {PIMM_FOR_WB(c, r) m[c][r] += sm.m[c][r];} + void operator -=(const _CMatrix & sm) {PIMM_FOR_WB(c, r) m[c][r] -= sm.m[c][r];} + void operator *=(const Type & v) {PIMM_FOR_WB(c, r) m[c][r] *= v;} + void operator /=(const Type & v) {PIMM_FOR_WB(c, r) m[c][r] /= v;} + _CMatrix operator -() {_CMatrix tm(*this); PIMM_FOR_WB(c, r) tm.m[c][r] = -m[c][r]; return tm;} + _CMatrix operator +(const _CMatrix & sm) {_CMatrix tm(*this); PIMM_FOR_WB(c, r) tm.m[c][r] += sm.m[c][r]; return tm;} + _CMatrix operator -(const _CMatrix & sm) {_CMatrix tm(*this); PIMM_FOR_WB(c, r) tm.m[c][r] -= sm.m[c][r]; return tm;} + _CMatrix operator *(const Type & v) {_CMatrix tm(*this); PIMM_FOR_WB(c, r) tm.m[c][r] *= v; return tm;} + _CMatrix operator /(const Type & v) {_CMatrix tm(*this); PIMM_FOR_WB(c, r) tm.m[c][r] /= v; return tm;} + + _CMatrix & toUpperTriangular(bool * ok = 0) { + if (cols_ != rows_) { + if (ok != 0) *ok = false; + return *this; + } + _CMatrix smat(*this); + bool ndet; + uint crow; + Type mul; + for (uint i = 0; i < cols_; ++i) { + ndet = true; + for (uint j = 0; j < rows_; ++j) if (smat.m[i][j] != 0) ndet = false; + if (ndet) { + if (ok != 0) *ok = false; + return *this; + } + for (uint j = 0; j < cols_; ++j) if (smat.m[j][i] != 0) ndet = false; + if (ndet) { + if (ok != 0) *ok = false; + return *this; + } + } + for (uint i = 0; i < cols_; ++i) { + crow = i; + while (smat.m[i][i] == Type(0)) + smat.swapRows(i, ++crow); + for (uint j = i + 1; j < rows_; ++j) { + mul = smat.m[i][j] / smat.m[i][i]; + for (uint k = i; k < cols_; ++k) smat.m[k][j] -= mul * smat.m[k][i]; + } + if (i < cols_ - 1) { + if (fabs(smat.m[i+1][i+1]) < Type(1E-100)) { + if (ok != 0) *ok = false; + return *this; + } + } + } + if (ok != 0) *ok = true; + m = smat.m; + return *this; + } + + _CMatrix & invert(bool * ok = 0, _CMCol * sv = 0) { + if (cols_ != rows_) { + if (ok != 0) *ok = false; + return *this; + } + _CMatrix mtmp = _CMatrix::identity(cols_, rows_), smat(*this); + bool ndet; + uint crow; + Type mul, iddiv; + for (uint i = 0; i < cols_; ++i) { + ndet = true; + for (uint j = 0; j < rows_; ++j) if (smat.m[i][j] != 0) ndet = false; + if (ndet) { + if (ok != 0) *ok = false; + return *this; + } + for (uint j = 0; j < cols_; ++j) if (smat.m[j][i] != 0) ndet = false; + if (ndet) { + if (ok != 0) *ok = false; + return *this; + } + } + for (uint i = 0; i < cols_; ++i) { + crow = i; + while (smat.m[i][i] == Type(0)) { + ++crow; + smat.swapRows(i, crow); + mtmp.swapRows(i, crow); + if (sv != 0) sv->swap(i, crow); + } + for (uint j = i + 1; j < rows_; ++j) { + mul = smat.m[i][j] / smat.m[i][i]; + for (uint k = i; k < cols_; ++k) smat.m[k][j] -= mul * smat.m[k][i]; + for (uint k = 0; k < cols_; ++k) mtmp.m[k][j] -= mul * mtmp.m[k][i]; + if (sv != 0) (*sv)[j] -= mul * (*sv)[i]; + } + //cout << i << endl << smat << endl; + if (i < cols_ - 1) { + if (fabs(smat.m[i+1][i+1]) < Type(1E-100)) { + if (ok != 0) *ok = false; + return *this; + } + } + iddiv = smat.m[i][i]; + for (uint j = i; j < cols_; ++j) smat.m[j][i] /= iddiv; + for (uint j = 0; j < cols_; ++j) mtmp.m[j][i] /= iddiv; + if (sv != 0) (*sv)[i] /= iddiv; + } + for (uint i = cols_ - 1; i > 0; --i) { + for (uint j = 0; j < i; ++j) { + mul = smat.m[i][j]; + smat.m[i][j] -= mul; + for (uint k = 0; k < cols_; ++k) mtmp.m[k][j] -= mtmp.m[k][i] * mul; + if (sv != 0) (*sv)[j] -= mul * (*sv)[i]; + } + } + if (ok != 0) *ok = true; + m = mtmp.m; + return *this; + } + _CMatrix inverted(bool * ok = 0) {_CMatrix tm(*this); tm.invert(ok); return tm;} + _CMatrix transposed() {_CMatrix tm(rows_, cols_); PIMM_FOR_WB(c, r) tm[r][c] = m[c][r]; return tm;} + +private: + uint cols_, rows_; + PIVector > m; + +}; + +template +inline std::ostream & operator <<(std::ostream & s, const PIMathMatrix & m) {s << '{'; for (uint r = 0; r < m.rows(); ++r) { for (uint c = 0; c < m.cols(); ++c) { s << m[c][r]; if (c < m.cols() - 1 || r < m.rows() - 1) s << ", ";} if (r < m.rows() - 1) s << endl << ' ';} s << '}'; return s;} +template +inline PICout operator <<(PICout s, const PIMathMatrix & m) {s << '{'; for (uint r = 0; r < m.rows(); ++r) { for (uint c = 0; c < m.cols(); ++c) { s << m[c][r]; if (c < m.cols() - 1 || r < m.rows() - 1) s << ", ";} if (r < m.rows() - 1) s << NewLine << ' ';} s << '}'; return s;} + +/// Multiply matrices {CR x Rows0} on {Cols1 x CR}, result is {Cols1 x Rows0} +template +inline PIMathMatrix operator *(const PIMathMatrix & fm, + const PIMathMatrix & sm) { + uint cr = fm.cols(), rows0 = fm.rows(), cols1 = sm.cols(); + PIMathMatrix tm(cols1, rows0); + if (fm.cols() != sm.rows()) return tm; + Type t; + for (uint j = 0; j < rows0; ++j) { + for (uint i = 0; i < cols1; ++i) { + t = Type(0); + for (uint k = 0; k < cr; ++k) + t += fm[k][j] * sm[i][k]; + tm[i][j] = t; + } + } + return tm; +} + +/// Multiply matrix {Cols x Rows} on vector {Cols}, result is vector {Rows} +template +inline PIMathVector operator *(const PIMathMatrix & fm, + const PIMathVector & sv) { + uint c = fm.cols(), r = fm.rows(); + PIMathVector tv(r); + if (c != sv.size()) return tv; + Type t; + for (uint i = 0; i < r; ++i) { + t = Type(0); + for (uint j = 0; j < c; ++j) + t += fm[j][i] * sv[j]; + tv[i] = t; + } + return tv; +} + +typedef PIMathMatrix PIMathMatrixi; +typedef PIMathMatrix PIMathMatrixd; + +#undef PIMV_FOR +#undef PIMM_FOR +#undef PIMM_FOR_WB +#undef PIMM_FOR_I +#undef PIMM_FOR_I_WB +#undef PIMM_FOR_C +#undef PIMM_FOR_R + + +/// Differential evaluations + +struct TransferFunction { // Ð”Ð»Ñ Ð·Ð°Ð´Ð°Ð½Ð¸Ñ Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‚Ð¾Ñ‡Ð½Ð¾Ð¹ функции + PIVector vector_Bm, vector_An; +}; + +// КлаÑÑ, Ñлужащий Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ²Ð¾Ð´Ð° передаточной функции в ÑиÑтему ОДУ первого порÑдка +// реализованы Ñлед. методы Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð´Ð¸Ñ„Ñ„. ур-ний: +// Эйлера +// Рунге-Кутта 4-го порÑдка +// ÐдамÑа-БÑшфортÑа-Моултона 2, 3, 4 порÑдков +class PIP_EXPORT Solver +{ +public: + enum Method {Global = -1, + Eyler_1 = 01, + Eyler_2 = 02, + EylerKoshi = 03, + RungeKutta_4 = 14, + AdamsBashfortMoulton_2 = 22, + AdamsBashfortMoulton_3 = 23, + AdamsBashfortMoulton_4 = 24, + PolynomialApproximation_2 = 32, + PolynomialApproximation_3 = 33, + PolynomialApproximation_4 = 34, + PolynomialApproximation_5 = 35 + }; + + Solver() {times.resize(4); step = 0;} + + void solve(double u, double h); + void fromTF(const TransferFunction & TF); + void setMethod(Method m) {method = m;} + void setTime(double time) {times.pop_back(); times.push_front(time);} + + void solveEyler1(double u, double h); + void solveEyler2(double u, double h); + void solveRK4(double u, double h); + void solveABM2(double u, double h); + void solveABM3(double u, double h); + void solveABM4(double u, double h); + void solvePA(double u, double h, uint deg); + void solvePA2(double u, double h) {if (step > 0) solvePA(u, h, 2); else solveEyler1(u, h);} + void solvePA3(double u, double h) {if (step > 1) solvePA(u, h, 3); else solvePA2(u, h);} + void solvePA4(double u, double h) {if (step > 2) solvePA(u, h, 4); else solvePA3(u, h);} + void solvePA5(double u, double h) {if (step > 3) solvePA(u, h, 5); else solvePA4(u, h);} + + PIMathVectord X; + static Method method_global; + static const char methods_desc[]; + +private: + void moveF() {for (uint i = F.size() - 1; i > 0; --i) F[i] = F[i - 1];} + + PIMathMatrixd A, M; + PIMathVectord d, a1, b1; + PIMathVectord k1, k2, k3, k4, xx; + PIMathVectord XX, Y, pY; + PIVector F; + PIVector times; + uint size, step; + Method method; + double sum, td, ct, lp, dh, t, x1, x0; + bool ok; + +}; + + + +class PIP_EXPORT PIFFT +{ +public: + PIFFT(); + // const PIVector & getIndexes() {return indexes;} + // const PIVector & getCoefs() {return coefs;} + PIVector * calcFFT(const PIVector &val); + PIVector * calcFFT(const PIVector &val); + PIVector * calcFFTinverse(const PIVector &val); + PIVector * calcHilbert(const PIVector &val); + PIVector getAmplitude(); +private: + // PIVector indexes; + // PIVector coefs; + PIVector result; + // uint iterations; + bool prepared; + // uint out_size; + typedef ptrdiff_t ae_int_t; + void calc_coefs(uint cnt2); + void calc_indexes(uint cnt2, uint deep2); + complexd coef(uint n, uint k); + + struct ftplan { + PIVector plan; + PIVector precomputed; + PIVector tmpbuf; + PIVector stackbuf; + }; + + ftplan curplan; + + void fftc1d(const PIVector &a, uint n); + void fftc1r(const PIVector &a, uint n); + void fftc1dinv(const PIVector &a, uint n); + + void createPlan(uint n); + void ftbasegeneratecomplexfftplan(uint n, ftplan *plan); + void ftbase_ftbasegenerateplanrec(int n, int tasktype, ftplan *plan, int *plansize, int *precomputedsize, int *planarraysize, int *tmpmemsize, int *stackmemsize, ae_int_t stackptr, int debugi=0); + void ftbase_ftbaseprecomputeplanrec(ftplan *plan, int entryoffset, ae_int_t stackptr); + void ftbasefactorize(int n, int *n1, int *n2); + void ftbase_ftbasefindsmoothrec(int n, int seed, int leastfactor, int *best); + int ftbasefindsmooth(int n); + void ftbaseexecuteplan(PIVector *a, int aoffset, int n, ftplan *plan); + void ftbaseexecuteplanrec(PIVector *a, int aoffset, ftplan *plan, int entryoffset, ae_int_t stackptr); + void ftbase_internalcomplexlintranspose(PIVector *a, int m, int n, int astart, PIVector *buf); + void ftbase_ffticltrec(PIVector *a, int astart, int astride, PIVector *b, int bstart, int bstride, int m, int n); + void ftbase_internalreallintranspose(PIVector *a, int m, int n, int astart, PIVector *buf); + void ftbase_fftirltrec(PIVector *a, int astart, int astride, PIVector *b, int bstart, int bstride, int m, int n); + void ftbase_ffttwcalc(PIVector *a, int aoffset, int n1, int n2); +}; + + +template +class PIP_EXPORT PIStatistic { +public: + PIStatistic() { + mean = T(); + variance = T(); + skewness = T(); + kurtosis = T(); + } + bool calculate(const PIVector &val) { + T v = T(), v1 = T(), v2 = T(), stddev = T(); + int i, n = val.size(); + mean = T(); + variance = T(); + skewness = T(); + kurtosis = T(); + if (n < 2) + return false; + /* + * Mean + */ + for (i = 0; i < n; i++) + mean += val[i]; + mean /= n; + /* + * Variance (using corrected two-pass algorithm) + */ + for (i = 0; i < n; i++) { + v1 += sqr(val[i] - mean); + } + for (i = 0; i < n; i++) + v2 += val[i] - mean; + v2 = sqr(v2) / n; + variance = (v1 - v2) / (n - 1); + if (variance < T()) + variance = T(); + stddev = sqrt(variance); + /* + * Skewness and kurtosis + */ + if (stddev != T()) { + for (i = 0; i < n; i++) { + v = (val[i] - mean) / stddev; + v2 = sqr(v); + skewness = skewness + v2 * v; + kurtosis = kurtosis + sqr(v2); + } + skewness /= n; + kurtosis = kurtosis / n - 3.; + } + return true; + } + T mean; + T variance; + T skewness; + T kurtosis; +}; + +typedef PIStatistic PIStatistici; +typedef PIStatistic PIStatisticf; +typedef PIStatistic PIStatisticd; + + +template +bool OLS_Linear(const PIVector > & input, T * out_a, T * out_b) { + if (input.size_s() < 2) + return false; + int n = input.size_s(); + T a_t0 = T(), a_t1 = T(), a_t2 = T(), a_t3 = T(), a_t4 = T(), a = T(), b = T(); + for (int i = 0; i < n; ++i) { + const PIPair & cv(input[i]); + a_t0 += cv.first * cv.second; + a_t1 += cv.first; + a_t2 += cv.second; + a_t3 += cv.first * cv.first; + } + a_t4 = n * a_t3 - a_t1 * a_t1; + if (a_t4 != T()) + a = (n * a_t0 - a_t1 * a_t2) / a_t4; + b = (a_t2 - a * a_t1) / n; + if (out_a != 0) *out_a = a; + if (out_b != 0) *out_b = b; + return true; +} + + +template +bool WLS_Linear(const PIVector > & input, const PIVector & weights, T * out_a, T * out_b) { + if (input.size_s() < 2) + return false; + if (input.size_s() != weights.size_s()) + return false; + int n = input.size_s(); + T a_t0 = T(), a_t1 = T(), a_t2 = T(), a_t3 = T(), a_t4 = T(), a_n = T(), a = T(), b = T(); + for (int i = 0; i < n; ++i) { + T cp = weights[i]; + const PIPair & cv(input[i]); + a_t0 += cv.first * cv.second * cp; + a_t1 += cv.first * cp; + a_t2 += cv.second * cp; + a_t3 += cv.first * cv.first * cp; + a_n += cp; + } + a_t4 = a_n * a_t3 - a_t1 * a_t1; + if (a_t4 != T()) + a = (a_n * a_t0 - a_t1 * a_t2) / a_t4; + b = (a_t2 - a * a_t1) / a_n; + if (out_a != 0) *out_a = a; + if (out_b != 0) *out_b = b; + return true; +} + +#endif // PIMATH_H diff --git a/_oldpip/pip_0.4.0_r5/pimonitor.cpp b/_oldpip/pip_0.4.0_r5/pimonitor.cpp new file mode 100644 index 0000000..73ea3f1 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/pimonitor.cpp @@ -0,0 +1,26 @@ +/* + PIP - Platform Independent Primitives + Counter of some PIP types + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +#include "pimonitor.h" + +PIMonitor piMonitor; + +PIMonitor::PIMonitor() { + containers = strings = threads = timers = serials = ethernets = files = objects = 0; +} diff --git a/_oldpip/pip_0.4.0_r5/pimonitor.h b/_oldpip/pip_0.4.0_r5/pimonitor.h new file mode 100644 index 0000000..288e963 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/pimonitor.h @@ -0,0 +1,39 @@ +/* + PIP - Platform Independent Primitives + Counter of some PIP types + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +#ifndef PIMONITOR_H +#define PIMONITOR_H + +#include "pip_export.h" + +#if defined(DOXYGEN) || defined(__GNUC__) +# undef PIP_EXPORT +# define PIP_EXPORT +#endif + +class PIP_EXPORT PIMonitor +{ +public: + PIMonitor(); + + int containers, strings, threads, timers, serials, ethernets, files, objects; + +}; + +#endif // PIMONITOR_H diff --git a/_oldpip/pip_0.4.0_r5/pimultiprotocol.cpp b/_oldpip/pip_0.4.0_r5/pimultiprotocol.cpp new file mode 100644 index 0000000..422263c --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/pimultiprotocol.cpp @@ -0,0 +1,21 @@ +/* + PIP - Platform Independent Primitives + Multiprotocol + Copyright (C) 2012 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +#include "pimultiprotocol.h" + diff --git a/_oldpip/pip_0.4.0_r5/pimultiprotocol.h b/_oldpip/pip_0.4.0_r5/pimultiprotocol.h new file mode 100644 index 0000000..d7bc65d --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/pimultiprotocol.h @@ -0,0 +1,93 @@ +/* + PIP - Platform Independent Primitives + Multiprotocol + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +#ifndef PIMULTIPROTOCOL_H +#define PIMULTIPROTOCOL_H + +#include "piprotocol.h" + +class PIMultiProtocol: public PIMultiProtocolBase +{ +public: + PIMultiProtocol() {;} + virtual ~PIMultiProtocol() {clear();} + + void addProtocol(PIProtocol & prot) {prots.push_back(&prot); prot.setMultiProtocolOwner(this); prot.new_mp_prot = false;} + void addProtocol(PIProtocol * prot) {prots.push_back(prot); prot->setMultiProtocolOwner(this); prot->new_mp_prot = false;} + void addProtocol(const PIString & config, const PIString & name, void * recHeaderPtr = 0, int recHeaderSize = 0, + void * recDataPtr = 0, int recDataSize = 0, void * sendDataPtr = 0, int sendDataSize = 0) {; + prots.push_back(new PIProtocol(config, name, recHeaderPtr, recHeaderSize, recDataPtr, recDataSize, sendDataPtr, sendDataSize)); + prots.back()->setMultiProtocolOwner(this); + prots.back()->new_mp_prot = true; + } + PIProtocol * protocol(const PIString & name) {piForeach (PIProtocol * i, prots) if (i->name() == name) return i; return 0;} + PIProtocol * protocol(const int index) {return prots[index];} + PIProtocol * operator [](const int index) {return prots[index];} + + void startSend() {piForeach (PIProtocol * i, prots) i->startSend();} + void startReceive() {piForeach (PIProtocol * i, prots) i->startReceive();} + void start() {piForeach (PIProtocol * i, prots) i->start();} + + void stopSend() {piForeach (PIProtocol * i, prots) i->stopSend();} + void stopReceive() {piForeach (PIProtocol * i, prots) i->stopReceive();} + void stop() {piForeach (PIProtocol * i, prots) i->stop();} + + PIProtocol::Quality worseQuality() const {PIProtocol::Quality cq = PIProtocol::Good; piForeachC (PIProtocol * i, prots) if (cq > i->quality()) cq = i->quality(); return cq;} + PIProtocol::Quality bestQuality() const {PIProtocol::Quality cq = PIProtocol::Unknown; piForeachC (PIProtocol * i, prots) if (cq < i->quality()) cq = i->quality(); return cq;} + + int count() const {return prots.size_s();} + void clear() {stop(); piForeach (PIProtocol * i, prots) if (i->new_mp_prot) delete i; prots.clear();} + +private: + PIVector prots; + +}; + +class PIRepeater: public PIMultiProtocol { +public: + PIRepeater(const PIString & config, const PIString & name_) { + PIConfig conf(config, PIIODevice::ReadOnly); + if (!conf.isOpened()) { + piCoutObj << "[PIRepeater \"" << name_ << "\"] Can`t open \"" << config << "\"!"; + return; + } + PIConfig::Entry & b(conf.getValue(name_)); + if (b.childCount() != 2) { + piCoutObj << "[PIRepeater \"" << name_ << "\"] \"" << config << "\" should consist 2 nodes!"; + return; + } + addProtocol(config, b.child(0)->fullName()); + addProtocol(config, b.child(1)->fullName()); + start(); + } + + PIString firstChannelName() {if (count() == 2) return protocol(0)->receiverDeviceName() + " -> " + protocol(1)->senderDeviceName(); return "Config error";} + PIString secondChannelName() {if (count() == 2) return protocol(1)->receiverDeviceName() + " -> " + protocol(0)->senderDeviceName(); return "Config error";} + + ullong receiveCount() {if (count() == 2) return protocol(0)->receiveCount(); return 0;} + const ullong * receiveCount_ptr() {if (count() == 2) return protocol(0)->receiveCount_ptr(); return 0;} + ullong sendCount() {if (count() == 2) return protocol(0)->sendCount(); return 0;} + const ullong * sendCount_ptr() {if (count() == 2) return protocol(0)->sendCount_ptr(); return 0;} + +private: + void received(PIProtocol * prot, bool , uchar * data, int size) {if (prot == protocol(0)) protocol(1)->send(data, size); else protocol(0)->send(data, size);} + +}; + +#endif // PIMULTIPROTOCOL_H diff --git a/_oldpip/pip_0.4.0_r5/pimutex.cpp b/_oldpip/pip_0.4.0_r5/pimutex.cpp new file mode 100644 index 0000000..37f19ba --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/pimutex.cpp @@ -0,0 +1,59 @@ +/* + PIP - Platform Independent Primitives + Mutex + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +#include "pimutex.h" + + +/** \class PIMutex + * \brief Mutex + * \details + * \section PIMutex_sec0 Synopsis + * %PIMutex provides synchronization blocks between several threads. + * Using mutex guarantees execution of some code only one of threads. + * Mutex contains logic state and functions to change it: \a lock(), + * \a unlock() and \a tryLock(). + * + * \section PIMutex_sec1 Usage + * Block of code that should to be executed only one thread simultaniously + * should to be started with \a lock() and ended with \a unlock(). + * \snippet pimutex.cpp main + * "mutex" in this example is one for all threads. + * + * */ + + +PIMutex::PIMutex() { +#ifdef WINDOWS + mutex = CreateMutex(0, false, 0); +#else + pthread_mutexattr_t attr; + pthread_mutexattr_init(&attr); + pthread_mutex_init(&mutex, &attr); + pthread_mutexattr_destroy(&attr); +#endif +} + + +PIMutex::~PIMutex() { +#ifdef WINDOWS + if (mutex != 0) CloseHandle(mutex); +#else + pthread_mutex_destroy(&mutex); +#endif +} diff --git a/_oldpip/pip_0.4.0_r5/pimutex.h b/_oldpip/pip_0.4.0_r5/pimutex.h new file mode 100644 index 0000000..e8f82eb --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/pimutex.h @@ -0,0 +1,93 @@ +/*! \file pimutex.h + * \brief Mutex +*/ +/* + PIP - Platform Independent Primitives + Mutex + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +#ifndef PIMUTEX_H +#define PIMUTEX_H + +#include "piincludes.h" + +class PIP_EXPORT PIMutex +{ +public: + + //! Constructs unlocked mutex + PIMutex(); + + ~PIMutex(); + + + //! \brief Lock mutex + //! \details If mutex is unlocked it set to locked state and returns immediate. + //! If mutex is already locked function blocks until mutex will be unlocked + void lock() { +#ifdef WINDOWS + WaitForSingleObject(mutex, INFINITE); +#else + pthread_mutex_lock(&mutex); +#endif + } + + + //! \brief Unlock mutex + //! \details In any case this function returns immediate + void unlock() { +#ifdef WINDOWS + ReleaseMutex(mutex); +#else + pthread_mutex_unlock(&mutex); +#endif + } + + + //! \brief Try to lock mutex + //! \details If mutex is unlocked it set to locked state and returns "true" immediate. + //! If mutex is already locked function returns immediate an returns "false" + bool tryLock() { +#ifdef WINDOWS + return (WaitForSingleObject(mutex, 0) == WAIT_OBJECT_0); +#else + return (pthread_mutex_trylock(&mutex) == 0); +#endif + } + +private: +#ifdef WINDOWS + void * +#else + pthread_mutex_t +#endif + mutex; + +}; + + +class PIP_EXPORT PIMutexLocker +{ +public: + PIMutexLocker(PIMutex * m): mutex(m) {mutex->lock();} + PIMutexLocker(PIMutex & m): mutex(&m) {mutex->lock();} + ~PIMutexLocker() {mutex->unlock();} +private: + PIMutex * mutex; +}; + +#endif // PIMUTEX_H diff --git a/_oldpip/pip_0.4.0_r5/piobject.cpp b/_oldpip/pip_0.4.0_r5/piobject.cpp new file mode 100644 index 0000000..46d74ed --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/piobject.cpp @@ -0,0 +1,115 @@ +/* + PIP - Platform Independent Primitives + Object, base class of some PIP classes, provide EVENT -> EVENT_HANDLER mechanism + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +#include "piobject.h" + +PIVector PIObject::objects; + + +/** \class PIObject + * \brief This is base class for any classes which use events -> handlers mechanism. + * \details + * \section PIObject_sec0 Events and Event handlers + * %PIObject provide notification mechanism similar Qt but implemented + * on language capabilities without any special preprocessors or compilers. + * Any class inherits PIObject should use macro \a PIOBJECT() immediate + * after declaration to proper compile. + * + * Event is a some abstract event that can be raised at any time. + * Event is a function but declared with special macro \a EVENT(). + * To raise event simply execute event function. + * + * Event handler is a function but declared with special macro + * \a EVENT_HANDLER(). You can use event handlers as ordinary functions. + * + * Main goal of this mechanism is perform abstract connections between + * various objects. This functionality provide macro \a CONNECT() which + * connect some event of first object to some event handler or event of + * second object. Each event can be connected any times to any event handlers. + * + * \image html events_handlers.png + * + * Example: \snippet piobject.cpp main + * Result: +\code{.cpp} +handler B: 2 , 0.5 +handler A: event to handler +handler A: event to event +\endcode + */ + + +PIObject::PIObject(const PIString & name): emitter_(0) { + piMonitor.objects++; + setName(name); + setDebug(true); + objects << this; +} + + +void PIObject::piConnect(const PIString & src, const PIString & sig, void * dest, void * ev_h) { + PIObject * o = findByName(src); + if (o == 0) { + piCout << "[PIObject] Can`t find object with name \"" << src << "\"!"; + return; + } + o->connections << Connection(ev_h, 0, sig, dest); +} + + +void PIObject::piConnect(PIObject * src, const PIString & sig, const PIString & dest, void * ev_h) { + PIObject * o = findByName(dest); + if (o == 0) { + piCout << "[PIObject] Can`t find object with name \"" << dest << "\"!"; + return; + } + src->connections << Connection(ev_h, 0, sig, o); +} + + +void PIObject::piConnect(const PIString & src, const PIString & sig, const PIString & dest, void * ev_h) { + PIObject * s = findByName(src); + if (s == 0) { + piCout << "[PIObject] Can`t find object with name \"" << src << "\"!"; + return; + } + PIObject * d = findByName(dest); + if (d == 0) { + piCout << "[PIObject] Can`t find object with name \"" << dest << "\"!"; + return; + } + s->connections << Connection(ev_h, 0, sig, d); +} + +/* +PIStringList PIObject::events() { + PIStringList l; + for (PIMap::const_iterator i = signals_.begin(); i != signals_.end(); i++) + l << (*i).first; + return l; +} + + +PIStringList PIObject::eventHandlers() { + PIStringList l; + for (PIMap::const_iterator i = slots_.begin(); i != slots_.end(); i++) + l << (*i).first; + return l; +} +*/ diff --git a/_oldpip/pip_0.4.0_r5/piobject.h b/_oldpip/pip_0.4.0_r5/piobject.h new file mode 100644 index 0000000..aff78ff --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/piobject.h @@ -0,0 +1,535 @@ +/*! \file piobject.h + * \brief Base object + * + * This file declare PIObject class and associated macros +*/ +/* + PIP - Platform Independent Primitives + Object, base class of some PIP classes, provide EVENT -> EVENT_HANDLER mechanism + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +#ifndef PIOBJECT_H +#define PIOBJECT_H + +#include "pivariant.h" +#include "pimutex.h" + + +#ifdef DOXYGEN + + +/// \relatesalso PIObject \brief you should use this macro after class declaration to use EVENT and EVENT_HANDLER and correct piCoutObj output +#define PIOBJECT(name) + + +/// \relatesalso PIObject \brief declare event handler \"event\" with name \"name\" and return type \"ret\", ret name() +#define EVENT_HANDLER0(ret, name) ret name() + +/// \relatesalso PIObject \brief declare event handler \"event\" with name \"name\" and return type \"ret\", ret name(type0 var0) +#define EVENT_HANDLER1(ret, name, type0, var0) ret name(type0 var0) + +/// \relatesalso PIObject \brief declare event handler \"event\" with name \"name\" and return type \"ret\", ret name(type0 var0, type1 var1) +#define EVENT_HANDLER2(ret, name, type0, var0, type1, var1) ret name(type0 var0, type1 var1) + +/// \relatesalso PIObject \brief declare event handler \"event\" with name \"name\" and return type \"ret\", ret name(type0 var0, type1 var1, type2 var2) +#define EVENT_HANDLER3(ret, name, type0, var0, type1, var1, type2, var2) ret name(type0 var0, type1 var1, type2 var2) + +/// \relatesalso PIObject \brief declare event handler \"event\" with name \"name\" and return type \"ret\", ret name(type0 var0, type1 var1, type2 var2, type3 var3) +#define EVENT_HANDLER4(ret, name, type0, var0, type1, var1, type2, var2, type3, var3) ret name(type0 var0, type1 var1, type2 var2, type3 var3) + +/// \relatesalso PIObject \brief EVENT_HANDLER is synonym of EVENT_HANDLER0 +#define EVENT_HANDLER EVENT_HANDLER0 + + +/// \relatesalso PIObject \brief declare virtual event handler \"event\" with name \"name\" and return type \"ret\", virtual ret name() +#define EVENT_VHANDLER0(ret, name) virtual ret name() + +/// \relatesalso PIObject \brief declare virtual event handler \"event\" with name \"name\" and return type \"ret\", virtual ret name(type0 var0) +#define EVENT_VHANDLER1(ret, name, type0, var0) virtual ret name(type0 var0) + +/// \relatesalso PIObject \brief declare virtual event handler \"event\" with name \"name\" and return type \"ret\", virtual ret name(type0 var0, type1 var1) +#define EVENT_VHANDLER2(ret, name, type0, var0, type1, var1) virtual ret name(type0 var0, type1 var1) + +/// \relatesalso PIObject \brief declare virtual event handler \"event\" with name \"name\" and return type \"ret\", virtual ret name(type0 var0, type1 var1, type2 var2) +#define EVENT_VHANDLER3(ret, name, type0, var0, type1, var1, type2, var2) virtual ret name(type0 var0, type1 var1, type2 var2) + +/// \relatesalso PIObject \brief declare virtual event handler \"event\" with name \"name\" and return type \"ret\", virtual ret name(type0 var0, type1 var1, type2 var2, type3 var3) +#define EVENT_VHANDLER4(ret, name, type0, var0, type1, var1, type2, var2, type3, var3) virtual ret name(type0 var0, type1 var1, type2 var2, type3 var3) + +/// \relatesalso PIObject \brief EVENT_VHANDLER is synonym of EVENT_VHANDLER0 +#define EVENT_VHANDLER EVENT_VHANDLER0 + + +/// \relatesalso PIObject \brief declare event \"event\" with name \"name\", void name(); +#define EVENT0(name) void name(); + +/// \relatesalso PIObject \brief declare event \"event\" with name \"name\", void name(type0 var0); +#define EVENT1(name, type0, var0) void name(type0 var0); + +/// \relatesalso PIObject \brief declare event \"event\" with name \"name\", void name(type0 var0, type1 var1); +#define EVENT2(name, type0, var0, type1, var1) void name(type0 var0, type1 var1); + +/// \relatesalso PIObject \brief declare event \"event\" with name \"name\", void name(type0 var0, type1 var1, type2 var2); +#define EVENT3(name, type0, var0, type1, var1, type2, var2) void name(type0 var0, type1 var1, type2 var2); + +/// \relatesalso PIObject \brief declare event \"event\" with name \"name\", void name(type0 var0, type1 var1, type2 var2, type3 var3); +#define EVENT4(name, type0, var0, type1, var1, type2, var2, type3, var3) void name(type0 var0, type1 var1, type2 var2, type3 var3); + +/// \relatesalso PIObject \brief EVENT is synonym of EVENT0 +#define EVENT EVENT0 + + +#define RAISE_EVENT0(src, event) +#define RAISE_EVENT1(src, event, v0) +#define RAISE_EVENT2(src, event, v0, v1) +#define RAISE_EVENT3(src, event, v0, v1, v2) +#define RAISE_EVENT4(src, event, v0, v1, v2, v3) +#define RAISE_EVENT RAISE_EVENT0 + + +/// \relatesalso PIObject \brief connect event \"event\" from object \"src\" to event handler \"handler\" with return type \"ret\" from object \"dest\" with check of event and handler exists +#define CONNECT0(ret, src, event, dest, handler) + +/// \relatesalso PIObject \brief connect event \"event\" from object \"src\" to event handler \"handler\" with return type \"ret\" from object \"dest\" with check of event and handler exists +#define CONNECT1(ret, type0, src, event, dest, handler) + +/// \relatesalso PIObject \brief connect event \"event\" from object \"src\" to event handler \"handler\" with return type \"ret\" from object \"dest\" with check of event and handler exists +#define CONNECT2(ret, type0, type1, src, event, dest, handler) + +/// \relatesalso PIObject \brief connect event \"event\" from object \"src\" to event handler \"handler\" with return type \"ret\" from object \"dest\" with check of event and handler exists +#define CONNECT3(ret, type0, type1, type2, src, event, dest, handler) + +/// \relatesalso PIObject \brief connect event \"event\" from object \"src\" to event handler \"handler\" with return type \"ret\" from object \"dest\" with check of event and handler exists +#define CONNECT4(ret, type0, type1, type2, type3, src, event, dest, handler) + +/// \relatesalso PIObject \brief CONNECT is synonym of CONNECT0 +#define CONNECT CONNECT0 + + +/// \relatesalso PIObject \brief connect event \"event\" from object \"src\" to event handler \"handler\" with return type \"ret\" from object \"dest\" without check of event exists +#define WEAK_CONNECT0(ret, src, event, dest, handler) + +/// \relatesalso PIObject \brief connect event \"event\" from object \"src\" to event handler \"handler\" with return type \"ret\" from object \"dest\" without check of event exists +#define WEAK_CONNECT1(ret, type0, src, event, dest, handler) + +/// \relatesalso PIObject \brief connect event \"event\" from object \"src\" to event handler \"handler\" with return type \"ret\" from object \"dest\" without check of event exists +#define WEAK_CONNECT2(ret, type0, type1, src, event, dest, handler) + +/// \relatesalso PIObject \brief connect event \"event\" from object \"src\" to event handler \"handler\" with return type \"ret\" from object \"dest\" without check of event exists +#define WEAK_CONNECT3(ret, type0, type1, type2, src, event, dest, handler) + +/// \relatesalso PIObject \brief connect event \"event\" from object \"src\" to event handler \"handler\" with return type \"ret\" from object \"dest\" without check of event exists +#define WEAK_CONNECT4(ret, type0, type1, type2, type3, src, event, dest, handler) + +/// \relatesalso PIObject \brief WEAK_CONNECT is synonym of WEAK_CONNECT0 +#define WEAK_CONNECT WEAK_CONNECT0 + + +/// \relatesalso PIObject \brief piDisconnect event \"event\" from object \"src\" from event handler \"handler\" with return type \"ret\" from object \"dest\" +#define DISCONNECT0(ret, src, event, dest, handler) + +/// \relatesalso PIObject \brief piDisconnect event \"event\" from object \"src\" from event handler \"handler\" with return type \"ret\" from object \"dest\" +#define DISCONNECT1(ret, type0, src, event, dest, handler) + +/// \relatesalso PIObject \brief piDisconnect event \"event\" from object \"src\" from event handler \"handler\" with return type \"ret\" from object \"dest\" +#define DISCONNECT2(ret, type0, type1, src, event, dest, handler) + +/// \relatesalso PIObject \brief piDisconnect event \"event\" from object \"src\" from event handler \"handler\" with return type \"ret\" from object \"dest\" +#define DISCONNECT3(ret, type0, type1, type2, src, event, dest, handler) + +/// \relatesalso PIObject \brief piDisconnect event \"event\" from object \"src\" from event handler \"handler\" with return type \"ret\" from object \"dest\" +#define DISCONNECT4(ret, type0, type1, type2, type3, src, event, dest, handler) + +/// \relatesalso PIObject \brief DISCONNECT is synonym of DISCONNECT0 +#define DISCONNECT DISCONNECT0 + + +/// \relatesalso PIObject \brief Returns pointer to events handler \"handler\" +#define HANDLER(handler) + + +#else + + +#define PIOBJECT(obj) typedef obj __PIObject__; public: virtual const char * className() const {return #obj;} private: + +#define EVENT_HANDLER0(ret, name) static ret __stat_eh_##name##__(void * o) {return ((__PIObject__*)o)->name();} ret name() +#define EVENT_HANDLER1(ret, name, a0, n0) static ret __stat_eh_##name##__(void * o, a0 n0) {return ((__PIObject__*)o)->name(n0);} ret name(a0 n0) +#define EVENT_HANDLER2(ret, name, a0, n0, a1, n1) static ret __stat_eh_##name##__(void * o, a0 n0, a1 n1) {return ((__PIObject__*)o)->name(n0, n1);} ret name(a0 n0, a1 n1) +#define EVENT_HANDLER3(ret, name, a0, n0, a1, n1, a2, n2) static ret __stat_eh_##name##__(void * o, a0 n0, a1 n1, a2 n2) {return ((__PIObject__*)o)->name(n0, n1, n2);} ret name(a0 n0, a1 n1, a2 n2) +#define EVENT_HANDLER4(ret, name, a0, n0, a1, n1, a2, n2, a3, n3) static ret __stat_eh_##name##__(void * o, a0 n0, a1 n1, a2 n2, a3 n3) {return ((__PIObject__*)o)->name(n0, n1, n2, n3);} ret name(a0 n0, a1 n1, a2 n2, a3 n3) +#define EVENT_HANDLER EVENT_HANDLER0 + +#define EVENT_VHANDLER0(ret, name) static ret __stat_eh_##name##__(void * o) {return ((__PIObject__*)o)->name();} virtual ret name() +#define EVENT_VHANDLER1(ret, name, a0, n0) static ret __stat_eh_##name##__(void * o, a0 n0) {return ((__PIObject__*)o)->name(n0);} virtual ret name(a0 n0) +#define EVENT_VHANDLER2(ret, name, a0, n0, a1, n1) static ret __stat_eh_##name##__(void * o, a0 n0, a1 n1) {return ((__PIObject__*)o)->name(n0, n1);} virtual ret name(a0 n0, a1 n1) +#define EVENT_VHANDLER3(ret, name, a0, n0, a1, n1, a2, n2) static ret __stat_eh_##name##__(void * o, a0 n0, a1 n1, a2 n2) {return ((__PIObject__*)o)->name(n0, n1, n2);} virtual ret name(a0 n0, a1 n1, a2 n2) +#define EVENT_VHANDLER4(ret, name, a0, n0, a1, n1, a2, n2, a3, n3) static ret __stat_eh_##name##__(void * o, a0 n0, a1 n1, a2 n2, a3 n3) {return ((__PIObject__*)o)->name(n0, n1, n2, n3);} virtual ret name(a0 n0, a1 n1, a2 n2, a3 n3) +#define EVENT_VHANDLER EVENT_VHANDLER0 + +#define EVENT0(name) EVENT_HANDLER0(void, name) {PIObject::raiseEvent(this, #name);} +#define EVENT1(name, a0, n0) EVENT_HANDLER1(void, name, a0, n0) {PIObject::raiseEvent(this, #name, n0);} +#define EVENT2(name, a0, n0, a1, n1) EVENT_HANDLER2(void, name, a0, n0, a1, n1) {PIObject::raiseEvent(this, #name, n0, n1);} +#define EVENT3(name, a0, n0, a1, n1, a2, n2) EVENT_HANDLER3(void, name, a0, n0, a1, n1, a2, n2) {PIObject::raiseEvent(this, #name, n0, n1, n2);} +#define EVENT4(name, a0, n0, a1, n1, a2, n2, a3, n3) EVENT_HANDLER4(void, name, a0, n0, a1, n1, a2, n2, a3, n3) {PIObject::raiseEvent(this, #name, n0, n1, n2, n3);} +#define EVENT EVENT0 + +#define RAISE_EVENT0(src, event) (src)->event(); +#define RAISE_EVENT1(src, event, v0) (src)->event(v0); +#define RAISE_EVENT2(src, event, v0, v1) (src)->event(v0, v1); +#define RAISE_EVENT3(src, event, v0, v1, v2) (src)->event(v0, v1, v2); +#define RAISE_EVENT4(src, event, v0, v1, v2, v3) (src)->event(v0, v1, v2, v3); +#define RAISE_EVENT RAISE_EVENT0 + +#define CONNECT0(ret, src, event, dest, handler) PIObject::piConnect(src, #event, dest, (void*)(ret(*)(void*))(&(dest)->__stat_eh_##handler##__), (void*)(void(*)(void*))(&(src)->__stat_eh_##event##__)); +#define CONNECT1(ret, a0, src, event, dest, handler) PIObject::piConnect(src, #event, dest, (void*)(ret(*)(void*, a0))(&(dest)->__stat_eh_##handler##__), (void*)(void(*)(void*, a0))(&(src)->__stat_eh_##event##__)); +#define CONNECT2(ret, a0, a1, src, event, dest, handler) PIObject::piConnect(src, #event, dest, (void*)(ret(*)(void*, a0, a1))(&(dest)->__stat_eh_##handler##__), (void*)(void(*)(void*, a0, a1))(&(src)->__stat_eh_##event##__)); +#define CONNECT3(ret, a0, a1, a2, src, event, dest, handler) PIObject::piConnect(src, #event, dest, (void*)(ret(*)(void*, a0, a1, a2))(&(dest)->__stat_eh_##handler##__), (void*)(void(*)(void*, a0, a1, a2))(&(src)->__stat_eh_##event##__)); +#define CONNECT4(ret, a0, a1, a2, a3, src, event, dest, handler) PIObject::piConnect(src, #event, dest, (void*)(ret(*)(void*, a0, a1, a2, a3))(&(dest)->__stat_eh_##handler##__), (void*)(void(*)(void*, a0, a1, a2, a3))(&(src)->__stat_eh_##event##__)); +#define CONNECT CONNECT0 + +#define WEAK_CONNECT0(ret, src, event, dest, handler) PIObject::piConnect(src, #event, dest, (void*)(ret(*)(void*))(&(dest)->__stat_eh_##handler##__)); +#define WEAK_CONNECT1(ret, a0, src, event, dest, handler) PIObject::piConnect(src, #event, dest, (void*)(ret(*)(void*, a0))(&(dest)->__stat_eh_##handler##__)); +#define WEAK_CONNECT2(ret, a0, a1, src, event, dest, handler) PIObject::piConnect(src, #event, dest, (void*)(ret(*)(void*, a0, a1))(&(dest)->__stat_eh_##handler##__)); +#define WEAK_CONNECT3(ret, a0, a1, a2, src, event, dest, handler) PIObject::piConnect(src, #event, dest, (void*)(ret(*)(void*, a0, a1, a2))(&(dest)->__stat_eh_##handler##__)); +#define WEAK_CONNECT4(ret, a0, a1, a2, a3, src, event, dest, handler) PIObject::piConnect(src, #event, dest, (void*)(ret(*)(void*, a0, a1, a2, a3))(&(dest)->__stat_eh_##handler##__)); +#define WEAK_CONNECT WEAK_CONNECT0 + +#define DISCONNECT0(ret, src, event, dest, handler) PIObject::piDisconnect(src, #event, dest, (void*)(ret(*)(void*))(&(dest)->__stat_eh_##handler##__)); +#define DISCONNECT1(ret, a0, src, event, dest, handler) PIObject::piDisconnect(src, #event, dest, (void*)(ret(*)(void*, a0))(&(dest)->__stat_eh_##handler##__)); +#define DISCONNECT2(ret, a0, a1, src, event, dest, handler) PIObject::piDisconnect(src, #event, dest, (void*)(ret(*)(void*, a0, a1))(&(dest)->__stat_eh_##handler##__)); +#define DISCONNECT3(ret, a0, a1, a2, src, event, dest, handler) PIObject::piDisconnect(src, #event, dest, (void*)(ret(*)(void*, a0, a1, a2))(&(dest)->__stat_eh_##handler##__)); +#define DISCONNECT4(ret, a0, a1, a2, a3, src, event, dest, handler) PIObject::piDisconnect(src, #event, dest, (void*)(ret(*)(void*, a0, a1, a2, a3))(&(dest)->__stat_eh_##handler##__)); +#define DISCONNECT DISCONNECT0 + +#define HANDLER(handler) __stat_eh_##handler##__ + +#endif + +typedef void (*Handler)(void * ); + +class PIP_EXPORT PIObject +{ + friend class PIObjectManager; +public: + + //! Contructs PIObject with name "name" + PIObject(const PIString & name = PIString()); + + virtual ~PIObject() {piMonitor.objects--; objects.removeAll(this);} + + + //! Returns object name + PIString name() const {return property("name").toString();} + + //! Returns object class name + virtual const char * className() const {return "PIObject";} + + //! Return if debug of this object is active + bool debug() const {return property("debug").toBool();} + + + //! Set object name + void setName(const PIString & name) {setProperty("name", name);} + + //! Set object debug active + void setDebug(bool debug) {setProperty("debug", debug);} + + //! Returns properties of the object + const PIMap & properties() const {return properties_;} + + //! Returns properties count of the object + int propertiesCount() const {return properties_.size_s();} + + //! Returns property with name "name" + PIVariant property(const PIString & name) const {if (!properties_.contains(name)) return PIVariant(); return properties_.value(name);} + + //! Set property with name "name" to "value". If there is no such property in object it will be added + void setProperty(const PIString & name, const PIVariant & value) {properties_[name] = value; propertyChanged(name);} + + //! Returns if property with name "name" exists + bool isPropertyExists(const PIString & name) const {return properties_.contains(name);} + + /* + PIStringList events(); + PIStringList eventHandlers(); + + /// Events + void addEvent(const PIString & name) { + signals_.insert(NamedFunction(0, name, PIStringList()), name); + } + template + void addEvent(const PIString & name) { + signals_.insert(NamedFunction(0, name, PIStringList(typeid(T0).name())), name); + } + template + void addEvent(const PIString & name) { + signals_.insert(NamedFunction(0, name, PIStringList(typeid(T0).name(), typeid(T1).name())), name); + } + template + void addEvent(const PIString & name) { + signals_.insert(NamedFunction(0, name, PIStringList(typeid(T0).name(), typeid(T1).name(), typeid(T2).name())), name); + } + template + void addEvent(const PIString & name) { + signals_.insert(NamedFunction(0, name, PIStringList(typeid(T0).name(), typeid(T1).name(), typeid(T2).name(), typeid(T3).name())), name); + } + + /// Event handlers + void addEventHandler(const PIString & name, void * func) { + slots_.insert(NamedFunction(func, name, PIStringList()), name); + } + template + void addEventHandler(const PIString & name, void * func) { + slots_.insert(NamedFunction(func, name, PIStringList(typeid(T0).name())), name); + } + template + void addEventHandler(const PIString & name, void * func) { + slots_.insert(NamedFunction(func, name, PIStringList(typeid(T0).name(), typeid(T1).name())), name); + } + template + void addEventHandler(const PIString & name, void * func) { + slots_.insert(NamedFunction(func, name, PIStringList(typeid(T0).name(), typeid(T1).name(), typeid(T2).name())), name); + } + template + void addEventHandler(const PIString & name, void * func) { + slots_.insert(NamedFunction(func, name, PIStringList(typeid(T0).name(), typeid(T1).name(), typeid(T2).name(), typeid(T3).name())), name); + } + */ + // / Direct connect + static void piConnect(PIObject * src, const PIString & sig, void * dest, void * ev_h) {src->connections << Connection(ev_h, 0, sig, dest);} + static void piConnect(PIObject * src, const PIString & sig, void * dest, void * ev_h, void * e_h) {src->connections << Connection(ev_h, e_h, sig, dest);} + + static void piConnect(const PIString & src, const PIString & sig, void * dest, void * ev_h); + static void piConnect(PIObject * src, const PIString & sig, const PIString & dest, void * ev_h); + static void piConnect(const PIString & src, const PIString & sig, const PIString & dest, void * ev_h); + + static void piDisconnect(PIObject * src, const PIString & sig, void * dest, void * ev_h) { + for (int i = 0; i < src->connections.size_s(); ++i) { + Connection & cc(src->connections[i]); + if (cc.event == sig && cc.dest == dest && cc.slot == ev_h) { + src->connections.remove(i); + i--; + } + } + } + static void piDisconnect(PIObject * src, const PIString & sig, void * dest) { + for (int i = 0; i < src->connections.size_s(); ++i) { + Connection & cc(src->connections[i]); + if (cc.event == sig && cc.dest == dest) { + src->connections.remove(i); + i--; + } + } + } + + //! Disconnect object "src" from all connections with event name "sig" + static void piDisconnect(PIObject * src, const PIString & sig) { + for (int i = 0; i < src->connections.size_s(); ++i) { + Connection & cc(src->connections[i]); + if (cc.event == sig) { + src->connections.remove(i); + i--; + } + } + } + + //! Disconnect object "src" from all connections, i.e. all connections where object "src" is emitter + static void piDisconnect(PIObject * src) {src->connections.clear();} + //static void piConnect(PIObject & src, const PIString & sig, PIObject * dest, void * ev_h) {src.connections << Connection(ev_h, sig, dest);} + //static void piConnect(PIObject * src, const PIString & sig, PIObject & dest, void * ev_h) {src->connections << Connection(ev_h, sig, &dest);} + //static void piConnect(PIObject & src, const PIString & sig, PIObject & dest, void * ev_h) {src.connections << Connection(ev_h, sig, &dest);} + + /*/// Connect through manager + static bool piConnect(const PIString & srcObject, const PIString & event, const PIString & destObject, const PIString & handler, bool force = false) { + PIObject * src = findByName(srcObject); + if (src == 0) { + cout << "PIObject::piConnect: can`t find PIObject with \"" << srcObject << "\" name!" << endl; + return false; + } + PIObject * dest = findByName(destObject); + if (dest == 0) { + cout << "PIObject::piConnect: can`t find PIObject with \"" << destObject << "\" name!" << endl; + return false; + } + return PIObject::piConnect(src, event, dest, handler, force); + }*/ + + // / Raise events + static void raiseEvent(PIObject * sender, const PIString & event) { + for (int j = 0; j < sender->connections.size_s(); ++j) { + Connection & i(sender->connections[j]); + if (i.event != event) continue; + //((PIObject*)(i.dest))->mutex_.lock(); + ((PIObject*)(i.dest))->emitter_ = sender; + ((void(*)(void * ))i.slot)(i.dest); + ((PIObject*)(i.dest))->emitter_ = 0; + //((PIObject*)(i.dest))->mutex_.unlock(); + } + } + template + static void raiseEvent(PIObject * sender, const PIString & event, const T0 & v0 = T0()) { + for (int j = 0; j < sender->connections.size_s(); ++j) { + Connection & i(sender->connections[j]); + if (i.event != event) continue; + //((PIObject*)(i.dest))->mutex_.lock(); + ((PIObject*)(i.dest))->emitter_ = sender; + ((void(*)(void * , T0))i.slot)(i.dest, v0); + ((PIObject*)(i.dest))->emitter_ = 0; + //((PIObject*)(i.dest))->mutex_.unlock(); + } + } + template + static void raiseEvent(PIObject * sender, const PIString & event, const T0 & v0 = T0(), const T1 & v1 = T1()) { + for (int j = 0; j < sender->connections.size_s(); ++j) { + Connection & i(sender->connections[j]); + if (i.event != event) continue; + //((PIObject*)(i.dest))->mutex_.lock(); + ((PIObject*)(i.dest))->emitter_ = sender; + ((void(*)(void * , T0, T1))i.slot)(i.dest, v0, v1); + ((PIObject*)(i.dest))->emitter_ = 0; + //((PIObject*)(i.dest))->mutex_.unlock(); + } + } + template + static void raiseEvent(PIObject * sender, const PIString & event, const T0 & v0 = T0(), const T1 & v1 = T1(), const T2 & v2 = T2()) { + for (int j = 0; j < sender->connections.size_s(); ++j) { + Connection & i(sender->connections[j]); + if (i.event != event) continue; + //((PIObject*)(i.dest))->mutex_.lock(); + ((PIObject*)(i.dest))->emitter_ = sender; + ((void(*)(void * , T0, T1, T2))i.slot)(i.dest, v0, v1, v2); + ((PIObject*)(i.dest))->emitter_ = 0; + //((PIObject*)(i.dest))->mutex_.unlock(); + } + } + template + static void raiseEvent(PIObject * sender, const PIString & event, const T0 & v0 = T0(), const T1 & v1 = T1(), const T2 & v2 = T2(), const T3 & v3 = T3()) { + for (int j = 0; j < sender->connections.size_s(); ++j) { + Connection & i(sender->connections[j]); + if (i.event != event) continue; + //((PIObject*)(i.dest))->mutex_.lock(); + ((PIObject*)(i.dest))->emitter_ = sender; + ((void(*)(void * , T0, T1, T2, T3))i.slot)(i.dest, v0, v1, v2, v3); + ((PIObject*)(i.dest))->emitter_ = 0; + //((PIObject*)(i.dest))->mutex_.unlock(); + } + } + /* + /// Raise events (static) + static void raiseEvent(PIObject * destObject, const PIString & name) { + destObject->raiseEvent(name); + } + template + static void raiseEvent(PIObject * destObject, const PIString & name, const T0 & v0 = T0()) { + destObject->raiseEvent(name, v0); + } + template + static void raiseEvent(PIObject * destObject, const PIString & name, const T0 & v0 = T0(), const T1 & v1 = T1()) { + destObject->raiseEvent(name, v0, v1); + } + template + static void raiseEvent(PIObject * destObject, const PIString & name, const T0 & v0 = T0(), const T1 & v1 = T1(), const T2 & v2 = T2()) { + destObject->raiseEvent(name, v0, v1, v2); + } + template + static void raiseEvent(PIObject * destObject, const PIString & name, const T0 & v0 = T0(), const T1 & v1 = T1(), const T2 & v2 = T2(), const T3 & v3 = T3()) { + destObject->raiseEvent(name, v0, v1, v2, v3); + } + */ + // / Raise events through manager + static void raiseEvent(const PIString & destObject, const PIString & name) { + PIObject * dest = findByName(destObject); + if (dest == 0) { + cout << "PIObject::piConnect: can`t find PIObject with \"" << destObject << "\" name!" << endl; + return; + } + raiseEvent(dest, name); + } + template + static void raiseEvent(const PIString & destObject, const PIString & name, const T0 & v0 = T0()) { + PIObject * dest = findByName(destObject); + if (dest == 0) { + cout << "PIObject::piConnect: can`t find PIObject with \"" << destObject << "\" name!" << endl; + return; + } + raiseEvent(dest, name, v0); + } + template + static void raiseEvent(const PIString & destObject, const PIString & name, const T0 & v0 = T0(), const T1 & v1 = T1()) { + PIObject * dest = findByName(destObject); + if (dest == 0) { + cout << "PIObject::piConnect: can`t find PIObject with \"" << destObject << "\" name!" << endl; + return; + } + raiseEvent(dest, name, v0, v1); + } + template + static void raiseEvent(const PIString & destObject, const PIString & name, const T0 & v0 = T0(), const T1 & v1 = T1(), const T2 & v2 = T2()) { + PIObject * dest = findByName(destObject); + if (dest == 0) { + cout << "PIObject::piConnect: can`t find PIObject with \"" << destObject << "\" name!" << endl; + return; + } + raiseEvent(name, dest, v0, v1, v2); + } + template + static void raiseEvent(const PIString & destObject, const PIString & name, const T0 & v0 = T0(), const T1 & v1 = T1(), const T2 & v2 = T2(), const T3 & v3 = T3()) { + PIObject * dest = findByName(destObject); + if (dest == 0) { + cout << "PIObject::piConnect: can`t find PIObject with \"" << destObject << "\" name!" << endl; + return; + } + raiseEvent(name,dest , v0, v1, v2, v3); + } + + //! Returns PIObject* with name "name" or 0, if there is no object found + static PIObject * findByName(const PIString & name) { + piForeach (PIObject * i, PIObject::objects) { + if (i->name() != name) continue; + return i; + } + return 0; + }; + +protected: + + //! Returns PIObject* which has raised an event. This value is correct only in definition of some event handler + PIObject * emitter() const {return emitter_;} + + //! Virtual function executes after property with name "name" has been changed + virtual void propertyChanged(const PIString & name) {} + +private: + struct Connection { + Connection(void * sl = 0, void * si = 0, const PIString & e = PIString(), void * o = 0) {slot = sl; signal = si; event = e; dest = o;} + void * slot; + void * signal; + PIString event; + void * dest; + }; + + PIVector connections; + PIMap properties_; + + static PIVector objects; + PIMutex mutex_; + PIObject * emitter_; + +}; + +#endif // PIOBJECT_H diff --git a/_oldpip/pip_0.4.0_r5/pip.h b/_oldpip/pip_0.4.0_r5/pip.h new file mode 100644 index 0000000..a2f1200 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/pip.h @@ -0,0 +1,36 @@ +/* + PIP - Platform Independent Primitives + All includes + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +#include "pitimer.h" +#include "pivariant.h" +#include "piconsole.h" +#include "picli.h" +#include "pievaluator.h" +#include "pimultiprotocol.h" +#include "picodec.h" +#include "pisignals.h" +#include "piobject.h" +#include "pisystemmonitor.h" +#include "pipeer.h" +#include "picrc.h" +#include "pistatemachine.h" +#include "picollection.h" +#include "piserial.h" +#include "pibinarylog.h" +#include "piusb.h" diff --git a/_oldpip/pip_0.4.0_r5/pip.kdev4 b/_oldpip/pip_0.4.0_r5/pip.kdev4 new file mode 100644 index 0000000..fb90c96 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/pip.kdev4 @@ -0,0 +1,3 @@ +[Project] +Manager=KDevCMakeManager +Name=pip diff --git a/_oldpip/pip_0.4.0_r5/pip.pro b/_oldpip/pip_0.4.0_r5/pip.pro new file mode 100644 index 0000000..c695453 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/pip.pro @@ -0,0 +1,130 @@ +###################################################################### +# Automatically generated by qmake (2.01a) ?? ???. 5 22:55:18 2011 +###################################################################### + +TEMPLATE = lib +TARGET = pip +DEPENDPATH += . +INCLUDEPATH += . +QT -= core gui +CONFIG -= qt +CONFIG += dll +VERSION = 0.4.0 + +# Input +HEADERS += \ + pivariant.h \ + pitimer.h \ + pithread.h \ + pisystemtests.h \ + pisystemmonitor.h \ + pistring.h \ + pisignals.h \ + piserial.h \ + piprotocol.h \ + piprocess.h \ + pipeer.h \ + pipacketextractor.h \ + pip.h \ + piobject.h \ + pimutex.h \ + pimultiprotocol.h \ + pimonitor.h \ + pimath.h \ + pikbdlistener.h \ + piiodevice.h \ + piincludes.h \ + pigeometry.h \ + pifile.h \ + pievaluator.h \ + piethernet.h \ + pidir.h \ + picrc.h \ + picontainers.h \ + piconsole.h \ + piconfig.h \ + picodec.h \ + picli.h \ + pichar.h \ + pibytearray.h \ + pibitarray.h \ + picollection.h \ + pidiagnostics.h \ + pibinarylog.h \ + picodeparser.h \ + picodeinfo.h \ + piusb.h \ + piconnection.h +SOURCES += main.cpp \ + pivariant.cpp \ + pitimer.cpp \ + pithread.cpp \ + pisystemtests.cpp \ + pisystemmonitor.cpp \ + pistring.cpp \ + pisignals.cpp \ + piserial.cpp \ + piprotocol.cpp \ + piprocess.cpp \ + pipeer.cpp \ + pipacketextractor.cpp \ + piobject.cpp \ + pimonitor.cpp \ + pimath.cpp \ + pikbdlistener.cpp \ + piiodevice.cpp \ + piincludes.cpp \ + pifile.cpp \ + pievaluator.cpp \ + piethernet.cpp \ + pidir.cpp \ + piconsole.cpp \ + piconfig.cpp \ + picodec.cpp \ + picli.cpp \ + pibytearray.cpp \ + picollection.cpp \ + pidiagnostics.cpp \ + pibinarylog.cpp \ + picodeparser.cpp \ + picodeinfo.cpp \ + piusb.cpp \ + piconnection.cpp +win32 { + LIBS += -lws2_32 -lIphlpapi +} else { + android { + } else { + LIBS = -lpthread -lrt + } +} + +OTHER_FILES += \ + android/AndroidManifest.xml \ + android/res/layout/splash.xml \ + android/res/values/libs.xml \ + android/res/values/strings.xml \ + android/res/values-de/strings.xml \ + android/res/values-el/strings.xml \ + android/res/values-es/strings.xml \ + android/res/values-et/strings.xml \ + android/res/values-fa/strings.xml \ + android/res/values-fr/strings.xml \ + android/res/values-id/strings.xml \ + android/res/values-it/strings.xml \ + android/res/values-ja/strings.xml \ + android/res/values-ms/strings.xml \ + android/res/values-nb/strings.xml \ + android/res/values-nl/strings.xml \ + android/res/values-pl/strings.xml \ + android/res/values-pt-rBR/strings.xml \ + android/res/values-ro/strings.xml \ + android/res/values-rs/strings.xml \ + android/res/values-ru/strings.xml \ + android/res/values-zh-rCN/strings.xml \ + android/res/values-zh-rTW/strings.xml \ + android/src/org/kde/necessitas/ministro/IMinistro.aidl \ + android/src/org/kde/necessitas/ministro/IMinistroCallback.aidl \ + android/src/org/qtproject/qt5/android/bindings/QtActivity.java \ + android/src/org/qtproject/qt5/android/bindings/QtApplication.java \ + android/version.xml diff --git a/_oldpip/pip_0.4.0_r5/pip.pro.user b/_oldpip/pip_0.4.0_r5/pip.pro.user new file mode 100644 index 0000000..b5855fd --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/pip.pro.user @@ -0,0 +1,215 @@ + + + + + + ProjectExplorer.Project.ActiveTarget + 0 + + + ProjectExplorer.Project.EditorSettings + + true + false + + Cpp + + CppGlobal + + + + QmlJS + + QmlJSGlobal + + + 2 + UTF-8 + false + 4 + true + 1 + true + 0 + true + 0 + 8 + true + 1 + true + true + true + false + + + + ProjectExplorer.Project.PluginSettings + + + + ProjectExplorer.Project.Target.0 + + Desktop + Desktop + Qt4ProjectManager.Target.DesktopTarget + 0 + 0 + 0 + + ProjectExplorer.ToolChain.Mingw:C:/MinGW/bin//g++.exe.x86-windows-msys-pe-32bit.C:/Qt/qtcreator-2.4.1/pythongdb/gdb-i686-pc-mingw32.exe + + + qmake + + QtProjectManager.QMakeBuildStep + false + true + + false + + + Сборка + + Qt4ProjectManager.MakeStep + false + + + + 2 + Сборка + + ProjectExplorer.BuildSteps.Build + + + + Сборка + + Qt4ProjectManager.MakeStep + true + clean + + + 1 + ОчиÑтка + + ProjectExplorer.BuildSteps.Clean + + 2 + false + + Qt 4.8.0 (4.8.0) Релиз + + Qt4ProjectManager.Qt4BuildConfiguration + 0 + E:/pprojects/pip + 6 + false + + 1 + + + 0 + УÑтановка + + ProjectExplorer.BuildSteps.Deploy + + 1 + Без уÑтановки + + ProjectExplorer.DefaultDeployConfiguration + + 1 + + true + true + + + false + false + false + false + false + false + false + false + true + true + 0.01 + 0.01 + 10 + 10 + true + true + 25 + 25 + + + true + true + valgrind + valgrind + + 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + + + 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + + pip + + Qt4ProjectManager.Qt4RunConfiguration + 2 + + pip.pro + false + false + + + 3768 + true + false + false + + 1 + + + + ProjectExplorer.Project.TargetCount + 1 + + + ProjectExplorer.Project.Updater.EnvironmentId + {e0680b61-7ce7-4775-a872-e83c6b7b3dfe} + + + ProjectExplorer.Project.Updater.FileVersion + 10 + + diff --git a/_oldpip/pip_0.4.0_r5/pip_export.h b/_oldpip/pip_0.4.0_r5/pip_export.h new file mode 100644 index 0000000..4c1e544 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/pip_export.h @@ -0,0 +1,35 @@ + +#ifndef PIP_EXPORT_H +#define PIP_EXPORT_H + +#ifdef PIP_STATIC_DEFINE +# define PIP_EXPORT +# define PIP_NO_EXPORT +#else +# ifndef PIP_EXPORT +# ifdef pip_EXPORTS + /* We are building this library */ +# define PIP_EXPORT __attribute__((visibility("default"))) +# else + /* We are using this library */ +# define PIP_EXPORT __attribute__((visibility("default"))) +# endif +# endif + +# ifndef PIP_NO_EXPORT +# define PIP_NO_EXPORT __attribute__((visibility("hidden"))) +# endif +#endif + +#ifndef PIP_DEPRECATED +# define PIP_DEPRECATED __attribute__ ((__deprecated__)) +# define PIP_DEPRECATED_EXPORT PIP_EXPORT __attribute__ ((__deprecated__)) +# define PIP_DEPRECATED_NO_EXPORT PIP_NO_EXPORT __attribute__ ((__deprecated__)) +#endif + +#define DEFINE_NO_DEPRECATED 0 +#if DEFINE_NO_DEPRECATED +# define PIP_NO_DEPRECATED +#endif + +#endif diff --git a/_oldpip/pip_0.4.0_r5/pip_resource_win.rc b/_oldpip/pip_0.4.0_r5/pip_resource_win.rc new file mode 100644 index 0000000..660cbd1 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/pip_resource_win.rc @@ -0,0 +1,34 @@ +# if defined(UNDER_CE) +# include +# else +# include +# endif + +VS_VERSION_INFO VERSIONINFO + FILEVERSION 0,4,0,0 + PRODUCTVERSION 0,4,0,0 + FILEFLAGSMASK 0x3fL + FILEFLAGS 0x0L + FILEOS VOS__WINDOWS32 + FILETYPE VFT_DLL + FILESUBTYPE 0x0L + BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904B0" + BEGIN + VALUE "CompanyName", "Peri4\0" + VALUE "FileDescription", "Platform-Independent Primitives\0" + VALUE "FileVersion", "0.4.0_beta2\0" + VALUE "LegalCopyright", "\0" + VALUE "OriginalFilename", "libpip.dll\0" + VALUE "ProductName", "PIP\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1200 + END + END +/* End of Version info */ + diff --git a/_oldpip/pip_0.4.0_r5/pip_test.exe b/_oldpip/pip_0.4.0_r5/pip_test.exe new file mode 100644 index 0000000000000000000000000000000000000000..71e69f75548cc34852bb6f847bebcf13b2104bae GIT binary patch literal 78668 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 literal 0 HcmV?d00001 diff --git a/_oldpip/pip_0.4.0_r5/pipacketextractor.cpp b/_oldpip/pip_0.4.0_r5/pipacketextractor.cpp new file mode 100644 index 0000000..188f43f --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/pipacketextractor.cpp @@ -0,0 +1,301 @@ +/* + PIP - Platform Independent Primitives + Packets extractor + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +#include "pipacketextractor.h" + + +/** \class PIPacketExtractor + * \brief Packets extractor + * \details + * \section PIPacketExtractor_main Synopsis + * This class implements packet recognition by various algorithms and custom + * validating from data stream. Stream is formed from child %PIIODevice + * passed from contructor or with function \a setDevice(). + * + * \section PIPacketExtractor_work Principle of work + * %PIPacketExtractor works with child %PIIODevice. \a read and \a write + * functions directly call child device functions. You should start threaded + * read of \b extractor (not child device) to proper work. Extractor read data + * from child device, try to detect packet from readed data and raise + * \a packetReceived() event on success. + * + * \section PIPacketExtractor_algorithms Algorithms + * There are 6 algorithms: \n + * * PIPacketExtractor::None \n + * Packet is successfully received on every read without any validation. \n \n + * * PIPacketExtractor::Header \n + * Wait for at least \a header() bytes + \a payloadSize(), then validate + * header with virtual function \a validateHeader() and if it fail, shifts + * for next 1 byte. If header is successfully validated check payload with + * function \a validatePayload() and if it fail, shifts for next 1 byte. If + * all validations were successful raise \a packetReceived() event. \n \n + * * PIPacketExtractor::Footer \n + * This algorithm similar to previous, but instead of \a header() first validate + * \a footer() at after \a payloadSize() bytes with function \a validateFooter(). \n \n + * * PIPacketExtractor::HeaderAndFooter \n + * Wait for at least \a header() bytes + \a footer() bytes, then validate + * header with virtual function \a validateHeader() and if it fail, shifts + * for next 1 byte. If header is successfully validated check footer with + * function \a validateFooter() and if it fail, shifts footer position for + * next 1 byte. Then validate payload and if it fail, search header again, + * starts from next byte of previous header. If all validations were successful + * raise \a packetReceived() event. \n \n + * * PIPacketExtractor::Size \n + * Wait for at least \a packetSize() bytes, then validate packet with function + * \a validatePayload() and if it fail, shifts for next 1 byte. If validating + * was successfull raise \a packetReceived() event. \n \n + * * PIPacketExtractor::Timeout \n + * Wait for first read, then read for \a timeout() milliseconds and raise + * \a packetReceived() event. \n + * + * \section PIPacketExtractor_control Control validating + * There are three parameters: + * * header content + * * header size + * * payload size + * + * Extractor can detect packet with compare your header with readed data. + * It is default implementation of function \a packetHeaderValidate(). + * If header validating passed, function \a packetValidate() will be called. + * If either of this function return \b false extractor shifts by one byte + * and takes next header. If both functions returns \b true extractor shifts + * by whole packet size. + * \image html packet_detection.png + * + * */ + +REGISTER_DEVICE(PIPacketExtractor); + + +PIPacketExtractor::PIPacketExtractor(PIIODevice * device_, PIPacketExtractor::SplitMode mode) { + init_(); + setDevice(device_); + setSplitMode(mode); +} + + +void PIPacketExtractor::init_() { + ret_func_header = ret_func_footer = 0; + setPayloadSize(0); + setTimeout(100); + setThreadedReadBufferSize(65536); + setBufferSize(65536); + setDevice(0); + setPacketSize(0); + setSplitMode(None); + allReaded = addSize = curInd = missed = footerInd = 0; + header_found = false; +} + + +void PIPacketExtractor::propertyChanged(const PIString &) { + packetSize_ = property("packetSize").toInt(); + mode_ = (SplitMode)(property("splitMode").toInt()); + dataSize = property("payloadSize").toInt(); + src_header = property("header").toByteArray(); + src_footer = property("footer").toByteArray(); + packetSize_hf = src_header.size_s() + src_footer.size_s() + payloadSize(); +} + + +void PIPacketExtractor::setDevice(PIIODevice * device_) { + dev = device_; + if (dev == 0) return; +} + + +void PIPacketExtractor::setPayloadSize(int size) { + setProperty("payloadSize", size); + dataSize = size; + packetSize_hf = src_header.size_s() + src_footer.size_s() + payloadSize(); +} + + +void PIPacketExtractor::setHeader(const PIByteArray & data) { + setProperty("header", data); + src_header = data; + packetSize_hf = src_header.size_s() + src_footer.size_s() + payloadSize(); +} + + +void PIPacketExtractor::setFooter(const PIByteArray & data) { + setProperty("footer", data); + src_footer = data; + packetSize_hf = src_header.size_s() + src_footer.size_s() + payloadSize(); +} + + +bool PIPacketExtractor::threadedRead(uchar * readed, int size_) { + //piCoutObj << "readed" << size_; + int ss; + switch (mode_) { + case PIPacketExtractor::None: + if (validatePayload(readed, size_)) + packetReceived(readed, size_); + break; + case PIPacketExtractor::Header: + tmpbuf.append(readed, size_); + ss = src_header.size_s() + dataSize; + while (tmpbuf.size_s() >= ss) { + while (!validateHeader(src_header.data(), tmpbuf.data(), src_header.size_s())) { + tmpbuf.pop_front(); + ++missed; + if (tmpbuf.size_s() < ss) return true; + } + while (!validatePayload(tmpbuf.data(src_header.size_s()), dataSize)) { + tmpbuf.pop_front(); + ++missed; + if (tmpbuf.size_s() < ss) return true; + } + packetReceived(tmpbuf.data(), ss); + tmpbuf.remove(0, ss); + } + break; + case PIPacketExtractor::Footer: + /*memcpy(buffer.data(allReaded), readed, size_); + allReaded += size_; + footer_ = (mode_ == PIPacketExtractor::Footer); + while (allReaded >= packetSize_hf + addSize && allReaded > 0) { + if (!src_header.isEmpty()) { + if (allReaded + curInd >= buffer_size) { + memcpy(sbuffer.data(), buffer.data(), buffer_size); + memcpy(buffer.data(), sbuffer.data(buffer_size - packetSize_hf), allReaded); + allReaded = packetSize_hf; + addSize = curInd = 0; + } + bool brk = false; + while (!validateHeader((uchar * )(footer_ ? src_footer.data() : src_header.data()), buffer.data(curInd + (footer_ ? dataSize : 0)), footer_ ? src_footer.size_s() : src_header.size_s())) { + ++curInd; ++missed; + if (packetSize_hf > 0) missed_packets = missed / packetSize_hf; + if (curInd > addSize) { + addSize += packetSize_hf; + brk = true; + break; + } + } + if (brk) continue; + //memcpy(mheader.data(), buffer.data(curInd + (footer_ ? dataSize : 0)), src_header.size_s()); + if (!src_header.isEmpty()) memcpy(src_header.data(), buffer.data(curInd), src_header.size_s()); + if (!validatePayload(buffer.data(curInd + src_header.size_s()), dataSize)) { + ++curInd; ++missed; + if (packetSize_hf > 0) missed_packets = missed / packetSize_hf; + continue; + } + packetReceived(buffer.data(curInd), packetSize_hf); + memcpy(sbuffer.data(), buffer.data(), allReaded); + memcpy(buffer.data(), sbuffer.data(packetSize_hf + curInd), allReaded); + allReaded -= packetSize_hf + curInd; + curInd = addSize = 0; + } else { + if (dataSize == 0) { + if (validatePayload(buffer.data(), size_)) + packetReceived(buffer.data(), size_); + memcpy(sbuffer.data(), buffer.data(), allReaded); + memcpy(buffer.data(), sbuffer.data(size_), allReaded); + allReaded -= size_; + } else { + if (validatePayload(buffer.data(), dataSize)) + packetReceived(buffer.data(), dataSize); + memcpy(sbuffer.data(), buffer.data(), allReaded); + memcpy(buffer.data(), sbuffer.data(packetSize_hf), allReaded); + allReaded -= packetSize_hf; + } + } + }*/ + tmpbuf.append(readed, size_); + ss = src_footer.size_s() + dataSize; + while (tmpbuf.size_s() >= ss) { + while (!validateFooter(src_footer.data(), tmpbuf.data(dataSize), src_footer.size_s())) { + tmpbuf.pop_front(); + ++missed; + if (tmpbuf.size_s() < ss) return true; + } + while (!validatePayload(tmpbuf.data(), dataSize)) { + tmpbuf.pop_front(); + ++missed; + if (tmpbuf.size_s() < ss) return true; + } + packetReceived(tmpbuf.data(), ss); + tmpbuf.remove(0, ss); + } + break; + case PIPacketExtractor::HeaderAndFooter: + tmpbuf.append(readed, size_); + ss = src_header.size_s() + src_footer.size_s(); + while (tmpbuf.size_s() >= ss) { + if (!header_found) { + if (tmpbuf.size_s() < ss) return true; + while (!validateHeader(src_header.data(), tmpbuf.data(), src_header.size_s())) { + tmpbuf.pop_front(); + ++missed; + if (tmpbuf.size_s() < ss) return true; + } + header_found = true; + footerInd = src_header.size_s(); + } else { + if (tmpbuf.size_s() < footerInd + src_footer.size_s()) return true; + while (!validateFooter(src_footer.data(), tmpbuf.data(footerInd), src_footer.size_s())) { + ++footerInd; + if (tmpbuf.size_s() < footerInd + src_footer.size_s()) return true; + } + //piCout << "footer found at" << footerInd; + header_found = false; + if (!validatePayload(tmpbuf.data(src_header.size_s()), footerInd - src_header.size_s())) { + tmpbuf.pop_front(); + ++missed; + continue; + } + packetReceived(tmpbuf.data(), footerInd + src_footer.size_s()); + tmpbuf.remove(0, footerInd + src_footer.size_s()); + footerInd = src_header.size_s(); + } + } + break; + case PIPacketExtractor::Size: + tmpbuf.append(readed, size_); + if (packetSize_ <= 0) { + tmpbuf.clear(); + return true; + } + while (tmpbuf.size_s() >= packetSize_) { + if (!validatePayload(tmpbuf.data(), packetSize_)) { + tmpbuf.pop_front(); + ++missed; + missed_packets = missed / packetSize_; + continue; + } + packetReceived(tmpbuf.data(), packetSize_); + tmpbuf.remove(0, packetSize_); + } + break; + case PIPacketExtractor::Timeout: + memcpy(buffer.data(), readed, size_); + trbuf = dev->readForTime(time_); + memcpy(buffer.data(size_), trbuf.data(), trbuf.size()); + if (size_ + trbuf.size() > 0) + packetReceived(buffer.data(), size_ + trbuf.size()); + break; + }; + return true; +} + + +PIString PIPacketExtractor::constructFullPath() const { + return fullPathPrefix() + "://"; +} diff --git a/_oldpip/pip_0.4.0_r5/pipacketextractor.h b/_oldpip/pip_0.4.0_r5/pipacketextractor.h new file mode 100644 index 0000000..e9b0c0d --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/pipacketextractor.h @@ -0,0 +1,187 @@ +/*! \file pipacketextractor.h + * \brief Packets extractor +*/ +/* + PIP - Platform Independent Primitives + Packets extractor + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + + +#ifndef PIPACKETEXTRACTOR_H +#define PIPACKETEXTRACTOR_H + +#include "piiodevice.h" + +// Pass data, recHeaderPtr, received_data, recHeaderSize. Return true if packet is correct nor return false. +typedef bool (*PacketExtractorCheckFunc)(void * , uchar * , uchar * , int ); + +class PIP_EXPORT PIPacketExtractor: public PIIODevice +{ + PIIODEVICE(PIPacketExtractor) + friend class PIConnection; +public: + + //! Extract algorithms + enum SplitMode { + None /** No data processing */ , + Header /** Detect packets with \a header() and following \a payloadSize() */ , + Footer /** Detect packets with \a footer() and leading \a payloadSize() */ , + HeaderAndFooter /** Detect packets with \a header() and \a footer() without \a payloadSize() */ , + Size /** Detect packets with \a packetSize() */ , + Timeout /** Wait for first read, then read for \a timeout() milliseconds */ + }; + + //! Contructs extractor with child device "device_" and extract algorithm "mode" + PIPacketExtractor(PIIODevice * device_ = 0, SplitMode mode = None); + + virtual ~PIPacketExtractor() {stop();} + + + //! Returns child %device + PIIODevice * device() {return dev;} + + //! Set child %device to "device_" + void setDevice(PIIODevice * device_); + + + //! Returns buffer size + int bufferSize() const {return buffer_size;} + + //! Set buffer size to "new_size" bytes, should be at least greater than whole packet size + void setBufferSize(int new_size) {buffer_size = new_size; buffer.resize(buffer_size); sbuffer.resize(buffer_size); memset(buffer.data(), 0, buffer.size()); memset(sbuffer.data(), 0, sbuffer.size());} + + void setHeaderCheckSlot(PacketExtractorCheckFunc f) {ret_func_header = f;} + void setFooterCheckSlot(PacketExtractorCheckFunc f) {ret_func_footer = f;} + void setPayloadCheckSlot(ReadRetFunc f) {ret_func_ = f;} + + + //! Set extract algorithm + void setSplitMode(SplitMode mode) {setProperty("splitMode", int(mode)); mode_ = mode;} + + //! Set payload size, used for PIPacketExtractor::Header and PIPacketExtractor::Footer algorithms + void setPayloadSize(int size); + + //! Set header data, used for PIPacketExtractor::Header and PIPacketExtractor::HeaderAndFooter algorithms + void setHeader(const PIByteArray & data); + + //! Set footer data, used for PIPacketExtractor::Footer and PIPacketExtractor::HeaderAndFooter algorithms + void setFooter(const PIByteArray & data); + + //! Set packet size, used for PIPacketExtractor::Size algorithm + void setPacketSize(int size) {setProperty("packetSize", size); packetSize_ = size;} + + //! Set timeout in milliseconds, used for PIPacketExtractor::Timeout algorithm + void setTimeout(double msecs) {setProperty("timeout", msecs); time_ = msecs;} + + + //! Returns current extract algorithm + SplitMode splitMode() const {return (SplitMode)(property("splitMode").toInt());} + + //! Returns current payload size, used for PIPacketExtractor::Header and PIPacketExtractor::Footer algorithms + int payloadSize() const {return property("payloadSize").toInt();} + + //! Returns current header data, used for PIPacketExtractor::Header and PIPacketExtractor::HeaderAndFooter algorithms + PIByteArray header() const {return src_header;} + + //! Returns current footer data, used for PIPacketExtractor::Footer and PIPacketExtractor::HeaderAndFooter algorithms + PIByteArray footer() const {return src_footer;} + + //! Returns current packet size, used for PIPacketExtractor::Size algorithm + int packetSize() const {return property("packetSize").toInt();} + + //! Returns current timeout in milliseconds, used for PIPacketExtractor::Timeout algorithm + double timeout() const {return property("timeout").toDouble();} + + + //! Returns missed by validating functions bytes count + ullong missedBytes() const {return missed;} + + // //! Returns missed by validating functions packets count, = missedBytes() / packetSize + ullong missedPackets() const {/*if (packetSize_hf == 0) return missed; return missed / packetSize_hf*/; return missed_packets;} + + //! Returns pointer to \a missedBytes() count. Useful for output to PIConsole + const ullong * missedBytes_ptr() const {return &missed;} + + // //! Returns pointer to \a missedPackets() count. Useful for output to PIConsole + const ullong * missedPackets_ptr() const {return &missed_packets;} + + + // //! Returns last successfully validated header as byte array + PIByteArray lastHeader() {return mheader;} + + + //! Directly call \a read() function of child %device + int read(void * read_to, int max_size) {if (dev == 0) return -1; return dev->read(read_to, max_size);} + + //! Directly call \a write() function of child %device + int write(const void * data, int max_size) {if (dev == 0) return -1; return dev->write(data, max_size);} + + PIString constructFullPath() const; + + EVENT2(packetReceived, uchar * , data, int, size) + +//! \events +//! \{ + + //! \fn void packetReceived(uchar * data, int size) + //! \brief Raise on successfull \a packetValidate() function + +//! \} + +protected: + + /** \brief Function to validate header + * \param src Your header content + * \param rec Received header + * \param size Header size + * \details Default implementation returns by-byte "src" with "rec" compare result */ + virtual bool validateHeader(uchar * src, uchar * rec, int size) {if (ret_func_header != 0) return ret_func_header(ret_data_, src, rec, size); for (int i = 0; i < size; ++i) if (src[i] != rec[i]) return false; return true;} + + /** \brief Function to validate footer + * \param src Your footer content + * \param rec Received footer + * \param size Footer size + * \details Default implementation returns by-byte "src" with "rec" compare result */ + virtual bool validateFooter(uchar * src, uchar * rec, int size) {if (ret_func_footer != 0) return ret_func_footer(ret_data_, src, rec, size); for (int i = 0; i < size; ++i) if (src[i] != rec[i]) return false; return true;} + + /** \brief Function to validate payload + * \param rec Received payload + * \param size payload size + * \details Default implementation returns \b true */ + virtual bool validatePayload(uchar * rec, int size) {if (ret_func_ != 0) return ret_func_(ret_data_, rec, size); return true;} + +private: + void init_(); + void propertyChanged(const PIString & ); + bool threadedRead(uchar * readed, int size); + PIString fullPathPrefix() const {return "pckext";} + bool openDevice() {if (dev == 0) return false; return dev->open();} + + PIIODevice * dev; + PIByteArray mheader, buffer, sbuffer, tmpbuf, src_header, src_footer, trbuf; + PacketExtractorCheckFunc ret_func_header, ret_func_footer; + SplitMode mode_; + void * data; + int buffer_size, dataSize, packetSize_hf, allReaded, addSize, curInd, footerInd, packetSize_; + double time_; + bool header_found; + ullong missed, missed_packets; + + +}; + +#endif // PIPACKETEXTRACTOR_H diff --git a/_oldpip/pip_0.4.0_r5/pipeer.cpp b/_oldpip/pip_0.4.0_r5/pipeer.cpp new file mode 100644 index 0000000..c672b18 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/pipeer.cpp @@ -0,0 +1,515 @@ +/* + PIP - Platform Independent Primitives + Peer - named I/O ethernet node + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +#include "pipeer.h" + +#define _PIPEER_PORT_SYNC_START 13313 +#define _PIPEER_PORT_SYNC_END 13353 +#define _PIPEER_IP_MULTICAST "230.13.3.12" +#define _PIPEER_MSG_SIZE 8192 + +PIPeer::PIPeer(const PIString & name_): PIObject() { + rec_mc = rec_bc = false; + setName(name_); + self_info.name = name_; + self_info.dist = 0; + eth_send = 0; + //joinMulticastGroup("239.240.241.242"); + srand(uint(PITimer::elapsed_system_m())); + //id_ = name() + "_" + PIString::fromNumber(rand()); + CONNECT2(void, void * , int, &timer, timeout, this, timerEvent); + PIStringList sl = PIEthernet::allAddresses(); + sl.removeAll("127.0.0.1"); sl << "127.0.0.1"; + initMulticasts(sl); + initEths(sl); + sendSelfInfo(); + timer.addDelimiter(5); + timer.start(1000); +} + + +PIPeer::~PIPeer() { + piForeach (PIEthernet * i, mc_eths) + i->stopThreadedRead(); + if (eth_send != 0) + eth_send->stopThreadedRead(); + sendSelfRemove(); + destroyMulticasts(); + piForeach (PIEthernet * i, eths) + delete i; + eths.clear(); + if (eth_send != 0) + delete eth_send; +} + + +void PIPeer::timerEvent(void * data, int delim) { + switch (delim) { + case 5: // 5 s + syncPeers(); + break; + } + //send("broadcast", 9); +} + + +void PIPeer::initEths(const PIStringList & al) { + PIEthernet * ce; + PIEthernet::InterfaceList il = PIEthernet::interfaces(); + const PIEthernet::Interface * cint = 0; + piForeachC (PIString & a, al) { + ce = new PIEthernet(); + ce->setParameters(0); + ce->setDebug(false); + for (int p = _PIPEER_PORT_SYNC_START; p < 65536; ++p) { + ce->setReadAddress(a, p); + if (ce->open()) { + eths << ce; + cint = il.getByAddress(a); + self_info.addresses << ce->path(); + self_info.netmasks << (cint == 0 ? "255.255.255.0" : cint->netmask); + CONNECT2(bool, void * , int, ce, threadedReadEvent, this, dataRead); + ce->startThreadedRead(); + //piCout << "dc binded to" << ce->path(); + //piCout << "add eth" << ta; + break; + } + } + } + eth_send = new PIEthernet(); + eth_send->setParameters(0); + eth_send->setDebug(false); +} + + +void PIPeer::initMulticasts(const PIStringList & al) { + destroyMulticasts(); + PIEthernet * ce; + PIEthernet::InterfaceList il = PIEthernet::interfaces(); + const PIEthernet::Interface * cint; + PIStringList nal = al; + PIString nm; + nal << "main" << "bc"; + rec_mc = rec_bc = false; + piForeachC (PIString & a, nal) { + bool is_main = (a == "main"); + bool is_bc = (a == "bc"); + ce = new PIEthernet(); + ce->setParameters((is_main || is_bc) ? PIEthernet::Broadcast : 0); + ce->setDebug(false); + //cint = il.getByAddress(a); + //nm = (cint == 0) ? "255.255.255.0" : cint->netmask; + ce->setSendIP(is_bc ? "255.255.255.255" : _PIPEER_IP_MULTICAST); + //piCout << "mc try" << a << nm << ce->sendIP(); + for (int p = _PIPEER_PORT_SYNC_START; p < _PIPEER_PORT_SYNC_END; ++p) { + ce->setReadAddress(((is_main || is_bc) ? "255.255.255.255" : a) + ":" + PIString::fromNumber(p)); + ce->close(); + if (!ce->open()) continue; + if (is_main) if (!ce->joinMulticastGroup(_PIPEER_IP_MULTICAST)) continue; + //piCout << "mc binded to" << ce->path(); + ce->setName(is_main ? "no_send" : ""); + mc_eths << ce; + if (is_main || is_bc) { + if (is_main) rec_mc = true; + if (is_bc) rec_bc = true; + CONNECT2(bool, void * , int, ce, threadedReadEvent, this, multicastRead); + ce->startThreadedRead(); + if (is_bc) ce->setParameter(PIEthernet::Broadcast, false); + } + break; + } + } + piForeachC (PIString & a, al) { + ce = new PIEthernet(); + ce->setParameters(PIEthernet::Broadcast); + ce->setDebug(false); + cint = il.getByAddress(a); + nm = (cint == 0) ? "255.255.255.0" : cint->netmask; + ce->setSendIP(PIEthernet::getBroadcast(a, nm)); + //piCout << "mc BC try" << a << nm << ce->sendIP(); + for (int p = _PIPEER_PORT_SYNC_START; p < _PIPEER_PORT_SYNC_END; ++p) { + ce->setReadAddress(a + ":" + PIString::fromNumber(p)); + ce->close(); + if (!ce->open()) continue; + //piCout << "BC binded to" << ce->path(); + mc_eths << ce; + break; + } + } + if (!rec_mc) piCoutObj << "Can`t find suitable network interface for multicast receive, check for exists at least one interface with multicasting enabled!"; + if (!rec_bc) piCoutObj << "Can`t find suitable network interface for broadcast receive, check for exists at least one interface with broadcasting enabled!"; +} + + +void PIPeer::destroyMulticasts() { + piForeach (PIEthernet * i, mc_eths) { + i->leaveMulticastGroup(_PIPEER_IP_MULTICAST); + delete i; + } + mc_eths.clear(); +} + + +PIPeer::PeerInfo * PIPeer::quickestPeer(const PIString & to) { + if (!addresses_map.contains(to)) return 0; + //piCout << "*** search quickest peer" << to; + PIVector tp = addresses_map[to]; + PeerInfo * dp = 0; + int mping = 99999; + for (int i = 0; i < tp.size_s(); ++i) { + if (mping > tp[i]->ping) { + mping = tp[i]->ping; + dp = tp[i]; + } + } + //piCout << "*** search quickest peer: found" << dp->name; + return dp; +} + + +bool PIPeer::send(const PIString & to, const void * data, int size) { + PeerInfo * dp = quickestPeer(to); + if (dp == 0) { + //piCoutObj << "Can`t find peer \"" << to << "\"!"; + return false; + } + PIByteArray ba; + ba << int(4) << self_info.name << to << int(0) << size; + PIByteArray fmsg(data, size), cmsg; + int msg_count = (size - 1) / _PIPEER_MSG_SIZE + 1; + //piCout << "[PIPeer] send" << size << "bytes in" << msg_count << "packets ..."; + for (int i = 0; i < msg_count; ++i) { + int csize = (i == msg_count - 1) ? ((size - 1) % _PIPEER_MSG_SIZE + 1) : _PIPEER_MSG_SIZE; + cmsg.clear(); + cmsg.append(ba); + cmsg << msg_count << i; + cmsg.append(fmsg.data(i * _PIPEER_MSG_SIZE), csize); + if (!sendToNeighbour(dp, cmsg)) return false; + } + //piCout << "[PIPeer] send" << size << "bytes ok"; + return true; +} + + +bool PIPeer::dataRead(uchar * readed, int size) { + if (size < 16) return true; + PIByteArray ba(readed, size), sba; + int type, cnt, rec_size; + PIString from, to; + ba >> type; + //piCout << "[PIPeer \"" + name_ + "\"] Received packet" << type; + if (type != 4) return true; + PIMutexLocker locker(eth_mutex); + diag_d.received(size); + ba >> from >> to >> cnt >> rec_size; + //piCout << "[PIPeer \"" + name_ + "\"] Received packet" << /*type << from << to << cnt <<*/ rec_size; + if (type == 4) { // data packet + if (to == self_info.name) { // my packet + int msg_count, cmsg; + ba >> msg_count >> cmsg; + //piCout << "[PIPeer \"" + name_ + "\"] Received packet" << type << from << to << cnt << rec_size << msg_count << cmsg; + if (cmsg == 0 && msg_count == 1) { + dataReceived(from, ba); + dataReceivedEvent(from, ba); + return true; + } + PeerInfo * fp = const_cast(getPeerByName(from)); + if (fp == 0) return true; + PeerData & pd(fp->_data); + if (cmsg == 0) { + //piCout << "[PIPeer \"" + name_ + "\"] Packet clear" << rec_size; + pd.clear(); + pd.msg_count = msg_count; + } + //piCout << "[PIPeer \"" + name_ + "\"] Packet add" << cmsg << ba.size_s(); + pd.addData(ba); + if (pd.isFullReceived()) { + dataReceived(from, pd.data); + dataReceivedEvent(from, pd.data); + //piCout << "[PIPeer \"" + name_ + "\"] Packet received" << pd.data.size_s(); + } + return true; + } + PeerInfo * dp = quickestPeer(to); + if (dp == 0) { + //piCoutObj << "Can`t find peer \"" << to << "\"!"; + return true; + } + cnt++; + if (cnt > 100 || from == dp->name) return true; + sba << type << from << to << cnt << rec_size; + sba.append(ba); + //piCoutObj << "Translate data packet" << type << from << to << cnt << rec_size; + sendToNeighbour(dp, sba); + } + return true; +} + + +bool PIPeer::multicastRead(uchar * data, int size) { + if (size < 8) return true; + int type; + PIByteArray ba(data, size); + ba >> type; + if (type <= 0 || type >= 4) return true; + PeerInfo pi; + PIVector rpeers; + ba >> pi.name; + //piCout << "read type" << type << "from" << pi.name; + if (pi.name == name()) return true; + PIMutexLocker locker(mc_mutex); + diag_s.received(size); + //piCout << "analyz ..."; + switch (type) { + case 1: // new peer accepted + //piCout << "new peer packet ..."; + if (hasPeer(pi.name)) break; + ba >> pi.dist >> pi.addresses >> pi.netmasks >> pi.neighbours; + pi.sync = 0; + if (pi.dist == 0) { + pi.addNeighbour(self_info.name); + self_info.addNeighbour(pi.name); + } + peers << pi; + //piCoutObj << "new peer \"" << pi.name << "\"" << " dist " << pi.dist; + pi.dist++; + sendSelfInfo(); + sendPeerInfo(pi); + findNearestAddresses(); + peerConnected(pi.name); + peerConnectedEvent(pi.name); + //piCout << "new peer packet ok"; + break; + case 2: // remove peer accepted + //piCout << "remove peer packet ..."; + if (removePeer(pi.name)) { + //piCoutObj << "remove peer \"" << pi.name << "\""; + if (pi.dist == 0) { + pi.removeNeighbour(self_info.name); + self_info.removeNeighbour(pi.name); + } + sendPeerRemove(pi.name); + findNearestAddresses(); + peerDisconnected(pi.name); + peerDisconnectedEvent(pi.name); + } + //piCout << "remove peer packet ok"; + break; + case 3: // sync peers + //piCout << "sync packet ..."; + ba >> pi.addresses >> pi.netmasks >> pi.neighbours >> rpeers; + rpeers << pi; + //piCout << "[PIPeer \"" + name_ + "\"] rec sync " << rpeers.size_s() << " peers"; + for (uint i = 0; i < rpeers.size(); ++i) { + PeerInfo & rpeer(rpeers[i]); + //piCout << " to sync " << rpeer.name; + if (rpeer.name == name()) continue; + bool exist = false; + for (uint j = 0; j < peers.size(); ++j) { + PeerInfo & peer(peers[j]); + if (peer.name == rpeer.name) { + //piCout << "synced " << peer.name; + peer.addresses = rpeer.addresses; + peer.netmasks = rpeer.netmasks; + peer.addNeighbours(rpeer.neighbours); + rpeer.neighbours = peer.neighbours; + if (peer.name == pi.name) peer.sync = 0; + exist = true; + break; + } + } + if (exist) continue; + peers << rpeer; + peers.back().dist++; + findNearestAddresses(); + peerConnected(rpeer.name); + peerConnectedEvent(rpeer.name); + } + //piCout << "***";; + //piCout << self_info.name << self_info.neighbours; + piForeach (PeerInfo & i, peers) { + if (i.dist == 0) { + self_info.addNeighbour(i.name); + i.addNeighbour(self_info.name); + } + //piCout << i.name << i.neighbours; + } + break; + } + return true; +} + + +bool PIPeer::sendToNeighbour(PIPeer::PeerInfo * peer, const PIByteArray & ba) { + if (peer->_neth == 0) return false; + //piCout << "[PIPeer] sendToNeighbour" << (eth_send->readAddress()) << peer->_naddress << ba.size_s() << "bytes ..."; + //bool ok = peer->_neth->send(peer->_naddress, ba.data(), ba.size_s()); + bool ok = eth_send->send(peer->_naddress, ba.data(), ba.size_s()); + //piCout << "[PIPeer] sendToNeighbour" << (ok ? "ok" : "fail"); + if (ok) diag_d.sended(ba.size_s()); + return ok; +} + + +void PIPeer::sendMulticast(const PIByteArray & ba) { + //piCout << "send muticast ..."; + piForeach (PIEthernet * e, mc_eths) { + if (e->name() == "no_send") continue; + for (int p = _PIPEER_PORT_SYNC_START; p < _PIPEER_PORT_SYNC_END; ++p) { + e->setSendPort(p); + //errorClear(); + //piCout << "send to" << e->path() << e->sendAddress();// << e->send(ba); + //piCout << PIEthernet::ethErrorString(); + e->send(ba); + diag_s.sended(ba.size_s()); + } + } + //piCout << "send muticast ok"; +} + + +void PIPeer::sendPeerInfo(const PeerInfo & info) { + PIByteArray ba; + ba << int(1) << info.name << info.dist << info.addresses << info.netmasks << info.neighbours; + sendMulticast(ba); +} + + +void PIPeer::sendPeerRemove(const PIString & peer) { + PIByteArray ba; + ba << int(2) << peer; + sendMulticast(ba); +} + + +void PIPeer::syncPeers() { + //piCout << "[PIPeer \"" + name_ + "\"] sync " << peers.size_s() << " peers"; + PIString pn; + bool change = false; + for (uint i = 0; i < peers.size(); ++i) { + PeerInfo & cp(peers[i]); + if (cp.sync > 3 && cp.dist == 0) { + pn = cp.name; + //piCoutObj << "sync: remove " << pn; + peers.remove(i); + sendPeerRemove(pn); + --i; + piForeach (PeerInfo & p, peers) + p.removeNeighbour(pn); + self_info.removeNeighbour(pn); + peerDisconnected(pn); + peerDisconnectedEvent(pn); + change = true; + continue; + } + cp.sync++; + } + if (change) findNearestAddresses(); + PIByteArray ba; + ba << int(3) << self_info.name << self_info.addresses << self_info.netmasks << self_info.neighbours << peers; + sendMulticast(ba); +} + + +void PIPeer::findNearestAddresses() { + //piCout << "[PIPeer \"" + name_ + "\"] findNearestAddresses"; + addresses_map.clear(); + int max_dist = -1; + static PIMap peers_; + peers_.clear(); + self_info._nuses.resize(self_info.neighbours.size()); + self_info._nuses.fill(0); + self_info._first = &self_info; + peers_[self_info.name] = &self_info; + piForeach (PeerInfo & i, peers) { + i._nuses.resize(i.neighbours.size()); + i._nuses.fill(0); + i._first = 0; + peers_[i.name] = &i; + if (max_dist < i.dist) + max_dist = i.dist; + if (i.dist > 0) continue; + i._naddress.clear(); + i._neth = 0; + PIString mma, ma; + bool af = false; + for (int mi = 0; mi < self_info.addresses.size_s(); ++mi) { + PIString & m(self_info.addresses[mi]), & mmask(self_info.netmasks[mi]); + if (af) break; + ma = m; + //mma = m.left(m.findLast(".")); + mma = PIEthernet::applyMask(m, mmask); + for (int ii = 0; ii < i.addresses.size_s(); ++ii) { + PIString & r(i.addresses[ii]), & rmask(i.netmasks[ii]); + if (mma == PIEthernet::applyMask(r, rmask)) { + i._naddress = r; + //piCout << "_naddress" << i.name << "=" << r; + af = true; + break; + } + } + } + if (!af) continue; + //piCout << " peer" << i.name << ma; + piForeach (PIEthernet * e, eths) + if (e->readAddress() == ma) { + i._neth = e; + break; + } + //piCout << i.name << i._naddress; + } + PIVector cwave, nwave; + PeerInfo * npeer; + cwave << &self_info; + for (int d = 0; d <= max_dist; ++d) { + if (cwave.isEmpty()) break; + nwave.clear(); + piForeach (PeerInfo * p, cwave) { + int ns = p->neighbours.size_s(); + for (int n = 0; n < ns; ++n) { + if (p->_nuses[n] >= ns) continue; + p->_nuses[n]++; + npeer = peers_[p->neighbours[n]]; + if (npeer == 0) continue; + if (d == 0) npeer->_first = npeer; + else { + if (d == 1) npeer->_first = p; + else npeer->_first = p->_first; + } + nwave << npeer; + } + } + cwave = nwave; + //piCout << "wave" << d; + for (int i = 0; i < cwave.size_s(); ++i) { + //piCout << " peer" << cwave[i]->name << Hex << (uint)(cwave[i]->_first); + if (cwave[i]->_first == 0) {cwave.remove(i); --i; continue;} + if (addresses_map.contains(cwave[i]->name)) {cwave.remove(i); --i; continue;} + } + for (int i = 0; i < cwave.size_s(); ++i) { + PIVector & pl(addresses_map[cwave[i]->name]); + if (!pl.contains(cwave[i]->_first)) + pl << cwave[i]->_first; + } + } + /*piCout << " ** addresses map **"; + piForeachC (napair & i, addresses_map) + piCout << i.first << i.second; + piCout << " ** addresses map end **";*/ +} diff --git a/_oldpip/pip_0.4.0_r5/pipeer.h b/_oldpip/pip_0.4.0_r5/pipeer.h new file mode 100644 index 0000000..841174e --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/pipeer.h @@ -0,0 +1,167 @@ +/*! \file pipeer.h + * \brief Peering net node +*/ +/* + PIP - Platform Independent Primitives + Peer - named I/O ethernet node, forming self-organized peering network + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +#ifndef PIPEER_H +#define PIPEER_H + +#include "piethernet.h" +#include "pidiagnostics.h" + +class PIP_EXPORT PIPeer: public PIObject +{ + PIOBJECT(PIPeer) +private: + struct PeerData { + PeerData() {msg_count = msg_rec = 0;} + void clear() {msg_count = msg_rec = 0; data.clear();} + bool isEmpty() const {return msg_count == 0;} + bool isFullReceived() const {return msg_count == msg_rec;} + void addData(const PIByteArray & ba) {data.append(ba); msg_rec++;} + void setData(const PIByteArray & ba) {data = ba; msg_rec = 0; msg_count = (data.size_s() - 1) / 4096 + 1;} + PIByteArray data; + int msg_count; + int msg_rec; + }; + +public: + PIPeer(const PIString & name); + virtual ~PIPeer(); + + class PeerInfo { + friend class PIPeer; + friend PIByteArray & operator <<(PIByteArray & s, const PIPeer::PeerInfo & v); + friend PIByteArray & operator >>(PIByteArray & s, PIPeer::PeerInfo & v); + public: + PeerInfo() {dist = sync = ping = 0; _neth = 0; _first = 0;} + + PIString name; + PIStringList addresses; + int dist; + int ping; + + bool isNeighbour() const {return dist == 0;} + + protected: + void addNeighbour(const PIString & n) {if (!neighbours.contains(n)) neighbours << n;} + void addNeighbours(const PIStringList & l) {piForeachC (PIString & n, l) if (!neighbours.contains(n)) neighbours << n;} + void removeNeighbour(const PIString & n) {neighbours.removeAll(n);} + + PIString nearest_address; + PIStringList netmasks; + PIStringList neighbours; + int sync; + PIString _naddress; + PIEthernet * _neth; + PIVector _nuses; + PeerInfo * _first; + PeerData _data; + + }; + + friend PIByteArray & operator <<(PIByteArray & s, const PIPeer::PeerInfo & v); + friend PIByteArray & operator >>(PIByteArray & s, PIPeer::PeerInfo & v); + + bool send(const PIString & to, const PIByteArray & data) {return send(to, data.data(), data.size_s());} + bool send(const PIString & to, const PIString & data) {return send(to, data.data(), data.size_s());} + bool send(const PIString & to, const void * data, int size); + bool send(const PeerInfo & to, const PIByteArray & data) {return send(to.name, data.data(), data.size_s());} + bool send(const PeerInfo & to, const PIString & data) {return send(to.name, data.data(), data.size_s());} + bool send(const PeerInfo & to, const void * data, int size) {return send(to.name, data, size);} + bool send(const PeerInfo * to, const PIByteArray & data) {if (to == 0) return false; return send(to->name, data.data(), data.size_s());} + bool send(const PeerInfo * to, const PIString & data) {if (to == 0) return false; return send(to->name, data.data(), data.size_s());} + bool send(const PeerInfo * to, const void * data, int size) {if (to == 0) return false; return send(to->name, data, size);} + void sendToAll(const PIByteArray & data) {piForeachC (PeerInfo & i, peers) send(i.name, data.data(), data.size_s());} + void sendToAll(const PIString & data) {piForeachC (PeerInfo & i, peers) send(i.name, data.data(), data.size_s());} + void sendToAll(const void * data, int size) {piForeachC (PeerInfo & i, peers) send(i.name, data, size);} + + bool isMulticastReceive() const {return rec_mc;} + bool isBroadcastReceive() const {return rec_bc;} + + PIDiagnostics & diagnosticService() {return diag_s;} + PIDiagnostics & diagnosticData() {return diag_d;} + + const PIVector & allPeers() const {return peers;} + bool isPeerExists(const PIString & name) const {return getPeerByName(name) != 0;} + + const PeerInfo * getPeerByName(const PIString & name) const {piForeachC (PeerInfo & i, peers) if (i.name == name) return &i; return 0;} + + void lock() {mc_mutex.lock();} + void unlock() {mc_mutex.unlock();} + + EVENT2(dataReceivedEvent, const PIString &, from, const PIByteArray &, data); + EVENT1(peerConnectedEvent, const PIString &, name); + EVENT1(peerDisconnectedEvent, const PIString &, name); + +protected: + virtual void dataReceived(const PIString & from, const PIByteArray & data) {;} + virtual void peerConnected(const PIString & name) {;} + virtual void peerDisconnected(const PIString & name) {;} + + EVENT_HANDLER2(bool, dataRead, uchar *, readed, int, size); + EVENT_HANDLER2(bool, multicastRead, uchar *, readed, int, size); + +private: + EVENT_HANDLER2(void, timerEvent, void * , data, int, delim); + + bool hasPeer(const PIString & name) {piForeachC (PeerInfo & i, peers) if (i.name == name) return true; return false;} + bool removePeer(const PIString & name) {for (uint i = 0; i < peers.size(); ++i) if (peers[i].name == name) {peers.remove(i); return true;} return false;} + + void sendPeerInfo(const PeerInfo & info); + void sendPeerRemove(const PIString & peer); + void sendSelfInfo() {sendPeerInfo(self_info);} + void sendSelfRemove() {sendPeerRemove(name());} + void syncPeers(); + void findNearestAddresses(); + void initEths(const PIStringList & al); + void initMulticasts(const PIStringList & al); + void destroyMulticasts(); + void sendMulticast(const PIByteArray & ba); + + PeerInfo * quickestPeer(const PIString & to); + bool sendToNeighbour(PeerInfo * peer, const PIByteArray & ba); + + struct PeerPacket { + int header; // 1 - new peer, 2 - remove peer, 3 - sync peers, 4 - data + // Data packet: 4, from, to, ticks, data_size, data + }; + + typedef std::pair > napair; + + PIVector eths; + PIVector mc_eths; + PIEthernet * eth_send; + PITimer timer; + PIMutex mc_mutex, eth_mutex; + bool rec_mc, rec_bc; + + PeerInfo self_info; + PIVector peers; + PIMap > addresses_map; // map {"to" = list of nearest peers} + PIDiagnostics diag_s, diag_d; + //PIString id_; + +}; + +inline PIByteArray & operator <<(PIByteArray & s, const PIPeer::PeerInfo & v) {s << v.name << v.addresses << v.netmasks << v.dist << v.neighbours; return s;} +inline PIByteArray & operator >>(PIByteArray & s, PIPeer::PeerInfo & v) {s >> v.name >> v.addresses >> v.netmasks >> v.dist >> v.neighbours; return s;} + +#endif // PIPEER_H diff --git a/_oldpip/pip_0.4.0_r5/piprocess.cpp b/_oldpip/pip_0.4.0_r5/piprocess.cpp new file mode 100644 index 0000000..3f23757 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/piprocess.cpp @@ -0,0 +1,199 @@ +/* + PIP - Platform Independent Primitives + Process + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +#include "piprocess.h" + + +PIProcess::PIProcess(): PIThread() { + exit_code = -1; +#ifdef WINDOWS + pi.dwProcessId = 0; +#else + pid = 0; +#endif + is_exec = false; + g_in = g_out = g_err = false; + t_in = t_out = t_err = false; + env = PIProcess::currentEnvironment(); +} + + +PIProcess::~PIProcess() { + if (t_in) f_in.remove(); + if (t_out) f_out.remove(); + if (t_err) f_err.remove(); +} + + +void PIProcess::exec_() { + is_exec = false; + startOnce(); + //cout << "exec wait" << endl; + while (!is_exec) + msleep(1); + //cout << "exec end" << endl; +} + + +void PIProcess::run() { + //cout << "run" << endl; + string str; + /// arguments convertion + as = 0; +#ifdef WINDOWS + //args.pop_front(); + piForeachC (PIString & i, args) + as += i.lengthAscii() + 1; + char * a = new char[as]; + memset(a, ' ', as - 1); + as = 0; + for (int i = 0; i < args.size_s(); ++i) { + str = args[i].stdString(); + memcpy(&a[as], str.c_str(), str.size()); + as += str.length() + 1; + } + a[as - 1] = 0; +#else + char * a[args.size_s() + 1]; + for (int i = 0; i < args.size_s(); ++i) { + str = args[i].stdString(); + a[i] = new char[str.size() + 1]; + memcpy(a[i], str.c_str(), str.size()); + a[i][str.size()] = 0; + //cout << a[i] << endl; + } + a[args.size_s()] = 0; +#endif + /// environment convertion + char ** e = new char*[env.size_s() + 1]; + for (int i = 0; i < env.size_s(); ++i) { + str = env[i].stdString(); + e[i] = new char[str.size() + 1]; + memcpy(e[i], str.c_str(), str.size()); + e[i][str.size()] = 0; + //cout << e[i] << endl; + } + e[env.size_s()] = 0; + /// files for stdin/out/err + t_in = t_out = t_err = false; + if (f_in.path().isEmpty()) { + f_in = PIFile::openTemporary(PIIODevice::ReadWrite); + t_in = true; + } + //f_in.open(PIIODevice::ReadWrite); f_in.close(); + if (f_out.path().isEmpty()) { + f_out = PIFile::openTemporary(PIIODevice::ReadWrite); + t_out = true; + } + //f_out.open(PIIODevice::WriteOnly); f_out.close(); + if (f_err.path().isEmpty()) { + f_err = PIFile::openTemporary(PIIODevice::ReadWrite); + t_err = true; + } + //f_err.open(PIIODevice::WriteOnly); f_err.close(); + + str = args.front().stdString(); + is_exec = true; + execStarted(PIString(str)); +#ifndef WINDOWS + pid = fork(); + if (pid == 0) { +#endif + tf_in = tf_out = tf_err = 0; + //cout << "exec " << tf_in << ", " << tf_out << ", " << tf_err << endl; + //cout << f_out.path() << endl; + if (g_in) tf_in = freopen(f_in.path().data(), "r", stdin); + if (g_out) tf_out = freopen(f_out.path().data(), "w", stdout); + if (g_err) tf_err = freopen(f_err.path().data(), "w", stderr); +#ifndef WINDOWS + if (!wd.isEmpty()) as = chdir(wd.data()); +#endif +#ifdef WINDOWS + GetStartupInfoA(&si); + memset(&pi, 0, sizeof(pi)); + if(CreateProcessA(0, // No module name (use command line) + a, // Command line + 0, // Process handle not inheritable + 0, // Thread handle not inheritable + false, // Set handle inheritance to FALSE + 0, // No creation flags + 0,//e, // Use environment + wd.isEmpty() ? 0 : wd.data(), // Use working directory + &si, // Pointer to STARTUPINFO structure + &pi)) // Pointer to PROCESS_INFORMATION structure + { + WaitForSingleObject(pi.hProcess, INFINITE); + CloseHandle(pi.hProcess); + } else + piCoutObj << "\"CreateProcess\" error, " << errorString(); +#else + + //cout << "exec " << tf_in << ", " << tf_out << ", " << tf_err << endl; + if (execve(str.c_str(), a, e) < 0) + piCoutObj << "\"execve\" error, " << errorString(); + } else { + msleep(1); + //cout << "wait" << endl; + wait(&exit_code); + /*if (tf_in != 0) fclose(tf_in); + if (tf_out != 0) fclose(tf_out); + if (tf_err != 0) fclose(tf_err);*/ + pid = 0; + //cout << "wait done" << endl; + } +#endif + execFinished(PIString(str), exit_code); + is_exec = false; + for (int i = 0; i < env.size_s(); ++i) + delete e[i]; + delete e; +#ifdef WINDOWS + delete a; +#else + for (int i = 0; i < args.size_s(); ++i) + delete a[i]; +#endif + //cout << "end " << tf_in << ", " << tf_out << ", " << tf_err << endl; +} + + +void PIProcess::removeEnvironmentVariable(const PIString & variable) { + PIString s; + for (int i = 0; i < env.size_s(); ++i) { + s = env[i]; + if (s.left(s.find("=")).trimmed() == variable) { + env.remove(i); + --i; + } + } +} + + +void PIProcess::setEnvironmentVariable(const PIString & variable, const PIString & value) { + PIString s, v; + for (int i = 0; i < env.size_s(); ++i) { + s = env[i]; + v = s.left(s.find("=")).trimmed(); + if (v == variable) { + env[i] = v + "=" + value; + return; + } + } + env << variable + "=" + value; +} diff --git a/_oldpip/pip_0.4.0_r5/piprocess.h b/_oldpip/pip_0.4.0_r5/piprocess.h new file mode 100644 index 0000000..ae6f03d --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/piprocess.h @@ -0,0 +1,130 @@ +/*! \file piprocess.h + * \brief Process +*/ +/* + PIP - Platform Independent Primitives + Process + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +#ifndef PIPROCESS_H +#define PIPROCESS_H + +#include "pithread.h" +#include "pifile.h" +#ifdef WINDOWS +//# include <.h> +#else +# include +#endif + +/// events: +/// execStarted(PIString program) +/// execFinished(PIString program, int exit_code) +/// +/// handlers: +/// bool exec(const PIString & program) +/// bool exec(const PIString & program, const PIString & arg1) +/// bool exec(const PIString & program, const PIString & arg1, const PIString & arg2) +/// bool exec(const PIString & program, const PIString & arg1, const PIString & arg2, const PIString & arg3) +/// bool exec(const PIString & program, const PIStringList & args) +/// void terminate() +/// bool waitForFinish(int timeout_msecs = 60000) +class PIP_EXPORT PIProcess: private PIThread +{ + PIOBJECT(PIProcess) +public: + PIProcess(); + virtual ~PIProcess(); + + int exitCode() const {return exit_code;} + int pID() const { +#ifdef WINDOWS + return pi.dwProcessId; +#else + return pid; +#endif + } + + void setGrabInput(bool yes) {g_in = yes;} + void setGrabOutput(bool yes) {g_out = yes;} + void setGrabError(bool yes) {g_err = yes;} + void setInputFile(const PIString & path) {f_in.setPath(path);} + void setOutputFile(const PIString & path) {f_out.setPath(path);} + void setErrorFile(const PIString & path) {f_err.setPath(path);} + void unsetInputFile() {f_in.setPath("");} + void unsetOutputFile() {f_out.setPath("");} + void unsetErrorFile() {f_err.setPath("");} + PIString workingDirectory() const {return wd;} + void setWorkingDirectory(const PIString & path) {wd = path;} + void resetWorkingDirectory() {wd.clear();} + PIByteArray readOutput() {f_out.open(PIIODevice::ReadOnly); return f_out.readAll();} + PIByteArray readError() {f_err.open(PIIODevice::ReadOnly); return f_err.readAll();} + + PIStringList environment() {return env;} + void clearEnvironment() {env.clear();} + void removeEnvironmentVariable(const PIString & variable); + void setEnvironmentVariable(const PIString & variable, const PIString & value); + + EVENT_HANDLER1(void, exec, const PIString & , program) {args.clear(); args << program; exec_();} + EVENT_HANDLER2(void, exec, const PIString & , program, const PIString & , arg) {args.clear(); args << program << arg; exec_();} + EVENT_HANDLER3(void, exec, const PIString & , program, const PIString & , arg1, const PIString & , arg2) {args.clear(); args << program << arg1 << arg2; exec_();} + EVENT_HANDLER4(void, exec, const PIString & , program, const PIString & , arg1, const PIString & , arg2, const PIString & , arg3) {args.clear(); args << program << arg1 << arg2 << arg3; exec_();} + EVENT_HANDLER2(void, exec, const PIString & , program, const PIStringList & , args_) {args << program << args_; exec_();} + EVENT_HANDLER(void, terminate) { +#ifdef WINDOWS + if (is_exec) if (!TerminateProcess(pi.hProcess, 0)) return; pi.dwProcessId = 0; +#else + if (is_exec) kill(pid, SIGKILL); pid = 0; +#endif + } + EVENT_HANDLER(bool, waitForFinish) {return waitForFinish(60000);} + EVENT_HANDLER1(bool, waitForFinish, int, timeout_msecs) {return PIThread::waitForFinish(timeout_msecs);} + + EVENT1(execStarted, PIString, program) + EVENT2(execFinished, PIString, program, int, exit_code) + + static PIStringList currentEnvironment() {PIStringList l; int i = 0; while (environ[i] != 0) {l << environ[i]; ++i;} return l;} + static int currentPID() { +#ifdef WINDOWS + return GetCurrentProcessId(); +#else + return getpid(); +#endif + } + +private: + virtual void run(); + void exec_(); + + PIStringList args, env; + PIString wd; + PIByteArray out; + PIFile f_in, f_out, f_err; + bool g_in, g_out, g_err, t_in, t_out, t_err; +#ifdef WINDOWS + STARTUPINFOA si; + PROCESS_INFORMATION pi; +#else + pid_t pid; +#endif + FILE * tf_in, * tf_out, * tf_err; + int exit_code, sz, as; + bool is_exec; + +}; + +#endif // PIPROCESS_H diff --git a/_oldpip/pip_0.4.0_r5/piprotocol.cpp b/_oldpip/pip_0.4.0_r5/piprotocol.cpp new file mode 100644 index 0000000..18f8932 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/piprotocol.cpp @@ -0,0 +1,777 @@ +/* + PIP - Platform Independent Primitives + Protocol, input/output channel (COM, UDP) + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com, Bychkov Andrey wapmobil@gmail.com + + 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 3 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, see . +*/ + +#include "piprotocol.h" + + +/** \class PIProtocol + * \brief + * \details + * \section PIProtocol_sec0 Synopsis + * + * + * + * */ + + +PIProtocol::PIProtocol(const PIString & config, const PIString & name_, void * recHeaderPtr, int recHeaderSize, void * recDataPtr, int recDataSize, void * sendDataPtr_, int sendDataSize_): PIObject() { + init(); + protName = name_; + PIObject::setName(name_); + PIConfig conf(config, PIIODevice::ReadOnly); + if (!conf.isOpened()) { + piCoutObj << "Can`t open \"" << config << "\"!"; + devReceiverState = devSenderState = "Config error"; + return; + } + PIConfig::Entry & b(conf.getValue(name_)), + & rb(b.getValue("receiver")), + & sb(b.getValue("sender")); + + init_receiver(b, rb, config); + init_sender(b, sb, config); + + headerPtr = (uchar * )recHeaderPtr; + headerSize = recHeaderSize; + dataPtr = (uchar * )recDataPtr; + dataSize = recDataSize; + sendDataPtr = (uchar * )sendDataPtr_; + sendDataSize = sendDataSize_; + packet_ext->setHeader(PIByteArray(recHeaderPtr, recHeaderSize)); + packet_ext->setPayloadSize(recDataSize); + packet_ext->setPacketSize(recDataSize); + packet_ext->setSplitMode(PIPacketExtractor::Header); + bool null_h = (recHeaderPtr == 0 || recHeaderSize == 0), null_d = (recDataPtr == 0 || recDataSize == 0); + if (null_h && null_d) packet_ext->setSplitMode(PIPacketExtractor::None); + else { + if (null_h) packet_ext->setSplitMode(PIPacketExtractor::Size); + } +} + + +PIProtocol::~PIProtocol() { + //cout << "prot " << protName << " delete\n"; + if (history_write_rec) { + if (history_file_rec.isEmpty()) { + history_file_rec.close(); + history_file_rec.remove(); + } + history_file_rec.close(); + } + if (history_write_send) { + if (history_file_send.isEmpty()) { + history_file_send.close(); + history_file_send.remove(); + } + history_file_send.close(); + } + delete diagTimer; + delete sendTimer; + delete secTimer; + delete packet_ext; + if (eth != 0) delete eth; + if (ser != 0) delete ser; +} + + +void PIProtocol::init() { + packet_ext = new PIPacketExtractor(0, PIPacketExtractor::Header); + packet_ext->setThreadedReadData(this); + packet_ext->setThreadedReadSlot(receiveEvent); + packet_ext->setHeaderCheckSlot(headerValidateEvent); + work = new_mp_prot = history_write_rec = history_write_send = false; + eth = 0; + ser = 0; + ret_func = 0; + mp_owner = 0; + net_diag = PIProtocol::Unknown; + cur_pckt = 0; + packets[0] = packets[1] = pckt_cnt = pckt_cnt_max = 0; + diagTimer = 0; + timeout_ = 3.f; + sendTimer = new PITimer(sendEvent, this); + diagTimer = new PITimer(diagEvent, this); + secTimer = new PITimer(secEvent, this); + wrong_count = receive_count = send_count = missed_count = 0; + packets_in_sec = packets_out_sec = bytes_in_sec = bytes_out_sec = 0; + immediate_freq = integral_freq = ifreq = 0.f; + headerPtr = dataPtr = sendDataPtr = 0; + headerSize = dataSize = sendDataSize = 0; + type_rec = type_send = PIProtocol::None; + devSenderState = devReceiverState = "Unknown"; + devSenderName = devReceiverName = "no device"; + history_rsize_rec = history_rsize_send = "no file"; + secTimer->start(1000.); + /*addEvent("receiver started"); + addEvent("receiver stopped"); + addEvent("sender started"); + addEvent("sender stopped"); + addEvent("received"); + addEvent("quality changed"); + addEventHandler(HANDLER(PIProtocol, startReceive)); + addEventHandler(HANDLER(PIProtocol, startSend)); + addEventHandler(HANDLER(PIProtocol, start)); + addEventHandler(HANDLER(PIProtocol, stopReceive)); + addEventHandler(HANDLER(PIProtocol, stopSend)); + addEventHandler(HANDLER(PIProtocol, stop));*/ +} + + +void PIProtocol::init_sender(PIConfig::Entry & b, PIConfig::Entry & sb, const PIString & config) { + int ps, gps; + bool ok, gok, flag, gflag, has_dev = false; + float freq, gfreq; + PIFlags pp(0); + PIString dev, gdev; + + if (sb.isEntryExists("ip") && sb.isEntryExists("device")) { + piCoutObj << "Ambiguous sender type in \"" << config << "\"!"; + devSenderState = "Config error"; + return; + } + dev = sb.getValue("ip", "", &ok); + gdev = b.getValue("ip", "", &gok); + has_dev = false; + if (ok || gok) { + if (gok && !ok) dev = gdev; + if (gok && ok && (dev != gdev)) { + piCoutObj << "Ambiguous sender type in \"" << config << "\"!"; + devSenderState = "Config error"; + return; + } + ps = sb.getValue("port", 0, &ok); + gps = b.getValue("port", 0, &gok); + if (ok || gok) { + if (gok && !ok) ps = gps; + if (gok && ok && (ps != gps)) { + piCoutObj << "Ambiguous send port in \"" << config << "\"!"; + devSenderState = "Config error"; + return; + } + type_send = PIProtocol::Ethernet; + if (eth == 0) eth = new PIEthernet(); + setSenderAddress(dev, ps); + //setReceiverAddress(dev, ps); + has_dev = true; + flag = sb.getValue("reconnectEnabled", true, &ok); + gflag = b.getValue("reconnectEnabled", true, &gok); + if (ok || gok) { + if (gok && !ok) flag = gflag; + if (gok && ok && (flag != gflag)) { + piCoutObj << "Ambiguous \"reconnectEnabled\" flag in \"" << config << "\"!"; + devReceiverState = "Config error"; + return; + } + eth->setReopenEnabled(flag); + } + freq = sb.getValue("reconnectTimeout", 1., &ok); + gfreq = b.getValue("reconnectTimeout", 1., &gok); + if (ok || gok) { + if (gok && !ok) freq = gfreq; + if (gok && ok && (freq != gfreq)) { + piCoutObj << "Ambiguous \"reconnectTimeout\" value in \"" << config << "\"!"; + devReceiverState = "Config error"; + return; + } + eth->setReopenTimeout(freq * 1000); + } + /*if (sendDataPtr_ == 0) + piCoutObj << "Warning: null send data pointer!"; + if (sendDataSize_ == 0) + piCoutObj << "Warning: null send data size!";*/ + } else { + piCoutObj << "Can`t find \"" << name() << ".sender.port\" or \"" << name() << ".port\" in \"" << config << "\"!"; + devSenderState = "Config error"; + return; + } + } + dev = sb.getValue("device", "", &ok); + gdev = b.getValue("device", "", &gok); + if (ok || gok) { + if (gok && !ok) dev = gdev; + if (gok && ok && (dev != gdev)) { + piCoutObj << "Ambiguous sender type in \"" << config << "\"!"; + devSenderState = "Config error"; + return; + } + ps = sb.getValue("speed", 0, &ok); + gps = b.getValue("speed", 0, &gok); + if (ok || gok) { + if (gok && !ok) ps = gps; + if (gok && ok && (ps != gps)) { + piCoutObj << "Ambiguous send \"speed\" in \"" << config << "\"!"; + devSenderState = "Config error"; + return; + } + flag = sb.getValue("parity", false, &ok); + gflag = b.getValue("parity", false, &gok); + if (ok || gok) { + if (gok && !ok) flag = gflag; + if (gok && ok && (flag != gflag)) { + piCoutObj << "Ambiguous send \"parity\" in \"" << config << "\"!"; + devSenderState = "Config error"; + return; + } + pp.setFlag(PISerial::ParityControl, flag); + } + flag = sb.getValue("twoStopBits", false, &ok); + gflag = b.getValue("twoStopBits", false, &gok); + if (ok || gok) { + if (gok && !ok) flag = gflag; + if (gok && ok && (flag != gflag)) { + piCoutObj << "Ambiguous send \"twoStopBits\" parity in \"" << config << "\"!"; + devSenderState = "Config error"; + return; + } + pp.setFlag(PISerial::TwoStopBits, flag); + } + } else { + piCoutObj << "Can`t find \"" << name() << ".sender.speed\" or \"" << name() << ".speed\" in \"" << config << "\"!"; + devSenderState = "Config error"; + return; + } + type_send = PIProtocol::Serial; + if (ser == 0) ser = new PISerial(dev); + setSenderDevice(dev, (PISerial::Speed)ps); + ser->setOutSpeed((PISerial::Speed)ps); + ser->setParameters(pp); + has_dev = true; + /*if (sendDataPtr_ == 0) + piCoutObj << "Warning: null send data pointer!"; + if (sendDataSize_ == 0) + piCoutObj << "Warning: null send data size!";*/ + } + history_write_send = sb.getValue("writeHistory", false, &ok); + bool ghist = b.getValue("writeHistory", false, &gok); + if (ok || gok) { + if (gok && !ok) history_write_send = ghist; + if (gok && ok && (history_write_send != ghist)) { + piCoutObj << "Ambiguous sender history in \"" << config << "\"!"; + devSenderState = "Config error"; + return; + } + if (history_write_send) { + history_path_send = sb.getValue("historyFile", "./history_" + protName + "_send_" + + PIDate::current().toString("__dd_mm_yyyy_") + + PITime::current().toString("_hh_mm_ss_")).value(); + history_id_send = sb.getValue("historyID", 0, &ok); + if (!ok) { + history_id_send = ushort(protName.toByteArray().checksumPlain32()) + 1; + piCoutObj << "Warning: no sender history ID defined, write with ID = " << history_id_send; + } + history_file_send.open(history_path_send, PIIODevice::WriteOnly); + } + } + freq = sb.getValue("frequency", -1.f, &ok); + gfreq = b.getValue("frequency", -1.f, &gok); + if (gok && !ok) freq = gfreq; + if (gok && ok && (freq != gfreq)) { + piCoutObj << "Ambiguous sender frequency in \"" << config << "\"!"; + devSenderState = "Config error"; + return; + } + if (freq > 0.f && !has_dev) + piCoutObj << "Warning: no sender device and not null send frequency!"; + setSenderFrequency(freq); +} + + +void PIProtocol::init_receiver(PIConfig::Entry & b, PIConfig::Entry & rb, const PIString & config) { + int ps, gps; + bool ok, gok, flag, gflag, has_dev = false; + float freq, gfreq; + PIFlags pp(0); + PIString dev, gdev; + + if (rb.isEntryExists("ip") && rb.isEntryExists("device")) { + piCoutObj << "Ambiguous receiver type in \"" << config << "\"!"; + devReceiverState = "Config error"; + return; + } + dev = rb.getValue("ip", "", &ok); + gdev = b.getValue("ip", "", &gok); + if (ok || gok) { + if (gok && !ok) dev = gdev; + if (gok && ok && (dev != gdev)) { + piCoutObj << "Ambiguous receiver type in \"" << config << "\"!"; + devReceiverState = "Config error"; + return; + } + ps = rb.getValue("port", 0, &ok); + gps = b.getValue("port", 0, &gok); + if (ok || gok) { + if (gok && !ok) ps = gps; + if (gok && ok && (ps != gps)) { + piCoutObj << "Ambiguous receive port in \"" << config << "\"!"; + devReceiverState = "Config error"; + return; + } + type_rec = PIProtocol::Ethernet; + eth = new PIEthernet(); + packet_ext->setDevice(eth); + //setSenderAddress(dev, ps); + setReceiverAddress(dev, ps); + has_dev = true; + flag = rb.getValue("reconnectEnabled", true, &ok); + gflag = b.getValue("reconnectEnabled", true, &gok); + if (ok || gok) { + if (gok && !ok) flag = gflag; + if (gok && ok && (flag != gflag)) { + piCoutObj << "Ambiguous \"reconnectEnabled\" flag in \"" << config << "\"!"; + devReceiverState = "Config error"; + return; + } + eth->setReopenEnabled(flag); + } + freq = rb.getValue("reconnectTimeout", 1., &ok); + gfreq = b.getValue("reconnectTimeout", 1., &gok); + if (ok || gok) { + if (gok && !ok) freq = gfreq; + if (gok && ok && (freq != gfreq)) { + piCoutObj << "Ambiguous \"reconnectTimeout\" value in \"" << config << "\"!"; + devReceiverState = "Config error"; + return; + } + eth->setReopenTimeout(freq * 1000); + } + /*if (recDataPtr == 0) + piCoutObj << "Warning: null receive data pointer!"; + if (recDataSize == 0) + piCoutObj << "Warning: null receive data size!";*/ + } else { + piCoutObj << "Can`t find \"" << name() << ".receiver.port\" or \"" << name() << ".port\" in \"" << config << "\"!"; + devReceiverState = "Config error"; + return; + } + } + dev = rb.getValue("device", "", &ok); + gdev = b.getValue("device", "", &gok); + if (ok || gok) { + if (gok && !ok) dev = gdev; + if (gok && ok && (dev != gdev)) { + piCoutObj << "Ambiguous receiver type in \"" << config << "\"!"; + devReceiverState = "Config error"; + return; + } + ps = rb.getValue("speed", 0, &ok); + gps = b.getValue("speed", 0, &gok); + if (ok || gok) { + if (gok && !ok) ps = gps; + if (gok && ok && (ps != gps)) { + piCoutObj << "Ambiguous receive \"speed\" in \"" << config << "\"!"; + devReceiverState = "Config error"; + return; + } + flag = rb.getValue("parity", false, &ok); + gflag = b.getValue("parity", false, &gok); + if (ok || gok) { + if (gok && !ok) flag = gflag; + if (gok && ok && (flag != gflag)) { + piCoutObj << "Ambiguous receive \"parity\" in \"" << config << "\"!"; + devReceiverState = "Config error"; + return; + } + pp.setFlag(PISerial::ParityControl, flag); + } + flag = rb.getValue("twoStopBits", false, &ok); + gflag = b.getValue("twoStopBits", false, &gok); + if (ok || gok) { + if (gok && !ok) flag = gflag; + if (gok && ok && (flag != gflag)) { + piCoutObj << "Ambiguous receive \"twoStopBits\" parity in \"" << config << "\"!"; + devReceiverState = "Config error"; + return; + } + pp.setFlag(PISerial::TwoStopBits, flag); + } + type_rec = PIProtocol::Serial; + type_send = PIProtocol::Serial; + ser = new PISerial(dev); + packet_ext->setDevice(ser); + //setSenderDevice(dev, (PISerial::Speed)ps); + setReceiverDevice(dev, (PISerial::Speed)ps); + ser->setInSpeed((PISerial::Speed)ps); + ser->setParameters(pp); + ps = rb.getValue("vtime", 1, &ok); + gps = b.getValue("vtime", 1, &gok); + if (ok || gok) { + if (gok && !ok) ps = gps; + if (gok && ok && (ps != gps)) { + piCoutObj << "Ambiguous receive \"vtime\" in \"" << config << "\"!"; + devReceiverState = "Config error"; + return; + } + ser->setVTime(ps); + } + has_dev = true; + /*if (recDataPtr == 0) + piCoutObj << "Warning: null receive data pointer!"; + if (recDataSize == 0) + piCoutObj << "Warning: null receive data size!";*/ + } else { + piCoutObj << "Can`t find \"" << name() << ".receiver.speed\" or \"" << name() << ".speed\" in \"" << config << "\"!"; + devReceiverState = "Config error"; + return; + } + } + history_write_rec = rb.getValue("writeHistory", false, &ok); + bool ghist = b.getValue("writeHistory", false, &gok); + if (ok || gok) { + if (gok && !ok) history_write_rec = ghist; + if (gok && ok && (history_write_rec != ghist)) { + piCoutObj << "Ambiguous receiver history in \"" << config << "\"!"; + devReceiverState = "Config error"; + return; + } + if (history_write_rec) { + history_path_rec = rb.getValue("historyFile", "./history_" + protName + "_rec_" + + PIDate::current().toString("__dd_mm_yyyy_") + + PITime::current().toString("_hh_mm_ss_")).value(); + history_id_rec = rb.getValue("historyID", 0, &ok); + if (!ok) { + history_id_rec = ushort(protName.toByteArray().checksumPlain32()); + piCoutObj << "Warning: no receiver history ID defined, write with ID = " << history_id_rec; + } + history_file_rec.open(history_path_rec, PIIODevice::WriteOnly); + } + } + freq = rb.getValue("frequency", -1.f, &ok); + gfreq = b.getValue("frequency", -1.f, &gok); + if (gok && !ok) freq = gfreq; + if (gok && ok && (freq != gfreq)) { + piCoutObj << "Ambiguous expected frequency in \"" << config << "\"!"; + devReceiverState = "Config error"; + return; + } + if (freq > 0.f && !has_dev) + piCoutObj << "Warning: no receiver device and not null expected frequency!"; + float tm = b.getValue("disconnectTimeout", 3.f); + if (tm <= 0.f) + piCoutObj << "Warning: diconnect timeout <= 0 s!"; + timeout_ = (tm < 0.f) ? 0.f : tm; + setExpectedFrequency(freq); +} + + +void PIProtocol::setReceiverDevice(const PIString & device, PISerial::Speed speed, bool force) { + if (force) { + type_send = type_rec = PIProtocol::Serial; + if (ser == 0) { + ser = new PISerial(); + packet_ext->setDevice(ser); + } + } + if (type_rec == PIProtocol::Serial && ser != 0) { + ser->setDevice(device); + ser->setSpeed(speed); + devReceiverName = device; + devSenderName = device; + } +} + + +void PIProtocol::setReceiverAddress(const PIString & ip, int port, bool force) { + if (force) { + type_rec = PIProtocol::Ethernet; + if (eth == 0) { + eth = new PIEthernet(); + packet_ext->setDevice(eth); + } + } + if (type_rec == PIProtocol::Ethernet && eth != 0) { + eth->setReadAddress(ip, port); + if (ip.trimmed().isEmpty()) devReceiverName = "no ip"; + else devReceiverName = ip + ":" + PIString::fromNumber(port); + } +} + + +void PIProtocol::setSenderDevice(const PIString & device, PISerial::Speed speed, bool force) { + if (force) { + type_send = type_rec = PIProtocol::Serial; + if (ser == 0) ser = new PISerial(); + } + if (type_send == PIProtocol::Serial && ser != 0) { + ser->setDevice(device); + ser->setSpeed(speed); + ser->open(); + devSenderName = device; + } +} + + +void PIProtocol::setSenderAddress(const PIString & ip, int port, bool force) { + if (force) { + type_send = PIProtocol::Ethernet; + if (eth == 0) eth = new PIEthernet(); + } + if (type_send == PIProtocol::Ethernet && eth != 0) { + eth->setSendAddress(ip, port); + if (ip.isEmpty()) devSenderName = "no ip"; + else devSenderName = ip + ":" + PIString::fromNumber(port); + } +} + + +void PIProtocol::setSenderIP(const PIString & ip, bool force) { + if (force) { + type_send = PIProtocol::Ethernet; + if (eth == 0) eth = new PIEthernet(); + } + if (type_send == PIProtocol::Ethernet && eth != 0) { + eth->setSendIP(ip); + if (ip.isEmpty()) devSenderName = "no ip"; + else devSenderName = ip + ":" + PIString::fromNumber(eth->sendPort()); + } +} + + +void PIProtocol::setSenderPort(int port, bool force) { + if (force) { + type_send = PIProtocol::Ethernet; + if (eth == 0) eth = new PIEthernet(); + } + if (type_send == PIProtocol::Ethernet && eth != 0) { + eth->setSendPort(port); + if (eth->sendIP().isEmpty()) devSenderName = "no ip"; + else devSenderName = eth->sendIP() + ":" + PIString::fromNumber(port); + } +} + + +void PIProtocol::setExpectedFrequency(float frequency) { + exp_freq = frequency; + changeDisconnectTimeout(); +} + + +void PIProtocol::changeDisconnectTimeout() { + pckt_cnt_max = int(round(timeout_ * exp_freq)); + if (pckt_cnt_max < 3) pckt_cnt_max = 3; + last_packets.resize(pckt_cnt_max); +} + + +void PIProtocol::startReceive(float exp_frequency) { + if (exp_frequency > 0.f) exp_freq = exp_frequency; + //if (type_rec == PIProtocol::Serial) ser->start(); + //if (type_rec == PIProtocol::Ethernet) eth->start(); + packet_ext->startThreadedRead(); + msleep(1); + check_state(); + if (exp_freq <= 0.f) return; + setExpectedFrequency(exp_freq); + diagTimer->start(1000. / exp_freq); + diagTimer->reset(); + receiverStarted(); +} + + +void PIProtocol::startSend(float frequency) { + //cout << "** start send " << send_freq << ", " << frequency << endl; + if (frequency > 0.f) send_freq = frequency; + msleep(1); + check_state(); + if (send_freq <= 0.f) return; + sendTimer->start(1000. / send_freq); + diagTimer->reset(); + senderStarted(); +} + + +void PIProtocol::stopReceive() { + //if (type_rec == PIProtocol::Serial) ser->stop(); + //if (type_rec == PIProtocol::Ethernet) eth->stop(); + packet_ext->stop(); + diagTimer->stop(); + receiverStopped(); +} + + +bool PIProtocol::receiveEvent(void * t, uchar * data, int size) { + PIProtocol * p = (PIProtocol * )t; + if (!p->receive(data, size)) return false; + p->work = true; + //p->lock(); + if (p->validate()) { + if (p->history_write_rec) { + p->history_file_rec.writeToBinLog(p->history_id_rec, data, size); + p->history_rsize_rec.setReadableSize(p->history_file_rec.pos()); + } + p->received(true); + //p->unlock(); + p->ifreq = p->diagTimer->elapsed_m(); + if (p->ifreq > 0.) p->ifreq = 1000. / p->ifreq; + p->diagTimer->reset(); + p->receive_count++; + p->packets_in_sec++; + p->bytes_in_sec += size; + p->cur_pckt = 1; + if (p->ret_func != 0) p->ret_func(p); + if (p->mp_owner != 0) PIMultiProtocolBase::receiveEvent(p->mp_owner, p, true, data, size); + return true; + } + p->received(false); + //p->unlock(); + p->wrong_count++; + if (p->mp_owner != 0) PIMultiProtocolBase::receiveEvent(p->mp_owner, p, false, data, size); + return false; +} + + +void PIProtocol::diagEvent(void * t, int) { + PIProtocol * p = (PIProtocol * )t; + p->calc_freq(); + p->calc_diag(); + p->check_state(); + if (p->ser != 0) p->missed_count = p->packet_ext->missedPackets(); +} + + +void PIProtocol::secEvent(void * t, int ) { + PIProtocol * p = (PIProtocol * )t; + p->speedIn = PIString::readableSize(p->bytes_in_sec) + "/s"; + p->speedOut = PIString::readableSize(p->bytes_out_sec) + "/s"; + p->bytes_in_sec = p->bytes_out_sec = p->packets_in_sec = p->packets_out_sec = 0; + if (p->ser != 0) p->missed_count = p->packet_ext->missedPackets(); +} + + +void PIProtocol::calc_diag() { + PIProtocol::Quality diag; + if (!work) { + diag = PIProtocol::Unknown; + return; + } + if (pckt_cnt < pckt_cnt_max) { + last_packets[pckt_cnt] = cur_pckt; + pckt_cnt++; + } else { + packets[(int)last_packets.back()]--; + if (!last_packets.isEmpty()) last_packets.pop_back(); + last_packets.push_front(cur_pckt); + } + packets[(int)cur_pckt]++; + cur_pckt = 0; + float good_percents; + good_percents = (float)packets[1] / pckt_cnt * 100.f; + if (good_percents == 0.f) diag = PIProtocol::Failure; + else if (good_percents <= 20.f) diag = PIProtocol::Bad; + else if (good_percents > 20.f && good_percents <= 80.f) diag = PIProtocol::Average; + else diag = PIProtocol::Good; + if (diag != net_diag) { + qualityChanged(diag, net_diag); + net_diag = diag; + } +} + + +void PIProtocol::calc_freq() { + float tf;// = float(1000.f / diagTimer->elapsed_m()); + tf = immediate_freq = ifreq; + ifreq = 0.f; + if (last_freq.size_s() >= pckt_cnt_max && last_freq.size_s() > 0) last_freq.pop_front(); + last_freq.push_back(tf); + tf = last_freq[0]; + for (uint i = 1; i < last_freq.size(); ++i) + tf += last_freq[i]; + integral_freq = tf / last_freq.size(); +} + + +void PIProtocol::check_state() { + if (type_rec == PIProtocol::Serial) { + if (ser != 0) { + if (ser->isOpened()) devReceiverState = "Opened"; + else devReceiverState = "Not opened"; + } + else devReceiverState = "Not exists"; + } + if (type_rec == PIProtocol::Ethernet) { + if (eth != 0) { + if (eth->isOpened()) devReceiverState = "Opened"; + else devReceiverState = "Not opened"; + } + else devReceiverState = "Not exists"; + } + if (type_send == PIProtocol::Serial) { + if (ser != 0) { + if (ser->isOpened()) devSenderState = "Opened"; + else devSenderState = "Not opened"; + } + else devSenderState = "Not exists"; + } + if (type_send == PIProtocol::Ethernet) { + if (eth != 0) { + if (eth->isOpened()) devSenderState = "Opened"; + else devSenderState = "Not opened"; + } + else devSenderState = "Not exists"; + } +} + + +void PIProtocol::send(const void * data, int size, bool direct) { + if (!direct) { + if (data == 0 || size == 0) return; + if (!aboutSend()) return; + } + if (history_write_send) { + history_file_send.writeToBinLog(history_id_send, data, size); + history_rsize_send.setReadableSize(history_file_send.pos()); + } + if (type_send == PIProtocol::Serial) + if (ser->send(data, size)) { + send_count++; + packets_out_sec++; + bytes_out_sec += size; + } + if (type_send == PIProtocol::Ethernet) + if (eth->send(data, size)) { + send_count++; + packets_out_sec++; + bytes_out_sec += size; + } +} + + +void PIProtocol::send() { + //lock(); + //memcpy(packet, sendDataPtr, sendDataSize); + //unlock(); + //cout << "**send" << endl; + if (!aboutSend()) return; + if (sendDataPtr == 0 || sendDataSize == 0) return; + if (history_write_send) { + history_file_send.writeToBinLog(history_id_send, sendDataPtr, sendDataSize); + history_rsize_send.setReadableSize(history_file_send.pos()); + } + if (type_send == PIProtocol::Serial) + if (ser->send(sendDataPtr, sendDataSize)) { + send_count++; + packets_out_sec++; + bytes_out_sec += sendDataSize; + } + if (type_send == PIProtocol::Ethernet) + if (eth->send(sendDataPtr, sendDataSize)) { + send_count++; + packets_out_sec++; + bytes_out_sec += sendDataSize; + } +} diff --git a/_oldpip/pip_0.4.0_r5/piprotocol.h b/_oldpip/pip_0.4.0_r5/piprotocol.h new file mode 100644 index 0000000..2025636 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/piprotocol.h @@ -0,0 +1,248 @@ +/*! \file piprotocol.h + * \brief Highly configurable from file I/O channel +*/ +/* + PIP - Platform Independent Primitives + Protocol, input/output channel (COM, UDP) + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com, Bychkov Andrey wapmobil@gmail.com + + 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 3 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, see . +*/ + +#ifndef PIPROTOCOL_H +#define PIPROTOCOL_H + +#include "piserial.h" +#include "piethernet.h" +#include "pipacketextractor.h" +#include "pitimer.h" +#include "piconfig.h" +#include "math.h" + +class PIProtocol; + +class PIP_EXPORT PIMultiProtocolBase: protected PIObject +{ + PIOBJECT(PIMultiProtocolBase) + friend class PIProtocol; +public: + PIMultiProtocolBase() {;} + virtual ~PIMultiProtocolBase() {;} + +protected: + virtual void received(PIProtocol * prot, bool corrected, uchar * data, int size) {;} + +private: + static void receiveEvent(PIMultiProtocolBase * p, PIProtocol * prot, bool corrected, uchar * data, int size) {p->mutex_receive.lock(); p->received(prot, corrected, data, size); p->mutex_receive.unlock();} + + PIMutex mutex_receive; + +}; + +typedef void (*ReceiveFunc)(void * ); + +/// events: +/// void receiverStarted() +/// void receiverStopped() +/// void senderStarted() +/// void senderStopped() +/// void received(bool validate_is_ok) +/// void qualityChanged(PIProtocol::Quality old_quality, PIProtocol::Quality new_quality) +/// +/// handlers: +/// void startReceive(float exp_frequency = -1.f) +/// void stopReceive() +/// void startSend(float frequency = -1.f) +/// void stopSend() +/// void start() +/// void stop() +/// void send() +/// void send(const void * data, int size, bool direct = false) +class PIP_EXPORT PIProtocol: public PIObject +{ + PIOBJECT(PIProtocol) + friend class PIMultiProtocolBase; + friend class PIMultiProtocol; + enum Type {None, Serial, Ethernet}; +public: + + //! Contructs an empty unconfigured protocol + PIProtocol(): PIObject() {init();} + + //! Contructs protocol configured from file "config", config file section "name" + PIProtocol(const PIString & config, const PIString & name, void * recHeaderPtr = 0, int recHeaderSize = 0, + void * recDataPtr = 0, int recDataSize = 0, void * sendDataPtr = 0, int sendDataSize = 0); // from config + + virtual ~PIProtocol(); + + //! Connection quality + enum Quality { + Unknown /** Unknown, no one packet received yet */ = 1, + Failure /** No connection, no one correct packet received for last period */ = 2, + Bad /** Bad connection, correct packets received <= 20% */ = 3, + Average /** Average connection, correct packets received > 20% and <= 80% */ = 4, + Good /** Good connection, correct packets received > 80% */ = 5 + }; + + EVENT_HANDLER0(void, startReceive) {startReceive(-1.f);} + EVENT_HANDLER1(void, startReceive, float, exp_frequency); // if "frequency = -1" used last passed value + EVENT_HANDLER0(void, stopReceive); + void setExpectedFrequency(float frequency); // for connection quality diagnostic + void setReceiverDevice(const PIString & device, PISerial::Speed speed, bool force = false); // for Serial + void setReceiverData(void * dataPtr, int dataSize) {this->dataPtr = (uchar * )dataPtr; this->dataSize = dataSize; packet_ext->setHeader(PIByteArray(headerPtr, headerSize)); packet_ext->setPayloadSize(dataSize); packet_ext->setPacketSize(dataSize);} + void setReceiverDataHeader(void * headerPtr, int headerSize) {this->headerPtr = (uchar * )headerPtr; this->headerSize = headerSize; packet_ext->setHeader(PIByteArray(headerPtr, headerSize)); packet_ext->setPayloadSize(dataSize); packet_ext->setPacketSize(dataSize);} + void setReceiverAddress(const PIString & ip, int port, bool force = false); // for Ethernet + void setReceiverParameters(PIFlags parameters) {if (type_rec == PIProtocol::Serial || type_send == PIProtocol::Serial) ser->setParameters(parameters);} // for Serial + void setReceiveSlot(ReceiveFunc slot) {ret_func = slot;} + float expectedFrequency() const {return exp_freq;} + + EVENT_HANDLER0(void, startSend) {startSend(-1.f);} // if "frequency = -1" used last passed value + EVENT_HANDLER1(void, startSend, float, frequency); // if "frequency = -1" used last passed value + EVENT_HANDLER0(void, stopSend) {sendTimer->stop(); senderStopped();} + void setSenderFrequency(float frequency) {send_freq = frequency;} + void setSenderDevice(const PIString & device, PISerial::Speed speed, bool force = false); // for Serial + void setSenderData(void * dataPtr, int dataSize) {sendDataPtr = (uchar * )dataPtr; sendDataSize = dataSize;} + void setSenderAddress(const PIString & ip, int port, bool force = false); // for Ethernet + void setSenderIP(const PIString & ip, bool force = false); // for Ethernet + void setSenderPort(int port, bool force = false); // for Ethernet + void setSenderParameters(PIFlags parameters) {if (type_send == PIProtocol::Serial) ser->setParameters(parameters);} // for Serial + float senderFrequency() const {return send_freq;} + + EVENT_HANDLER0(void, start) {startReceive(); startSend();} + EVENT_HANDLER0(void, stop) {stopReceive(); stopSend();} + EVENT_HANDLER0(void, send); + EVENT_HANDLER2(void, send, const void *, data, int, size) {send(data, size, false);} + EVENT_HANDLER3(void, send, const void *, data, int, size, bool, direct); + + void setName(const PIString & name) {protName = name; PIObject::setName(name);} + PIString name() const {return protName;} + void setDisconnectTimeout(float timeout) {timeout_ = timeout; changeDisconnectTimeout();} + float disconnectTimeout() const {return timeout_;} + const float * disconnectTimeout_ptr() const {return &timeout_;} + float immediateFrequency() const {return immediate_freq;} + float integralFrequency() const {return integral_freq;} + const float * immediateFrequency_ptr() const {return &immediate_freq;} + const float * integralFrequency_ptr() const {return &integral_freq;} + ullong receiveCountPerSec() const {return packets_in_sec;} + const ullong * receiveCountPerSec_ptr() const {return &packets_in_sec;} + ullong sendCountPerSec() const {return packets_out_sec;} + const ullong * sendCountPerSec_ptr() const {return &packets_out_sec;} + ullong receiveBytesPerSec() const {return bytes_in_sec;} + const ullong * receiveBytesPerSec_ptr() const {return &bytes_in_sec;} + ullong sendBytesPerSec() const {return bytes_out_sec;} + const ullong * sendBytesPerSec_ptr() const {return &bytes_out_sec;} + ullong receiveCount() const {return receive_count;} + const ullong * receiveCount_ptr() const {return &receive_count;} + ullong wrongCount() const {return wrong_count;} + const ullong * wrongCount_ptr() const {return &wrong_count;} + ullong sendCount() const {return send_count;} + const ullong * sendCount_ptr() const {return &send_count;} + ullong missedCount() const {return missed_count;} + const ullong * missedCount_ptr() const {return &missed_count;} + PIProtocol::Quality quality() const {return net_diag;} // receive quality + const int * quality_ptr() const {return (int * )&net_diag;} // receive quality pointer + PIString receiverDeviceName() const {return devReceiverName;} + PIString senderDeviceName() const {return devSenderName;} + PIString receiverDeviceState() const {return devReceiverState;} + const PIString * receiverDeviceState_ptr() const {return &devReceiverState;} + PIString senderDeviceState() const {return devSenderState;} + const PIString * senderDeviceState_ptr() const {return &devSenderState;} + PIString receiveSpeed() const {return speedIn;} + const PIString * receiveSpeed_ptr() const {return &speedIn;} + PIString sendSpeed() const {return speedOut;} + const PIString * sendSpeed_ptr() const {return &speedOut;} + PIString receiverHistorySize() const {return history_rsize_rec;} + const PIString * receiverHistorySize_ptr() const {return &history_rsize_rec;} + PIString senderHistorySize() const {return history_rsize_send;} + const PIString * senderHistorySize_ptr() const {return &history_rsize_send;} + bool writeReceiverHistory() const {return history_write_rec;} + const bool * writeReceiverHistory_ptr() const {return &history_write_rec;} + bool writeSenderHistory() const {return history_write_send;} + const bool * writeSenderHistory_ptr() const {return &history_write_send;} + + void * receiveData() {return dataPtr;} + void * sendData() {return sendDataPtr;} + + PIPacketExtractor * packetExtractor() {return packet_ext;} + PIByteArray lastHeader() {return packet_ext->lastHeader();} + + EVENT0(receiverStarted) + EVENT0(receiverStopped) + EVENT0(senderStarted) + EVENT0(senderStopped) + EVENT1(received, bool, validate_is_ok) + EVENT2(qualityChanged, PIProtocol::Quality, new_quality, PIProtocol::Quality, old_quality) + +protected: + virtual bool receive(uchar * data, int size) {if (dataPtr != 0) memcpy(dataPtr, data, size); return true;} // executed when raw data received, break if 'false' return + virtual bool validate() {return true;} // function for validate algorithm and save data from dataPtr to external struct + virtual bool headerValidate(uchar * src, uchar * rec, int size) {for (int i = 0; i < size; ++i) if (src[i] != rec[i]) return false; return true;} // function for validate header (COM-port and headerSize > 0) + virtual uint checksum_i(void * data, int size) { // function for checksum (uint) + uint c = 0; + for (int i = 0; i < size; ++i) + c += ((uchar*)data)[i]; + return ~(c + 1); + } + virtual uchar checksum_c(void * data, int size) { // function for checksum (uchar) + uchar c = 0; + for (int i = 0; i < size; ++i) + c += ((uchar*)data)[i]; + return ~(c + 1); + } + virtual bool aboutSend() {return true;} // executed before send data, if return 'false' then data is not sending + + void init(); + void init_sender(PIConfig::Entry & b, PIConfig::Entry & sb, const PIString & config); + void init_receiver(PIConfig::Entry & b, PIConfig::Entry & rb, const PIString & config); + void check_state(); + void calc_freq(); + void calc_diag(); + + PISerial * ser; + PIEthernet * eth; + uint dataSize, headerSize, sendDataSize; + uchar * dataPtr, * headerPtr, * sendDataPtr; + +private: + static void sendEvent(void * e, int) {((PIProtocol * )e)->send();} + static bool receiveEvent(void * t, uchar * data, int size); + static bool headerValidateEvent(void * t, uchar * src, uchar * rec, int size) {return ((PIProtocol * )t)->headerValidate(src, rec, size);} + static void diagEvent(void * t, int); + static void secEvent(void * t, int); + + void setMultiProtocolOwner(PIMultiProtocolBase * mp) {mp_owner = mp;} + PIMultiProtocolBase * multiProtocolOwner() const {return mp_owner;} + void changeDisconnectTimeout(); + + ReceiveFunc ret_func; + PIPacketExtractor * packet_ext; + PITimer * diagTimer, * sendTimer, * secTimer; + PIMultiProtocolBase * mp_owner; + PIProtocol::Type type_send, type_rec; + PIProtocol::Quality net_diag; + PIDeque last_freq; + PIDeque last_packets; + PIString protName, devReceiverName, devReceiverState, devSenderName, devSenderState, speedIn, speedOut; + PIString history_path_rec, history_path_send, history_rsize_rec, history_rsize_send; + PIFile history_file_rec, history_file_send; + ushort history_id_rec, history_id_send; + bool work, new_mp_prot, history_write_rec, history_write_send; + float exp_freq, send_freq, ifreq, immediate_freq, integral_freq, timeout_; + int packets[2], pckt_cnt, pckt_cnt_max; + char cur_pckt; + ullong wrong_count, receive_count, send_count, missed_count, packets_in_sec, packets_out_sec, bytes_in_sec, bytes_out_sec; + +}; + +#endif // PIPROTOCOL_H diff --git a/_oldpip/pip_0.4.0_r5/piqueue.h b/_oldpip/pip_0.4.0_r5/piqueue.h new file mode 100644 index 0000000..23f808e --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/piqueue.h @@ -0,0 +1,41 @@ +/*! \file picontainers.h + * \brief Queue container + * + * This file declare PIQueue +*/ +/* + PIP - Platform Independent Primitives + Queue container + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +#ifndef PIQUEUE_H +#define PIQUEUE_H + +#include "pivector.h" + +template +class PIP_EXPORT PIQueue: public PIVector { +public: + PIQueue() {;} + PIVector & enqueue(const T & v) {PIVector::push_front(v); return *this;} + T dequeue() {return PIVector::take_back();} + T & head() {return PIVector::back();} + const T & head() const {return PIVector::back();} + PIVector toVector() {PIVector v(PIVector::size()); for (uint i = 0; i < PIVector::size(); ++i) v[i] = PIVector::at(i); return v;} +}; + +#endif // PIQUEUE_H diff --git a/_oldpip/pip_0.4.0_r5/piserial.cpp b/_oldpip/pip_0.4.0_r5/piserial.cpp new file mode 100644 index 0000000..44fb89c --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/piserial.cpp @@ -0,0 +1,664 @@ +/* + PIP - Platform Independent Primitives + COM + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com, Bychkov Andrey wapmobil@gmail.com + + 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 3 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, see . +*/ + +#include "piserial.h" +#include "piconfig.h" +#include "pidir.h" + + +/*! \class PISerial + * \brief Serial device + * + * \section PISerial_sec0 Synopsis + * This class provide access to serial device, e.g. COM port. It can read, + * write, wait for write. There are several read and write functions. + * + * + */ + +REGISTER_DEVICE(PISerial); + + +PISerial::PISerial(): PIIODevice("", ReadWrite) { + _init(); +} + + +PISerial::PISerial(const PIString & device_, PISerial::Speed speed_, PIFlags params_): PIIODevice(device_, ReadWrite) { + _init(); + setPath(device_); + setSpeed(speed_); + setParameters(params_); +} + + +PISerial::~PISerial() { + piMonitor.serials--; +} + + +void PISerial::_init() { + fd = -1; + piMonitor.serials++; + setPriority(piHigh); + block_read = true; + vtime = 1; +#ifdef WINDOWS + block_write = true; + hCom = 0; +#endif + setParameters(0); + setSpeed(S115200); + setDataBitsCount(8); + //init(); +} + + +void PISerial::setParameter(PISerial::Parameters parameter, bool on) { + PIFlags cp = (PIFlags)(property("parameters").toInt()); + cp.setFlag(parameter, on); + setParameters(cp); +} + + +bool PISerial::isParameterSet(PISerial::Parameters parameter) const { + PIFlags cp = (PIFlags)(property("parameters").toInt()); + return cp[parameter]; +} + + +bool PISerial::setPin(int number, bool on) { + switch (number) { + case 1: return setCAR(on); break; + case 2: return setSR(on); break; + case 3: return setST(on); break; + case 4: return setDTR(on); break; + case 5: + piCoutObj << "Pin number 5 is ground"; + return false; + case 6: return setDSR(on); break; + case 7: return setRTS(on); break; + case 8: return setCTS(on); break; + case 9: return setRNG(on); break; + default: + piCoutObj << "Pin number " << number << " doesn`t exists!"; + return false; + } + return false; +} + + +bool PISerial::isPin(int number) const { + switch (number) { + case 1: return isCAR(); break; + case 2: return isSR(); break; + case 3: return isST(); break; + case 4: return isDTR(); break; + case 5: return false; + case 6: return isDSR(); break; + case 7: return isRTS(); break; + case 8: return isCTS(); break; + case 9: return isRNG(); break; + default: + piCoutObj << "Pin number " << number << " doesn`t exists!"; + return false; + } + return false; +} + + +bool PISerial::setBit(int bit, bool on, const PIString & bname) { +#ifndef WINDOWS + if (fd < 0) { + piCoutObj << "setBit" << bname << " error: \"" << path() << "\" is not opened!"; + return false; + } + if (ioctl(fd, on ? TIOCMBIS : TIOCMBIC, &bit) < 0) { + piCoutObj << "setBit" << bname << " error: " << errorString(); + return false; + } + return true; +#else + piCoutObj << "setBit" << bname << " doesn`t implemented on Windows, sorry :-("; + return false; +#endif +} + + +bool PISerial::isBit(int bit, const PIString & bname) const { +#ifndef WINDOWS + if (fd < 0) { + piCoutObj << "isBit" << bname << " error: \"" << path() << "\" is not opened!"; + return false; + } + int ret = 0; + if (ioctl(fd, TIOCMGET, &ret) < 0) + piCoutObj << "isBit" << bname << " error: " << errorString(); + return ret & bit; +#else + piCoutObj << "isBit" << bname << " doesn`t implemented on Windows, sorry :-("; + return false; +#endif +} + + +bool PISerial::closeDevice() { + if (!isInitialized()) return true; + if (isRunning()) { + stop(); + PIThread::terminate(); + } + if (fd != -1) { +#ifdef WINDOWS + SetCommState(hCom, &sdesc); + SetCommMask(hCom, mask); + CloseHandle(hCom); + hCom = 0; +#else + tcsetattr(fd, TCSANOW, &sdesc); + ::close(fd); +#endif + fd = -1; + } + return true; +} + + +int PISerial::convertSpeed(PISerial::Speed speed) { + switch (speed) { + case S50: return B50; + case S75: return B75; + case S110: return B110; + case S300: return B300; + case S600: return B600; + case S1200: return B1200; + case S2400: return B2400; + case S4800: return B4800; + case S9600: return B9600; + case S19200: return B19200; + case S38400: return B38400; + case S57600: return B57600; + case S115200: return B115200; + case S1500000: return B1500000; + case S2000000: return B2000000; + case S2500000: return B2500000; + case S3000000: return B3000000; + case S3500000: return B3500000; + case S4000000: return B4000000; + default: break; + } + return B115200; +} + + +/** \brief Advanced read function +* \details Read to pointer "read_to" no more than "max_size" and no longer +* than "timeout_ms" milliseconds. If "timeout_ms" < 0 function will be +* wait forever until "max_size" will be readed. If size <= 0 function +* immediate returns \b false. For read data with unknown size use function +* \a readData(). +* \returns \b True if readed bytes count = "max_size", else \b false +* \sa \a readData() */ +bool PISerial::read(void * data, int size, double timeout_ms) { + if (data == 0 || size <= 0) return false; + int ret, all = 0; + if (timeout_ms > 0.) { + setReadIsBlocking(false); + all = read(data, 1); + timer.reset(); + while (all < size && timer.elapsed_m() < timeout_ms) { + ret = read(&((uchar * )data)[all], size - all); + if (ret > 0) all += ret; + else msleep(1); + } + received(data, all); + return (all == size); + } else { + setReadIsBlocking(true); + all = read(data, 1); + while (all < size) { + ret = read(&((uchar * )data)[all], size - all); + if (ret > 0) all += ret; + } + received(data, all); + return (all == size); + } + return false; +} + + +/** \brief Advanced read function +* \details Read all or no more than "size" and no longer than +* "timeout_ms" milliseconds. If "timeout_ms" < 0 function will be +* wait forever until "size" will be readed. If "size" <= 0 +* function will be read all until "timeout_ms" elaped. \n If size <= 0 +* and "timeout_ms" <= 0 function immediate returns empty string. +* \n This function similar to \a readData() but returns data as string. +* \sa \a readData() */ +PIString PISerial::read(int size, double timeout_ms) { + PIString str; + if (size <= 0 && timeout_ms <= 0.) return str; + int ret, all = 0; + uchar td[1024]; + if (timeout_ms > 0.) { + setReadIsBlocking(false); + timer.reset(); + if (size <= 0) { + while (timer.elapsed_m() < timeout_ms) { + ret = read(td, 1024); + if (ret <= 0) msleep(1); + else str << PIString((char*)td, ret); + } + } else { + while (all < size && timer.elapsed_m() < timeout_ms) { + ret = read(td, size - all); + if (ret <= 0) msleep(1); + else { + str << PIString((char*)td, ret); + all += ret; + } + } + } + } else { + setReadIsBlocking(true); + all = read(td, 1); + str << PIString((char*)td, all); + while (all < size) { + ret = read(td, size - all); + if (ret <= 0) msleep(1); + else { + str << PIString((char*)td, ret); + all += ret; + } + } + } + received(str.data(), str.size_s()); + return str; +} + + +/** \brief Advanced read function +* \details Read all or no more than "size" and no longer than +* "timeout_ms" milliseconds. If "timeout_ms" < 0 function will be +* wait forever until "size" will be readed. If "size" <= 0 +* function will be read all until "timeout_ms" elaped. \n If size <= 0 +* and "timeout_ms" <= 0 function immediate returns empty byte array. +* \n This function similar to \a read() but returns data as byte array. +* \sa \a read() */ +PIByteArray PISerial::readData(int size, double timeout_ms) { + PIByteArray str; + if (size <= 0 && timeout_ms <= 0.) return str; + int ret, all = 0; + uchar td[1024]; + if (timeout_ms > 0.) { + setReadIsBlocking(false); + timer.reset(); + if (size <= 0) { + while (timer.elapsed_m() < timeout_ms) { + ret = read(td, 1024); + if (ret <= 0) msleep(1); + else str.append(td, ret); + } + } else { + while (all < size && timer.elapsed_m() < timeout_ms) { + ret = read(td, size - all); + if (ret <= 0) msleep(1); + else { + str.append(td, ret); + all += ret; + } + } + } + } else { + setReadIsBlocking(true); + all = read(td, 1); + str.append(td, all); + while (all < size) { + ret = read(td, size - all); + if (ret <= 0) msleep(1); + else { + str.append(td, ret); + all += ret; + } + } + } + received(str.data(), str.size_s()); + return str; +} + + +bool PISerial::openDevice() { + //piCout << "ser open" << path(); + if (path().isEmpty()) return false; +#ifdef WINDOWS + DWORD ds = 0, sm = 0; + if (isReadable()) {ds |= GENERIC_READ; sm |= FILE_SHARE_READ;} + if (isWriteable()) {ds |= GENERIC_WRITE; sm |= FILE_SHARE_WRITE;} + PIString wp = "//./" + path(); + hCom = CreateFileA(wp.data(), ds, sm, 0, OPEN_EXISTING, FILE_ATTRIBUTE_SYSTEM, 0); + if (hCom == INVALID_HANDLE_VALUE) { + piCoutObj << "Unable to open \"" << path() << "\""; + fd = -1; + return false; + } + fd = 0; +#else + int om = 0; + switch (mode()) { + case PIIODevice::ReadOnly: om = O_RDONLY; break; + case PIIODevice::WriteOnly: om = O_WRONLY; break; + case PIIODevice::ReadWrite: om = O_RDWR; break; + } + //cout << "init ser " << path_ << " mode " << om << " param " << params << endl; + fd = ::open(path().data(), O_NOCTTY | om); + if (fd == -1) { + piCoutObj << "Unable to open \"" << path() << "\""; + return false; + } + tcgetattr(fd, &desc); + sdesc = desc; + //piCoutObj << "Initialized " << path_; +#endif + applySettings(); + return true; +} + + +void PISerial::applySettings() { +#ifdef WINDOWS + if (fd == -1) return; + COMMTIMEOUTS times; + times.ReadIntervalTimeout = block_read ? vtime : MAXDWORD; + times.ReadTotalTimeoutConstant = block_read ? 0 : 1; + times.ReadTotalTimeoutMultiplier = block_read ? 0 : MAXDWORD; + times.WriteTotalTimeoutConstant = 0; + times.WriteTotalTimeoutMultiplier = block_write ? 0 : 1; + if (SetCommTimeouts(hCom, ×) == -1) + piCoutObj << "Unable to set timeouts for \"" << path() << "\""; + GetCommMask(hCom, &mask); + SetCommMask(hCom, EV_RXCHAR); + GetCommState(hCom, &sdesc); + desc = sdesc; + desc.DCBlength = sizeof(desc); + desc.BaudRate = convertSpeed(outSpeed()); + if (dataBitsCount() >= 5 && dataBitsCount() <= 8) + desc.ByteSize = dataBitsCount(); + else + desc.ByteSize = 8; + PIFlags params = parameters(); + if (params[PISerial::ParityControl]) { + desc.fParity = 1; + desc.Parity = params[PISerial::ParityOdd] ? 1 : 2; + } + desc.StopBits = params[PISerial::TwoStopBits] ? TWOSTOPBITS : ONESTOPBIT; + if (SetCommState(hCom, &desc) == -1) { + piCoutObj << "Unable to set comm state for \"" << path() << "\""; + return; + } +#else + if (fd == -1) return; + tcgetattr(fd, &desc); + desc.c_oflag = desc.c_lflag = desc.c_cflag = 0; + desc.c_iflag = IGNBRK; + desc.c_cflag = CLOCAL | HUPCL; + switch (dataBitsCount()) { + case 5: desc.c_cflag |= (CSIZE & CS5); break; + case 6: desc.c_cflag |= (CSIZE & CS6); break; + case 7: desc.c_cflag |= (CSIZE & CS7); break; + case 8: default: desc.c_cflag |= (CSIZE & CS8); break; + }; + if (isReadable()) desc.c_cflag |= CREAD; + PIFlags params = parameters(); + if (params[PISerial::TwoStopBits]) desc.c_cflag |= CSTOPB; + if (params[PISerial::ParityControl]) { + desc.c_iflag |= INPCK; + desc.c_cflag |= PARENB; + if (params[PISerial::ParityOdd]) desc.c_cflag |= PARODD; + } + desc.c_cc[VMIN] = 1; + desc.c_cc[VTIME] = vtime; + + cfsetispeed(&desc, convertSpeed(inSpeed())); + cfsetospeed(&desc, convertSpeed(outSpeed())); + + tcflush(fd, TCIOFLUSH); + fcntl(fd, F_SETFL, block_read ? 0 : O_NONBLOCK); + + if(tcsetattr(fd, TCSANOW, &desc) < 0) { + piCoutObj << "Can`t set attributes for \"" << path() << "\""; + return; + } +#endif +} + + +void PISerial::setReadIsBlocking(bool yes) { + block_read = yes; +#ifdef WINDOWS + COMMTIMEOUTS times; + times.ReadIntervalTimeout = block_read ? vtime : MAXDWORD; + times.ReadTotalTimeoutConstant = block_read ? 0 : 1; + times.ReadTotalTimeoutMultiplier = block_read ? 0 : MAXDWORD; + times.WriteTotalTimeoutConstant = 0; + times.WriteTotalTimeoutMultiplier = block_write ? 0 : 1; + if (isOpened()) SetCommTimeouts(hCom, ×); +#else + if (isOpened()) fcntl(fd, F_SETFL, yes ? 0 : O_NONBLOCK); +#endif +} + + +/** \brief Basic read function +* \details Read to pointer "read_to" no more than "max_size". If read is +* set to blocking this function will be wait at least one byte. +* \returns Readed bytes count +* \sa \a readData() */ +int PISerial::read(void * read_to, int max_size) { +#ifdef WINDOWS + if (!canRead()) return -1; + WaitCommEvent(hCom, 0, 0); + ReadFile(hCom, read_to, max_size, &readed, 0); + return readed; +#else + if (!canRead()) return -1; + return ::read(fd, read_to, max_size); +#endif +} + + +int PISerial::write(const void * data, int max_size, bool wait) { + //piCoutObj << "send " << max_size << ": " << PIString((char*)data, max_size); + if (fd == -1 || !canWrite()) { + //piCoutObj << "Can`t write to uninitialized COM"; + return -1; + } +#ifdef WINDOWS + if (block_write != wait) { + block_write = wait; + setReadIsBlocking(block_read); + } + DWORD wrote; + WriteFile(hCom, data, max_size, &wrote, 0); +#else + int wrote; + wrote = ::write(fd, data, max_size); + if (wait) tcdrain(fd); +#endif + return (int)wrote; + //piCoutObj << "Error while sending"; + //piCoutObj << "Wrote " << wrote << " bytes in " << path_; +} + + +bool PISerial::configureDevice(const void * e_main, const void * e_parent) { + PIConfig::Entry * em = (PIConfig::Entry * )e_main; + PIConfig::Entry * ep = (PIConfig::Entry * )e_parent; + setDevice(readDeviceSetting("device", device(), em, ep)); + setSpeed((PISerial::Speed)(readDeviceSetting("speed", (int)outSpeed(), em, ep))); + setDataBitsCount(readDeviceSetting("dataBitsCount", dataBitsCount(), em, ep)); + setParameter(PISerial::ParityControl, readDeviceSetting("parityControl", isParameterSet(PISerial::ParityControl), em, ep)); + setParameter(PISerial::ParityOdd, readDeviceSetting("parityOdd", isParameterSet(PISerial::ParityOdd), em, ep)); + setParameter(PISerial::TwoStopBits, readDeviceSetting("twoStopBits", isParameterSet(PISerial::TwoStopBits), em, ep)); + return true; +} + + +PIString PISerial::constructFullPath() const { + PIString ret(fullPathPrefix() + "://"); + ret << path() << ":" << int(inSpeed()) << ":" << dataBitsCount(); + if (parameters()[ParityControl]) { + if (parameters()[ParityOdd]) ret << ":O"; + else ret << ":E"; + } else ret << ":N"; + if (parameters()[TwoStopBits]) ret << ":2"; + else ret << ":1"; + return ret; +} + + +void PISerial::configureFromFullPath(const PIString & full_path) { + PIStringList pl = full_path.split(":"); + for (int i = 0; i < pl.size_s(); ++i) { + PIString p(pl[i]); + switch (i) { + case 0: setPath(p); break; + case 1: setSpeed((Speed)(p.toInt())); break; + case 2: setDataBitsCount(p.toInt()); break; + case 3: + p = p.toLowerCase(); + if (p != "n") setParameter(ParityControl); + if (p == "o") setParameter(ParityOdd); + break; + case 4: if (p.toInt() == 2) setParameter(TwoStopBits); break; + } + } +} + + +PIVector PISerial::availableSpeeds() { + PIVector spds; + spds << 50 << 75 << 110 << 300 << 600 << 1200 << 2400 << 4800 << + 9600 << 19200 << 38400 << 57600 << 115200 << 1500000 << + 2000000 << 2500000 << 3000000 << 3500000 << 4000000; + return spds; +} + + +PIStringList PISerial::availableDevices(bool test) { + PIStringList dl; +#ifdef WINDOWS + HKEY key = 0; + RegOpenKey(HKEY_LOCAL_MACHINE, (LPCTSTR)"HARDWARE\\DEVICEMAP\\SERIALCOMM", &key); + if (key != 0) { + char name[1024], data[1024]; + DWORD name_len = 1024, data_len = 1024, type = 0, index = 0; + LONG ret; + while ((ret = RegEnumValue(key, index, (LPTSTR)name, &name_len, NULL, &type, (uchar * )data, &data_len)) != ERROR_NO_MORE_ITEMS) { + dl << PIString(data); + index++; + } + RegCloseKey(key); + } +#else +# ifndef ANDROID + PIStringList prefixes; +# ifdef QNX + prefixes << "ser"; +# else + prefixes << "ttyS" << "ttyO" << "ttyUSB" << "ttyACM" << "ttyGS" + << "ttyMI" << "ttymxc" << "ttyAMA" << "rfcomm" << "ircomm"; +# ifdef FREE_BSD + prefixes << "cu"; +# endif + PIFile file_prefixes("/proc/tty/drivers", PIIODevice::ReadOnly); + if (file_prefixes.open()) { + PIString fc = file_prefixes.readAll(true), line, cpref; + PIStringList words; + file_prefixes.close(); + while (!fc.isEmpty()) { + words.clear(); + line = fc.takeLine(); + if (line.isEmpty()) break; + while (!line.isEmpty()) + words << line.takeWord(); + if (words.size_s() < 2) break; + if (words.back() != "serial") continue; + cpref = words[1]; + int li = cpref.findLast("/"); + if (li > 0) cpref.cutLeft(li + 1); + prefixes << cpref; + } + prefixes.removeDuplicates(); + } +# endif + PIDir dir("/dev"); + PIVector de = dir.entries(); + piForeachC (PIDir::DirEntry & e, de) { + piForeachC (PIString & p, prefixes) { + if (e.name.left(p.size_s()) != p) continue; + dl << "/dev/" + e.name; + } + } +# endif +#endif + if (test) { + for (int i = 0; i < dl.size_s(); ++i) { +#ifdef WINDOWS + void * hCom = CreateFileA(dl[i].data(), GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, FILE_ATTRIBUTE_SYSTEM, 0); + if (hCom == INVALID_HANDLE_VALUE) { +#else + int fd = ::open(dl[i].data(), O_NOCTTY | O_RDONLY); + if (fd == -1) { +#endif + dl.remove(i); + --i; + continue; + } + int void_ = 0; + bool rok = true; +#ifdef WINDOWS + /*COMMTIMEOUTS times; + times.ReadIntervalTimeout = MAXDWORD; + times.ReadTotalTimeoutConstant = 0; + times.ReadTotalTimeoutMultiplier = 0; + times.WriteTotalTimeoutConstant = 1; + times.WriteTotalTimeoutMultiplier = 0; + SetCommTimeouts(hCom, ×); + if (ReadFile(hCom, &void_, 1, &readed_, 0) == 0) + rok = GetLastError() == ;*/ +#else + fcntl(fd, F_SETFL, O_NONBLOCK); + if (::read(fd, &void_, 1) == -1) + rok = errno != EIO; + +#endif + if (!rok) { + dl.remove(i); + --i; + continue; + } +#ifdef WINDOWS + CloseHandle(hCom); +#else + ::close(fd); +#endif + } + } + return dl; +} diff --git a/_oldpip/pip_0.4.0_r5/piserial.h b/_oldpip/pip_0.4.0_r5/piserial.h new file mode 100644 index 0000000..5d6ae32 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/piserial.h @@ -0,0 +1,310 @@ +/*! \file piserial.h + * \brief Serial device +*/ +/* + PIP - Platform Independent Primitives + COM + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com, Bychkov Andrey wapmobil@gmail.com + + 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 3 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, see . +*/ + +#ifndef PISERIAL_H +#define PISERIAL_H + +#include "pitimer.h" +#include "piiodevice.h" +#ifndef WINDOWS +# include +# include +# include +# ifndef B50 +# define B50 0000001 +# endif +# ifndef B75 +# define B75 0000002 +# endif +# ifndef B1500000 +# define B1500000 0010012 +# endif +# ifndef B2000000 +# define B2000000 0010013 +# endif +# ifndef B2500000 +# define B2500000 0010014 +# endif +# ifndef B3000000 +# define B3000000 0010015 +# endif +# ifndef B3500000 +# define B3500000 0010016 +# endif +# ifndef B4000000 +# define B4000000 0010017 +# endif +#else +# define TIOCM_LE 1 +# define TIOCM_DTR 4 +# define TIOCM_RTS 7 +# define TIOCM_CTS 8 +# define TIOCM_ST 3 +# define TIOCM_SR 2 +# define TIOCM_CAR 1 +# define TIOCM_RNG 9 +# define TIOCM_DSR 6 +# define B50 50 +# define B75 75 +# define B110 110 +# define B300 300 +# define B600 600 +# define B1200 1200 +# define B2400 2400 +# define B4800 4800 +# define B9600 9600 +# define B14400 14400 +# define B19200 19200 +# define B38400 38400 +# define B57600 57600 +# define B115200 115200 +# define B128000 128000 +# define B256000 256000 +# define B1500000 1500000 +# define B2000000 2000000 +# define B2500000 2500000 +# define B3000000 3000000 +# define B3500000 3500000 +# define B4000000 4000000 +#endif +#ifndef CRTSCTS +# define CRTSCTS 020000000000 +#endif + + +class PIP_EXPORT PISerial: public PIIODevice +{ + PIIODEVICE(PISerial) +public: + + //! Contructs an empty %PISerial + PISerial(); + + //! \brief Parameters of PISerial + enum Parameters { + ParityControl /*! Enable parity check and generate */ = 0x1, + ParityOdd /*! Parity is odd instead of even */ = 0x2, + TwoStopBits /*! Two stop bits instead of one */ = 0x4 + }; + + //! \brief Speed of PISerial + enum Speed { + S50 /*! 50 baud */ = 50, + S75 /*! 75 baud */ = 75, + S110 /*! 110 baud */ = 110, + S300 /*! 300 baud */ = 300, + S600 /*! 600 baud */ = 600, + S1200 /*! 1200 baud */ = 1200, + S2400 /*! 2400 baud */ = 2400, + S4800 /*! 4800 baud */ = 4800, + S9600 /*! 9600 baud */ = 9600, + S19200 /*! 19200 baud */ = 19200, + S38400 /*! 38400 baud */ = 38400, + S57600 /*! 57600 baud */ = 57600, + S115200 /*! 115200 baud */ = 115200, + S1500000 = 1500000, // Linux only + S2000000 = 2000000, // Linux only + S2500000 = 2500000, // Linux only + S3000000 = 3000000, // Linux only + S3500000 = 3500000, // Linux only + S4000000 = 4000000 // Linux only + }; + + //! Contructs %PISerial with device name "device", speed "speed" and parameters "params" + PISerial(const PIString & device, PISerial::Speed speed = S115200, PIFlags params = 0); + + ~PISerial(); + + + //! Set both input and output speed to "speed" + void setSpeed(PISerial::Speed speed) {setProperty("outSpeed", (int)speed); setProperty("inSpeed", (int)speed); applySettings();} + + //! Set output speed to "speed" + void setOutSpeed(PISerial::Speed speed) {setProperty("outSpeed", (int)speed); applySettings();} + + //! Set input speed to "speed" + void setInSpeed(PISerial::Speed speed) {setProperty("inSpeed", (int)speed); applySettings();} + + //! Set device name to "dev" + void setDevice(const PIString & dev) {setPath(dev); if (isOpened()) {close(); open();};} + + + //! Set parameters to "parameters_" + void setParameters(PIFlags parameters_) {setProperty("parameters", (int)parameters_); applySettings();} + + //! Set parameter "parameter" to "on" state + void setParameter(PISerial::Parameters parameter, bool on = true); + + //! Returns if parameter "parameter" is set + bool isParameterSet(PISerial::Parameters parameter) const; + + //! Returns parameters + PIFlags parameters() const {return (PIFlags)(property("parameters").toInt());} + + + //! Set data bits count. Valid range is from 5 to 8, befault is 8 + void setDataBitsCount(int bits) {setProperty("dataBitsCount", bits); applySettings();} + + //! Returns data bits count + int dataBitsCount() const {return property("dataBitsCount").toInt();} + + + //! Set pin number "number" to logic level "on". Valid numbers are 4 (DTR) and 7 (RTS) + bool setPin(int number, bool on); + + //! Returns pin number "number" logic level. Valid numbers range is from 1 to 9 + bool isPin(int number) const; + + bool setLE(bool on) {return setBit(TIOCM_LE, on, "LE");} // useless function, just formally + bool setDTR(bool on) {return setBit(TIOCM_DTR, on, "DTR");} + bool setRTS(bool on) {return setBit(TIOCM_RTS, on, "RTS");} + bool setCTS(bool on) {return setBit(TIOCM_CTS, on, "CTS");} // useless function, just formally + bool setST(bool on) {return setBit(TIOCM_ST, on, "ST");} // useless function, just formally + bool setSR(bool on) {return setBit(TIOCM_SR, on, "SR");} // useless function, just formally + bool setCAR(bool on) {return setBit(TIOCM_CAR, on, "CAR");} // useless function, just formally + bool setRNG(bool on) {return setBit(TIOCM_RNG, on, "RNG");} // useless function, just formally + bool setDSR(bool on) {return setBit(TIOCM_DSR, on, "DSR");} // useless function, just formally + + bool isLE() const {return isBit(TIOCM_LE, "LE");} + bool isDTR() const {return isBit(TIOCM_DTR, "DTR");} + bool isRTS() const {return isBit(TIOCM_RTS, "RTS");} + bool isCTS() const {return isBit(TIOCM_CTS, "CTS");} + bool isST() const {return isBit(TIOCM_ST, "ST");} + bool isSR() const {return isBit(TIOCM_SR, "SR");} + bool isCAR() const {return isBit(TIOCM_CAR, "CAR");} + bool isRNG() const {return isBit(TIOCM_RNG, "RNG");} + bool isDSR() const {return isBit(TIOCM_DSR, "DSR");} + + void setVTime(int t) {vtime = t; applySettings();} + + + //! Set read is blocking for function read(void * read_to, int max_size) + void setReadIsBlocking(bool yes); + + + //! Returns device name + PIString device() const {return path();} + + //! Returns output speed + PISerial::Speed outSpeed() const {return (PISerial::Speed)(property("outSpeed").toInt());} + + //! Returns input speed + PISerial::Speed inSpeed() const {return (PISerial::Speed)(property("inSpeed").toInt());} + + int VTime() const {return vtime;} + + + //! Discard all buffered input and output data + void flush() { +#ifndef WINDOWS + if (fd != -1) tcflush(fd, TCIOFLUSH); +#endif + } + + int read(void * read_to, int max_size); + bool read(void * read_to, int max_size, double timeout_ms); + PIString read(int size = -1, double timeout_ms = 1000.); + PIByteArray readData(int size = -1, double timeout_ms = 1000.); + + + //! \brief Write to device data "data" with maximum size "max_size" and wait for data written if "wait" is \b true. + //! \returns sended bytes count + int write(const void * data, int max_size, bool wait = false); + + //! \brief Write to device data "data" with maximum size "size" and wait for data written if "wait" is \b true. + //! \returns \b true if sended bytes count = "size" + bool send(const void * data, int size, bool wait = false) {return (write(data, size, wait) == size);} + + //! \brief Write to device string "data" and wait for data written if "wait" is \b true. + //! \returns \b true if sended bytes count = size of string + bool send(const PIString & data, bool wait = false) {return (write(data.data(), data.lengthAscii(), wait) == data.size_s());} + + //! \brief Write to device byte array "data" and wait for data written if "wait" is \b true. + //! \returns \b true if sended bytes count = size of string + bool send(const PIByteArray & data, bool wait = false) {return (write(data.data(), data.size_s(), wait) == data.size_s());} + + PIString constructFullPath() const; + + + //! \brief Returns all available speeds for serial devices + static PIVector availableSpeeds(); + + //! \brief Returns all available system devices. If "test" each device will be tried to open + static PIStringList availableDevices(bool test = false); + +//! \ioparams +//! \{ +#ifdef DOXYGEN + //! \brief device, default "" + string device; + + //! \brief input/output speed, default 115200 + int speed; + + //! \brief dataBitsCount, default 8 + int dataBitsCount; + + //! \brief parityControl, default false + bool parityControl; + + //! \brief parityOdd, default false + bool parityOdd; + + //! \brief twoStopBits, default false + bool twoStopBits; +#endif +//! \} + +protected: + PIString fullPathPrefix() const {return "ser";} + void configureFromFullPath(const PIString & full_path); + bool configureDevice(const void * e_main, const void * e_parent = 0); + int write(const void * data, int max_size) {return write(data, max_size, true);} + + //! Executes when any read function was successful. Default implementation does nothing + virtual void received(const void * data, int size) {;} + + void _init(); + void applySettings(); + int convertSpeed(PISerial::Speed speed); + bool setBit(int bit, bool on, const PIString & bname); + bool isBit(int bit, const PIString & bname) const; + + bool openDevice(); + bool closeDevice(); + +#ifdef WINDOWS + DCB desc, sdesc; + void * hCom; + DWORD readed, mask; + bool block_write; +#else + termios desc, sdesc; + uint readed; +#endif + int fd, vtime; + bool block_read; + PITimer timer; + +}; + +#endif // PISERIAL_H diff --git a/_oldpip/pip_0.4.0_r5/pisignals.cpp b/_oldpip/pip_0.4.0_r5/pisignals.cpp new file mode 100644 index 0000000..b67ec96 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/pisignals.cpp @@ -0,0 +1,111 @@ +/* + PIP - Platform Independent Primitives + Signals + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +#include "pisignals.h" + +PISignals::SignalEvent PISignals::ret_func; + + +void PISignals::grabSignals(PIFlags signals_) { + if (signals_[PISignals::Interrupt]) signal(signalCode(PISignals::Interrupt), PISignals::signal_event); + if (signals_[PISignals::Illegal]) signal(signalCode(PISignals::Illegal), PISignals::signal_event); + if (signals_[PISignals::Abort]) signal(signalCode(PISignals::Abort), PISignals::signal_event); + if (signals_[PISignals::FPE]) signal(signalCode(PISignals::FPE), PISignals::signal_event); + if (signals_[PISignals::SegFault]) signal(signalCode(PISignals::SegFault), PISignals::signal_event); + if (signals_[PISignals::Termination]) signal(signalCode(PISignals::Termination), PISignals::signal_event); +#ifndef WINDOWS + if (signals_[PISignals::Hangup]) signal(signalCode(PISignals::Hangup), PISignals::signal_event); + if (signals_[PISignals::Quit]) signal(signalCode(PISignals::Quit), PISignals::signal_event); + if (signals_[PISignals::Kill]) signal(signalCode(PISignals::Kill), PISignals::signal_event); + if (signals_[PISignals::BrokenPipe]) signal(signalCode(PISignals::BrokenPipe), PISignals::signal_event); + if (signals_[PISignals::Timer]) signal(signalCode(PISignals::Timer), PISignals::signal_event); + if (signals_[PISignals::UserDefined1]) signal(signalCode(PISignals::UserDefined1), PISignals::signal_event); + if (signals_[PISignals::UserDefined2]) signal(signalCode(PISignals::UserDefined2), PISignals::signal_event); + if (signals_[PISignals::ChildStopped]) signal(signalCode(PISignals::ChildStopped), PISignals::signal_event); + if (signals_[PISignals::Continue]) signal(signalCode(PISignals::Continue), PISignals::signal_event); + if (signals_[PISignals::StopProcess]) signal(signalCode(PISignals::StopProcess), PISignals::signal_event); + if (signals_[PISignals::StopTTY]) signal(signalCode(PISignals::StopTTY), PISignals::signal_event); + if (signals_[PISignals::StopTTYInput]) signal(signalCode(PISignals::StopTTYInput), PISignals::signal_event); + if (signals_[PISignals::StopTTYOutput]) signal(signalCode(PISignals::StopTTYOutput), PISignals::signal_event); +#endif +} + + +int PISignals::signalCode(PISignals::Signal signal) { + switch (signal) { + case PISignals::Interrupt: return SIGINT; + case PISignals::Illegal: return SIGILL; + case PISignals::Abort: return SIGABRT; + case PISignals::FPE: return SIGFPE; + case PISignals::SegFault: return SIGSEGV; + case PISignals::Termination: return SIGTERM; +#ifndef WINDOWS + case PISignals::Hangup: return SIGHUP; + case PISignals::Quit: return SIGQUIT; + case PISignals::Kill: return SIGKILL; + case PISignals::BrokenPipe: return SIGPIPE; + case PISignals::Timer: return SIGALRM; + case PISignals::UserDefined1: return SIGUSR1; + case PISignals::UserDefined2: return SIGUSR2; + case PISignals::ChildStopped: return SIGCHLD; + case PISignals::Continue: return SIGCONT; + case PISignals::StopProcess: return SIGSTOP; + case PISignals::StopTTY: return SIGTSTP; + case PISignals::StopTTYInput: return SIGTTIN; + case PISignals::StopTTYOutput:return SIGTTOU; +#endif + default:; + } + return 0; +} + + +PISignals::Signal PISignals::signalFromCode(int signal) { + switch (signal) { + case SIGINT: return PISignals::Interrupt; + case SIGILL: return PISignals::Illegal; + case SIGABRT: return PISignals::Abort; + case SIGFPE: return PISignals::FPE; + case SIGSEGV: return PISignals::SegFault; + case SIGTERM: return PISignals::Termination; +#ifndef WINDOWS + case SIGHUP: return PISignals::Hangup; + case SIGQUIT: return PISignals::Quit; + case SIGKILL: return PISignals::Kill; + case SIGPIPE: return PISignals::BrokenPipe; + case SIGALRM: return PISignals::Timer; + case SIGUSR1: return PISignals::UserDefined1; + case SIGUSR2: return PISignals::UserDefined2; + case SIGCHLD: return PISignals::ChildStopped; + case SIGCONT: return PISignals::Continue; + case SIGSTOP: return PISignals::StopProcess; + case SIGTSTP: return PISignals::StopTTY; + case SIGTTIN: return PISignals::StopTTYInput; + case SIGTTOU: return PISignals::StopTTYOutput; +#endif + default:; + } + return PISignals::Termination; +} + + +void PISignals::signal_event(int signal) { + if (PISignals::ret_func == 0) return; + PISignals::ret_func(PISignals::signalFromCode(signal)); +} diff --git a/_oldpip/pip_0.4.0_r5/pisignals.h b/_oldpip/pip_0.4.0_r5/pisignals.h new file mode 100644 index 0000000..859cf35 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/pisignals.h @@ -0,0 +1,76 @@ +/*! \file pisignals.h + * \brief System signals +*/ +/* + PIP - Platform Independent Primitives + Signals + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +#ifndef PISIGNALS_H +#define PISIGNALS_H + +#include "picontainers.h" +#include + +class PIP_EXPORT PISignals +{ +public: + enum Signal { + Interrupt /** Interrupt from keyboard */ = 0x01, // Term Interrupt from keyboard + Illegal /** Illegal Instruction */ = 0x02, // Core Illegal Instruction + Abort /** Abort signal */ = 0x04, // Core Abort signal from abort + FPE /** Floating point exception */ = 0x08, // Core Floating point exception + SegFault /** Invalid memory reference */ = 0x10, // Core Invalid memory reference + Termination /** Termination signal */ = 0x20, // Term Termination signal +#ifndef WINDOWS + Hangup = 0x40, // Term Hangup detected on controlling terminal or death of controlling process + Quit = 0x80, // Core Quit from keyboard + Kill = 0x100, // Term Kill signal + BrokenPipe = 0x200, // Term Broken pipe: write to pipe with no readers + Timer = 0x400, // Term Timer signal from alarm + UserDefined1 = 0x800, // Term User-defined signal 1 + UserDefined2 = 0x1000, // Term User-defined signal 2 + ChildStopped = 0x2000, // Ign Child stopped or terminated + Continue = 0x4000, // Cont Continue if stopped + StopProcess = 0x8000, // Stop Stop process + StopTTY = 0x10000, // Stop Stop typed at tty + StopTTYInput = 0x20000, // Stop tty input for background process + StopTTYOutput = 0x40000, // Stop tty output for background process +#endif + All = 0xFFFFF + }; + + typedef void (*SignalEvent)(PISignals::Signal); + // slot is any function format "void (PISignals::Signal)" + static void setSlot(SignalEvent slot) {ret_func = slot;} + static void grabSignals(PIFlags signals_); + static void raiseSignal(PISignals::Signal signal) {raise(signalCode(signal));} + +private: + PISignals() {ret_func = 0;} + ~PISignals() {} + + static int signalCode(PISignals::Signal signal); + static PISignals::Signal signalFromCode(int signal); + static void signal_event(int signal); + + static SignalEvent ret_func; + +}; + + +#endif // PISIGNALS_H diff --git a/_oldpip/pip_0.4.0_r5/pistack.h b/_oldpip/pip_0.4.0_r5/pistack.h new file mode 100644 index 0000000..113de2c --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/pistack.h @@ -0,0 +1,41 @@ +/*! \file picontainers.h + * \brief Stack container + * + * This file declare PIStack +*/ +/* + PIP - Platform Independent Primitives + Stack container + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +#ifndef PISTACK_H +#define PISTACK_H + +#include "pivector.h" + +template +class PIP_EXPORT PIStack: public PIVector { +public: + PIStack() {;} + PIVector & push(const T & v) {PIVector::push_back(v); return *this;} + T pop() {return PIVector::take_back();} + T & top() {return PIVector::back();} + const T & top() const {return PIVector::back();} + PIVector toVector() {PIVector v(PIVector::size()); for (uint i = 0; i < PIVector::size(); ++i) v[i] = PIVector::at(i); return v;} +}; + +#endif // PISTACK_H diff --git a/_oldpip/pip_0.4.0_r5/pistatemachine.h b/_oldpip/pip_0.4.0_r5/pistatemachine.h new file mode 100644 index 0000000..8f54de3 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/pistatemachine.h @@ -0,0 +1,333 @@ +/*! \file pistatemachine.h + * \brief Base class for custom state machine +*/ +/* + PIP - Platform Independent Primitives + State machine + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +#ifndef PISTATEMACHINE_H +#define PISTATEMACHINE_H + +#include "piobject.h" + +/*! \brief Base class for custom state machine + * + * \section PIStateMachine_synopsis Synopsis + * This class provide functionality of state machine. + * You should inherit from this class, implement \a execution() + * and \a transition() functions, set rules and periodically + * call \a tick() function to proper work of machine. + * + * \section PIStateMachine_prepare Prepare for work + * %State machine operates with "state", "rule" and "condition". + * * "State" is some class (by default \c int), associated name and + * optional "handler" - pointer to function executed on every \a tick(); + * * "Rule" define rule of transition from one machine state to other. + * It is also has optional "handler"; + * * "Condition" is a part of rule and define possibility of transition. + * + * First of all you should define states of your machine by function + * \a addState(). Then you should define transition rules for machine + * by function \a addRule(). Finally you can set initial state by function + * \a setInitialState() and provide periodically execution of function + * \a tick(). + * + * \section PIStateMachine_principle Principle of work + * At any time the state machine is in some state. You can ask machine + * to enter in new state by function \a switchToState(). If all conditions + * done machine switch it state immediately, else machine remember request + * and will be try switch to the new state every tick. Successfull state + * switching execute function \a transition(), every tick execute + * function \a execution() with current state. On successfull transition + * if rule "handler" is not null it execute. Every \a tick() if current + * state "handler" is not null it execute. + * + * \section PIStateMachine_conditions Conditions + * Each rule has transition condition. Condition is array of pairs + * (string, number). It means that every condition by name "string" + * should be performed as least "number" times. Empty condition always + * permits transition. + * + * %State machine have current performed conditions. You can read this + * conditions by function \a currentConditions() and perform new + * conditions by functions \a performCondition() and \a performConditions(). + * Currend conditions can de erased by function \a resetConditions(). + * + * \section PIStateMachine_example Example + * This is simple example demonstrates all features: + * \snippet pistatemachine.cpp main +*/ +template +class PIP_EXPORT PIStateMachine: public PIObject +{ + PIOBJECT(PIStateMachine) +public: + //! Constructs an empty state machine + PIStateMachine(void * _parent = 0) {if (_parent == 0) parent_ = this; else parent_ = _parent; resetConditions();} + ~PIStateMachine() {;} + + //! %Condition is a pair (string, number) + typedef PIPair Condition; + + //! %Rule of transition between states of machine + struct Rule { + //! Constuctor + Rule() {handler = 0;} + //! Constuctor + Rule(Type f, Type t, const PIStringList & c = PIStringList(), Handler h = 0, bool at = false, bool rac = false) { + from = f; + to = t; + for (int i = 0; i < c.size_s(); ++i) + conditions << Condition(c[i], 1); + autoTransition = at; + resetAllConditions = rac; + handler = h; + } + //! Source state + Type from; + //! Destination state + Type to; + //! %Conditions of transition + PIVector conditions; + //! Automatic transition + bool autoTransition; + //! Reset or not all performed conditions of machine on transition + bool resetAllConditions; + //! Pointer to function executed on transition + Handler handler; + //! Add condition of transition + void addCondition(const PIString & name, int times = 1) {if (times > 0) conditions << Condition(name, times);} + bool operator ==(const Rule & other) const {return (from == other.from) && (to == other.to);} + bool operator !=(const Rule & other) const {return (from != other.from) || (to != other.to);} + }; + + //! %State of machine + struct State { + //! Constuctor + State() {handler = 0;} + //! Constuctor + State(Type v, const PIString & n = "", Handler h = 0) {value = v; name = n; handler = h;} + //! %State value + Type value; + //! %State name + PIString name; + //! Pointer to function executed on tick + Handler handler; + bool operator ==(const State & other) const {return value == other.value;} + bool operator !=(const State & other) const {return value != other.value;} + }; + + void * parent() const {return parent_;} + void setParent(void * parent) {parent_ = parent;} + + //! Add state of machine + void addState(Type value, const PIString & name = "", Handler handler = 0) {if (states_.contains(State(value, name))) return; states_ << State(value, name, handler);} + + //! States count + int statesCount() const {return states_.size_s();} + + //! Remove all states + void clearStates() {states_.clear();} + + + //! Add rule of transition + void addRule(Type from, Type to, const PIString & condition, Handler handler = 0, bool autoTransition = false, bool resetAllConditions = false) {if (rules_.contains(Rule(from, to))) return; rules_ << Rule(from, to, PIStringList(condition), handler, autoTransition, resetAllConditions);} + + //! Add rule of transition + void addRule(Type from, Type to, Handler handler, bool autoTransition = false, bool resetAllConditions = false) {if (rules_.contains(Rule(from, to))) return; rules_ << Rule(from, to, PIStringList(), handler, autoTransition, resetAllConditions);} + + //! Add rule of transition + void addRule(Type from, Type to, const PIStringList & conditions = PIStringList(), Handler handler = 0, bool autoTransition = false, bool resetAllConditions = false) {if (rules_.contains(Rule(from, to))) return; rules_ << Rule(from, to, conditions, handler, autoTransition, resetAllConditions);} + + //! Add rule of transition + void addRule(const Rule & rule) {if (rules_.contains(rule)) return; rules_ << rule;} + + //! Rules count + int rulesCount() const {return rules_.size_s();} + + //! Remove all rules + void clearRules() {rules_.clear();} + + + //! Setup initial state. \a reset() will set machine state to "value" + void setInitialState(Type value) { + for (int i = 0; i < states_.size_s(); ++i) + if (states_[i].value == value) { + init_ = state_ = states_[i]; + return; + } + } + + /** \brief Try to switch machine state to state "to" + * \details If there is rule of transition exists and this rule conditions + * is performed then machine switched to new state immediately. Otherwise machine + * will be try to enter to new state every \a tick(). + * \return \c true if state switched immediately, otherwise \c false */ + bool switchToState(Type to) { + switch_to = to; + for (int i = 0; i < rules_.size_s(); ++i) { + Rule & r(rules_[i]); + if ((r.from != state_.value) || (r.to != to)) continue; + if (!checkConditions(r)) continue; + State ts = findState(to); + if (r.handler != 0 && parent_ != 0) r.handler(parent_); + transition(state_, ts); + state_ = ts; + resetConditions(r); + return true; + } + return false; + } + + //! Reset machine state to initial and clear all conditions + void reset() {state_ = init_; resetConditions();} + + //! Returns current state of machine + const State & currentState() const {return state_;} + + + //! Reset all performed conditions + void resetConditions() {cond.clear();} + + //! Reset performed condition with name "name" + void resetCondition(const PIString & name) { + for (int i = 0; i < cond.size_s(); ++i) + if (cond[i].first == name) { + cond.remove(i); + i--; + } + } + + //! Perform condition with name "name" "times" times. + void performCondition(const PIString & name, int times = 1) { + if (times <= 0) return; + for (int i = 0; i < cond.size_s(); ++i) + if (cond[i].first == name) { + cond[i].second += times; + return; + } + cond << Condition(name, times); + } + + //! Perform every condition with name from "names" one time. + void performConditions(const PIStringList & names) { + bool ok; + for (int n = 0; n < names.size_s(); ++n) { + ok = false; + for (int i = 0; i < cond.size_s(); ++i) { + if (cond[i].first == names[n]) { + cond[i].second++; + ok = true; + break; + } + } + if (ok) continue; + cond << Condition(names[n], 1); + } + } + + //! Returns all current performed conditions + const PIVector & currentConditions() const {return cond;} + + Type * currentState_ptr() {return &state_.value;} + int * conditionsCount_ptr() {static int c = 0; c = cond.size_s(); return &c;} + +//! \handlers +//! \{ + + //! \fn void tick() + //! \brief Main function of machine. Execute \a execution() and check if need to switch state + + //! \fn void tick(void * data, int delim) + //! \brief Main function of machine. Execute \a execution() and check if need to switch state + +//! \} + + EVENT_HANDLER(void, tick) {tick(0, 0);} + EVENT_HANDLER2(void, tick, void * , data, int, delim) { + execution(state_); + if (state_.handler != 0 && parent_ != 0) state_.handler(parent_); + if (switch_to != state_.value) switchToState(switch_to); + else { + piForeachC (Rule & r, rules_) { + if (!r.autoTransition || r.from != state_.value) continue; + if (checkConditions(r)) { + switchToState(r.to); + break; + } + } + } + } + +protected: + + //! Reimplement this function to process current state of machine + virtual void execution(const State & state) {;} + + //! Reimplement this function to process switching current state of machine + virtual void transition(const State & from, const State & to) {;} + +private: + State findState(Type value) { + for (int i = 0; i < states_.size_s(); ++i) + if (states_[i].value == value) + return states_[i]; + return State(); + } + bool checkConditions(const Rule & rule) { + //if (cond.size_s() < rule.conditions.size_s()) return false; + int oc = 0; + for (int i = 0; i < cond.size_s(); ++i) { + PIString & rn(cond[i].first); + for (int j = 0; j < rule.conditions.size_s(); ++j) { + if (rn != rule.conditions[j].first) continue; + if (cond[i].second < rule.conditions[j].second) return false; + oc++; + } + } + return (rule.conditions.size_s() == oc); + } + void resetConditions(const Rule & rule) { + if (rule.resetAllConditions) { + cond.clear(); + return; + } + for (int i = 0; i < cond.size_s(); ++i) { + PIString & rn(cond[i].first); + for (int j = 0; j < rule.conditions.size_s(); ++j) { + if (rn != rule.conditions[j].first) continue; + cond[i].second -= rule.conditions[j].second; + if (cond[i].second <= 0) { + cond.remove(i); + i--; + } + } + } + } + + PIVector states_; + PIVector rules_; + State init_, state_; + Type switch_to; + void * parent_; + PIVector cond; + +}; + + +#endif // PISTATEMACHINE_H diff --git a/_oldpip/pip_0.4.0_r5/pistring.cpp b/_oldpip/pip_0.4.0_r5/pistring.cpp new file mode 100644 index 0000000..12cc740 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/pistring.cpp @@ -0,0 +1,764 @@ +/* + PIP - Platform Independent Primitives + String + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +#include "pistring.h" + + +/*! \class PIString + * \brief String class + * \details PIP use this class for use string information. + * + * \section PIString_sec0 Synopsis + * This class based on \a PIVector to store information. + * String is a sequence of \a PIChar and can contain multibyte + * symbols. Therefore real memory size of string is symbols count * 4. + * String can be constucted from many types of data and can be converted + * to many types. There are man operators and handly functions to use + * string as you wish. + * + * \section PIString_sec1 To/from data convertions + * Most common constructor is \a PIString(const char * str), where "str" + * is null-terminated string, e.g. \c "string". This is 7 chars with last char = 0. + * Also you can constructs \a PIString from single \a PIChar, \a PIByteArray, + * other \a PIString or sequency of the same characters with custom length.\n \n + * This class has implicit conversions to const char * and + * \c std::string. Also there are functions to make same convertions: + * * \a data() - to const char * , + * * \a stdString() - to \c std::string, + * * \a toByteArray() - to \a PIByteArray. + * + * \section PIString_sec2 Numeric operations + * You can get symbolic representation of any numeric value with function + * \a setNumber(any integer value, int base = 10, bool * ok = 0). Default + * arguments are set for decimal base system, but you can choose any system + * from 2 to 40. There are the same static functions \a fromNumber(), that + * returns \a PIString. \n + * Also there is function \a setReadableSize() which is set human-readable + * size in bytes, Kb, Mb, Gb or Pb. Static analog is \a readableSize(). + * + */ + + +const char PIString::toBaseN[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', + 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', + 'U', 'V', 'W', 'X', 'Y', 'Z', '[', '\\', ']', '^'}; +const int PIString::fromBaseN[] = {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, -1, -1, -1, -1, -1, -1, + -1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, -1, + -1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}; + + +void PIString::appendFromChars(const char * c, int s) { + int sz; + wchar_t wc; + for (int i = 0; i < s; ++i) { + if (/*isascii(c[i])*/c[i] >= 0) { + push_back(PIChar(c[i])); + continue; + } + sz = mbtowc(&wc, &(c[i]), 4); + //cout << sz << endl; + switch (sz) { + case 4: + push_back(PIChar(*(int*)&(c[i]))); + i += 3; + continue; + case 3: + push_back(PIChar(*(int*)&(c[i]))); + back().ch &= 0xFFFFFF; + i += 2; + continue; + case 2: + push_back(PIChar(*(short * )&(c[i]))); + ++i; + continue; + default: + push_back(PIChar(c[i])); + break; + } + } +} + + +PIString & PIString::operator +=(const char * str) { + int l = 0; + while (str[l] != '\0') ++l; + appendFromChars(str, l); + return *this; +} + + +PIString & PIString::operator +=(const wchar_t * str) { + //cout << "wc" << endl; + int l = 0, sz; + char * c = new char[MB_CUR_MAX]; + while (str[l] != 0) ++l; + for (int i = 0; i < l; ++i) { + sz = wctomb(c, str[i]); + switch (sz) { + case 4: + push_back(PIChar(*(int*)c)); + continue; + case 3: + push_back(PIChar(*(int*)c)); + back().ch &= 0xFFFFFF; + continue; + case 2: + push_back(PIChar(*(short * )c)); + continue; + default: + push_back(PIChar(c[0])); + break; + } + } + delete[] c; + return *this; +} + + +#ifdef HAS_LOCALE +PIString & PIString::operator +=(const wstring & str) { + uint l = str.size(); + for (uint i = 0; i < l; ++i) push_back(str[i]); + return *this; +} +#endif + + +PIString & PIString::operator +=(const PIString & str) { + //uint l = str.size(); + *((PIDeque*)this) << *((PIDeque*)&str); + return *this; +} + + +bool PIString::operator ==(const PIString & str) const { + uint l = str.size(); + if (size() != l) return false; + for (uint i = 0; i < l; ++i) + if (str[i] != at(i)) + return false; + return true; +} + + +bool PIString::operator !=(const PIString & str) const { + uint l = str.size(); + if (size() != l) return true; + for (uint i = 0; i < l; ++i) + if (str[i] != at(i)) + return true; + return false; +} + + +bool PIString::operator <(const PIString & str) const { + uint l = str.size(); + if (size() < l) return true; + if (size() > l) return false; + for (uint i = 0; i < l; ++i) { + if (str[i] == at(i)) continue; + if (str[i] < at(i)) return true; + else return false; + } + return false; +} + + +bool PIString::operator >(const PIString & str) const { + uint l = str.size(); + if (size() < l) return false; + if (size() > l) return true; + for (uint i = 0; i < l; ++i) { + if (str[i] == at(i)) continue; + if (str[i] < at(i)) return false; + else return true; + } + return false; +} + + +PIString PIString::mid(const int start, const int len) const { + //PIString str; + int s = start, l = len; + if (l == 0) return PIString(); + if (s < 0) { + l += s; + s = 0; + } + if (l < 0) { + //for (uint i = s; i < size(); ++i) + // str += at(i); + return PIString(&(at(s)), size() - s); + } else { + if (l > length() - s) + l = length() - s; + //for (int i = s; i < s + l; ++i) + // str += at(i); + return PIString(&(at(s)), l); + } + return PIString(); +} + + +PIString & PIString::cutMid(const int start, const int len) { + int s = start, l = len; + if (l == 0) return *this; + if (s < 0) { + l += s; + s = 0; + } + if (l < 0) + remove(s, size() - s); + else { + if (l > length() - s) + l = length() - s; + remove(s, l); + } + return *this; +} + + +PIString & PIString::trim() { + int st = 0, fn = 0; + for (int i = 0; i < length(); ++i) + if (at(i) != ' ' && at(i) != '\t' && at(i) != '\n' && at(i) != '\r' && at(i) != char(12)) + {st = i; break;} + for (int i = length() - 1; i >= 0; --i) + if (at(i) != ' ' && at(i) != '\t' && at(i) != '\n' && at(i) != '\r' && at(i) != char(12)) + {fn = i; break;} + //*this = mid(st, fn - st + 1); + if (fn < size_s() - 1) cutRight(size_s() - fn - 1); + if (st > 0) cutLeft(st); + return *this; +} + + +PIString PIString::trimmed() const { + int st = 0, fn = 0; + for (int i = 0; i < length(); ++i) + if (at(i) != ' ' && at(i) != '\t' && at(i) != '\n' && at(i) != '\r' && at(i) != char(12)) + {st = i; break;} + for (int i = length() - 1; i >= 0; --i) + if (at(i) != ' ' && at(i) != '\t' && at(i) != '\n' && at(i) != '\r' && at(i) != char(12)) + {fn = i; break;} + return mid(st, fn - st + 1); +} + + +PIString & PIString::replace(int from, int count, const PIString & with) { + if (count < length() - from) remove(from, count); + else remove(from, length() - from); + uint c = with.length(); + for (uint i = 0; i < c; ++i) insert(from + i, with[i]); + return *this; +} + + +PIString & PIString::replace(const PIString & what, const PIString & with, bool * ok) { + //piCout << "replace" << what << with; + if (what.isEmpty()) { + if (ok != 0) *ok = false; + return *this; + } + int s = find(what); + if (s >= 0) replace(s, what.length(), with); + if (ok != 0) *ok = (s >= 0); + return *this; +} + + +PIString & PIString::replaceAll(const PIString & what, const PIString & with) { + if (what.isEmpty() || what == with) return *this; + bool ok = true; + while (ok) replace(what, with, &ok); + return *this; +} + + +PIString & PIString::insert(int index, const PIString & str) { + //uint c = str.length(); + //for (uint i = 0; i < c; ++i) insert(index + i, str[i]); + PIDeque::insert(index, *((const PIDeque*)&str)); + return *this; +} + + +PIStringList PIString::split(const PIString & delim) const { + PIStringList sl; + if (isEmpty() || delim.isEmpty()) return sl; + PIString ts(*this); + int ci = ts.find(delim); + while (ci >= 0) { + sl << ts.left(ci); + ts.cutLeft(ci + delim.length()); + ci = ts.find(delim); + } + if (ts.length() > 0) sl << ts; + return sl; +} + + +int PIString::find(const char str, const int start) const { + for (int i = start; i < length(); ++i) + if (at(i) == str) + return i; + return -1; +} + + +int PIString::find(const PIString str, const int start) const { + int l = str.length(); + for (int i = start; i < length() - l + 1; ++i) + if (mid(i, l) == str) + return i; + return -1; +} + + +int PIString::findLast(const char str, const int start) const { + for (int i = length() - 1; i >= start; --i) + if (at(i) == str) + return i; + return -1; +} + + +int PIString::findLast(const PIString str, const int start) const { + int l = str.length(); + for (int i = length() - l; i >= start; --i) + if (mid(i, l) == str) + return i; + return -1; +} + + +int PIString::findWord(const PIString & word, const int start) const { + int f = start - 1, tl = length(), wl = word.length(); + while ((f = find(word, f + 1)) >= 0) { + bool ok = true; + PIChar c; + if (f > 0) {c = (*this)[f - 1]; if (!(c == ' ' || c == '\t' || c == '\n' || c == '\r')) {ok = false; continue;}} + if (f + wl < tl) {c = (*this)[f + wl]; if (!(c == ' ' || c == '\t' || c == '\n' || c == '\r')) {ok = false; continue;}} + if (ok) return f; + } + return -1; +} + + +int PIString::findCWord(const PIString & word, const int start) const { + int f = start - 1, tl = length(), wl = word.length(); + while ((f = find(word, f + 1)) >= 0) { + bool ok = true; + PIChar c; + if (f > 0) {c = (*this)[f - 1]; if (!(c == ' ' || c == '\t' || c == '\n' || c == '\r' || (c != '_' && !c.isAlpha() && !c.isDigit()))) {ok = false; continue;}} + if (f + wl < tl) {c = (*this)[f + wl]; if (!(c == ' ' || c == '\t' || c == '\n' || c == '\r' || (c != '_' && !c.isAlpha() && !c.isDigit()))) {ok = false; continue;}} + if (ok) return f; + } + return -1; +} + + +bool PIString::startsWith(const PIString & str) const { + if (size() < str.size()) return false; + return str == left(str.size()); +} + + +bool PIString::endsWith(const PIString & str) const { + if (size() < str.size()) return false; + return str == right(str.size()); +} + + +PIString PIString::takeSymbol() { + PIString ret; + int sz = size_s(), ss = -1; + for (int i = 0; i < sz; ++i) { + PIChar c = at(i); + if (c == ' ' || c == '\t' || c == '\n' || c == '\r') + continue; + ss = i; + break; + } + if (ss < 0) return ret; + ret = mid(ss, 1); + cutLeft(ss + 1); + return ret; +} + + +PIString PIString::takeWord() { + int sz = size_s(), ws = -1, we = -1; + for (int i = 0; i < sz; ++i) { + PIChar c = at(i); + if (c == ' ' || c == '\t' || c == '\n' || c == '\r') { + if (we < 0 && ws >= 0) { + we = i; + break; + } + } else { + if (ws < 0) ws = i; + if (we >= 0) break; + } + } + PIString ret = mid(ws, we - ws); + cutLeft(we < 0 ? sz : we); + return ret; +} + + +PIString PIString::takeCWord() { + PIString ret; + int sz = size_s(), ws = -1, we = -1; + for (int i = 0; i < sz; ++i) { + PIChar c = at(i); + if (c == ' ' || c == '\t' || c == '\n' || c == '\r') { + if (we < 0 && ws >= 0) { + we = i; + break; + } + } else { + if (ws < 0) { + if (c.isAlpha() || c == '_') + ws = i; + else + return ret; + } else { + if (!c.isAlpha() && !c.isDigit() && c != '_') { + we = i; + break; + } + } + if (we >= 0) break; + } + } + ret = mid(ws, we - ws); + cutLeft(we < 0 ? sz : we); + return ret; +} + + +PIString PIString::takeLine() { + int sz = size_s(), le = -1; + for (int i = 0; i < sz; ++i) { + PIChar c = at(i); + if (c == '\n') { + le = i; + break; + } + } + PIString ret = left(le); + if (!ret.isEmpty()) + if (ret.back() == '\r') + ret.cutRight(1); + cutLeft(le < 0 ? sz : le + 1); + return ret; +} + + +PIString PIString::takeNumber() { + PIString ret; + int sz = size_s(), ls = -1, le = -1, phase = 0; + for (int i = 0; i < sz; ++i) { + if (phase > 7) break; + PIChar c = at(i); + //piCout << "char " << c << "phase" << phase; + switch (phase) { + case 0: // trim + if (c == ' ' || c == '\t' || c == '\n' || c == '\r') + continue; + phase = 7; + case 7: // sign + if (c == '-' || c == '+') {ls = i; phase = 1; break;} + case 1: // search start + if (c >= '0' && c <= '9') {le = i; if (ls < 0) ls = i; phase = 2; break;} + if (c == '.') {le = i; if (ls < 0) ls = i; phase = 3; break;} + phase = 9; + break; + case 2: // integer + if (c == '.') {le = i; phase = 3; break;} + if (c == 'e' || c == 'E') {le = i; phase = 4; break;} + if ((c >= '0' && c <= '9') || (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F') || c == 'x') {le = i; break;} + phase = 6; + break; + case 3: // point + if (c == 'e' || c == 'E') {le = i; phase = 4; break;} + if (c >= '0' && c <= '9') {le = i; break;} + phase = 6; + break; + case 4: // exp + if ((c >= '0' && c <= '9') || c == '-' || c == '+') {le = i; phase = 5; break;} + phase = 6; + break; + case 5: // power + if (c >= '0' && c <= '9') {le = i; break;} + phase = 6; + break; + case 6: // suffix + if (c == 'f' || c == 's' || c == 'u' || c == 'l' || c == 'L') {le = i; break;} + phase = 9; + break; + } + if (phase == 6) { + if (c == 'f' || c == 's' || c == 'u' || c == 'l' || c == 'L') le = i; + else phase = 9; + } + } + //piCout << ls << le; + if (le < ls) return ret; + ret = mid(ls, le - ls + 1); + cutLeft(le + 1); + return ret; +} + + +PIString PIString::takeRange(const PIChar & start, const PIChar & end, const PIChar & shield) { + PIString ret; + bool trim_ = (start != ' ' && start != '\t' && start != '\n' && start != '\r'), eq = (start == end); + int sz = size_s(), ls = -1, le = -1, cnt = 0; + for (int i = 0; i < sz; ++i) { + PIChar c = at(i); + if (c == shield) {++i; continue;} + if (trim_) { + if (c == ' ' || c == '\t' || c == '\n' || c == '\r') + continue; + trim_ = false; + } + if (eq) { + if (c == start) { + if (cnt == 0) ls = i; + else {le = i; cnt = 0; break;} + cnt++; + } + } else { + if (c == start) { + if (cnt == 0) ls = i; + cnt++; + } + if (c == end) { + cnt--; + if (cnt == 0) le = i; + } + } + if (cnt <= 0) break; + } + //piCout << ls << le << cnt; + if (le < ls || ls < 0 || le < 0 || cnt != 0) return ret; + ret = mid(ls + 1, le - ls - 1); + cutLeft(le + 1); + return ret; +} + + +PIString PIString::toUpperCase() const { + PIString str(*this); + int l = str.size(); + for (int i = 0; i < l; ++i) str[i] = str[i].toUpper(); + return str; +} + + +PIString PIString::toLowerCase() const { + PIString str(*this); + int l = str.size(); + for (int i = 0; i < l; ++i) str[i] = str[i].toLower(); + return str; +} + + +int PIString::lengthAscii() const { + int j = 0; + for (int i = 0; i < size_s(); ++i, ++j) + if (!at(i).isAscii()) ++j; + return j; +} + + +const char * PIString::data() const { + data_.clear(); + uint wc; + uchar tc; + //printf("PIString::data %d\n", size_s()); + for (int i = 0, j = 0; i < size_s(); ++i) { + wc = uint(at(i).toInt()); + //printf("__%d_%d\n", i, wc); + while (tc = wc & 0xFF, tc) { + data_.push_back(uchar(tc)); ++j; + wc >>= 8; + //printf("____%d\n", wc); + } + /*if (at(i).isAscii()) + data_.push_back(uchar(at(i).toAscii())); + else { + data_.push_back((at(i).toCharPtr()[0])); ++j; + data_.push_back((at(i).toCharPtr()[1])); + }*/ + } + data_.push_back(uchar('\0')); + return (const char * )data_.data(); +} + + +string PIString::convertToStd() const { + string s; + uint wc; + uchar tc; + if (size() > 0) { + for (int i = 0; i < length(); ++i) { + wc = uint(at(i).toInt()); + while (tc = wc & 0xFF, tc) { + s.push_back(char(tc)); + wc >>= 8; + } + /*if (at(i).isAscii()) + s.push_back(at(i).toAscii()); + else { + s.push_back(at(i).toCharPtr()[0]); + s.push_back(at(i).toCharPtr()[1]); + }*/ + } + } + return s; +} + + +char PIString::toChar() const { + PIString s(toNativeDecimalPoints()); + char v; + sscanf(s.data(), "%c", &v); + return v; +} + +/* +short PIString::toShort() const { + PIString s(trimmed().toLowerCase().toNativeDecimalPoints()); + short v; + if (s.left(2) == "0x") {sscanf(s.data(), "%hx", &v); return v;} + if (s.left(1) == "0") {sscanf(s.data(), "%ho", &v); return v;} + sscanf(s.data(), "%hd", &v); + return v; +} + + +int PIString::toInt() const { + PIString s(trimmed().toLowerCase().toNativeDecimalPoints()); + int v; + if (s.left(2) == "0x") {sscanf(s.data(), "%x", &v); return v;} + if (s.left(1) == "0") {sscanf(s.data(), "%o", &v); return v;} + sscanf(s.data(), "%d", &v); + return v; +} + + +long PIString::toLong() const { + PIString s(trimmed().toLowerCase().toNativeDecimalPoints()); + long v; + if (s.left(2) == "0x") {sscanf(s.data(), "%lx", &v); return v;} + if (s.left(1) == "0") {sscanf(s.data(), "%lo", &v); return v;} + sscanf(s.data(), "%ld", &v); + return v; +} + + +llong PIString::toLLong() const { + PIString s(trimmed().toLowerCase().toNativeDecimalPoints()); + llong v; + if (s.left(2) == "0x") {sscanf(s.data(), "%llx", &v); return v;} + if (s.left(1) == "0") {sscanf(s.data(), "%llo", &v); return v;} + sscanf(s.data(), "%lld", &v); + return v; +} +*/ + +PIString & PIString::setReadableSize(llong bytes) { + clear(); + if (bytes < 1024) {*this += (PIString::fromNumber(bytes) + " B"); return *this;} + double fres = bytes / 1024.; + llong res = bytes / 1024; + fres -= res; + if (res < 1024) {*this += (PIString::fromNumber(res) + "." + PIString::fromNumber(llong(fres * 10)).left(1) + " kB"); return *this;} + fres = res / 1024.; + res /= 1024; + fres -= res; + if (res < 1024) {*this += (PIString::fromNumber(res) + "." + PIString::fromNumber(llong(fres * 10)).left(1) + " MB"); return *this;} + fres = res / 1024.; + res /= 1024; + fres -= res; + if (res < 1024) {*this += (PIString::fromNumber(res) + "." + PIString::fromNumber(llong(fres * 10)).left(1) + " GB"); return *this;} + fres = res / 1024.; + res /= 1024; + fres -= res; + if (res < 1024) {*this += (PIString::fromNumber(res) + "." + PIString::fromNumber(llong(fres * 10)).left(1) + " TB"); return *this;} + fres = res / 1024.; + res /= 1024; + fres -= res; + *this += (PIString::fromNumber(res) + "." + PIString::fromNumber(llong(fres * 10)).left(1) + " PB"); + return *this; +} + + +inline char chrUpr(char c) { + if (c >= 'a' && c <= 'z') return c + 'A' - 'a'; + //if (c >= 'а' && c <= 'Ñ') return c + 'Ð' - 'а'; + return c; +} + + +inline char chrLwr(char c) { + if (c >= 'A' && c <= 'Z') return c + 'a' - 'A'; + //if (c >= 'Ð' && c <= 'Я') return c + 'а' - 'Ð'; + return c; +} + + + +PIStringList& PIStringList::removeDuplicates() { + PIStringList l; + PIString s; + bool ae; + for (int i = 0; i < size_s(); ++i) { + ae = false; + s = at(i); + for (int j = 0; j < l.size_s(); ++j) { + if (s != l[j]) continue; + ae = true; break; + } + if (!ae) { + l << s; + continue; + } + remove(i); + --i; + } + return *this; +} diff --git a/_oldpip/pip_0.4.0_r5/pistring.h b/_oldpip/pip_0.4.0_r5/pistring.h new file mode 100644 index 0000000..2fce77c --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/pistring.h @@ -0,0 +1,901 @@ +/*! \file pistring.h + * \brief String + * + * This file declare string and string list classes +*/ +/* + PIP - Platform Independent Primitives + String + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +#ifndef PISTRING_H +#define PISTRING_H + +#include "pibytearray.h" +#include "pichar.h" +#include "math.h" + +class PIStringList; + +class PIP_EXPORT PIString: public PIDeque +{ +public: + //! Contructs an empty string + PIString(): PIDeque() {/*reserve(256); */piMonitor.strings++; piMonitor.containers--;} + + //inline PIString & operator +=(const char c) {push_back(c); return *this;} + PIString & operator +=(const PIChar & c) {push_back(c); return *this;} + PIString & operator +=(const char * str); + PIString & operator +=(const wchar_t * str); + PIString & operator +=(const string & str) {appendFromChars(str.c_str(), str.length()); return *this;} + PIString & operator +=(const PIByteArray & ba) {appendFromChars((const char * )ba.data(), ba.size_s()); return *this;} + PIString & operator +=(const PIString & str); +#ifdef HAS_LOCALE + PIString & operator +=(const wstring & str); +#endif + + //PIString(const char c) {*this += c;} + PIString(const PIString & o): PIDeque() {/*reserve(256); */piMonitor.strings++; piMonitor.containers--; *this += o;} + + + //! Contructs string with single symbol "c" + PIString(const PIChar & c): PIDeque() {/*reserve(256); */piMonitor.strings++; piMonitor.containers--; *this += c;} + PIString(const char c): PIDeque() {/*reserve(256); */piMonitor.strings++; piMonitor.containers--; *this += PIChar(c);} + + /*! \brief Contructs string from c-string "str" + * \details "str" should be null-terminated\n + * Example: \snippet pistring.cpp PIString(char * ) */ + PIString(const char * str): PIDeque() {/*reserve(256); */piMonitor.strings++; piMonitor.containers--; *this += str;} + + /*! \brief Contructs string from \c wchar_t c-string "str" + * \details "str" should be null-terminated\n + * Example: \snippet pistring.cpp PIString(wchar_t * ) */ + PIString(const wchar_t * str): PIDeque() {/*reserve(256); */piMonitor.strings++; piMonitor.containers--; *this += str;} + + //! Contructs string from std::string "str" + PIString(const string & str): PIDeque() {/*reserve(256); */piMonitor.strings++; piMonitor.containers--; *this += str;} + + #ifdef HAS_LOCALE + PIString(const wstring & str): PIDeque() {/*reserve(256); */piMonitor.strings++; piMonitor.containers--; *this += str;} +#endif + + //! Contructs string from byte array "ba" + PIString(const PIByteArray & ba): PIDeque() {/*reserve(256); */piMonitor.strings++; piMonitor.containers--; *this += ba;} + + //! \brief Contructs string from "len" characters of buffer "str" + PIString(const PIChar * str, const int len): PIDeque(str, size_t(len)) {/*reserve(256); */piMonitor.strings++; piMonitor.containers--;} + + /*! \brief Contructs string from "len" characters of buffer "str" + * \details Example: \snippet pistring.cpp PIString(char * , int) */ + PIString(const char * str, const int len): PIDeque() {/*reserve(256); */piMonitor.strings++; piMonitor.containers--; *this += string(str, len);} + + /*! \brief Contructs string as sequence of characters "c" of buffer with length "len" + * \details Example: \snippet pistring.cpp PIString(int, char) */ + PIString(const int len, const char c): PIDeque() {/*reserve(256); */piMonitor.strings++; piMonitor.containers--; for (int i = 0; i < len; ++i) push_back(c);} + + /*! \brief Contructs string as sequence of symbols "c" of buffer with length "len" + * \details Example: \snippet pistring.cpp PIString(int, PIChar) */ + PIString(const int len, const PIChar & c): PIDeque() {/*reserve(256); */piMonitor.strings++; piMonitor.containers--; for (int i = 0; i < len; ++i) push_back(c);} + + + PIString(const short & value): PIDeque() {/*reserve(256); */piMonitor.strings++; piMonitor.containers--; *this = fromNumber(value);} + PIString(const ushort & value): PIDeque() {/*reserve(256); */piMonitor.strings++; piMonitor.containers--; *this = fromNumber(value);} + PIString(const int & value): PIDeque() {/*reserve(256); */piMonitor.strings++; piMonitor.containers--; *this = fromNumber(value);} + PIString(const uint & value): PIDeque() {/*reserve(256); */piMonitor.strings++; piMonitor.containers--; *this = fromNumber(value);} + PIString(const long & value): PIDeque() {/*reserve(256); */piMonitor.strings++; piMonitor.containers--; *this = fromNumber(value);} + PIString(const ulong & value): PIDeque() {/*reserve(256); */piMonitor.strings++; piMonitor.containers--; *this = fromNumber(value);} + PIString(const llong & value): PIDeque() {/*reserve(256); */piMonitor.strings++; piMonitor.containers--; *this = fromNumber(value);} + PIString(const ullong & value): PIDeque() {/*reserve(256); */piMonitor.strings++; piMonitor.containers--; *this = fromNumber(value);} + PIString(const float & value): PIDeque() {/*reserve(256); */piMonitor.strings++; piMonitor.containers--; *this = fromNumber(value);} + PIString(const double & value): PIDeque() {/*reserve(256); */piMonitor.strings++; piMonitor.containers--; *this = fromNumber(value);} + + + //~PIString() {piMonitor.strings--; piMonitor.containers++;} + + + PIString & operator =(const PIString & o) {clear(); *this += o; return *this;} + + /*! \brief Return c-string representation of string + * \details Converts content of string to c-string and return + * pointer to first char. This buffer is valid until new convertion + * or execution \a data() or \a toByteArray().\n + * Example: \snippet pistring.cpp PIString::char* */ + operator const char*() {return data();} + + //! Return std::string representation of string + operator const string() {if (size() == 0) return string(); string s; for (int i = 0; i < length(); ++i) s.push_back(at(i).toAscii()); return s;} + + //! Return symbol at index "pos" + PIChar operator [](const int pos) const {return at(pos);} + + //! Return reference to symbol at index "pos" + PIChar & operator [](const int pos) {return at(pos);} + + //! Compare operator + bool operator ==(const PIString & str) const; + + //! Compare operator + bool operator ==(const PIChar c) const {return *this == PIString(c);} + //inline bool operator ==(const char c) const {return *this == PIString(c);} + + //! Compare operator + bool operator ==(const char * str) const {return *this == PIString(str);} + + //! Compare operator + bool operator ==(const string & str) const {return *this == PIString(str);} + + + //! Compare operator + bool operator !=(const PIString & str) const; + + //! Compare operator + bool operator !=(const PIChar c) const {return *this != PIString(c);} + //inline bool operator !=(const char c) const {return *this != PIString(c);} + + //! Compare operator + bool operator !=(const char * str) const {return *this != PIString(str);} + + //! Compare operator + bool operator !=(const string & str) const {return *this != PIString(str);} + + + //! Compare operator + bool operator <(const PIString & str) const; + + //! Compare operator + bool operator <(const PIChar c) const {return *this < PIString(c);} + //inline bool operator <(const char c) const {return *this < PIString(c);} + + //! Compare operator + bool operator <(const char * str) const {return *this < PIString(str);} + + //! Compare operator + bool operator <(const string & str) const {return *this < PIString(str);} + + + //! Compare operator + bool operator >(const PIString & str) const; + + //! Compare operator + bool operator >(const PIChar c) const {return *this > PIString(c);} + //inline bool operator >(const char c) const {return *this > PIString(c);} + + //! Compare operator + bool operator >(const char * str) const {return *this > PIString(str);} + + //! Compare operator + bool operator >(const string & str) const {return *this > PIString(str);} + + + //! Compare operator + bool operator <=(const PIString & str) const {return !(*this > str);} + + //! Compare operator + bool operator <=(const PIChar c) const {return *this <= PIString(c);} + //inline bool operator <=(const char c) const {return *this <= PIString(c);} + + //! Compare operator + bool operator <=(const char * str) const {return *this <= PIString(str);} + + //! Compare operator + bool operator <=(const string & str) const {return *this <= PIString(str);} + + + //! Compare operator + bool operator >=(const PIString & str) const {return !(*this < str);} + + //! Compare operator + bool operator >=(const PIChar c) const {return *this >= PIString(c);} + //inline bool operator >=(const char c) const {return *this >= PIString(c);} + + //! Compare operator + bool operator >=(const char * str) const {return *this >= PIString(str);} + + //! Compare operator + bool operator >=(const string & str) const {return *this >= PIString(str);} + + + operator short() const {return toShort();} + operator ushort() const {return toUShort();} + operator int() const {return toInt();} + operator uint() const {return toUInt();} + operator long() const {return toLong();} + operator ulong() const {return toULong();} + operator llong() const {return toLLong();} + operator ullong() const {return toULLong();} + operator float() const {return toFloat();} + operator double() const {return toDouble();} + + + /*! \brief Append string "str" at the end of string + * \details Example: \snippet pistring.cpp PIString::<<(PIString) */ + PIString & operator <<(const PIString & str) {*this += str; return *this;} + //inline PIString & operator <<(const char c) {*this += c; return *this;} + + /*! \brief Append symbol "c" at the end of string + * \details Example: \snippet pistring.cpp PIString::<<(PIChar) */ + PIString & operator <<(const PIChar & c) {*this += c; return *this;} + + /*! \brief Append c-string "str" at the end of string + * \details Example: \snippet pistring.cpp PIString::<<(char * ) */ + PIString & operator <<(const char * str) {*this += str; return *this;} + + /*! \brief Append \c wchar_t c-string "str" at the end of string + * \details Example: \snippet pistring.cpp PIString::<<(wchar_t * ) */ + PIString & operator <<(const wchar_t * str) {*this += str; return *this;} + + //! Append std::string "str" at the end of string + PIString & operator <<(const string & str) {*this += str; return *this;} + + /*! \brief Append string representation of "num" at the end of string + * \details Example: \snippet pistring.cpp PIString::<<(int) */ + PIString & operator <<(const int & num) {*this += PIString::fromNumber(num); return *this;} + PIString & operator <<(const uint & num) {*this += PIString::fromNumber(num); return *this;} + + /*! \brief Append string representation of "num" at the end of string + * \details Example: \snippet pistring.cpp PIString::<<(int) */ + PIString & operator <<(const short & num) {*this += PIString::fromNumber(num); return *this;} + PIString & operator <<(const ushort & num) {*this += PIString::fromNumber(num); return *this;} + + /*! \brief Append string representation of "num" at the end of string + * \details Example: \snippet pistring.cpp PIString::<<(int) */ + PIString & operator <<(const long & num) {*this += PIString::fromNumber(num); return *this;} + PIString & operator <<(const ulong & num) {*this += PIString::fromNumber(num); return *this;} + + PIString & operator <<(const llong & num) {*this += PIString::fromNumber(num); return *this;} + PIString & operator <<(const ullong & num) {*this += PIString::fromNumber(num); return *this;} + + /*! \brief Append string representation of "num" at the end of string + * \details Example: \snippet pistring.cpp PIString::<<(int) */ + PIString & operator <<(const float & num) {*this += PIString::fromNumber(num); return *this;} + + /*! \brief Append string representation of "num" at the end of string + * \details Example: \snippet pistring.cpp PIString::<<(int) */ + PIString & operator <<(const double & num) {*this += PIString::fromNumber(num); return *this;} + + + //! \brief Insert string "str" at the begin of string + PIString & prepend(const PIString & str) {insert(0, str); return *this;} + + //! \brief Insert string "str" at the end of string + PIString & append(const PIString & str) {*this += str; return *this;} + + + /*! \brief Return part of string from symbol at index "start" and maximum length "len" + * \details All variants demonstrated in example: \snippet pistring.cpp PIString::mid + * \sa \a left(), \a right() */ + PIString mid(const int start, const int len = -1) const; + + /*! \brief Return part of string from left and maximum length "len" + * \details Example: \snippet pistring.cpp PIString::left + * \sa \a mid(), \a right() */ + PIString left(const int len) const {return len <= 0 ? PIString() : mid(0, len);} + + /*! \brief Return part of string from right and maximum length "len" + * \details Example: \snippet pistring.cpp PIString::right + * \sa \a mid(), \a left() */ + PIString right(const int len) const {return len <= 0 ? PIString() : mid(size() - len, len);} + + /*! \brief Remove part of string from symbol as index "start" and maximum length "len" + * and return this string + * \details All variants demonstrated in example: \snippet pistring.cpp PIString::cutMid + * \sa \a cutLeft(), \a cutRight() */ + PIString & cutMid(const int start, const int len); + + /*! \brief Remove part of string from left and maximum length "len" and return this string + * \details Example: \snippet pistring.cpp PIString::cutLeft + * \sa \a cutMid(), \a cutRight() */ + PIString & cutLeft(const int len) {return len <= 0 ? *this : cutMid(0, len);} + + /*! \brief Remove part of string from right and maximum length "len" and return this string + * \details Example: \snippet pistring.cpp PIString::cutRight + * \sa \a cutMid(), \a cutLeft() */ + PIString & cutRight(const int len) {return len <= 0 ? *this : cutMid(size() - len, len);} + + /*! \brief Remove spaces at the start and at the end of string and return this string + * \details Example: \snippet pistring.cpp PIString::trim + * \sa \a trimmed() */ + PIString & trim(); + + /*! \brief Return copy of this string without spaces at the start and at the end + * \details Example: \snippet pistring.cpp PIString::trimmed + * \sa \a trim() */ + PIString trimmed() const; + + /*! \brief Replace part of string from index "from" and maximum length "len" + * with string "with" and return this string + * \details Example: \snippet pistring.cpp PIString::replace_0 + * \sa \a replaced(), \a replaceAll() */ + PIString & replace(const int from, const int count, const PIString & with); + + /*! \brief Replace part copy of this string from index "from" and maximum length "len" + * with string "with" and return copied string + * \details Example: \snippet pistring.cpp PIString::replaced_0 + * \sa \a replace(), \a replaceAll() */ + PIString replaced(const int from, const int count, const PIString & with) const {PIString str(*this); str.replace(from, count, with); return str;} + + /*! \brief Replace first founded substring "what" with string "with" and return this string + * \details If "ok" is not null, it set to "true" if something was replaced\n + * Example: \snippet pistring.cpp PIString::replace_1 + * \sa \a replaced(), \a replaceAll() */ + PIString & replace(const PIString & what, const PIString & with, bool * ok = 0); + + /*! \brief Replace first founded substring "what" with string "with" and return copied string + * \details If "ok" is not null, it set to "true" if something was replaced\n + * Example: \snippet pistring.cpp PIString::replaced_1 + * \sa \a replaced(), \a replaceAll() */ + PIString replaced(const PIString & what, const PIString & with, bool * ok = 0) const {PIString str(*this); str.replace(what, with, ok); return str;} + + /*! \brief Replace all founded substrings "what" with strings "with" and return this string + * \details Example: \snippet pistring.cpp PIString::replaceAll + * \sa \a replace(), \a replaced() */ + PIString & replaceAll(const PIString & what, const PIString & with); + PIString replaceAll(const PIString & what, const PIString & with) const {PIString str(*this); str.replaceAll(what, with); return str;} + + /*! \brief Repeat content of string "times" times and return this string + * \details Example: \snippet pistring.cpp PIString::repeat */ + PIString & repeat(int times) {PIString ss(*this); times--; piForTimes (times) *this += ss; return *this;} + + /*! \brief Returns repeated "times" times string + * \details Example: \snippet pistring.cpp PIString::repeated */ + PIString repeated(int times) const {PIString ss(*this); return ss.repeat(times);} + + /*! \brief Insert symbol "c" after index "index" and return this string + * \details Example: \snippet pistring.cpp PIString::insert_0 */ + PIString & insert(const int index, const PIChar & c) {PIDeque::insert(index, c); return *this;} + + /*! \brief Insert symbol "c" after index "index" and return this string + * \details Example: \snippet pistring.cpp PIString::insert_1 */ + PIString & insert(const int index, const char & c) {return insert(index, PIChar(c));} + + /*! \brief Insert string "str" after index "index" and return this string + * \details Example: \snippet pistring.cpp PIString::insert_2 */ + PIString & insert(const int index, const PIString & str); + + /*! \brief Insert string "str" after index "index" and return this string + * \details Example: \snippet pistring.cpp PIString::insert_2 */ + PIString & insert(const int index, const char * c) {return insert(index, PIString(c));} + + /*! \brief Enlarge string to length "len" by addition sequence of symbols + * "c" at the end of string, and return this string + * \details Example: \snippet pistring.cpp PIString::expandRightTo + * \sa \a expandLeftTo() */ + PIString & expandRightTo(const int len, const PIChar & c) {if (len > length()) resize(len, c); return *this;} + + /*! \brief Enlarge string to length "len" by addition sequence of symbols + * "c" at the beginning of string, and return this string + * \details Example: \snippet pistring.cpp PIString::expandLeftTo + * \sa \a expandRightTo() */ + PIString & expandLeftTo(const int len, const PIChar & c) {if (len > length()) insert(0, PIString(len - length(), c)); return *this;} + + /*! \brief Reverse string and return this string + * \details Example: \snippet pistring.cpp PIString::reverse + * \sa \a reversed() */ + PIString & reverse() {PIString str(*this); clear(); piForeachR (const PIChar & c, str) push_back(c); return *this;} + + /*! \brief Reverse copy of this string and return it + * \details Example: \snippet pistring.cpp PIString::reversed + * \sa \a reverse() */ + PIString reversed() const {PIString str(*this); str.reverse(); return str;} + + + /*! \brief Take a part of string from symbol at index "start" and maximum length "len" and return it + * \details Example: \snippet pistring.cpp PIString::takeMid + * \sa \a takeLeft, \a takeRight() */ + PIString takeMid(const int start, const int len = -1) {PIString ret(mid(start, len)); cutMid(start, len); return ret;} + + /*! \brief Take a part from the begin of string with maximum length "len" and return it + * \details Example: \snippet pistring.cpp PIString::takeLeft + * \sa \a takeMid(), \a takeRight() */ + PIString takeLeft(const int len) {PIString ret(left(len)); cutLeft(len); return ret;} + + /*! \brief Take a part from the end of string with maximum length "len" and return it + * \details Example: \snippet pistring.cpp PIString::takeRight + * \sa \a takeMid(), \a takeLeft() */ + PIString takeRight(const int len) {PIString ret(right(len)); cutRight(len); return ret;} + + /*! \brief Take a symbol from the begin of this string and return it + * \details Example: \snippet pistring.cpp PIString::takeSymbol + * \sa \a takeWord(), \a takeCWord(), \a takeLine(), \a takeNumber(), \a takeRange() */ + PIString takeSymbol(); + + /*! \brief Take a word from the begin of this string and return it + * \details Example: \snippet pistring.cpp PIString::takeWord + * \sa \a takeSymbol(), \a takeCWord(), \a takeLine(), \a takeNumber(), \a takeRange() */ + PIString takeWord(); + + /*! \brief Take a word with letters, numbers and '_' symbols from the + * begin of this string and return it + * \details Example: \snippet pistring.cpp PIString::takeCWord + * \sa \a takeSymbol(), \a takeWord(), \a takeLine(), \a takeNumber(), \a takeRange() */ + PIString takeCWord(); + + /*! \brief Take a line from the begin of this string and return it + * \details Example: \snippet pistring.cpp PIString::takeLine + * \sa \a takeSymbol(), \a takeWord(), \a takeCWord(), \a takeNumber(), \a takeRange() */ + PIString takeLine(); + + /*! \brief Take a number with C-format from the begin of this string and return it + * \details Example: \snippet pistring.cpp PIString::takeNumber + * \sa \a takeSymbol(), \a takeWord(), \a takeCWord(), \a takeLine(), \a takeRange() */ + PIString takeNumber(); + + /*! \brief Take a range between "start" and "end" symbols from the begin of this + * string and return it. + * \details "Shield" symbol prevent analysis of the next symbol. + * Example: \snippet pistring.cpp PIString::takeRange + * \sa \a takeSymbol(), \a takeWord(), \a takeLine(), \a takeNumber() */ + PIString takeRange(const PIChar & start, const PIChar & end, const PIChar & shield = '\\'); + + //const char * data() {return convertToStd().c_str();} + + + /*! \brief Return real bytes count of this string + * \details It`s equivalent length of char sequence + * returned by function \a data() \n + * Example: \snippet pistring.cpp PIString::lengthAscii + * \sa \a data() */ + int lengthAscii() const; + + /*! \brief Return \c char * representation of this string + * \details This function fill buffer by sequence + * of chars. Minimum length of this buffer is count + * of symbols. Returned \c char * is valid until next + * execution of this function.\n + * Example: \snippet pistring.cpp PIString::data + * \sa \a lengthAscii() */ + const char * data() const; + + //! \brief Return \c std::string representation of this string + std::string stdString() const {return convertToStd();} +#ifdef HAS_LOCALE + wstring stdWString() const {return convertToWString();} +#endif + + //! \brief Return \a PIByteArray contains \a data() of this string + PIByteArray toByteArray() const {const char * d = data(); return PIByteArray(d, lengthAscii());} + + /*! \brief Split string with delimiter "delim" to \a PIStringList and return it + * \details Example: \snippet pistring.cpp PIString::split */ + PIStringList split(const PIString & delim) const; + + + //! \brief Convert each symbol in copyed string to upper case and return it + PIString toUpperCase() const; + + //! \brief Convert each symbol in copyed string to lower case and return it + PIString toLowerCase() const; +#ifdef HAS_LOCALE + PIString toNativeDecimalPoints() const {PIString s(*this); if (currentLocale == 0) return s; return s.replaceAll(".", currentLocale->decimal_point).replaceAll(",", currentLocale->decimal_point);} +#else + PIString toNativeDecimalPoints() const {return PIString(*this).replaceAll(",", ".");} +#endif + + + //! \brief Search substring "str" from symbol at index "start" and return first occur position + //! \details Example: \snippet pistring.cpp PIString::find + int find(const char str, const int start = 0) const; + + //! \brief Search substring "str" from symbol at index "start" and return first occur position + //! \details Example: \snippet pistring.cpp PIString::find + int find(const PIString str, const int start = 0) const; + + //! \brief Search substring "str" from symbol at index "start" and return first occur position + //! \details Example: \snippet pistring.cpp PIString::find + int find(const char * str, const int start = 0) const {return find(PIString(str), start);} + + //! \brief Search substring "str" from symbol at index "start" and return first occur position + //! \details Example: \snippet pistring.cpp PIString::find + int find(const string str, const int start = 0) const {return find(PIString(str), start);} + + //! \brief Search substring "str" from symbol at index "start" and return last occur position + //! \details Example: \snippet pistring.cpp PIString::findLast + int findLast(const char str, const int start = 0) const; + + //! \brief Search substring "str" from symbol at index "start" and return last occur position + //! \details Example: \snippet pistring.cpp PIString::findLast + int findLast(const PIString str, const int start = 0) const; + + //! \brief Search substring "str" from symbol at index "start" and return last occur position + //! \details Example: \snippet pistring.cpp PIString::findLast + int findLast(const char * str, const int start = 0) const {return findLast(PIString(str), start);} + + //! \brief Search substring "str" from symbol at index "start" and return last occur position + //! \details Example: \snippet pistring.cpp PIString::findLast + int findLast(const string str, const int start = 0) const {return findLast(PIString(str), start);} + + //! \brief Search word "word" from symbol at index "start" and return first occur position. + //! \details Example: \snippet pistring.cpp PIString::findWord + int findWord(const PIString & word, const int start = 0) const; + + //! \brief Search C-style word "word" from symbol at index "start" and return first occur position. + //! \details Example: \snippet pistring.cpp PIString::findCWord + int findCWord(const PIString & word, const int start = 0) const; + + //! \brief Return if string starts with "str" + bool startsWith(const PIString & str) const; + + //! \brief Return if string ends with "str" + bool endsWith(const PIString & str) const; + + //! \brief Return symbols length of string + int length() const {return size();} + + //! \brief Return \c true if string is empty, i.e. length = 0 + bool isEmpty() const {return (size() == 0 || *this == "");} + + + //! \brief Return \c true if string equal "true", "yes", "on" or positive not null numeric value + bool toBool() const {PIString s(*this); if (atof(s.toNativeDecimalPoints().data()) > 0. || s.trimmed().toLowerCase() == "true" || s.trimmed().toLowerCase() == "yes" || s.trimmed().toLowerCase() == "on") return true; return false;} + + //! \brief Return \c char numeric value of string + char toChar() const; + + //! \brief Return \c short numeric value of string in base "base" + //! \details Example: \snippet pistring.cpp PIString::toNumber + short toShort(int base = -1, bool * ok = 0) const {return short(toNumberBase(*this, base, ok));} + + //! \brief Return \c ushort numeric value of string in base "base" + //! \details Example: \snippet pistring.cpp PIString::toNumber + ushort toUShort(int base = -1, bool * ok = 0) const {return ushort(toNumberBase(*this, base, ok));} + + //! \brief Return \c int numeric value of string in base "base" + //! \details Example: \snippet pistring.cpp PIString::toNumber + int toInt(int base = -1, bool * ok = 0) const {return int(toNumberBase(*this, base, ok));} + + //! \brief Return \c uint numeric value of string in base "base" + //! \details Example: \snippet pistring.cpp PIString::toNumber + uint toUInt(int base = -1, bool * ok = 0) const {return uint(toNumberBase(*this, base, ok));} + + //! \brief Return \c long numeric value of string in base "base" + //! \details Example: \snippet pistring.cpp PIString::toNumber + long toLong(int base = -1, bool * ok = 0) const {return long(toNumberBase(*this, base, ok));} + + //! \brief Return \c ulong numeric value of string in base "base" + //! \details Example: \snippet pistring.cpp PIString::toNumber + ulong toULong(int base = -1, bool * ok = 0) const {return ulong(toNumberBase(*this, base, ok));} + + //! \brief Return \c llong numeric value of string in base "base" + //! \details Example: \snippet pistring.cpp PIString::toNumber + llong toLLong(int base = -1, bool * ok = 0) const {return toNumberBase(*this, base, ok);} + + //! \brief Return \c ullong numeric value of string in base "base" + //! \details Example: \snippet pistring.cpp PIString::toNumber + ullong toULLong(int base = -1, bool * ok = 0) const {return ullong(toNumberBase(*this, base, ok));} + + //! \brief Return \c float numeric value of string + //! \details Example: \snippet pistring.cpp PIString::toFloat + float toFloat() const {return (float)atof(toNativeDecimalPoints().data());} + + //! \brief Return \c double numeric value of string + //! \details Example: \snippet pistring.cpp PIString::toFloat + double toDouble() const {return atof(toNativeDecimalPoints().data());} + + //! \brief Return \c ldouble numeric value of string + //! \details Example: \snippet pistring.cpp PIString::toFloat + ldouble toLDouble() const {return atof(toNativeDecimalPoints().data());} + + //inline PIString & setNumber(const char value) {clear(); *this += itos(value); return *this;} + + //! \brief Set string content to numeric representation of "value" in base "base" + //! \details Example: \snippet pistring.cpp PIString::setNumber + PIString & setNumber(const short value, int base = 10, bool * ok = 0) {clear(); *this += PIString::fromNumber(value, base, ok); return *this;} + + //! \brief Set string content to numeric representation of "value" in base "base" + //! \details Example: \snippet pistring.cpp PIString::setNumber + PIString & setNumber(const ushort value, int base = 10, bool * ok = 0) {clear(); *this += PIString::fromNumber(value, base, ok); return *this;} + + //! \brief Set string content to numeric representation of "value" in base "base" + //! \details Example: \snippet pistring.cpp PIString::setNumber + PIString & setNumber(const int value, int base = 10, bool * ok = 0) {clear(); *this += PIString::fromNumber(value, base, ok); return *this;} + + //! \brief Set string content to numeric representation of "value" in base "base" + //! \details Example: \snippet pistring.cpp PIString::setNumber + PIString & setNumber(const uint value, int base = 10, bool * ok = 0) {clear(); *this += PIString::fromNumber(value, base, ok); return *this;} + + //! \brief Set string content to numeric representation of "value" in base "base" + //! \details Example: \snippet pistring.cpp PIString::setNumber + PIString & setNumber(const long value, int base = 10, bool * ok = 0) {clear(); *this += PIString::fromNumber(value, base, ok); return *this;} + + //! \brief Set string content to numeric representation of "value" in base "base" + //! \details Example: \snippet pistring.cpp PIString::setNumber + PIString & setNumber(const ulong value, int base = 10, bool * ok = 0) {clear(); *this += PIString::fromNumber(value, base, ok); return *this;} + + //! \brief Set string content to numeric representation of "value" in base "base" + //! \details Example: \snippet pistring.cpp PIString::setNumber + PIString & setNumber(const llong & value, int base = 10, bool * ok = 0) {clear(); *this += PIString::fromNumber(value, base, ok); return *this;} + + //! \brief Set string content to numeric representation of "value" in base "base" + //! \details Example: \snippet pistring.cpp PIString::setNumber + PIString & setNumber(const ullong & value, int base = 10, bool * ok = 0) {clear(); *this += PIString::fromNumber(value, base, ok); return *this;} + + //! \brief Set string content to numeric representation of "value" + //! \details Example: \snippet pistring.cpp PIString::setFloat + PIString & setNumber(const float value) {clear(); *this += ftos(value); return *this;} + + //! \brief Set string content to numeric representation of "value" + //! \details Example: \snippet pistring.cpp PIString::setFloat + PIString & setNumber(const double & value) {clear(); *this += dtos(value); return *this;} + + //! \brief Set string content to numeric representation of "value" + //! \details Example: \snippet pistring.cpp PIString::setFloat + PIString & setNumber(const ldouble & value) {clear(); *this += dtos(value); return *this;} + + //! \brief Set string content to human readable size in B/kB/MB/GB/TB + //! \details Example: \snippet pistring.cpp PIString::setReadableSize + PIString & setReadableSize(llong bytes); + + //inline static PIString fromNumber(const char value) {return PIString(itos(value));} + + //! \brief Return string contains numeric representation of "value" in base "base" + //! \details Example: \snippet pistring.cpp PIString::fromNumber + static PIString fromNumber(const short value, int base = 10, bool * ok = 0) {return fromNumberBaseS(llong(value), base, ok);} + + //! \brief Return string contains numeric representation of "value" in base "base" + //! \details Example: \snippet pistring.cpp PIString::fromNumber + static PIString fromNumber(const ushort value, int base = 10, bool * ok = 0) {return fromNumberBaseU(ullong(value), base, ok);} + + //! \brief Return string contains numeric representation of "value" in base "base" + //! \details Example: \snippet pistring.cpp PIString::fromNumber + static PIString fromNumber(const int value, int base = 10, bool * ok = 0) {return fromNumberBaseS(llong(value), base, ok);} + + //! \brief Return string contains numeric representation of "value" in base "base" + //! \details Example: \snippet pistring.cpp PIString::fromNumber + static PIString fromNumber(const uint value, int base = 10, bool * ok = 0) {return fromNumberBaseU(ullong(value), base, ok);} + + //! \brief Return string contains numeric representation of "value" in base "base" + //! \details Example: \snippet pistring.cpp PIString::fromNumber + static PIString fromNumber(const long value, int base = 10, bool * ok = 0) {return fromNumberBaseS(llong(value), base, ok);} + + //! \brief Return string contains numeric representation of "value" in base "base" + //! \details Example: \snippet pistring.cpp PIString::fromNumber + static PIString fromNumber(const ulong value, int base = 10, bool * ok = 0) {return fromNumberBaseU(ullong(value), base, ok);} + + //! \brief Return string contains numeric representation of "value" in base "base" + //! \details Example: \snippet pistring.cpp PIString::fromNumber + static PIString fromNumber(const llong & value, int base = 10, bool * ok = 0) {return fromNumberBaseS(value, base, ok);} + + //! \brief Return string contains numeric representation of "value" in base "base" + //! \details Example: \snippet pistring.cpp PIString::fromNumber + static PIString fromNumber(const ullong & value, int base = 10, bool * ok = 0) {return fromNumberBaseU(value, base, ok);} + + //! \brief Return string contains numeric representation of "value" + //! \details Example: \snippet pistring.cpp PIString::fromFloat + static PIString fromNumber(const float value) {return PIString(ftos(value));} + + //! \brief Return string contains numeric representation of "value" + //! \details Example: \snippet pistring.cpp PIString::fromFloat + static PIString fromNumber(const double & value) {return PIString(dtos(value));} + + //! \brief Return string contains numeric representation of "value" + //! \details Example: \snippet pistring.cpp PIString::fromFloat + static PIString fromNumber(const ldouble & value) {return PIString(dtos(value));} + + //! \brief Return "true" or "false" + static PIString fromBool(const bool value) {return PIString(value ? "true" : "false");} + + //! \brief Return string contains human readable size in B/kB/MB/GB/TB + //! \details Example: \snippet pistring.cpp PIString::readableSize + static PIString readableSize(llong bytes) {PIString s; s.setReadableSize(bytes); return s;} + + PIString & removeAll(char v) {replaceAll(v, ""); return *this;} + PIString & removeAll(const PIString & v) {replaceAll(v, ""); return *this;} + +private: + static const char toBaseN[]; + static const int fromBaseN[]; + + static PIString fromNumberBaseS(const llong value, int base = 10, bool * ok = 0) { + if (value == 0) return PIString("0"); + if (base < 2 || base > 40) {if (ok != 0) *ok = false; return PIString();} + if (ok != 0) *ok = true; + if (base == 10) return itos(value); + PIString ret; + llong v = value < 0 ? -value : value, cn; + int b = base; + while (v >= llong(base)) { + cn = v % b; + v /= b; + //cout << int(cn) << ", " << int(v) << endl; + ret.push_front(PIChar(toBaseN[cn])); + } + if (v > 0) ret.push_front(PIChar(toBaseN[v])); + if (value < 0) ret.push_front('-'); + return ret; + } + static PIString fromNumberBaseU(const ullong value, int base = 10, bool * ok = 0) { + if (value == 0) return PIString("0"); + if (base < 2 || base > 40) {if (ok != 0) *ok = false; return PIString();} + if (ok != 0) *ok = true; + if (base == 10) return itos(value); + PIString ret; + ullong v = value, cn; + int b = base; + while (v >= ullong(base)) { + cn = v % b; + v /= b; + //cout << int(cn) << ", " << int(v) << endl; + ret.push_front(PIChar(toBaseN[cn])); + } + if (v > 0) ret.push_front(PIChar(toBaseN[v])); + return ret; + } + static llong toNumberBase(const PIString & value, int base = -1, bool * ok = 0) { + PIString v = value.trimmed(); + if (base < 0) { + int ind = v.find("0x"); + if (ind == 0 || ind == 1) {v.remove(ind, 2); base = 16;} + else base = 10; + } else + if (base < 2 || base > 40) {if (ok != 0) *ok = false; return 0;} + //v.reverse(); + if (ok != 0) *ok = true; + PIVector digits; + llong ret = 0, m = 1; + bool neg = false; + int cs; + for (int i = 0; i < v.size_s(); ++i) { + if (v[i] == PIChar('-')) {neg = !neg; continue;} + cs = fromBaseN[int(v[i].toAscii())]; + if (cs < 0 || cs >= base) break; + digits << cs; + } + for (int i = digits.size_s() - 1; i >= 0; --i) { + ret += digits[i] * m; + m *= base; + } + if (neg) ret = -ret; + /*piForeachC (PIChar & i, v) { + if (i == PIChar('-')) {ret = -ret; continue;} + cs = fromBaseN[int(i.toAscii())]; + cout << i << " = " << cs << endl; + if (cs < 0 || cs >= base) return ret; + ret += cs * m; + m *= base; + }*/ + return ret; + } + void appendFromChars(const char * c, int s); + string convertToStd() const; +#ifdef HAS_LOCALE + wstring convertToWString() const {wstring s; for (int i = 0; i < length(); ++i) s.push_back(at(i).toWChar()); return s;} +#endif + + mutable PIByteArray data_; + //string std_string; + //wstring std_wstring; + +}; + + +//! \relatesalso PIString \brief Output operator to std::ostream (cout) +inline std::ostream & operator <<(std::ostream & s, const PIString & v) {for (int i = 0; i < v.length(); ++i) s << v[i]; return s;} + +//! \relatesalso PIString \brief Input operator from std::istream (cin) +inline std::istream & operator >>(std::istream & s, PIString & v) {string ss; s >> ss; v << PIString(ss); return s;} + +//! \relatesalso PIString \relatesalso PICout \brief Output operator to PICout +inline PICout operator <<(PICout s, const PIString & v) {s.space(); s.quote(); s.setControl(0, true); for (int i = 0; i < v.length(); ++i) s << v[i]; s.restoreControl(); s.quote(); return s;} + + +//! \relatesalso PIString \relatesalso PIByteArray \brief Output operator to PIByteArray +inline PIByteArray & operator <<(PIByteArray & s, const PIString & v) {int l = v.lengthAscii(); s << l; if (l <= 0) return s; int os = s.size_s(); s.enlarge(l); memcpy(s.data(os), v.data(), l); return s;} + +//! \relatesalso PIString \relatesalso PIByteArray \brief Input operator from PIByteArray +inline PIByteArray & operator >>(PIByteArray & s, PIString & v) {if (s.size() < 4) {v.clear(); return s;} int l; s >> l; if (l <= 0) return s; v = PIString((const char * )s.data(), l); s.remove(0, l); return s;} + + +//! \relatesalso PIString \brief Return concatenated string +inline PIString operator +(const PIString & str, const PIString & f) {PIString s(str); s += f; return s;} + +//inline PIString operator +(const PIString & f, const char c) {PIString s(f); s.push_back(c); return s;} + +//! \relatesalso PIString \brief Return concatenated string +inline PIString operator +(const PIString & f, const char * str) {PIString s(f); s += str; return s;} + +//! \relatesalso PIString \brief Return concatenated string +inline PIString operator +(const PIString & f, const string & str) {PIString s(f); s += str; return s;} + +//inline PIString operator +(const char c, const PIString & f) {return PIString(c) + f;} + +//! \relatesalso PIString \brief Return concatenated string +inline PIString operator +(const char * str, const PIString & f) {return PIString(str) + f;} + +//! \relatesalso PIString \brief Return concatenated string +inline PIString operator +(const string & str, const PIString & f) {return PIString(str) + f;} + +inline char chrUpr(char c); +inline char chrLwr(char c); + + +/*!\brief Strings array class + * \details This class is based on \a PIVector and + * expand it functionality. */ +class PIP_EXPORT PIStringList: public PIDeque +{ +public: + + //! Contructs empty strings list + PIStringList() {;} + + //! Contructs strings list with one string "str" + PIStringList(const PIString & str) {push_back(str);} + + //! Contructs empty strings list with strings "s0" and "s1" + PIStringList(const PIString & s0, const PIString & s1) {push_back(s0); push_back(s1);} + + //! Contructs empty strings list with strings "s0", "s1" and "s2" + PIStringList(const PIString & s0, const PIString & s1, const PIString & s2) {push_back(s0); push_back(s1); push_back(s2);} + + //! Contructs empty strings list with strings "s0", "s1", "s2" and "s3" + PIStringList(const PIString & s0, const PIString & s1, const PIString & s2, const PIString & s3) {push_back(s0); push_back(s1); push_back(s2); push_back(s3);} + + PIStringList(const PIStringList & o): PIDeque() {resize(o.size()); for (uint i = 0; i < size(); ++i) (*this)[i] = o[i];} + + + //! \brief Join all strings in one with delimiter "delim" and return it + //! \details Example: \snippet pistring.cpp PIStringList::join + PIString join(const PIString & delim) const {PIString s; for (uint i = 0; i < size(); ++i) {s += at(i); if (i < size() - 1) s += delim;} return s;} + + //! \brief Remove all strings equal "value" and return this + //! \details Example: \snippet pistring.cpp PIStringList::removeStrings + PIStringList & removeStrings(const PIString & value) {for (uint i = 0; i < size(); ++i) {if (at(i) == value) {remove(i); --i;}} return *this;} + + PIStringList & remove(uint num) {PIDeque::remove(num); return *this;} + PIStringList & remove(uint num, uint count) {PIDeque::remove(num, count); return *this;} + + //! \brief Remove duplicated strings and return this + //! \details Example: \snippet pistring.cpp PIStringList::removeDuplicates + PIStringList & removeDuplicates(); + + //! \brief Trim all strings + //! \details Example: \snippet pistring.cpp PIStringList::trim + PIStringList & trim() {for (uint i = 0; i < size(); ++i) at(i).trim(); return *this;} + + //! Return sum of lengths of all strings + uint contentSize() {uint s = 0; for (uint i = 0; i < size(); ++i) s += at(i).size(); return s;} + + PIStringList & operator =(const PIStringList & o) {clear(); for (uint i = 0; i < o.size(); ++i) *this << o[i]; return *this;} + + PIStringList & operator <<(const PIString & str) {push_back(str); return *this;} + PIStringList & operator <<(const PIStringList & sl) {piForeachC (PIString & i, sl) push_back(i); return *this;} + //inline PIStringList & operator <<(const char c) {push_back(PIString(c)); return *this;} + PIStringList & operator <<(const char * str) {push_back(PIString(str)); return *this;} + PIStringList & operator <<(const string & str) {push_back(str); return *this;} + PIStringList & operator <<(const int & num) {push_back(PIString::fromNumber(num)); return *this;} + PIStringList & operator <<(const short & num) {push_back(PIString::fromNumber(num)); return *this;} + PIStringList & operator <<(const long & num) {push_back(PIString::fromNumber(num)); return *this;} + PIStringList & operator <<(const float & num) {push_back(PIString::fromNumber(num)); return *this;} + PIStringList & operator <<(const double & num) {push_back(PIString::fromNumber(num)); return *this;} + +}; + + +//! \relatesalso PIStringList \relatesalso PIByteArray \brief Output operator to PIByteArray +inline PIByteArray & operator <<(PIByteArray & s, const PIStringList & v) {s << v.size_s(); for (int i = 0; i < v.size_s(); ++i) s << v[i]; return s;} + +//! \relatesalso PIStringList \relatesalso PIByteArray \brief Input operator from PIByteArray +inline PIByteArray & operator >>(PIByteArray & s, PIStringList & v) {int sz; s >> sz; v.resize(sz); for (int i = 0; i < sz; ++i) s >> v[i]; return s;} + + +//! \relatesalso PIStringList \brief Output operator to std::ostream (cout) +inline std::ostream & operator <<(std::ostream & s, const PIStringList & v) {s << "{"; for (uint i = 0; i < v.size(); ++i) {s << '\"' << v[i] << '\"'; if (i < v.size() - 1) s << ", ";} s << "}"; return s;} + +//! \relatesalso PIStringList \relatesalso PICout \brief Output operator to PICout +inline PICout operator <<(PICout s, const PIStringList & v) {s.space(); s.setControl(0, true); s << "{"; for (uint i = 0; i < v.size(); ++i) {s << '\"' << v[i] << '\"'; if (i < v.size() - 1) s << ", ";} s << "}"; s.restoreControl(); return s;} + +#endif // PISTRING_H diff --git a/_oldpip/pip_0.4.0_r5/pisystemmonitor.cpp b/_oldpip/pip_0.4.0_r5/pisystemmonitor.cpp new file mode 100644 index 0000000..0f4d97d --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/pisystemmonitor.cpp @@ -0,0 +1,113 @@ +/* + PIP - Platform Independent Primitives + Process resource monitor + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +#include "pisystemmonitor.h" + + +PISystemMonitor::PISystemMonitor(): PIThread() { + pID_ = cycle = 0; + cpu_count = 1; +#ifndef WINDOWS +# ifdef QNX + page_size = 4096; +# else + page_size = getpagesize(); +# endif + cpu_count = sysconf(_SC_NPROCESSORS_ONLN); + if (cpu_count < 1) cpu_count = 1; +#endif +} + + +bool PISystemMonitor::startOnProcess(int pID) { + stop(); + pID_ = pID; +#ifndef WINDOWS + file.open("/proc/" + PIString::fromNumber(pID_) + "/stat", PIIODevice::ReadOnly); + filem.open("/proc/" + PIString::fromNumber(pID_) + "/statm", PIIODevice::ReadOnly); + if (!file.isOpened()) { + piCoutObj << "Can`t find process with ID = " << pID_ << "!"; + return false; + } + cycle = -1; +#endif + return start(25); +} + + +void PISystemMonitor::run() { +#ifndef WINDOWS + file.seekToBegin(); + PIString str(file.readAll(true)); + int si = str.find('(') + 1, fi = 0, cc = 1; + for (int i = si; i < str.size_s(); ++i) { + if (str[i] == '(') cc++; + if (str[i] == ')') cc--; + if (cc <= 0) { + fi = i; + break; + } + } + stat.exec_name = str.mid(si, fi - si); + str.cutMid(si - 1, fi - si + 3); + PIStringList sl = str.split(" "); + if (sl.size_s() < 18) return; + stat.ID = sl[0].toInt(); + stat.state = sl[1]; + stat.parent_ID = sl[2].toInt(); + stat.group_ID = sl[3].toInt(); + stat.session_ID = sl[4].toInt(); + if (cycle < 0) { + cpu_u_prev = cpu_u_cur = sl[12].toLLong(); + cpu_s_prev = cpu_s_cur = sl[13].toLLong(); + } + cycle++; + if (cycle >= 40) { + cpu_u_prev = cpu_u_cur; + cpu_s_prev = cpu_s_cur; + cpu_u_cur = sl[12].toLLong(); + cpu_s_cur = sl[13].toLLong(); + stat.cpu_load_system = cpu_s_cur - cpu_s_prev; + stat.cpu_load_user = cpu_u_cur - cpu_u_prev; + if (stat.cpu_load_system > 100) stat.cpu_load_system = 100; + if (stat.cpu_load_user > 100) stat.cpu_load_user = 100; + stat.cpu_load_system /= cpu_count; + stat.cpu_load_user /= cpu_count; + cycle = 0; + } + stat.priority = sl[16].toInt(); + stat.threads = sl[18].toInt(); + + filem.seekToBegin(); + str = filem.readAll(true); + sl = str.split(" "); + if (sl.size_s() < 5) return; + stat.virtual_memsize = sl[0].toLong() * page_size; + stat.resident_memsize = sl[1].toLong() * page_size; + stat.share_memsize = sl[2].toLong() * page_size; + stat.data_memsize = sl[5].toLong() * page_size; + stat.physical_memsize = stat.resident_memsize - stat.share_memsize; + + stat.physical_memsize_readable = PIString::readableSize(stat.physical_memsize); + stat.resident_memsize_readable = PIString::readableSize(stat.resident_memsize); + stat.share_memsize_readable = PIString::readableSize(stat.share_memsize); + stat.virtual_memsize_readable = PIString::readableSize(stat.virtual_memsize); + stat.data_memsize_readable = PIString::readableSize(stat.data_memsize); +#endif +} diff --git a/_oldpip/pip_0.4.0_r5/pisystemmonitor.h b/_oldpip/pip_0.4.0_r5/pisystemmonitor.h new file mode 100644 index 0000000..d74cd20 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/pisystemmonitor.h @@ -0,0 +1,70 @@ +/* + PIP - Platform Independent Primitives + Process resource monitor + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +#ifndef PISYSTEMMONITOR_H +#define PISYSTEMMONITOR_H + +#include "pithread.h" +#include "piprocess.h" + +class PIP_EXPORT PISystemMonitor: public PIThread +{ +public: + PISystemMonitor(); + + struct ProcessStats { + PIString exec_name; + PIString state; + int ID; + int parent_ID; + int group_ID; + int session_ID; + int priority; + int threads; + ulong physical_memsize; + ulong resident_memsize; + ulong share_memsize; + ulong virtual_memsize; + ulong data_memsize; + PIString physical_memsize_readable; + PIString resident_memsize_readable; + PIString share_memsize_readable; + PIString virtual_memsize_readable; + PIString data_memsize_readable; + float cpu_load_system; + float cpu_load_user; + }; + + bool startOnProcess(int pID); + bool startOnSelf() {return startOnProcess(PIProcess::currentPID());} + const ProcessStats & statistic() const {return stat;} + +private: + void run(); + + PIFile file, filem; + ProcessStats stat; + int pID_, page_size, cpu_count, cycle; +#ifndef WINDOWS + llong cpu_u_cur, cpu_u_prev, cpu_s_cur, cpu_s_prev; +#endif + +}; + +#endif // PISYSTEMMONITOR_H diff --git a/_oldpip/pip_0.4.0_r5/pisystemtests.cpp b/_oldpip/pip_0.4.0_r5/pisystemtests.cpp new file mode 100644 index 0000000..dcc1a8c --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/pisystemtests.cpp @@ -0,0 +1,41 @@ +/* + PIP - Platform Independent Primitives + System tests results (see system_test folder) + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +#include "pisystemtests.h" + + +namespace PISystemTests { + long time_resolution_ns = 1; + long time_elapsed_ns = 0; + long usleep_offset_us = 60; + + PISystemTestReader pisystestreader; + +}; + + +PISystemTests::PISystemTestReader::PISystemTestReader() { +#ifndef WINDOWS + PIConfig conf("/etc/pip.conf", PIIODevice::ReadOnly); + conf.setReopenEnabled(false); + time_resolution_ns = conf.getValue("time_resolution_ns", 1); + time_elapsed_ns = conf.getValue("time_elapsed_ns", 0); + usleep_offset_us = conf.getValue("usleep_offset_us", 60); +#endif +} diff --git a/_oldpip/pip_0.4.0_r5/pisystemtests.h b/_oldpip/pip_0.4.0_r5/pisystemtests.h new file mode 100644 index 0000000..ddf602d --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/pisystemtests.h @@ -0,0 +1,39 @@ +/* + PIP - Platform Independent Primitives + System tests results (see system_test folder) + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +#ifndef PISYSTEMTESTS_H +#define PISYSTEMTESTS_H + +#include "piconfig.h" + +namespace PISystemTests { + PIP_EXPORT extern long time_resolution_ns; + PIP_EXPORT extern long time_elapsed_ns; + PIP_EXPORT extern long usleep_offset_us; + + class PISystemTestReader { + public: + PISystemTestReader(); + }; + + extern PISystemTestReader pisystestreader; + +}; + +#endif // PISYSTEMTESTS_H diff --git a/_oldpip/pip_0.4.0_r5/pithread.cpp b/_oldpip/pip_0.4.0_r5/pithread.cpp new file mode 100644 index 0000000..fafe7d3 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/pithread.cpp @@ -0,0 +1,288 @@ +/* + PIP - Platform Independent Primitives + Thread + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +#include "pithread.h" +#include "pisystemtests.h" + + +/*! \class PIThread + * \brief Thread class + * \details This class allow you exec your code in separate thread. + * + * \section PIThread_sec0 Synopsis + * Multithreading allow you to write program which will be executed + * in several threads simultaneously. This trend allow you to use all + * cores of modern processors, but there are many dangers. + * + * This class provide virtual functions \a begin(), \a run() and \a end(), + * which describes start, execution and finish work of some process. + * These functions executes in \b separate thread. When you execute + * \a start(), %PIThread create separate system thread and sequentially + * executes function \a begin(), \a run() and \a end(). You can + * reimplement each function and write your own code to execute. + * Scheme of functions executing: +\code{.cpp} +begin(); +event started(); +while (isRunning()) { + run(); + ThreadFunc(); + msleep(timer_delay); +} +event stopped(); +end(); +\endcode + * Unlike from directly using "pthread" or some similar you doesn`t need + * to write your own main thread cycle and sleep at every cycle end. + * %PIThread make it for you, and your job is to set sleep value from + * contructor or when starting thread, and reimplement \a begin(), \a run() + * and \a end() functions. + * + * \section PIThread_sec1 Using without subclassing + * You can use %PIThread without subclassing by using "ThreadFunc" pointer + * that can be set from constructor or by overloaded function \a start(ThreadFunc func, int timer_delay). + * If "func" if not null this function will be executed as \a run(). ThreadFunc is any static + * function with format void func(void * data). "Data" is custom data set from constructor or + * with function \a setData(). \n Also you can connect to event \a started(), but + * in this case you should to white your thread main cycle, because this event raised only one time. + * + * \section PIThread_sec2 Locking + * %PIThread has inrternal mutex that can be locked and unlocked every \a run() if you set this flag + * with function \a needLockRun(bool). Also you can access to this mutex by functions \a lock(), \a unlock() + * and \a mutex(). Using this functions together with needLockRun(true) can guarantee one-thread access to + * some data. + * + */ + + +PIThread::PIThread(void * data, ThreadFunc func, bool startNow, int timer_delay): PIObject() { + piMonitor.threads++; + thread = 0; + data_ = data; + ret_func = func; + running = lockRun = false; + priority_ = piNormal; + timer = timer_delay; + if (startNow) start(timer_delay); +} + + +PIThread::PIThread(bool startNow, int timer_delay): PIObject() { + piMonitor.threads++; + thread = 0; + ret_func = 0; + running = lockRun = false; + priority_ = piNormal; + timer = timer_delay; + if (startNow) start(timer_delay); +} + + +PIThread::~PIThread() { + piMonitor.threads--; + if (!running || thread == 0) return; +#ifndef WINDOWS +# ifdef ANDROID + pthread_kill(thread, SIGSTOP); +# else + pthread_cancel(thread); +# endif +#else + TerminateThread(thread, 0); + CloseHandle(thread); +#endif +} + + +bool PIThread::start(int timer_delay) { + if (running) return false; + terminating = running = false; + timer = timer_delay; +#ifndef WINDOWS + pthread_attr_t attr; + pthread_attr_init(&attr); + pthread_attr_setschedparam(&attr, &sparam); + if (pthread_create(&thread, &attr, thread_function, this) == 0) { + setPriority(priority_); + running = true; + return true; + } +#else + thread = CreateThread(0, 0, (LPTHREAD_START_ROUTINE)thread_function, this, 0, 0); + if (thread != 0) { + setPriority(priority_); + running = true; + return true; + } +#endif + return false; +} + + +bool PIThread::startOnce() { + if (running) return false; + terminating = running = false; +#ifndef WINDOWS + pthread_attr_t attr; + pthread_attr_init(&attr); + pthread_attr_setschedparam(&attr, &sparam); + if (pthread_create(&thread, &attr, thread_function_once, this) == 0) { + setPriority(priority_); + running = true; + return true; + } +#else + thread = CreateThread(0, 0, (LPTHREAD_START_ROUTINE)thread_function_once, this, 0, 0); + if (thread != 0) { + setPriority(priority_); + running = true; + return false; + } +#endif + return false; +} + + +void PIThread::terminate() { + if (thread == 0) return; + running = false; +#ifndef WINDOWS +# ifdef ANDROID + pthread_kill(thread, SIGSTOP); +# else + pthread_cancel(thread); +# endif +#else + TerminateThread(thread, 0); + CloseHandle(thread); +#endif + thread = 0; + end(); +} + + +void * PIThread::thread_function(void * t) { +#ifndef WINDOWS +# ifndef ANDROID + pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, 0); + pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, 0); +# endif +#else + __PISetTimerResolution(); +#endif + PIThread & ct = *((PIThread * )t); + ct.running = true; + ct.begin(); + ct.started(); + while (!ct.terminating) { + if (ct.lockRun) ct.mutex_.lock(); + ct.run(); + if (ct.ret_func != 0) ct.ret_func(ct.data_); + if (ct.lockRun) ct.mutex_.unlock(); + if (ct.timer > 0) msleep(ct.timer); + } + ct.stopped(); + ct.end(); + ct.running = false; + //cout << "thread " << t << " exiting ... " << endl; +#ifndef WINDOWS + pthread_exit(0); +#else + ExitThread(0); +#endif + return 0; +} + + +void * PIThread::thread_function_once(void * t) { +#ifndef WINDOWS +# ifndef ANDROID + pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, 0); + pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, 0); +# endif +#else + __PISetTimerResolution(); +#endif + PIThread & ct = *((PIThread * )t); + ct.running = true; + ct.begin(); + ct.started(); + if (ct.lockRun) ct.mutex_.lock(); + ct.run(); + if (ct.ret_func != 0) ct.ret_func(ct.data_); + if (ct.lockRun) ct.mutex_.unlock(); + ct.stopped(); + ct.end(); + ct.running = false; + //cout << "thread " << t << " exiting ... " << endl; +#ifndef WINDOWS + pthread_exit(0); +#else + ExitThread(0); +#endif + return 0; +} + + +void PIThread::setPriority(PIThread::Priority prior) { + priority_ = prior; +#ifndef WINDOWS +# ifndef LINUX + sparam.sched_priority = (int)priority_; +# else + sparam.__sched_priority = (int)priority_; +# endif + if (!running) return; + pthread_getschedparam(thread, &policy, &sparam); + pthread_setschedparam(thread, policy, &sparam); +#else + if (!running) return; + SetThreadPriority(thread, -(int)priority_); +#endif +} + + +bool PIThread::waitForFinish(int timeout_msecs) { + if (timeout_msecs < 0) { + while (running) + msleep(1); + return true; + } + int cnt = 0; + while (running && cnt < timeout_msecs) { + msleep(1); + ++cnt; + } + return cnt < timeout_msecs; +} + + +bool PIThread::waitForStart(int timeout_msecs) { + if (timeout_msecs < 0) { + while (!running) + msleep(1); + return true; + } + int cnt = 0; + while (!running && cnt < timeout_msecs) { + msleep(1); + ++cnt; + } + return cnt < timeout_msecs; +} diff --git a/_oldpip/pip_0.4.0_r5/pithread.h b/_oldpip/pip_0.4.0_r5/pithread.h new file mode 100644 index 0000000..0bef065 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/pithread.h @@ -0,0 +1,219 @@ +/*! \file pithread.h + * \brief Thread + * + * This file declare thread class and some wait functions +*/ +/* + PIP - Platform Independent Primitives + Thread + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +#ifndef PITHREAD_H +#define PITHREAD_H + +#include +#include "pimutex.h" +#include "piobject.h" + +typedef void (*ThreadFunc)(void * ); + +class PIP_EXPORT PIThread: public PIObject +{ + PIOBJECT(PIThread) +public: + + //! Contructs thread with custom data "data", external function "func" and main cycle delay "timer_delay". + PIThread(void * data, ThreadFunc func, bool startNow = false, int timer_delay = -1); + + //! Contructs thread with main cycle delay "timer_delay". + PIThread(bool startNow = false, int timer_delay = -1); + virtual ~PIThread(); + +#ifdef DOXYGEN + //! Priority of thread + enum Priority {piHighest /** Highest */, + piHigh /** High */, + piNormal /** Normal, default */, + piLow /** Low */, + piLowerst /** Lowest */ + }; +#else +# ifdef QNX + enum Priority {piHighest = 12, + piHigh = 11, + piNormal = 10, + piLow = 9, + piLowerst = 8 }; +# else + enum Priority {piHighest = -2, + piHigh = -1, + piNormal = 0, + piLow = 1, + piLowerst = 2 }; +# endif +#endif + + EVENT_HANDLER0(bool, start) {return start(-1);} + EVENT_HANDLER1(bool, start, int, timer_delay); + EVENT_HANDLER1(bool, start, ThreadFunc, func) {ret_func = func; return start(-1);} + EVENT_HANDLER2(bool, start, ThreadFunc, func, int, timer_delay) {ret_func = func; return start(timer_delay);} + EVENT_HANDLER0(bool, startOnce); + EVENT_HANDLER1(bool, startOnce, ThreadFunc, func) {ret_func = func; return startOnce();} + EVENT_HANDLER0(void, stop) {stop(false);} + EVENT_HANDLER1(void, stop, bool, wait) {terminating = true; if (wait) waitForFinish();} + EVENT_HANDLER0(void, terminate); + + //! \brief Set common data passed to external function + void setData(void * d) {data_ = d;} + + //! \brief Set external function that will be executed after every \a run() + void setSlot(ThreadFunc func) {ret_func = func;} + + //! \brief Set priority of thread + void setPriority(PIThread::Priority prior); + + //! \brief Returns common data passed to external function + void * data() const {return data_;} + + //! \brief Return priority of thread + PIThread::Priority priority() const {return priority_;} + + //! \brief Return \c true if thread is running + bool isRunning() const {return running;} + + bool isStopping() const {return running && terminating;} + + EVENT_HANDLER0(bool, waitForStart) {return waitForStart(-1);} + EVENT_HANDLER1(bool, waitForStart, int, timeout_msecs); + EVENT_HANDLER0(bool, waitForFinish) {return waitForFinish(-1);} + EVENT_HANDLER1(bool, waitForFinish, int, timeout_msecs); + + //! \brief Set necessity of lock every \a run with internal mutex + void needLockRun(bool need) {lockRun = need;} + EVENT_HANDLER0(void, lock) {mutex_.lock();} + EVENT_HANDLER0(void, unlock) {mutex_.unlock();} + + //! \brief Return internal mutex + PIMutex & mutex() {return mutex_;} + + EVENT(started) + EVENT(stopped) + +//! \handlers +//! \{ + + /** \fn bool start(int timer_delay = -1) + * \brief Start thread + * \details Start execution of \a run() in internal loop with + * "timer_delay" delay in milliseconds. If "timer_delay" <= 0 + * there is no delay in loop. Thread also exec external function + * set by \a setSlot() if it`s not null + * + * \return \c false if thread already started or can`t start thread */ + + /** \fn bool start(ThreadFunc func, int timer_delay = -1) + * \brief Start thread + * \details Overloaded function. Set external function "func" before start + * + * \return \c false if thread already started or can`t start thread */ + + /** \fn bool startOnce() + * \brief Start thread without internal loop + * \details Start execution of \a run() once. Thread also exec + * external function set by \a setSlot() if it`s not null + * + * \return \c false if thread already started or can`t start thread */ + + /** \fn bool startOnce(ThreadFunc func) + * \brief Start thread without internal loop + * \details Overloaded function. Set external function "func" before start + * + * \return \c false if thread already started or can`t start thread */ + + /** \fn void stop(bool wait = false) + * \brief Stop thread + * \details Stop execution of thread and wait for it finish + * if "wait" is \c true. This function can block for infinite + * time if "wait" is \c true and any of thread function is + * busy forever */ + + /** \fn void terminate() + * \brief Strongly stop thread + * \details Stop execution of thread immediately */ + + /** \fn bool waitForStart(int timeout_msecs = -1) + * \brief Wait for thread start + * \details This function block until thread finish for "timeout_msecs" + * or forever if "timeout_msecs" < 0 + * + * \return \c false if timeout is exceeded */ + + /** \fn bool waitForFinish(int timeout_msecs = -1) + * \brief Wait for thread finish + * \details This function block until thread start for "timeout_msecs" + * or forever if "timeout_msecs" < 0 + * + * \return \c false if timeout is exceeded */ + + //! \fn void lock() + //! \brief Lock internal mutex + + //! \fn void unlock() + //! \brief Unlock internal mutex + +//! \} +//! \events +//! \{ + + //! \fn void started() + //! \brief Raise on thread start + + //! \fn void stopped() + //! \brief Raise on thread stop + +//! \} + +protected: + static void * thread_function(void * t); + static void * thread_function_once(void * t); + + + //! Function executed once at the start of thread. + virtual void begin() {;} + + //! Function executed at every "timer_delay" msecs until thread was stopped. + virtual void run() {;} + + //! Function executed once at the end of thread. + virtual void end() {;} + + volatile bool terminating, running, lockRun; + int timer, policy; + void * data_; + PIMutex mutex_; + PIThread::Priority priority_; + ThreadFunc ret_func; +#ifndef WINDOWS + pthread_t thread; + sched_param sparam; +#else + void * thread; +#endif + +}; + +#endif // PITHREAD_H diff --git a/_oldpip/pip_0.4.0_r5/pitime.cpp b/_oldpip/pip_0.4.0_r5/pitime.cpp new file mode 100644 index 0000000..78d7ea5 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/pitime.cpp @@ -0,0 +1,363 @@ +/* + PIP - Platform Independent Primitives + Timer + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +#include "pitime.h" +#include "pisystemtests.h" + + +/*! \class PISystemTime + * \brief System time + * + * \section PISystemTime_sec0 Synopsis + * This class provide arithmetic functions for POSIX system time. + * This time represents as seconds and nanosecons in integer formats. + * You can take current system time with function \a PISystemTime::current(), + * compare times, sum or subtract two times, convert time to/from + * seconds, milliseconds, microseconds or nanoseconds. + * \section PISystemTime_sec1 Example + * \snippet pitimer.cpp system_time +*/ + + +void piUSleep(int usecs) { + if (usecs <= 0) return; +#ifdef WINDOWS + if (usecs > 0) Sleep(usecs / 1000); +#else + usecs -= PISystemTests::usleep_offset_us; + if (usecs > 0) usleep(usecs); +#endif +} + + +bool operator ==(const PITime & t0, const PITime & t1) { + return (t0.hours == t1.hours && t0.minutes == t1.minutes && t0.seconds == t1.seconds); +} + + +bool operator <(const PITime & t0, const PITime & t1) { + if (t0.hours == t1.hours) { + if (t0.minutes == t1.minutes) { + return t0.seconds < t1.seconds; + } else return t0.minutes < t1.minutes; + } else return t0.hours < t1.hours; +} + + +bool operator >(const PITime & t0, const PITime & t1) { + if (t0.hours == t1.hours) { + if (t0.minutes == t1.minutes) { + return t0.seconds > t1.seconds; + } else return t0.minutes > t1.minutes; + } else return t0.hours > t1.hours; +} + +bool operator ==(const PIDate & t0, const PIDate & t1) { + return (t0.year == t1.year && t0.month == t1.month && t0.day == t1.day); +} + + +bool operator <(const PIDate & t0, const PIDate & t1) { + if (t0.year == t1.year) { + if (t0.month == t1.month) { + return t0.day < t1.day; + } else return t0.month < t1.month; + } else return t0.year < t1.year; +} + + +bool operator >(const PIDate & t0, const PIDate & t1) { + if (t0.year == t1.year) { + if (t0.month == t1.month) { + return t0.day > t1.day; + } else return t0.month > t1.month; + } else return t0.year > t1.year; +} + +bool operator ==(const PIDateTime & t0, const PIDateTime & t1) { + return (t0.year == t1.year && t0.month == t1.month && t0.day == t1.day && + t0.hours == t1.hours && t0.minutes == t1.minutes && t0.seconds == t1.seconds); +} + + +bool operator <(const PIDateTime & t0, const PIDateTime & t1) { + if (t0.year == t1.year) { + if (t0.month == t1.month) { + if (t0.day == t1.day) { + if (t0.hours == t1.hours) { + if (t0.minutes == t1.minutes) { + return t0.seconds < t1.seconds; + } else return t0.minutes < t1.minutes; + } else return t0.hours < t1.hours; + } else return t0.day < t1.day; + } else return t0.month < t1.month; + } else return t0.year < t1.year; +} + + +bool operator >(const PIDateTime & t0, const PIDateTime & t1) { + if (t0.year == t1.year) { + if (t0.month == t1.month) { + if (t0.day == t1.day) { + if (t0.hours == t1.hours) { + if (t0.minutes == t1.minutes) { + return t0.seconds > t1.seconds; + } else return t0.minutes > t1.minutes; + } else return t0.hours > t1.hours; + } else return t0.day > t1.day; + } else return t0.month > t1.month; + } else return t0.year > t1.year; +} + + +PITime PITime::current() { + time_t rt = ::time(0); + tm * pt = localtime(&rt); + PITime t; + t.seconds = pt->tm_sec; + t.minutes = pt->tm_min; + t.hours = pt->tm_hour; + return t; +} + + +PIDate PIDate::current() { + time_t rt = ::time(0); + tm * pt = localtime(&rt); + PIDate d; + d.day = pt->tm_mday; + d.month = pt->tm_mon + 1; + d.year = pt->tm_year + 1900; + return d; +} + + +PIDateTime PIDateTime::current() { + time_t rt = ::time(0); + tm * pt = localtime(&rt); + PIDateTime dt; + dt.milliseconds = 0; + dt.seconds = pt->tm_sec; + dt.minutes = pt->tm_min; + dt.hours = pt->tm_hour; + dt.day = pt->tm_mday; + dt.month = pt->tm_mon + 1; + dt.year = pt->tm_year + 1900; + return dt; +} + + +PISystemTime PISystemTime::abs() const { + if (seconds < 0) + return PISystemTime(piAbsl(seconds) - 1, 1e+9 - piAbsl(nanoseconds)); + else + return PISystemTime(piAbsl(seconds), piAbsl(nanoseconds)); +} + + +PISystemTime PISystemTime::current(bool precise_but_not_system) { +#ifdef WINDOWS + if (precise_but_not_system) { + llong qpc(0); + if (__pi_perf_freq > 0) { + qpc = __PIQueryPerformanceCounter(); + return PISystemTime::fromSeconds(qpc / double(__pi_perf_freq)); + } + return PISystemTime(); + } else { + FILETIME ft, sft; +# if (_WIN32_WINNT >= 0x0602) + GetSystemTimePreciseAsFileTime(&ft); +# else + GetSystemTimeAsFileTime(&ft); +# endif + sft.dwHighDateTime = ft.dwHighDateTime - __pi_ftjan1970.dwHighDateTime; + if (ft.dwLowDateTime < __pi_ftjan1970.dwLowDateTime) { + sft.dwLowDateTime = ft.dwLowDateTime + (0xFFFFFFFF - __pi_ftjan1970.dwLowDateTime); + sft.dwHighDateTime++; + } else + sft.dwLowDateTime = ft.dwLowDateTime - __pi_ftjan1970.dwLowDateTime; + ullong lt = ullong(sft.dwHighDateTime) * 0x100000000U + ullong(sft.dwLowDateTime); + return PISystemTime(lt / 10000000U, (lt % 10000000U) * 100U); + } + //long t_cur = GetCurrentTime(); + //return PISystemTime(t_cur / 1000, (t_cur % 1000) * 1000000); +#else +# ifdef MAC_OS + mach_timespec_t t_cur; + clock_get_time(__pi_mac_clock, &t_cur); +# else + timespec t_cur; + clock_gettime(0, &t_cur); +# endif + return PISystemTime(t_cur.tv_sec, t_cur.tv_nsec); +#endif +} + + +PIString PITime::toString(const PIString & format) const { + PIString ts = format; + ts.replace("hh", PIString::fromNumber(hours).expandLeftTo(2, '0')); + ts.replace("h", PIString::fromNumber(hours)); + ts.replace("mm", PIString::fromNumber(minutes).expandLeftTo(2, '0')); + ts.replace("m", PIString::fromNumber(minutes)); + ts.replace("ss", PIString::fromNumber(seconds).expandLeftTo(2, '0')); + ts.replace("s", PIString::fromNumber(seconds)); + ts.replace("zzz", PIString::fromNumber(milliseconds).expandLeftTo(3, '0')); + ts.replace("zz", PIString::fromNumber(milliseconds).expandLeftTo(2, '0')); + ts.replace("z", PIString::fromNumber(milliseconds)); + return ts; +} + + +PIString PIDate::toString(const PIString & format) const { + PIString ts = format; + ts.replace("yyyy", PIString::fromNumber(year).expandLeftTo(4, '0')); + ts.replace("yy", PIString::fromNumber(year).right(2)); + ts.replace("y", PIString::fromNumber(year).right(1)); + ts.replace("MM", PIString::fromNumber(month).expandLeftTo(2, '0')); + ts.replace("M", PIString::fromNumber(month)); + ts.replace("dd", PIString::fromNumber(day).expandLeftTo(2, '0')); + ts.replace("d", PIString::fromNumber(day)); + return ts; +} + + +PIString PIDateTime::toString(const PIString & format) const { + PIString ts = format; + ts.replace("yyyy", PIString::fromNumber(year).expandLeftTo(4, '0')); + ts.replace("yy", PIString::fromNumber(year).right(2)); + ts.replace("y", PIString::fromNumber(year).right(1)); + ts.replace("MM", PIString::fromNumber(month).expandLeftTo(2, '0')); + ts.replace("M", PIString::fromNumber(month)); + ts.replace("dd", PIString::fromNumber(day).expandLeftTo(2, '0')); + ts.replace("d", PIString::fromNumber(day)); + ts.replace("hh", PIString::fromNumber(hours).expandLeftTo(2, '0')); + ts.replace("h", PIString::fromNumber(hours)); + ts.replace("mm", PIString::fromNumber(minutes).expandLeftTo(2, '0')); + ts.replace("m", PIString::fromNumber(minutes)); + ts.replace("ss", PIString::fromNumber(seconds).expandLeftTo(2, '0')); + ts.replace("s", PIString::fromNumber(seconds)); + ts.replace("zzz", PIString::fromNumber(milliseconds).expandLeftTo(3, '0')); + ts.replace("zz", PIString::fromNumber(milliseconds).expandLeftTo(2, '0')); + ts.replace("z", PIString::fromNumber(milliseconds)); + return ts; +} + + +time_t PIDateTime::toSecondSinceEpoch() const { + tm pt; + memset(&pt, 0, sizeof(pt)); + pt.tm_sec = seconds; + pt.tm_min = minutes; + pt.tm_hour = hours; + pt.tm_mday = day; + pt.tm_mon = month - 1; + pt.tm_year = piMaxi(year - 1900, 71); + return mktime(&pt); +} + + +PIDateTime PIDateTime::fromSecondSinceEpoch(const time_t sec) { + tm * pt = localtime(&sec); + PIDateTime dt; + dt.seconds = pt->tm_sec; + dt.minutes = pt->tm_min; + dt.hours = pt->tm_hour; + dt.day = pt->tm_mday; + dt.month = pt->tm_mon + 1; + dt.year = pt->tm_year + 1900; + return dt; + +} + + +PIString time2string(const PITime & time, const PIString & format) { + PIString ts = format; + ts.replace("hh", PIString::fromNumber(time.hours).expandLeftTo(2, '0')); + ts.replace("h", PIString::fromNumber(time.hours)); + ts.replace("mm", PIString::fromNumber(time.minutes).expandLeftTo(2, '0')); + ts.replace("m", PIString::fromNumber(time.minutes)); + ts.replace("ss", PIString::fromNumber(time.seconds).expandLeftTo(2, '0')); + ts.replace("s", PIString::fromNumber(time.seconds)); + return ts; +} + + +PIString date2string(const PIDate & date, const PIString & format) { + PIString ts = format; + ts.replace("yyyy", PIString::fromNumber(date.year).expandLeftTo(4, '0')); + ts.replace("yy", PIString::fromNumber(date.year).right(2)); + ts.replace("y", PIString::fromNumber(date.year).right(1)); + ts.replace("MM", PIString::fromNumber(date.month).expandLeftTo(2, '0')); + ts.replace("M", PIString::fromNumber(date.month)); + ts.replace("dd", PIString::fromNumber(date.day).expandLeftTo(2, '0')); + ts.replace("d", PIString::fromNumber(date.day)); + return ts; +} + + +PIString datetime2string(const PIDateTime & date, const PIString & format) { + PIString ts = format; + ts.replace("hh", PIString::fromNumber(date.hours).expandLeftTo(2, '0')); + ts.replace("h", PIString::fromNumber(date.hours)); + ts.replace("mm", PIString::fromNumber(date.minutes).expandLeftTo(2, '0')); + ts.replace("m", PIString::fromNumber(date.minutes)); + ts.replace("ss", PIString::fromNumber(date.seconds).expandLeftTo(2, '0')); + ts.replace("s", PIString::fromNumber(date.seconds)); + ts.replace("yyyy", PIString::fromNumber(date.year).expandLeftTo(4, '0')); + ts.replace("yy", PIString::fromNumber(date.year).right(2)); + ts.replace("y", PIString::fromNumber(date.year).right(1)); + ts.replace("MM", PIString::fromNumber(date.month).expandLeftTo(2, '0')); + ts.replace("M", PIString::fromNumber(date.month)); + ts.replace("dd", PIString::fromNumber(date.day).expandLeftTo(2, '0')); + ts.replace("d", PIString::fromNumber(date.day)); + return ts; +} + + + +PITimeMeasurer::PITimeMeasurer() { + reset(); +} + + +double PITimeMeasurer::elapsed_n() { + return (PISystemTime::current(true) - t_st).toNanoseconds() - PISystemTests::time_elapsed_ns; +} + + +double PITimeMeasurer::elapsed_u() { + return (PISystemTime::current(true) - t_st).toMicroseconds() - PISystemTests::time_elapsed_ns / 1.E+3; +} + + +double PITimeMeasurer::elapsed_m() { + return (PISystemTime::current(true) - t_st).toMilliseconds() - PISystemTests::time_elapsed_ns / 1.E+6; +} + + +double PITimeMeasurer::elapsed_s() { + return (PISystemTime::current(true) - t_st).toSeconds() - PISystemTests::time_elapsed_ns / 1.E+9; +} + + +PISystemTime PITimeMeasurer::elapsed() { + return (PISystemTime::current(true) - t_st); +} diff --git a/_oldpip/pip_0.4.0_r5/pitime.h b/_oldpip/pip_0.4.0_r5/pitime.h new file mode 100644 index 0000000..b50e3df --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/pitime.h @@ -0,0 +1,315 @@ +/*! \file pitime.h + * \brief Time structs +*/ +/* + PIP - Platform Independent Primitives + Time structs + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +#ifndef PITIME_H +#define PITIME_H + +#include +#include +#include "pistring.h" + +#ifdef DOXYGEN +//! \brief Sleep for "msecs" milliseconds +void msleep(int msecs); +#else +# ifdef WINDOWS +inline void msleep(int msecs) {Sleep(msecs);} +# else +inline void msleep(int msecs) {usleep(msecs * 1000);} +# endif +#endif + +/*! \brief Precise sleep for "usecs" microseconds + * \details This function consider \c "usleep" offset + * on QNX/Linux/Mac, which is calculated with + * \a pip_sys_test program. If there is correct + * offset value in system config, this function + * wait \b exactly "usecs" microseconds. */ +void piUSleep(int usecs); // on !Windows consider constant "usleep" offset + +/*! \brief Precise sleep for "msecs" milliseconds + * \details This function exec \a piUSleep (msecs * 1000). */ +inline void piMSleep(double msecs) {piUSleep(msecs * 1000);} // on !Windows consider constant "usleep" offset + +/*! \brief Precise sleep for "secs" seconds + * \details This function exec \a piUSleep (msecs * 1000000). */ +inline void piSleep(double secs) {piUSleep(secs * 1000000);} // on !Windows consider constant "usleep" offset + +class PIP_EXPORT PISystemTime { +public: + + //! Contructs system time with s = ns = 0 + PISystemTime() {seconds = nanoseconds = 0;} + + //! Contructs system time with s = "s" and ns = "ns" + PISystemTime(long s, long ns) {seconds = s; nanoseconds = ns; checkOverflows();} + + //! Contructs system time from another + PISystemTime(const PISystemTime & t) {seconds = t.seconds; nanoseconds = t.nanoseconds;} + + //! Returns stored system time value in seconds + double toSeconds() const {return double(seconds) + nanoseconds / 1.e+9;} + + //! Returns stored system time value in milliseconds + double toMilliseconds() const {return seconds * 1.e+3 + nanoseconds / 1.e+6;} + + //! Returns stored system time value in microseconds + double toMicroseconds() const {return seconds * 1.e+6 + nanoseconds / 1.e+3;} + + //! Returns stored system time value in nanoseconds + double toNanoseconds() const {return seconds * 1.e+9 + double(nanoseconds);} + + + //! Add to stored system time "v" seconds + PISystemTime & addSeconds(double v) {*this += fromSeconds(v); return *this;} + + //! Add to stored system time "v" milliseconds + PISystemTime & addMilliseconds(double v) {*this += fromMilliseconds(v); return *this;} + + //! Add to stored system time "v" microseconds + PISystemTime & addMicroseconds(double v) {*this += fromMicroseconds(v); return *this;} + + //! Add to stored system time "v" nanoseconds + PISystemTime & addNanoseconds(double v) {*this += fromNanoseconds(v); return *this;} + + + //! Sleep for stored value. \warning Use this function to sleep for difference of system times or constructs system time. + //! If you call this function on system time returned with \a PISystemTime::current() thread will be sleep almost forever. + void sleep() {piUSleep(piFloord(toMicroseconds()));} // wait self value, useful to wait some dT = (t1 - t0) + + + //! Returns copy of this system time with absolutely values of s and ns + PISystemTime abs() const; + + //! Returns sum of this system time with "t" + PISystemTime operator +(const PISystemTime & t) const {PISystemTime tt(*this); tt.seconds += t.seconds; tt.nanoseconds += t.nanoseconds; tt.checkOverflows(); return tt;} + + //! Returns difference between this system time and "t" + PISystemTime operator -(const PISystemTime & t) const {PISystemTime tt(*this); tt.seconds -= t.seconds; tt.nanoseconds -= t.nanoseconds; tt.checkOverflows(); return tt;} + + //! Returns multiplication between this system time and "t" + PISystemTime operator *(const double & v) const {return fromMilliseconds(toMilliseconds() * v);} + + //! Returns division between this system time and "t" + PISystemTime operator /(const double & v) const {return fromMilliseconds(toMilliseconds() / v);} + + //! Add to stored value system time "t" + PISystemTime & operator +=(const PISystemTime & t) {seconds += t.seconds; nanoseconds += t.nanoseconds; checkOverflows(); return *this;} + + //! Subtract from stored value system time "t" + PISystemTime & operator -=(const PISystemTime & t) {seconds -= t.seconds; nanoseconds -= t.nanoseconds; checkOverflows(); return *this;} + + //! Multiply stored value system time by "v" + PISystemTime & operator *=(const double & v) {*this = fromMilliseconds(toMilliseconds() * v); return *this;} + + //! Divide stored value system time by "v" + PISystemTime & operator /=(const double & v) {*this = fromMilliseconds(toMilliseconds() / v); return *this;} + + + //! Compare system times + bool operator ==(const PISystemTime & t) const {return ((seconds == t.seconds) && (nanoseconds == t.nanoseconds));} + + //! Compare system times + bool operator !=(const PISystemTime & t) const {return ((seconds != t.seconds) || (nanoseconds != t.nanoseconds));} + + //! Compare system times + bool operator >(const PISystemTime & t) const {if (seconds == t.seconds) return nanoseconds > t.nanoseconds; return seconds > t.seconds;} + + //! Compare system times + bool operator <(const PISystemTime & t) const {if (seconds == t.seconds) return nanoseconds < t.nanoseconds; return seconds < t.seconds;} + + //! Compare system times + bool operator >=(const PISystemTime & t) const {if (seconds == t.seconds) return nanoseconds >= t.nanoseconds; return seconds >= t.seconds;} + + //! Compare system times + bool operator <=(const PISystemTime & t) const {if (seconds == t.seconds) return nanoseconds <= t.nanoseconds; return seconds <= t.seconds;} + + + //! Contructs system time from seconds "v" + static PISystemTime fromSeconds(double v) {long s = piFloord(v); return PISystemTime(s, (v - s) * 1000000000);} + + //! Contructs system time from milliseconds "v" + static PISystemTime fromMilliseconds(double v) {long s = piFloord(v / 1000.); return PISystemTime(s, (v / 1000. - s) * 1000000000);} + + //! Contructs system time from microseconds "v" + static PISystemTime fromMicroseconds(double v) {long s = piFloord(v / 1000000.); return PISystemTime(s, (v / 1000000. - s) * 1000000000);} + + //! Contructs system time from nanoseconds "v" + static PISystemTime fromNanoseconds(double v) {long s = piFloord(v / 1000000000.); return PISystemTime(s, (v / 1000000000. - s) * 1000000000);} + + //! Returns current system time + static PISystemTime current(bool precise_but_not_system = false); + + //! Seconds of stored system time + long seconds; + + //! Nanoseconds of stored system time + long nanoseconds; + +private: + void checkOverflows() {while (nanoseconds >= 1000000000) {nanoseconds -= 1000000000; seconds++;} while (nanoseconds < 0) {nanoseconds += 1000000000; seconds--;}} + +}; + +//! \relatesalso PICout \relatesalso PIByteArray \brief Output operator to PICout +inline PICout operator <<(PICout s, const PISystemTime & v) {s.space(); s.setControl(0, true); s << "(" << v.seconds << " s, " << v.nanoseconds << " ns)"; s.restoreControl(); return s;} + +//! \relatesalso PISystemTime \relatesalso PIByteArray \brief Output operator to PIByteArray +inline PIByteArray & operator <<(PIByteArray & s, const PISystemTime & v) {s << v.seconds << v.nanoseconds; return s;} + +//! \relatesalso PISystemTime \relatesalso PIByteArray \brief Input operator from PIByteArray +inline PIByteArray & operator >>(PIByteArray & s, PISystemTime & v) {s >> v.seconds >> v.nanoseconds; return s;} + +struct PIP_EXPORT PITime { + PITime(int hours_ = 0, int minutes_ = 0, int seconds_ = 0, int milliseconds_ = 0): hours(hours_), minutes(minutes_), seconds(seconds_), milliseconds(milliseconds_) {;} + int hours; + int minutes; + int seconds; + int milliseconds; + PIString toString(const PIString & format = "h:mm:ss") const; + static PITime current(); +}; +PIP_EXPORT bool operator ==(const PITime & t0, const PITime & t1); +PIP_EXPORT bool operator <(const PITime & t0, const PITime & t1); +PIP_EXPORT bool operator >(const PITime & t0, const PITime & t1); +inline bool operator !=(const PITime & t0, const PITime & t1) {return !(t0 == t1);} +inline bool operator <=(const PITime & t0, const PITime & t1) {return !(t0 > t1);} +inline bool operator >=(const PITime & t0, const PITime & t1) {return !(t0 < t1);} + +struct PIP_EXPORT PIDate { + PIDate(int year_ = 0, int month_ = 0, int day_ = 0): year(year_), month(month_), day(day_) {;} + int year; + int month; + int day; + PIString toString(const PIString & format = "d.MM.yyyy") const; + static PIDate current(); +}; +PIP_EXPORT bool operator ==(const PIDate & t0, const PIDate & t1); +PIP_EXPORT bool operator <(const PIDate & t0, const PIDate & t1); +PIP_EXPORT bool operator >(const PIDate & t0, const PIDate & t1); +inline bool operator !=(const PIDate & t0, const PIDate & t1) {return !(t0 == t1);} +inline bool operator <=(const PIDate & t0, const PIDate & t1) {return !(t0 > t1);} +inline bool operator >=(const PIDate & t0, const PIDate & t1) {return !(t0 < t1);} + +struct PIP_EXPORT PIDateTime { + PIDateTime() {year = month = day = hours = minutes = seconds = milliseconds = 0;} + PIDateTime(const PITime & time) {year = month = day = 0; hours = time.hours; minutes = time.minutes; seconds = time.seconds; milliseconds = time.milliseconds;} + PIDateTime(const PIDate & date) {year = date.year; month = date.month; day = date.day; hours = minutes = seconds = milliseconds = 0;} + PIDateTime(const PIDate & date, const PITime & time) {year = date.year; month = date.month; day = date.day; hours = time.hours; minutes = time.minutes; seconds = time.seconds; milliseconds = time.milliseconds;} + int year; + int month; + int day; + int hours; + int minutes; + int seconds; + int milliseconds; + PIDateTime normalized() const {return PIDateTime::fromSecondSinceEpoch(toSecondSinceEpoch());} + void normalize() {*this = normalized();} + PIString toString(const PIString & format = "h:mm:ss d.MM.yyyy") const; + time_t toSecondSinceEpoch() const; + PISystemTime toSystemTime() const {return PISystemTime(int(toSecondSinceEpoch()), milliseconds * 1000000);} + PIDate date() const {return PIDate(year, month, day);} + PITime time() const {return PITime(hours, minutes, seconds, milliseconds);} + void setDate(const PIDate & d) {year = d.year; month = d.month; day = d.day;} + void setTime(const PITime & t) {hours = t.hours; minutes = t.minutes; seconds = t.seconds; milliseconds = t.milliseconds;} + void operator +=(const PIDateTime & d1) {year += d1.year; month += d1.month; day += d1.day; hours += d1.hours; minutes += d1.minutes; seconds += d1.seconds; normalize();} + void operator -=(const PIDateTime & d1) {year -= d1.year; month -= d1.month; day -= d1.day; hours -= d1.hours; minutes -= d1.minutes; seconds -= d1.seconds; normalize();} + static PIDateTime fromSecondSinceEpoch(const time_t sec); + static PIDateTime fromSystemTime(const PISystemTime & st) {PIDateTime dt = fromSecondSinceEpoch(st.seconds); dt.milliseconds = piClampi(st.nanoseconds / 1000000, 0, 999); return dt;} + static PIDateTime current(); +}; +inline PIDateTime operator +(const PIDateTime & d0, const PIDateTime & d1) {PIDateTime td = d0; td += d1; return td.normalized();} +inline PIDateTime operator -(const PIDateTime & d0, const PIDateTime & d1) {PIDateTime td = d0; td -= d1; return td.normalized();} +PIP_EXPORT bool operator ==(const PIDateTime & t0, const PIDateTime & t1); +PIP_EXPORT bool operator <(const PIDateTime & t0, const PIDateTime & t1); +PIP_EXPORT bool operator >(const PIDateTime & t0, const PIDateTime & t1); +inline bool operator !=(const PIDateTime & t0, const PIDateTime & t1) {return !(t0 == t1);} +inline bool operator <=(const PIDateTime & t0, const PIDateTime & t1) {return !(t0 > t1);} +inline bool operator >=(const PIDateTime & t0, const PIDateTime & t1) {return !(t0 < t1);} + +DEPRECATED inline PITime currentTime() {return PITime::current();} // obsolete, use PITime::current() instead +DEPRECATED inline PIDate currentDate() {return PIDate::current();} // obsolete, use PIDate::current() instead +DEPRECATED inline PIDateTime currentDateTime() {return PIDateTime::current();} // obsolete, use PIDateTime::current() instead + +//! \brief Returns current system time \deprecated Use \a PISystemTime::current() instead +DEPRECATED inline PISystemTime currentSystemTime() {return PISystemTime::current();} // obsolete, use PISystemTime::current() instead +DEPRECATED PIP_EXPORT PIString time2string(const PITime & time, const PIString & format = "h:mm:ss"); // obsolete, use PITime.toString() instead +DEPRECATED PIP_EXPORT PIString date2string(const PIDate & date, const PIString & format = "d.MM.yyyy"); // obsolete, use PITime.toString() instead +DEPRECATED PIP_EXPORT PIString datetime2string(const PIDateTime & datetime, const PIString & format = "h:mm:ss d.MM.yyyy"); // obsolete, use PIDateTime.toString() instead + + +class PITimeMeasurer { +public: + PITimeMeasurer(); + + /** \brief Set internal time mark to current system time + * \details This function used for set start time mark. Later + * you can find out elapsed time from this time mark to any + * moment of time with \a elapsed_s(), \a elapsed_m(), + * \a elapsed_u() or \a elapsed_n() functions. + * \sa \a elapsed_s(), \a elapsed_m(), \a elapsed_u(), \a elapsed_n() */ + void reset() {t_st = PISystemTime::current(true);} + + //! \brief Returns nanoseconds elapsed from last \a reset() execution or from timer measurer creation. + double elapsed_n(); + + //! \brief Returns microseconds elapsed from last \a reset() execution or from timer measurer creation. + double elapsed_u(); + + //! \brief Returns milliseconds elapsed from last \a reset() execution or from timer measurer creation. + double elapsed_m(); + + //! \brief Returns seconds elapsed from last \a reset() execution or from timer measurer creation. + double elapsed_s(); + + //! \brief Returns PISystemTime elapsed from last \a reset() execution or from timer measurer creation. + PISystemTime elapsed(); + + double reset_time_n() {return t_st.toNanoseconds();} + double reset_time_u() {return t_st.toMicroseconds();} + double reset_time_m() {return t_st.toMilliseconds();} + double reset_time_s() {return t_st.toSeconds();} + + //! \brief Returns time mark of last \a reset() execution or timer measurer creation. + PISystemTime reset_time() {return t_st;} + + //! \brief Returns nanoseconds representation of current system time. + static double elapsed_system_n() {return PISystemTime::current(true).toNanoseconds();} + + //! \brief Returns microseconds representation of current system time. + static double elapsed_system_u() {return PISystemTime::current(true).toMicroseconds();} + + //! \brief Returns milliseconds representation of current system time. + static double elapsed_system_m() {return PISystemTime::current(true).toMilliseconds();} + + //! \brief Returns seconds representation of current system time. + static double elapsed_system_s() {return PISystemTime::current(true).toSeconds();} + + //! \brief Returns time mark of current system time. + static PISystemTime elapsed_system() {return PISystemTime::current(true);} + +private: + PISystemTime t_st, t_cur; + +}; + +#endif // PITIME_H diff --git a/_oldpip/pip_0.4.0_r5/pitimer.cpp b/_oldpip/pip_0.4.0_r5/pitimer.cpp new file mode 100644 index 0000000..9d2248d --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/pitimer.cpp @@ -0,0 +1,579 @@ +/* + PIP - Platform Independent Primitives + Timer + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +#include "pitimer.h" +#include "pisystemtests.h" + + +/*! \class PITimer + * \brief Timer + * + * \section PITimer_sec0 Synopsis + * This class implements timer function. PIP timers supports 3 way to tick notify, + * frequency delimiters and time measurements. + * \section PITimer_sec1 Notify variants + * Notify variants: + * * "slot" - static function with format void func(void * data, int delimiter); + * * event - \a void timeout(void * data, int delimiter); + * * virtual function - \a void tick(void * data, int delimiter). + * All this variant are equivalent, use most applicable. + * \section PITimer_sec2 Frequency delimiters + * Frequency delimiter is an integer number and "slot" function. If "slot" function is null + * timer main "slot" will be used. Each delimiter numbers tick timer will be execute + * delimiters or timer main "slot" function with \b delimiter value = delimiter number. + * Example: \snippet pitimer.cpp delimiter + * \section PITimer_sec3 Time measurements + * PITimer can be used as time measurer. Function \a reset() set time mark to current + * system time, then functions double elapsed_*() returns time elapsed from this mark. + * These functions can returns nano-, micro-, milli- and seconds with suffixes "n", "u", "m" + * and "s"; + * Example: \snippet pitimer.cpp elapsed +*/ + + +#ifdef PIP_TIMER_RT +PITimer::TimerPool * pool = 0; +#endif + + +PITimer::PITimer(TimerEvent slot, void * data_, bool threaded_) +#ifndef PIP_TIMER_RT +: PIThread() { +#else +: PIObject() { +#endif + ret_func = slot; + data = data_; + running_ = false; + interval_ = 0.; +#ifdef PIP_TIMER_RT + piMonitor.timers++; + ti = -1; + threaded = threaded_; + memset(&se, 0, sizeof(se)); + se.sigev_notify = SIGEV_THREAD; + se.sigev_value.sival_ptr = this; + se.sigev_notify_function = PITimer::timer_event; + se.sigev_notify_attributes = 0; + lockRun = false; +#else + deferred_ = false; +#endif + reset(); +} + + +PITimer::PITimer(bool threaded_) +#ifndef PIP_TIMER_RT +: PIThread() { +#else +: PIObject() { +#endif + ret_func = 0; + data = 0; + running_ = false; + interval_ = 0.; +#ifdef PIP_TIMER_RT + piMonitor.timers++; + ti = -1; + threaded = threaded_; + memset(&se, 0, sizeof(se)); + se.sigev_notify = SIGEV_THREAD; + se.sigev_value.sival_ptr = this; + se.sigev_notify_function = PITimer::timer_event; + se.sigev_notify_attributes = 0; + lockRun = false; +#else + deferred_ = false; +#endif + reset(); +} + + +PITimer::~PITimer() { +#ifdef PIP_TIMER_RT + piMonitor.timers--; +#endif + stop(); +} + + +#ifdef PIP_TIMER_RT +void PITimer::start(double msecs) { + if (ti != -1 || msecs < 0 || running_) return; + interval_ = msecs; + if (!threaded) { + ticks = int(msecs); + if (pool == 0) pool = new TimerPool(); + pool->add(this); + //cout << "not threaded timer start " << msecs << " msecs\n"; + if (!pool->isRunning()) pool->start(); + running_ = true; + return; + } + spec.it_interval.tv_nsec = ((int)(msecs * 1000) % 1000000) * 1000; + spec.it_interval.tv_sec = (time_t)(msecs / 1000); + spec.it_value = spec.it_interval; + ti = timer_create(CLOCK_REALTIME, &se, &timer); + //cout << "***create timer " << msecs << " msecs\n"; + if (ti == -1) { + piCoutObj << "Can`t create timer for " << msecs << " msecs: " << errorString(); + return; + } + timer_settime(timer, 0, &spec, 0); + running_ = true; +} + + +void PITimer::deferredStart(double interval_msecs, double delay_msecs) { + if (ti != -1 || interval_msecs < 0 || running_) return; + interval_ = interval_msecs; + spec.it_interval.tv_nsec = ((int)(interval_msecs * 1000) % 1000000) * 1000; + spec.it_interval.tv_sec = (time_t)(interval_msecs / 1000); + spec.it_value.tv_nsec = ((int)(delay_msecs * 1000) % 1000000) * 1000; + spec.it_value.tv_sec = (time_t)(delay_msecs / 1000); + ti = timer_create(CLOCK_REALTIME, &se, &timer); + //cout << "***create timer\n"; + if (ti == -1) { + piCoutObj << "Can`t create timer for " << interval_msecs << " msecs: " << errorString(); + return; + } + timer_settime(timer, 0, &spec, 0); + running_ = true; +} + + +void PITimer::deferredStart(double interval_msecs, const PIDateTime & start_datetime) { + if (ti != -1 || interval_msecs < 0 || running_) return; + interval_ = interval_msecs; + spec.it_interval.tv_nsec = ((int)(interval_msecs * 1000) % 1000000) * 1000; + spec.it_interval.tv_sec = (time_t)(interval_msecs / 1000); + struct tm dtm; + memset(&dtm, 0, sizeof(dtm)); + dtm.tm_sec = start_datetime.seconds; + dtm.tm_min = start_datetime.minutes; + dtm.tm_hour = start_datetime.hours; + dtm.tm_mday = start_datetime.day; + dtm.tm_mon = start_datetime.month - 1; + dtm.tm_year = start_datetime.year - 1900; + spec.it_value.tv_nsec = 0; + spec.it_value.tv_sec = mktime(&dtm); + ti = timer_create(CLOCK_REALTIME, &se, &timer); + //cout << "***create timer\n"; + if (ti == -1) { + piCoutObj << "Can`t create timer for " << interval_msecs << " msecs: " << errorString(); + return; + } + timer_settime(timer, TIMER_ABSTIME, &spec, 0); + running_ = true; +} + + + +void PITimer::TimerPool::remove(PITimer * t) { + mutex.lock(); + for (int i = 0; i < timers.size_s(); ++i) + if (timers[i].first == t) { + timers.remove(i); + mutex.unlock(); + return; + } + mutex.unlock(); +} + + +void PITimer::TimerPool::begin() { + //cout << "pool begin\n"; + /*struct sigaction sa; + sa.sa_flags = 0; + sa.sa_handler = empty_handler; + sigemptyset(&sa.sa_mask); + if (sigaction(SIGALRM, &sa, 0) == -1) { + piCoutObj << "sigaction error: " << errorString(); + stop(); + return; + }*/ + sigemptyset(&ss); + sigaddset(&ss, SIGALRM); + memset(&se, 0, sizeof(se)); + se.sigev_notify = SIGEV_SIGNAL; + se.sigev_signo = SIGALRM; + spec.it_interval.tv_nsec = 1000000; + spec.it_interval.tv_sec = 0; + spec.it_value = spec.it_interval; + //cout << "***create pool timer\n"; + if (timer_create(CLOCK_REALTIME, &se, &timer) == -1) { + piCoutObj << "Can`t create timer for pool: " << errorString(); + stop(); + return; + } + if (timer_settime(timer, 0, &spec, 0) == -1) { + piCoutObj << "Can`t set timer for pool: " << errorString(); + stop(); + return; + } + ti = 1; +} + + +void PITimer::TimerPool::run() { + //cout << "wait ...\n"; + sigwait(&ss, &si); + //cout << "ok\n"; + mutex.lock(); + //cout << "* pool tick , pool = " << this <<", timers = " << timers.size()<<"\n"; + for (int i = 0; i < timers.size_s(); ++i) { + TimerPair & ct(timers[i]); + sv.sival_ptr = ct.first; + ct.second++; + //cout << "** pool tick for " << ct.first << ", cnt " << ct.second << ", " << ct.first->ticks << "\n"; + if (ct.second >= ct.first->ticks) { + //cout << "*** timer "<remove(this); + if (pool->isEmpty()) pool->terminate(); + } + } + if (ti != -1) timer_delete(timer); + ti = -1; + interval_ = 0.; +} + + +void PITimer::timer_event(sigval e) { + PITimer * ct = (PITimer * )e.sival_ptr; + if (!ct->running_) return; + if (ct->lockRun) ct->lock(); + if (ct->ret_func != 0) ct->ret_func(ct->data, 1); + ct->timeout(ct->data, 1); + ct->tick(ct->data, 1); + piForeach (TimerSlot & i, ct->ret_funcs) { + if (i.delim > ++(i.tick)) continue; + i.tick = 0; + if (i.slot != 0) i.slot(ct->data, i.delim); + else if (ct->ret_func != 0) ct->ret_func(ct->data, i.delim); + ct->timeout(ct->data, i.delim); + ct->tick(ct->data, i.delim); + } + if (ct->lockRun) ct->unlock(); +} + + +bool PITimer::waitForFinish(int timeout_msecs) { + if (timeout_msecs < 0) { + while (running_) + msleep(1); + return true; + } + int cnt = 0; + while (running_ && cnt < timeout_msecs) { + msleep(1); + ++cnt; + } + return cnt < timeout_msecs; +} + +#else + +void PITimer::start(double msecs) { + if (msecs < 0 || running_) return; + interval_ = msecs; + inc_time = PISystemTime::fromMilliseconds(msecs); + st_time = PISystemTime::current() + inc_time; + deferred_ = false; + running_ = true; + PIThread::start(); +} + + +void PITimer::deferredStart(double interval_msecs, double delay_msecs) { + //piCoutObj << "defStart exec with" << delay_msecs << interval_msecs; + if (interval_msecs < 0 || running_) return; + interval_ = interval_msecs; + PISystemTime cst = PISystemTime::current(); + inc_time = PISystemTime::fromMilliseconds(interval_msecs); + st_time = PISystemTime::current() + PISystemTime::fromMilliseconds(delay_msecs); + if (st_time < cst) st_time = cst; + running_ = deferred_ = true; + PIThread::start(); + //piCoutObj << "timer start def"; +} + + +void PITimer::deferredStart(double interval_msecs, const PIDateTime & start_datetime) { + //piCoutObj << "defStart exec to" << start_datetime.toString() << interval_msecs; + if (interval_msecs < 0 || running_) return; + interval_ = interval_msecs; + PISystemTime cst = PISystemTime::current(); + inc_time = PISystemTime::fromMilliseconds(interval_msecs); + st_time = start_datetime.toSystemTime(); + if (st_time < cst) st_time = cst; + running_ = deferred_ = true; + PIThread::start(); + //piCoutObj << "timer start def"; +} + + +void PITimer::run() { + if (!running_) return; + while (deferred_) { + PISystemTime tst = st_time - PISystemTime::current(); + if (tst.seconds > 0) { + piMSleep(100); + if (!running_) return; + continue; + } + if (tst.nanoseconds > 100000000) { + piMSleep(100); + if (!running_) return; + continue; + } + tst.sleep(); + deferred_ = false; + if (!running_) return; + } +#ifdef WINDOWS + tt_st = __PIQueryPerformanceCounter(); +#else + (st_time - PISystemTime::current()).sleep(); + st_time += inc_time; +#endif + //if (lockRun) lock(); + if (ret_func != 0) ret_func(data, 1); + timeout(data, 1); + tick(data, 1); + piForeach (TimerSlot & i, ret_funcs) { + if (i.delim > ++(i.tick)) continue; + i.tick = 0; + if (i.slot != 0) i.slot(data, i.delim); + else if (ret_func != 0) ret_func(data, i.delim); + timeout(data, i.delim); + tick(data, i.delim); + } +#ifdef WINDOWS + tt_cur = __PIQueryPerformanceCounter(); + double cdelay = interval_ - ((tt_cur - tt_st) / double(__pi_perf_freq) * 1.E+3); + if (cdelay > 0.) Sleep(piRoundd(cdelay)); +#endif + //if (lockRun) unlock(); +} + +#endif + +double PITimer::elapsed_n() { +#ifdef WINDOWS + pc_cur = __PIQueryPerformanceCounter(); + return ((__pi_perf_freq > 0) ? ((pc_cur - pc_st) / double(__pi_perf_freq) * 1.E+9) : -1.); + //t_cur = GetCurrentTime(); + //return (t_cur - t_st) * 1000000.; +#else +# ifdef MAC_OS + clock_get_time(__pi_mac_clock, &t_cur); +# else + clock_gettime(0, &t_cur); +# endif + return (t_cur.tv_sec - t_st.tv_sec) * 1.e+9 + (t_cur.tv_nsec - t_st.tv_nsec - PISystemTests::time_elapsed_ns); +#endif +} + + +double PITimer::elapsed_u() { +#ifdef WINDOWS + pc_cur = __PIQueryPerformanceCounter(); + return ((__pi_perf_freq > 0) ? ((pc_cur - pc_st) / double(__pi_perf_freq) * 1.E+6) : -1.); + //t_cur = GetCurrentTime(); + //return (t_cur - t_st) * 1000.; +#else +# ifdef MAC_OS + clock_get_time(__pi_mac_clock, &t_cur); +# else + clock_gettime(0, &t_cur); +# endif + return (t_cur.tv_sec - t_st.tv_sec) * 1.e+6 + (t_cur.tv_nsec - t_st.tv_nsec - PISystemTests::time_elapsed_ns) / 1.e+3; +#endif +} + + +double PITimer::elapsed_m() { +#ifdef WINDOWS + pc_cur = __PIQueryPerformanceCounter(); + return ((__pi_perf_freq > 0) ? ((pc_cur - pc_st) / double(__pi_perf_freq) * 1.E+3) : -1.); + //t_cur = GetCurrentTime(); + //return (double)(t_cur - t_st); +#else +# ifdef MAC_OS + clock_get_time(__pi_mac_clock, &t_cur); +# else + clock_gettime(0, &t_cur); +# endif + return (t_cur.tv_sec - t_st.tv_sec) * 1.e+3 + (t_cur.tv_nsec - t_st.tv_nsec - PISystemTests::time_elapsed_ns) / 1.e+6; +#endif +} + + +double PITimer::elapsed_s() { +#ifdef WINDOWS + pc_cur = __PIQueryPerformanceCounter(); + return ((__pi_perf_freq > 0) ? ((pc_cur - pc_st) / double(__pi_perf_freq)) : -1.); + //t_cur = GetCurrentTime(); + //return (t_cur - t_st) / 1000.; +#else +# ifdef MAC_OS + clock_get_time(__pi_mac_clock, &t_cur); +# else + clock_gettime(0, &t_cur); +# endif + return (t_cur.tv_sec - t_st.tv_sec) + (t_cur.tv_nsec - t_st.tv_nsec - PISystemTests::time_elapsed_ns) / 1.e+9; +#endif +} + + +double PITimer::reset_time_n() { +#ifdef WINDOWS + return t_st * 1.e+6; +#else + return t_st.tv_sec * 1.e+9 + t_st.tv_nsec; +#endif +} + + +double PITimer::reset_time_u() { +#ifdef WINDOWS + return t_st * 1.e+3; +#else + return t_st.tv_sec * 1.e+6 + t_st.tv_nsec / 1.e+3; +#endif +} + + +double PITimer::reset_time_m() { +#ifdef WINDOWS + return (double)t_st; +#else + return t_st.tv_sec * 1.e+3 + t_st.tv_nsec / 1.e+6; +#endif +} + + +double PITimer::reset_time_s() { +#ifdef WINDOWS + return t_st / 1000.; +#else + return t_st.tv_sec + t_st.tv_nsec / 1.e+9; +#endif +} + + +PISystemTime PITimer::reset_time() { +#ifdef WINDOWS + return PISystemTime(t_st / 1000, (t_st % 1000) * 1000000); +#else + return PISystemTime(t_st.tv_sec, t_st.tv_nsec); +#endif +} + + +double PITimer::elapsed_system_n() { +#ifdef WINDOWS + llong pc_cur = __PIQueryPerformanceCounter(); + return ((__pi_perf_freq > 0) ? (pc_cur / double(__pi_perf_freq) * 1.E+9) : -1.); + //long t_cur = GetCurrentTime(); + //return (t_cur * 1000000.); +#else +# ifdef MAC_OS + mach_timespec_t t_cur; + clock_get_time(__pi_mac_clock, &t_cur); +# else + timespec t_cur; + clock_gettime(0, &t_cur); +# endif + return (t_cur.tv_sec * 1.e+9 + t_cur.tv_nsec); +#endif +} + + +double PITimer::elapsed_system_u() { +#ifdef WINDOWS + llong pc_cur = __PIQueryPerformanceCounter(); + return ((__pi_perf_freq > 0) ? (pc_cur / double(__pi_perf_freq) * 1.E+6) : -1.); + //long t_cur = GetCurrentTime(); + //return (t_cur * 1000.); +#else +# ifdef MAC_OS + mach_timespec_t t_cur; + clock_get_time(__pi_mac_clock, &t_cur); +# else + timespec t_cur; + clock_gettime(0, &t_cur); +# endif + return (t_cur.tv_sec * 1.e+6 + (t_cur.tv_nsec / 1.e+3)); +#endif +} + + +double PITimer::elapsed_system_m() { +#ifdef WINDOWS + llong pc_cur = __PIQueryPerformanceCounter(); + return ((__pi_perf_freq > 0) ? (pc_cur / double(__pi_perf_freq) * 1.E+3) : -1.); + //long t_cur = GetCurrentTime(); + //return (double)t_cur; +#else +# ifdef MAC_OS + mach_timespec_t t_cur; + clock_get_time(__pi_mac_clock, &t_cur); +# else + timespec t_cur; + clock_gettime(0, &t_cur); +# endif + return (t_cur.tv_sec * 1.e+3 + (t_cur.tv_nsec / 1.e+6)); +#endif +} + + +double PITimer::elapsed_system_s() { +#ifdef WINDOWS + llong pc_cur = __PIQueryPerformanceCounter(); + return ((__pi_perf_freq > 0) ? (pc_cur / double(__pi_perf_freq)) : -1.); + //long t_cur = GetCurrentTime(); + //return (t_cur / 1000.); +#else +# ifdef MAC_OS + mach_timespec_t t_cur; + clock_get_time(__pi_mac_clock, &t_cur); +# else + timespec t_cur; + clock_gettime(0, &t_cur); +# endif + return (t_cur.tv_sec + (t_cur.tv_nsec / 1.e+9)); +#endif +} diff --git a/_oldpip/pip_0.4.0_r5/pitimer.h b/_oldpip/pip_0.4.0_r5/pitimer.h new file mode 100644 index 0000000..a7130a2 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/pitimer.h @@ -0,0 +1,269 @@ +/*! \file pitimer.h + * \brief Timer +*/ +/* + PIP - Platform Independent Primitives + Timer + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +#ifndef PITIMER_H +#define PITIMER_H + +#include "pithread.h" +#include "pitime.h" + +typedef void (*TimerEvent)(void * , int ); + +class PIP_EXPORT PITimer +#ifndef PIP_TIMER_RT +: public PIThread +#else +: public PIObject +#endif +{ + PIOBJECT(PITimer) +public: + + //! \brief Constructs timer with execution function \b slot and common data \b data. + PITimer(TimerEvent slot = 0, void * data = 0, bool threaded = true); + PITimer(bool threaded); + virtual ~PITimer(); + + + //! \brief Set custom data. + void setData(void * data_) {data = data_;} + + //! \brief Set timer execution function. + void setSlot(TimerEvent slot) {ret_func = slot;} + + //! \brief Returns current loop delay. + double interval() const {return interval_;} + + EVENT_HANDLER0(void, reset) { +# ifdef WINDOWS + //t_st = GetCurrentTime(); + pc_st = __PIQueryPerformanceCounter(); +# elif defined(MAC_OS) + clock_get_time(__pi_mac_clock, &t_st); +# else + clock_gettime(0, &t_st); +# endif + } + EVENT_HANDLER1(void, start, int, msecs) {start(double(msecs));} + EVENT_HANDLER1(void, start, double, msecs); + EVENT_HANDLER2(void, deferredStart, double, interval_msecs, double, delay_msecs); + EVENT_HANDLER2(void, deferredStart, double, interval_msecs, const PIDateTime &, start_datetime); +#ifndef PIP_TIMER_RT + EVENT_HANDLER0(void, stop) {running_ = false; PIThread::stop();} +#else + EVENT_HANDLER0(void, stop); + EVENT_HANDLER0(bool, waitForFinish) {return waitForFinish(-1);} + EVENT_HANDLER1(bool, waitForFinish, int, timeout_msecs); + bool isRunning() const {return running_;} + void needLockRun(bool need) {lockRun = need;} + EVENT_HANDLER0(void, lock) {mutex_.lock();} + EVENT_HANDLER0(void, unlock) {mutex_.unlock();} +#endif + + //! \brief Add frequency delimiter \b delim with optional delimiter slot \b slot. + void addDelimiter(int delim, TimerEvent slot = 0) {ret_funcs << TimerSlot(slot, delim);} + + //! \brief Remove all frequency delimiters \b delim. + void removeDelimiter(int delim) {for (int i = 0; i < ret_funcs.size_s(); ++i) if (ret_funcs[i].delim == delim) {ret_funcs.remove(i); i--;}} + + //! \brief Remove all frequency delimiters with slot \b slot. + void removeDelimiter(TimerEvent slot) {for (int i = 0; i < ret_funcs.size_s(); ++i) if (ret_funcs[i].slot == slot) {ret_funcs.remove(i); i--;}} + + //! \brief Remove all frequency delimiters \b delim with slot \b slot. + void removeDelimiter(int delim, TimerEvent slot) {for (int i = 0; i < ret_funcs.size_s(); ++i) if (ret_funcs[i].slot == slot && ret_funcs[i].delim == delim) {ret_funcs.remove(i); i--;}} + void setDelimiterValue(int delim, int value) {for (int i = 0; i < ret_funcs.size_s(); ++i) if (ret_funcs[i].delim == delim) ret_funcs[i].tick = value;} + void setDelimiterValue(TimerEvent slot, int value) {for (int i = 0; i < ret_funcs.size_s(); ++i) if (ret_funcs[i].slot == slot) ret_funcs[i].tick = value;} + void setDelimiterValue(int delim, TimerEvent slot, int value) {for (int i = 0; i < ret_funcs.size_s(); ++i) if (ret_funcs[i].slot == slot && ret_funcs[i].delim == delim) ret_funcs[i].tick = value;} + int delimiterValue(int delim) {for (int i = 0; i < ret_funcs.size_s(); ++i) if (ret_funcs[i].delim == delim) return ret_funcs[i].tick; return -1;} + int delimiterValue(int delim, TimerEvent slot) {for (int i = 0; i < ret_funcs.size_s(); ++i) if (ret_funcs[i].slot == slot && ret_funcs[i].delim == delim) return ret_funcs[i].tick; return -1;} + EVENT_HANDLER0(void, clearDelimiters) {ret_funcs.clear();} + + + //! \brief Returns nanoseconds elapsed from last \a reset() execution or from timer creation. + double elapsed_n(); // nanoseconds + + //! \brief Returns microseconds elapsed from last \a reset() execution or from timer creation. + double elapsed_u(); // microseconds + + //! \brief Returns milliseconds elapsed from last \a reset() execution or from timer creation. + double elapsed_m(); // milliseconds + + //! \brief Returns seconds elapsed from last \a reset() execution or from timer creation. + double elapsed_s(); // seconds + + + double reset_time_n(); // nanoseconds + double reset_time_u(); // microseconds + double reset_time_m(); // milliseconds + double reset_time_s(); // seconds + + + //! \brief Returns time mark of last \a reset() execution or timer creation. + PISystemTime reset_time(); + + + //! \brief Returns nanoseconds representation of current system time. + static double elapsed_system_n(); // nanoseconds + + //! \brief Returns microseconds representation of current system time. + static double elapsed_system_u(); // microseconds + + //! \brief Returns milliseconds representation of current system time. + static double elapsed_system_m(); // milliseconds + + //! \brief Returns seconds representation of current system time. + static double elapsed_system_s(); // seconds + + +#ifdef PIP_TIMER_RT + class TimerPool: public PIThread { + public: + TimerPool(): PIThread() {/*cout << "+++++new pool\n"; */ti = -1;} + ~TimerPool() {stop();} + void add(PITimer * t) {mutex.lock(); timers << TimerPair(t, 0); mutex.unlock();} + void remove(PITimer * t); + bool isEmpty() const {return timers.isEmpty();} + typedef PIPair TimerPair; + private: + static void empty_handler(int) {} + void begin(); + void run(); + void end() {/*cout << "pool end\n"; */if (ti != -1) timer_delete(timer); ti = -1;} + int ti, si; + sigset_t ss; + sigevent se; + sigval sv; + itimerspec spec; + + timer_t timer; + PIVector timers; + PIMutex mutex; + }; + static void timer_event(sigval e); + int ticks; +#endif + + EVENT2(timeout, void * , data, int, delimiter) + +//! \handlers +//! \{ + + /** \fn void reset() + * \brief Set internal time mark to current system time + * \details This function used for set start time mark. Later + * you can find out elapsed time from this time mark to any + * moment of time with \a elapsed_s(), \a elapsed_m(), + * \a elapsed_u() or \a elapsed_n() function. + * \sa \a elapsed_s(), \a elapsed_m(), \a elapsed_u(), \a elapsed_n() */ + + /** \fn void start(int msecs) + * \brief Start timer with \b msecs loop delay + * \details Start execution of timer functions with frequency = 1 / msecs Hz. */ + + /** \fn void start(double msecs) + * \brief Start timer with \b msecs loop delay + * \details Start execution of timer functions with frequency = 1. / msecs Hz. + * Instead of \a start(int msecs) function this variant allow start timer + * with frequencies more than 1 kHz. */ + + //! \fn void stop() + //! \brief Stop timer + + /** \fn void deferredStart(double interval_msecs, double delay_msecs) + * \brief Start timer with \b interval_msecs loop delay after \b delay_msecs delay. + * \details Timer wait \b delay_msecs milliseconds and then normally starts with + * \b interval_msecs loop delay. + * \sa \a void start(double msecs), \a void deferredStart(double interval_msecs, const PIDateTime & start_datetime) */ + + /** \fn void deferredStart(double interval_msecs, const PIDateTime & start_datetime) + * \brief Start timer with \b interval_msecs loop delay after \b start_datetime date and time. + * \details Timer wait until \b start_datetime and then normally starts with + * \b interval_msecs loop delay. + * \sa \a void start(double msecs), \a void deferredStart(double interval_msecs, double delay_msecs) */ + + //! \fn void clearDelimiters() + //! \brief Remove all frequency delimiters. + +//! \} +//! \events +//! \{ + + /** \fn void timeout(void * data, int delimiter) + * \brief Raise on timer tick + * \details \b Data can be set with function \a setData(void * data) or from constructor. + * \b Delimiter if frequency delimiter, 1 for main loop. */ + + +//! \} + +protected: + //! Virtual timer execution function, similar to "slot" or event \a void timeout(void * data, int delimiter). + //! By default is empty. + virtual void tick(void * data, int delimiter) {;} + +private: +#ifndef PIP_TIMER_RT + void run(); + void end() {interval_ = 0.;} + + PISystemTime st_time, inc_time; + bool deferred_; +#else + bool threaded; + volatile bool lockRun; + PIMutex mutex_; + int ti; + itimerspec spec; + timer_t timer; + sigevent se; +#endif + bool running_; + double interval_; + +#ifdef WINDOWS + llong pc_st, pc_cur, tt_st, tt_cur; + long +#elif defined(MAC_OS) + mach_timespec_t +#else + timespec +#endif + t_st, t_cur; + + struct TimerSlot { + TimerSlot(TimerEvent slot_ = 0, int delim_ = 1) {slot = slot_; delim = delim_; tick = 0;} + TimerEvent slot; + int delim; + int tick; + }; + + void * data; + TimerEvent ret_func; + PIVector ret_funcs; + +}; + +#ifdef PIP_TIMER_RT +extern PITimer::TimerPool * pool; +#endif + +#endif // PITIMER_H diff --git a/_oldpip/pip_0.4.0_r5/piusb.cpp b/_oldpip/pip_0.4.0_r5/piusb.cpp new file mode 100644 index 0000000..d1f6dec --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/piusb.cpp @@ -0,0 +1,410 @@ +#include "piusb.h" +#include "piconfig.h" + +#ifdef PIP_USB +# ifdef WINDOWS +# include +# else +# include +# endif +#endif + +REGISTER_DEVICE(PIUSB); + + +PIUSB::PIUSB(ushort vid, ushort pid): PIIODevice("", ReadWrite) { + vid_ = vid; + pid_ = pid; + intefrace_ = 0; + hdev = 0; + interface_claimed = -1; + setPath(PIString::fromNumber(vid_, 16).expandLeftTo(4, "0") + ":" + PIString::fromNumber(pid_, 16).expandLeftTo(4, "0")); + setDeviceNumber(1); + setTimeoutRead(1000); + setTimeoutWrite(1000); +} + + +void PIUSB::Endpoint::parse() { + direction = Write; + transfer_type = Control; + synchronisation_type = NoSynchonisation; + usage_type = DataEndpoint; + direction = (Direction)((address >> 7) & 1); + transfer_type = (TransferType)(attributes & 3); + if (transfer_type == Isochronous) { + synchronisation_type = (SynchronisationType)((attributes >> 2) & 3); + usage_type = (UsageType)((attributes >> 4) & 3); + } +} + + +PIUSB::Endpoint PIUSB::getEndpointByAddress(uchar address) { + piForeachC (Endpoint & i, eps) + if (i.address == address) + return i; + return Endpoint(); +} + + +PIVector PIUSB::endpointsRead() { + PIVector ret; + piForeachC (Endpoint & i, eps) + if (i.direction == Endpoint::Read) + ret << i; + return ret; +} + + +PIVector PIUSB::endpointsWrite() { + PIVector ret; + piForeachC (Endpoint & i, eps) + if (i.direction == Endpoint::Write) + ret << i; + return ret; +} + + +bool PIUSB::setConfiguration(uchar value) { +#ifdef PIP_USB + if (hdev == 0) return false; + bool found = false; + piForeachC (Configuration & c, desc_.configurations) + if (c.value_to_select == value) {found = true; conf_ = c; break;} + if (!found) { + piCoutObj << "Can`t find configuration with \"value_to_select\" =" << value; + return false; + } + if (interface_claimed >= 0) + usb_release_interface(hdev, interface_claimed); + interface_claimed = -1; + return setInterface(conf_.interfaces.front().value_to_select); +#else + return false; +#endif +} + + +bool PIUSB::setInterface(uchar value) { +#ifdef PIP_USB + if (hdev == 0) return false; + bool found = false; + piForeachC (Interface & i, conf_.interfaces) + if (i.value_to_select == value) {found = true; iface_ = i; break;} + if (!found) { + piCoutObj << "Can`t find interface with \"value_to_select\" =" << value; + return false; + } + if (interface_claimed >= 0) + usb_release_interface(hdev, interface_claimed); + interface_claimed = -1; + if (usb_claim_interface(hdev, iface_.value_to_select) < 0) { + piCoutObj << "Error: Cant`t claim interface!"; + return false; + } + eps.clear(); + eps = iface_.endpoints; + ep_read = ep_write = Endpoint(); + for (int i = 0; i < eps.size_s(); ++i) { + if (eps[i].direction == Endpoint::Read && ep_read.isNull()) + ep_read = eps[i]; + if (eps[i].direction == Endpoint::Write && ep_write.isNull()) + ep_write = eps[i]; + } + interface_claimed = value; + return true; +#else + return false; +#endif +} + + +bool PIUSB::configureDevice(const void * e_main, const void * e_parent) { +#ifdef PIP_USB + PIConfig::Entry * em = (PIConfig::Entry * )e_main; + PIConfig::Entry * ep = (PIConfig::Entry * )e_parent; + PIString vp = readDeviceSetting("device", "", em, ep); + ushort v, p; + if (vp.isEmpty()) { + v = readDeviceSetting("vid", vendorID(), em, ep); + p = readDeviceSetting("pid", productID(), em, ep); + } else { + v = vp.left(vp.find(":")).toInt(16); + p = vp.right(vp.length() - vp.find(":") - 1).toInt(16); + } + setVendorID(v); + setProductID(p); + setDeviceNumber(readDeviceSetting("deviceNumber", deviceNumber(), em, ep)); + setConfiguration(readDeviceSetting("configuration", currentConfiguration().value_to_select, em, ep)); + setInterface(readDeviceSetting("interface", currentInterface().value_to_select, em, ep)); + setEndpointRead(Endpoint(readDeviceSetting("endpointRead", endpointRead().address, em, ep))); + setEndpointWrite(Endpoint(readDeviceSetting("endpointWrite", endpointWrite().address, em, ep))); + return true; +#else + return false; +#endif +} + + +bool PIUSB::openDevice() { +#ifdef PIP_USB + if (path().size_s() >= 8) { + vid_ = path().left(4).toInt(16); + pid_ = path().right(4).toInt(16); + } + if (hdev != 0) closeDevice(); + hdev = 0; + interface_claimed = -1; + ep_write = ep_read = Endpoint(); + usb_init(); + //usb_set_debug(4); + if (usb_find_busses() < 0) { + piCoutObj << "Error: Cant`t find busses!"; + return false; + } + if (usb_find_devices() < 0) { + piCoutObj << "Error: Cant`t find devices!"; + return false; + } + + //piCoutObj << "Search for device ... " << flush; + int cur_num = 1; + bool found = false; + struct usb_device * dev; + struct usb_bus * bus; + for (bus = usb_get_busses(); bus; bus = bus->next) { + for (dev = bus->devices; dev; dev = dev->next) { + if (dev->descriptor.idVendor == vid_ && dev->descriptor.idProduct == pid_) { + if (cur_num == deviceNumber()) { + struct usb_device_descriptor & dd(dev->descriptor); + desc_.usb_spec_number = dd.bcdUSB; + desc_.device_class = dd.bDeviceClass; + desc_.device_subclass = dd.bDeviceSubClass; + desc_.device_protocol = dd.bDeviceProtocol; + desc_.max_packet_size = dd.bMaxPacketSize0; + desc_.id_vendor = dd.idVendor; + desc_.id_product = dd.idProduct; + desc_.id_device_release = dd.bcdDevice; + desc_.index_manufacturer = dd.iManufacturer; + desc_.index_product = dd.iProduct; + desc_.index_serial = dd.iSerialNumber; + desc_.configurations.clear(); + for (int c = 0; c < dd.bNumConfigurations; ++c) { + desc_.configurations << Configuration(); + Configuration & conf(desc_.configurations.back()); + struct usb_config_descriptor & dc(dev->config[c]); + conf.index = c; + conf.value_to_select = dc.bConfigurationValue; + conf.attributes = dc.bmAttributes; + conf.max_power = ushort(dc.MaxPower) * 2; + conf.self_powered = (conf.attributes >> 6) & 1; + conf.remote_wakeup = (conf.attributes >> 5) & 1; + conf.interfaces.clear(); + for (int i = 0; i < dc.bNumInterfaces; ++i) { + conf.interfaces << Interface(); + Interface & infc(conf.interfaces.back()); + struct usb_interface_descriptor * di(dc.interface[c].altsetting); + infc.index = i; + infc.value_to_select = di->bAlternateSetting; + infc.class_code = di->bInterfaceClass; + infc.subclass_code = di->bInterfaceSubClass; + infc.protocol_code = di->bInterfaceProtocol; + infc.endpoints.clear(); + for (int e = 0; e < di->bNumEndpoints; ++e) { + infc.endpoints << Endpoint(di->endpoint[e].bEndpointAddress, + di->endpoint[e].bmAttributes, + di->endpoint[e].wMaxPacketSize); + } + } + } + if (!desc_.configurations.isEmpty()) + conf_ = desc_.configurations.front(); + + struct usb_interface_descriptor * is = dev->config->interface->altsetting; + int epn = is->bNumEndpoints; + eps.clear(); + for (int i = 0; i < epn; ++i) { + eps << Endpoint(is->endpoint[i].bEndpointAddress, + is->endpoint[i].bmAttributes, + is->endpoint[i].wMaxPacketSize); + if (eps.back().direction == Endpoint::Write && (eps.back().address == ep_write.address || ep_write.address == 0)) ep_write = eps.back(); + if (eps.back().direction == Endpoint::Read && (eps.back().address == ep_read.address || ep_read.address == 0)) ep_read = eps.back(); + } + + //piCoutObj << "Device found at address:" << "Bus: " << dev->bus->dirname << ", Device: " << dev->filename; + found = true; + break; + } else cur_num++; + } + } + if (found) break; + } + if (!found) { + piCoutObj << "Error: Cant`t find device!"; + return false; + } + //piCoutObj << "Open ... " << flush; + hdev = usb_open(dev); + if (hdev == 0) { + piCoutObj << "Error: Cant`t open device:" << usb_strerror(); + return false; + }// else piCoutObj << "ok"; + //usb_reset(hdev); + + //usb_set_configuration(hdev, 1); + //usb_set_altinterface(hdev, 0); + +# ifndef WINDOWS + char tbuff[256]; + //piCoutObj << "Check for bounded driver ... " << flush; + if (usb_get_driver_np(hdev, intefrace_, tbuff, sizeof(tbuff) - 1) >= 0) { + //piCoutObj << "yes" << "Found driver: " << tbuff; + //piCoutObj << "Detach driver ... " << flush; + if (usb_detach_kernel_driver_np(hdev, intefrace_)< 0) { + piCoutObj << "Error: Cant`t detach bounded driver!"; + return false; + }// else piCoutObj << "ok"; + }// else piCoutObj << "no"; +# endif + + //piCoutObj << "Claim interface ... " << flush; + if (usb_claim_interface(hdev, intefrace_) < 0) { + piCoutObj << "Error: Cant`t claim interface:" << usb_strerror(); + return false; + } // else piCoutObj << "ok"; + interface_claimed = intefrace_; + + return true; +#else + return false; +#endif +} + + +bool PIUSB::closeDevice() { +#ifdef PIP_USB + if (hdev == 0) return true; + //usb_reset(hdev); + usb_release_interface(hdev, intefrace_); + usb_close(hdev); + hdev = 0; + interface_claimed = -1; + return true; +#else + return false; +#endif +} + + +int PIUSB::read(void * read_to, int max_size) { +#ifdef PIP_USB + if (!opened_ || ep_read.isNull()) return -1; + switch (ep_read.transfer_type) { + case Endpoint::Bulk: /*piCoutObj << "bulk read" << max_size;*/ return usb_bulk_read(hdev, ep_read.address, (char * )read_to, max_size, timeout_r); break; + case Endpoint::Interrupt: return usb_interrupt_read(hdev, ep_read.address, (char * )read_to, max_size, timeout_r); break; + default: break; + } + return -1; +#else + return -1; +#endif +} + + +int PIUSB::write(const void * data, int max_size) { +#ifdef PIP_USB + if (!opened_ || ep_write.isNull()) return -1; + switch (ep_read.transfer_type) { + case Endpoint::Bulk: /*piCoutObj << "bulk write" << max_size;*/ return usb_bulk_write(hdev, ep_write.address, (char * )const_cast(data), max_size, timeout_w); break; + case Endpoint::Interrupt: return usb_interrupt_write(hdev, ep_read.address, (char * )data, max_size, timeout_w); break; + default: break; + } + return -1; +#else + return -1; +#endif +} + + +int PIUSB::controlWrite(const void * data, int max_size) { +#ifdef PIP_USB + if (!opened_) return -1; + //return usb_control_msg(hdev, ); + return -1; +#else + return -1; +#endif +} + + +void PIUSB::flush() { +#ifdef PIP_USB + if (!opened_) return; + if (!ep_read.isNull()) usb_resetep(hdev, ep_read.address); + if (!ep_write.isNull()) usb_resetep(hdev, ep_write.address); +#endif +} + + +PICout operator<<(PICout s, const PIUSB::Endpoint & v) { + s.setControl(0, true); + s << NewLine << "{" << NewLine; + if (v.isNull()) + s << " " << "Null Endpoint"; + else { + s << " " << "Address: " << v.address << NewLine; + s << " " << "Attributes: " << v.attributes << NewLine; + s << " " << "Direction: " << (v.direction == PIUSB::Endpoint::Write ? "Write" : "Read") << NewLine; + s << " " << "Transfer Type: "; + switch (v.transfer_type) { + case PIUSB::Endpoint::Control: s << "Control" << NewLine; break; + case PIUSB::Endpoint::Bulk: s << "Bulk" << NewLine; break; + case PIUSB::Endpoint::Interrupt: s << "Interrupt" << NewLine; break; + case PIUSB::Endpoint::Isochronous: s << "Isochronous" << NewLine; break; + default: break; + } + if (v.transfer_type == PIUSB::Endpoint::Isochronous) { + s << " " << "Synchronisation Type: "; + switch (v.synchronisation_type) { + case PIUSB::Endpoint::NoSynchonisation: s << "No Synchonisation" << NewLine; break; + case PIUSB::Endpoint::Asynchronous: s << "Asynchronous" << NewLine; break; + case PIUSB::Endpoint::Adaptive: s << "Adaptive" << NewLine; break; + case PIUSB::Endpoint::Synchronous: s << "Synchronous" << NewLine; break; + default: break; + } + s << " " << "Usage Type: "; + switch (v.usage_type) { + case PIUSB::Endpoint::DataEndpoint: s << "Data Endpoint" << NewLine; break; + case PIUSB::Endpoint::FeedbackEndpoint: s << "Feedback Endpoint" << NewLine; break; + case PIUSB::Endpoint::ExplicitFeedbackDataEndpoint: s << "Explicit Feedback Data Endpoint" << NewLine; break; + default: break; + } + } + s << " " << "Max Packet Size: " << v.max_packet_size << NewLine; + } + s << "}" << NewLine; + s.restoreControl(); + return s; +} + + +PIString PIUSB::constructFullPath() const { + PIString ret(fullPathPrefix() + "://"); + ret << PIString::fromNumber(vendorID(), 16).toLowerCase() << ":" << PIString::fromNumber(productID(), 16).toLowerCase() << ":" << deviceNumber() << ":" << endpointRead().address << ":" << endpointWrite().address; + return ret; +} + + +void PIUSB::configureFromFullPath(const PIString & full_path) { + PIStringList pl = full_path.split(":"); + for (int i = 0; i < pl.size_s(); ++i) { + PIString p(pl[i]); + switch (i) { + case 0: setVendorID(p.toUShort(16)); break; + case 1: setProductID(p.toUShort(16)); break; + case 2: setDeviceNumber(p.toInt()); break; + case 3: setEndpointRead(Endpoint(p.toInt())); break; + case 4: setEndpointWrite(Endpoint(p.toInt())); break; + } + } +} diff --git a/_oldpip/pip_0.4.0_r5/piusb.h b/_oldpip/pip_0.4.0_r5/piusb.h new file mode 100644 index 0000000..437c1b5 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/piusb.h @@ -0,0 +1,153 @@ +/*! \file piusb.h + * \brief USB device +*/ +/* + PIP - Platform Independent Primitives + USB, based on libusb + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +#ifndef PIUSB_H +#define PIUSB_H + +#include "piiodevice.h" + +struct usb_dev_handle; + +class PIP_EXPORT PIUSB: public PIIODevice +{ + PIIODEVICE(PIUSB) +public: + PIUSB(ushort vid = 0, ushort pid = 0); + + struct Endpoint { + Endpoint(uchar a = 0, uchar at = 0, ushort mps = 0) {address = a; attributes = at; max_packet_size = mps; parse();} + + enum Direction {Write = 0, Read = 1}; + enum TransferType {Control = 0, Isochronous = 1, Bulk = 2, Interrupt = 3}; + enum SynchronisationType {NoSynchonisation= 0, Asynchronous = 2, Adaptive = 1, Synchronous = 3}; + enum UsageType {DataEndpoint = 0, FeedbackEndpoint = 2, ExplicitFeedbackDataEndpoint = 1}; + + void parse(); + bool isNull() const {return address == 0;} + + uchar address; + uchar attributes; + ushort max_packet_size; + Direction direction; + TransferType transfer_type; + SynchronisationType synchronisation_type; + UsageType usage_type; + }; + + struct Interface { + Interface() {index = value_to_select = class_code = subclass_code = protocol_code = 0;} + uchar index; + uchar value_to_select; + ushort class_code; + ushort subclass_code; + ushort protocol_code; + PIVector endpoints; + }; + + struct Configuration { + Configuration() {index = value_to_select = attributes = max_power = 0; self_powered = remote_wakeup = false;} + uchar index; + uchar value_to_select; + uchar attributes; + ushort max_power; // mA + bool self_powered; + bool remote_wakeup; + PIVector interfaces; + }; + + struct Descriptor { + Descriptor() {memset(this, 0, sizeof(Descriptor));} + ushort usb_spec_number; + uchar device_class; + uchar device_subclass; + uchar device_protocol; + uchar max_packet_size; + ushort id_vendor; + ushort id_product; + ushort id_device_release; + uchar index_manufacturer; + uchar index_product; + uchar index_serial; + PIVector configurations; + }; + + const PIUSB::Descriptor & currentDescriptor() const {return desc_;} + const PIUSB::Configuration & currentConfiguration() const {return conf_;} + const PIUSB::Interface & currentInterface() const {return iface_;} + + ushort vendorID() const {return vid_;} + ushort productID() const {return pid_;} + + int deviceNumber() const {return property("deviceNumber").toInt();} + int timeoutRead() const {return property("timeoutRead").toInt();} + int timeoutWrite() const {return property("timeoutWrite").toInt();} + const PIUSB::Endpoint & endpointRead() const {return ep_read;} + const PIUSB::Endpoint & endpointWrite() const {return ep_write;} + + const PIVector & endpoints() const {return eps;} + PIVector endpointsRead(); + PIVector endpointsWrite(); + PIUSB::Endpoint getEndpointByAddress(uchar address); + + void setVendorID(ushort vid) {vid_ = vid; setPath(PIString::fromNumber(vid_, 16).expandLeftTo(4, "0") + ":" + PIString::fromNumber(pid_, 16).expandLeftTo(4, "0"));} + void setProductID(ushort pid) {pid_ = pid; setPath(PIString::fromNumber(vid_, 16).expandLeftTo(4, "0") + ":" + PIString::fromNumber(pid_, 16).expandLeftTo(4, "0"));} + + bool setConfiguration(uchar value); + bool setInterface(uchar value); + + void setEndpointRead(const PIUSB::Endpoint & ep) {ep_read = ep;} + void setEndpointWrite(const PIUSB::Endpoint & ep) {ep_write = ep;} + void setDeviceNumber(int dn) {setProperty("deviceNumber", dn);} + void setTimeoutRead(int t) {setProperty("timeoutRead", t);} + void setTimeoutWrite(int t) {setProperty("timeoutWrite", t);} + + int read(void * read_to, int max_size); + int write(const void * data, int max_size); + int controlWrite(const void * data, int max_size); + + void flush(); + + PIString constructFullPath() const; + +protected: + PIString fullPathPrefix() const {return "usb";} + void configureFromFullPath(const PIString & full_path); + bool configureDevice(const void * e_main, const void * e_parent = 0); + //bool init(); + bool openDevice(); + bool closeDevice(); + + PIVector eps; + ushort vid_, pid_; + int intefrace_, timeout_r, timeout_w; + int interface_claimed; + PIUSB::Endpoint ep_read, ep_write; + Descriptor desc_; + Configuration conf_; + Interface iface_; + usb_dev_handle * hdev; + +}; + +PICout operator <<(PICout s, const PIUSB::Endpoint & v); + +#endif // PIUSB_H diff --git a/_oldpip/pip_0.4.0_r5/pivariant.cpp b/_oldpip/pip_0.4.0_r5/pivariant.cpp new file mode 100644 index 0000000..e9a4424 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/pivariant.cpp @@ -0,0 +1,534 @@ +/* + PIP - Platform Independent Primitives + Variant type + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +#include "pivariant.h" + + +/** \class PIVariant + * \brief Variant type + * \details + * \section PIVariant_sec0 Synopsis + * This class provides general type that can contains all standard types, some + * PIP types or custom type. In case of standard types this class also provides + * convertions between them. + * + * \section PIVariant_sec1 Usage + * %PIVariant useful if you want pass many variables with different types in + * single array, e.g.: + * \code{cpp} + * PIVector array; + * array << PIVariant(10) << PIVariant(1.61) << PIVariant(true) << PIVariant("0xFF"); + * piCout << array; + * piForeachC (PIVariant & i, array) + * piCout << i.toInt(); + * \endcode + * Result: + * \code{cpp} + * {PIVariant(Int, 10), PIVariant(Double, 1,61), PIVariant(Bool, true), PIVariant(String, 0xFF)} + * 10 + * 1 + * 1 + * 255 + * \endcode + * */ + + +PIVariant::PIVariant() { + type_ = PIVariant::Invalid; + memset(_vraw, 0, __PIVARIANT_UNION_SIZE__); +} + + +PIVariant & PIVariant::operator =(const PIVariant & v) { + type_ = v.type_; + memcpy(_vraw, v._vraw, __PIVARIANT_UNION_SIZE__); + _vbytearray = v._vbytearray; + _vbitarray = v._vbitarray; + _vstring = v._vstring; + _vstringlist = v._vstringlist; + _vcustom = v._vcustom; + return *this; +} + + +bool PIVariant::operator ==(const PIVariant & v) const { + if (type_ != v.type_) return false; + switch (type_) { + case PIVariant::Bool: + case PIVariant::Char: + case PIVariant::UChar: + case PIVariant::Short: + case PIVariant::UShort: + case PIVariant::Int: + case PIVariant::UInt: + case PIVariant::Long: + case PIVariant::ULong: return _vint == v._vint; + case PIVariant::LLong: + case PIVariant::ULLong: return _vllong == v._vllong; + case PIVariant::Float: return _vfloat == v._vfloat; + case PIVariant::Double: return _vdouble == v._vdouble; + case PIVariant::LDouble: return _vldouble == v._vldouble; + case PIVariant::Complexd: return _vcomplexd == _vvcomplexd(v); + case PIVariant::Complexld: return _vcomplexld == _vvcomplexld(v); + case PIVariant::BitArray: return _vbitarray == v._vbitarray; + case PIVariant::ByteArray: return _vbytearray == v._vbytearray; + case PIVariant::String: return _vstring == v._vstring; + case PIVariant::StringList: return _vstringlist == v._vstringlist; + case PIVariant::Time: return _vtime == _vvtime(v); + case PIVariant::Date: return _vdate == _vvdate(v); + case PIVariant::DateTime: return _vdatetime == _vvdatetime(v); + case PIVariant::SystemTime: return _vsystime == _vvsystime(v); + default: break; + }; + return false; +} + + +PIVariant::Type PIVariant::typeFromName(const PIString & tname) { + PIString s = tname.trimmed().toLowerCase().replaceAll(" ", ""); + if (s == "bool" || s == "boolean") return PIVariant::Bool; + if (s == "char" || s == "sbyte") return PIVariant::Char; + if (s == "short" || s == "shortint" || s == "signedshort" || s == "signedshortint" || s == "sword") return PIVariant::Short; + if (s == "int" || s == "signed" || s == "signedint") return PIVariant::Int; + if (s == "long" || s == "longint" || s == "signedlong" || s == "signedlongint" || s == "sdword") return PIVariant::Long; + if (s == "llong" || s == "longlong" || s == "longlongint" || s == "signedlonglong" || s == "signedlonglongint" || s == "sqword") return PIVariant::LLong; + if (s == "uchar" || s == "byte") return PIVariant::UChar; + if (s == "ushort" || s == "unsignedshort" || s == "unsignedshortint" || s == "word") return PIVariant::UShort; + if (s == "uint" || s == "unsigned" || s == "unsignedint") return PIVariant::UInt; + if (s == "ulong" || s == "unsignedlong" || s == "unsignedlongint" || s == "dword") return PIVariant::ULong; + if (s == "ullong" || s == "unsignedlonglong" || s == "unsignedlonglongint" || s == "qword") return PIVariant::ULLong; + if (s == "float") return PIVariant::Float; + if (s == "double" || s == "real") return PIVariant::Double; + if (s == "ldouble" || s == "longdouble") return PIVariant::LDouble; + if (s == "complexd" || s == "complex") return PIVariant::Complexd; + if (s == "complexld" || s == "complex" || s == "complex") return PIVariant::Complexld; + if (s == "pibitarray" || s == "bitarray") return PIVariant::BitArray; + if (s == "pibytearray" || s == "bytearray" || s == "vector" || s == "pivector" || s == "vector" || s == "pivector" || + s == "vector" || s == "pivector") return PIVariant::ByteArray; + if (s == "pistring" || s == "string") return PIVariant::String; + if (s == "pistringlist" || s == "vector" || s == "vector" || s == "pivector" || s == "pivector") return PIVariant::StringList; + if (s == "pitime" || s == "time") return PIVariant::Time; + if (s == "pidate" || s == "date") return PIVariant::Date; + if (s == "pidatetime" || s == "datetime") return PIVariant::DateTime; + if (s == "pisystemtime" || s == "systemtime") return PIVariant::SystemTime; + return PIVariant::Invalid; +} + + +PIString PIVariant::typeName(PIVariant::Type type) { + switch (type) { + case PIVariant::Bool: return "Bool"; + case PIVariant::Char: return "Char"; + case PIVariant::UChar: return "UChar"; + case PIVariant::Short: return "Short"; + case PIVariant::UShort: return "UShort"; + case PIVariant::Int: return "Int"; + case PIVariant::UInt: return "UInt"; + case PIVariant::Long: return "Long"; + case PIVariant::ULong: return "ULong"; + case PIVariant::LLong: return "LLong"; + case PIVariant::ULLong: return "ULLong"; + case PIVariant::Float: return "Float"; + case PIVariant::Double: return "Double"; + case PIVariant::LDouble: return "LDouble"; + case PIVariant::Complexd: return "Complexd"; + case PIVariant::Complexld: return "Complexld"; + case PIVariant::BitArray: return "BitArray"; + case PIVariant::ByteArray: return "ByteArray"; + case PIVariant::String: return "String"; + case PIVariant::StringList: return "StringList"; + case PIVariant::Time: return "Time"; + case PIVariant::Date: return "Date"; + case PIVariant::DateTime: return "DateTime"; + case PIVariant::SystemTime: return "SystemTime"; + case PIVariant::Custom: return "Custom"; + default: break; + } + return "Invalid"; +} + + +/** \brief Returns variant content as boolean + * \details In case of numeric types returns \b true if value != 0. \n + * In case of String type returns \a PIString::toBool(). \n + * In case of StringList type returns \b false if string list is empty, + * otherwise returns \a PIString::toBool() of first string. \n + * In case of other types returns \b false. */ +bool PIVariant::toBool() const { + switch (type_) { + case PIVariant::Bool: + case PIVariant::Char: + case PIVariant::UChar: + case PIVariant::Short: + case PIVariant::UShort: + case PIVariant::Int: + case PIVariant::UInt: + case PIVariant::Long: + case PIVariant::ULong: return _vint != 0; + case PIVariant::LLong: + case PIVariant::ULLong: return _vllong != 0; + case PIVariant::Float: return _vfloat != 0; + case PIVariant::Double: return _vdouble != 0; + case PIVariant::LDouble: return _vldouble != 0; + case PIVariant::Complexd: return _vcomplexd.real() != 0; + case PIVariant::Complexld: return _vcomplexld.real() != 0; + case PIVariant::String: return _vstring.toBool(); + case PIVariant::StringList: if (_vstringlist.isEmpty()) return false; return _vstringlist.front().toBool(); + default: break; + } + return false; +} + + + +/** \brief Returns variant content as int + * \details In case of numeric types returns integer value. \n + * In case of String type returns \a PIString::toInt(). \n + * In case of StringList type returns \b 0 if string list is empty, + * otherwise returns \a PIString::toInt() of first string. \n + * In case of other types returns \b 0. */ +int PIVariant::toInt() const { + switch (type_) { + case PIVariant::Bool: + case PIVariant::Char: + case PIVariant::UChar: + case PIVariant::Short: + case PIVariant::UShort: + case PIVariant::Int: + case PIVariant::UInt: + case PIVariant::Long: + case PIVariant::ULong: return _vint; + case PIVariant::LLong: + case PIVariant::ULLong: return _vllong; + case PIVariant::Float: return _vfloat; + case PIVariant::Double: return _vdouble; + case PIVariant::LDouble: return _vldouble; + case PIVariant::Complexd: return _vcomplexd.real(); + case PIVariant::Complexld: return _vcomplexld.real(); + case PIVariant::String: return _vstring.toInt(); + case PIVariant::StringList: if (_vstringlist.isEmpty()) return 0; return _vstringlist.front().toInt(); + default: break; + } + return 0; +} + + +/** \brief Returns variant content as long long + * \details In case of numeric types returns integer value. \n + * In case of String type returns \a PIString::toLLong(). \n + * In case of StringList type returns \b 0L if string list is empty, + * otherwise returns \a PIString::toLLong() of first string. \n + * In case of other types returns \b 0L. */ +llong PIVariant::toLLong() const { + switch (type_) { + case PIVariant::Bool: + case PIVariant::Char: + case PIVariant::UChar: + case PIVariant::Short: + case PIVariant::UShort: + case PIVariant::Int: + case PIVariant::UInt: + case PIVariant::Long: + case PIVariant::ULong: return _vint; + case PIVariant::LLong: + case PIVariant::ULLong: return _vllong; + case PIVariant::Float: return _vfloat; + case PIVariant::Double: return _vdouble; + case PIVariant::LDouble: return _vldouble; + case PIVariant::Complexd: return _vcomplexd.real(); + case PIVariant::Complexld: return _vcomplexld.real(); + case PIVariant::String: return _vstring.toLLong(); + case PIVariant::StringList: if (_vstringlist.isEmpty()) return 0L; return _vstringlist.front().toLLong(); + default: break; + } + return 0L; +} + + +/** \brief Returns variant content as float + * \details In case of numeric types returns float value. \n + * In case of String type returns \a PIString::toFloat(). \n + * In case of StringList type returns \b 0.f if string list is empty, + * otherwise returns \a PIString::toFloat() of first string. \n + * In case of other types returns \b 0.f. */ +float PIVariant::toFloat() const { + switch (type_) { + case PIVariant::Bool: + case PIVariant::Char: + case PIVariant::UChar: + case PIVariant::Short: + case PIVariant::UShort: + case PIVariant::Int: + case PIVariant::UInt: + case PIVariant::Long: + case PIVariant::ULong: return _vint; + case PIVariant::LLong: + case PIVariant::ULLong: return _vllong; + case PIVariant::Float: return _vfloat; + case PIVariant::Double: return _vdouble; + case PIVariant::LDouble: return _vldouble; + case PIVariant::Complexd: return _vcomplexd.real(); + case PIVariant::Complexld: return _vcomplexld.real(); + case PIVariant::String: return _vstring.toFloat(); + case PIVariant::StringList: if (_vstringlist.isEmpty()) return 0.f; return _vstringlist.front().toFloat(); + default: break; + } + return 0.f; +} + + +/** \brief Returns variant content as double + * \details In case of numeric types returns double value. \n + * In case of String type returns \a PIString::toDouble(). \n + * In case of StringList type returns \b 0. if string list is empty, + * otherwise returns \a PIString::toDouble() of first string. \n + * In case of other types returns \b 0.. */ +double PIVariant::toDouble() const { + switch (type_) { + case PIVariant::Bool: + case PIVariant::Char: + case PIVariant::UChar: + case PIVariant::Short: + case PIVariant::UShort: + case PIVariant::Int: + case PIVariant::UInt: + case PIVariant::Long: + case PIVariant::ULong: return _vint; + case PIVariant::LLong: + case PIVariant::ULLong: return _vllong; + case PIVariant::Float: return _vfloat; + case PIVariant::Double: return _vdouble; + case PIVariant::LDouble: return _vldouble; + case PIVariant::Complexd: return _vcomplexd.real(); + case PIVariant::Complexld: return _vcomplexld.real(); + case PIVariant::String: return _vstring.toDouble(); + case PIVariant::StringList: if (_vstringlist.isEmpty()) return 0.; return _vstringlist.front().toDouble(); + default: break; + } + return 0.; +} + + +/** \brief Returns variant content as long double + * \details In case of numeric types returns long double value. \n + * In case of String type returns \a PIString::toLDouble(). \n + * In case of StringList type returns \b 0. if string list is empty, + * otherwise returns \a PIString::toLDouble() of first string. \n + * In case of other types returns \b 0.. */ +ldouble PIVariant::toLDouble() const { + switch (type_) { + case PIVariant::Bool: + case PIVariant::Char: + case PIVariant::UChar: + case PIVariant::Short: + case PIVariant::UShort: + case PIVariant::Int: + case PIVariant::UInt: + case PIVariant::Long: + case PIVariant::ULong: return _vint; + case PIVariant::LLong: + case PIVariant::ULLong: return _vllong; + case PIVariant::Float: return _vfloat; + case PIVariant::Double: return _vdouble; + case PIVariant::LDouble: return _vldouble; + case PIVariant::Complexd: return _vcomplexd.real(); + case PIVariant::Complexld: return _vcomplexld.real(); + case PIVariant::String: return _vstring.toLDouble(); + case PIVariant::StringList: if (_vstringlist.isEmpty()) return 0.; return _vstringlist.front().toLDouble(); + default: break; + } + return 0.; +} + + +/** \brief Returns variant content as complex + * \details In case of numeric types returns complex value. \n + * In case of String type returns \a PIString::toDouble(). \n + * In case of StringList type returns \b 0. if string list is empty, + * otherwise returns \a PIString::toDouble() of first string. \n + * In case of other types returns \b 0.. */ +complexd PIVariant::toComplexd() const { + switch (type_) { + case PIVariant::Bool: + case PIVariant::Char: + case PIVariant::UChar: + case PIVariant::Short: + case PIVariant::UShort: + case PIVariant::Int: + case PIVariant::UInt: + case PIVariant::Long: + case PIVariant::ULong: return _vint; + case PIVariant::LLong: + case PIVariant::ULLong: return _vllong; + case PIVariant::Float: return _vfloat; + case PIVariant::Double: return _vdouble; + case PIVariant::LDouble: return _vldouble; + case PIVariant::Complexd: return _vcomplexd.real(); + case PIVariant::Complexld: return _vcomplexld.real(); + case PIVariant::String: return _vstring.toDouble(); + case PIVariant::StringList: if (_vstringlist.isEmpty()) return complexd_0; return _vstringlist.front().toDouble(); + default: break; + } + return complexd_0; +} + + +/** \brief Returns variant content as long complex + * \details In case of numeric types returns long complex value. \n + * In case of String type returns \a PIString::toLDouble(). \n + * In case of StringList type returns \b 0. if string list is empty, + * otherwise returns \a PIString::toLDouble() of first string. \n + * In case of other types returns \b 0.. */ +complexld PIVariant::toComplexld() const { + switch (type_) { + case PIVariant::Bool: + case PIVariant::Char: + case PIVariant::UChar: + case PIVariant::Short: + case PIVariant::UShort: + case PIVariant::Int: + case PIVariant::UInt: + case PIVariant::Long: + case PIVariant::ULong: return _vint; + case PIVariant::LLong: + case PIVariant::ULLong: return _vllong; + case PIVariant::Float: return _vfloat; + case PIVariant::Double: return _vdouble; + case PIVariant::LDouble: return _vldouble; + case PIVariant::Complexd: return _vcomplexd.real(); + case PIVariant::Complexld: return _vcomplexld.real(); + case PIVariant::String: return _vstring.toLDouble(); + case PIVariant::StringList: if (_vstringlist.isEmpty()) return complexld_0; return _vstringlist.front().toLDouble(); + default: break; + } + return complexld_0; +} + + +/** \brief Returns variant content as time + * \details In case of Time type returns time value. \n + * In case of DateTime type returns time part of value. \n + * In case of other types returns \a PITime(). */ +PITime PIVariant::toTime() const { + if (type_ == PIVariant::Time) return _vtime; + if (type_ == PIVariant::DateTime) return _vtime; + return PITime(); +} + + +/** \brief Returns variant content as date + * \details In case of Date type returns date value. \n + * In case of DateTime type returns date part of value. \n + * In case of other types returns \a PIDate(). */ +PIDate PIVariant::toDate() const { + if (type_ == PIVariant::Date) return _vdate; + if (type_ == PIVariant::DateTime) return *((PIDate*)(&(_vdatetime.day))); + return PIDate(); +} + + +/** \brief Returns variant content as date and time + * \details In case of Time type returns time value with null date. \n + * In case of Date type returns date value with null time. \n + * In case of DateTime type returns date and time. \n + * In case of other types returns \a PIDateTime(). */ +PIDateTime PIVariant::toDateTime() const { + if (type_ == PIVariant::DateTime) return _vdatetime; + if (type_ == PIVariant::Time) return PIDateTime(_vtime); + if (type_ == PIVariant::Date) return PIDateTime(_vdate); + return PIDateTime(); +} + + +/** \brief Returns variant content as system time + * \details In case of SystemTime type returns system time. \n + * In case of other types returns \a PISystemTime::fromSeconds() from + * double value of variant content. */ +PISystemTime PIVariant::toSystemTime() const { + if (type_ == PIVariant::SystemTime) return _vsystime; + return PISystemTime::fromSeconds(toDouble()); +} + + +/** \brief Returns variant content as string + * \details In case of numeric types returns \a PIString::fromNumber(). \n + * In case of String type returns string value. \n + * In case of StringList type returns joined string ("(" + PIStringList::join("; ") + ")"). \n + * In case of BitArray or ByteArray types returns number of bits/bytes. \n + * In case of Time, Date or DateTime types returns toString() of this values. \n + * In case of SystemTime types returns second and nanoseconds of time + * ("(PISystemTime::seconds s, PISystemTime::nanoseconds ns)"). \n + * In case of other types returns \b "". */ +PIString PIVariant::toString() const { + switch (type_) { + case PIVariant::Bool: return _vint == 0 ? "false" : "true"; + case PIVariant::Char: + case PIVariant::UChar: + case PIVariant::Short: + case PIVariant::UShort: + case PIVariant::Int: + case PIVariant::UInt: + case PIVariant::Long: + case PIVariant::ULong: return PIString::fromNumber(_vint); + case PIVariant::LLong: + case PIVariant::ULLong: return PIString::fromNumber(_vllong); + case PIVariant::Float: return PIString::fromNumber(_vfloat); + case PIVariant::Double: return PIString::fromNumber(_vdouble); + case PIVariant::LDouble: return PIString::fromNumber(_vldouble); + case PIVariant::Complexd: return "(" + PIString::fromNumber(_vcomplexd.real()) + "; " + PIString::fromNumber(_vcomplexd.imag()) + ")"; + case PIVariant::Complexld: return "(" + PIString::fromNumber(_vcomplexld.real()) + "; " + PIString::fromNumber(_vcomplexld.imag()) + ")"; + case PIVariant::BitArray: return PIString::fromNumber(_vbitarray.bitSize()) + " bits"; + case PIVariant::ByteArray: return _vbytearray.toString(); + case PIVariant::String: return _vstring; + case PIVariant::StringList: return "(" + _vstringlist.join("; ") + ")"; + case PIVariant::Time: return _vtime.toString(); + case PIVariant::Date: return _vdate.toString(); + case PIVariant::DateTime: return _vdatetime.toString(); + case PIVariant::SystemTime: return "(" + PIString::fromNumber(_vsystime.seconds) + " s, " + PIString::fromNumber(_vsystime.nanoseconds) + " ns)"; + default: break; + } + return ""; +} + + +/** \brief Returns variant content as strings list + * \details In case of StringList type returns strings list value. \n + * In case of other types returns \a PIStringList with one string value of variant content. */ +PIStringList PIVariant::toStringList() const { + if (type_ == PIVariant::StringList) return _vstringlist; + return PIStringList(toString()); +} + + +/** \brief Returns variant content as bit array + * \details In case of BitArray type returns bit array value. \n + * In case of other types returns \a PIBitArray from \a toLLong() value. */ +PIBitArray PIVariant::toBitArray() const { + if (type_ == PIVariant::BitArray) return _vbitarray; + return PIBitArray(ullong(toLLong())); +} + + +/** \brief Returns variant content as byte array + * \details In case of ByteArray type returns byte array value. \n + * In case of other types returns empty \a PIByteArray. */ +PIByteArray PIVariant::toByteArray() const { + if (type_ == PIVariant::ByteArray) return _vbytearray; + return PIByteArray(); +} diff --git a/_oldpip/pip_0.4.0_r5/pivariant.h b/_oldpip/pip_0.4.0_r5/pivariant.h new file mode 100644 index 0000000..7cba277 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/pivariant.h @@ -0,0 +1,461 @@ +/*! \file pivariant.h + * \brief Variant type + * + * This file declares PIVariant +*/ +/* + PIP - Platform Independent Primitives + Variant type + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +#ifndef PIVARIANT_H +#define PIVARIANT_H + +#include "pistring.h" +#include "pibitarray.h" +#include "pitime.h" +#include "pimath.h" + +#define __PIVARIANT_UNION_SIZE__ 32 + +#define _vcomplexd (*((complexd*)_vraw)) +#define _vcomplexld (*((complexld*)_vraw)) +#define _vtime (*((PITime*)_vraw)) +#define _vdate (*((PIDate*)_vraw)) +#define _vdatetime (*((PIDateTime*)_vraw)) +#define _vsystime (*((PISystemTime*)_vraw)) + +#define _vvcomplexd(v) (*((complexd*)v._vraw)) +#define _vvcomplexld(v) (*((complexld*)v._vraw)) +#define _vvtime(v) (*((PITime*)v._vraw)) +#define _vvdate(v) (*((PIDate*)v._vraw)) +#define _vvdatetime(v) (*((PIDateTime*)v._vraw)) +#define _vvsystime(v) (*((PISystemTime*)v._vraw)) + +class PIP_EXPORT PIVariant { + friend PICout operator <<(PICout s, const PIVariant & v); +public: + + //! Type of %PIVariant content + enum Type { + Invalid /** Invalid type , default type of empty contructor */ = 0 , + Bool /** bool */ , + Char /** char */ , + UChar /** uchar */ , + Short /** short */ , + UShort /** ushort */ , + Int /** int */ , + UInt /** uint */ , + Long /** long */ , + ULong /** ulong */ , + LLong /** llong */ , + ULLong /** ullong */ , + Float /** float */ , + Double /** double */ , + LDouble /** ldouble */ , + Complexd /** complexd */ , + Complexld /** complexld */ , + BitArray /** PIBitArray */ , + ByteArray /** PIByteArray */ , + String /** PIString */ , + StringList /** PIStringList */ , + Time /** PITime */ , + Date /** PIDate */ , + DateTime /** PIDateTime */ , + SystemTime /** PISystemTime */ , + Custom /** Custom */ = 0xFF + }; + + //! Empty constructor, \a type() will be set to \a Invalid + PIVariant(); + + //! Constructs variant from string + PIVariant(const char * v) {setValue(PIString(v));} + + //! Constructs variant from boolean + PIVariant(const bool v) {setValue(v);} + + //! Constructs variant from char + PIVariant(const char v) {setValue(v);} + + //! Constructs variant from integer + PIVariant(const uchar v) {setValue(v);} + + //! Constructs variant from integer + PIVariant(const short v) {setValue(v);} + + //! Constructs variant from integer + PIVariant(const ushort v) {setValue(v);} + + //! Constructs variant from integer + PIVariant(const int & v) {setValue(v);} + + //! Constructs variant from integer + PIVariant(const uint & v) {setValue(v);} + + //! Constructs variant from integer + PIVariant(const long & v) {setValue(v);} + + //! Constructs variant from integer + PIVariant(const ulong & v) {setValue(v);} + + //! Constructs variant from integer + PIVariant(const llong & v) {setValue(v);} + + //! Constructs variant from integer + PIVariant(const ullong & v) {setValue(v);} + + //! Constructs variant from float + PIVariant(const float & v) {setValue(v);} + + //! Constructs variant from double + PIVariant(const double & v) {setValue(v);} + + //! Constructs variant from long double + PIVariant(const ldouble & v) {setValue(v);} + + //! Constructs variant from complex + PIVariant(const complexd & v) {setValue(v);} + + //! Constructs variant from complex + PIVariant(const complexld & v) {setValue(v);} + + //! Constructs variant from bit array + PIVariant(const PIBitArray & v) {setValue(v);} + + //! Constructs variant from byte array + PIVariant(const PIByteArray & v) {setValue(v);} + + //! Constructs variant from string + PIVariant(const PIString & v) {setValue(v);} + + //! Constructs variant from strings list + PIVariant(const PIStringList & v) {setValue(v);} + + //! Constructs variant from time + PIVariant(const PITime & v) {setValue(v);} + + //! Constructs variant from date + PIVariant(const PIDate & v) {setValue(v);} + + //! Constructs variant from date and time + PIVariant(const PIDateTime & v) {setValue(v);} + + //! Constructs variant from system time + PIVariant(const PISystemTime & v) {setValue(v);} + + + //! Set variant content and type to string + void setValue(const char * v) {setValue(PIString(v));} + + //! Set variant content and type to boolean + void setValue(const bool v) {type_ = PIVariant::Bool; _vint = (v ? 1 : 0);} + + //! Set variant content and type to char + void setValue(const char v) {type_ = PIVariant::Char; _vint = v;} + + //! Set variant content and type to integer + void setValue(const uchar v) {type_ = PIVariant::UChar; _vint = v;} + + //! Set variant content and type to integer + void setValue(const short v) {type_ = PIVariant::Short; _vint = v;} + + //! Set variant content and type to integer + void setValue(const ushort v) {type_ = PIVariant::UShort; _vint = v;} + + //! Set variant content and type to integer + void setValue(const int & v) {type_ = PIVariant::Int; _vint = v;} + + //! Set variant content and type to integer + void setValue(const uint & v) {type_ = PIVariant::UInt; _vint = v;} + + //! Set variant content and type to integer + void setValue(const long & v) {type_ = PIVariant::Long; _vint = v;} + + //! Set variant content and type to integer + void setValue(const ulong & v) {type_ = PIVariant::ULong; _vint = v;} + + //! Set variant content and type to integer + void setValue(const llong & v) {type_ = PIVariant::LLong; _vllong = v;} + + //! Set variant content and type to integer + void setValue(const ullong & v) {type_ = PIVariant::ULLong; _vllong = v;} + + //! Set variant content and type to float + void setValue(const float & v) {type_ = PIVariant::Float; _vfloat = v;} + + //! Set variant content and type to double + void setValue(const double & v) {type_ = PIVariant::Double; _vdouble = v;} + + //! Set variant content and type to long double + void setValue(const ldouble & v) {type_ = PIVariant::LDouble; _vldouble = v;} + + //! Set variant content and type to complex + void setValue(const complexd & v) {type_ = PIVariant::Complexd; _vcomplexd = v;} + + //! Set variant content and type to complex + void setValue(const complexld & v) {type_ = PIVariant::Complexld; _vcomplexld = v;} + + //! Set variant content and type to bit array + void setValue(const PIBitArray & v) {type_ = PIVariant::BitArray; _vbitarray = v;} + + //! Set variant content and type to byte array + void setValue(const PIByteArray & v) {type_ = PIVariant::ByteArray; _vbytearray = v;} + + //! Set variant content and type to string + void setValue(const PIString & v) {type_ = PIVariant::String; _vstring = v;} + + //! Set variant content and type to strings list + void setValue(const PIStringList & v) {type_ = PIVariant::StringList; _vstringlist = v;} + + //! Set variant content and type to time + void setValue(const PITime & v) {type_ = PIVariant::Time; _vtime = v;} + + //! Set variant content and type to date + void setValue(const PIDate & v) {type_ = PIVariant::Date; _vdate = v;} + + //! Set variant content and type to date and time + void setValue(const PIDateTime & v) {type_ = PIVariant::DateTime; _vdatetime = v;} + + //! Set variant content and type to system time + void setValue(const PISystemTime & v) {type_ = PIVariant::SystemTime; _vsystime = v;} + + + bool toBool() const; + int toInt() const; + llong toLLong() const; + float toFloat() const; + double toDouble() const; + ldouble toLDouble() const; + complexd toComplexd() const; + complexld toComplexld() const; + PITime toTime() const; + PIDate toDate() const; + PIDateTime toDateTime() const; + PISystemTime toSystemTime() const; + PIString toString() const; + PIStringList toStringList() const; + PIBitArray toBitArray() const; + PIByteArray toByteArray() const; + + + /** \brief Returns variant content as custom type + * \details In case of known types this function equivalent \a to function. \n + * Otherwise returns content as type T. */ + template + T toValue() const {if (_vcustom.size() != sizeof(T)) return T(); return *((T*)_vcustom.data());} + /* + operator bool() const {return toBool();} + operator char() const {return toInt();} + operator uchar() const {return toInt();} + operator short() const {return toInt();} + operator ushort() const {return toInt();} + operator int() const {return toInt();} + operator uint() const {return toInt();} + operator long() const {return toInt();} + operator ulong() const {return toInt();} + operator llong() const {return toLLong();} + operator ullong() const {return (ullong)toLLong();} + operator float() const {return toFloat();} + operator double() const {return toDouble();} + operator ldouble() const {return toLDouble();} + operator complexd() const {return toComplexd();} + operator complexld() const {return toComplexld();} + operator PITime() const {return toTime();} + operator PIDate() const {return toDate();} + operator PIDateTime() const {return toDateTime();} + operator PIString() const {return toString();} + operator PIStringList() const {return toStringList();} + operator PIBitArray() const {return toBitArray();} + operator PIByteArray() const {return toByteArray();} + operator const char*() const {return toString().data();} + operator void*() const {return (void*)(toLLong());} + */ + + //! Assign operator + PIVariant & operator =(const PIVariant & v); + //! Assign operator + PIVariant & operator =(const char * v) {setValue(PIString(v)); return *this;} + //! Assign operator + PIVariant & operator =(const bool v) {setValue(v); return *this;} + //! Assign operator + PIVariant & operator =(const char v) {setValue(v); return *this;} + //! Assign operator + PIVariant & operator =(const uchar v) {setValue(v); return *this;} + //! Assign operator + PIVariant & operator =(const short v) {setValue(v); return *this;} + //! Assign operator + PIVariant & operator =(const ushort v) {setValue(v); return *this;} + //! Assign operator + PIVariant & operator =(const int & v) {setValue(v); return *this;} + //! Assign operator + PIVariant & operator =(const uint & v) {setValue(v); return *this;} + //! Assign operator + PIVariant & operator =(const long & v) {setValue(v); return *this;} + //! Assign operator + PIVariant & operator =(const ulong & v) {setValue(v); return *this;} + //! Assign operator + PIVariant & operator =(const llong & v) {setValue(v); return *this;} + //! Assign operator + PIVariant & operator =(const ullong & v) {setValue(v); return *this;} + //! Assign operator + PIVariant & operator =(const float & v) {setValue(v); return *this;} + //! Assign operator + PIVariant & operator =(const double & v) {setValue(v); return *this;} + //! Assign operator + PIVariant & operator =(const ldouble & v) {setValue(v); return *this;} + //! Assign operator + PIVariant & operator =(const complexd & v) {setValue(v); return *this;} + //! Assign operator + PIVariant & operator =(const complexld & v) {setValue(v); return *this;} + //! Assign operator + PIVariant & operator =(const PIBitArray & v) {setValue(v); return *this;} + //! Assign operator + PIVariant & operator =(const PIByteArray & v) {setValue(v); return *this;} + //! Assign operator + PIVariant & operator =(const PIString & v) {setValue(v); return *this;} + //! Assign operator + PIVariant & operator =(const PIStringList & v) {setValue(v); return *this;} + //! Assign operator + PIVariant & operator =(const PITime & v) {setValue(v); return *this;} + //! Assign operator + PIVariant & operator =(const PIDate & v) {setValue(v); return *this;} + //! Assign operator + PIVariant & operator =(const PIDateTime & v) {setValue(v); return *this;} + //! Assign operator + PIVariant & operator =(const PISystemTime & v) {setValue(v); return *this;} + + + //! Compare operator + bool operator ==(const PIVariant & v) const; + //! Compare operator + bool operator !=(const PIVariant & v) const {return !(*this == v);} + + + //! Returns type of variant content + PIVariant::Type type() const {return type_;} + + //! Returns type name of variant content + PIString typeName() const {return typeName(type_);} + + + //! Returns \b true if type is not Invalid + bool isValid() const {return type_ != PIVariant::Invalid;} + + + /** \brief Returns new variant from custom type + * \details In case of known types this function equivalent \a PIVariant(T) constructors. \n + * Otherwise returns variant with content \a v and type Custom. */ + template + static PIVariant fromValue(const T & v) {PIVariant ret; ret._vcustom.resize(sizeof(T)); new((T*)(ret._vcustom.data()))T(v); ret.type_ = PIVariant::Custom; return ret;} + + + //! Returns type from name + static PIVariant::Type typeFromName(const PIString & tname); + + //! Returns type name + static PIString typeName(PIVariant::Type type); + +private: + void destroy() {_vcustom.clear();} + + union { + int _vint; + llong _vllong; + float _vfloat; + double _vdouble; + ldouble _vldouble; + uchar _vraw[__PIVARIANT_UNION_SIZE__]; + /*complexd _vcomplexd; + complexld _vcomplexld; + PITime _vtime; + PIDate _vdate; + PIDateTime _vdatetime; + PISystemTime _vsystime;*/ + }; + PIBitArray _vbitarray; + PIByteArray _vbytearray; + PIString _vstring; + PIStringList _vstringlist; + PIByteArray _vcustom; + PIVariant::Type type_; + +}; + +template<> inline bool PIVariant::toValue() const {return toBool();} +template<> inline char PIVariant::toValue() const {return (char)toInt();} +template<> inline uchar PIVariant::toValue() const {return (uchar)toInt();} +template<> inline short PIVariant::toValue() const {return (short)toInt();} +template<> inline ushort PIVariant::toValue() const {return (ushort)toInt();} +template<> inline int PIVariant::toValue() const {return toInt();} +template<> inline uint PIVariant::toValue() const {return (uint)toInt();} +template<> inline long PIVariant::toValue() const {return (long)toInt();} +template<> inline ulong PIVariant::toValue() const {return (ulong)toInt();} +template<> inline llong PIVariant::toValue() const {return toLLong();} +template<> inline ullong PIVariant::toValue() const {return (ullong)toLLong();} +template<> inline float PIVariant::toValue() const {return toFloat();} +template<> inline double PIVariant::toValue() const {return toDouble();} +template<> inline ldouble PIVariant::toValue() const {return toLDouble();} +template<> inline complexd PIVariant::toValue() const {return toComplexd();} +template<> inline complexld PIVariant::toValue() const {return toComplexld();} +template<> inline void* PIVariant::toValue() const {return (void*)toLLong();} +template<> inline const char* PIVariant::toValue() const {return toString().data();} +template<> inline PITime PIVariant::toValue() const {return toTime();} +template<> inline PIDate PIVariant::toValue() const {return toDate();} +template<> inline PIDateTime PIVariant::toValue() const {return toDateTime();} +template<> inline PIString PIVariant::toValue() const {return toString();} +template<> inline PIStringList PIVariant::toValue() const {return toStringList();} +template<> inline PIBitArray PIVariant::toValue() const {return toBitArray();} +template<> inline PIByteArray PIVariant::toValue() const {return toByteArray();} + +//template<> inline PIVariant PIVariant::fromValue(const char * v) {return PIVariant(PIString(v));} +template<> inline PIVariant PIVariant::fromValue(const bool & v) {return PIVariant(v);} +template<> inline PIVariant PIVariant::fromValue(const char & v) {return PIVariant(v);} +template<> inline PIVariant PIVariant::fromValue(const uchar & v) {return PIVariant(v);} +template<> inline PIVariant PIVariant::fromValue(const short & v) {return PIVariant(v);} +template<> inline PIVariant PIVariant::fromValue(const ushort & v) {return PIVariant(v);} +template<> inline PIVariant PIVariant::fromValue(const int & v) {return PIVariant(v);} +template<> inline PIVariant PIVariant::fromValue(const uint & v) {return PIVariant(v);} +template<> inline PIVariant PIVariant::fromValue(const long & v) {return PIVariant(v);} +template<> inline PIVariant PIVariant::fromValue(const ulong & v) {return PIVariant(v);} +template<> inline PIVariant PIVariant::fromValue(const llong & v) {return PIVariant(v);} +template<> inline PIVariant PIVariant::fromValue(const ullong & v) {return PIVariant(v);} +template<> inline PIVariant PIVariant::fromValue(const float & v) {return PIVariant(v);} +template<> inline PIVariant PIVariant::fromValue(const double & v) {return PIVariant(v);} +template<> inline PIVariant PIVariant::fromValue(const ldouble & v) {return PIVariant(v);} +template<> inline PIVariant PIVariant::fromValue(const complexd & v) {return PIVariant(v);} +template<> inline PIVariant PIVariant::fromValue(const complexld & v) {return PIVariant(v);} +template<> inline PIVariant PIVariant::fromValue(const PIBitArray & v) {return PIVariant(v);} +template<> inline PIVariant PIVariant::fromValue(const PIByteArray & v) {return PIVariant(v);} +template<> inline PIVariant PIVariant::fromValue(const PIString & v) {return PIVariant(v);} +template<> inline PIVariant PIVariant::fromValue(const PIStringList & v) {return PIVariant(v);} +template<> inline PIVariant PIVariant::fromValue(const PITime & v) {return PIVariant(v);} +template<> inline PIVariant PIVariant::fromValue(const PIDate & v) {return PIVariant(v);} +template<> inline PIVariant PIVariant::fromValue(const PIDateTime & v) {return PIVariant(v);} +template<> inline PIVariant PIVariant::fromValue(const PISystemTime & v) {return PIVariant(v);} + +inline PICout operator <<(PICout s, const PIVariant & v) { + s.space(); s.setControl(0, true); + s << "PIVariant(" << PIVariant::typeName(v.type()) << ", "; + if (v.type() == PIVariant::Custom) s << v._vcustom.size() << " bytes"; + else s << v.toString(); + s << ")"; + s.restoreControl(); return s; +} + + +#endif // PIVARIANT_H diff --git a/_oldpip/pip_0.4.0_r5/pivector.h b/_oldpip/pip_0.4.0_r5/pivector.h new file mode 100644 index 0000000..a380bbd --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/pivector.h @@ -0,0 +1,527 @@ +/*! \file pivector.h + * \brief Dynamic array of any type + * + * This file declares PIVector +*/ +/* + PIP - Platform Independent Primitives + Dynamic array of any type + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +#ifndef PIVECTOR_H +#define PIVECTOR_H + +#include "piincludes.h" + + +#if !defined(PIP_CONTAINERS_STL) || defined(DOXYGEN) + + +template +class PIVector { +public: + PIVector(): piv_data(0), piv_size(0), piv_rsize(0) { + //printf("new vector 1 %p (%s) ... !{\n", this, typeid(T).name()); + //printf("(s=%d, d=%p) }!\n", int(piv_size), piv_data); + } + PIVector(const PIVector & other): piv_data(0), piv_size(0), piv_rsize(0) { + //printf("new vector 2 %p (%s) ... !{\n", this, typeid(T).name()); + alloc(other.piv_size); + newT(piv_data, other.piv_data, piv_size); + //printf("(s=%d, d=%p) }!\n", int(piv_size), piv_data); + } + PIVector(const T * data, size_t size): piv_data(0), piv_size(0), piv_rsize(0) { + //printf("new vector 2 %p (%s) ... !{\n", this, typeid(T).name()); + alloc(size); + newT(piv_data, data, piv_size); + //printf("(s=%d, d=%p) }!\n", int(pid_size), pid_data); + } + PIVector(size_t piv_size, const T & f = T()): piv_data(0), piv_size(0), piv_rsize(0) { + //printf("new vector 3 %p (%s) ... !{\n", this, typeid(T).name()); + resize(piv_size, f); + //printf("(s=%d, d=%p) }!\n", int(piv_size), piv_data); + } + ~PIVector() { + //printf("delete vector %p (%s) (s=%d, d=%p) ... ~{\n", this, typeid(T).name(), int(piv_size), piv_data); + deleteT(piv_data, piv_size); + dealloc(); + //deleteRaw(piv_tdata); + _reset(); + //printf("}~\n"); + } + + PIVector & operator =(const PIVector & other) { + if (this == &other) return *this; + bool tj, oj; + tj = (piv_size != 0 && piv_data == 0);// || (piv_size == 0 && piv_data != 0); + oj = (other.piv_size != 0 && other.piv_data == 0);// || (other.piv_size == 0 && other.piv_data != 0); + //printf("operator= (%p = %p) (s=%d, d=%p, o.s=%d, o.d=%p) (%d, %d) ... o[\n", this, &other, int(piv_size), piv_data, int(other.piv_size), other.piv_data, int(tj), int(oj)); + if (tj) { + printf("JUNK this\n"); + _reset(); + } else { + clear(); + } + /*if (piv_size == other.piv_size) { + for (size_t i = 0; i < piv_size; ++i) + piv_data[i] = other.piv_data[i]; + return *this; + }*/ + if (!oj) { + deleteT(piv_data, piv_size); + alloc(other.piv_size); + //zeroRaw(piv_data, piv_size); + for (size_t i = 0; i < piv_size; ++i) + elementNew(piv_data + i, other.piv_data[i]); //piv_data[i] = other.piv_data[i]; + } else { + printf("JUNK other\n"); + } + //printf("o]\n"); + return *this; + } + + typedef T value_type; + + class iterator { + friend class PIVector; + private: + iterator(PIVector * v, size_t p): parent(v), pos(p) {} + PIVector * parent; + size_t pos; + public: + iterator(): parent(0) {} + T & operator *() {return (*parent)[pos];} + const T & operator *() const {return (*parent)[pos];} + void operator ++() {++pos;} + void operator ++(int) {++pos;} + void operator --() {--pos;} + void operator --(int) {--pos;} + bool operator ==(const iterator & it) const {return (pos == it.pos);} + bool operator !=(const iterator & it) const {return (pos != it.pos);} + }; + + class const_iterator { + friend class PIVector; + private: + const_iterator(const PIVector * v, size_t p): parent(v), pos(p) {} + const PIVector * parent; + size_t pos; + public: + const_iterator(): parent(0) {} + //T & operator *() {return (*parent)[pos];} + const T & operator *() const {return (*parent)[pos];} + void operator ++() {++pos;} + void operator ++(int) {++pos;} + void operator --() {--pos;} + void operator --(int) {--pos;} + bool operator ==(const const_iterator & it) const {return (pos == it.pos);} + bool operator !=(const const_iterator & it) const {return (pos != it.pos);} + }; + + class reverse_iterator { + friend class PIVector; + private: + reverse_iterator(PIVector * v, size_t p): parent(v), pos(p) {} + PIVector * parent; + size_t pos; + public: + reverse_iterator(): parent(0) {} + T & operator *() {return (*parent)[pos];} + const T & operator *() const {return (*parent)[pos];} + void operator ++() {--pos;} + void operator ++(int) {--pos;} + void operator --() {++pos;} + void operator --(int) {++pos;} + bool operator ==(const reverse_iterator & it) const {return (pos == it.pos);} + bool operator !=(const reverse_iterator & it) const {return (pos != it.pos);} + }; + + class const_reverse_iterator { + friend class PIVector; + private: + const_reverse_iterator(const PIVector * v, size_t p): parent(v), pos(p) {} + const PIVector * parent; + size_t pos; + public: + const_reverse_iterator(): parent(0) {} + //T & operator *() {return (*parent)[pos];} + const T & operator *() const {return (*parent)[pos];} + void operator ++() {--pos;} + void operator ++(int) {--pos;} + void operator --() {++pos;} + void operator --(int) {++pos;} + bool operator ==(const const_reverse_iterator & it) const {return (pos == it.pos);} + bool operator !=(const const_reverse_iterator & it) const {return (pos != it.pos);} + }; + + iterator begin() {return iterator(this, 0);} + iterator end() {return iterator(this, piv_size);} + const_iterator begin() const {return const_iterator(this, 0);} + const_iterator end() const {return const_iterator(this, piv_size);} + reverse_iterator rbegin() {return reverse_iterator(this, piv_size - 1);} + reverse_iterator rend() {return reverse_iterator(this, -1);} + const_reverse_iterator rbegin() const {return const_reverse_iterator(this, piv_size - 1);} + const_reverse_iterator rend() const {return const_reverse_iterator(this, -1);} + + size_t size() const {return piv_size;} + ssize_t size_s() const {return piv_size;} + size_t length() const {return piv_size;} + size_t capacity() const {return piv_rsize;} + bool isEmpty() const {return (piv_size == 0);} + + T & operator [](size_t index) {return piv_data[index];} + T & at(size_t index) {return piv_data[index];} + const T & operator [](size_t index) const {return piv_data[index];} + const T & at(size_t index) const {return piv_data[index];} + T & back() {return piv_data[piv_size - 1];} + const T & back() const {return piv_data[piv_size - 1];} + T & front() {return piv_data[0];} + const T & front() const {return piv_data[0];} + bool operator ==(const PIVector & t) const {if (piv_size != t.piv_size) return false; for (size_t i = 0; i < piv_size; ++i) if (t[i] != piv_data[i]) return false; return true;} + bool operator !=(const PIVector & t) const {if (piv_size != t.piv_size) return true; for (size_t i = 0; i < piv_size; ++i) if (t[i] != piv_data[i]) return true; return false;} + bool contains(const T & v) const {for (size_t i = 0; i < piv_size; ++i) if (v == piv_data[i]) return true; return false;} + int etries(const T & v) const {int ec = 0; for (size_t i = 0; i < piv_size; ++i) if (v == piv_data[i]) ++ec; return ec;} + + T * data(size_t index = 0) {return &(piv_data[index]);} + const T * data(size_t index = 0) const {return &(piv_data[index]);} + PIVector & clear() {resize(0); return *this;} + PIVector & fill(const T & f = T()) { + //if (sizeof(T) == 1) memset(piv_data, f, piv_size); + deleteT(piv_data, piv_size); + //zeroRaw(piv_data, piv_size); + for (size_t i = 0; i < piv_size; ++i) + elementNew(piv_data + i, f); + return *this; + } + PIVector & assign(const T & f = T()) {return fill(f);} + PIVector & assign(size_t new_size, const T & f) {resize(new_size); return fill(f);} + PIVector & resize(size_t new_size, const T & f = T()) { + if (new_size < piv_size) { + T * de = &(piv_data[new_size]); + deleteT(de, piv_size - new_size); + piv_size = new_size; + } + if (new_size > piv_size) { + size_t os = piv_size; + alloc(new_size); + //if (sizeof(T) == 1) memset(&(piv_data[os]), f, ds); + //zeroRaw(&(piv_data[os]), new_size - os); + for (size_t i = os; i < new_size; ++i) elementNew(piv_data + i, f); + } + return *this; + } + PIVector & reserve(size_t new_size) {if (new_size <= piv_rsize) return *this; size_t os = piv_size; alloc(new_size); piv_size = os; return *this;} + + PIVector & insert(size_t index, const T & v = T()) { + alloc(piv_size + 1); + if (index < piv_size - 1) { + size_t os = piv_size - index - 1; + memmove(&(piv_data[index + 1]), &(piv_data[index]), os * sizeof(T)); + } + //zeroRaw(&(piv_data[index]), 1); + elementNew(piv_data + index, v); + return *this; + } + PIVector & insert(size_t index, const PIVector & other) { + if (other.isEmpty()) return *this; + ssize_t os = piv_size - index; + alloc(piv_size + other.pid_size, true); + if (os > 0) + memmove(&(piv_data[index + other.piv_size]), &(piv_data[index]), os * sizeof(T)); + newT(piv_data + index, other.piv_data, other.piv_size); + return *this; + } + + PIVector & remove(size_t index, size_t count = 1) { + if (count == 0) return *this; + if (index + count >= piv_size) { + resize(index); + return *this; + } + size_t os = piv_size - index - count; + deleteT(&(piv_data[index]), count); + memmove(&(piv_data[index]), &(piv_data[index + count]), os * sizeof(T)); + piv_size -= count; + return *this; + } + + void swap(PIVector & other) { + piSwap(piv_data, other.piv_data); + piSwap(piv_size, other.piv_size); + piSwap(piv_rsize, other.piv_rsize); + } + + typedef int (*CompareFunc)(const T * , const T * ); + static int compare_func(const T * t0, const T * t1) {return (*t0) < (*t1) ? -1 : ((*t0) == (*t1) ? 0 : 1);} + PIVector & sort(CompareFunc compare = compare_func) {qsort(piv_data, piv_size, sizeof(T), (int(*)(const void * , const void * ))compare); return *this;} + + PIVector & enlarge(llong piv_size) {llong ns = size_s() + piv_size; if (ns <= 0) clear(); else resize(size_t(ns)); return *this;} + + PIVector & removeOne(const T & v) {for (size_t i = 0; i < piv_size; ++i) if (piv_data[i] == v) {remove(i); return *this;} return *this;} + PIVector & removeAll(const T & v) {for (llong i = 0; i < piv_size; ++i) if (piv_data[i] == v) {remove(i); --i;} return *this;} + + PIVector & push_back(const T & v) {alloc(piv_size + 1); elementNew(piv_data + piv_size - 1, v); return *this;} + PIVector & append(const T & v) {return push_back(v);} + PIVector & operator <<(const T & v) {return push_back(v);} + PIVector & operator <<(const PIVector & other) { + size_t ps = piv_size; + alloc(piv_size + other.piv_size); + newT(piv_data + ps, other.piv_data, other.piv_size); + return *this; + } + + PIVector & push_front(const T & v) {insert(0, v); return *this;} + PIVector & prepend(const T & v) {return push_front(v);} + + PIVector & pop_back() {if (piv_size == 0) return *this; resize(piv_size - 1); return *this;} + PIVector & pop_front() {if (piv_size == 0) return *this; remove(0); return *this;} + + T take_back() {T t(back()); pop_back(); return t;} + T take_front() {T t(front()); pop_front(); return t;} + +private: + void _reset() {piv_size = piv_rsize = 0; piv_data = 0;} + size_t asize(size_t s) { + if (s == 0) return 0; + if (piv_rsize + piv_rsize >= s && piv_rsize < s) + return piv_rsize + piv_rsize; + size_t t = 0, s_ = s - 1; + while (s_ >> t) ++t; + return (1 << t); + } + inline void newT(T * dst, const T * src, size_t s) { + for (size_t i = 0; i < s; ++i) + elementNew(dst + i, src[i]); + } + T * newRaw(size_t s) { + //cout << std::dec << " ![("< (new 0x" << (llong)ret << ") ok]!" << endl; + return (T*)ret; + } + /*void reallocRawTemp(size_t s) { + if (piv_tdata == 0) piv_tdata = (T*)(malloc(s * sizeof(T))); + else piv_tdata = (T*)(realloc(piv_tdata, s * sizeof(T))); + }*/ + inline void deleteT(T * d, size_t sz) { + //cout << " ~[("< ok]~" << endl; + } + void deleteRaw(T *& d) { + //cout << " ~[("< ok]~" << endl; + } + void zeroRaw(T * d, size_t s) { + //cout << " ~[("< ok]~" << endl; + } + inline void elementNew(T * to, const T & from) {new(to)T(from);} + inline void elementDelete(T & from) {from.~T();} + void dealloc() {deleteRaw(piv_data);} + inline void alloc(size_t new_size) { + if (new_size <= piv_rsize) { + piv_size = new_size; + return; + } + //int os = piv_size; + piv_size = new_size; + size_t as = asize(new_size); + if (as == piv_rsize) return; + + //cout << std::hex << " ![("< (new 0x" << (llong)piv_data << ") ok]!" << endl; + /*piv_rsize = as; + T * pd = newRaw(piv_rsize); + if (os > 0 && piv_data != 0) { + memcpy(pd, piv_data, os * sizeof(T)); + deleteRaw(piv_data); + } + piv_data = pd;*/ + } + + T * piv_data; + size_t piv_size, piv_rsize; +}; +/* +#define __PIVECTOR_SIMPLE_FUNCTIONS__(T) \ + template<> inline PIVector::~PIVector() {dealloc(); _reset();} \ + template<> inline PIVector & PIVector::push_back(const T & v) {alloc(piv_size + 1); piv_data[piv_size - 1] = v; return *this;} \ + template<> inline PIVector & PIVector::fill(const T & f) { \ + for (size_t i = 0; i < piv_size; ++i) \ + piv_data[i] = f; \ + return *this; \ + } \ + template<> inline PIVector & PIVector::resize(size_t new_size, const T & f) { \ + if (new_size < piv_size) \ + piv_size = new_size; \ + if (new_size > piv_size) { \ + size_t os = piv_size; \ + alloc(new_size); \ + for (size_t i = os; i < new_size; ++i) piv_data[i] = f; \ + } \ + return *this; \ + } \ + template<> inline PIVector & PIVector::insert(size_t index, const T & v) { \ + alloc(piv_size + 1); \ + if (index < piv_size - 1) { \ + size_t os = piv_size - index - 1; \ + memmove(&(piv_data[index + 1]), &(piv_data[index]), os * sizeof(T)); \ + } \ + piv_data[index] = v; \ + return *this; \ + } \ + template<> inline PIVector & PIVector::remove(size_t index, size_t count) { \ + if (count == 0) return *this; \ + if (index + count >= piv_size) { \ + resize(index); \ + return *this; \ + } \ + size_t os = piv_size - index - count; \ + memmove(&(piv_data[index]), &(piv_data[index + count]), os * sizeof(T)); \ + piv_size -= count; \ + return *this; \ + } + +__PIVECTOR_SIMPLE_FUNCTIONS__(char) +__PIVECTOR_SIMPLE_FUNCTIONS__(uchar) +__PIVECTOR_SIMPLE_FUNCTIONS__(short) +__PIVECTOR_SIMPLE_FUNCTIONS__(ushort) +__PIVECTOR_SIMPLE_FUNCTIONS__(int) +__PIVECTOR_SIMPLE_FUNCTIONS__(uint) +__PIVECTOR_SIMPLE_FUNCTIONS__(long) +__PIVECTOR_SIMPLE_FUNCTIONS__(ulong) +__PIVECTOR_SIMPLE_FUNCTIONS__(llong) +__PIVECTOR_SIMPLE_FUNCTIONS__(ullong) +__PIVECTOR_SIMPLE_FUNCTIONS__(float) +__PIVECTOR_SIMPLE_FUNCTIONS__(double) +__PIVECTOR_SIMPLE_FUNCTIONS__(ldouble)*/ +#define __PIVECTOR_SIMPLE_TYPE__(T) \ + template<> inline void PIVector::newT(T * dst, const T * src, size_t s) {memcpy(dst, src, s * sizeof(T));} \ + template<> inline void PIVector::deleteT(T * d, size_t sz) {;} \ + template<> inline void PIVector::elementNew(T * to, const T & from) {(*to) = from;} \ + template<> inline void PIVector::elementDelete(T & from) {;} + +#else + + +template > +class PIP_EXPORT PIVector: public vector { + typedef PIVector _CVector; + typedef vector _stlc; +public: + + PIVector() {piMonitor.containers++;} + PIVector(uint size, const T & value = T()) {piMonitor.containers++; _stlc::resize(size, value);} + ~PIVector() {piMonitor.containers--;} + + const T & at(uint index) const {return (*this)[index];} + T & at(uint index) {return (*this)[index];} + const T * data(uint index = 0) const {return &(*this)[index];} + T * data(uint index = 0) {return &(*this)[index];} + +#ifdef DOXYGEN + uint size() const; +#endif + + int size_s() const {return static_cast(_stlc::size());} + bool isEmpty() const {return _stlc::empty();} + bool has(const T & t) const {for (typename _stlc::const_iterator i = _stlc::begin(); i != _stlc::end(); ++i) if (t == *i) return true; return false;} + int etries(const T & t) const {int ec = 0; for (typename _stlc::const_iterator i = _stlc::begin(); i != _stlc::end(); ++i) if (t == *i) ++ec; return ec;} + + typedef int (*CompareFunc)(const T * , const T * ); + + static int compare_func(const T * t0, const T * t1) {return (*t0) == (*t1) ? 0 : ((*t0) < (*t1) ? -1 : 1);} +#ifdef DOXYGEN + + void resize(uint size, const T & new_type = T()); + PIVector & enlarge(uint size); + void clear(); + PIVector & sort(CompareFunc compare = compare_func) {qsort(&at(0), _stlc::size(), sizeof(T), (int(*)(const void * , const void * ))compare); return *this;} + PIVector & fill(const T & t) {_stlc::assign(_stlc::size(), t); return *this;} + T & back(); + const T & back() const; + T & front(); + const T & front() const; + PIVector & push_back(const T & t); + PIVector & push_front(const T & t) {_stlc::insert(_stlc::begin(), t); return *this;} + PIVector & pop_back(); + PIVector & pop_front() {_stlc::erase(_stlc::begin()); return *this;} + T take_back() {T t(_stlc::back()); _stlc::pop_back(); return t;} + T take_front() {T t(_stlc::front()); pop_front(); return t;} + PIVector & remove(uint index) {_stlc::erase(_stlc::begin() + index); return *this;} + PIVector & remove(uint index, uint count) {_stlc::erase(_stlc::begin() + index, _stlc::begin() + index + count); return *this;} + PIVector & removeOne(const T & v) {for (typename _stlc::iterator i = _stlc::begin(); i != _stlc::end(); ++i) if (v == *i) {_stlc::erase(i); return *this;} return *this;} + PIVector & removeAll(const T & v) {for (typename _stlc::iterator i = _stlc::begin(); i != _stlc::end(); ++i) if (v == *i) {_stlc::erase(i); --i;} return *this;} + PIVector & insert(uint pos, const T & t) {_stlc::insert(_stlc::begin() + pos, t); return *this;} + PIVector & insert(uint pos, const PIVector & t) {_stlc::insert(_stlc::begin() + pos, t.begin(), t.end()); return *this;} + T & operator [](uint index); + const T & operator [](uint index) const; + PIVector & operator <<(const T & t) {_stlc::push_back(t); return *this;} + PIVector & operator <<(const PIVector & t) {for (typename _stlc::const_iterator i = t.begin(); i != t.end(); i++) _stlc::push_back(*i); return *this;} + bool operator ==(const PIVector & t) {for (uint i = 0; i < _stlc::size(); ++i) if (t[i] != at(i)) return false; return true;} + bool operator !=(const PIVector & t) {for (uint i = 0; i < _stlc::size(); ++i) if (t[i] != at(i)) return true; return false;} + bool contains(const T & v) const {for (uint i = 0; i < _stlc::size(); ++i) if (v == at(i)) return true; return false;} + +#else + _CVector & enlarge(int size_) {int ns = size_s() + size_; if (ns <= 0) _stlc::clear(); else _stlc::resize(ns); return *this;} + _CVector & sort(CompareFunc compare = compare_func) {qsort(&at(0), _stlc::size(), sizeof(T), (int(*)(const void * , const void * ))compare); return *this;} + _CVector & fill(const T & t) {_stlc::assign(_stlc::size(), t); return *this;} + _CVector & pop_front() {_stlc::erase(_stlc::begin()); return *this;} + _CVector & push_front(const T & t) {_stlc::insert(_stlc::begin(), t); return *this;} + T take_front() {T t(_stlc::front()); pop_front(); return t;} + T take_back() {T t(_stlc::back()); _stlc::pop_back(); return t;} + _CVector & remove(uint index) {_stlc::erase(_stlc::begin() + index); return *this;} + _CVector & remove(uint index, uint count) {_stlc::erase(_stlc::begin() + index, _stlc::begin() + index + count); return *this;} + _CVector & removeOne(const T & v) {for (typename _stlc::iterator i = _stlc::begin(); i != _stlc::end(); ++i) if (v == *i) {_stlc::erase(i); return *this;} return *this;} + _CVector & removeAll(const T & v) {for (typename _stlc::iterator i = _stlc::begin(); i != _stlc::end(); ++i) if (v == *i) {_stlc::erase(i); --i;} return *this;} + _CVector & insert(uint pos, const T & t) {_stlc::insert(_stlc::begin() + pos, t); return *this;} + _CVector & insert(uint pos, const _CVector & t) {_stlc::insert(_stlc::begin() + pos, t.begin(), t.end()); return *this;} + _CVector & operator <<(const T & t) {_stlc::push_back(t); return *this;} + _CVector & operator <<(const _CVector & t) {for (typename _stlc::const_iterator i = t.begin(); i != t.end(); i++) _stlc::push_back(*i); return *this;} + bool operator ==(const _CVector & t) {for (uint i = 0; i < _stlc::size(); ++i) if (t[i] != at(i)) return false; return true;} + bool operator !=(const _CVector & t) {for (uint i = 0; i < _stlc::size(); ++i) if (t[i] != at(i)) return true; return false;} + bool contains(const T & v) const {for (uint i = 0; i < _stlc::size(); ++i) if (v == at(i)) return true; return false;} +#endif +}; + +#define __PIVECTOR_SIMPLE_TYPE__(T) + + +#endif + + +template +inline std::ostream & operator <<(std::ostream & s, const PIVector & v) {s << "{"; for (size_t i = 0; i < v.size(); ++i) {s << v[i]; if (i < v.size() - 1) s << ", ";} s << "}"; return s;} + +template +inline PICout operator <<(PICout s, const PIVector & v) {s.space(); s.setControl(0, true); s << "{"; for (size_t i = 0; i < v.size(); ++i) {s << v[i]; if (i < v.size() - 1) s << ", ";} s << "}"; s.restoreControl(); return s;} + + +#endif // PIVECTOR_H diff --git a/_oldpip/pip_0.4.0_r5/remote_console/CMakeFiles/CMakeDirectoryInformation.cmake b/_oldpip/pip_0.4.0_r5/remote_console/CMakeFiles/CMakeDirectoryInformation.cmake new file mode 100644 index 0000000..cbec93f --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/remote_console/CMakeFiles/CMakeDirectoryInformation.cmake @@ -0,0 +1,16 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "MinGW Makefiles" Generator, CMake Version 2.8 + +# Relative path conversion top directories. +SET(CMAKE_RELATIVE_PATH_TOP_SOURCE "C:/libs/oldpip/pip_0.4.0_r5") +SET(CMAKE_RELATIVE_PATH_TOP_BINARY "C:/libs/oldpip/pip_0.4.0_r5") + +# Force unix paths in dependencies. +SET(CMAKE_FORCE_UNIX_PATHS 1) + + +# The C and CXX include file regular expressions for this directory. +SET(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$") +SET(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$") +SET(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN}) +SET(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN}) diff --git a/_oldpip/pip_0.4.0_r5/remote_console/CMakeFiles/pip_remote_console.dir/CXX.includecache b/_oldpip/pip_0.4.0_r5/remote_console/CMakeFiles/pip_remote_console.dir/CXX.includecache new file mode 100644 index 0000000..a2c8036 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/remote_console/CMakeFiles/pip_remote_console.dir/CXX.includecache @@ -0,0 +1,408 @@ +#IncludeRegexLine: ^[ ]*#[ ]*(include|import)[ ]*[<"]([^">]+)([">]) + +#IncludeRegexScan: ^.*$ + +#IncludeRegexComplain: ^$ + +#IncludeRegexTransform: + +C:/libs/oldpip/pip_0.4.0_r5/remote_console/main.cpp +pip.h +C:/libs/oldpip/pip_0.4.0_r5/remote_console/pip.h + +pibinarylog.h +pifile.h +pifile.h + +pibitarray.h +picontainers.h +picontainers.h + +pibytearray.h +pibitarray.h +pibitarray.h + +pichar.h +pibytearray.h +pibytearray.h + +picli.h +piobject.h +piobject.h + +picodec.h +piprocess.h +piprocess.h + +picollection.h +piobject.h +piobject.h + +piconfig.h +pifile.h +pifile.h + +piconsole.h +pikbdlistener.h +pikbdlistener.h +piprotocol.h +piprotocol.h +pidiagnostics.h +pidiagnostics.h +pisystemmonitor.h +pisystemmonitor.h +sys/ioctl.h +- +fcntl.h +- + +picontainers.h +piincludes.h +piincludes.h +pivector.h +pivector.h +pistack.h +pistack.h +piqueue.h +piqueue.h +pideque.h +pideque.h +pimap.h +pimap.h + +picrc.h +pistring.h +pistring.h + +pideque.h +piincludes.h +piincludes.h + +pidiagnostics.h +pitimer.h +pitimer.h + +piethernet.h +pitimer.h +pitimer.h +piiodevice.h +piiodevice.h +piprocess.h +piprocess.h + +pievaluator.h +pistring.h +pistring.h +pimath.h +pimath.h + +pifile.h +piiodevice.h +piiodevice.h +cstdio +- + +piincludes.h +pip_export.h +pip_export.h +iostream +- +unistd.h +- +stdarg.h +- +stddef.h +- +cstdio +- +cstdlib +- +clocale +- +stdio.h +- +locale.h +- +stdlib.h +- +sys/stat.h +- +sys/types.h +- +errno.h +- +cctype +- +ctime +- +csignal +- +cassert +- +cmath +- +typeinfo +- +algorithm +- +string.h +- +string +- +vector +- +list +- +queue +- +deque +- +stack +- +set +- +map +- +conio.h +- +io.h +- +winsock2.h +- +windows.h +- +wincon.h +- +iphlpapi.h +- +netinet/in.h +- +arpa/inet.h +- +sys/socket.h +- +fcntl.h +- +sys/ioctl.h +- +net/if.h +- +pthread.h +- +ifaddrs.h +- +mach/mach_traps.h +- +mach/mach.h +- +mach/clock.h +- +crt_externs.h +- +pimonitor.h +pimonitor.h + +piiodevice.h +picollection.h +picollection.h +pivariant.h +pivariant.h +pitimer.h +pitimer.h + +pikbdlistener.h +pithread.h +pithread.h +termios.h +- + +pimap.h +pivector.h +pivector.h +pideque.h +pideque.h + +pimath.h +pibytearray.h +pibytearray.h +complex +- +cmath +- +complex.h +- +math.h +- + +pimonitor.h +pip_export.h +pip_export.h + +pimultiprotocol.h +piprotocol.h +piprotocol.h + +pimutex.h +piincludes.h +piincludes.h + +piobject.h +pivariant.h +pivariant.h +pimutex.h +pimutex.h + +pip.h +pitimer.h +pitimer.h +pivariant.h +pivariant.h +piconsole.h +piconsole.h +picli.h +picli.h +pievaluator.h +pievaluator.h +pimultiprotocol.h +pimultiprotocol.h +picodec.h +picodec.h +pisignals.h +pisignals.h +piobject.h +piobject.h +pisystemmonitor.h +pisystemmonitor.h +pipeer.h +pipeer.h +picrc.h +picrc.h +pistatemachine.h +pistatemachine.h +picollection.h +picollection.h +piserial.h +piserial.h +pibinarylog.h +pibinarylog.h +piusb.h +piusb.h + +pip_export.h + +pipacketextractor.h +piiodevice.h +piiodevice.h + +pipeer.h +piethernet.h +piethernet.h +pidiagnostics.h +pidiagnostics.h + +piprocess.h +pithread.h +pithread.h +pifile.h +pifile.h +sys/wait.h +- + +piprotocol.h +piserial.h +piserial.h +piethernet.h +piethernet.h +pipacketextractor.h +pipacketextractor.h +pitimer.h +pitimer.h +piconfig.h +piconfig.h +math.h +math.h + +piqueue.h +pivector.h +pivector.h + +piserial.h +pitimer.h +pitimer.h +piiodevice.h +piiodevice.h +termios.h +- +fcntl.h +- +sys/ioctl.h +- + +pisignals.h +picontainers.h +picontainers.h +csignal +- + +pistack.h +pivector.h +pivector.h + +pistatemachine.h +piobject.h +piobject.h + +pistring.h +pibytearray.h +pibytearray.h +pichar.h +pichar.h +math.h +math.h + +pisystemmonitor.h +pithread.h +pithread.h +piprocess.h +piprocess.h + +pithread.h +signal.h +- +pimutex.h +pimutex.h +piobject.h +piobject.h + +pitime.h +ctime +- +csignal +- +pistring.h +pistring.h + +pitimer.h +pithread.h +pithread.h +pitime.h +pitime.h + +piusb.h +piiodevice.h +piiodevice.h + +pivariant.h +pistring.h +pistring.h +pibitarray.h +pibitarray.h +pitime.h +pitime.h +pimath.h +pimath.h + +pivector.h +piincludes.h +piincludes.h + diff --git a/_oldpip/pip_0.4.0_r5/remote_console/CMakeFiles/pip_remote_console.dir/DependInfo.cmake b/_oldpip/pip_0.4.0_r5/remote_console/CMakeFiles/pip_remote_console.dir/DependInfo.cmake new file mode 100644 index 0000000..120e5c2 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/remote_console/CMakeFiles/pip_remote_console.dir/DependInfo.cmake @@ -0,0 +1,59 @@ +# The set of languages for which implicit dependencies are needed: +SET(CMAKE_DEPENDS_LANGUAGES + "CXX" + ) +# The set of files for implicit dependencies of each language: +SET(CMAKE_DEPENDS_CHECK_CXX + "C:/libs/oldpip/pip_0.4.0_r5/remote_console/main.cpp" "C:/libs/oldpip/pip_0.4.0_r5/remote_console/CMakeFiles/pip_remote_console.dir/main.cpp.obj" + ) +SET(CMAKE_CXX_COMPILER_ID "GNU") + +# Preprocessor definitions for this target. +SET(CMAKE_TARGET_DEFINITIONS + "PIP_MATH_J0" + "PIP_MATH_J1" + "PIP_MATH_JN" + "PIP_MATH_Y0" + "PIP_MATH_Y1" + "PIP_MATH_YN" + ) + +# Targets to which this target links. +SET(CMAKE_TARGET_LINKED_INFO_FILES + "C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/DependInfo.cmake" + ) + +# The include file search paths: +SET(CMAKE_C_TARGET_INCLUDE_PATH + "." + "." + "C:/Qt/4.8.6/include/ActiveQt" + "C:/Qt/4.8.6/include/QtDesigner" + "C:/Qt/4.8.6/include/QtDeclarative" + "C:/Qt/4.8.6/include/QtScriptTools" + "C:/Qt/4.8.6/include/QtDBus" + "C:/Qt/4.8.6/include/QtXml" + "C:/Qt/4.8.6/include/QtSql" + "C:/Qt/4.8.6/include/QtOpenGL" + "C:/Qt/4.8.6/include/QtMultimedia" + "C:/Qt/4.8.6/include/QtNetwork" + "C:/Qt/4.8.6/include/phonon" + "C:/Qt/4.8.6/include/QtXmlPatterns" + "C:/Qt/4.8.6/include/QtWebKit" + "C:/Qt/4.8.6/include/QtHelp" + "C:/Qt/4.8.6/include/QtUiTools" + "C:/Qt/4.8.6/include/QtTest" + "C:/Qt/4.8.6/include/QtScript" + "C:/Qt/4.8.6/include/QtSvg" + "C:/Qt/4.8.6/include/Qt3Support" + "C:/Qt/4.8.6/include/QtGui" + "C:/Qt/4.8.6/include/QtCore" + "C:/Qt/4.8.6/mkspecs/default" + "C:/Qt/4.8.6/include" + "remote_console" + "remote_console/." + "remote_console/.." + ) +SET(CMAKE_CXX_TARGET_INCLUDE_PATH ${CMAKE_C_TARGET_INCLUDE_PATH}) +SET(CMAKE_Fortran_TARGET_INCLUDE_PATH ${CMAKE_C_TARGET_INCLUDE_PATH}) +SET(CMAKE_ASM_TARGET_INCLUDE_PATH ${CMAKE_C_TARGET_INCLUDE_PATH}) diff --git a/_oldpip/pip_0.4.0_r5/remote_console/CMakeFiles/pip_remote_console.dir/build.make b/_oldpip/pip_0.4.0_r5/remote_console/CMakeFiles/pip_remote_console.dir/build.make new file mode 100644 index 0000000..10bea84 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/remote_console/CMakeFiles/pip_remote_console.dir/build.make @@ -0,0 +1,107 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "MinGW Makefiles" Generator, CMake Version 2.8 + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Remove some rules from gmake that .SUFFIXES does not remove. +SUFFIXES = + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +SHELL = cmd.exe + +# The CMake executable. +CMAKE_COMMAND = "C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" + +# The command to remove a file. +RM = "C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" -E remove -f + +# Escaping for special characters. +EQUALS = = + +# The program to use to edit the cache. +CMAKE_EDIT_COMMAND = "C:\Program Files (x86)\CMake 2.8\bin\cmake-gui.exe" + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = C:\libs\oldpip\pip_0.4.0_r5 + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = C:\libs\oldpip\pip_0.4.0_r5 + +# Include any dependencies generated for this target. +include remote_console/CMakeFiles/pip_remote_console.dir/depend.make + +# Include the progress variables for this target. +include remote_console/CMakeFiles/pip_remote_console.dir/progress.make + +# Include the compile flags for this target's objects. +include remote_console/CMakeFiles/pip_remote_console.dir/flags.make + +remote_console/CMakeFiles/pip_remote_console.dir/main.cpp.obj: remote_console/CMakeFiles/pip_remote_console.dir/flags.make +remote_console/CMakeFiles/pip_remote_console.dir/main.cpp.obj: remote_console/CMakeFiles/pip_remote_console.dir/includes_CXX.rsp +remote_console/CMakeFiles/pip_remote_console.dir/main.cpp.obj: remote_console/main.cpp + $(CMAKE_COMMAND) -E cmake_progress_report C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles $(CMAKE_PROGRESS_1) + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object remote_console/CMakeFiles/pip_remote_console.dir/main.cpp.obj" + cd /d C:\libs\oldpip\pip_0.4.0_r5\remote_console && C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles\pip_remote_console.dir\main.cpp.obj -c C:\libs\oldpip\pip_0.4.0_r5\remote_console\main.cpp + +remote_console/CMakeFiles/pip_remote_console.dir/main.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/pip_remote_console.dir/main.cpp.i" + cd /d C:\libs\oldpip\pip_0.4.0_r5\remote_console && C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -E C:\libs\oldpip\pip_0.4.0_r5\remote_console\main.cpp > CMakeFiles\pip_remote_console.dir\main.cpp.i + +remote_console/CMakeFiles/pip_remote_console.dir/main.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/pip_remote_console.dir/main.cpp.s" + cd /d C:\libs\oldpip\pip_0.4.0_r5\remote_console && C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -S C:\libs\oldpip\pip_0.4.0_r5\remote_console\main.cpp -o CMakeFiles\pip_remote_console.dir\main.cpp.s + +remote_console/CMakeFiles/pip_remote_console.dir/main.cpp.obj.requires: +.PHONY : remote_console/CMakeFiles/pip_remote_console.dir/main.cpp.obj.requires + +remote_console/CMakeFiles/pip_remote_console.dir/main.cpp.obj.provides: remote_console/CMakeFiles/pip_remote_console.dir/main.cpp.obj.requires + $(MAKE) -f remote_console\CMakeFiles\pip_remote_console.dir\build.make remote_console/CMakeFiles/pip_remote_console.dir/main.cpp.obj.provides.build +.PHONY : remote_console/CMakeFiles/pip_remote_console.dir/main.cpp.obj.provides + +remote_console/CMakeFiles/pip_remote_console.dir/main.cpp.obj.provides.build: remote_console/CMakeFiles/pip_remote_console.dir/main.cpp.obj + +# Object files for target pip_remote_console +pip_remote_console_OBJECTS = \ +"CMakeFiles/pip_remote_console.dir/main.cpp.obj" + +# External object files for target pip_remote_console +pip_remote_console_EXTERNAL_OBJECTS = + +remote_console/pip_remote_console.exe: remote_console/CMakeFiles/pip_remote_console.dir/main.cpp.obj +remote_console/pip_remote_console.exe: remote_console/CMakeFiles/pip_remote_console.dir/build.make +remote_console/pip_remote_console.exe: libpip.dll.a +remote_console/pip_remote_console.exe: remote_console/CMakeFiles/pip_remote_console.dir/objects1.rsp +remote_console/pip_remote_console.exe: remote_console/CMakeFiles/pip_remote_console.dir/link.txt + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --red --bold "Linking CXX executable pip_remote_console.exe" + cd /d C:\libs\oldpip\pip_0.4.0_r5\remote_console && $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles\pip_remote_console.dir\link.txt --verbose=$(VERBOSE) + +# Rule to build all files generated by this target. +remote_console/CMakeFiles/pip_remote_console.dir/build: remote_console/pip_remote_console.exe +.PHONY : remote_console/CMakeFiles/pip_remote_console.dir/build + +remote_console/CMakeFiles/pip_remote_console.dir/requires: remote_console/CMakeFiles/pip_remote_console.dir/main.cpp.obj.requires +.PHONY : remote_console/CMakeFiles/pip_remote_console.dir/requires + +remote_console/CMakeFiles/pip_remote_console.dir/clean: + cd /d C:\libs\oldpip\pip_0.4.0_r5\remote_console && $(CMAKE_COMMAND) -P CMakeFiles\pip_remote_console.dir\cmake_clean.cmake +.PHONY : remote_console/CMakeFiles/pip_remote_console.dir/clean + +remote_console/CMakeFiles/pip_remote_console.dir/depend: + $(CMAKE_COMMAND) -E cmake_depends "MinGW Makefiles" C:\libs\oldpip\pip_0.4.0_r5 C:\libs\oldpip\pip_0.4.0_r5\remote_console C:\libs\oldpip\pip_0.4.0_r5 C:\libs\oldpip\pip_0.4.0_r5\remote_console C:\libs\oldpip\pip_0.4.0_r5\remote_console\CMakeFiles\pip_remote_console.dir\DependInfo.cmake --color=$(COLOR) +.PHONY : remote_console/CMakeFiles/pip_remote_console.dir/depend + diff --git a/_oldpip/pip_0.4.0_r5/remote_console/CMakeFiles/pip_remote_console.dir/cmake_clean.cmake b/_oldpip/pip_0.4.0_r5/remote_console/CMakeFiles/pip_remote_console.dir/cmake_clean.cmake new file mode 100644 index 0000000..0975475 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/remote_console/CMakeFiles/pip_remote_console.dir/cmake_clean.cmake @@ -0,0 +1,12 @@ +FILE(REMOVE_RECURSE + "CMakeFiles/pip_remote_console.dir/main.cpp.obj" + "pip_remote_console.pdb" + "pip_remote_console.exe" + "pip_remote_console.exe.manifest" + "libpip_remote_console.dll.a" +) + +# Per-language clean rules from dependency scanning. +FOREACH(lang CXX) + INCLUDE(CMakeFiles/pip_remote_console.dir/cmake_clean_${lang}.cmake OPTIONAL) +ENDFOREACH(lang) diff --git a/_oldpip/pip_0.4.0_r5/remote_console/CMakeFiles/pip_remote_console.dir/depend.internal b/_oldpip/pip_0.4.0_r5/remote_console/CMakeFiles/pip_remote_console.dir/depend.internal new file mode 100644 index 0000000..dd97864 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/remote_console/CMakeFiles/pip_remote_console.dir/depend.internal @@ -0,0 +1,49 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "MinGW Makefiles" Generator, CMake Version 2.8 + +remote_console/CMakeFiles/pip_remote_console.dir/main.cpp.obj + C:/libs/oldpip/pip_0.4.0_r5/remote_console/main.cpp + pibinarylog.h + pibitarray.h + pibytearray.h + pichar.h + picli.h + picodec.h + picollection.h + piconfig.h + piconsole.h + picontainers.h + picrc.h + pideque.h + pidiagnostics.h + piethernet.h + pievaluator.h + pifile.h + piincludes.h + piiodevice.h + pikbdlistener.h + pimap.h + pimath.h + pimonitor.h + pimultiprotocol.h + pimutex.h + piobject.h + pip.h + pip_export.h + pipacketextractor.h + pipeer.h + piprocess.h + piprotocol.h + piqueue.h + piserial.h + pisignals.h + pistack.h + pistatemachine.h + pistring.h + pisystemmonitor.h + pithread.h + pitime.h + pitimer.h + piusb.h + pivariant.h + pivector.h diff --git a/_oldpip/pip_0.4.0_r5/remote_console/CMakeFiles/pip_remote_console.dir/depend.make b/_oldpip/pip_0.4.0_r5/remote_console/CMakeFiles/pip_remote_console.dir/depend.make new file mode 100644 index 0000000..4784b30 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/remote_console/CMakeFiles/pip_remote_console.dir/depend.make @@ -0,0 +1,49 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "MinGW Makefiles" Generator, CMake Version 2.8 + +remote_console/CMakeFiles/pip_remote_console.dir/main.cpp.obj: remote_console/main.cpp +remote_console/CMakeFiles/pip_remote_console.dir/main.cpp.obj: pibinarylog.h +remote_console/CMakeFiles/pip_remote_console.dir/main.cpp.obj: pibitarray.h +remote_console/CMakeFiles/pip_remote_console.dir/main.cpp.obj: pibytearray.h +remote_console/CMakeFiles/pip_remote_console.dir/main.cpp.obj: pichar.h +remote_console/CMakeFiles/pip_remote_console.dir/main.cpp.obj: picli.h +remote_console/CMakeFiles/pip_remote_console.dir/main.cpp.obj: picodec.h +remote_console/CMakeFiles/pip_remote_console.dir/main.cpp.obj: picollection.h +remote_console/CMakeFiles/pip_remote_console.dir/main.cpp.obj: piconfig.h +remote_console/CMakeFiles/pip_remote_console.dir/main.cpp.obj: piconsole.h +remote_console/CMakeFiles/pip_remote_console.dir/main.cpp.obj: picontainers.h +remote_console/CMakeFiles/pip_remote_console.dir/main.cpp.obj: picrc.h +remote_console/CMakeFiles/pip_remote_console.dir/main.cpp.obj: pideque.h +remote_console/CMakeFiles/pip_remote_console.dir/main.cpp.obj: pidiagnostics.h +remote_console/CMakeFiles/pip_remote_console.dir/main.cpp.obj: piethernet.h +remote_console/CMakeFiles/pip_remote_console.dir/main.cpp.obj: pievaluator.h +remote_console/CMakeFiles/pip_remote_console.dir/main.cpp.obj: pifile.h +remote_console/CMakeFiles/pip_remote_console.dir/main.cpp.obj: piincludes.h +remote_console/CMakeFiles/pip_remote_console.dir/main.cpp.obj: piiodevice.h +remote_console/CMakeFiles/pip_remote_console.dir/main.cpp.obj: pikbdlistener.h +remote_console/CMakeFiles/pip_remote_console.dir/main.cpp.obj: pimap.h +remote_console/CMakeFiles/pip_remote_console.dir/main.cpp.obj: pimath.h +remote_console/CMakeFiles/pip_remote_console.dir/main.cpp.obj: pimonitor.h +remote_console/CMakeFiles/pip_remote_console.dir/main.cpp.obj: pimultiprotocol.h +remote_console/CMakeFiles/pip_remote_console.dir/main.cpp.obj: pimutex.h +remote_console/CMakeFiles/pip_remote_console.dir/main.cpp.obj: piobject.h +remote_console/CMakeFiles/pip_remote_console.dir/main.cpp.obj: pip.h +remote_console/CMakeFiles/pip_remote_console.dir/main.cpp.obj: pip_export.h +remote_console/CMakeFiles/pip_remote_console.dir/main.cpp.obj: pipacketextractor.h +remote_console/CMakeFiles/pip_remote_console.dir/main.cpp.obj: pipeer.h +remote_console/CMakeFiles/pip_remote_console.dir/main.cpp.obj: piprocess.h +remote_console/CMakeFiles/pip_remote_console.dir/main.cpp.obj: piprotocol.h +remote_console/CMakeFiles/pip_remote_console.dir/main.cpp.obj: piqueue.h +remote_console/CMakeFiles/pip_remote_console.dir/main.cpp.obj: piserial.h +remote_console/CMakeFiles/pip_remote_console.dir/main.cpp.obj: pisignals.h +remote_console/CMakeFiles/pip_remote_console.dir/main.cpp.obj: pistack.h +remote_console/CMakeFiles/pip_remote_console.dir/main.cpp.obj: pistatemachine.h +remote_console/CMakeFiles/pip_remote_console.dir/main.cpp.obj: pistring.h +remote_console/CMakeFiles/pip_remote_console.dir/main.cpp.obj: pisystemmonitor.h +remote_console/CMakeFiles/pip_remote_console.dir/main.cpp.obj: pithread.h +remote_console/CMakeFiles/pip_remote_console.dir/main.cpp.obj: pitime.h +remote_console/CMakeFiles/pip_remote_console.dir/main.cpp.obj: pitimer.h +remote_console/CMakeFiles/pip_remote_console.dir/main.cpp.obj: piusb.h +remote_console/CMakeFiles/pip_remote_console.dir/main.cpp.obj: pivariant.h +remote_console/CMakeFiles/pip_remote_console.dir/main.cpp.obj: pivector.h + diff --git a/_oldpip/pip_0.4.0_r5/remote_console/CMakeFiles/pip_remote_console.dir/flags.make b/_oldpip/pip_0.4.0_r5/remote_console/CMakeFiles/pip_remote_console.dir/flags.make new file mode 100644 index 0000000..d328818 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/remote_console/CMakeFiles/pip_remote_console.dir/flags.make @@ -0,0 +1,8 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "MinGW Makefiles" Generator, CMake Version 2.8 + +# compile CXX with C:/mingw/x32/bin/g++.exe +CXX_FLAGS = -O3 -DNDEBUG @CMakeFiles/pip_remote_console.dir/includes_CXX.rsp -O2 -Wall -O2 + +CXX_DEFINES = -DPIP_MATH_J0 -DPIP_MATH_J1 -DPIP_MATH_JN -DPIP_MATH_Y0 -DPIP_MATH_Y1 -DPIP_MATH_YN + diff --git a/_oldpip/pip_0.4.0_r5/remote_console/CMakeFiles/pip_remote_console.dir/includes_CXX.rsp b/_oldpip/pip_0.4.0_r5/remote_console/CMakeFiles/pip_remote_console.dir/includes_CXX.rsp new file mode 100644 index 0000000..d98d0b3 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/remote_console/CMakeFiles/pip_remote_console.dir/includes_CXX.rsp @@ -0,0 +1 @@ +-IC:/libs/oldpip/pip_0.4.0_r5 -IC:/libs/oldpip/pip_0.4.0_r5/. -IC:/Qt/4.8.6/include/ActiveQt -IC:/Qt/4.8.6/include/QtDesigner -IC:/Qt/4.8.6/include/QtDeclarative -IC:/Qt/4.8.6/include/QtScriptTools -IC:/Qt/4.8.6/include/QtDBus -IC:/Qt/4.8.6/include/QtXml -IC:/Qt/4.8.6/include/QtSql -IC:/Qt/4.8.6/include/QtOpenGL -IC:/Qt/4.8.6/include/QtMultimedia -IC:/Qt/4.8.6/include/QtNetwork -IC:/Qt/4.8.6/include/phonon -IC:/Qt/4.8.6/include/QtXmlPatterns -IC:/Qt/4.8.6/include/QtWebKit -IC:/Qt/4.8.6/include/QtHelp -IC:/Qt/4.8.6/include/QtUiTools -IC:/Qt/4.8.6/include/QtTest -IC:/Qt/4.8.6/include/QtScript -IC:/Qt/4.8.6/include/QtSvg -IC:/Qt/4.8.6/include/Qt3Support -IC:/Qt/4.8.6/include/QtGui -IC:/Qt/4.8.6/include/QtCore -IC:/Qt/4.8.6/mkspecs/default -IC:/Qt/4.8.6/include -IC:/libs/oldpip/pip_0.4.0_r5/remote_console -IC:/libs/oldpip/pip_0.4.0_r5/remote_console/. -IC:/libs/oldpip/pip_0.4.0_r5/remote_console/.. diff --git a/_oldpip/pip_0.4.0_r5/remote_console/CMakeFiles/pip_remote_console.dir/link.txt b/_oldpip/pip_0.4.0_r5/remote_console/CMakeFiles/pip_remote_console.dir/link.txt new file mode 100644 index 0000000..0fffc9c --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/remote_console/CMakeFiles/pip_remote_console.dir/link.txt @@ -0,0 +1,3 @@ +"C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" -E remove -f CMakeFiles\pip_remote_console.dir/objects.a +C:\mingw\x32\bin\ar.exe cr CMakeFiles\pip_remote_console.dir/objects.a @CMakeFiles\pip_remote_console.dir\objects1.rsp +C:\mingw\x32\bin\g++.exe -O3 -DNDEBUG -Wl,--whole-archive CMakeFiles\pip_remote_console.dir/objects.a -Wl,--no-whole-archive -o pip_remote_console.exe -Wl,--out-implib,libpip_remote_console.dll.a -Wl,--major-image-version,0,--minor-image-version,0 ..\libpip.dll.a -lws2_32 -lIphlpapi -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 diff --git a/_oldpip/pip_0.4.0_r5/remote_console/CMakeFiles/pip_remote_console.dir/main.cpp.obj b/_oldpip/pip_0.4.0_r5/remote_console/CMakeFiles/pip_remote_console.dir/main.cpp.obj new file mode 100644 index 0000000000000000000000000000000000000000..7184af5867aa630e79b266fc67c1eac8bb4b92c6 GIT binary patch literal 16764 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. +*/ + +#include "pip.h" + +void key_event(char key, void * ); + +PIConsole console(false, key_event); +PIStringList as; +bool selected = false; + +void key_event(char key, void * ) { + if (key < '1' || key > '9') return; + int ind = key - '1'; + if (ind < 0 || ind >= as.size_s()) return; + selected = true; + console.connectToServer(as[ind]); +} + +int main(int argc, char * argv[]) { + console.enableExitCapture(); + console.listenServers(); + while (!PIKbdListener::exiting) { + msleep(200); + if (selected) break; + console.clearScreen(); + as = console.availableServers(); + if (as.isEmpty()) { + piCout << "No servers are available!"; + } else { + piCout << "Select one with numeric key:"; + for (int i = 0; i < as.size_s(); ++i) + piCout << (i + 1) << as[i]; + } + } + if (!selected) return 0; + //console.clearScreen(); + piCout << "Connecting to" << console.selectedServer() << "..."; + while (!PIKbdListener::exiting) { + msleep(20); + if (console.isConnected()) + break; + } + if (PIKbdListener::exiting) + return 0; + console.start(); + console.waitForFinish(); +}; diff --git a/_oldpip/pip_0.4.0_r5/remote_console/pip_remote_console.exe b/_oldpip/pip_0.4.0_r5/remote_console/pip_remote_console.exe new file mode 100644 index 0000000000000000000000000000000000000000..8296f92ab8b3b584daf612bc8d5aeba1523e7572 GIT binary patch literal 67156 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

    (o@dT+@*QMNcu)DV%g#q z+dSSTr-vz*=p=ynFCQgDyB4YkzYwI^#NZf|-rLG0`+zw1RL{jQ_ zTcFkH_JsT{K`eKOG(TV_s)z0TU<`uMs5+v@nNFQ zp>fV_M+l@k8A0@5{-j!QgdHuGQ z7JMz6s;z`tOxVmU8sheD7s&@2b#_HK04f7D-cH#&D?3X!!}nC)?nG42s`uiP9D0D9tT3EQGP)ZDyvCUnF4{>y@HM9gaUROhj)vBhJD#`*o zUH)aXFhcfb7sS$xjmRw7;D}_nMc?yhD?<+5X5|d*$dIf;R>Fe zh9oajE1TcI#Dj=PyF0a^pf41(1(BOKg@P_?K7}+=^0Yo685~}dxJ-b%V;Mz0lm{nL zt;FVAMZ+NP47w50q|AqJ(JDSvlV2!`l-GGYd}gYI8}a)2#nG#GmZiG%Lei2Hk%Yzl%Bo!jO!WUrkAHH6YoJ3~AcLr6l zi%Djt(!3=UfnA*rm%j^N^Ul^GOs=!3ot{b3H|RT?;Q}DxZVs^F9iX*=x0U!K%f@Wi z;by){iiWaOMRSkgk1^nanr8I9nUIGO>~P-Z^;04o*aSg4L=uw{14V=Ckn#lVb*m^? zi}ZcYc>O}PBe>@gcXgmk-v+K=yA!avY|f5A8{cG+DY~Uia^^NmnctnO2XKR^0@f+f=%^kY0s3Amja+_ ztw~2_JHD%(A}y98XvL*PK07HcWL8}o(l*tVbzwzMBabyih39rV z5viCVwLtcZzj!tnY;Kn;pl&Jczy#Nfq=up_SDA=K!^V6ukG(tKX1}8)`GSvq-?vO+ z!gvHlA|>TWq#hk4XQRt`dk%!3)D}6S)^2UZTzw& z2U{W`b8hRT6$Qg!9z;EnT&2qEL}tWNPd*-7Lx^07k&p=^ZCuOhoS0fL90=#&dw!Le zJUO*WTZ0@F1DKdF8zeZhW-ZFIAvFL`pJ+kBX9+gyObwwY&eMqeL5gxLVUq3I8p1#) zn@yQ7vUHg?EV0(5CBg(dN&ZsOP@A|1$wx68pJ8EH=k_IUfFOov^_)0opJ#6cWBE==OClv0%>s+TFb@9sArxVtpY`(;n4|@cRc?5e7 zNc~*hU@KdGqFb^gda9{H*4rdm4c)JDU~78*f(224;kO@_!>I^@1JpbWY}mmEZCQqZJQ$V~u(M`Hd6qQlF1EDj>(?=(2Lw9>5VAJ?Dn{j3naz|NtzZ9 zcD%LTI%O^>y@m;N*;L#x9f2-#9H-2-%H`~uG%-~abzX~})(}E%qTX2-r1t|k+6?S|)4t$NJ7kpz8QsV|>WcP|GKi%S&fXhLyND;K3xAU<5I7k49ZJD60kO zL9gN*UJt@tGxoWqpMQ}JBE5t~!yclXWzvuqiCxXj9<0}pzc~Y5T3O?P)8uKncw-mV z)qFi#;&BE7*b!1gt%I#}8nByb3&6ZCDzQ{rySd9;;;iORT*XMf2VYB=<0ecwosM?z zM$9^pN1jv>U)XG<^hGhk z%NN~xCzP{Qy}l=As!TWRgBX$_&bD1Kc>*k(kxlVaZj1qoM;@NuC1#c$d5(v%!v&OdykP z6HUDnG%?*1#Iw)MQnJcApj$NPyCtDdoyE(`-5B;Wzq#t>Pl2YscKlFr(tL}s(W9X`W LSQ{Z8OC|;YPSuqh literal 0 HcmV?d00001 diff --git a/_oldpip/pip_0.4.0_r5/system_test/CMakeFiles/CMakeDirectoryInformation.cmake b/_oldpip/pip_0.4.0_r5/system_test/CMakeFiles/CMakeDirectoryInformation.cmake new file mode 100644 index 0000000..cbec93f --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/system_test/CMakeFiles/CMakeDirectoryInformation.cmake @@ -0,0 +1,16 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "MinGW Makefiles" Generator, CMake Version 2.8 + +# Relative path conversion top directories. +SET(CMAKE_RELATIVE_PATH_TOP_SOURCE "C:/libs/oldpip/pip_0.4.0_r5") +SET(CMAKE_RELATIVE_PATH_TOP_BINARY "C:/libs/oldpip/pip_0.4.0_r5") + +# Force unix paths in dependencies. +SET(CMAKE_FORCE_UNIX_PATHS 1) + + +# The C and CXX include file regular expressions for this directory. +SET(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$") +SET(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$") +SET(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN}) +SET(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN}) diff --git a/_oldpip/pip_0.4.0_r5/system_test/CMakeFiles/pip_sys_test.dir/CXX.includecache b/_oldpip/pip_0.4.0_r5/system_test/CMakeFiles/pip_sys_test.dir/CXX.includecache new file mode 100644 index 0000000..d16ff88 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/system_test/CMakeFiles/pip_sys_test.dir/CXX.includecache @@ -0,0 +1,414 @@ +#IncludeRegexLine: ^[ ]*#[ ]*(include|import)[ ]*[<"]([^">]+)([">]) + +#IncludeRegexScan: ^.*$ + +#IncludeRegexComplain: ^$ + +#IncludeRegexTransform: + +C:/libs/oldpip/pip_0.4.0_r5/system_test/main.cpp +pip.h +C:/libs/oldpip/pip_0.4.0_r5/system_test/pip.h +pisystemtests.h +C:/libs/oldpip/pip_0.4.0_r5/system_test/pisystemtests.h + +pibinarylog.h +pifile.h +pifile.h + +pibitarray.h +picontainers.h +picontainers.h + +pibytearray.h +pibitarray.h +pibitarray.h + +pichar.h +pibytearray.h +pibytearray.h + +picli.h +piobject.h +piobject.h + +picodec.h +piprocess.h +piprocess.h + +picollection.h +piobject.h +piobject.h + +piconfig.h +pifile.h +pifile.h + +piconsole.h +pikbdlistener.h +pikbdlistener.h +piprotocol.h +piprotocol.h +pidiagnostics.h +pidiagnostics.h +pisystemmonitor.h +pisystemmonitor.h +sys/ioctl.h +- +fcntl.h +- + +picontainers.h +piincludes.h +piincludes.h +pivector.h +pivector.h +pistack.h +pistack.h +piqueue.h +piqueue.h +pideque.h +pideque.h +pimap.h +pimap.h + +picrc.h +pistring.h +pistring.h + +pideque.h +piincludes.h +piincludes.h + +pidiagnostics.h +pitimer.h +pitimer.h + +piethernet.h +pitimer.h +pitimer.h +piiodevice.h +piiodevice.h +piprocess.h +piprocess.h + +pievaluator.h +pistring.h +pistring.h +pimath.h +pimath.h + +pifile.h +piiodevice.h +piiodevice.h +cstdio +- + +piincludes.h +pip_export.h +pip_export.h +iostream +- +unistd.h +- +stdarg.h +- +stddef.h +- +cstdio +- +cstdlib +- +clocale +- +stdio.h +- +locale.h +- +stdlib.h +- +sys/stat.h +- +sys/types.h +- +errno.h +- +cctype +- +ctime +- +csignal +- +cassert +- +cmath +- +typeinfo +- +algorithm +- +string.h +- +string +- +vector +- +list +- +queue +- +deque +- +stack +- +set +- +map +- +conio.h +- +io.h +- +winsock2.h +- +windows.h +- +wincon.h +- +iphlpapi.h +- +netinet/in.h +- +arpa/inet.h +- +sys/socket.h +- +fcntl.h +- +sys/ioctl.h +- +net/if.h +- +pthread.h +- +ifaddrs.h +- +mach/mach_traps.h +- +mach/mach.h +- +mach/clock.h +- +crt_externs.h +- +pimonitor.h +pimonitor.h + +piiodevice.h +picollection.h +picollection.h +pivariant.h +pivariant.h +pitimer.h +pitimer.h + +pikbdlistener.h +pithread.h +pithread.h +termios.h +- + +pimap.h +pivector.h +pivector.h +pideque.h +pideque.h + +pimath.h +pibytearray.h +pibytearray.h +complex +- +cmath +- +complex.h +- +math.h +- + +pimonitor.h +pip_export.h +pip_export.h + +pimultiprotocol.h +piprotocol.h +piprotocol.h + +pimutex.h +piincludes.h +piincludes.h + +piobject.h +pivariant.h +pivariant.h +pimutex.h +pimutex.h + +pip.h +pitimer.h +pitimer.h +pivariant.h +pivariant.h +piconsole.h +piconsole.h +picli.h +picli.h +pievaluator.h +pievaluator.h +pimultiprotocol.h +pimultiprotocol.h +picodec.h +picodec.h +pisignals.h +pisignals.h +piobject.h +piobject.h +pisystemmonitor.h +pisystemmonitor.h +pipeer.h +pipeer.h +picrc.h +picrc.h +pistatemachine.h +pistatemachine.h +picollection.h +picollection.h +piserial.h +piserial.h +pibinarylog.h +pibinarylog.h +piusb.h +piusb.h + +pip_export.h + +pipacketextractor.h +piiodevice.h +piiodevice.h + +pipeer.h +piethernet.h +piethernet.h +pidiagnostics.h +pidiagnostics.h + +piprocess.h +pithread.h +pithread.h +pifile.h +pifile.h +sys/wait.h +- + +piprotocol.h +piserial.h +piserial.h +piethernet.h +piethernet.h +pipacketextractor.h +pipacketextractor.h +pitimer.h +pitimer.h +piconfig.h +piconfig.h +math.h +math.h + +piqueue.h +pivector.h +pivector.h + +piserial.h +pitimer.h +pitimer.h +piiodevice.h +piiodevice.h +termios.h +- +fcntl.h +- +sys/ioctl.h +- + +pisignals.h +picontainers.h +picontainers.h +csignal +- + +pistack.h +pivector.h +pivector.h + +pistatemachine.h +piobject.h +piobject.h + +pistring.h +pibytearray.h +pibytearray.h +pichar.h +pichar.h +math.h +math.h + +pisystemmonitor.h +pithread.h +pithread.h +piprocess.h +piprocess.h + +pisystemtests.h +piconfig.h +piconfig.h + +pithread.h +signal.h +- +pimutex.h +pimutex.h +piobject.h +piobject.h + +pitime.h +ctime +- +csignal +- +pistring.h +pistring.h + +pitimer.h +pithread.h +pithread.h +pitime.h +pitime.h + +piusb.h +piiodevice.h +piiodevice.h + +pivariant.h +pistring.h +pistring.h +pibitarray.h +pibitarray.h +pitime.h +pitime.h +pimath.h +pimath.h + +pivector.h +piincludes.h +piincludes.h + diff --git a/_oldpip/pip_0.4.0_r5/system_test/CMakeFiles/pip_sys_test.dir/DependInfo.cmake b/_oldpip/pip_0.4.0_r5/system_test/CMakeFiles/pip_sys_test.dir/DependInfo.cmake new file mode 100644 index 0000000..8a03590 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/system_test/CMakeFiles/pip_sys_test.dir/DependInfo.cmake @@ -0,0 +1,59 @@ +# The set of languages for which implicit dependencies are needed: +SET(CMAKE_DEPENDS_LANGUAGES + "CXX" + ) +# The set of files for implicit dependencies of each language: +SET(CMAKE_DEPENDS_CHECK_CXX + "C:/libs/oldpip/pip_0.4.0_r5/system_test/main.cpp" "C:/libs/oldpip/pip_0.4.0_r5/system_test/CMakeFiles/pip_sys_test.dir/main.cpp.obj" + ) +SET(CMAKE_CXX_COMPILER_ID "GNU") + +# Preprocessor definitions for this target. +SET(CMAKE_TARGET_DEFINITIONS + "PIP_MATH_J0" + "PIP_MATH_J1" + "PIP_MATH_JN" + "PIP_MATH_Y0" + "PIP_MATH_Y1" + "PIP_MATH_YN" + ) + +# Targets to which this target links. +SET(CMAKE_TARGET_LINKED_INFO_FILES + "C:/libs/oldpip/pip_0.4.0_r5/CMakeFiles/pip.dir/DependInfo.cmake" + ) + +# The include file search paths: +SET(CMAKE_C_TARGET_INCLUDE_PATH + "." + "." + "C:/Qt/4.8.6/include/ActiveQt" + "C:/Qt/4.8.6/include/QtDesigner" + "C:/Qt/4.8.6/include/QtDeclarative" + "C:/Qt/4.8.6/include/QtScriptTools" + "C:/Qt/4.8.6/include/QtDBus" + "C:/Qt/4.8.6/include/QtXml" + "C:/Qt/4.8.6/include/QtSql" + "C:/Qt/4.8.6/include/QtOpenGL" + "C:/Qt/4.8.6/include/QtMultimedia" + "C:/Qt/4.8.6/include/QtNetwork" + "C:/Qt/4.8.6/include/phonon" + "C:/Qt/4.8.6/include/QtXmlPatterns" + "C:/Qt/4.8.6/include/QtWebKit" + "C:/Qt/4.8.6/include/QtHelp" + "C:/Qt/4.8.6/include/QtUiTools" + "C:/Qt/4.8.6/include/QtTest" + "C:/Qt/4.8.6/include/QtScript" + "C:/Qt/4.8.6/include/QtSvg" + "C:/Qt/4.8.6/include/Qt3Support" + "C:/Qt/4.8.6/include/QtGui" + "C:/Qt/4.8.6/include/QtCore" + "C:/Qt/4.8.6/mkspecs/default" + "C:/Qt/4.8.6/include" + "system_test" + "system_test/." + "system_test/.." + ) +SET(CMAKE_CXX_TARGET_INCLUDE_PATH ${CMAKE_C_TARGET_INCLUDE_PATH}) +SET(CMAKE_Fortran_TARGET_INCLUDE_PATH ${CMAKE_C_TARGET_INCLUDE_PATH}) +SET(CMAKE_ASM_TARGET_INCLUDE_PATH ${CMAKE_C_TARGET_INCLUDE_PATH}) diff --git a/_oldpip/pip_0.4.0_r5/system_test/CMakeFiles/pip_sys_test.dir/build.make b/_oldpip/pip_0.4.0_r5/system_test/CMakeFiles/pip_sys_test.dir/build.make new file mode 100644 index 0000000..7fd5f31 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/system_test/CMakeFiles/pip_sys_test.dir/build.make @@ -0,0 +1,107 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "MinGW Makefiles" Generator, CMake Version 2.8 + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Remove some rules from gmake that .SUFFIXES does not remove. +SUFFIXES = + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +SHELL = cmd.exe + +# The CMake executable. +CMAKE_COMMAND = "C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" + +# The command to remove a file. +RM = "C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" -E remove -f + +# Escaping for special characters. +EQUALS = = + +# The program to use to edit the cache. +CMAKE_EDIT_COMMAND = "C:\Program Files (x86)\CMake 2.8\bin\cmake-gui.exe" + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = C:\libs\oldpip\pip_0.4.0_r5 + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = C:\libs\oldpip\pip_0.4.0_r5 + +# Include any dependencies generated for this target. +include system_test/CMakeFiles/pip_sys_test.dir/depend.make + +# Include the progress variables for this target. +include system_test/CMakeFiles/pip_sys_test.dir/progress.make + +# Include the compile flags for this target's objects. +include system_test/CMakeFiles/pip_sys_test.dir/flags.make + +system_test/CMakeFiles/pip_sys_test.dir/main.cpp.obj: system_test/CMakeFiles/pip_sys_test.dir/flags.make +system_test/CMakeFiles/pip_sys_test.dir/main.cpp.obj: system_test/CMakeFiles/pip_sys_test.dir/includes_CXX.rsp +system_test/CMakeFiles/pip_sys_test.dir/main.cpp.obj: system_test/main.cpp + $(CMAKE_COMMAND) -E cmake_progress_report C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles $(CMAKE_PROGRESS_1) + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object system_test/CMakeFiles/pip_sys_test.dir/main.cpp.obj" + cd /d C:\libs\oldpip\pip_0.4.0_r5\system_test && C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles\pip_sys_test.dir\main.cpp.obj -c C:\libs\oldpip\pip_0.4.0_r5\system_test\main.cpp + +system_test/CMakeFiles/pip_sys_test.dir/main.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/pip_sys_test.dir/main.cpp.i" + cd /d C:\libs\oldpip\pip_0.4.0_r5\system_test && C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -E C:\libs\oldpip\pip_0.4.0_r5\system_test\main.cpp > CMakeFiles\pip_sys_test.dir\main.cpp.i + +system_test/CMakeFiles/pip_sys_test.dir/main.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/pip_sys_test.dir/main.cpp.s" + cd /d C:\libs\oldpip\pip_0.4.0_r5\system_test && C:\mingw\x32\bin\g++.exe $(CXX_DEFINES) $(CXX_FLAGS) -S C:\libs\oldpip\pip_0.4.0_r5\system_test\main.cpp -o CMakeFiles\pip_sys_test.dir\main.cpp.s + +system_test/CMakeFiles/pip_sys_test.dir/main.cpp.obj.requires: +.PHONY : system_test/CMakeFiles/pip_sys_test.dir/main.cpp.obj.requires + +system_test/CMakeFiles/pip_sys_test.dir/main.cpp.obj.provides: system_test/CMakeFiles/pip_sys_test.dir/main.cpp.obj.requires + $(MAKE) -f system_test\CMakeFiles\pip_sys_test.dir\build.make system_test/CMakeFiles/pip_sys_test.dir/main.cpp.obj.provides.build +.PHONY : system_test/CMakeFiles/pip_sys_test.dir/main.cpp.obj.provides + +system_test/CMakeFiles/pip_sys_test.dir/main.cpp.obj.provides.build: system_test/CMakeFiles/pip_sys_test.dir/main.cpp.obj + +# Object files for target pip_sys_test +pip_sys_test_OBJECTS = \ +"CMakeFiles/pip_sys_test.dir/main.cpp.obj" + +# External object files for target pip_sys_test +pip_sys_test_EXTERNAL_OBJECTS = + +system_test/pip_sys_test.exe: system_test/CMakeFiles/pip_sys_test.dir/main.cpp.obj +system_test/pip_sys_test.exe: system_test/CMakeFiles/pip_sys_test.dir/build.make +system_test/pip_sys_test.exe: libpip.dll.a +system_test/pip_sys_test.exe: system_test/CMakeFiles/pip_sys_test.dir/objects1.rsp +system_test/pip_sys_test.exe: system_test/CMakeFiles/pip_sys_test.dir/link.txt + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --red --bold "Linking CXX executable pip_sys_test.exe" + cd /d C:\libs\oldpip\pip_0.4.0_r5\system_test && $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles\pip_sys_test.dir\link.txt --verbose=$(VERBOSE) + +# Rule to build all files generated by this target. +system_test/CMakeFiles/pip_sys_test.dir/build: system_test/pip_sys_test.exe +.PHONY : system_test/CMakeFiles/pip_sys_test.dir/build + +system_test/CMakeFiles/pip_sys_test.dir/requires: system_test/CMakeFiles/pip_sys_test.dir/main.cpp.obj.requires +.PHONY : system_test/CMakeFiles/pip_sys_test.dir/requires + +system_test/CMakeFiles/pip_sys_test.dir/clean: + cd /d C:\libs\oldpip\pip_0.4.0_r5\system_test && $(CMAKE_COMMAND) -P CMakeFiles\pip_sys_test.dir\cmake_clean.cmake +.PHONY : system_test/CMakeFiles/pip_sys_test.dir/clean + +system_test/CMakeFiles/pip_sys_test.dir/depend: + $(CMAKE_COMMAND) -E cmake_depends "MinGW Makefiles" C:\libs\oldpip\pip_0.4.0_r5 C:\libs\oldpip\pip_0.4.0_r5\system_test C:\libs\oldpip\pip_0.4.0_r5 C:\libs\oldpip\pip_0.4.0_r5\system_test C:\libs\oldpip\pip_0.4.0_r5\system_test\CMakeFiles\pip_sys_test.dir\DependInfo.cmake --color=$(COLOR) +.PHONY : system_test/CMakeFiles/pip_sys_test.dir/depend + diff --git a/_oldpip/pip_0.4.0_r5/system_test/CMakeFiles/pip_sys_test.dir/cmake_clean.cmake b/_oldpip/pip_0.4.0_r5/system_test/CMakeFiles/pip_sys_test.dir/cmake_clean.cmake new file mode 100644 index 0000000..08c3a93 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/system_test/CMakeFiles/pip_sys_test.dir/cmake_clean.cmake @@ -0,0 +1,12 @@ +FILE(REMOVE_RECURSE + "CMakeFiles/pip_sys_test.dir/main.cpp.obj" + "pip_sys_test.pdb" + "pip_sys_test.exe" + "pip_sys_test.exe.manifest" + "libpip_sys_test.dll.a" +) + +# Per-language clean rules from dependency scanning. +FOREACH(lang CXX) + INCLUDE(CMakeFiles/pip_sys_test.dir/cmake_clean_${lang}.cmake OPTIONAL) +ENDFOREACH(lang) diff --git a/_oldpip/pip_0.4.0_r5/system_test/CMakeFiles/pip_sys_test.dir/depend.internal b/_oldpip/pip_0.4.0_r5/system_test/CMakeFiles/pip_sys_test.dir/depend.internal new file mode 100644 index 0000000..11cb592 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/system_test/CMakeFiles/pip_sys_test.dir/depend.internal @@ -0,0 +1,50 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "MinGW Makefiles" Generator, CMake Version 2.8 + +system_test/CMakeFiles/pip_sys_test.dir/main.cpp.obj + C:/libs/oldpip/pip_0.4.0_r5/system_test/main.cpp + pibinarylog.h + pibitarray.h + pibytearray.h + pichar.h + picli.h + picodec.h + picollection.h + piconfig.h + piconsole.h + picontainers.h + picrc.h + pideque.h + pidiagnostics.h + piethernet.h + pievaluator.h + pifile.h + piincludes.h + piiodevice.h + pikbdlistener.h + pimap.h + pimath.h + pimonitor.h + pimultiprotocol.h + pimutex.h + piobject.h + pip.h + pip_export.h + pipacketextractor.h + pipeer.h + piprocess.h + piprotocol.h + piqueue.h + piserial.h + pisignals.h + pistack.h + pistatemachine.h + pistring.h + pisystemmonitor.h + pisystemtests.h + pithread.h + pitime.h + pitimer.h + piusb.h + pivariant.h + pivector.h diff --git a/_oldpip/pip_0.4.0_r5/system_test/CMakeFiles/pip_sys_test.dir/depend.make b/_oldpip/pip_0.4.0_r5/system_test/CMakeFiles/pip_sys_test.dir/depend.make new file mode 100644 index 0000000..a0cb466 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/system_test/CMakeFiles/pip_sys_test.dir/depend.make @@ -0,0 +1,50 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "MinGW Makefiles" Generator, CMake Version 2.8 + +system_test/CMakeFiles/pip_sys_test.dir/main.cpp.obj: system_test/main.cpp +system_test/CMakeFiles/pip_sys_test.dir/main.cpp.obj: pibinarylog.h +system_test/CMakeFiles/pip_sys_test.dir/main.cpp.obj: pibitarray.h +system_test/CMakeFiles/pip_sys_test.dir/main.cpp.obj: pibytearray.h +system_test/CMakeFiles/pip_sys_test.dir/main.cpp.obj: pichar.h +system_test/CMakeFiles/pip_sys_test.dir/main.cpp.obj: picli.h +system_test/CMakeFiles/pip_sys_test.dir/main.cpp.obj: picodec.h +system_test/CMakeFiles/pip_sys_test.dir/main.cpp.obj: picollection.h +system_test/CMakeFiles/pip_sys_test.dir/main.cpp.obj: piconfig.h +system_test/CMakeFiles/pip_sys_test.dir/main.cpp.obj: piconsole.h +system_test/CMakeFiles/pip_sys_test.dir/main.cpp.obj: picontainers.h +system_test/CMakeFiles/pip_sys_test.dir/main.cpp.obj: picrc.h +system_test/CMakeFiles/pip_sys_test.dir/main.cpp.obj: pideque.h +system_test/CMakeFiles/pip_sys_test.dir/main.cpp.obj: pidiagnostics.h +system_test/CMakeFiles/pip_sys_test.dir/main.cpp.obj: piethernet.h +system_test/CMakeFiles/pip_sys_test.dir/main.cpp.obj: pievaluator.h +system_test/CMakeFiles/pip_sys_test.dir/main.cpp.obj: pifile.h +system_test/CMakeFiles/pip_sys_test.dir/main.cpp.obj: piincludes.h +system_test/CMakeFiles/pip_sys_test.dir/main.cpp.obj: piiodevice.h +system_test/CMakeFiles/pip_sys_test.dir/main.cpp.obj: pikbdlistener.h +system_test/CMakeFiles/pip_sys_test.dir/main.cpp.obj: pimap.h +system_test/CMakeFiles/pip_sys_test.dir/main.cpp.obj: pimath.h +system_test/CMakeFiles/pip_sys_test.dir/main.cpp.obj: pimonitor.h +system_test/CMakeFiles/pip_sys_test.dir/main.cpp.obj: pimultiprotocol.h +system_test/CMakeFiles/pip_sys_test.dir/main.cpp.obj: pimutex.h +system_test/CMakeFiles/pip_sys_test.dir/main.cpp.obj: piobject.h +system_test/CMakeFiles/pip_sys_test.dir/main.cpp.obj: pip.h +system_test/CMakeFiles/pip_sys_test.dir/main.cpp.obj: pip_export.h +system_test/CMakeFiles/pip_sys_test.dir/main.cpp.obj: pipacketextractor.h +system_test/CMakeFiles/pip_sys_test.dir/main.cpp.obj: pipeer.h +system_test/CMakeFiles/pip_sys_test.dir/main.cpp.obj: piprocess.h +system_test/CMakeFiles/pip_sys_test.dir/main.cpp.obj: piprotocol.h +system_test/CMakeFiles/pip_sys_test.dir/main.cpp.obj: piqueue.h +system_test/CMakeFiles/pip_sys_test.dir/main.cpp.obj: piserial.h +system_test/CMakeFiles/pip_sys_test.dir/main.cpp.obj: pisignals.h +system_test/CMakeFiles/pip_sys_test.dir/main.cpp.obj: pistack.h +system_test/CMakeFiles/pip_sys_test.dir/main.cpp.obj: pistatemachine.h +system_test/CMakeFiles/pip_sys_test.dir/main.cpp.obj: pistring.h +system_test/CMakeFiles/pip_sys_test.dir/main.cpp.obj: pisystemmonitor.h +system_test/CMakeFiles/pip_sys_test.dir/main.cpp.obj: pisystemtests.h +system_test/CMakeFiles/pip_sys_test.dir/main.cpp.obj: pithread.h +system_test/CMakeFiles/pip_sys_test.dir/main.cpp.obj: pitime.h +system_test/CMakeFiles/pip_sys_test.dir/main.cpp.obj: pitimer.h +system_test/CMakeFiles/pip_sys_test.dir/main.cpp.obj: piusb.h +system_test/CMakeFiles/pip_sys_test.dir/main.cpp.obj: pivariant.h +system_test/CMakeFiles/pip_sys_test.dir/main.cpp.obj: pivector.h + diff --git a/_oldpip/pip_0.4.0_r5/system_test/CMakeFiles/pip_sys_test.dir/flags.make b/_oldpip/pip_0.4.0_r5/system_test/CMakeFiles/pip_sys_test.dir/flags.make new file mode 100644 index 0000000..180f9c6 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/system_test/CMakeFiles/pip_sys_test.dir/flags.make @@ -0,0 +1,8 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "MinGW Makefiles" Generator, CMake Version 2.8 + +# compile CXX with C:/mingw/x32/bin/g++.exe +CXX_FLAGS = -O3 -DNDEBUG @CMakeFiles/pip_sys_test.dir/includes_CXX.rsp -O2 -Wall -O2 + +CXX_DEFINES = -DPIP_MATH_J0 -DPIP_MATH_J1 -DPIP_MATH_JN -DPIP_MATH_Y0 -DPIP_MATH_Y1 -DPIP_MATH_YN + diff --git a/_oldpip/pip_0.4.0_r5/system_test/CMakeFiles/pip_sys_test.dir/includes_CXX.rsp b/_oldpip/pip_0.4.0_r5/system_test/CMakeFiles/pip_sys_test.dir/includes_CXX.rsp new file mode 100644 index 0000000..c161a24 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/system_test/CMakeFiles/pip_sys_test.dir/includes_CXX.rsp @@ -0,0 +1 @@ +-IC:/libs/oldpip/pip_0.4.0_r5 -IC:/libs/oldpip/pip_0.4.0_r5/. -IC:/Qt/4.8.6/include/ActiveQt -IC:/Qt/4.8.6/include/QtDesigner -IC:/Qt/4.8.6/include/QtDeclarative -IC:/Qt/4.8.6/include/QtScriptTools -IC:/Qt/4.8.6/include/QtDBus -IC:/Qt/4.8.6/include/QtXml -IC:/Qt/4.8.6/include/QtSql -IC:/Qt/4.8.6/include/QtOpenGL -IC:/Qt/4.8.6/include/QtMultimedia -IC:/Qt/4.8.6/include/QtNetwork -IC:/Qt/4.8.6/include/phonon -IC:/Qt/4.8.6/include/QtXmlPatterns -IC:/Qt/4.8.6/include/QtWebKit -IC:/Qt/4.8.6/include/QtHelp -IC:/Qt/4.8.6/include/QtUiTools -IC:/Qt/4.8.6/include/QtTest -IC:/Qt/4.8.6/include/QtScript -IC:/Qt/4.8.6/include/QtSvg -IC:/Qt/4.8.6/include/Qt3Support -IC:/Qt/4.8.6/include/QtGui -IC:/Qt/4.8.6/include/QtCore -IC:/Qt/4.8.6/mkspecs/default -IC:/Qt/4.8.6/include -IC:/libs/oldpip/pip_0.4.0_r5/system_test -IC:/libs/oldpip/pip_0.4.0_r5/system_test/. -IC:/libs/oldpip/pip_0.4.0_r5/system_test/.. diff --git a/_oldpip/pip_0.4.0_r5/system_test/CMakeFiles/pip_sys_test.dir/link.txt b/_oldpip/pip_0.4.0_r5/system_test/CMakeFiles/pip_sys_test.dir/link.txt new file mode 100644 index 0000000..75ea76b --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/system_test/CMakeFiles/pip_sys_test.dir/link.txt @@ -0,0 +1,3 @@ +"C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" -E remove -f CMakeFiles\pip_sys_test.dir/objects.a +C:\mingw\x32\bin\ar.exe cr CMakeFiles\pip_sys_test.dir/objects.a @CMakeFiles\pip_sys_test.dir\objects1.rsp +C:\mingw\x32\bin\g++.exe -O3 -DNDEBUG -Wl,--whole-archive CMakeFiles\pip_sys_test.dir/objects.a -Wl,--no-whole-archive -o pip_sys_test.exe -Wl,--out-implib,libpip_sys_test.dll.a -Wl,--major-image-version,0,--minor-image-version,0 ..\libpip.dll.a -lws2_32 -lIphlpapi -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 diff --git a/_oldpip/pip_0.4.0_r5/system_test/CMakeFiles/pip_sys_test.dir/main.cpp.obj b/_oldpip/pip_0.4.0_r5/system_test/CMakeFiles/pip_sys_test.dir/main.cpp.obj new file mode 100644 index 0000000000000000000000000000000000000000..54c1500d32b1072333ce3217da31cc749671bd08 GIT binary patch literal 2407 zcma)7O>7%Q6rPP;6Hprka3l~ZEMTBW&BjjLkRl@7q$agUAv8uo;V@aR*U5&B*V;gWQQT_L4wxMf1%SU*N!W(_>v>?7djvchEy+le1b`_w|7KUz=m;Ev@8v z(SVJp6XFe)+v?9AGH@TIvh=LxwoaU)m``baQK5Nr{h8BIiZP10N@|CFJVT?R55srd z$O>sI*i~xsG5`rmqmTZJQaeA=5FQM+&3yb4OgN1F&xt&GDI9+PQ0lx#!)DYN>EmZz;BR6 zAuxzz?0wQ%(jbcfTO>W#!hA>`vJPTCBTsE%E|b^Y!hB60B*=<>pV2@}!EFszg(yh$ z+l-OJI*oppMP+4GOTZ^|err;K~%gvC&dBv1_WO1SgqD8*34-p+x;$*S z@!rRj*INfe54Qw@f3BEPhJ`DIPC0U7&GY(AjyLz}uQsMPvY=o;hb7aj^G+Lcsg1eS z!f>7bP%S^44Rtu5sV*-xrw8*hWr%at>Q&qNz_eFG*YkDPuh&>`5UI7bHKv*Kyh8sG zChAQ26T_Taj#Z@@I3J&Qd-Ti%=U%R9W{TLY&!pDc_ywoTt>%c&Nq2}`%FHPapD=*TSdyok&UMB`rJ zbFNdbdBNC}KWsT3FX^6{MTN7O{1TF;eA_Eb`PBQo?sDJNE#E5``TPaq1}WMyxa0Y* osV^3cBF|5q;*)P0L1NadmhFP^V97;ZOjG(07c0GgHDg%Kf3vlBAOHXW literal 0 HcmV?d00001 diff --git a/_oldpip/pip_0.4.0_r5/system_test/CMakeFiles/pip_sys_test.dir/objects1.rsp b/_oldpip/pip_0.4.0_r5/system_test/CMakeFiles/pip_sys_test.dir/objects1.rsp new file mode 100644 index 0000000..6da621d --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/system_test/CMakeFiles/pip_sys_test.dir/objects1.rsp @@ -0,0 +1 @@ +CMakeFiles/pip_sys_test.dir/main.cpp.obj diff --git a/_oldpip/pip_0.4.0_r5/system_test/CMakeFiles/pip_sys_test.dir/progress.make b/_oldpip/pip_0.4.0_r5/system_test/CMakeFiles/pip_sys_test.dir/progress.make new file mode 100644 index 0000000..6a5935d --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/system_test/CMakeFiles/pip_sys_test.dir/progress.make @@ -0,0 +1,2 @@ +CMAKE_PROGRESS_1 = 42 + diff --git a/_oldpip/pip_0.4.0_r5/system_test/CMakeFiles/progress.marks b/_oldpip/pip_0.4.0_r5/system_test/CMakeFiles/progress.marks new file mode 100644 index 0000000..2616922 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/system_test/CMakeFiles/progress.marks @@ -0,0 +1 @@ +40 diff --git a/_oldpip/pip_0.4.0_r5/system_test/CMakeLists.txt b/_oldpip/pip_0.4.0_r5/system_test/CMakeLists.txt new file mode 100644 index 0000000..8dd7e8a --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/system_test/CMakeLists.txt @@ -0,0 +1,6 @@ +cmake_minimum_required(VERSION 2.6) +include_directories(${CMAKE_CURRENT_SOURCE_DIR} . ../) +file(GLOB CPPS "*.cpp") +add_definitions(-Wall -O2) +add_executable(pip_sys_test "main.cpp") +target_link_libraries(pip_sys_test pip) diff --git a/_oldpip/pip_0.4.0_r5/system_test/Makefile b/_oldpip/pip_0.4.0_r5/system_test/Makefile new file mode 100644 index 0000000..bc835c3 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/system_test/Makefile @@ -0,0 +1,211 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "MinGW Makefiles" Generator, CMake Version 2.8 + +# Default target executed when no arguments are given to make. +default_target: all +.PHONY : default_target + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Remove some rules from gmake that .SUFFIXES does not remove. +SUFFIXES = + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +SHELL = cmd.exe + +# The CMake executable. +CMAKE_COMMAND = "C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" + +# The command to remove a file. +RM = "C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" -E remove -f + +# Escaping for special characters. +EQUALS = = + +# The program to use to edit the cache. +CMAKE_EDIT_COMMAND = "C:\Program Files (x86)\CMake 2.8\bin\cmake-gui.exe" + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = C:\libs\oldpip\pip_0.4.0_r5 + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = C:\libs\oldpip\pip_0.4.0_r5 + +#============================================================================= +# Targets provided globally by CMake. + +# Special rule for the target edit_cache +edit_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake cache editor..." + "C:\Program Files (x86)\CMake 2.8\bin\cmake-gui.exe" -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : edit_cache + +# Special rule for the target edit_cache +edit_cache/fast: edit_cache +.PHONY : edit_cache/fast + +# Special rule for the target install +install: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..." + "C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" -P cmake_install.cmake +.PHONY : install + +# Special rule for the target install +install/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..." + "C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" -P cmake_install.cmake +.PHONY : install/fast + +# Special rule for the target install/local +install/local: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing only the local directory..." + "C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake +.PHONY : install/local + +# Special rule for the target install/local +install/local/fast: install/local +.PHONY : install/local/fast + +# Special rule for the target install/strip +install/strip: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing the project stripped..." + "C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake +.PHONY : install/strip + +# Special rule for the target install/strip +install/strip/fast: install/strip +.PHONY : install/strip/fast + +# Special rule for the target list_install_components +list_install_components: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Available install components are: \"Unspecified\"" +.PHONY : list_install_components + +# Special rule for the target list_install_components +list_install_components/fast: list_install_components +.PHONY : list_install_components/fast + +# Special rule for the target rebuild_cache +rebuild_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake to regenerate build system..." + "C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : rebuild_cache + +# Special rule for the target rebuild_cache +rebuild_cache/fast: rebuild_cache +.PHONY : rebuild_cache/fast + +# The main all target +all: cmake_check_build_system + cd /d C:\libs\oldpip\pip_0.4.0_r5 && $(CMAKE_COMMAND) -E cmake_progress_start C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles C:\libs\oldpip\pip_0.4.0_r5\system_test\CMakeFiles\progress.marks + cd /d C:\libs\oldpip\pip_0.4.0_r5 && $(MAKE) -f CMakeFiles\Makefile2 system_test/all + $(CMAKE_COMMAND) -E cmake_progress_start C:\libs\oldpip\pip_0.4.0_r5\CMakeFiles 0 +.PHONY : all + +# The main clean target +clean: + cd /d C:\libs\oldpip\pip_0.4.0_r5 && $(MAKE) -f CMakeFiles\Makefile2 system_test/clean +.PHONY : clean + +# The main clean target +clean/fast: clean +.PHONY : clean/fast + +# Prepare targets for installation. +preinstall: all + cd /d C:\libs\oldpip\pip_0.4.0_r5 && $(MAKE) -f CMakeFiles\Makefile2 system_test/preinstall +.PHONY : preinstall + +# Prepare targets for installation. +preinstall/fast: + cd /d C:\libs\oldpip\pip_0.4.0_r5 && $(MAKE) -f CMakeFiles\Makefile2 system_test/preinstall +.PHONY : preinstall/fast + +# clear depends +depend: + cd /d C:\libs\oldpip\pip_0.4.0_r5 && $(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles\Makefile.cmake 1 +.PHONY : depend + +# Convenience name for target. +system_test/CMakeFiles/pip_sys_test.dir/rule: + cd /d C:\libs\oldpip\pip_0.4.0_r5 && $(MAKE) -f CMakeFiles\Makefile2 system_test/CMakeFiles/pip_sys_test.dir/rule +.PHONY : system_test/CMakeFiles/pip_sys_test.dir/rule + +# Convenience name for target. +pip_sys_test: system_test/CMakeFiles/pip_sys_test.dir/rule +.PHONY : pip_sys_test + +# fast build rule for target. +pip_sys_test/fast: + cd /d C:\libs\oldpip\pip_0.4.0_r5 && $(MAKE) -f system_test\CMakeFiles\pip_sys_test.dir\build.make system_test/CMakeFiles/pip_sys_test.dir/build +.PHONY : pip_sys_test/fast + +main.obj: main.cpp.obj +.PHONY : main.obj + +# target to build an object file +main.cpp.obj: + cd /d C:\libs\oldpip\pip_0.4.0_r5 && $(MAKE) -f system_test\CMakeFiles\pip_sys_test.dir\build.make system_test/CMakeFiles/pip_sys_test.dir/main.cpp.obj +.PHONY : main.cpp.obj + +main.i: main.cpp.i +.PHONY : main.i + +# target to preprocess a source file +main.cpp.i: + cd /d C:\libs\oldpip\pip_0.4.0_r5 && $(MAKE) -f system_test\CMakeFiles\pip_sys_test.dir\build.make system_test/CMakeFiles/pip_sys_test.dir/main.cpp.i +.PHONY : main.cpp.i + +main.s: main.cpp.s +.PHONY : main.s + +# target to generate assembly for a file +main.cpp.s: + cd /d C:\libs\oldpip\pip_0.4.0_r5 && $(MAKE) -f system_test\CMakeFiles\pip_sys_test.dir\build.make system_test/CMakeFiles/pip_sys_test.dir/main.cpp.s +.PHONY : main.cpp.s + +# Help Target +help: + @echo The following are some of the valid targets for this Makefile: + @echo ... all (the default if no target is provided) + @echo ... clean + @echo ... depend + @echo ... edit_cache + @echo ... install + @echo ... install/local + @echo ... install/strip + @echo ... list_install_components + @echo ... pip_sys_test + @echo ... rebuild_cache + @echo ... main.obj + @echo ... main.i + @echo ... main.s +.PHONY : help + + + +#============================================================================= +# Special targets to cleanup operation of make. + +# Special rule to run CMake to check the build system integrity. +# No rule that depends on this can have commands that come from listfiles +# because they might be regenerated. +cmake_check_build_system: + cd /d C:\libs\oldpip\pip_0.4.0_r5 && $(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles\Makefile.cmake 0 +.PHONY : cmake_check_build_system + diff --git a/_oldpip/pip_0.4.0_r5/system_test/cmake_install.cmake b/_oldpip/pip_0.4.0_r5/system_test/cmake_install.cmake new file mode 100644 index 0000000..ecb1791 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/system_test/cmake_install.cmake @@ -0,0 +1,29 @@ +# Install script for directory: C:/libs/oldpip/pip_0.4.0_r5/system_test + +# Set the install prefix +IF(NOT DEFINED CMAKE_INSTALL_PREFIX) + SET(CMAKE_INSTALL_PREFIX "C:/Program Files (x86)/pip") +ENDIF(NOT DEFINED CMAKE_INSTALL_PREFIX) +STRING(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") + +# Set the install configuration name. +IF(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) + IF(BUILD_TYPE) + STRING(REGEX REPLACE "^[^A-Za-z0-9_]+" "" + CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") + ELSE(BUILD_TYPE) + SET(CMAKE_INSTALL_CONFIG_NAME "Release") + ENDIF(BUILD_TYPE) + MESSAGE(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") +ENDIF(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) + +# Set the component getting installed. +IF(NOT CMAKE_INSTALL_COMPONENT) + IF(COMPONENT) + MESSAGE(STATUS "Install component: \"${COMPONENT}\"") + SET(CMAKE_INSTALL_COMPONENT "${COMPONENT}") + ELSE(COMPONENT) + SET(CMAKE_INSTALL_COMPONENT) + ENDIF(COMPONENT) +ENDIF(NOT CMAKE_INSTALL_COMPONENT) + diff --git a/_oldpip/pip_0.4.0_r5/system_test/main.cpp b/_oldpip/pip_0.4.0_r5/system_test/main.cpp new file mode 100644 index 0000000..9022d54 --- /dev/null +++ b/_oldpip/pip_0.4.0_r5/system_test/main.cpp @@ -0,0 +1,106 @@ +/* + PIP - Platform Independent Primitives + System tests program + Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com + + 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 3 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, see . +*/ + +#include "pip.h" +#include "pisystemtests.h" + + +int main(int argc, char * argv[]) { +#ifdef WINDOWS + cout << "This program is useless for Windows" << endl; + return 0; +#else + if (getuid() != 0) { + cout << "You should run this program as root!" << endl; + return 0; + } + PIConfig conf( +#ifndef WINDOWS + "/etc/pip.conf" +#else + "pip.conf" +#endif + ); + PITimer timer, tm; + timespec ts; + long stc = 0; + double st; + llong sts = 0; + clock_getres(CLOCK_REALTIME, &ts); + stc = long(ts.tv_sec) * 1000000000l + long(ts.tv_nsec); + conf.setValue("time_resolution_ns", stc); + cout << "Timer resolution is " << stc << " ns" << endl; + + cout << "\"PITimer.elapsed_*\" test ... " << flush; + stc = 0; + ts.tv_sec = 0; + ts.tv_nsec = 1000; + PIVector times; + times.resize(8192); + tm.reset(); + PISystemTests::time_elapsed_ns = 0; + while (tm.elapsed_s() < 3.) { + for (int i = 0; i < times.size_s(); ++i) { + timer.reset(); + times[i] = timer.elapsed_m(); + times[i] = timer.elapsed_s(); + times[i] = timer.elapsed_u(); + } + st = 0; + for (int i = 0; i < times.size_s(); ++i) + st += times[i]; + //cout << times[0] << endl; + //cout << st / times.size_s() / 3. * 1000. << endl; + sts += piRoundd(st / times.size_s() / 3. * 1000.); + //cout << sts << endl; + stc++; + } + sts /= stc; + conf.setValue("time_elapsed_ns", long(sts)); + cout << "ok, cost " << sts << " ns, average in " << stc << " series (" << (stc * 3 * times.size_s()) << " executes)" << endl; + + cout << "\"usleep\" offset test ... " << flush; + PISystemTests::time_elapsed_ns = sts; + tm.reset(); + stc = 0; + sts = 0; + times.resize(128); + while (tm.elapsed_s() < 3.) { + for (int i = 0; i < times.size_s(); ++i) { + timer.reset(); + usleep(1000); + times[i] = timer.elapsed_u(); + } + st = 0; + for (int i = 0; i < times.size_s(); ++i) + st += times[i] - 1000; + //cout << times[0] << endl; + //cout << st / times.size_s() / 3. * 1000. << endl; + sts += piRoundd(st / times.size_s()); + //cout << sts << endl; + stc++; + } + sts /= stc; + conf.setValue("usleep_offset_us", long(sts)); + cout << "ok, " << sts << " us, average in " << stc << " series (" << (stc * times.size_s()) << " executes)" << endl; + + //WAIT_FOR_EXIT + return 0; +#endif +}; diff --git a/_oldpip/pip_0.4.0_r5/system_test/pip_sys_test.exe b/_oldpip/pip_0.4.0_r5/system_test/pip_sys_test.exe new file mode 100644 index 0000000000000000000000000000000000000000..36f7bf05935f877f83fe45978946939d9b9d3721 GIT binary patch literal 50554 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 CG02ku literal 0 HcmV?d00001 diff --git a/clean.bat b/clean.bat new file mode 100644 index 0000000..217408d --- /dev/null +++ b/clean.bat @@ -0,0 +1,5 @@ +#make clean +del /q /f /s CMakeFiles +rmdir /q /s CMakeFiles +del /q /f CMakeCache.txt Makefile cmake_install.cmake install_manifest.txt *.user* *~ *cxx moc_* ui_* qrc_* *.o *.exe *.a *.dll *.lib core +for %%i in (pip pip_0.4.0_r5 mbricks piqt piqt_tools qad_widgets qad_utils qad_graphic qad_sql_table qad_application touch_widgets qglview kx_tools qad_blockview) do cd %%i && call clean.bat && cd .. diff --git a/clean_all b/clean_all new file mode 100755 index 0000000..ec0398c --- /dev/null +++ b/clean_all @@ -0,0 +1,16 @@ +#! /bin/bash +make clean +for i in $( ls -1 ); do + if [ "`ls -1d --file-type $i | grep -o /`" = "/" ]; then + echo -e "\e[32mcleaning $i ...\e[0m" + cd $i + rm -rvf ./CMakeFiles + rm -vf ./CMakeCache.txt ./Makefile ./cmake_install.cmake ./install_manifest.txt ./*~ ./*cxx ./moc_* ./ui_* ./qrc_* ./*.o ./core + sh ./clean + cd ../ + echo -e "\e[32m$i cleaned\e[0m" + fi +done +rm -rvf ./CMakeFiles +rm -vf ./CMakeCache.txt ./Makefile ./cmake_install.cmake ./install_manifest.txt ./*~ ./*cxx ./moc_* ./ui_* ./qrc_* ./*.o ./core +echo -e "\e[1;32mclean done\e[0m" diff --git a/kx_tools/.kdev4/_custom.kdev4 b/kx_tools/.kdev4/_custom.kdev4 new file mode 100644 index 0000000..4aecdb6 --- /dev/null +++ b/kx_tools/.kdev4/_custom.kdev4 @@ -0,0 +1,25 @@ +[Containments][1] +ActionPluginsSource=Global +activity=kx_tools +activityId= +desktop=-1 +formfactor=0 +geometry=0,0,1508,862 +immutability=1 +lastDesktop=-1 +lastScreen=0 +location=0 +plugin=newspaper +screen=0 +wallpaperplugin=color +wallpaperpluginmode= +zvalue=0 + +[Containments][1][Wallpaper][color] +backgroundMode=0 +color1=255,255,255 +color2=0,0,0 + +[Project] +Manager=KDevCMakeManager +Name=kx_tools diff --git a/kx_tools/.kdev4/kx_tools.kdev4 b/kx_tools/.kdev4/kx_tools.kdev4 new file mode 100644 index 0000000..fbfdebf --- /dev/null +++ b/kx_tools/.kdev4/kx_tools.kdev4 @@ -0,0 +1,175 @@ +[Buildset] +BuildItems=@Variant(\x00\x00\x00\t\x00\x00\x00\x00\x01\x00\x00\x00\x0b\x00\x00\x00\x00\x01\x00\x00\x00\x10\x00k\x00x\x00_\x00t\x00o\x00o\x00l\x00s) + +[CMake] +Build Directory Count=1 +Current Build Directory Index=0 +ProjectRootRelative=./ + +[CMake][CMake Build Directory 0] +Build Directory Path=file:///mnt/data/orders/libs/kx_tools/ +Build Type= +CMake Binary=file:///usr/bin/cmake +Environment Profile= +Extra Arguments= +Install Directory=file:///usr/local + +[Defines And Includes][Compiler] +Name=GCC +Path=gcc +Type=GCC + +[Filters] +size=23 + +[Filters][0] +inclusive=0 +pattern=.* +targets=3 + +[Filters][1] +inclusive=0 +pattern=.git +targets=2 + +[Filters][10] +inclusive=0 +pattern=*.a +targets=1 + +[Filters][11] +inclusive=0 +pattern=*.so +targets=1 + +[Filters][12] +inclusive=0 +pattern=*.so.* +targets=1 + +[Filters][13] +inclusive=0 +pattern=moc_* +targets=1 + +[Filters][14] +inclusive=0 +pattern=*.moc +targets=1 + +[Filters][15] +inclusive=0 +pattern=ui_* +targets=1 + +[Filters][16] +inclusive=0 +pattern=qrc_* +targets=1 + +[Filters][17] +inclusive=0 +pattern=*~ +targets=1 + +[Filters][18] +inclusive=0 +pattern=.*.kate-swp +targets=1 + +[Filters][19] +inclusive=0 +pattern=.*.swp +targets=1 + +[Filters][2] +inclusive=0 +pattern=CVS +targets=2 + +[Filters][20] +inclusive=0 +pattern=*.pyc +targets=1 + +[Filters][21] +inclusive=0 +pattern=*.pyo +targets=1 + +[Filters][22] +inclusive=0 +pattern=__pycache__ +targets=1 + +[Filters][3] +inclusive=0 +pattern=.svn +targets=2 + +[Filters][4] +inclusive=0 +pattern=_svn +targets=2 + +[Filters][5] +inclusive=0 +pattern=SCCS +targets=2 + +[Filters][6] +inclusive=0 +pattern=_darcs +targets=2 + +[Filters][7] +inclusive=0 +pattern=.hg +targets=2 + +[Filters][8] +inclusive=0 +pattern=.bzr +targets=2 + +[Filters][9] +inclusive=0 +pattern=*.o +targets=1 + +[Launch] +Launch Configurations=Launch Configuration 0,Launch Configuration 1 + +[Launch][Launch Configuration 0] +Configured Launch Modes=execute +Configured Launchers=nativeAppLauncher +Name=kx_pult +Type=Native Application + +[Launch][Launch Configuration 0][Data] +Arguments= +Dependencies=@Variant(\x00\x00\x00\t\x00\x00\x00\x00\x01\x00\x00\x00\x0b\x00\x00\x00\x00\x02\x00\x00\x00\x10\x00k\x00x\x00_\x00t\x00o\x00o\x00l\x00s\x00\x00\x00\x0e\x00k\x00x\x00_\x00p\x00u\x00l\x00t) +Dependency Action=Build +EnvironmentGroup= +Executable=file:///mnt/data/orders/libs/kx_tools/ +External Terminal=konsole --noclose --workdir %workdir -e %exe +Project Target=kx_tools,kx_pult +Use External Terminal=false +Working Directory= +isExecutable=false + +[Launch][Launch Configuration 1] +Configured Launch Modes=execute +Configured Launchers=scriptAppLauncher +Name=clean +Type=Script Application + +[Launch][Launch Configuration 1][Data] +Configured from ProjectItem=kx_tools,clean +Executable=file:///mnt/data/orders/libs/kx_tools/clean +Interpreter=bash +Output Filtering Mode=2 +Run current file=false + +[MakeBuilder] +Number Of Jobs=8 diff --git a/kx_tools/CMakeLists.txt b/kx_tools/CMakeLists.txt new file mode 100644 index 0000000..b46b03c --- /dev/null +++ b/kx_tools/CMakeLists.txt @@ -0,0 +1,59 @@ +project(kx_tools) +cmake_minimum_required(VERSION 2.6) +if (NOT LIBPROJECT) + find_package(PIP REQUIRED) +endif () +include_directories(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR} ${PIP_INCLUDES}) + +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2 -Wall") +#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g3") +set(CMAKE_C_FLAGS "${CMAKE_CXX_FLAGS}") + +set(CPPS_UTILS "kx_coeffs.cpp") +set(HDRS_UTILS "kx_coeffs.h" "kx_protocol_x.h") +if (DEFINED ENV{QNX_HOST}) + add_library(kx_utils STATIC ${CPPS_UTILS}) +else () + add_library(kx_utils SHARED ${CPPS_UTILS}) +endif () +target_link_libraries(kx_utils ${PIP_LIBRARY}) + +if (NOT DEFINED ENV{QNX_HOST}) + find_package(Qt4 REQUIRED) + include_directories(${QT_INCLUDES}) + set(CPPS "kx_pult.cpp" "kx_pult.h" "kx_pult.ui" "main_kx_pult.cpp") + set(MOCS "kx_pult.h") + file(GLOB UIS "*.ui") + file(GLOB RES "*.qrc") + qt4_wrap_cpp(CMOCS ${MOCS} OPTIONS -nw) + qt4_wrap_ui(CUIS ${UIS}) + qt4_add_resources(RESS ${RES}) + add_executable(kx_pult ${CPPS} ${CMOCS} ${CUIS} ${RESS}) + set(LIBS ${QT_QTCORE_LIBRARY} ${QT_QTGUI_LIBRARY} ${QT_QTOPENGL_LIBRARY} ${PIP_LIBRARY} qad_graphic qad_utils qad_widgets kx_utils) + if (${WIN32}) + list(APPEND LIBS opengl32 glu32) + else (${WIN32}) + list(APPEND LIBS GL GLU) + endif (${WIN32}) + target_link_libraries(kx_pult ${LIBS}) +endif () + +if (DEFINED LIB) + set(LIB 1) + if (${WIN32}) + find_package(MinGW REQUIRED) + set(CMAKE_INSTALL_PREFIX ${MINGW_DIR}) + install(FILES ${HDRS_UTILS} DESTINATION ${MINGW_INCLUDE}) + install(TARGETS kx_utils DESTINATION ${MINGW_LIB}) + else () + set(CMAKE_INSTALL_PREFIX /usr) + install(FILES ${HDRS_UTILS} DESTINATION ${CMAKE_INSTALL_PREFIX}/include) + install(TARGETS kx_utils DESTINATION ${CMAKE_INSTALL_PREFIX}/lib) + endif () +else () + install(TARGETS kx_utils DESTINATION bin) +endif () + +if (NOT DEFINED ENV{QNX_HOST}) + install(TARGETS kx_pult DESTINATION ${CMAKE_INSTALL_PREFIX}/bin) +endif () diff --git a/kx_tools/LEDOS_devices.dat b/kx_tools/LEDOS_devices.dat new file mode 100644 index 0000000..e69de29 diff --git a/kx_tools/clean b/kx_tools/clean new file mode 100644 index 0000000..e1d5feb --- /dev/null +++ b/kx_tools/clean @@ -0,0 +1,4 @@ +#! /bin/bash +VERBOSE=1 make clean +rm -rvf CMakeFiles +rm -vf CMakeCache.txt Makefile cmake_install.cmake install_manifest.txt *.user* *~ *cxx moc_* ui_* qrc_* *.o diff --git a/kx_tools/clean.bat b/kx_tools/clean.bat new file mode 100644 index 0000000..3a657d9 --- /dev/null +++ b/kx_tools/clean.bat @@ -0,0 +1,4 @@ +#make clean +del /q /f /s CMakeFiles +rmdir /q /s CMakeFiles +del /q /f CMakeCache.txt Makefile cmake_install.cmake install_manifest.txt *.user* *~ *cxx moc_* ui_* qrc_* *.o *.exe *.a *.dll *.lib core *.qrc.depends diff --git a/kx_tools/gpio.conf b/kx_tools/gpio.conf new file mode 100644 index 0000000..e69de29 diff --git a/kx_tools/icons/accessories-calculator.png b/kx_tools/icons/accessories-calculator.png new file mode 100644 index 0000000000000000000000000000000000000000..1b1dd1e44dbf286667d71b20d0eb1a42b29a23ed GIT binary patch literal 1525 zcmYk6c~DbV7{yaE%2KRAt*F>)X?5I+3rrA@fEt7#U?4#VW#0r8AtnkVA_WY%v5G(@ zVG#%fOaj>m1TicjVF`pK?8q)_!ai!%La*)A>6v%mz4v?XkMExId+!m-!Fq?rJ`D&2 zvIA*@a02teFGCFq?ueqtVlYAR7mye=HMQZ1E8}3R9&UrhgX*0xF^BD|Ad3ia9!vV$8(o#B|{^G@pqM{-ymHPbo^Q^3_?Cfk3i9{xo zDHKX>Zf;sy+S8{`{rvo5Vq&_xyAu);Qc_Zql9G-bIdb~+=`&}}7#SJCU@&828X6i#xQ@f&ZsBowJf1)x+y=Ufi;O1RyLT@dC^j?M#OAJ_{FXVexlnM`1NMMVXR#bN^q zOW5_r?1mB$1gDY46_s*DWjvrpI!{yzV&aRKd{KE7kce3Y7ER!)s1nnwfy5QnVwON4 z0Lj)!xUYbkxv!cl0Ry!yd=P6LkhHqKz8-|$*x2|l6@U{!1z-kH0pI~F0YU&O|KbFa z?dj=}%jE#SzP`Tx{{Df1fx*GSp`oGS;o*^ykvDJNjE;_ujg5_uk55cYOioTtO-)Tt zPrrTpc4lT~c6N4dZf<^leqmu@adAi%?mDSbNwY9bN_4SR74W-8^ zUw|^4;N*aYs6f>;H23J~8yLb&&CaD2l+Xd2z#=xA!{Ksyynk8+2uuHK7W6CY?C$Md z`TTkF%6;8*@EM&zBF5(xI>F(P2ih z--}m+8hSiTh(6E0+ooz3#Z-1>2om{hjXkTH_0`W}#3%|nypRz-<#yb?nzSpobdeEG z!XIXwVsX4Bs1ut0kOL=Gl6EXs+_5Xy+b^K2*pp{^KH=6|%q_|~gR(IgIe)-crqXRq#Khf#;N-DQsWz-g@9p$5eA=I5N;A^qe@%0&ZJ6XD59E;MT5NA350 zY1`D=S_K-~$BfkJM>l7st4kk84bPwl;JEWMnL%`gTlq8&M53J0jTyPB%um%D Q`|?*sS~(z?7rf*C28+}ws{jB1 literal 0 HcmV?d00001 diff --git a/kx_tools/icons/alpha.png b/kx_tools/icons/alpha.png new file mode 100644 index 0000000000000000000000000000000000000000..543566938cf5681db007530efc6b64c4ae67c096 GIT binary patch literal 158 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmPaBR`)C--V~^b^?X8JzX3_G|ngA*^(*DZ1&*w>+aAw xosBLAs~RN^{P_RBevQy<^L#m8)nAzm45u$~80FZyPX%gY@O1TaS?83{1ONw+E@}V( literal 0 HcmV?d00001 diff --git a/kx_tools/icons/application-exit.png b/kx_tools/icons/application-exit.png new file mode 100644 index 0000000000000000000000000000000000000000..ed5f8b2515e72608d2de9d45fb80ff481926066e GIT binary patch literal 1134 zcmV-!1d;oRP)(xC=n00006VoOIv0RI600RN!9r;`8x1N%ut zK~#9!wUS?G990y?zx!uqcQ)CO3Qb9*q)kbepkNXsL>fp%(uUwejD?y8p{)=!q9{uI zgNUFMD`JgLd5}{2)TjDbX(&h)iK5opBqla%!fsPV$ZoQ`*`3+BGvk@tY+BYL;-3Q_ zbGUQA-}(0J;J>IK2tw^3)mP3K37K=}c6+n4r`M;ZdQ>*cgNlLlcl&$x?F+W`_y4@Q zyxhNgd^{yVZgTFam#l;R5QCNuU}|&|FIk9vK+Wf7}ljFCx0I0B)M_DpyEQn_xvs z?A=Q~uEAY2z;11YDwXs*lI}}%*4fvmp>$V!D(@6yRp3GaWzxc#GqBTX3h8TOTW>GW z*$HJAwfv3_Bzk(_c^;HfD5X-`LtYKmiMLikQ{7@wgTlHxF@gKW#vq%T^x3ZNZrqey z_l*xe6hd{cR#q@KIf=k^p*fBN@6N=&lzJ8Aiq_UJcj|qp8>tYY(>JttV*3LfVM;B3 zC5?rTKY+@u!KI`;5`mk~p={fCBo-WNi;EDJ1tVr5Y8ikJBu~AAJo`vlHhy9SSvSW$s^eS~DeuZ?2*i_g*i_>&r1 zfnT}w8N{XYaEdNU#3_a$6~JQA>QxAU0mO$XJP1_;ck)<&>?w2%4eOMoE%>g1C*T}= z1y+rLs0l<2@=5YbUJd5dF-Qrmh-JbbeGLyEAA=A=e|mK{=TQIKd^kYE6N4iNM&E=< zYcmLJgkUoS<2E=DoVWxI6H^51#kUFi93)NQoD*~w{KF$KCq~eaStO95b^qa`sD1ea z4D!%?$Ui4$y5pqA*WX3=v1dY~2FFrALY+K}7`IVtI2yivHHm063ez;ve&lJ~`^HJ_ z6%qtS6?pTYxn++|sdfE(WZyaj=GtK4Y!XuroD(!CJ&Q;rqVF{|H{XJVoJwNa84C=q z!F~Wtj}9aM&1KkEzrylMgK$eW$_gktK%oRUWx%x^{5n1aH8YKkZ@&Vh`t_^VZ(hB5^BM?%e;s-|%XY&(r4?7hUI(^vEK0iGCUi(hX!_KS+oi5OKgxHz zA69$ZW4tf^{_XSTlU;gzZ-0M(W6qE6i5CrBi@r}hc+vLcMqW2}v!;*_J1>9yoA>)% zEL-F^Gqp+Y`a>j2;zWCbZq7Jc#>i0j?orm>xb3;Kd6?(_-hOOnYnf+*n10B@hF1?t zcP9DRyS^8B@iXV_(-#lCcLvRfabvg>!T3OmA@1LvR)M6$4Iy5}uIEkG&tX|ssg*nH z-fwTdW45vkkBbgR&E97hx^>OUGd@?Fiun{LCS0v4v#L+yT(;Itxi@}}u8)}J(puS& z>}#K5Ha<;F*gRA5%Bi{(8QC@0b)?N=uhd;Ax?3qG#KU}Q?_;Gm`bs_X4Xy>dH0}EI zWU0SL+$lSCA(L5`f_M07J_$3FV7s4iT6msd-ON+RnPd$L7kKX!4SHE|!KtX>Wa ztAg8eSIBGBy>{SfiF@S`^GlNR5aZKkIY+({yO$0;8T-Fw{HxR3zM&*1T%zW9UCM(0 z0dk6ue{Xx~5Ieyx;ro*L78-lGYMj0@oa3s0G~tWZ3s?Kbo7;EP*F^lzP`I})=IQ&^ z>x|v3`FWE#_x-&SMGn4WLZx M>FVdQ&MBb@0Gy;gf&c&j literal 0 HcmV?d00001 diff --git a/kx_tools/icons/configure.png b/kx_tools/icons/configure.png new file mode 100644 index 0000000000000000000000000000000000000000..5ce478b1adfefacc19d35d61e88a6c02ebe97454 GIT binary patch literal 717 zcmV;;0y6!HP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L02{9W02{9XUK)`c00007bV*G`2iXAx z12+)F5m%`I00K=(L_t(|+KrN3NRx3C#*f?DM%ip+yqb-i;h^3{#n{|Ose_>C#@NE# z7GW2nLRnqZRk>l z!E^IGoWld>6hQ%)Ob;ZrwY8lTqK?F3D=U#m#6CX$#%MA3twKK3jp{=S3-bwzqR{g1 zWn_6|PHT0V4^ml84HUxVD;?&gUq4YYxrThci3GMzVQs_8wx>aE7+A7!I1H&&3b@>z z8%!qi9rhAf2rzWW0VzB{sMRWCC={ZTLLqRr7qhDNRaNlz?0&5`==X~y;%hk@XtmlC z)z#Ho0)bh$({nG|qLN>Ej>p>@6bJ+}b93`2b1k5YM55;Lw?1I9w}RI{3DeUbfmgwU zk`fL#FdNvgKDCcf%4E{WJ?36(INk6~Szl-8a=AAFK#9fNG~C_Y#rJsJGrheQ zBv;6hcfyN?hOCn~Qef@KUgduny7b2#PFv(s$3;Yx5y)(Lh@2zNPdMU39%!A08&{uL z2UAU&vxvjtpqADa^wRZWsl2>Q3i-Hgymh^|--2{HEh0%0sm`d7%`u#mNW_}#x8;FB z5JX#iH3q4425MvyP%7)Gf&RxmQ&aDUagOpXV6s?qkSO9GJthSE-4*}<0=h{= zK~#9!WzSn^)dc{@@z4K%&e_h+uIFq=%jRlhi`pDHEu;s75`r%D5=B@K77|LMhcYtB zu_)9aeCwfntVjt2>7mQOAXr+9^^#1|9GtD`ZtZrqbGCB}A8nt9-{Tj40h@h9LxO!V z9temQ$rQNw4io<8j=*th8yKhw!#7%Y@2*Yv^ax`yi{s-m!^7olE_Z&Nw~vw86c}Jj z6W_OP-`>~P->3c$VnnTx?4w_de8rShOxK5(ZQP zN|Z|!OC5~hy?t0~b6;C=n z)zxm_N=G8;IHwSVh$J|ijD%uMd4=Yrnr+*49Xe*Zv@SC@uH(%k>N`8dd%G=7PDs_) zOYq`*G)E4Q?%sk^EO23`--RVK`hNN^?k3WC<(delcw71NvYRrn(QjIEF!*z;P z2uhTT6iX}?Q+l6#4nX_Phs8U3RT`;kCQ?HTF$&>1CPG%%bL18opHJB{Fr;&U2HSaeDWsC5=5FFCVs!)oxmmJTNUXBK&;g!bWF-JV!{;2kpSPBY zt%j7V5fT=NZ_tEgE_}eDQKnIe0AT%Feu*)BAN9$KbX`#*QJ}75wan!|7&yquoBWFk r1U3tiK&qRTdZHuDlvzL)B>?yjfS~`FyINaO00000NkvXXu0mjf;$wU` literal 0 HcmV?d00001 diff --git a/kx_tools/icons/document-export.png b/kx_tools/icons/document-export.png new file mode 100644 index 0000000000000000000000000000000000000000..9e1b6a620cf19c87ece3788fc8bdd77378f38d74 GIT binary patch literal 1106 zcmZA0c}$aM90zcY4k#^cCy+%3Z11KLmq9rlV3?FqkgI75-4Meu$244-WT4|v4H&-uLJ3BkKgyXRcuzqa2T^vEi-mMqf+1ZcNlhdf+H7Y8qxVRWR1Ox<-$>fNL zh!h$vJ3AXx{^jB6NhA`Tot-fl%zw52uXsG(6^9E83k?YkVlvYR1OkafVx%(i3-j{| z@+vCJW@ct!7~TdDLI zUtd4)_%V;i8yFZ62n2(JgHHwrhlYlRhlfW-o&lqyqtAhH8=+7*F)=YYIXN};5&)-6 zi(i4$XJ%1zb0U#QEE2r}=I0lHl{bJy@>VL9NCBBlwk};?m#x1;ZJ;(cH#asm<#PF^ zE#zBUav0tMKq?e4tbi3LB}#=tR4N2f+1f=AkZQH9cQs0*(WuoRG@x@dw6=-ZW@4j9 z?V=2*y*-23x(67IMuP!_30x+V*=)90EMRE&T-MgW2MH`;&{Dx_k8*ItV4S=U1O^2k z2|pS`jf*cjTUJ?F$zrz&w|DeLBiL#~Ts#8yI^YvxDQQ0~wlwQ2MA63|Le<0*l4p(z~?&nT5DT?HiBt$z16@z{{+d?v{PT_`BOOZH&! z;u-zOsZ;8rUW9Tz*U)gMb?QdBrSP^8>n^C-J<;rWFYRG|Smq52Hc?jHe40C z(|Axe{%OV6vslbQ=^qkkwmtY}IkRQ_X*x}nwa+DgEORW9A5zR>{^&>%f9Rtu>$U7n zb{M~Svp+ZYNSM1bG$1E1bmX$)6GZQ*`Z9!a^zw;MiQJ?F-*HLabu zC+K_q$XLhwndJ2Y*7WXXyxu>fFnS^g8awvugZ)kJ>5lWzY8$=2H!C#AkN4aO@*64` z`IeKjKvx-DLTWEgpH?jk%*dR$^zzlvOSy-W_GGP|{iNg^r)M4=?ZUaiY< zD2TpR*02w5Qe}Krf}OzKx=I=dPOjF^x`*3efw`9s7k`;`zgA+#(lDp#g?|cKeP3g% zYJGkB%*xg7o<>c~Hy4+e@y6{F?edvL*{D@Y&iNp*`N0#S!S<6UP-(HfF*!B=0F}aQ A^#A|> literal 0 HcmV?d00001 diff --git a/kx_tools/icons/document-import.png b/kx_tools/icons/document-import.png new file mode 100644 index 0000000000000000000000000000000000000000..97e683ae5523e3f377a6a73be7f66d480f029ea3 GIT binary patch literal 1017 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 literal 0 HcmV?d00001 diff --git a/kx_tools/icons/document-save-.png b/kx_tools/icons/document-save-.png new file mode 100644 index 0000000000000000000000000000000000000000..7fa489c0fe615ddfa1d1f8dae1de37c8ed858dcd GIT binary patch literal 1263 zcmVM8$}SF`)$W|Vz+h^3K1d&siN<^An_F5_&0!O z)Rzj0@&v6^_10 zg~*Nh4_Qv0^%;Z#{w#!k|1X#ZQ;;@Dp6+HDfFwzvR;z(y+w7a5d4<3CPl}Rf7-tVSvZMG^9)A0BAQf8V&LJ zVG9{>Z3|Y_U^M`ViOHx#!ZB013K_`6*9ZV_uqB#YC@zDZ2d0D?f6(P|tQ3#a@s(2L z01}P3@xh-TA45^onUU7wF%q&o*g97OmE=lL4uFOcKDoWQ{=CRE|L5o=qZ!D84eqm0 z(TY!}fpk-G0x@+f4Xgl&tX`6`UHUODLTUZqH4rBXBHE6TT3rHJy|_6BfHj~JeTEX? z(^0ITcRZGj$IvMk;Sv)L>kUjP&dLt6R- zyYa=Bbgatf8{D{glU698=svQ`7Y~CniEsL{qWLobmqjQA_hgE!!xHWaYvFXB9A-fFUE*Y87hrIt&Mc0u2-(v~0T& zKomz11c4+VD@>5(9wI1v4m741bguyr;G&{9J{<$#x*U9p55;jL|g$=_H zfzf=j5U4rdp6zxU`u#o_*fcf*z=O+|E`3m`*1o|~wbT1m=)U#UEdfQHwk8G7iBS9~ z3|T7zz%osq?{>Q^UTjrN8wdl&ql1G#H#RoD-hSocXL!RJi!cf~kv-Q!YQ;po(4Rhx zD7a`UT{6*-j6*c%v3CUk-TC)uH2Mye-|{@~A`$TRl`GZ{4<78euIssuZ~ literal 0 HcmV?d00001 diff --git a/kx_tools/icons/document-save.png b/kx_tools/icons/document-save.png new file mode 100644 index 0000000000000000000000000000000000000000..8072aea3268164eb2028a0cebfe44da82b4f4aca GIT binary patch literal 563 zcmV-30?hr1P)XvKK@k7Ytwo{YB(9F? z;2_0Ku;{F~yQsL?!9iy?1;;|c4%SjZ%{70TwwHKcBH=J-%EN&+{;d zhN(E7P<- zOhP?!y}wyJm`;b*`kqJvqBiX|nL~L2fd*Ux1d!eYF6Tbg5P<9ZC&&uF5~UDVJ~Kya z$B9GKW9yGCk1)gXRIvtRXipPk@<6(R{ z10;&Qkze=csdPHpgO1qUX}3Wtm&>>~JBMXkI4Be#D>XTZ+DDB(A$cT#*xhj)kQiey zO%sM;K-YE1@`TY9(UZv}-m29|6TcYK$LKUNox!$kO4I`&Fl}aA7Py>1;e44jn~%EA z#v7jv1002ovPDHLkV1jI` B^11*3 literal 0 HcmV?d00001 diff --git a/kx_tools/icons/edit-clear-.png b/kx_tools/icons/edit-clear-.png new file mode 100644 index 0000000000000000000000000000000000000000..631ed4457342d9e6f224012c842463ef09bfb8c7 GIT binary patch literal 2066 zcmV+t2<`WYP)x*e)JWac-SH#wQ-nR8CQ z??V9a&birHyP>V2D6Oi1xANEi_WvUA?O=O#N1Yt{FO}b!bpZ~OI%n`&{aCwN2zNS9 z<;}Xl^-CIRSECYcHRXZsglPS&3*5WjSf$N705{Jm`}F5o6%ZbYHS29I`~HkF7JAMW z9h!B4-ixPvn@;edOOyWUnB?HHSr-`S)M$I}4mtW`5AwSp2HFJOx?;+$L~N8m^(Bff|Ht{ui9&=7Wp`+_rHI)*!@x7XeD= zg~}9-Dj8ZUgp)(O_~DmAA;#H!Tty@*5nA)#^~VwVxSGK4al`P7qet=I3Kh7;_ETI< zB;HCO%6|(-!i#t%PmY*8D?9w+No*|EXCf&P-%sP>910ptM#xTIn~somDMGgf#@e37#LwL%m)+;BfE*HhU`HL`UPBN&7IH zg6{4`C^QS9zW%5{{3vSQbj`!CP&}f_#V1V+AD%?We#Y=5wo7uolKVr0G9HxaQBab3 z0OanQ{(ghzgunFh!TnU~RBp2vxHE={1r&sDgi`Tf5OexFeeU!2;}Zm~LTKlVM-b22 zw!bbv?p3!o4Vp_6K`ROdb#??Kc-o&XHZ-``>-`zNzI{9Hb#}%*B-cGX@YmcB+~@77 z|7Z@}RYn4;mp0bn;M;a;fJP2ssoG ziJo0{xZCbexXae|O~}~}-w6uBePm4i@xfS0;Q7<=83>RUMf%0={<8(KaJf7QE|eya z90W}U6Lcav$Pf9p>FZ=fB3IuDuTA)>g9E<0Wee_dalu_X-EhOaxwy@71{#^bp8BM12vn=r`+xhI4vboUDhwTr_v+mZ|YjpPBLS4Rh1s zc9(U-H_ge}aL!P_0R<138sp2Kufyp?BArP5qJSW5o1#oW1O2V`d*M|Y<+xh z;oR@;n;H&1FfhR1n3>=!uA6Zxkq{7xpA|?B+7ezZ^m~>OxdU2?BS9@q|v_3JGcuf()^)G z9t@gvI@F1opi1_$fOX49 zMb2w@HL~D8W;m=4-SOUnp$?kI@DHX&L(ho7GlcNOMq8|Q-GQ?#EErSpcEMId`2ja4 z1=qFzQV|C-BAuZvKO8RRv!VWIAk<{hq3Y-!(5BI#DK`kTS%FXxEOyFAZ|kN;vCvQu;@{m4DddIe+e>emV{RWNwbfY^-qQI%}MY zP$?OM5mLv}%ue!sw|hESb)U+hy_6i-0hi<)&`BAS4e5bX5@mcJXe$f>ozM@|nR}qK zBpeD7sIA2Tn|mr4&QCjH111t3t)Jw1+l%TXtk3ImLN+vrLzdUcg669QG-I))B{gB0 z<->lK{~LIj9zL}LIuUzGd758v5@%~~ZI(Zr6EonPoIP1DrcX9zFyMR+lg!-@+7wJs z6M^p1Fz7tKcQQAASBX|c7pQ#fJ7tbmqXoX7iECxS+Zv=S>sm3xLM^44snxVO`imI| z1V%Yam+n4dZ2Ywzo{Nz2o6%2ophgzo%gv^!w-4V@Z#_QvJ+GxFmd8k&x zVrryx$1|Bs%l7=p-?j?`hI;T@Jrk;Fv^i7uQqIB}8U6hRF=M$}#I(zfbx%%WZ&OwA zcRxKL@P1hq?=>QfcJHf~F`XL}jO7)%f%D!1Je{At0f9cGD^0o4CKZCfdHOw3C3tK~ w4tEYMH2CfEFY~e(IA|La%m4rY07*qoM6N<$f+Lgg_5c6? literal 0 HcmV?d00001 diff --git a/kx_tools/icons/edit-clear-locationbar-rtl.png b/kx_tools/icons/edit-clear-locationbar-rtl.png new file mode 100644 index 0000000000000000000000000000000000000000..6c4b83b7ac6e451f461973dac0c9a6c53dedef25 GIT binary patch literal 644 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJbFq_W2nPqp?T7vkfLzW3kH}&M z2FBeW%xLxI@gtz1WQl7;NpOBzNqJ&XDnogBxn5>oc5!lIL8@MUQTpt6Hc~*(*`Bv~l~6?FSDYJaY8Nv17;1UpRl|%9VTf?mc|? z@cHxSFJHcV_3G8zw{Jgu`0)Aj=PzHr{QC9l_wV0-{`@KR`o0Pn77`^ve!&d#@_Ksq z_8}pusXI=cy7Kht(+?kh{P_EqYvr0*Ks9qcT^vIsBJkEM|1so z>*;dxIy;s3ojI&$kq&AP_I<(sjrDEsaU~GX3SIsdMei7bh)})pLEh`3!Xi^UM4W+LIZr$zxaOz7mw|A28X|&gK2(h zZfSoyEkX7Ar7SOshe$kJ@wtDv=f<5!bjpH@N4L9nR{6W;bYuBbX#H42w#$q|FGoYkR7TQxAVVC~AgvlcDbQ{K}v zz)cqHtE#WH+tMnPL>x$^K&cL@=%%l{d{cK)X)1KPX3v;gl4lwwgdERi@@M$WfsL{? zP3)eLTi{~|fOrH9%Ru@V9LpV0qngA+;sn5whQ6+jjvrr!>i^mx(;;26*la$T(-0mV zM6EV|5;_BFz$$UjH5GQd1)8dx zW$%Zmk#1*hIjlV+=?;EPa9k=7g`$b#;sWMW{kp}nRc!428shS@9j29Ip{OZjyKMj{ zG9;eH^E^zu)Bdikvh?_!mu@q(n3*v73Z?HG|HJ$KtcH9J10IQl4im gAunrc0{^W1Pl-(m{G3O!W1aTUgGKN%6@}cL`d0sS5o>yped=IE{-7;x28@w z?{(Ng;8?o(vZal2UCV9SDn2q^kz14h;ArvQ8^O9iIQDs;w`*7+VDp{f_ZlWKjr z)#jWRvnDK(uc_Jn=1hKh7{h^v8aJ_m2#-3&dS~D8ALfP$ET*!d=Iaj$ESaLv%HXJJ zadX**`|pc8)DD~|l;Q1I%+aL4pv!&XZJDLtiIt|8wDsLQZsnLs95p=my!g*?kHg2f ze}skYh-*HqEXlpecGB}onN3VDlz0sp?)p^E4K+@`E$^}V!kg~`uY(tgCWzj2SkAUA zhv5~wSpvTuPll7r+MOC)9ESz0WW}p&`9(OEY-(cc;=5QH8+dok<}z*b-~0I2y#2;5 zm%ceYifxa*+WiUnz4IqbQQ=IBY~#^CEhHY#9paTJbKGK|^!~uRnp-kXG?@4ro-by5 zaqMZ<%Gv6Zf0wV?sdn1z0IR9imMNmDb$a0zwKG0V)~~O%Gci?|KU*m}BkiApw!tmN Y4DJ^lh1J@%z&K#=boFyt=akR{0F^SkGXMYp literal 0 HcmV?d00001 diff --git a/kx_tools/icons/edit-delete.png b/kx_tools/icons/edit-delete.png new file mode 100644 index 0000000000000000000000000000000000000000..87cd0b0125d6193c16c59f25b88396493e885f6b GIT binary patch literal 640 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJbFq_W2nPqp?T7vkfLzW3kH}&M z2FBeW%xLxI@gtz1WQl7;NpOBzNqJ&XDnogBxn5>oc5!lIL8@MUQTpt6Hc~*<;sHJ( zuK)l4Z(v|p!N9PVfuWs&p^JfGA_Kz=28KBd467IzAX4jDSb*GiKE6H%hCBv_Tn2_L z28Klp4AZo=>*d6nRHQFelpgl-Jed$XS6*hniPlkf`z7+iOXNkDC`v6+mRl+(v`kK5 zwTk$9b?ME9YMZs?_j%bL_HsDk<9sU2r$Je2`?nP^4n zy$lTd7#Q|j8XpwoI%I5o$k*ermDN#8qhmrm$Ax%K+S#3Uu|MtSb;ix@0t3SZA)d=& zVVA>0E~h43Ns7Cc5PLm2@wTwQZ4try!urld@myOUR3yfXZwfVuCELX$$gHBz;HAv3GxeOFfuao00U1?PcLu(fWV*& z*YDnY^6b^8FJFJbz;6)v0|bBn{{8pwYTmshp#IsOE{-7*lD!9A#hMrxSP$@P+)yej zFHd4mDu4d>{K5|<=XpdH-eIeeoFkI5#Mch*eE5E3q& zsDJ)QWe~HZu=JPqwHHm!J!tPMoAuVM<=A|yGuL0$MD)r}t=B23K4h_=$wxfq{j{s6 zvbJ;1RM`0b{&%I*Q{~<_^9mg*KC_8ox^*ST366Hw_&MDTLh{a=g|okJNlO7blfl!~ K&t;ucLK6VLNBNWh literal 0 HcmV?d00001 diff --git a/kx_tools/icons/edit-find-.png b/kx_tools/icons/edit-find-.png new file mode 100644 index 0000000000000000000000000000000000000000..64a1e28d3afe98367cfe6e0dc06e617fd3045772 GIT binary patch literal 1631 zcmV-l2B7(gP)MNw`U7%Rx2bK8Bi(|P{(xd5FTJ76}M;B+{UX?H*-l_BDd$m@K* z;M=q`5flm)BogV($cTt9+2j_Jne%fHIyY=Yds`af4F3(o!_k*TbFVhQ(|~VO{~eZVwoZ78xQj3UAZcnMB6)-8nqf0 zs=dQz<5Z}eRl$)-O-Y5xXn@ORfj@T!@_b%;u0<|2X>H9sR)v(1h=_=74BhlP9mrCP zu&~I3b&CV&ZD~MndlRb5ixE2|7CH(@yBwNUHlks9Jyb*>DKYUTZA{;>E8V;M9W+xp zJXvneCp9?*W&;B^BgLZ9Y^+~aLow^ov$_H0g}E@(WW639ekg?MbX%iT!X`>YZbmFh zB|N<85TmKkigmSq)R*`m7YZO2iMcW?U9uGW_wIw1nsMydvHqy2sHLpr-J82{{QZ7z z&oCQ}&?@9`O8M{zqfxFEV3|*Yb+digzM=+=vvZJ^B4Aa!N86|Nv0f#IE0r8GqS0(g zM5{ds9lms|^NLU@n+%sU8N8Snw!T5RO!kP%aVI)Ddi8IeOxNvFvE;5&p?v6ZdxC7! zDyQ?|PM(NG#%XA@@zLrMVuLpgOAJ#{rH+R&BZcdm5UOQRClR4IeG=*!9@g3u(U&hq zZ%#UzjIl&09wlZOSN{p)$5%b?aEXbDaq(h!Fp87m7e!&AE)MJ6LiEm@j?HcXHaVwa z`)md|W(_yuA$FVXd$v(3lnLl@C*wqg0+;LbxLCvBNQoG$iNO4_0&W6mS|+@}aXdzt znu;8kl@y(X&MX0rl*%wzt-)YGj-y4Sgl9Ttda~GZ4TX@iS*1{-wyGT6C3>9n3vsPh zjgKlsI8vO3zLsUk%gbXAqOXQc{_LrEot3w_t`gneR2(asjw^H3_#`04sYO}nT+;~h zp(ak6$-TfZjFa~J;JiQ;j&0k3&yMWCwSj#&+_wdDD#~H8SZ=Tf)r%4!8%Gh172dWVk78Vs16%!K^ z7Z;b1kN}Fy$jB%wE32resHrNetE+2hXlQF|>*(m{>gpO98JQRvnrX&tshF9W zS!l>x>ZsZnXt+8#cqlS>d3pKz`ub^d`uX_<8_R?S2Ze=&MS9p~MEGW8WMqcBWoBk( zWn~o=vQON3vRn3KWzqag8Vm&QB{TPb^AhC@(M9%goCzPEIUH)ypqRpZ(583aDtGr;B5V z#MI;j1+D__&jtn`IEoMd$ocec)*P8x?>^-S*iBzCZ{MahYc{Q$ry<^PUhnzJ?6r@c ztw>t?TJt!ch=9q~LgNj=AsY+}HXDkvWCav`{CMp`Sm@PjAHEd^K1vcOGB7Ou6mb1w z;O7D(<3fQXf$bakxeCGr1p^Deac?shPo7|~?Gyi(Nr{OQKXQH9YC0+5!PO#O&aF?9 z6CP~l;Vr!SC^g~HbfYO^326xlViU}!JV|G|b^639jzYybjq(f(=Z{Mqoh4|b5A+Fx Mr>mdKI;Vst0N7E%9smFU literal 0 HcmV?d00001 diff --git a/kx_tools/icons/edit-guides.png b/kx_tools/icons/edit-guides.png new file mode 100644 index 0000000000000000000000000000000000000000..d26483960a4dcbadb1f43e5338886914f179d9e3 GIT binary patch literal 544 zcmV+*0^j|KP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L00!&;00!&<9(6c100007bV*G`2iXV< z7c?snYm~(R00E#$L_t(|+KrMwYZO5khoASIo!yNm$8O|E8he{GqNU=uNN;Zus-Gb4P}#Y7A?ygXPKr96UOJL@!>R*>ELDtA1kf(LUSRwVPELmLx=%zus$aSl7`2@O146zfYCK8uCTp@eddeLoc{v>-MjzqkF`<&0000j6lR&1TgAAr&ZD!k+qP}W%jJ@CJRS#CRRM9ND9TBQ-xjmkjMQ-h5{U#%r&Fla zYOo82VSMr$Ij3T=SddLTjly+Z+O#GUI#oqsWi!YTYX~Mp1c=N6n29LEN`M@2&z|S8 zz?K6UxCItq2SjA@zXAxJ_(ltgM1XRn1uCLIxCJIj9r$!Vb_lQ|29qtzg5l3_{kb(5 zjm9I~{uX%RpAOcb`;j_K(Y$)So_lkBnZvay{frS1X+EDb*~^{h3eETC3$-v9491ub zaDdSvvJu4^P)Guu8^Mp^E`ked2vSpt|61su;L2ij z<;PH$U8o=m7C~3tWcNTG)J7{b*F~FWqfP8t%?xJ_=iHei07;UR(=|yPDj=vjL>=voHq|p#I-L?Qk>AmS zzPxvY0Nbw1lMihQArOM+`NlI`aTj%p_iiAI9|$Hw>+3_T2;aNL;`?_!mV=+Kn@kKz5^$Yl9iaBspAwx;pX{S z#-xlBhlq@bpn{6fn5pNER231WR;dAk=m>$JMxhWW_&>=E-TxetbB4~q4s4q*7xMMe z`tqTiLx#AA`>z)1x*vO%1$<bC>TR zB179YWoA}u9idFEyi8O1+r)8vEX%UVenCc{Z$RQW{+MOi)^7ts%?QYKD)s;X002ov JPDHLkV1m)``fdOK literal 0 HcmV?d00001 diff --git a/kx_tools/icons/expand_s_y.png b/kx_tools/icons/expand_s_y.png new file mode 100644 index 0000000000000000000000000000000000000000..c2e8f78173c175483a1a98bff2ef435bc6ac7265 GIT binary patch literal 577 zcmV-H0>1r;P)pZR(Utz}U)y$1I+ZZs8Kv2x`d2p3=gC8!C(U?VCUV@$jgNlX-R zi)>vH3`HxaDxCIkPE*eJy1>>DO^h(fY$ln%XXb@dnpG;5QW%Dp0RO+a<#PE0z(t+V zfU5zZnPq4++5|xkGXo4W!<>7ywV!9^->9c~@kvb{FRy zW;W{jL?$jwQm_)_97=QCzC43;H09FT60Ycx7pY?EYxQF^tCF;{(@^v4XHBi%)VCik zMeRLx;z&snD@kIdX{?2Jvr4-i^?Kc75CQN$Bap-5b9iOQgC|Gej#fZM+keOV48#4t zWuHN#@rh^aFGxrju@UCRrZAUdD9AIv@{ogEf)x|2TcVH^cyzsfoWb*rmn1IXaJWs! z#nj&{54tRj-($p|L2-ehUY-Zz_y1(Dxw)n7?JeDUJ)!1qsOD~{-LR#-{r!R8cy&cl z6lp(-1`G_SPCwQ9Ngio=+D1?N%40#LQu%0R*Zv|V{X(9S literal 0 HcmV?d00001 diff --git a/kx_tools/icons/expand_x.png b/kx_tools/icons/expand_x.png new file mode 100644 index 0000000000000000000000000000000000000000..217e3eae51e02886363f3e14aeb62ec7435a1fa0 GIT binary patch literal 579 zcmV-J0=)f+P)%Z}XCd`boz{X>GMd&T3|I?#(&(&JlnpitEP6L9farDlW}D1A7>uj{~Xfc44i@Q zy3Rje=$xw?i+wqLhS);o#a$ZaYfG|#4LtWZ7IDu0!?nE%;KIwZj8KH2!QAU9hV?jm zKNPV-`PD@{j|MAHgeRxh3H%WHEzj-Z5;MgcG>yk;K=srrI$(_*1s=F_Zl0i-!>Gfk zBP)5zXRaY41JgF{z4xW%LxgF$6Q=RbZo)7;nx^T=c0dk5TY!XN_%=<``fn;9*V(uq Rx_tlu002ovPDHLkV1kJN18@KU literal 0 HcmV?d00001 diff --git a/kx_tools/icons/expand_y.png b/kx_tools/icons/expand_y.png new file mode 100644 index 0000000000000000000000000000000000000000..fedf9368a2fa13d85cb05ea6441438619a432d95 GIT binary patch literal 577 zcmV-H0>1r;P)o>cu7m&p0nSN8 zK~y-)rISBTR8bJcfAjX?%3F#xX7zhO43(}_R2F;%V_{(>5dUC8FmaVc#ER(0uu>aM zz)AxaHdcfL(3OV>Z};w7+KM-%U^Da$f>?+-V)803s37FHIBI_G)%{z(s9`E%_}jndC^JY1@AFngdw z4)E;LbFA2f%#-4n|1i%%pO{^mCFu9ai?$rKrP>iS2PJ89b3^rSUo`!8Qaiifl{9wM zbcxc`DNUW)ZKs*VTWaq&)#>aX5fK3IGeQM4{0}nUrC`ESAPlTW(P;P`yw5OxGq>Ib z%ePcllnnT?fy3T+vVXcVM zS&_TdoB1y@qf-p{2wX(5Tjc)ey+1WrU0u`q`kKaG4y(QutG*R$E8f=b-d>(#uZEQ* ziT08t*T8_m@yA*|&LPc>TlJ);d^xOCDxb}4Px#24YJ`L;wH)0002_L%V+f000SaNLh0L00VXa00VXbebs`@00007bV*G`2ipf2 z5f1MO_vl!NDy2!q(wRLC{lU>hk|7A?&#&NUx#3*NsEGh#?SNe z;e`kO5T(>j03J~;Y!}|myq)P3w~KYQF!|eTeA>7-S(}XK_vV#SNQYh!3z!VQ7k4G!;ogP ziSPSFQA8qV{b)8Hm!|3QJxm*tUCM>uMWb@|N zk(VREhnPkjVsVErLm!x?xwOB(zj$zP(C_m3JQEWW%g!z5DgQg-IL=C=(Rh4XTRNSl zQmJfOmNnaMw^wVm+T0+Yo}S(;7K^j8wzhU$E|-%)Ut1ikil9pxRc^=(v7tizPbUN6!eXiEiT>GUh2m+!gLPXFsjUWil)S61AP)hZ=mP{rC zUDq#anuds=RL^xbn;p`6nrAYZ-hg2kD~{tVA08h5rfqzDd>Oznj3vi$7SH1-rQ}~U Z{sb_v1Uf{wNjd-k002ovPDHLkV1mj;9L)d# literal 0 HcmV?d00001 diff --git a/kx_tools/icons/item.png b/kx_tools/icons/item.png new file mode 100644 index 0000000000000000000000000000000000000000..50bfddbfa29e1b8edd2d07e365d3d554eb40581b GIT binary patch literal 448 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6U4S$Y z{B+)352QE?JR*x37?{gIn6dV1(;1*3dx@v7EBkGB2|+ytC)E5ZC#9Ta_AqPjcJ8oi=#E=; z?DoPf3(O=mmZtwX|FHcq`=9Rt<{pz$>aFI+E!JSV_`J$!X2Q-Gxt!Z^{9-JQ3gX?Y z9ULw#%Q6f0-=C<$8FT&Z-OYIdZHhjZT>?ckP777eQ$B6v68PmY_ui&WI)ZJAU5gxI zuS@j0CGIgTv)5&$)aq-#J#eXJ_2{`!`Fhj@H=?B%}-8@m+M``_=&9uH*Pa^sRo>+4-6M^5QY@6L)8`()!D z8fv>uG3?t>wHBal3X8;U3up(2hH7+uIwX<3@#U_6BHG40$;U0f=WUPf&NZ7|$&es% lY+CWY$}R0vCeSATx?0 z4$ACc7(^1B6N8F^5>P=@_#xFcX*|1YeYp_A1C;0U<^6ak**RX%Ip1D;?X}nU@r$3Y z5nj3#fRqtrbzGSaEEv~=gyt5>V9UAy)earg4&%XueGobcmo-wK?5=FFMn%F4=$ zkW4OIxFF}wozoD)ICJKVl$4anl`B`ePM$m&MiBP)_CH+m0|ySwL*oAx6&0z3IXO9U z`0!ylbm)*|WMn7+1XWmAsPP>zR6B9v#4!#I4!W;So|>8(!m5uRJu0hKt?F2?U_qXT zhsVFBOqmkMz`vt>e0(yOFJIogfB$}hP*Gl9-o0$uGG|LmOWpTQo|Kg2&+5?krfJir zEyn+iGchr-!J?*SW@ZM4g@uJF!Wz$h?d0U-9T*r`zGu%KDJUq=z{Gz5!UgRZ83;#5 zN8S4M>!+uurwgjv$;EAKY|K9Q9e@~c8}01uJa5H{6)jm=S=7eA=gyt$IDY*25n-?f zogJ>OuD*J`-e#oA23S+v9Q^(Lvl9~&38EFht-g51*R5NZIcd_QKiJvXSq$L;dIYOA zHHKl35#+yr>E-1Wy>H(>inmz3Gu&k`7<4OFuKd&d`SbsXDn1q9f@Y@jUE??Ef>^Bp;%^YOczb(0>U2YN)WyX`H;_hDz*2sd zo12@)WKcGP356hdrwLuWcu@tP;oVGpGZy;cw>l#eR&(ae36G15t0xOzG=`)UA5De1 zv=C>k*0>U`^vnBniwt}w|vNOZ&be0g-Jfrn$TefVGty{Osix)5C#*G{D?AbH9fB(Kp zUW?!N?%k6|j~+=~U7du5g$b-%0m#qK*T4uF3NtdHM=Jyv=w;4V&TGt9;A_r zkY>{U?%g}7uCA5`4<1NkW2017RVfxKpo5y)TB*N%TRkH?+1c6Jh7B8p0FEC&u7MF2 z@DC#sI$K*?LuhE|jNstlF$43Pz|9;%V-M7>vCpKjy}e!DzJ1HSDhBSN;!+6m*s)_m z+buDQ^3I(*eL84sYtz=QT}wf7^U_!ZChRZ$G@*}*iW)nRdUL#Zi^!9clQksJ*k=MD z#q2c~uSWIppc$3QrcIlaAX#O6e7s!0eqB(tVyvU1L%@WVnVBiDW$o0dQ-aNG2FB35 zH)nr~R=r2k$E1x6AfeXU+A6PKzgB&&si~3DvNDMQy+J`ivUKTEf!zwu3Iapoc|hra zV49norK_t;Iy*aMVTzW$1MY7%0LW=KvMhrrBG`!Mijj9My!B6Eu^PJqDRvy?Qn6 znC%c)b8N3DzcUDQzLb=dTcna>hzhj#@846=N(Tf+TaCbkVB=y!bzq@B_ze?$`0zmh zTqP%q3<{VajvP6n)(Qv+@EFPuOc3^%=PHaNM@z9#Sy`z@DlILIASgsCT*AY{IkKuc z26fQg-AxvhfM33RDJ?B6avP%xuu9+r0kOBR6+>mKQ%ow7l9N@n zWPzY|?b@Zzi9J0%y}j=P@bKY7C1QFD-(>(u8%|da1TdT>TR@z@2OAXx!C7YoFcyur zylvYy+AT#U2M->k@<~0D_fgM@sIRZ5D{>_19|YTgwSS8Z%VdzegP#NN^7P%icV}Tb zdT2bX0%rmZ{bvGJ-q&{qK|Fc#M1wHZShHRH2Is^?>Wu4-^sgaV)ciO09ULzpYEf5oNe0>-dF*iD!)VKPS2%h%WU zuZtEf3c}sr&CSgR&t@2n$Jz+q@Gbwe)Aa*qVDtmZXFuKR|9|r7A=3LD`2YX_07*qo IM6N<$f}#jh3;+NC literal 0 HcmV?d00001 diff --git a/kx_tools/icons/layer-visible-on.png b/kx_tools/icons/layer-visible-on.png new file mode 100644 index 0000000000000000000000000000000000000000..b24055207626a181301366abbf9c9992d6cfb1f3 GIT binary patch literal 2001 zcmV;?2QK)DP)U5({sLAW~f0Da+&l;-5${=cTUBtIK+XlUq53WXx)^&S5;N1&zw1}|3ySZ1Tr!*P+ngC@Yu0qVH||Hx%rO=o}Qk*=IGI*Pvhd^ z5E&VX&6_vF)6)|hH*UnHO`F63Vq#(t6%{39Wo4nVvhpK)dwUBCLh^&bv$M0e78Dd9 zARquvPENhHwzdjOOUrl*3kyHqR#sMVGiJ=FSh8fvy$u^SV8@Of*tKgHh^=8_XpWwq zp5%Lj@7=rCCnqNdME_j^+ai%jtc{F}OpJ|<^$ZOSrM&5XJrffXV_jWcEBel=*|TR~ z@bdCPN=k}ADH){{{btHcSX*05D9=mj5X_u8GlxF1B2fKrdvDsbX;QkeIkB>a*y@zY zWX!~)l`B`;+Su4kDF$Q8r^d|8%!6+{Rb?|nIyyQwbLY;jWNlE@bkWB~-?_#qmlXu= zNYolW#{+a|OKIzAw{(IMl+ZG>v$NX~9UYD8>gxCSJCh^RTDx|w>%4jMmYbTI>Q4at z0yE9GnLmI2@2C>|eSCZZU0hsVrO!*wb;pXg(t@k`2}q=%PNQ&X!B9z6Jj#mTi#LPc(FF7os9zuv!pe=SwRA}!t0aoRAV zO4*c_mIilsciZQpQ|(HgrICW+tNd#B?%kzqLhJ<;Bv|R*-rn%_^@YE`KY2r-`0UW3 zL!jU)=p9RbckDcUeSM=jbLK=OCMGJGh3`~`9Q=X>3l-hN26Ey#A6c^QB;Pi!d#K_*p>eZ{r6~jfVrko3u zb9P4`ZA!)fjn=JO_b!t%S*M#u;#x!C>}-OEhX+zqQ_$Pfg_4HPaQ*fu&VMqDs@8u& z(WF7$pNG(J;|rX8{}!BAcwkFlfEYkhQj$m&K>mj_Tm#|3l5y?N6d*nB-D38QCf_@wzi_Qv;<-P zeh58(3*l++p}775f?_f;I52?z{(g`N2~>Vu8GIgyQ3tXcgE34h&;QOnwbR?weg&#= zp{c1!=<4bc54!l_Rpd1c!ROoq{5mQdaoeMDw73{lo^V;R2v+jbaBtQi;YtreQVO8H zc?-kC!x$VK6m>+Gf?O^aXn+|eoat;>6FH&2v$OMh?&(~1H1!C4`vJO5Zrr$up`jr$fWE#y?A*CiAOizU zPCPGM=aw;%HS4fY!otE7oI9qjt*uQM=YK9!shd+(gf;|ot%p2 zwRX2 zDu=_?6L`hzAQrBX!80h44U51B7@VmW_q}`fpj0XaEjX2KDRBGFPO<9QgxHolXh4F>VD7qi>MM`_m-tGi%nYwe-wEYdpr<;H5w1PdmxD j;H13A0u`VAFR%Xq565XnM?5ki00000NkvXXu0mjf-tF2E literal 0 HcmV?d00001 diff --git a/kx_tools/icons/list-add.png b/kx_tools/icons/list-add.png new file mode 100644 index 0000000000000000000000000000000000000000..1e03be9bc896c5f6d8a943ff9d153b42b67e6b16 GIT binary patch literal 564 zcmV-40?Yl0P)8Z)0JRB|3DF3=|YfF7jDEZ>IVpdRI~vVL~%?rHj{Mb-aA4?aN$HkpY6+e zIJ}%A@;qlRND8>Ne);a1hpoZcM@ORNcT0CDpm2lpt8;$t;5m`HA+Mts_V&s9W~>cf zetj;y8B(ff-fq3o6i^ss-tluMK}bpJ9RCvtKmqnoV4WvU2M7e2b^n@kK&}DWEA7Qj z+`01X%TpaFO`sJG5esISB#+&7>@2gVH>sP%}a+DuI`p-7R~pI$1Y5x z9J%rcDSiulyep{dI#Oy%ghc%waq@#~ax=Pj`qhjEu-38}b?Q6+eS$+ zxgkjtHlh#o1_P#oDl|xq z)$=3opuA-AQ-@kiO_W*dZ1Abw6Jy@#*R^Fg!5P*sA&3jgil^7k&X>BCo8zhBfN|0000j literal 0 HcmV?d00001 diff --git a/kx_tools/icons/media-playback-pause.png b/kx_tools/icons/media-playback-pause.png new file mode 100644 index 0000000000000000000000000000000000000000..5c7d128ee8728707a6193eb41af32b4e28890533 GIT binary patch literal 1145 zcmV-<1cv*GP)kdg00002b3#c}2nbc| zMg#x=010qNS#tmY19kua19ky@)q>0b000?uMObuGZ)S9NVRB^vcXxL#X>MzCV_|S* zE^l&Yo9;Xs000B{Nkl^Bw_qq@)F2oWehM>5RxKr%Hm6}!%+eJ5;P+bTi3lS*+iMTL0p`m}$nM`IT^X~QY zaG4NCay|}k4)2`reDBVC=eR(>eVF$r-4qj)1*i$D;c~M0PMbdKBbY0P8D8 zNRZe0(#=lS4j`Bv4AY$T#V)(F>5$@qgbX?I43H&hGVkVQTK`M%-dOl9R8v}PlTfBY zi6Kx_XPp{e(V)oOvODwsMjyfSW8sRgbZCm;7>{s>LF)-A9bt!GSz(YOIg)jEYVNmv z1n0)Wim$Y|!zjl&!d>KX1_-1=S4uXx!c9g*BZ^}mZ1f1;9t>A~RnmD}-Nz`9B_lW? z0AARoLt71gX2l*QS$4-iYC!^!PWx(`EtOXpXIQuMLe5;j%?k_(ck>KSD6@^PrqfZu zTjj9UEjB3e5=Y{bXGp9+X2H-k6+2RKUOr5==^p;LmOwhwEw*SeNk!$kNFa(HGKK-u zRZ!`3w1jRkodNeoK5Xumws?wX8B=*yiC?HsOV_htc8-SPJfF~|t$W)nvB)6?>h9je zpGZp`B~LIKJ2`?1ZgB&mdA7LD28rp&2~X$v@KS(GB*rNxdAP4PAj zxg#Mfs#4O^iJuSw4-k|P?C3C|O?k9NW=@#Snlh&M2Y27mKA zEr?d9!3_>$)>9G;NvH)J4GS>GWR~PWe;o5}V-&T-|4X2-ix-T>&Ur*`wm-HEFKilt zuO(p>asSD#JyU84ISQ2I(R#6!$GlZj6jqaPDd^{#{VCl@kf+FqJX$X{f|z$rRf;Yp zVTpQ%9ad=4p(}V53{#Rv>&23686AG2DFW(Y$pv2iG`yw>$eTRG5QX?gI{s@akKaO# zckR=1pMCXu0%0~Z#l`}6XweZQ5l`4(Y|?dCIiC~I12n@dB=B{O`HcAf;wlaCw*?)k z!5dP8Cbjkdfj`KLfO%Dt1z?WJOtrxGI3}@zeM2oyMbus8-%>#3%c|NNsxNA&2Aj$E z^C}f`g1y`TNQISea-KDt%T7aeVQ;7!g~ocQ=#cPC@ifIam82kQ`jKyNcEl<_wXkoj zo4qiG7K=BbLmcH%?&C0yTk3pGXxP9Lkdg00002b3#c}2nbc| zMg#x=010qNS#tmY19kua19ky@)q>0b000?uMObuGZ)S9NVRB^vcXxL#X>MzCV_|S* zE^l&Yo9;Xs000CGNklrkmC6Jy9WesR^^K8P&yuG_6BOq91w;O z0FIbYMal#}U|XkRx6FwT6Tku#*>#;1HyPf+y_n^2g($1BtyaSfaR;8k6ZA~sI(gSC zc%vyhSu{W$FX5Pt^Vi%%4psu)qlr?gpwL-XKAv1R_HEJ~1I0WF4?Jpm~W5GYEj ztH#jhkPumvF9GJYitJ75H}MpnMT6lX9Y15XR54~N2ULy4d;0$f``E+=_o>u3cZcqz ztB)Df#=OsD0F^qVjg&%)$pL|--KDEznj~;+%&Pn%Kky?%Ctk&nW;j|!4e%6}nAfZ3nxTO315g7c|Bk-L zfaG<;pbU5l8X*cRv9L2JXw=|y1iD;xnjS1dKkxTfK@nT`F9Ew5D9F>4bh~(rnSG8{ z9IwEKi+b)Ufs3v5z@c9-(K+Snz+2!?KjqVA*sc&7?)`d7C_O6|h0Pt^l*|)UbjczO zpHqs6{c1tr{jM{Ly^B^h(GM`fHiqD-BOIzeI|&rCUIitq#~4@XO$B|~3_nj_UbE*a z_zsUE(wSO(Of&e;r{TG7?{D~uDlKGfEwz9w%aCkX=Os-r_7})Orh+paP4EeXiDW3t zT2Q`-u^N!^S6smWBcueERN)jwd!i#FYW(a`Q(s>b2 zBl1;=3cRN8@g?$5rZwm&>RT`nX;=;&DABsmLiTnzs1o-Ne$v fC9`oMo%a0)Lk#jiOZi|800000NkvXXu0mjfdhQk9 literal 0 HcmV?d00001 diff --git a/kx_tools/icons/media-record.png b/kx_tools/icons/media-record.png new file mode 100644 index 0000000000000000000000000000000000000000..f926a8f27f85ef68165ae570e0237c53aabe19a9 GIT binary patch literal 1843 zcmV-32h8}1P)lUEc!{aPp#3JQ)<`D13Lv)N_>h<(9s;-2Q_ zc+qG;l5J#}ye#g?=tMywWZBd$S+)lRkr9X?WFwinEWq?ZW{{XD22Dsb+oUx%LH?B% zXuI>f>G^W0aS(5Ma_@J0@A>`Cx#!+{t|b ztgp{7jQ%4>j)YgEcSQnCO-(KyQ^(CpCg8+)t|@UI6C(zedWO3?x!rK|=uzKG5ol~| zOyU2&;^tunbSy0`(c7p-5vo}5l6rKP12%G}%>&CJZu#KZ*od_Lu!^z?K^ z#%i@<-c6Q@IXM~L_?Jn%f8xZ6yDubg^5jWaJ`8Xunx39kfL^bc3JVKq&6+i2 zx7%TnDJakZ5)dp6Nc;VMx_b30O-)TvMn(q62#He0@jpkPuC5Mi{wITb01lUL-MW>w zZQDkmIJziJpXmxX+9$!M0EhiU_|`RojWN% zKOf)-Af14aNEGyoU_2~^!0pQY6%`dqH!y$&Oki8N)6T3rxYG`%rKP3H{cG2*1-Q7> z1cu#Hm#FT_xGQ%ac4P; z6F~!zEnBuwR#uj7k*O>?`HXyDe?viDPYb)(2rp2K=Y=PHH23=-^sJ|s3V-;Xl5$@K zfOrEQR!idXcvMg_7XEj#lp75G5f4Bo0#3G?oMg)^_n-ZaLcGUqOeP6pSSZwa_`wPS*uUZd z5K$uiL^Ho#NhDx;bKSaiz!Cy38-uvyhC{T9>&1F0f%Xov!815aQaOm2Xp)T;$D*{v z@et+cw#u$Y z6{9g8#DX?ND~bAaOoKsv0xWAUu175;t)v(#2wgnd#0#?$)cEF~`aiX}NXOUp;gr=+ zPak5yCjo~)<(`M=WHLYefFf8b7FfK*vcRZe7S#AgKmK>}SREW9Is<_Ku%u5B7{fpW z$fHM(^Z-F^DtM*l6LP%cr6q1JGN;8ja5$of;9K?Ey*nuT(~ouVW%};lzpt=RfNgO7 zD+_`T1Z0cA6FLDbAief;JEeHN3>G!P!y1X?9c5I|(XPho1ay559y~Df2w+=_i;Mr^ zL0=G)M-1S=z&(KNn7AXX8BWTst|EgoBDD;B{KnEa^I@yAzC28M=e|{AP{i#3#-)UN z;M%ooG&(wp`$6)?T6G)N)YSaQ_2+U~)YjJ0#*G_sD`K#mj3$v4iVhBsLMKu+q3ym-<7!nFM0!GkI-XUT^$SOLYmckiaMvNEwmPtWwV zhp6T2?d`>X2sjW%Tczb49UXU9e3(>LR_1ag4-Bt=iG-&4fjeP hxBD+$y0oh2`F|miFh-s2`rH5j002ovPDHLkV1mqrSN#A0 literal 0 HcmV?d00001 diff --git a/kx_tools/icons/node-add.png b/kx_tools/icons/node-add.png new file mode 100644 index 0000000000000000000000000000000000000000..80b5c61c6e67c8a593e30a12114e28a2a61bb3b7 GIT binary patch literal 694 zcmV;n0!jUeP)Px#24YJ`L;wH)0002_L%V+f000SaNLh0L00VXa00VXbebs`@00007bV*G`2ipf2 z5f3`g(CHQc00K5iL_t(I%cYP@NK|nYhrj=wJ2O5KhrmV+O)Mmhlm>MXZNf!uf(UAx z6lS$-QBD{HNkR}-q!O04&^Fb=AXLxp(H?`)`r9i~+yp zIp_DC!x3ZAXII`ux>~2^hg|?dfOkh(!dGccheug%Iz#N=D^J^(HoxxBmCTutC+N_ ztLyN2CO}+U$1oFY7%Rk$MK%l-FgpSF?C;qk?Xvby*jE<>{W*#m?eEPx#24YJ`L;wH)0002_L%V+f000SaNLh0L00VXa00VXbebs`@00007bV*G`2ipf2 z5fC$bR$nXt00I(8L_t(I%Z-vvNK|1IhM(`=J2Pg9Hj$$vSr|!RB}j{cHZ_ZC(WXV) zKo=FXkTxM03dsmT1QHlTwustjyMjn^jEaIpltx1`bDYY*adMoQJNN%Y&7MB!(?{Hy|+JvrK6b+ZUkBpG$_M~zsD{cTcl!J|7yw#lpT=av`O_d3kS-`D3&Uy8&ju3c&rZH#-5oavqOAF`G1HOS{3y~Q)>I;>C20TpF$?lLs3;?- z2m;MynFR`EV1FVF(^N{CsdMh$ZTIfp-LKu~EQdcYOOq?nITHLN!8`?=p5W^0+A7AZt-IFOoa=th)A$ z-9%_J04aD-)B}|aqZo#gB1(za<^~p&ypVLnhq--B#K%Pan8y#5m2uRC`#d-VD-(W< zAcz2g1xS(%;51D$l$W7!h9VdMScYLCIF1E?qXQgE^FcpPlRN`S@hru2Ojr;^o)iUM z1VG{_Nnj;Wlq4w<=AsfGjfk?y%Mvd~Lb4nM0s}-I$RdC>5C90nB>*A-Kq~_Pw4ok& zbVS`&Q&o#3BqklsFDxo9(H6!YgI$I7beYk%H>r9zG~Y}{eO=moqs7wH+^#%#N~KcW z`=ooJOYuvYva?%PtG_USq?~zszIxF9rlG~$tv6Wj#xLyHpOu-SwC&R7=MARY8nQ3F zJ`kL%e{9y+zC8b9+Bv6PdSGrpwDNnrf*Hm$PIlTmRAcwY)B7L2%KYAIiBhvirdjvJ u#=&`}$)5F4Wz8KypA;;;wDrx;G2l7IA&y5dTpJOVmGCB;F+kXKm7Lqgo literal 0 HcmV?d00001 diff --git a/kx_tools/icons/view-refresh.png b/kx_tools/icons/view-refresh.png new file mode 100644 index 0000000000000000000000000000000000000000..afa2a9d77403a12cf6808fd4e551f8582e2599d6 GIT binary patch literal 2182 zcmV;12zmF3P)Dnz#_!jKNQq7A*Lpp`badk2@PWXqYX-|G^Br&q=F$>Qi+zP5MsM!mpA*k zuf20;?#!HXoIAVOWm%yVoA{l4@5#OM_&bhbJb6n1`H5BQ;7S*8aYsrg z(%8Ii3;uED#FnEM{<>~)`;y+z_k9UfuL=Wd3^^--)HY-9vi9Yh?_cu(n!Jfy$zTS8 zFo2)}vyvn?9M|-r={nrdg{hj@bLQ6=E!AfxklAj3tAllJUis0Fqv}*~qbQ*$kCrho zG=SmJ;ke;A=O|2uVNMJp+ zu;cEWP$ayjH}ek0J-mASRn(kXt0W9x0rd%pBpxKBqw^{10_ z%oVjGo>@EUS*iKf;$&9;O=?7MYMcQXV9*`JiNOiUq?uH19(+43b^r%Qh*N0-8PySL@{C>NTq zmAl*&&j?%;7m=-I(Us~#EHN?vgcGQQ0hk0J4Qw(qsrZhsSEW?J(B&a8Ns-d@z$hB4 z&i!^|7&j3whr5FWPw_8BZN)_edGBODPKjlmU)OlN& z4dJ>|3B=t!-WZQFVw^yzWIt}A)jJn2p(fkv>~xUJ=8+4c!VW>LUW;RQ#vRl~YN%eT z0!}M&0-I$B!U~}7K&Z}?pjDR^9 zW{w1fBn%*okZ2@|Mo`dfPy?U|ddU}J(~;eB;yI9g(5#EJY7>RVjYkxMPzh1xRX_*Q zgGN}L>lt#-?Jo$$M-mwReI4(mI02!^YNO`Zp&|eVz{136M>f%FB&97#EC=ugZbOBQ z1{xQHVXx5y)hVYs5kve(BsILL3O2L2eVrEoM3QY?Kgcb3@949XR>=y| zN9HIt>tOA)An!&l_%Kg4mvO7o?ddELGctBk@|Iqbzuk#2Bo z&hBJ8ZldsmjWTmA?MYAi&~*-)hk2IVeh$Mc&Y~^q*Rk^U(roGHs0>XDKJW)w2D&} zLr@aI9y*b6*=b_SODgY>+mHwoplwY`2+TZC2}AP}PN!W?UpF;VD9pM2G~W zv=zcESwU4AVsN?%Clyk$t6K5CULaO>RB3=w+Hwq`F$PVc@dDDMA*^l<0R@VEwgoBC zK!`SB>s*LjR9s;~MEqP3GO_+i2^oFJ_AnvesgxX9l+N^$J}LPp={csqlMPa&i2+9F zj44oKhzaYFr6Ez$U5wc-8i@dIWNt}C(P%E(pO2sm(K&6A^9rN6E-jV4e5RI?33*KZ zT*_Gq#1IGMUb2DoFS?k2bZmYj#*0&+QxLHOlOr$$LS29}0T6%)0v1HT&Bz{0YhaLo z5K{6CO^Wlcm!ukdMp#^1ui8avBL6 zumS>~gG4_FIunN4<@%g)A+7>w`9$QyDB!rPx#24YJ`L;(K){{a7>y{D4^000SaNLh0L00!&;00!&<9(6c100007bV*G`2iOG+ z3Mv{e5wxxV00EmxL_t(|+Le(#OT$nUhToeAqSPt~7F=}E#m&jxk6AiZaa0lNq(4P} zfH)N?Iu^vKpin^+#eYycXiYUqwMmnEJh|qgUb6VW!%Z%{Cnx6!d^5(*;eR}`Z%A3D zf0AUt3?L=Bt5&OcX}2K&OcV-OT3iH#fJjXcY%Z76kFfBIHit{464ut&@$&o(%d%kG zHf%mwez&n(k>~~l%>WEIr1U}yH&26j?*UCmqS;}c7-zQH5XsWG;o0^C8zPoE9-x+R<0fk-=e?aDu)R;z_Zqk()ruN)c~ z1ruc!Na%Fw_nitCi$x^xkg>PFe*xgi+=80=&ap@Na)&mLe2Qbq##F1-NJ>eb=TUjL zd=Fp}8nb}og|vF$(W@6FA+@%8y-u#{>hKISMuAMiD5mSX2in@+I?wvD-pM#SuimqX d*h@Bm!56}ZCMId;HE{p{002ovPDHLkV1lrt=VJf> literal 0 HcmV?d00001 diff --git a/kx_tools/icons/zoom-fit-height.png b/kx_tools/icons/zoom-fit-height.png new file mode 100644 index 0000000000000000000000000000000000000000..32e2190094920b70541fc499e4e801322af1de40 GIT binary patch literal 929 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabRA=0V5|-B32_B-@q^H?(2$Vey!^bJ z+??9FnvTx)a~CfiK5^>i&6~IH+`e=74rj)Dft>fM74Ow5-m6!A(5ZcI)cDc4`=i%{ z&;FA>MbG*YJM&%KtanNCzm}~0TD9(58vQ_3PJf*sx*a#*KTge&2WP$Eh2yPv3fb=FHi1=gyx$f8o-lOINO3 zxpwW^bs)HL{l<+OK=<6b1w^;*-o0}l2wwhp@apHoXK$XoeE;m(^XD&KymxLU<_se!oOSSHJy=wt8P$>76RpzF=_0L5$_~N$m z`N%+;Pog9dqk_ z`_6gKQZ7x3dQkCC^3xjQC1PLnO#DssMfYtw(Z#o~a=Ei2@29IX9w>aAy|9D#%bND) z1(IF{Z2JmWWm?30A0JD7>#4Ng@__i9OVve{ZGYCV3d$@^c<@=|*S_cVPaHff&g}dB z;oshyH{JcW<*#UZ@3iW#)d@Kf`NogF*%l02r!#%3EZY7-IQl|(Ba7);{toLW<$130 ztSf82m;Ac<+sNZi^b7g?WPippK4&km-qO2wz_yx8h%;Pmeb~X*vkex$f309S?bU;C zKb~F9(LC`}Kj!DxuV?#u-*8_uYm3~U^~C-MbLupf$NA@OJpg4iPgg&ebxsLQ0G2=) A&;S4c literal 0 HcmV?d00001 diff --git a/kx_tools/k.dat b/kx_tools/k.dat new file mode 100644 index 0000000..77695aa --- /dev/null +++ b/kx_tools/k.dat @@ -0,0 +1,40 @@ +k0 = 0 +k0.formula = 0 +k1 = 0 +k1.formula = 0 +k2 = 0 +k2.formula = 0 +k3 = 0 +k3.formula = 0 +k4 = 0 +k4.formula = 0 +k5 = 0 +k5.formula = 0 +k6 = 0 +k6.formula = History_Size +k7 = 10 +k7.formula = 10 +k8 = 4 +k8.formula = 4 +k9 = 0 +k9.formula = 0 +k10 = 8 +k10.formula = 8 +k11 = 0 +k11.formula = 0 +k12 = 0 +k12.formula = 0 +k13 = 16 +k13.formula = 16 +k14 = 2 +k14.formula = 2 +k15 = 8 +k15.formula = 8 +k16 = 0.05 +k16.formula = 0.05 +k17 = 0.05 +k17.formula = 0.05 +k18 = 6 +k18.formula = 6 +k19 = 50 +k19.formula = 50 diff --git a/kx_tools/kdesc.h b/kx_tools/kdesc.h new file mode 100644 index 0000000..022364f --- /dev/null +++ b/kx_tools/kdesc.h @@ -0,0 +1,23 @@ +enum K_Synhro { + Min_dt, //f 4 + Max_dt, //f 25 + Base_Variance, //f 10. + Max_Variance, //f 100. + History_Size, //f 8 + Min_Rec_Count_Calc, //f 3 + Collapse_Max_Speed, //f 10 + Collapse_Max_Pos, //f 10 + Missed_Delete_Detected_All, //f 4 + Missed_Delete_Detected_Cont, //f 0 + Missed_Delete_New_All, //f 8 + Missed_Delete_New_Cont, //f 0 + Missed_Delete_Confirmed_All, //f 0 + Missed_Delete_Confirmed_Cont, //f 16 + Change_Type_to_New, //f 2 + Change_Type_to_Confirmed, //f 8 + WLS_EMA_a, //f 0.05 + Impulse, //f 0.05 + Cycle_da, //f 6. + Max_LID, //f 50. + Detects_Timeout, //f 200. +}; diff --git a/kx_tools/kx_coeffs.cpp b/kx_tools/kx_coeffs.cpp new file mode 100644 index 0000000..6f78192 --- /dev/null +++ b/kx_tools/kx_coeffs.cpp @@ -0,0 +1,185 @@ +#include "kx_coeffs.h" +#include "kx_protocol_x.h" + +double X[KX_X_COUNT]; +PIVector K; + + +KX_Coefficients::KX_Coefficients(const PIString & config, const PIString & name, bool _pult) { + setName("kx_coeffs"); + PIConfig conf(config, PIIODevice::ReadOnly); + fname = conf.getValue(name).getValue("file", "k.dat"); + readCoeffs(); + int ns = piMaxi(conf.getValue(name).getValue("count", 0), K.size_s()); + if (ns > K.size_s()) { + K.resize(ns, 0.f); + formulas.resize(ns); + writeCoeffs(); + } + config_ = config; + name_ = name; + pult_ = _pult; + k_protocol = 0; + renew(); + //readCoeffs(); +} + + +KX_Coefficients::~KX_Coefficients() { + stop(); + k_protocol->stop(); + delete k_protocol; +} + + +void KX_Coefficients::readCoeffs() { + { + PIConfig conf(fname, PIIODevice::ReadOnly); + int cnt = conf.rootEntry().childCount(); + K.resize(cnt); + formulas.resize(cnt); + PIString kn, cf; + for (int i = 0; i < cnt; i++) { + kn = "k" + PIString::fromNumber(i); + K[i] = (double)conf.getValue(kn, 0.f); + cf = conf.getValue(kn + ".formula", ""); + if (cf.isEmpty()) cf = PIString::fromNumber(K[i]); + formulas[i] = cf; + } + } + k_content = PIFile(fname, PIIODevice::ReadOnly).readAll(); + //piCout << k_content.size(); + piCoutObj << "Readed" << K.size_s() << "coefficients in" << k_content.size_s() << "bytes"; + coeffs_cnt = K.size_s(); +} + + +void KX_Coefficients::writeCoeffs() { + PIFile::remove(fname); + PIFile conf(fname, PIIODevice::ReadWrite); + //conf.clear(); + for (int i = 0; i < K.size_s(); i++) { + conf << "k" + PIString::fromNumber(i) << " = " << PIString::fromNumber(K[i]).replaceAll(",", ".") << "\n"; + conf << "k" + PIString::fromNumber(i) << ".formula = " << formulas[i] << "\n"; + } + //conf.close(); + //conf.writeAll(); + k_content = conf.readAll(); + //piCout << k_content.size(); + piCoutObj << "Written" << K.size_s() << "coefficients in" << k_content.size_s() << "bytes"; + coeffs_cnt = K.size_s(); +} + + +void KX_Coefficients::sendCoeffs() { + stop(); + int curcnt, pcnt = (k_content.size_s() - 1) / __BYTES_IN_PACKET + 1; + k_protocol->to_k.full_count = k_content.size_s(); + for (int i = 0; i < pcnt; i++) { + k_protocol->to_k.first_index = i * __BYTES_IN_PACKET; + if (i == pcnt - 1) curcnt = k_content.size_s() % __BYTES_IN_PACKET; + else curcnt = __BYTES_IN_PACKET; + //cout << "send " << curcnt << " coeffs\n"; + k_protocol->to_k.count = curcnt; + memcpy(k_protocol->to_k.coeffs, k_content.data(k_protocol->to_k.first_index), curcnt); + //for (int j = 0; j < curcnt; j++) k_protocol->to_k.coeffs[j] = K.at(k_protocol->to_k.first_index + j); + k_protocol->send(); + } + //cout << "waiting for commit ...\n"; + waitingCommit = true; + tm.reset(); + start(10); +} + + +void KX_Coefficients::receiveCoeffs() { + stop(); + k_protocol->to_k.full_count = k_protocol->to_k.first_index = k_protocol->to_k.count = -6; + k_protocol->send(); + //cout << "request send\n"; + //cout << "waiting for receive ...\n"; + waitingCommit = false; + tm.reset(); + start(10); +} + + +void KX_Coefficients::received(bool correct) { + //cout << "kpi received " << correct << endl; + if (!correct) return; + k_syns = k_protocol->from_k; + if (waitingCommit) { + if (k_syns.first_index != -1 || + k_syns.full_count != -1 || + k_syns.count != -k_content.size_s()) return; + //cout << "commit received\n"; + waitingCommit = false; + stop(); + //cout << "send succeed\n"; + //emit sendSucceed(); + sendSucceed(); + return; + } else { + if (k_syns.first_index == -6 && k_syns.full_count == -6 && k_syns.count == -6) { + //cout << "request received\n"; + sendCoeffs(); + return; + }; + } + if (k_syns.first_index == 0) { + //cout << "first receive\n"; + k_tmp.resize(k_syns.full_count); + received_cnt = 0; + } + //for (int i = 0; i < k_syns.count; i++) K.at(k_syns.first_index + i) = k_syns.coeffs[i]; + memcpy(k_tmp.data(k_syns.first_index), k_syns.coeffs, k_syns.count); + received_cnt += k_syns.count; + tm.reset(); + //cout << "received " << k_syns.count << " bytes with " << k_syns.first_index << " first\n"; + if (received_cnt < k_syns.full_count) return; + //cout << "finally received " << received_cnt << " bytes\n"; + stop(); + PIFile::remove(fname); + PIFile conf(fname, PIIODevice::ReadWrite); + conf.write(k_tmp.data(), k_tmp.size_s()); + conf.close(); + readCoeffs(); + //writeCoeffs(); + k_protocol->to_k.full_count = k_protocol->to_k.first_index = -1; + k_protocol->to_k.count = -received_cnt; + k_protocol->send(); + waitingCommit = false; + //emit receiveSucceed(); + receiveSucceed(); + //cout << "receive succeed\n"; +} + + +void KX_Coefficients::renew() { + if (k_protocol != 0) { + k_protocol->stop(); + delete k_protocol; + } + k_protocol = new __KPi(config_, name_, pult_); + CONNECT1(void, bool, k_protocol, received, this, received) + waitingCommit = false; +} + + +void KX_Coefficients::tick(void * , int ) { + //piCout << "timer" << tm.elapsed_s(); + if (tm.elapsed_s() < 2.) return; + if (waitingCommit) { + //cout << "commit timeout\n"; + //cout << "send failed\n"; + //emit sendFailed(); + sendFailed(); + } else { + //cout << "receive timeout\n"; + //cout << "receive failed\n"; + //emit receiveFailed(); + receiveFailed(); + } + waitingCommit = false; + stop(); +} diff --git a/kx_tools/kx_coeffs.h b/kx_tools/kx_coeffs.h new file mode 100644 index 0000000..90cb81b --- /dev/null +++ b/kx_tools/kx_coeffs.h @@ -0,0 +1,93 @@ +#ifndef KX_COEFFS_H +#define KX_COEFFS_H + +#include + +#define __BYTES_IN_PACKET 4000 + +extern PIVector K; + +class __KPi: public PIProtocol +{ + PIOBJECT_SUBCLASS(__KPi, PIProtocol) +public: +#pragma pack (push, 1) + struct KX_K_Sync { + uchar type; + uchar addr_to; + int count; + int full_count; + int first_index; + uchar coeffs[__BYTES_IN_PACKET]; + uint checksum; + }; +#pragma pack (pop) + __KPi(const PIString & config, const PIString & name, bool _pult = false): PIProtocol(config, name, &from_k, 2, &(from_k.count), sizeof(from_k) - 2, &to_k, sizeof(to_k)) { + PIConfig conf(config, PIIODevice::ReadOnly); + PIConfig::Entry ce = conf.getValue(name);-- + to_k.type = from_k.type = ce.getValue("type", 0xA); + to_k.addr_to = ce.getValue("addr_k", 0x15); + from_k.addr_to = ce.getValue("addr_pult", 0x75); + if (_pult) piSwap(to_k.addr_to, from_k.addr_to); + packetExtractor()->setHeader(PIByteArray(&from_k, 2)); + start(); + } + KX_K_Sync to_k, from_k; +private: + bool validate() { + return (from_k.checksum == checksum_i(&from_k, sizeof(from_k) - 4)); + } + bool aboutSend() { + to_k.checksum = checksum_i(&to_k, sizeof(to_k) - 4); + return true; + } +}; + + +class KX_Coefficients: public PITimer +{ + PIOBJECT_SUBCLASS(KX_Coefficients, PITimer) + friend class KX_Pult; +public: + KX_Coefficients(const PIString & config, const PIString & name = "k", bool _pult = false); + ~KX_Coefficients(); + + void readCoeffs(); + void writeCoeffs(); + + void sendCoeffs(); + void receiveCoeffs(); + + bool isReady() const {return !waitingCommit;} + const PIString & fileName() const {return fname;} + const PIString * fileName_ptr() const {return &fname;} + int coeffsCount() {coeffs_cnt = K.size_s(); return coeffs_cnt;} + const int * coeffsCount_ptr() const {return &coeffs_cnt;} + + const PIString & formula(int index) const {return formulas[index];} + void setFormula(int index, const PIString & f) {formulas[index] = f;} + + EVENT(sendSucceed) + EVENT(sendFailed) + EVENT(receiveSucceed) + EVENT(receiveFailed) + + + __KPi * k_protocol; + +private: + EVENT_HANDLER1(void, received, bool, correct); + void renew(); + void tick(void *, int); + + __KPi::KX_K_Sync k_syns; + bool pult_, waitingCommit; + int received_cnt, coeffs_cnt; + PIString fname, config_, name_; + PIStringList formulas; + PIByteArray k_content, k_tmp; + PITimeMeasurer tm; + +}; + +#endif // KX_COEFFS_H diff --git a/kx_tools/kx_protocol_x.h b/kx_tools/kx_protocol_x.h new file mode 100644 index 0000000..f87e1d6 --- /dev/null +++ b/kx_tools/kx_protocol_x.h @@ -0,0 +1,121 @@ +#ifndef KX_PROTOCOL_X_H +#define KX_PROTOCOL_X_H + +#include "piprotocol.h" + +#define KX_X_PACKET_NUM 20 +#define KX_X_COUNT 16384 + +extern double X[KX_X_COUNT]; + + +#pragma pack (push, 1) + + +struct KX_X_Header { + uchar type; + uchar addr_to; +}; + + + +struct KX_X_Numbers: KX_X_Header { + int x_num[KX_X_PACKET_NUM]; + uint checksum; +}; + + +struct KX_X_Data: KX_X_Header { + int x_num[KX_X_PACKET_NUM]; + double x_data[KX_X_PACKET_NUM]; + uint checksum; +}; + + +#pragma pack (pop) + + +// Client side + +class KX_Protocol_X: public PIProtocol +{ + PIOBJECT_SUBCLASS(KX_Protocol_X, PIProtocol) +public: + KX_Protocol_X(const PIString & config, const PIString & name = "x"): PIProtocol(config, name, &from_buff, 2, &(from_buff.x_num[0]), sizeof(from_buff) - 2, &to_pult, sizeof(to_pult)) { + PIConfig conf(config, PIIODevice::ReadOnly); + PIConfig::Entry ce = conf.getValue(name); + to_pult.type = from_buff.type = ce.getValue("type", 0xB); + to_pult.addr_to = ce.getValue("addr_pult", 0x15); + from_buff.addr_to = ce.getValue("addr_x", 0x75); + from_pult = from_buff; + for (int i = 0; i < KX_X_PACKET_NUM; ++i) + to_pult.x_num[i] = -1; + packetExtractor()->setSplitMode(PIPacketExtractor::Header); + packetExtractor()->setHeader(PIByteArray(&from_buff, 2)); + start(); + } + + KX_X_Numbers from_pult; + KX_X_Data to_pult; + +private: + bool validate() { + if (checksum_i(&from_buff, sizeof(from_buff) - 4) != from_buff.checksum) return false; + from_pult = from_buff; + return true; + } + bool aboutSend() { + for (int i = 0; i < KX_X_PACKET_NUM; ++i) { + to_pult.x_num[i] = from_pult.x_num[i]; + to_pult.x_data[i] = X[from_pult.x_num[i]]; + } + to_pult.checksum = checksum_i(&to_pult, sizeof(to_pult) - 4); + return true; + } + + KX_X_Numbers from_buff; + +}; + + + +// Pult side + +class __KX_Protocol_X: public PIProtocol +{ + PIOBJECT_SUBCLASS(__KX_Protocol_X, PIProtocol) +public: + __KX_Protocol_X(const PIString & config, const PIString & name): PIProtocol(config, name, &from_buff, 2, &(from_buff.x_num[0]), sizeof(from_buff) - 2, &to_x, sizeof(to_x)) { + PIConfig conf(config, PIIODevice::ReadOnly); + PIConfig::Entry ce = conf.getValue(name); + to_x.type = from_buff.type = ce.getValue("type", 0xB); + to_x.addr_to = ce.getValue("addr_x", 0x75); + from_buff.addr_to = ce.getValue("addr_pult", 0x15); + from_x = from_buff; + for (int i = 0; i < KX_X_PACKET_NUM; ++i) + to_x.x_num[i] = -1; + packetExtractor()->setSplitMode(PIPacketExtractor::Header); + packetExtractor()->setHeader(PIByteArray(&from_buff, 2)); + start(); + } + + KX_X_Data from_x; + KX_X_Numbers to_x; + +private: + bool validate() { + if (checksum_i(&from_buff, sizeof(from_buff) - 4) != from_buff.checksum) return false; + from_x = from_buff; + return true; + } + bool aboutSend() { + to_x.checksum = checksum_i(&to_x, sizeof(to_x) - 4); + return true; + } + + KX_X_Data from_buff; + +}; + + +#endif // KX_PROTOCOL_X_H diff --git a/kx_tools/kx_pult.conf b/kx_tools/kx_pult.conf new file mode 100644 index 0000000..9f3d06c --- /dev/null +++ b/kx_tools/kx_pult.conf @@ -0,0 +1,11 @@ +title = Synchro-a #s + +k.ip = 127.0.0.1 #i +k.sender.port = 26102 #n +k.receiver.port = 26101 #n + +x.ip = 127.0.0.1 #i +x.sender.port = 16102 #n +x.receiver.port = 16101 #n +x.frequency = 20 #f +x.output_dir = . #D diff --git a/kx_tools/kx_pult.cpp b/kx_tools/kx_pult.cpp new file mode 100644 index 0000000..f5a0c0e --- /dev/null +++ b/kx_tools/kx_pult.cpp @@ -0,0 +1,766 @@ +#include +#include +#include +#include "kx_pult.h" +#include "ui_kx_pult.h" +#include "piqt.h" +#include "qpiconfig.h" + + +bool isNormalDouble(const double & v) { +#ifdef WINDOWS + return true; +#else + return !isnan(v) && !isinf(v); +#endif +} + + +XCheck::XCheck(int index): QWidget() { + index_ = index; + setProperty("index", index); + setMouseTracking(true); + check.setText(QString::number(index + 1) + " "); + check.setAutoFillBackground(true); + spin.setMaximum(99999); + QBoxLayout * l = new QBoxLayout(QBoxLayout::LeftToRight); + l->setMargin(0); + l->setSpacing(2); + l->addWidget(&check); + l->addWidget(&spin); + setLayout(l); + //check.installEventFilter(this); + //spin.installEventFilter(this); + connect(&spin, SIGNAL(valueChanged(int)), this, SLOT(spinChanged(int))); + connect(&check, SIGNAL(toggled(bool)), this, SLOT(checkChanged_(bool))); +} + + +bool XCheck::eventFilter(QObject * o, QEvent * e) { + if (e->type() == QEvent::Enter) + qApp->postEvent(this, new QEvent(e->type())); + return QWidget::eventFilter(o, e); +} + + + + +KX_Pult::KX_Pult(): QMainWindow(), config_("kx_pult.conf"), name_("x"), config(piqt(config_), QIODevice::ReadWrite), coeffs(config_, "k", true) { + //cout << sizeof(coeffsK.k_protocol->to_k) << endl; + ui = new Ui::KX_Pult(); + ui->setupUi(this); + ui->configWidget->setQPIConfig(&config); + ui->configWidget->expandAll(); + ui->list->viewport()->installEventFilter(this); + ui->treeK->viewport()->installEventFilter(this); + log_menu.addAction(ui->actionClear); + prot_x = 0; + session.setFile("session_KX_Pult.conf"); + session.addEntry(this); + session.addEntry(ui->tabWidget); + session.addEntry(ui->checkKHideEmpty); + session.addEntry(ui->checkKHideNormal); + session.addEntry(ui->checkKHideExpressions); + session.addEntry(ui->checkKAutoCalculate); + needWrite = isPause = false; + timer = 0; + //x.resize(KX_X_PACKET_NUM); + //k.resize(K_NUM); + QPalette pal = palette(); + QColor col; + ui->graphic->setGraphicsCount(0); + for (int i = 0; i < KX_X_PACKET_NUM; ++i) { + XCheck * xc = new XCheck(i); + xc->installEventFilter(this); + connect(xc, SIGNAL(valueChanged(int, int)), this, SLOT(changedX(int,int))); + connect(xc, SIGNAL(checkChanged(int, bool)), this, SLOT(toggledX(int, bool))); + col = QColor::fromHsv(360 / KX_X_PACKET_NUM * i, 255, 200); + pal.setColor(QPalette::Button, col); + pal.setColor(QPalette::Window, col); + pal.setColor(QPalette::WindowText, invertColor(col)); + xc->check.setPalette(pal); + ui->graphic->addGraphic(QString::number(i), col); + ui->graphic->setGraphicVisible(false, i); + checks << xc; + ((QGridLayout * )(ui->widgetChecks->layout()))->addWidget(xc, (i / 10) * 2, i % 10); + QLabel * lbl = new QLabel("0"); lbl->setAlignment(Qt::AlignVCenter | Qt::AlignLeft); + values << lbl; + ((QGridLayout * )(ui->widgetChecks->layout()))->addWidget(lbl, (i / 10) * 2 + 1, i % 10); + //xc->show(); + } + renew(); + icon_record = QIcon(":/icons/media-record.png"); + icon_stop = QIcon(":/icons/media-playback-stop.png"); + outdir = dir.absolutePath(); + if (!dir.exists()) dir.mkdir(outdir); + outdir += "/"; + ui->treeK->setColumnWidth(0, 60); + ui->treeK->setColumnWidth(1, 250); + ui->treeK->setColumnWidth(3, 100); + ui->treeK->setColumnWidth(4, 100); + //ui->table->setK(coeffsK.k()->data(), coeffsK.count()); + ui->spinSize->setValue(K.size_s()); + addToList(trUtf8("Read K file \"%1\": %2 coeffs, %3 bytes").arg(PI2QString(coeffs.fileName())).arg(K.size_s()).arg(coeffs.k_content.size_s()), Qt::darkMagenta); + CONNECT(void, &coeffs, sendFailed, this, pip_sendFailed); + CONNECT(void, &coeffs, sendSucceed, this, pip_sendSucceed); + CONNECT(void, &coeffs, receiveFailed, this, pip_receiveFailed); + CONNECT(void, &coeffs, receiveSucceed, this, pip_receiveSucceed); + connect(this, SIGNAL(q_k_sendFailed()), this, SLOT(k_sendFailed()), Qt::QueuedConnection); + connect(this, SIGNAL(q_k_sendSucceed()), this, SLOT(k_sendSucceed()), Qt::QueuedConnection); + connect(this, SIGNAL(q_k_receiveFailed()), this, SLOT(k_receiveFailed()), Qt::QueuedConnection); + connect(this, SIGNAL(q_k_receiveSucceed()), this, SLOT(k_receiveSucceed()), Qt::QueuedConnection); + connect(&timer_diag, SIGNAL(timeout()), this, SLOT(updateDiag())); + connect(&session, SIGNAL(loading(QPIConfig&)), this, SLOT(loading(QPIConfig&))); + connect(&session, SIGNAL(saving(QPIConfig&)), this, SLOT(saving(QPIConfig&))); + connect(ui->checkKHideEmpty, SIGNAL(toggled(bool)), this, SLOT(filterTree())); + connect(ui->checkKHideNormal, SIGNAL(toggled(bool)), this, SLOT(filterTree())); + connect(ui->checkKHideExpressions, SIGNAL(toggled(bool)), this, SLOT(filterTree())); + connect(ui->lineKSearch, SIGNAL(textChanged(QString)), this, SLOT(filterTree())); + session.load(); + updateKDesc(); + timer_diag.start(40); + timer_update = startTimer(25); +} + + +KX_Pult::~KX_Pult() { + session.save(); +} + + +void KX_Pult::loading(QPIConfig & conf) { + kdesc_file = conf.getValue("kdesc_file").stringValue(); +} + + +void KX_Pult::saving(QPIConfig & conf) { + conf.setValue("kdesc_file", kdesc_file); +} + + +bool KX_Pult::eventFilter(QObject * o, QEvent * e) { + if (o == ui->list->viewport()) { + if (e->type() == QEvent::ContextMenu) { + clear_target = 0; + log_menu.popup(((QContextMenuEvent*)e)->globalPos()); + } + return QMainWindow::eventFilter(o, e); + } + if (o == ui->treeK->viewport()) { + if (e->type() == QEvent::ContextMenu) { + clear_target = 1; + log_menu.popup(((QContextMenuEvent*)e)->globalPos()); + } + return QMainWindow::eventFilter(o, e); + } + int ind = o->property("index").toInt(); + //qDebug() << "event" << i << e->type(); + switch (e->type()) { + case QEvent::Enter: + ui->graphic->setAutoUpdate(false); + for (int i = 0; i < KX_X_PACKET_NUM; ++i) + ui->graphic->setGraphicLineWidth(ind == i ? 3. : 1., i); + ui->graphic->setAutoUpdate(true); + ui->graphic->update(); + break; + case QEvent::Leave: + ui->graphic->setAutoUpdate(false); + for (int i = 0; i < KX_X_PACKET_NUM; ++i) + ui->graphic->setGraphicLineWidth(1., i); + ui->graphic->setAutoUpdate(true); + ui->graphic->update(); + break; + default: break; + } + return QMainWindow::eventFilter(o, e); +} + + +void KX_Pult::timerEvent(QTimerEvent * e) { + if (e->timerId() == timer_update) { + if (need_update) { + need_update = false; + ui->graphic->updateGraphics(); + } + } + if (e->timerId() == timer) { + static QString sPI = QString::number(atan(1) * 4., 'f', 14).leftJustified(14); + static int cnt = 0; + int si = qMax(cnt - 6, 0); + cnt = (++cnt) % 23; + ui->labelWait->setText(QString(si, QChar(' ')) + sPI.mid(cnt - 6, 6).trimmed()); + if (!coeffs.isReady()) return; + //ui->table->setK(coeffsK.k()->data(), coeffsK.count()); + //ui->table->showK(); + } +} + + +void KX_Pult::setControlsEnable(bool enable) { + foreach (XCheck * i, checks) + i->setEnabled(enable); + ui->buttonShowAll->setEnabled(enable); + ui->buttonHideAll->setEnabled(enable); +} + + +void KX_Pult::setX(const KX_X_Data & data) { + for (int i = 0; i < KX_X_PACKET_NUM; ++i) { + if (!isNormalDouble(data.x_data[i])) continue; + ui->graphic->addPoint(data.x_data[i], i, false); + values[i]->setText(QString("(%1): %2").arg(data.x_num[i]).arg(data.x_data[i])); + } + if (!isPause) { + need_update = true; + } + if (!needWrite) return; + stream << QString::number(tm.elapsed() / 1000., 'f', 3) << " " << QTime::currentTime().toString("hh:mm:ss") << " " << wcnt++; + for (int i = 0; i < KX_X_PACKET_NUM; ++i) + stream << " " << QString::number(data.x_data[i], 'f', 4); + stream << "\n"; +} + + +void KX_Pult::addToList(const QString & s, const QColor & c) { + ui->list->addItem(QDateTime::currentDateTime().toString("dd/MM/yyyy hh:ss - ") + s); + ui->list->item(ui->list->count() - 1)->setTextColor(c); + ui->list->scrollToBottom(); +} + + +void KX_Pult::on_buttonRecord_clicked() { + static bool isRec = false; + int cinc = 0; + QString str; + isRec = !isRec; + setControlsEnable(!isRec); + if (isRec) { + tm.restart(); + file.close(); + file.setFileName(outdir + getNewFileName(cinc)); + while (file.exists()) + file.setFileName(outdir + getNewFileName(cinc++)); + file.open(QIODevice::ReadWrite); + stream.setDevice(&file); + stream << "T V C"; + for (int i = 0; i < KX_X_PACKET_NUM; ++i) + stream << " X" + QString::number(checks[i]->spin.value()); + stream << "\n"; + wcnt = 0; + needWrite = true; + ui->buttonRecord->setText(trUtf8("Finish record")); + ui->buttonRecord->setIcon(icon_stop); + emit recordStarted(QFileInfo(file).completeBaseName()); + } else { + needWrite = false; + stream.setDevice(0); + file.close(); + ui->buttonRecord->setText(trUtf8("Start record")); + ui->buttonRecord->setIcon(icon_record); + emit recordStopped(QFileInfo(file).completeBaseName()); + } +} + + +void KX_Pult::on_actionClear_triggered() { + switch (clear_target) { + case 0: + ui->list->clear(); + break; + case 1: + clearSelected(); + break; + default: break; + } +} + + +void KX_Pult::clearSelected() { + QList si = ui->treeK->selectedItems(); + ui->treeK->setUpdatesEnabled(false); + ui->treeK->blockSignals(true); + foreach (QTreeWidgetItem * i, si) { + int ki = i->text(0).toInt(); + i->setText(2, ""); + coeffs.setFormula(ki, ""); + } + ui->treeK->blockSignals(false); + ui->treeK->setUpdatesEnabled(true); + if (ui->checkKAutoCalculate->isChecked()) { + QApplication::processEvents(); + calculate(); + } +} + + +QString KX_Pult::typeName(const QString & n) const { + if (n.isEmpty()) return ""; + switch (n[0].toLatin1()) { + case 'l': return trUtf8("list"); break; + case 'b': return trUtf8("bool"); break; + case 'n': return trUtf8("int"); break; + case 'f': return trUtf8("double"); break; + case 'c': return trUtf8("color"); break; + case 'r': return trUtf8("rect"); break; + case 'a': return trUtf8("rect"); break; + case 'p': return trUtf8("point"); break; + case 'v': return trUtf8("vector"); break; + case 'i': return trUtf8("IP"); break; + case 'e': return trUtf8("enum"); break; + case 'F': return trUtf8("file"); break; + case 'D': return trUtf8("dir"); break; + } + return ""; +} + + +void KX_Pult::received(bool ok) { + if (!ok) return; + setX(prot_x->from_x); +} + + +void KX_Pult::on_treeK_itemClicked(QTreeWidgetItem * item, int column) { + Qt::ItemFlags f = Qt::ItemIsEnabled | Qt::ItemIsSelectable; + if (column == 2) f |= Qt::ItemIsEditable; + item->setFlags(f); +} + + +void KX_Pult::on_treeK_itemChanged(QTreeWidgetItem * item, int column) { + if (column != 2) return; + int ki = item->text(0).toInt(); + coeffs.setFormula(ki, piqt(item->text(column))); + if (ui->checkKAutoCalculate->isChecked()) + calculate(); +} + + +QString KX_Pult::getNewFileName(int inc) { + dir.refresh(); + dir.setNameFilters(QStringList("Experiment_*.txt")); + return "Experiment_" + QDateTime::currentDateTime().toString("dd_MM_yy__hh_mm_ss") + "__" + + QString::number(dir.entryList().count() + inc) + ".txt"; +} + + +void KX_Pult::on_buttonSendK_clicked() { + on_buttonWrite_clicked(); + coeffs.sendCoeffs(); + if (timer != 0) killTimer(timer); + timer = startTimer(100); +} + + +void KX_Pult::on_buttonReceiveK_clicked() { + coeffs.receiveCoeffs(); + if (timer != 0) killTimer(timer); + timer = startTimer(100); +} + + +void KX_Pult::on_buttonShowAll_clicked() { + for (int i = 0; i < KX_X_PACKET_NUM; ++i) { + checks[i]->check.setChecked(true); + //ui->graphic->setGraphicVisible(true, i); + } +} + + +void KX_Pult::on_buttonHideAll_clicked() { + for (int i = 0; i < KX_X_PACKET_NUM; ++i) { + checks[i]->check.setChecked(false); + //ui->graphic->setGraphicVisible(false, i); + } +} + + +void KX_Pult::on_buttonRead_clicked() { + coeffs.readCoeffs(); + addToList(trUtf8("Read K file \"%1\": %2 coeffs, %3 bytes").arg(PI2QString(coeffs.fileName())).arg(K.size_s()).arg(coeffs.k_content.size_s()), Qt::darkMagenta); + updateTree(); +} + + +void KX_Pult::on_buttonWrite_clicked() { + coeffs.writeCoeffs(); + addToList(trUtf8("Write K file \"%1\": %2 coeffs, %3 bytes").arg(PI2QString(coeffs.fileName())).arg(K.size_s()).arg(coeffs.k_content.size_s()), Qt::darkMagenta); +} + + +void KX_Pult::on_buttonResize_clicked() { + K.resize(ui->spinSize->value()); + coeffs.formulas.resize(ui->spinSize->value()); + ui->spinSize->setStyleSheet(""); + updateTree(); +} + + +void KX_Pult::on_buttonSetDesc_clicked() { + QString ret = QFileDialog::getOpenFileName(this, trUtf8("Select *.h file with K description"), kdesc_file, "C/C++ header files(*.h *.hpp);;All files(*)"); + if (ret.isEmpty()) return; + kdesc_file = QDir::current().relativeFilePath(ret); + updateKDesc(true); +} + + +void KX_Pult::on_spinSize_valueChanged(int) { + ui->spinSize->setStyleSheet(""); +} + + +void KX_Pult::k_sendFailed() { + stopWait(); + addToList(trUtf8("K not sended"), Qt::darkRed); +} + + +void KX_Pult::k_sendSucceed() { + stopWait(); + addToList(trUtf8("K sended"), Qt::darkGreen); +} + + +void KX_Pult::k_receiveFailed() { + stopWait(); + addToList(trUtf8("K not received"), Qt::darkRed); +} + + +void KX_Pult::k_receiveSucceed() { + stopWait(); + addToList(trUtf8("K received"), Qt::darkGreen); + addToList(trUtf8("Write K file \"%1\": %2 coeffs, %3 bytes").arg(PI2QString(coeffs.fileName())).arg(K.size_s()).arg(coeffs.k_content.size_s()), Qt::darkMagenta); + ui->spinSize->setValue(K.size_s()); + updateTree(); + //ui->table->setK(coeffsK.k()->data(), coeffsK.count()); +} + + +void KX_Pult::on_spinBuffer_editingFinished() { + ui->graphic->setHistorySize(ui->spinBuffer->value()); +} + + +void KX_Pult::stopWait() { + killTimer(timer); + timer = 0; + ui->labelWait->setText(" "); +} + + +void KX_Pult::updateGraph() { + ui->graphic->updateGraphics(); +} + + +void KX_Pult::updateDiag() { + + ui->labelKReceiver->setText(piqt(coeffs.k_protocol->receiverDeviceName() + " - " + coeffs.k_protocol->receiverDeviceState())); + ui->labelKSender->setText(piqt(coeffs.k_protocol->senderDeviceName())); + ui->spinKSended->setValue(coeffs.k_protocol->sendCount()); + ui->spinKReceived->setValue(coeffs.k_protocol->receiveCount()); + ui->spinKWrong->setValue(coeffs.k_protocol->wrongCount()); + ui->spinKMissed->setValue(coeffs.k_protocol->missedCount()); + ui->labelKType->setText("0x" + QString::number(coeffs.k_protocol->from_k.type, 16).toUpper().rightJustified(2, '0')); + ui->labelKAddrPult->setText("0x" + QString::number(coeffs.k_protocol->from_k.addr_to, 16).toUpper().rightJustified(2, '0')); + ui->labelKAddr->setText("0x" + QString::number(coeffs.k_protocol->to_k.addr_to, 16).toUpper().rightJustified(2, '0')); + + ui->labelXReceiver->setText(piqt(prot_x->receiverDeviceName() + " - " + prot_x->receiverDeviceState())); + ui->labelXSender->setText(piqt(prot_x->senderDeviceName())); + ui->spinXSended->setValue(prot_x->sendCount()); + ui->spinXReceived->setValue(prot_x->receiveCount()); + ui->spinXWrong->setValue(prot_x->wrongCount()); + ui->spinXMissed->setValue(prot_x->missedCount()); + ui->labelXType->setText("0x" + QString::number(prot_x->from_x.type, 16).toUpper().rightJustified(2, '0')); + ui->labelXAddrPult->setText("0x" + QString::number(prot_x->from_x.addr_to, 16).toUpper().rightJustified(2, '0')); + ui->labelXAddr->setText("0x" + QString::number(prot_x->to_x.addr_to, 16).toUpper().rightJustified(2, '0')); + +} + + +void KX_Pult::updateKDesc(bool ask_move) { + kdesc.clear(); + QFile f(kdesc_file); + if (!f.open(QIODevice::ReadOnly)) { + updateTree(); + addToList(trUtf8("Update descriptions from \"%1\": error").arg(kdesc_file), Qt::darkRed); + return; + } + addToList(trUtf8("Update descriptions from \"%1\"").arg(kdesc_file), Qt::darkMagenta); + QTextStream s(&f); + int cind = -1; + bool found = false; + //qDebug() << "\nparse" << kdesc_file; + while (!s.atEnd()) { + QString line = s.readLine().trimmed(), num, name, type, comment; + int i = line.indexOf("//"); + if (i >= 0) { + comment = line.right(line.length() - i - 2); + type = comment.left(1); + comment = comment.right(comment.length() - 1).trimmed(); + line = line.left(i).trimmed(); + } + if (line.isEmpty()) continue; + if (line.contains("enum")) { + found = true; + continue; + } + if (!found) continue; + if (line.contains('}')) + break; + line.remove(',').remove(' ').remove('\t'); + i = line.indexOf("="); + if (i >= 0) { + num = line.right(line.length() - i - 1).trimmed(); + line = line.left(i).trimmed(); + } + name = line; + if (num.isEmpty()) + ++cind; + else + cind = Q2PIString(num).toInt(); + KDesc kd; + kd.index = cind; + kd.name = name; + kd.type = type; + kd.comment = comment; + kdesc[kd.index] = kd; + //qDebug() << name << cind << type << comment; + } + cind++; + if (K.size_s() < cind) { + ui->spinSize->setValue(cind); + ui->spinSize->setStyleSheet("background-color: rgb(220, 220, 255);"); + } + bool move = false; + if (ask_move) + move = (QMessageBox::question(this, "KX Pult", "Save values at associated names?", QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes) == QMessageBox::Yes); + updateTree(move); +} + + +bool stringComp(const QString & s1, const QString & s2) { + if (s1.size() != s2.size()) + return s1.size() > s2.size(); + return s1 > s2; +} + + +void KX_Pult::updateTree(bool move) { + int sp = ui->treeK->verticalScrollBar()->value(); + QApplication::setOverrideCursor(Qt::WaitCursor); + //qDebug() << "fill tree ..."; + QMap prev_val; + if (move) { + for (int i = 0; i < ui->treeK->topLevelItemCount(); ++i) { + QTreeWidgetItem * ti = ui->treeK->topLevelItem(i); + if (!ti->text(1).isEmpty()) + prev_val[ti->text(1)] = ti->text(2); + } + } + ui->treeK->clear(); + ui->treeK->setUpdatesEnabled(false); + eval.clearCustomVariables(); + for (int i = 0; i < K.size_s(); ++i) { + QTreeWidgetItem * ti = new QTreeWidgetItem(); + KDesc kd = kdesc[i]; + QString kn = QString("k%1").arg(i); + knames[kn] = i; + knames_sort << kn; + if (eval.content.findVariable(kn) < 0) + eval.content.addVariable(kn, 0., false); + if (!kd.name.isEmpty()) { + knames[kd.name] = i; + knames_sort << kd.name; + eval.content.addVariable(kd.name, 0., false); + } + if (move && !kd.name.isEmpty()) { + if (prev_val.contains(kd.name)) + coeffs.setFormula(i, Q2PIString(prev_val[kd.name])); + } + ti->setText(0, QString::number(i)); + ti->setText(1, kd.name); + ti->setText(2, PI2QString(coeffs.formula(i))); + ti->setText(3, QString::number(K[i])); + ti->setText(4, typeName(kd.type)); + ti->setText(5, kd.comment); + ui->treeK->addTopLevelItem(ti); + } + eval.content.sortVariables(); + //qDebug() << "fill tree ok"; + //qDebug() << "sort ..."; + qSort(knames_sort.begin(), knames_sort.end(), stringComp); + //qDebug() << "names" << knames_sort; + //qDebug() << "sort ok"; + QApplication::restoreOverrideCursor(); + ui->treeK->setUpdatesEnabled(true); + ui->treeK->verticalScrollBar()->setValue(sp); + calculate(); + filterTree(); +} + + +void KX_Pult::filterTree() { + bool he = ui->checkKHideEmpty->isChecked(); + bool hn = ui->checkKHideNormal->isChecked(); + bool hs = ui->checkKHideExpressions->isChecked(); + bool ok = false; + QString fl = ui->lineKSearch->text(); + int lc = ui->treeK->topLevelItemCount(); + for (int i = 0; i < lc; ++i) { + QTreeWidgetItem * ti = ui->treeK->topLevelItem(i); + if (ti->text(1).isEmpty() && he) + ti->setHidden(true); + else + if (fl.isEmpty()) + ti->setHidden(false); + else + ti->setHidden(!ti->text(0).contains(fl, Qt::CaseInsensitive) && + !ti->text(1).contains(fl, Qt::CaseInsensitive) && + !ti->text(2).contains(fl, Qt::CaseInsensitive) && + !ti->text(3).contains(fl, Qt::CaseInsensitive) && + !ti->text(4).contains(fl, Qt::CaseInsensitive)); + if (hn) + if (ti->data(0, Qt::UserRole).toBool()) + ti->setHidden(true); + if (hs) { + ti->data(2, Qt::DisplayRole).toDouble(&ok); + if (!ok) + ti->setHidden(true); + } + } +} + + +void KX_Pult::calculate() { + calculated.clear(); + ui->treeK->setUpdatesEnabled(false); + ui->treeK->blockSignals(true); + QApplication::setOverrideCursor(Qt::WaitCursor); + progress(0, 100); + ui->buttonCalculate->setEnabled(false); + QApplication::processEvents(); + for (int i = 0; i < K.size_s(); ++i) { + ui->treeK->topLevelItem(i)->setToolTip(2, QString()); + ui->treeK->topLevelItem(i)->setToolTip(3, QString()); + } + for (int i = 0; i < K.size_s(); ++i) { + progress(i, K.size_s()); + calculateExpression(i, QVector()); + } + ui->buttonCalculate->setEnabled(true); + ui->progress->setValue(100); + QApplication::restoreOverrideCursor(); + ui->treeK->blockSignals(false); + ui->treeK->setUpdatesEnabled(true); +} + + +bool KX_Pult::calculateExpression(int i, QVector trace) { + if (calculated.contains(i)) return true; + trace << i; + QTreeWidgetItem * ti = ui->treeK->topLevelItem(i); + QString expr = ti->text(2); + //ti->setToolTip(2, QString()); + if (!eval.check(expr)) { + markError(ti, eval.error()); + return false; + } + foreach (const QString & n, knames_sort) { + if (expr.contains(n)) { + int ki = knames.value(n, -1); + if (trace.contains(ki)) { + QString strace; + trace << ki; + for (int j = 0; j < trace.size(); ++j) { + //calculated << trace[j]; + if (j > 0) strace += " -> "; + strace += "k" + QString::number(trace[j]); + } + for (int j = 0; j < trace.size(); ++j) { + QTreeWidgetItem * pti = ui->treeK->topLevelItem(trace[j]); + markError(pti, QString("Circular dependency: %1!").arg(strace)); + } + return false; + } + if (ki < 0) { + markError(ti); + return false; + } + if (calculated.contains(ki)) { + eval.setVariable(n, K[ki]); + } else { + if (calculateExpression(ki, trace)) + eval.setVariable(n, K[ki]); + else { + markError(ti); + return false; + } + } + } + } + markNormal(ti); + calculated << i; + complexd ret = eval.evaluate(); + K[i] = ret.real(); + ti->setText(3, QString::number(K[i])); + return true; +} + + +void KX_Pult::markError(QTreeWidgetItem * item, const QString & tool_tip) { + int cc = item->columnCount(); + for (int i = 0; i < cc; ++i) + item->setBackgroundColor(i, QColor(255, 200, 200)); + if (item->toolTip(2).isEmpty()) + item->setToolTip(2, tool_tip); + if (item->toolTip(3).isEmpty()) + item->setToolTip(3, tool_tip); + item->setData(0, Qt::UserRole, false); + item->setText(3, "Error"); +} + + +void KX_Pult::markNormal(QTreeWidgetItem * item) { + int cc = item->columnCount(); + for (int i = 0; i < cc; ++i) + item->setBackground(i, Qt::NoBrush); + item->setToolTip(2, QString()); + item->setToolTip(3, QString()); + item->setData(0, Qt::UserRole, true); +} + + +void KX_Pult::progress(int val, int max) { + if (ctm.elapsed() < 50) return; + ctm.restart(); + ui->progress->setValue(qRound(val * 100. / max)); + QApplication::processEvents(); +} + + +void KX_Pult::renew() { + addToList(trUtf8("Update settings from \"%1\"").arg(PI2QString(config_)), Qt::darkMagenta); + dir.setPath(config.getValue("x.output_dir", "./Experiments/").stringValue()); + setWindowTitle(config.getValue("title", "Noname").stringValue() + trUtf8(" - KX Pult")); + ui->configWidget->write(); + if (prot_x != 0) { + prot_x->stop(); + delete prot_x; + } + prot_x = new __KX_Protocol_X(config_, name_); + ui->graphic->setAutoXIncrement(prot_x->expectedFrequency() > 0. ? 1. / prot_x->expectedFrequency() : 1.); + coeffs.renew(); + CONNECT1(void, bool, prot_x, received, this, received); +} + + +void KX_Pult::toggledX(int index, bool on) { + ui->graphic->setGraphicVisible(on, index); +} + + +void KX_Pult::changedX(int index, int num) { + prot_x->to_x.x_num[index] = num; +} diff --git a/kx_tools/kx_pult.exe b/kx_tools/kx_pult.exe new file mode 100644 index 0000000000000000000000000000000000000000..3c837b8c487b3f2d6a89ad38bce709f67f653173 GIT binary patch literal 458716 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 HdG!7dI|kiq literal 0 HcmV?d00001 diff --git a/kx_tools/kx_pult.h b/kx_tools/kx_pult.h new file mode 100644 index 0000000..6fa9a38 --- /dev/null +++ b/kx_tools/kx_pult.h @@ -0,0 +1,162 @@ +#ifndef KX_PULT_H +#define KX_PULT_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "kx_coeffs.h" +#include "kx_protocol_x.h" +#include "piqt.h" +#include "session_manager.h" +#include "qpievaluator.h" + + +class XCheck: public QWidget { + Q_OBJECT +public: + explicit XCheck(int index); + QCheckBox check; + QSpinBox spin; +private: + bool eventFilter(QObject * o, QEvent * e); + int index_; +private slots: + void spinChanged(int value) {check.setChecked(true); emit valueChanged(index_, value);} + void checkChanged_(bool value) {emit checkChanged(index_, value);} +signals: + void valueChanged(int index, int value); + void checkChanged(int index, bool on); +}; + + +namespace Ui { + class KX_Pult; +}; + +class KX_Pult: public QMainWindow, public PIObject +{ + Q_OBJECT + PIOBJECT(KX_Pult) +public: + KX_Pult(); + ~KX_Pult(); + +private: + struct KDesc { + KDesc() {index = -1;} + int index; + QString name; + QString type; + QString comment; + QString value; + }; + + bool eventFilter(QObject * o, QEvent * e); + void timerEvent(QTimerEvent * ); + void setControlsEnable(bool enable); + void setX(const KX_X_Data & data); + void addToList(const QString & s, const QColor & c); + QString getNewFileName(int inc); + QColor invertColor(QColor col) {return QColor(255 - col.red(), 255 - col.green(), 255 - col.blue());} + void stopWait(); + bool calculateExpression(int i, QVector trace); + void markError(QTreeWidgetItem * item, const QString & tool_tip = QString()); + void markNormal(QTreeWidgetItem * item); + void progress(int val, int max); + void clearSelected(); + QString typeName(const QString & n) const; + + EVENT_HANDLER1(void, received, bool, ok); + EVENT_HANDLER(void, pip_sendFailed) {emit q_k_sendFailed();} + EVENT_HANDLER(void, pip_sendSucceed) {emit q_k_sendSucceed();} + EVENT_HANDLER(void, pip_receiveFailed) {emit q_k_receiveFailed();} + EVENT_HANDLER(void, pip_receiveSucceed) {emit q_k_receiveSucceed();} + + QVector checks; + QVector values; + + Ui::KX_Pult * ui; + PIString config_, name_; + QDir dir; + QString outdir, kdesc_file; + QFile file; + QTime tm, ctm; + QIcon icon_record, icon_stop; + QTextStream stream; + QTimer timer_diag; + QMap kdesc; + QMap knames; + QSet calculated; + QStringList knames_sort; + QPIEvaluator eval; + SessionManager session; + QPIConfig config; + QMenu log_menu; + //QVector k, x; + KX_Coefficients coeffs; + __KX_Protocol_X * prot_x; + int csize, wcnt, timer, timer_update, clear_target; + bool needWrite, isPause, need_update; + +private slots: + void loading(QPIConfig & conf); + void saving(QPIConfig & conf); + void updateGraph(); + void updateDiag(); + void updateKDesc(bool ask_move = false); + void updateTree(bool move = false); + void filterTree(); + void calculate(); + void renew(); + void toggledX(int index, bool on); + void changedX(int index, int num); + void k_sendFailed(); + void k_sendSucceed(); + void k_receiveFailed(); + void k_receiveSucceed(); + void on_spinBuffer_editingFinished(); + void on_buttonSendK_clicked(); + void on_buttonReceiveK_clicked(); + void on_buttonShowAll_clicked(); + void on_buttonHideAll_clicked(); + void on_buttonRead_clicked(); + void on_buttonWrite_clicked(); + void on_buttonResize_clicked(); + void on_buttonSetDesc_clicked(); + void on_buttonReparseDesc_clicked() {updateKDesc(true);} + void on_buttonCalculate_clicked() {calculate();} + void on_buttonApply_clicked() {renew();} + void on_spinSize_valueChanged(int); + void on_buttonPause_toggled(bool on) {isPause = on;} + void on_buttonRecord_clicked(); + void on_treeK_itemClicked(QTreeWidgetItem * item, int column); + void on_treeK_itemChanged(QTreeWidgetItem * item, int column); + void on_actionClear_triggered(); + +signals: + void q_k_sendFailed(); + void q_k_sendSucceed(); + void q_k_receiveFailed(); + void q_k_receiveSucceed(); + void recordStarted(const QString & fileName); + void recordStopped(const QString & fileName); + +}; + +#endif // KX_PULT_H + diff --git a/kx_tools/kx_pult.qrc b/kx_tools/kx_pult.qrc new file mode 100644 index 0000000..99f4688 --- /dev/null +++ b/kx_tools/kx_pult.qrc @@ -0,0 +1,40 @@ + + + icons/dialog-close.png + icons/edit-clear-.png + icons/edit-guides.png + icons/view-grid.png + icons/zoom-fit-best.png + icons/configure.png + icons/alpha.png + icons/document-save.png + icons/edit-clear-locationbar-rtl.png + icons/edit-find.png + icons/list-add.png + icons/edit-delete.png + icons/item-add.png + icons/item.png + icons/node-add.png + icons/node.png + icons/edit-copy.png + icons/edit-paste.png + icons/expand_s_x.png + icons/expand_s_y.png + icons/expand_x.png + icons/expand_y.png + icons/media-playback-pause.png + icons/media-playback-stop.png + icons/media-record.png + icons/application-exit.png + icons/document-save-.png + icons/view-refresh.png + icons/document-open.png + icons/archive-extract.png + icons/document-export.png + icons/document-import.png + icons/zoom-fit-height.png + icons/layer-visible-off.png + icons/layer-visible-on.png + icons/accessories-calculator.png + + diff --git a/kx_tools/kx_pult.qrc.depends b/kx_tools/kx_pult.qrc.depends new file mode 100644 index 0000000..99f4688 --- /dev/null +++ b/kx_tools/kx_pult.qrc.depends @@ -0,0 +1,40 @@ + + + icons/dialog-close.png + icons/edit-clear-.png + icons/edit-guides.png + icons/view-grid.png + icons/zoom-fit-best.png + icons/configure.png + icons/alpha.png + icons/document-save.png + icons/edit-clear-locationbar-rtl.png + icons/edit-find.png + icons/list-add.png + icons/edit-delete.png + icons/item-add.png + icons/item.png + icons/node-add.png + icons/node.png + icons/edit-copy.png + icons/edit-paste.png + icons/expand_s_x.png + icons/expand_s_y.png + icons/expand_x.png + icons/expand_y.png + icons/media-playback-pause.png + icons/media-playback-stop.png + icons/media-record.png + icons/application-exit.png + icons/document-save-.png + icons/view-refresh.png + icons/document-open.png + icons/archive-extract.png + icons/document-export.png + icons/document-import.png + icons/zoom-fit-height.png + icons/layer-visible-off.png + icons/layer-visible-on.png + icons/accessories-calculator.png + + diff --git a/kx_tools/kx_pult.ui b/kx_tools/kx_pult.ui new file mode 100644 index 0000000..bf4dca6 --- /dev/null +++ b/kx_tools/kx_pult.ui @@ -0,0 +1,1032 @@ + + + KX_Pult + + + + 0 + 0 + 1142 + 598 + + + + KX Pult + + + + + + + 1 + + + + Coefficients (K) + + + + + + + + Reparse K desc + + + + :/icons/view-refresh.png:/icons/view-refresh.png + + + + + + + Resize + + + + :/icons/zoom-fit-height.png:/icons/zoom-fit-height.png + + + + + + + Read file K + + + + :/icons/archive-extract.png:/icons/archive-extract.png + + + + + + + Send + + + + :/icons/document-export.png:/icons/document-export.png + + + + + + + Write file K + + + + :/icons/document-save-.png:/icons/document-save-.png + + + + + + + + 0 + 0 + + + + Qt::CustomContextMenu + + + QAbstractItemView::NoEditTriggers + + + QAbstractItemView::NoSelection + + + QAbstractItemView::ScrollPerPixel + + + QAbstractItemView::ScrollPerPixel + + + + + + + Receive + + + + :/icons/document-import.png:/icons/document-import.png + + + + + + + Set K desc file ... + + + + :/icons/document-open.png:/icons/document-open.png + + + + + + + 65536 + + + + + + + + 0 + 0 + + + + + 200 + 0 + + + + + + + + + + + + + + + Hide empty + + + + + + + Qt::Horizontal + + + QSizePolicy::Preferred + + + + 20 + 20 + + + + + + + + Hide expressions + + + + + + + Qt::Horizontal + + + QSizePolicy::Preferred + + + + 20 + 20 + + + + + + + + Hide without errors + + + + + + + Qt::Horizontal + + + QSizePolicy::Preferred + + + + 20 + 20 + + + + + + + + :/icons/edit-find.png + + + Qt::AlignCenter + + + + + + + Search: + + + + + + + + 0 + 0 + + + + + + + + Qt::Horizontal + + + QSizePolicy::Preferred + + + + 40 + 20 + + + + + + + + Auto calculate + + + true + + + + + + + Qt::Horizontal + + + QSizePolicy::Preferred + + + + 20 + 20 + + + + + + + + Calculate + + + Calculate + + + + :/icons/accessories-calculator.png:/icons/accessories-calculator.png + + + + + + + 100 + + + Calculate %p% + + + + + + + + + Qt::CustomContextMenu + + + QAbstractItemView::AnyKeyPressed|QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed + + + true + + + QAbstractItemView::ExtendedSelection + + + QAbstractItemView::ScrollPerPixel + + + QAbstractItemView::ScrollPerPixel + + + false + + + false + + + 6 + + + 200 + + + 20 + + + + Index + + + + + Name + + + + + Expression + + + + + Calculated + + + + + Type + + + + + Comment + + + + + + + + + Graphics (X) + + + + + + + 10 + + + + + + + + + + + 0 + 0 + + + + Show all + + + + :/icons/layer-visible-on.png:/icons/layer-visible-on.png + + + + + + + + 0 + 0 + + + + Hide all + + + + :/icons/layer-visible-off.png:/icons/layer-visible-off.png + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Start record + + + + :/icons/media-record.png:/icons/media-record.png + + + + + + + + + + + Pause + + + + :/icons/media-playback-pause.png:/icons/media-playback-pause.png + + + true + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Show + + + + + + + + 0 + 0 + + + + Ñ + + + 1 + + + 0.100000000000000 + + + 9999.000000000000000 + + + 10.000000000000000 + + + + + + + Qt::Horizontal + + + QSizePolicy::Preferred + + + + 40 + 20 + + + + + + + + Save + + + + + + + + 0 + 0 + + + + Ñ + + + 1 + + + 0.100000000000000 + + + 9999.000000000000000 + + + 60.000000000000000 + + + + + + + + + Graphic::Autofit|Graphic::BorderInputs|Graphic::Clear|Graphic::Configure|Graphic::CursorAxis|Graphic::Grid|Graphic::OnlyExpandX|Graphic::OnlyExpandY|Graphic::Save + + + false + + + false + + + 60.000000000000000 + + + 10.000000000000000 + + + + + + + + Configuration + + + + + + K + + + + QFormLayout::AllNonFixedFieldsGrow + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + + + receiver: + + + + + + + + + + + + + + sender: + + + + + + + + + + + + + + sended count: + + + + + + + true + + + 0 + + + 1999999999 + + + + + + + received count: + + + + + + + true + + + 0 + + + 1999999999 + + + + + + + wrong received count: + + + + + + + true + + + 0 + + + 1999999999 + + + + + + + type: + + + + + + + + + + + + + + address K: + + + + + + + + + + + + + + + + + + + + + missed received count: + + + + + + + true + + + 0 + + + 1999999999 + + + + + + + address pult: + + + + + + + + + + X + + + + QFormLayout::AllNonFixedFieldsGrow + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + + + receiver: + + + + + + + + + + + + + + sender: + + + + + + + + + + + + + + type: + + + + + + + + + + + + + + address X: + + + + + + + address pult: + + + + + + + + + + + + + + sended count: + + + + + + + true + + + 0 + + + 1999999999 + + + + + + + received count: + + + + + + + true + + + 0 + + + 1999999999 + + + + + + + wrong received count: + + + + + + + true + + + 0 + + + 1999999999 + + + + + + + + + + + + + + missed received count: + + + + + + + true + + + 0 + + + 1999999999 + + + + + + + + + + + + true + + + true + + + true + + + false + + + 20 + + + + + + + Apply + + + + :/icons/document-save-.png:/icons/document-save-.png + + + + + + + + + + + + + + + :/icons/edit-clear-.png:/icons/edit-clear-.png + + + Clear + + + + + + Graphic + QFrame +

    graphic.h
    + + + QPIConfigWidget + QTreeWidget +
    qpiconfigwidget.h
    +
    + + CLineEdit + QLineEdit +
    clineedit.h
    +
    + + + + + + + spinHistory + valueChanged(double) + graphic + setMaxVisibleTime(double) + + + 919 + 107 + + + 932 + 132 + + + + + diff --git a/kx_tools/kx_tools.kdev4 b/kx_tools/kx_tools.kdev4 new file mode 100644 index 0000000..a304129 --- /dev/null +++ b/kx_tools/kx_tools.kdev4 @@ -0,0 +1,3 @@ +[Project] +Manager=KDevCMakeManager +Name=kx_tools diff --git a/kx_tools/libkx_utils.dll b/kx_tools/libkx_utils.dll new file mode 100644 index 0000000000000000000000000000000000000000..c3e5ee07ff3fadb70a57acb51a8b16f64155fe20 GIT binary patch literal 200279 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 F`F|Q`8UX+R literal 0 HcmV?d00001 diff --git a/kx_tools/main_kx_pult.cpp b/kx_tools/main_kx_pult.cpp new file mode 100644 index 0000000..e5c1786 --- /dev/null +++ b/kx_tools/main_kx_pult.cpp @@ -0,0 +1,10 @@ +#include +#include "kx_pult.h" + + +int main(int argc, char *argv[]) { + QApplication a(argc, argv); + KX_Pult w; + w.show(); + return a.exec(); +} diff --git a/kx_tools/make_lib.bat b/kx_tools/make_lib.bat new file mode 100644 index 0000000..afe1db5 --- /dev/null +++ b/kx_tools/make_lib.bat @@ -0,0 +1 @@ +cmake_mgw -DLIB= && make install %* diff --git a/kx_tools/session_KX_Pult.conf b/kx_tools/session_KX_Pult.conf new file mode 100644 index 0000000..666e37a --- /dev/null +++ b/kx_tools/session_KX_Pult.conf @@ -0,0 +1,9 @@ +KX_Pult state = AAAAKnjaY2Bg+M8ABH8ZwIB1CgMDUw+QwQLFHCD8ByQFAGpOBDg= #s +KX_Pult window state = 0 #n +KX_Pult geometry 0 = AAAALnjaY7x54TQDIwMQMAoCiWUMDGxrGBiYA4B8USD/IJC/Asj3YQADALP2Bgg= #s +kdesc_file = kdesc.h #s +checkKHideEmpty = 0 #b +checkKHideNormal = 0 #b +tabWidget = 2 #n +checkKAutoCalculate = 1 #b +checkKHideExpressions = 1 #b diff --git a/libs.kdev4 b/libs.kdev4 new file mode 100644 index 0000000..6789257 --- /dev/null +++ b/libs.kdev4 @@ -0,0 +1,3 @@ +[Project] +Manager=KDevCMakeManager +Name=libs diff --git a/make_libs.bat b/make_libs.bat new file mode 100644 index 0000000..ca00469 --- /dev/null +++ b/make_libs.bat @@ -0,0 +1 @@ +cmake_mgw && make install -j8 && for %%d in (qad_widgets qad_utils qad_graphic qad_sql_table qad_application touch_widgets qad_blockview) do cd %%d && qmake && make install -j8 && cd .. diff --git a/make_libs.sh b/make_libs.sh new file mode 100755 index 0000000..d010bb8 --- /dev/null +++ b/make_libs.sh @@ -0,0 +1,8 @@ +cmake . +make install $@ +for d in 'qad_widgets' 'qad_utils' 'qad_graphic' 'qad_sql_table' 'qad_application' 'qad_blockview' 'touch_widgets'; do + cd $d + qmake + make install $@ + cd .. +done diff --git a/mbricks/.kdev4/mbricks.kdev4 b/mbricks/.kdev4/mbricks.kdev4 new file mode 100644 index 0000000..e59b251 --- /dev/null +++ b/mbricks/.kdev4/mbricks.kdev4 @@ -0,0 +1,25 @@ +[Buildset] +BuildItems=@Variant(\x00\x00\x00\t\x00\x00\x00\x00\x01\x00\x00\x00\x0b\x00\x00\x00\x00\x01\x00\x00\x00\x0e\x00m\x00b\x00r\x00i\x00c\x00k\x00s) + +[CMake] +Build Directory Count=1 +CMakeDir=file:///usr/share/cmake-2.8/Modules +Current Build Directory Index=0 +ProjectRootRelative=./ + +[CMake][CMake Build Directory 0] +Build Directory Path=file:///mnt/data/orders/libs/mbricks/ +Build Type= +CMake Binary=file:///usr/bin/cmake +Environment Profile= +Extra Arguments= +Install Directory=file:///usr/local + +[Defines And Includes][Compiler] +Name=GCC +Path=gcc +Type=GCC + +[MakeBuilder] +Default Make Environment Profile= +Number Of Jobs=8 diff --git a/mbricks/CMakeLists.txt b/mbricks/CMakeLists.txt new file mode 100644 index 0000000..45db234 --- /dev/null +++ b/mbricks/CMakeLists.txt @@ -0,0 +1,29 @@ +project(mbricks) +cmake_minimum_required(VERSION 2.6) +if (NOT LIBPROJECT) + find_package(PIP REQUIRED) +endif () +include_directories(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR} ${PIP_INCLUDES}) +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2 -Wall") +#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g3") +set(CMAKE_C_FLAGS "${CMAKE_CXX_FLAGS}") + +file(GLOB HDRS "*.h") +file(GLOB CPPS "*.cpp") +add_library(mbricks SHARED ${CPPS}) +target_link_libraries(mbricks ${PIP_LIBRARY}) +if (DEFINED LIB) + set(LIB 1) + if (${WIN32}) + find_package(MinGW REQUIRED) + set(CMAKE_INSTALL_PREFIX ${MINGW_DIR}) + install(FILES ${HDRS} DESTINATION ${MINGW_INCLUDE}) + install(TARGETS mbricks DESTINATION ${MINGW_LIB}) + else () + set(CMAKE_INSTALL_PREFIX /usr) + install(FILES ${HDRS} DESTINATION ${CMAKE_INSTALL_PREFIX}/include) + install(TARGETS mbricks DESTINATION ${CMAKE_INSTALL_PREFIX}/lib) + endif () +else () + install(TARGETS mbricks DESTINATION bin) +endif () diff --git a/mbricks/brick_base.cpp b/mbricks/brick_base.cpp new file mode 100644 index 0000000..43ee10e --- /dev/null +++ b/mbricks/brick_base.cpp @@ -0,0 +1,144 @@ +#include "brick_base.h" + +/* +double randomn(double dv, double sv) { + double s = 2., v0, v1; + while (s > 1. || s == 0.) { + v0 = randomd(); + v1 = randomd(); + s = v0*v0 + v1*v1; + } + v0 = v0 * sqrt(-2 * log(s) / s); + return v0 * sv + dv; +} +*/ + +void BrickBase::Parameter::setValue(const PIVariant & v, bool withType) { + value = v; + if (withType) { + switch (v.type()) { + case PIVariant::Bool: type = BrickBase::Bool; return; + case PIVariant::Char: type = BrickBase::Integer; return; + case PIVariant::Short: type = BrickBase::Integer; return; + case PIVariant::Int: type = BrickBase::Integer; return; + case PIVariant::Long: type = BrickBase::Integer; return; + case PIVariant::LLong: type = BrickBase::Integer; return; + case PIVariant::UChar: type = BrickBase::Integer; return; + case PIVariant::UShort: type = BrickBase::Integer; return; + case PIVariant::UInt: type = BrickBase::Integer; return; + case PIVariant::ULong: type = BrickBase::Integer; return; + case PIVariant::ULLong: type = BrickBase::Integer; return; + case PIVariant::Float: type = BrickBase::Float; return; + case PIVariant::Double: type = BrickBase::Float; return; + case PIVariant::LDouble: type = BrickBase::Float; return; + case PIVariant::String: type = BrickBase::String; return; + case PIVariant::StringList: type = BrickBase::String; return; + default: break; + }; + }/* else { + switch (v.type()) { + case PIVariant::Bool: value.vBool = v.vBool; return; + case PIVariant::Char: value.vInt = v.vChar; return; + case PIVariant::Short: value.vInt = v.vShort; return; + case PIVariant::Int: value.vInt = v.vInt; return; + case PIVariant::Long: value.vInt = v.vLong; return; + case PIVariant::LLong: value.vInt = v.vLLong; return; + case PIVariant::UChar: value.vInt = v.vUChar; return; + case PIVariant::UShort: value.vInt = v.vUShort; return; + case PIVariant::UInt: value.vInt = v.vUInt; return; + case PIVariant::ULong: value.vInt = v.vULong; return; + case PIVariant::ULLong: value.vInt = v.vULLong; return; + case PIVariant::Float: value.vDouble = v.vFloat; return; + case PIVariant::Double: value.vDouble = v.vDouble; return; + case PIVariant::LDouble: value.vDouble = v.vLDouble; return; + case PIVariant::String: value.vString = v.vString; return; + case PIVariant::StringList: value.vString = v.vStringList.join(", "); return; + }; + }*/ +} + + +BrickBase::BrickBase(int inputs_num, int outputs_num, int parameters_num) { + inputs_count = inputs_num; + outputs_count = outputs_num; + parameters_count = parameters_num; + inputs.resize(inputs_num, 0.); + outputs.resize(outputs_num, 0.); + defInputs.resize(inputs_num, 0.); + parameters.resize(parameters_num, 0.); + inNames.resize(inputs_num); + outNames.resize(outputs_num); + paramNames.resize(parameters_num); + if (inputs_num > 0) inNames[0] = "Input"; + if (outputs_num > 0) outNames[0] = "Output"; + parametersName_ = "Parameters"; + pt = dt = 0; + freqDivider_ = freqCurrent_ = 1; + time_ = 0.; + level_ = -666; + io_Type = Fixed; + initial = composite = buffered = interactive = rtOnly = false; +} + + +bool BrickBase::tick(double time) { + if (freqDivider_ > 1) { + if (freqCurrent_ < freqDivider_) { + ++freqCurrent_; + lastTick = false; + return false; + } + freqCurrent_ = 1; + } + time_ = time; + dt = time - pt; + lastTick = tick_body(time); + pt = time; + return lastTick; +} + + +void BrickBase::proceedConnections(bool) { + for (uint i = 0; i < connections.size(); ++i) + connections[i].brick_to->setInputValue(connections[i].in_num, output(connections[i].out_num)); +} + + +bool BrickBase::connect(BrickBase * b_from, int out_num, BrickBase * b_to, int in_num) { + if (out_num < 0 || out_num >= b_from->outputsCount()) { + piCout << "Connect error: no such output" << out_num << "in \"" << b_from->name() << "\"!"; + return false; + } + if (in_num < 0 || in_num >= b_to->inputsCount()) { + piCout << "Connect error: no such input" << in_num << "in \"" << b_to->name() << "\"!"; + return false; + } + b_from->addConnection(BrickBase::Connection(out_num, b_to, in_num)); + //string fn = b_from->name().stdString(), tn = b_to->name().stdString(); + //cout << "Connect \"" << fn << "\": " << out_num << " to \"" << tn << "\": " << in_num << endl; + return true; +} + + +bool BrickBase::disconnect(BrickBase * b_from, int out_num, BrickBase * b_to, int in_num) { + /*if (out_num < 0 || out_num >= b_from->outCount()) { + cout << "Disconnect error: no such output " << out_num << " in \"" << b_from->name() << "\"!" << endl; + return false; + } + if (in_num < 0 || in_num >= b_to->inCount()) { + cout << "Disconnect error: no such input " << in_num << " in \"" << b_to->name() << "\"!" << endl; + return false; + }*/ + BrickBase::Connection conn; + for (int i = 0; i < b_from->connectionsCount(); ++i) { + conn = b_from->connection(i); + if (out_num != conn.out_num || b_to != conn.brick_to || in_num != conn.in_num) + continue; + b_from->removeConnection(i); + //string fn = b_from->name().stdString(), tn = b_to->name().stdString(); + //cout << "Disconnect \"" << fn << "\": " << out_num << " from \"" << tn << "\": " << in_num << endl; + return true; + } + return false; +} + diff --git a/mbricks/brick_base.h b/mbricks/brick_base.h new file mode 100644 index 0000000..fd0a7f7 --- /dev/null +++ b/mbricks/brick_base.h @@ -0,0 +1,178 @@ +#ifndef BRICK_BASE_H +#define BRICK_BASE_H + +#include "pievaluator.h" +#include "piconfig.h" +#include "pivariant.h" +#include "picollection.h" + +#define MBRICK(brick) PIOBJECT_SUBCLASS(brick, BrickBase) friend class BrickManager; public: virtual BrickBase * copy() {brick * t = new brick(*this); t->setName(name()); t->type = type; t->copied(); return t;} + +inline double residue(double f, double s) {return f - floor(f / s) * s;} +inline double dbool(double d) {return d > 0 ? 1. : 0;} + +class BrickComposite; +class BrickManager; + +class BrickBase: public PIObject +{ + PIOBJECT(BrickBase) + friend class BrickManager; + friend void buildTree(PIVector & bricks, PIVector > & tree); + friend PIVector > buildSubtree(PIVector & bricks, PIVector > & tree); +public: + BrickBase(int inputs_num = 1, int outputs_num = 1, int parameters_num = 0); + virtual ~BrickBase() {;} + virtual BrickBase * copy() {return new BrickBase(*this);} + + enum IOType { + Fixed = 0x0, + VariableInputs = 0x01, + VariableOutputs = 0x02, + VariableInOuts = VariableInputs | VariableOutputs + }; + enum Mode {Synchronous, Asynchronous}; + enum ParameterType {Bool, Integer, Float, String, File}; + + struct Parameter { + Parameter() {type = BrickBase::Float;} + Parameter(const char * v) {setValue(v);} + Parameter(const bool & v) {setValue(v);} + Parameter(const int & v) {setValue(v);} + Parameter(const double & v) {setValue(v);} + Parameter(const PIString & v) {setValue(v);} + void setType(const ParameterType & t) {type = t;} + void setValue(const char * v, bool withType = true) {setValue(PIString(v), withType);} + void setValue(const bool & v, bool withType = true) {if (withType) type = BrickBase::Bool; value = v;} + void setValue(const int & v, bool withType = true) {if (withType) type = BrickBase::Integer; value = v;} + void setValue(const double & v, bool withType = true) {if (withType) type = BrickBase::Float; value = v;} + void setValue(const PIString & v, bool withType = true) {if (withType) type = BrickBase::String; value = v;} + void setValue(const PIVariant & v, bool withType = true); + void setValueOnly(const PIString & v) {value = v;} + bool toBool() const {return value.toBool();} + int toInt() const {return value.toInt();} + uint toUInt() const {return value.toInt();} + double toFloat() const {return value.toDouble();} + PIString toString() const {return value.toString();} + ParameterType type; + PIVariant value; + }; + + virtual void reset_specified() {;} + virtual void inputsCountChanged(int count) {;} + virtual void outputsCountChanged(int count) {;} + virtual void started() {;} + virtual void finished() {;} + virtual void parameterChanged(int index) {;} + virtual void saveInputsToDefault() {defInputs = inputs;} + virtual void resetOutputs() {outputs.fill(0.);} + virtual void reset() {finished(); inputs = defInputs; dt = pt = time_ = 0.; reset_specified(); resetOutputs(); started();} + virtual void proceedConnections(bool compositeToo = false); + bool tick(double time); + int frequencyDivider() const {return freqDivider_;} + void setFrequencyDivider(const int divider) {freqDivider_ = divider;} + int inputsCount() const {return inputs_count;} + int outputsCount() const {return outputs_count;} + int parametersCount() const {return parameters_count;} + double input(const int index = 0) const {return inputs[index];} + double output(const int index = 0) const {return outputs[index];} + const PIVariant & parameter(const int index = 0) const {return parameters[index].value;} + const BrickBase::ParameterType & parameterType(const int index = 0) const {return parameters[index].type;} + double * input_ptr(const int index = 0) {return &inputs[index];} + double * output_ptr(const int index = 0) {return &outputs[index];} + //double * parameter_ptr(const int index = 0) {return &(parameters[index].value.toDouble());} + void setInputValue(const int index, double value) {inputs[index] = value;} + void setOutputValue(const int index, double value) {outputs[index] = value;} + void setDefaultInputValue(const int index, double value) {defInputs[index] = value;} + void setParameterValue(const int index, const char * value, bool withType = false) {setParameterValue(index, PIString(value), withType);} + void setParameterValue(const int index, const bool & value, bool withType = false) {parameters[index].setValue(value, withType); parameterChanged(index);} + void setParameterValue(const int index, const int & value, bool withType = false) {parameters[index].setValue(value, withType); parameterChanged(index);} + void setParameterValue(const int index, const double & value, bool withType = false) {parameters[index].setValue(value, withType); parameterChanged(index);} + void setParameterValue(const int index, const PIString & value, bool withType = false) {parameters[index].setValue(value, withType); parameterChanged(index);} + void setParameterValue(const int index, const PIVariant & value, bool withType = false) {parameters[index].setValue(value, withType); parameterChanged(index);} + void setParameterValue(const int index, const BrickBase::Parameter & value) {parameters[index] = value; parameterChanged(index);} + void setParameterValueOnly(const int index, const PIString & value) {parameters[index].setValueOnly(value); parameterChanged(index);} + void setInputName(const int index, const PIString & name) {inNames[index] = name;} + void setOutputName(const int index, const PIString & name) {outNames[index] = name;} + void setParameterName(const int index, const PIString & name) {paramNames[index] = name;} + void setInputsCount(const int count) {inputs.resize(count); inputs_count = inputs.size(); inNames.resize(count); inputsCountChanged(count);} + void setOutputsCount(const int count) {outputs.resize(count); outputs_count = outputs.size(); outNames.resize(count); outputsCountChanged(count);} + void setParametersCount(const int count, const char * val) {parameters.resize(count, BrickBase::Parameter(PIString(val))); paramNames.resize(count); parameters_count = parameters.size();} + void setParametersCount(const int count, const bool & val) {parameters.resize(count, BrickBase::Parameter(val)); paramNames.resize(count); parameters_count = parameters.size();} + void setParametersCount(const int count, const int val) {parameters.resize(count, BrickBase::Parameter(val)); paramNames.resize(count); parameters_count = parameters.size();} + void setParametersCount(const int count, const double & val = 0.) {parameters.resize(count, BrickBase::Parameter(val)); paramNames.resize(count); parameters_count = parameters.size();} + void setParametersCount(const int count, const PIString & val) {parameters.resize(count, BrickBase::Parameter(val)); paramNames.resize(count); parameters_count = parameters.size();} + const PIVector & getParameters() const {return parameters;} + void setInOutCount(const int count) {setInputsCount(count); setOutputsCount(count);} + int ioType() const {return io_Type;} + PIString libName() const {return lib;} + PIString typeName() const {return type;} + PIString codeName() const {return className();} + PIString parametersName() const {return parametersName_;} + PIString inputName(const int index) const {return inNames[index];} + PIString outputName(const int index) const {return outNames[index];} + PIString parameterName(const int index) const {return paramNames[index];} + PIString note() const {return note_;} + void setNote(const PIString & str) {note_ = str;} + PIString tag() const {return tag_;} + void setTag(const PIString & str) {tag_ = str;} + BrickManager * manager() const {return manager_;} + void setManager(BrickManager * m) {manager_ = m;} + bool isInitial() const {return initial;} + void setInitial(const bool yes = true) {initial = yes;} + bool isComposite() const {return composite;} + void setComposite(const bool yes = true) {composite = yes;} + bool isBuffered() const {return buffered;} + void setBuffered(const bool yes = true) {buffered = yes;} + bool isInteractive() const {return interactive;} + void setInteractive(const bool yes = true) {interactive = yes;} + bool isRealTimeOnly() const {return rtOnly;} + void setRealTimeOnly(const bool yes = true) {rtOnly = yes;} + BrickComposite * toComposite() {return reinterpret_cast(this);} + + struct Connection { + int out_num; + BrickBase * brick_to; + int in_num; + Connection() {;} + Connection(int out_n, BrickBase * b_to, int in_n) {brick_to = b_to; out_num = out_n; in_num = in_n;} + }; + + void addConnection(Connection conn) {connections.push_back(conn);} + void clearConnections() {connections.clear();} + BrickBase::Connection connection(int index) const {return connections[index];} + int connectionsCount() const {return connections.size();} + void removeConnection(int index) {connections.remove(index);} + + bool lastTick, userBool; + double time_, userDouble; + int level_, userInt; + PIVector buffer; + + static bool connect(BrickBase * b_from, int out_num, BrickBase * b_to, int in_num); + static bool connect(BrickBase * b_from, int out_num, BrickBase & b_to, int in_num) {return connect(b_from, out_num, &b_to, in_num);} + static bool connect(BrickBase & b_from, int out_num, BrickBase * b_to, int in_num) {return connect(&b_from, out_num, b_to, in_num);} + static bool connect(BrickBase & b_from, int out_num, BrickBase & b_to, int in_num) {return connect(&b_from, out_num, &b_to, in_num);} + + static bool disconnect(BrickBase * b_from, int out_num, BrickBase * b_to, int in_num); + static bool disconnect(BrickBase * b_from, int out_num, BrickBase & b_to, int in_num) {return disconnect(b_from, out_num, &b_to, in_num);} + static bool disconnect(BrickBase & b_from, int out_num, BrickBase * b_to, int in_num) {return disconnect(&b_from, out_num, b_to, in_num);} + static bool disconnect(BrickBase & b_from, int out_num, BrickBase & b_to, int in_num) {return disconnect(&b_from, out_num, &b_to, in_num);} + +protected: + virtual void copied() {;} + virtual bool tick_body(double time) {return true;} + + PIVector inputs, outputs, defInputs; + PIVector connections; + PIVector parameters; + PIVector inNames, outNames, paramNames; + PIString parametersName_, lib, type, note_, tag_; + int inputs_count, outputs_count, parameters_count, io_Type, tmp_, freqDivider_, freqCurrent_; + double dt, pt; + bool initial, ticked, composite, buffered, interactive, rtOnly; + BrickManager * manager_; +}; + + +#endif // BRICK_BASE_H diff --git a/mbricks/brick_composite.cpp b/mbricks/brick_composite.cpp new file mode 100644 index 0000000..b13898d --- /dev/null +++ b/mbricks/brick_composite.cpp @@ -0,0 +1,533 @@ +#include "brick_composite.h" + +PIVector BrickComposite::baseBricks; + + +BrickComposite::BrickComposite(): BrickCompositeBase(0, 0, 1) { + type = "Composite"; + setName(type); + paramNames[0] = "Scheme file"; + note_ = "\"Scheme\" is path to *.mbs file, described this brick"; + parameters[0].setValue(""); + parameters[0].setType(BrickBase::File); + setComposite(true); + mode_ = Asynchronous; + bi = 0; bo = 0; bp = 0; inf = 0; +} + + +void BrickComposite::clear() { + for (uint i = 0; i < bricks.size(); ++i) + delete bricks[i]; + bricks.clear(); +} + + +void BrickComposite::proceedConnections(bool compositeToo) { + if (compositeToo) { + if (bi != 0) { + for (int i = 0; i < inputsCount(); ++i) + bi->setOutputValue(i, inputs[i]); + bi->proceedConnections(); + } + if (bp != 0) { + for (int i = 1; i < parametersCount(); ++i) + bp->setOutputValue(i - 1, parameters[i].toFloat()); + bp->proceedConnections(); + } + switch (mode_) { + case BrickBase::Synchronous: + for (uint i = 0; i < bricks.size(); ++i) + bricks[i]->proceedConnections(); + break; + case BrickBase::Asynchronous: default: + for (uint i = 0; i < tree.size(); ++i) { + tl = &tree[i]; + for (uint j = 0; j < tl->size(); ++j) + (*tl)[j]->proceedConnections(); + } + break; + } + if (bo != 0) + for (int i = 0; i < outputsCount(); ++i) + outputs[i] = bo->input(i); + } + BrickBase::proceedConnections(compositeToo); +} + + +void BrickComposite::parameterChanged(int index) { + fillBaseBricks(); + if (index != 0) return; + PIConfig sr(parameters[0].toString()); + PIString prefix, cname; + BrickBase * b; + int pcnt; + clear(); + setMode((Mode)(int)sr.getValue("Mode", 1)); + PIStringList names = sr.getValue("Bricks", PIStringList()); + for (uint i = 0; i < names.size(); ++i) { + prefix = names[i] + " "; + cname = sr.getValue(prefix + "codeName", ""); + b = findBaseBrick(cname)->copy(); + BrickComposite::loadBrick(sr, prefix, b); + bricks.push_back(b); + } + uint cnt = sr.getValue("Connections count", 0); + //cout << endl; + for (uint i = 0; i < cnt; ++i) { + prefix = "Connection " + PIString::fromNumber(i) + " "; + BrickBase::connect(findBrick(sr.getValue(prefix + "from Name", "")), + sr.getValue(prefix + "from Port", 0), + findBrick(sr.getValue(prefix + "to Name", "")), + sr.getValue(prefix + "to Port", 0)); + } + + bi = 0; + for (uint i = 0; i < bricks.size(); ++i) + if (bricks[i]->codeName() == "BrickCompositeInput") + {bi = (BrickCompositeInput * )bricks[i]; break;} + if (bi != 0) { + setInputsCount(bi->outputsCount()); + for (int i = 0; i < inputsCount(); ++i) + inNames[i] = bi->parameter(i).toString(); + } else setInputsCount(0); + + bo = 0; + for (uint i = 0; i < bricks.size(); ++i) + if (bricks[i]->codeName() == "BrickCompositeOutput") + {bo = (BrickCompositeOutput * )bricks[i]; break;} + if (bo != 0) { + setOutputsCount(bo->inputsCount()); + for (int i = 0; i < outputsCount(); ++i) + outNames[i] = bo->parameter(i).toString(); + } else setOutputsCount(0); + + bp = 0; + for (uint i = 0; i < bricks.size(); ++i) + if (bricks[i]->codeName() == "BrickCompositeParameters") + {bp = (BrickCompositeParameters * )bricks[i]; break;} + if (bp != 0) { + pcnt = parametersCount(); + setParametersCount(bp->parametersCount() + 1); + for (int i = 1; i < parametersCount(); ++i) { + cname = bp->parameter(i - 1).toString(); + int j = cname.toLowerCase().find(':'); + if (j < 0) paramNames[i] = cname; + else { + paramNames[i] = cname.left(j).trim(); + if (i >= pcnt) parameters[i].setValue(cname.cutLeft(j + 1).toDouble()); + } + } + } else setParametersCount(1); + + inf = 0; + for (uint i = 0; i < bricks.size(); ++i) + if (bricks[i]->codeName() == "BrickCompositeInformation") + {inf = (BrickCompositeInformation * )bricks[i]; break;} + if (inf != 0) { + type = inf->parameter(0).toString(); + note_ = inf->parameter(1).toString(); + } else { + type = "Composite"; + note_ = "\"Scheme\" is path to *.mbs file, described this brick"; + } + + buildBrickTree(); + //cout << name_ << " load " << bricks.size() << " bricks" << endl; +} + + +void BrickComposite::loadBrick(PIConfig & sr, const PIString & prefix, BrickBase * b, BrickManager * m) { + b->setName(sr.getValue(prefix + "name", b->name())); + b->setInitial(sr.getValue(prefix + "initial", false)); + b->setFrequencyDivider(sr.getValue(prefix + "freqDiv", 1)); + b->setOutputsCount(sr.getValue(prefix + "outCount", b->outputsCount())); + b->setInputsCount(sr.getValue(prefix + "inCount", b->inputsCount())); + for (int i = 0; i < b->inputsCount(); ++i) + b->setInputValue(i, sr.getValue(prefix + "in " + PIString::fromNumber(i), b->input(i))); + b->setParametersCount(sr.getValue(prefix + "paramCount", b->parametersCount())); + for (int i = 0; i < b->parametersCount(); ++i) + b->setParameterValue(i, PIVariant::fromValue(sr.getValue(prefix + "param " + PIString::fromNumber(i), b->parameter(i).toString())), false); + b->setManager(m); +} + + +BrickBase * BrickComposite::findBrick(const PIString & name) { + for (uint i = 0; i < bricks.size(); ++i) + if (bricks[i]->name() == name) + return bricks[i]; + return 0; +} + + +BrickBase * BrickComposite::findBaseBrick(const PIString & code_name) { + for (uint i = 0; i < baseBricks.size(); ++i) + if (baseBricks[i]->codeName() == code_name) + return baseBricks[i]; + return 0; +} + + +bool BrickComposite::tick_body(double time) { + if (bi != 0) { + for (int i = 0; i < inputsCount(); ++i) + bi->setOutputValue(i, inputs[i]); + bi->proceedConnections(); + } + if (bp != 0) { + for (int i = 1; i < parametersCount(); ++i) + bp->setOutputValue(i - 1, parameters[i].toFloat()); + bp->proceedConnections(); + } + switch (mode_) { + case BrickBase::Synchronous: + for (uint i = 0; i < bricks.size(); ++i) + bricks[i]->tick(time); + for (uint i = 0; i < bricks.size(); ++i) + bricks[i]->proceedConnections(); + break; + case BrickBase::Asynchronous: default: + for (uint i = 0; i < tree.size(); ++i) { + tl = &tree[i]; + for (uint j = 0; j < tl->size(); ++j) + (*tl)[j]->tick(time); + for (uint j = 0; j < tl->size(); ++j) + (*tl)[j]->proceedConnections(); + } + break; + } + if (bo != 0) + for (int i = 0; i < outputsCount(); ++i) + outputs[i] = bo->input(i); + return true; +} + + +void BrickComposite::fillBaseBricks() { + if (!baseBricks.isEmpty()) return; + PIStringList libs = PICollection::groups(); + piForeachC (PIString & l, libs) { + PIVector group = PICollection::groupElements(l); + piForeachC (PIObject * o, group) + baseBricks << (BrickBase * )o; + } + /*baseBricks.push_back(new BrickEmitConst()); + baseBricks.push_back(new BrickEmitLinear()); + baseBricks.push_back(new BrickEmitSin()); + baseBricks.push_back(new BrickEmitDelta()); + baseBricks.push_back(new BrickEmitStep()); + baseBricks.push_back(new BrickEmitPulse()); + baseBricks.push_back(new BrickEmitStrobe()); + baseBricks.push_back(new BrickEmitTime()); + baseBricks.push_back(new BrickEmitFrequency()); + baseBricks.push_back(new BrickEmitNoiseRandom()); + baseBricks.push_back(new BrickEmitNoiseNormal()); + baseBricks.push_back(new BrickMathAbsolute()); + baseBricks.push_back(new BrickMathSign()); + baseBricks.push_back(new BrickMathAmplifier()); + baseBricks.push_back(new BrickMathSum()); + baseBricks.push_back(new BrickMathMultiply()); + baseBricks.push_back(new BrickMathDivide()); + baseBricks.push_back(new BrickMathPower()); + baseBricks.push_back(new BrickMathDeadZone()); + baseBricks.push_back(new BrickMathSaturation()); + baseBricks.push_back(new BrickMathDelayTicks()); + baseBricks.push_back(new BrickMathDelaySeconds()); + baseBricks.push_back(new BrickMathRelay()); + baseBricks.push_back(new BrickMathDerivate()); + baseBricks.push_back(new BrickMathIntegral()); + baseBricks.push_back(new BrickMathIntegralSaturated()); + baseBricks.push_back(new BrickMathQuantize()); + baseBricks.push_back(new BrickMathThreshold()); + baseBricks.push_back(new BrickMathFunction()); + baseBricks.push_back(new BrickMathFFT()); + baseBricks.push_back(new BrickMathCopy()); + baseBricks.push_back(new BrickMathBessel()); + baseBricks.push_back(new BrickLogicNot()); + baseBricks.push_back(new BrickLogicAnd()); + baseBricks.push_back(new BrickLogicOr()); + baseBricks.push_back(new BrickLogicXor()); + baseBricks.push_back(new BrickLogicNAnd()); + baseBricks.push_back(new BrickLogicNOr()); + baseBricks.push_back(new BrickLogicNXor()); + baseBricks.push_back(new BrickLogicMemory()); + baseBricks.push_back(new BrickLogicCompare()); + baseBricks.push_back(new BrickDigitalTriggerRS()); + baseBricks.push_back(new BrickDigitalTriggerD()); + baseBricks.push_back(new BrickDigitalTriggerJK()); + baseBricks.push_back(new BrickDigitalCounter2()); + baseBricks.push_back(new BrickDigitalCounter4()); + baseBricks.push_back(new BrickDigitalCounter8()); + baseBricks.push_back(new BrickDigitalCoder1()); + baseBricks.push_back(new BrickDigitalCoder2()); + baseBricks.push_back(new BrickDigitalCoder3()); + baseBricks.push_back(new BrickDigitalCoder4()); + baseBricks.push_back(new BrickDigitalDecoder1()); + baseBricks.push_back(new BrickDigitalDecoder2()); + baseBricks.push_back(new BrickDigitalDecoder3()); + baseBricks.push_back(new BrickDigitalDecoder4()); + baseBricks.push_back(new BrickDigitalMux1()); + baseBricks.push_back(new BrickDigitalMux2()); + baseBricks.push_back(new BrickDigitalMux3()); + baseBricks.push_back(new BrickDigitalMux4()); + baseBricks.push_back(new BrickDigitalDemux1()); + baseBricks.push_back(new BrickDigitalDemux2()); + baseBricks.push_back(new BrickDigitalDemux3()); + baseBricks.push_back(new BrickDigitalDemux4()); + baseBricks.push_back(new BrickDigitalDigitalToAnalog2()); + baseBricks.push_back(new BrickDigitalDigitalToAnalog4()); + baseBricks.push_back(new BrickDigitalDigitalToAnalog8()); + baseBricks.push_back(new BrickDigitalAnalogToDigital2()); + baseBricks.push_back(new BrickDigitalAnalogToDigital4()); + baseBricks.push_back(new BrickDigitalAnalogToDigital8()); + baseBricks.push_back(new BrickLinkTransferFunction()); + baseBricks.push_back(new BrickLinkFilter1Degree()); + baseBricks.push_back(new BrickLinkFilterBandpass()); + baseBricks.push_back(new BrickInterfaceSerialIn()); + baseBricks.push_back(new BrickInterfaceSerialOut()); + baseBricks.push_back(new BrickInterfaceUDPIn()); + baseBricks.push_back(new BrickInterfaceUDPOut()); + baseBricks.push_back(new BrickInterfaceBinFileOut()); + baseBricks.push_back(new BrickStatisticMinMaxI()); + baseBricks.push_back(new BrickStatisticMinMaxF()); + baseBricks.push_back(new BrickStatisticExpectation()); + baseBricks.push_back(new BrickStatisticVariance()); + baseBricks.push_back(new BrickComposite()); + baseBricks.push_back(new BrickCompositeInput()); + baseBricks.push_back(new BrickCompositeOutput()); + baseBricks.push_back(new BrickCompositeParameters()); + baseBricks.push_back(new BrickCompositeInformation());*/ +} + + +void sumTrees(PIVector > & ft, PIVector > & st) { + uint mi = piMin(ft.size(), st.size()); + for (uint i = 0; i < mi; ++i) + for (uint j = 0; j < st[i].size(); ++j) + ft[i].push_back(st[i][j]); + if (st.size() > ft.size()) + for (uint i = mi; i < st.size(); ++i) + ft.push_back(st[i]); +} + + +void buildTree(PIVector & bricks, PIVector > & tree) { + PIVector > ct; + BrickBase * b; + tree.clear(); + if (bricks.size() == 0) return; + for (uint i = 0; i < bricks.size(); ++i) { + b = bricks[i]; + b->ticked = false; + b->level_ = -666; + b->tmp_ = 0; + } + ct = buildSubtree(bricks, tree); + //cout << "--------" << endl; + while (ct.size() > 0) { + //cout << "subtree " << ct.size() << endl; + sumTrees(tree, ct); + ct = buildSubtree(bricks, tree); + } + //cout << "subtrees built" << endl; + uint tcnt = 0; + for (uint i = 0; i < tree.size(); ++i) + tcnt += tree[i].size(); + //cout << "built for " << tcnt << " from " << bricks.size() << endl; + if (tcnt < bricks.size()) { + for (uint i = 0; i < bricks.size(); ++i) { + b = bricks[i]; + for (uint j = 0; j < tree.size(); ++j) + for (uint k = 0; k < tree[j].size(); ++k) + if (tree[j][k] == b) goto next; + //cout << "add " << b->name().stdString() << " in level (" << b->level_ << ") ... " << flush; + if (b->level_ < 0) b->level_ = 0; + if ((uint)b->level_ < tree.size() && b->level_ >= 0) tree[b->level_].push_back(b); + else { + tree.resize(b->level_ + 1); + tree[b->level_].push_back(b); + } + //cout << "ok" << endl; + next: ; + } + } + int mlev = bricks[0]->level_; + for (uint i = 1; i < bricks.size(); ++i) + if (mlev > bricks[i]->level_) + mlev = bricks[i]->level_; + if (mlev >= 0) return; + cout << "minimum level = " << mlev << ", so rebuild tree manually\n"; + tree.clear(); + int clev = 0; + uint cnt = 0; + PIVector level; + for (uint i = 0; i < bricks.size(); ++i) + bricks[i]->level_ -= mlev; + mlev = 0; + while (bricks.size() > cnt) { + level.clear(); + for (uint i = 0; i < bricks.size(); ++i) { + b = bricks[i]; + if (b->level_ != clev) continue; + level.push_back(b); + ++cnt; + } + if (level.size() > 0) tree.push_back(level); + ++clev; + } +} + + +PIVector > buildSubtree(PIVector & bricks, PIVector > & tree) { + PIVector bbs, tbs, level; + PIVector > ttree; + BrickBase * b, * sb; + int minlev, clev; + if (bricks.size() == 0) return ttree; + //cout << "initial stage" << endl; + /// Initial stage: first level - initialize bricks + for (uint i = 0; i < bricks.size(); ++i) { + b = bricks[i]; + if (b->level_ >= 0) continue; + bbs.push_back(b); + if (!b->isInitial()) { + tbs.push_back(b); + continue; + } + b->level_ = 0; + level.push_back(b); + } + if (level.size() == 0 && tbs.size() == 0) return ttree; + if (level.size() == 0) { + level.push_back(tbs[0]); + level.back()->level_ = 0; + tbs.pop_front(); + } + ttree.clear(); + ttree.push_back(level); + //cout << "first stage" << endl; + /// First pass: direct bricks bypass + while (tbs.size() > 0) { + level.clear(); + for (uint i = 0; i < ttree.back().size(); ++i) { + b = ttree.back()[i]; + b->tmp_++; + for (uint j = 0; j < b->connections.size(); ++j) { + sb = b->connections[j].brick_to; + if (sb->ticked) continue; + level.push_back(sb); + sb->level_ = ttree.size(); + for (uint k = 0; k < tbs.size(); ++k) { + if (tbs[k] == sb) { + tbs.remove(k); + break; + } + } + } + if (b->tmp_ >= b->inputs_count) b->ticked = true; + } + if (level.size() == 0) break; + ttree.push_back(level); + } + minlev = ttree[0][0]->level_; + if (tbs.size() == 0) goto third; + for (uint i = 0; i < ttree.size(); ++i) + for (uint j = 0; j < ttree[i].size(); ++j) + ttree[i][j]->ticked = true; + //cout << "second stage" << endl; + /// Second pass: ttree complement with invert bypass + while (tbs.size() > 0) { + level.clear(); + for (uint i = 0; i < tbs.size(); ++i) { + b = tbs[i]; + for (uint j = 0; j < b->connections.size(); ++j) { + sb = b->connections[j].brick_to; + if (!sb->ticked) continue; + level.push_back(b); + b->level_ = sb->level_ - 1; + if (minlev > b->level_) minlev = b->level_; + b->ticked = true; + for (uint k = 0; k < tbs.size(); ++k) { + if (tbs[k] == b) { + tbs.remove(k); + break; + } + } + i = 0; + } + } + if (level.size() == 0) break; + } + //cout << "third stage" << endl; + third: + /// Third pass: rebuild ttree + ttree.clear(); + clev = minlev; + level.push_back(0); + while (level.size() > 0) { + level.clear(); + for (uint i = 0; i < bbs.size(); ++i) { + b = bbs[i]; + if (b->level_ == clev) level.push_back(b); + } + if (level.size() > 0) ttree.push_back(level); + ++clev; + } + //cout << "final stage" << endl << endl; + /// Final stage: normalize levels + for (uint i = 0; i < ttree.size(); ++i) + for (uint j = 0; j < ttree[i].size(); ++j) + ttree[i][j]->level_ = i; + return ttree; +} + + +BrickCompositeInput::BrickCompositeInput(int inputs_num): BrickCompositeBase(0, inputs_num, inputs_num) { + type = "Input"; + setName(type); + io_Type = BrickBase::VariableOutputs; + outNames[0] = "0"; + note_ += "\"Parameters\" are labels for inputs that will be shown in parent composite brick"; + parameters[0].setValue(""); +} + + +BrickCompositeOutput::BrickCompositeOutput(int outputs_num): BrickCompositeBase(outputs_num, 0, outputs_num) { + type = "Output"; + setName(type); + io_Type = BrickBase::VariableInputs; + inNames[0] = "0"; + note_ += "\"Parameters\" are labels for outputs that will be shown in parent composite brick"; + parameters[0].setValue(""); +} + + +BrickCompositeParameters::BrickCompositeParameters(): BrickCompositeBase(0, 1, 1) { + type = "Parameters"; + setName(type); + io_Type = BrickBase::VariableOutputs; + note_ = "There are parameters you can set from parent brick\nEach parameter is float and should be typed in format: \"name[:default]\""; + parameters[0].setValue("p"); + outNames[0] = "p"; +} + + +void BrickCompositeParameters::parameterChanged(int index) { + PIString s = parameters[index].toString(); + int i = s.toLowerCase().find(':'); + if (i < 0) outNames[index] = s; + else outNames[index] = s.left(i).trim(); +} + + +BrickCompositeInformation::BrickCompositeInformation(): BrickCompositeBase(0, 0, 2) { + type = "Information"; + setName(type); + parametersName_ = "Information"; + paramNames[0] = "Type name"; + paramNames[1] = "Promt"; + note_ = "There are information fields about parent composite brick"; + parameters[0].setValue(""); + parameters[1].setValue(""); +} diff --git a/mbricks/brick_composite.h b/mbricks/brick_composite.h new file mode 100644 index 0000000..7c3511d --- /dev/null +++ b/mbricks/brick_composite.h @@ -0,0 +1,103 @@ +#ifndef BRICK_COMPOSITE_H +#define BRICK_COMPOSITE_H + +#include "brick_emits.h" +#include "brick_math.h" +#include "brick_logic.h" +#include "brick_digital.h" +#include "brick_link.h" +#include "brick_interface.h" +#include "brick_statistic.h" + +void buildTree(PIVector & bricks, PIVector > & tree); +PIVector > buildSubtree(PIVector & bricks, PIVector > & tree); +void sumTrees(PIVector > & ft, PIVector > & st); + + +class BrickCompositeBase: public BrickBase { + public: BrickCompositeBase(int inputs_num = 0, int outputs_num = 0, int parameters_num = 1): BrickBase(inputs_num, outputs_num, parameters_num) {lib = "Composite";} +}; + + +class BrickCompositeInput; +class BrickCompositeOutput; +class BrickCompositeParameters; +class BrickCompositeInformation; + + +class BrickComposite: public BrickCompositeBase { + MBRICK(BrickComposite) + BrickComposite(); + virtual bool tick_body(double time); + Mode mode() const {return mode_;} + void setMode(Mode m) {mode_ = m;} + void buildBrickTree() {buildTree(bricks, tree);} + void clear(); + void loadScheme(const PIString & file) {setParameterValue(0, file);} + static BrickBase * findBaseBrick(const PIString & code_name); + +protected: + virtual void parameterChanged(int index); + virtual void started() {parameterChanged(0); for (uint i = 0; i < bricks.size(); ++i) {bricks[i]->setManager(manager_); bricks[i]->started();}} + virtual void finished() {for (uint i = 0; i < bricks.size(); ++i) bricks[i]->finished();} + virtual void saveInputsToDefault() {defInputs = inputs; for (uint i = 0; i < bricks.size(); ++i) bricks[i]->saveInputsToDefault();} + virtual void resetOutputs() {for (uint i = 0; i < bricks.size(); ++i) bricks[i]->resetOutputs();} + virtual void reset_specified() {for (uint i = 0; i < bricks.size(); ++i) bricks[i]->reset_specified();} + virtual void reset() {BrickBase::reset(); for (uint i = 0; i < bricks.size(); ++i) bricks[i]->reset();} + virtual void proceedConnections(bool compositeToo = false); + + BrickBase * findBrick(const PIString & name); + static void loadBrick(PIConfig & sr, const PIString & prefix, BrickBase * b, BrickManager * m = 0); + static void fillBaseBricks(); + + static PIVector baseBricks; + PIVector bricks; + PIVector > tree; + PIVector * tl; + BrickCompositeInput * bi; + BrickCompositeOutput * bo; + BrickCompositeParameters * bp; + BrickCompositeInformation * inf; + Mode mode_; + int header_; + +}; +ADD_NEW_TO_COLLECTION(Composite, BrickComposite) + + +class BrickCompositeInput: public BrickCompositeBase { + MBRICK(BrickCompositeInput) + BrickCompositeInput(int inputs_num = 1); + virtual bool tick_body(double time) {return true;} + virtual void parameterChanged(int index) {if (outNames.size_s() > index) outNames[index] = parameters[index].toString();} + virtual void outputsCountChanged(int count) {setParametersCount(count, "");} +}; +ADD_NEW_TO_COLLECTION(Composite, BrickCompositeInput) + + +class BrickCompositeOutput: public BrickCompositeBase { + MBRICK(BrickCompositeOutput) + BrickCompositeOutput(int outputs_num = 1); + virtual bool tick_body(double time) {return true;} + virtual void parameterChanged(int index) {if (inNames.size_s() > index) inNames[index] = parameters[index].toString();} + virtual void inputsCountChanged(int count) {setParametersCount(count, "");} +}; +ADD_NEW_TO_COLLECTION(Composite, BrickCompositeOutput) + + +class BrickCompositeParameters: public BrickCompositeBase { + MBRICK(BrickCompositeParameters) + BrickCompositeParameters(); + virtual void outputsCountChanged(int count) {setParametersCount(count, "p");} + virtual void parameterChanged(int index); +}; +ADD_NEW_TO_COLLECTION(Composite, BrickCompositeParameters) + + +class BrickCompositeInformation: public BrickCompositeBase { + MBRICK(BrickCompositeInformation) + BrickCompositeInformation(); +}; +ADD_NEW_TO_COLLECTION(Composite, BrickCompositeInformation) + +#endif // BRICK_COMPOSITE_H diff --git a/mbricks/brick_digital.cpp b/mbricks/brick_digital.cpp new file mode 100644 index 0000000..3b25593 --- /dev/null +++ b/mbricks/brick_digital.cpp @@ -0,0 +1,307 @@ +#include "brick_digital.h" + + +bool BrickDigitalTriggerRS::tick_body(double time) { + if (inputs[R] > 0.) outputs[T] = 0.; + else if (inputs[S] > 0.) outputs[T] = 1.; + outputs[To] = 1. - outputs[T]; + return true; +} + + +bool BrickDigitalTriggerD::tick_body(double time) { + if (inputs[C] <= 0.) return true; + outputs[T] = dbool(inputs[D]); + outputs[To] = 1. - outputs[T]; + return true; +} + + +bool BrickDigitalTriggerJK::tick_body(double time) { + if (inputs[C] - pc <= 0. || inputs[C] <= 0.) { + pc = inputs[C]; + return true; + } + outputs[T] = dbool((1. - outputs[T]) * inputs[J] + outputs[T] * (1. - inputs[K])); + outputs[To] = 1. - outputs[T]; + pc = inputs[C]; + return true; +} + + +bool BrickDigitalCounter2::tick_body(double time) { + dv = inputs[C] - v; + v = inputs[C]; + if (inputs[R] > 0) { + outputs[0] = outputs[1] = 0.; + return true; + } + if (dv > 0.) { + outputs[0] = 1. - outputs[0]; + if (outputs[0] == 0.) { + outputs[1] = 1. - outputs[1]; + if (outputs[1] == 0.) + outputs[0] = 0.; + } + } + return true; +} + + +bool BrickDigitalCounter4::tick_body(double time) { + dv = inputs[C] - v; + v = inputs[C]; + if (inputs[R] > 0) { + outputs[0] = outputs[1] = outputs[2] = outputs[3] = 0.; + return true; + } + if (dv > 0.) { + outputs[0] = 1. - outputs[0]; + if (outputs[0] == 0.) { + outputs[1] = 1. - outputs[1]; + if (outputs[1] == 0.) { + outputs[2] = 1. - outputs[2]; + if (outputs[2] == 0.) { + outputs[3] = 1. - outputs[3]; + if (outputs[3] == 0.) + outputs[0] = outputs[1] = outputs[2] = 0.; + } + } + } + } + return true; +} + + +bool BrickDigitalCounter8::tick_body(double time) { + dv = inputs[C] - v; + v = inputs[C]; + if (inputs[R] > 0) { + for (int i = 0; i < 8; ++i) + outputs[i] = 0.; + return true; + } + if (dv > 0.) { + outputs[0] = 1. - outputs[0]; + if (outputs[0] == 0.) { + outputs[1] = 1. - outputs[1]; + if (outputs[1] == 0.) { + outputs[2] = 1. - outputs[2]; + if (outputs[2] == 0.) { + outputs[3] = 1. - outputs[3]; + if (outputs[3] == 0.) { + outputs[4] = 1. - outputs[4]; + if (outputs[4] == 0.) { + outputs[5] = 1. - outputs[5]; + if (outputs[5] == 0.) { + outputs[6] = 1. - outputs[6]; + if (outputs[6] == 0.) { + outputs[7] = 1. - outputs[7]; + if (outputs[7] == 0.) + for (int i = 0; i < 7; ++i) + outputs[i] = 0.; + } + } + } + } + } + } + } + } + return true; +} + + +bool BrickDigitalCoder2::tick_body(double time) { + int cv = 0; + for (int i = 3; i >= 0; --i) + if (inputs[i] > 0.) {cv = i; break;} + outputs[1] = cv / 2; + outputs[0] = cv % 2; + return true; +} + + +bool BrickDigitalCoder3::tick_body(double time) { + int cv = 0; + for (int i = 7; i >= 0; --i) + if (inputs[i] > 0.) {cv = i; break;} + outputs[2] = cv / 4; + outputs[1] = (cv % 4) / 2; + outputs[0] = cv % 2; + return true; +} + + +bool BrickDigitalCoder4::tick_body(double time) { + int cv = 0; + for (int i = 15; i >= 0; --i) + if (inputs[i] > 0.) {cv = i; break;} + outputs[3] = cv / 8; + outputs[2] = (cv % 8) / 4; + outputs[1] = (cv % 4) / 2; + outputs[0] = cv % 2; + return true; +} + + +bool BrickDigitalDecoder1::tick_body(double time) { + outputs[0] = outputs[1] = 0.; + if (inputs[0] > 0.) + outputs[1] = 1.; + else + outputs[0] = 1.; + return true; +} + + +bool BrickDigitalDecoder2::tick_body(double time) { + int cv; + for (int i = 0; i < 4; ++i) + outputs[i] = 0.; + cv = dbool(inputs[0]) + dbool(inputs[1]) * 2; + outputs[cv] = 1.; + return true; +} + + +bool BrickDigitalDecoder3::tick_body(double time) { + int cv; + for (int i = 0; i < 8; ++i) + outputs[i] = 0.; + cv = dbool(inputs[0]) + dbool(inputs[1]) * 2 + dbool(inputs[2]) * 4; + outputs[cv] = 1.; + return true; +} + + +bool BrickDigitalDecoder4::tick_body(double time) { + int cv; + for (int i = 0; i < 16; ++i) + outputs[i] = 0.; + cv = dbool(inputs[0]) + dbool(inputs[1]) * 2 + dbool(inputs[2]) * 4 + dbool(inputs[3]) * 8; + outputs[cv] = 1.; + return true; +} + + +bool BrickDigitalMux1::tick_body(double time) { + int cv; + cv = dbool(inputs[2]); + outputs[0] = inputs[cv]; + return true; +} + + +bool BrickDigitalMux2::tick_body(double time) { + int cv; + cv = dbool(inputs[4]) + dbool(inputs[5]) * 2; + outputs[0] = inputs[cv]; + return true; +} + + +bool BrickDigitalMux3::tick_body(double time) { + int cv; + cv = dbool(inputs[8]) + dbool(inputs[9]) * 2 + dbool(inputs[10]) * 4; + outputs[0] = inputs[cv]; + return true; +} + + +bool BrickDigitalMux4::tick_body(double time) { + int cv; + cv = dbool(inputs[16]) + dbool(inputs[17]) * 2 + dbool(inputs[18]) * 4 + dbool(inputs[19]) * 8; + outputs[0] = inputs[cv]; + return true; +} + + +bool BrickDigitalDemux1::tick_body(double time) { + outputs[0] = outputs[1] = 0.; + if (inputs[1] > 0.) + outputs[1] = inputs[0]; + else + outputs[0] = inputs[0]; + return true; +} + + +bool BrickDigitalDemux2::tick_body(double time) { + int cv; + for (int i = 0; i < 4; ++i) + outputs[i] = 0.; + cv = dbool(inputs[1]) + dbool(inputs[2]) * 2; + outputs[cv] = inputs[0]; + return true; +} + + +bool BrickDigitalDemux3::tick_body(double time) { + int cv; + for (int i = 0; i < 8; ++i) + outputs[i] = 0.; + cv = dbool(inputs[1]) + dbool(inputs[2]) * 2 + dbool(inputs[3]) * 4; + outputs[cv] = inputs[0]; + return true; +} + + +bool BrickDigitalDemux4::tick_body(double time) { + int cv; + for (int i = 0; i < 16; ++i) + outputs[i] = 0.; + cv = dbool(inputs[1]) + dbool(inputs[2]) * 2 + dbool(inputs[3]) * 4 + dbool(inputs[4]) * 8; + outputs[cv] = inputs[0]; + return true; +} + + +bool BrickDigitalDigitalToAnalog4::tick_body(double time) { + double v = 0; + for (int i = 0; i < 4; ++i) + v += pow2(i) * dbool(inputs[i]); + outputs[0] = inputs[4] * v / 15.; + return true; +} + + +bool BrickDigitalDigitalToAnalog8::tick_body(double time) { + double v = 0; + for (int i = 0; i < 8; ++i) + v += pow2(i) * dbool(inputs[i]); + outputs[0] = inputs[8] * v / 255.; + return true; +} + + +bool BrickDigitalAnalogToDigital2::tick_body(double time) { + double v = inputs[Input], t = inputs[Max] / 2.; + outputs[1] = (v >= t ? 1. : 0.); + if (outputs[1] > 0.) v -= t; + t /= 2.; + outputs[0] = (v >= t ? 1. : 0.); + return true; +} + + +bool BrickDigitalAnalogToDigital4::tick_body(double time) { + double v = inputs[Input], t = inputs[Max] / 2.; + for (int i = 3; i >= 0; --i) { + outputs[i] = (v >= t ? 1. : 0.); + if (outputs[i] > 0.) v -= t; + t /= 2.; + } + return true; +} + + +bool BrickDigitalAnalogToDigital8::tick_body(double time) { + double v = inputs[Input], t = inputs[Max] / 2.; + for (int i = 7; i >= 0; --i) { + outputs[i] = (v >= t ? 1. : 0.); + if (outputs[i] > 0.) v -= t; + t /= 2.; + } + return true; +} diff --git a/mbricks/brick_digital.h b/mbricks/brick_digital.h new file mode 100644 index 0000000..13f316f --- /dev/null +++ b/mbricks/brick_digital.h @@ -0,0 +1,279 @@ +#ifndef BRICK_DIGITAL_H +#define BRICK_DIGITAL_H + +#include "brick_base.h" + + +class BrickDigitalBase: public BrickBase { +public: BrickDigitalBase(int inputs_num = 1, int outputs_num = 1, int parameters_num = 0): BrickBase(inputs_num, outputs_num, parameters_num) {lib = "Digital"; inNames[0] = outNames[0] = "0";} +}; + + +class BrickDigitalTriggerRS: public BrickDigitalBase { + MBRICK(BrickDigitalTriggerRS) + BrickDigitalTriggerRS(): BrickDigitalBase(2, 2) { + type = "RStrigger"; + setName(type); + inNames[0] = "S"; + inNames[1] = "R"; + outNames[0] = "T"; + outNames[1] = "To"; + } + enum Inputs {S, R}; + enum Outputs {T, To}; + virtual bool tick_body(double time); +}; +ADD_NEW_TO_COLLECTION(Digital, BrickDigitalTriggerRS) + + +class BrickDigitalTriggerD: public BrickDigitalBase { + MBRICK(BrickDigitalTriggerD) + BrickDigitalTriggerD(): BrickDigitalBase(2, 2) { + type = "Dtrigger"; + setName(type); + inNames[0] = "D"; + inNames[1] = "C"; + outNames[0] = "T"; + outNames[1] = "To"; + } + enum Inputs {D, C}; + enum Outputs {T, To}; + virtual bool tick_body(double time); +}; +ADD_NEW_TO_COLLECTION(Digital, BrickDigitalTriggerD) + + +class BrickDigitalTriggerJK: public BrickDigitalBase { + MBRICK(BrickDigitalTriggerJK) + BrickDigitalTriggerJK(): BrickDigitalBase(3, 2) { + type = "JKtrigger"; + setName(type); + inNames[0] = "J"; + inNames[1] = "C"; + inNames[2] = "K"; + outNames[0] = "T"; + outNames[1] = "To"; + } + enum Inputs {J, C, K}; + enum Outputs {T, To}; + virtual void reset_specified() {pc = 0.;} + virtual bool tick_body(double time); +private: + double pc; +}; +ADD_NEW_TO_COLLECTION(Digital, BrickDigitalTriggerJK) + + +class BrickDigitalCounter2: public BrickDigitalBase { + MBRICK(BrickDigitalCounter2) + BrickDigitalCounter2(): BrickDigitalBase(2, 2) {type = "Counter2"; setName(type); inNames[0] = "/ C"; inNames[1] = "R"; v = 0.;} + enum Inputs {C, R}; + virtual void reset_specified() {v = dv = 0.;} + virtual bool tick_body(double time); +private: + double v, dv; +}; +ADD_NEW_TO_COLLECTION(Digital, BrickDigitalCounter2) + + +class BrickDigitalCounter4: public BrickDigitalBase { + MBRICK(BrickDigitalCounter4) + BrickDigitalCounter4(): BrickDigitalBase(2, 4) {type = "Counter4"; setName(type); inNames[0] = "/ C"; inNames[1] = "R"; v = 0.;} + enum Inputs {C, R}; + virtual bool tick_body(double time); +private: + double v, dv; +}; +ADD_NEW_TO_COLLECTION(Digital, BrickDigitalCounter4) + + +class BrickDigitalCounter8: public BrickDigitalBase { + MBRICK(BrickDigitalCounter8) + BrickDigitalCounter8(): BrickDigitalBase(2, 8) {type = "Counter8"; setName(type); inNames[0] = "/ C"; inNames[1] = "R"; v = 0.;} + enum Inputs {C, R}; + virtual bool tick_body(double time); +private: + double v, dv; +}; +ADD_NEW_TO_COLLECTION(Digital, BrickDigitalCounter8) + + +class BrickDigitalCoder1: public BrickDigitalBase { + MBRICK(BrickDigitalCoder1) + BrickDigitalCoder1(): BrickDigitalBase(2, 1) {type = "Coder1"; setName(type);} + virtual bool tick_body(double time) {if (inputs[1] > 0.) outputs[0] = 1.; else outputs[0] = 0.; return true;} +}; +ADD_NEW_TO_COLLECTION(Digital, BrickDigitalCoder1) + + +class BrickDigitalCoder2: public BrickDigitalBase { + MBRICK(BrickDigitalCoder2) + BrickDigitalCoder2(): BrickDigitalBase(4, 2) {type = "Coder2"; setName(type);} + virtual bool tick_body(double time); +}; +ADD_NEW_TO_COLLECTION(Digital, BrickDigitalCoder2) + + +class BrickDigitalCoder3: public BrickDigitalBase { + MBRICK(BrickDigitalCoder3) + BrickDigitalCoder3(): BrickDigitalBase(8, 3) {type = "Coder3"; setName(type);} + virtual bool tick_body(double time); +}; +ADD_NEW_TO_COLLECTION(Digital, BrickDigitalCoder3) + + +class BrickDigitalCoder4: public BrickDigitalBase { + MBRICK(BrickDigitalCoder4) + BrickDigitalCoder4(): BrickDigitalBase(16, 4) {type = "Coder4"; setName(type);} + virtual bool tick_body(double time); +}; +ADD_NEW_TO_COLLECTION(Digital, BrickDigitalCoder4) + + +class BrickDigitalDecoder1: public BrickDigitalBase { + MBRICK(BrickDigitalDecoder1) + BrickDigitalDecoder1(): BrickDigitalBase(1, 2) {type = "Decoder1"; setName(type);} + virtual bool tick_body(double time); +}; +ADD_NEW_TO_COLLECTION(Digital, BrickDigitalDecoder1) + + +class BrickDigitalDecoder2: public BrickDigitalBase { + MBRICK(BrickDigitalDecoder2) + BrickDigitalDecoder2(): BrickDigitalBase(2, 4) {type = "Decoder2"; setName(type);} + virtual bool tick_body(double time); +}; +ADD_NEW_TO_COLLECTION(Digital, BrickDigitalDecoder2) + + +class BrickDigitalDecoder3: public BrickDigitalBase { + MBRICK(BrickDigitalDecoder3) + BrickDigitalDecoder3(): BrickDigitalBase(3, 8) {type = "Decoder3"; setName(type);} + virtual bool tick_body(double time); +}; +ADD_NEW_TO_COLLECTION(Digital, BrickDigitalDecoder3) + + +class BrickDigitalDecoder4: public BrickDigitalBase { + MBRICK(BrickDigitalDecoder4) + BrickDigitalDecoder4(): BrickDigitalBase(4, 16) {type = "Decoder4"; setName(type);} + virtual bool tick_body(double time); +}; +ADD_NEW_TO_COLLECTION(Digital, BrickDigitalDecoder4) + + +class BrickDigitalMux1: public BrickDigitalBase { + MBRICK(BrickDigitalMux1) + BrickDigitalMux1(): BrickDigitalBase(3, 1) {type = "Mux1"; setName(type); inNames[2] = "A0";} + virtual bool tick_body(double time); +}; +ADD_NEW_TO_COLLECTION(Digital, BrickDigitalMux1) + + +class BrickDigitalMux2: public BrickDigitalBase { + MBRICK(BrickDigitalMux2) + BrickDigitalMux2(): BrickDigitalBase(6, 1) {type = "Mux2"; setName(type); inNames[4] = "A0"; inNames[5] = "A1";} + virtual bool tick_body(double time); +}; +ADD_NEW_TO_COLLECTION(Digital, BrickDigitalMux2) + + +class BrickDigitalMux3: public BrickDigitalBase { + MBRICK(BrickDigitalMux3) + BrickDigitalMux3(): BrickDigitalBase(11, 1) {type = "Mux3"; setName(type); inNames[8] = "A0"; inNames[9] = "A1"; inNames[10] = "A2";} + virtual bool tick_body(double time); +}; +ADD_NEW_TO_COLLECTION(Digital, BrickDigitalMux3) + + +class BrickDigitalMux4: public BrickDigitalBase { + MBRICK(BrickDigitalMux4) + BrickDigitalMux4(): BrickDigitalBase(20, 1) {type = "Mux4"; setName(type); inNames[16] = "A0"; inNames[17] = "A1"; inNames[18] = "A2"; inNames[19] = "A3";} + virtual bool tick_body(double time); +}; +ADD_NEW_TO_COLLECTION(Digital, BrickDigitalMux4) + + +class BrickDigitalDemux1: public BrickDigitalBase { + MBRICK(BrickDigitalDemux1) + BrickDigitalDemux1(): BrickDigitalBase(2, 2) {type = "Demux1"; setName(type); inNames[1] = "A0";} + virtual bool tick_body(double time); +}; +ADD_NEW_TO_COLLECTION(Digital, BrickDigitalDemux1) + + +class BrickDigitalDemux2: public BrickDigitalBase { + MBRICK(BrickDigitalDemux2) + BrickDigitalDemux2(): BrickDigitalBase(3, 4) {type = "Demux2"; setName(type); inNames[1] = "A0"; inNames[2] = "A1";} + virtual bool tick_body(double time); +}; +ADD_NEW_TO_COLLECTION(Digital, BrickDigitalDemux2) + + +class BrickDigitalDemux3: public BrickDigitalBase { + MBRICK(BrickDigitalDemux3) + BrickDigitalDemux3(): BrickDigitalBase(4, 8) {type = "Demux3"; setName(type); inNames[1] = "A0"; inNames[2] = "A1"; inNames[3] = "A2";} + virtual bool tick_body(double time); +}; +ADD_NEW_TO_COLLECTION(Digital, BrickDigitalDemux3) + + +class BrickDigitalDemux4: public BrickDigitalBase { + MBRICK(BrickDigitalDemux4) + BrickDigitalDemux4(): BrickDigitalBase(5, 16) {type = "Demux4"; setName(type); inNames[1] = "A0"; inNames[2] = "A1"; inNames[3] = "A2"; inNames[4] = "A3";} + virtual bool tick_body(double time); +}; +ADD_NEW_TO_COLLECTION(Digital, BrickDigitalDemux4) + + +class BrickDigitalDigitalToAnalog2: public BrickDigitalBase { + MBRICK(BrickDigitalDigitalToAnalog2) + BrickDigitalDigitalToAnalog2(): BrickDigitalBase(3, 1) {type = "DigitalToAnalog2"; setName(type); inNames[2] = "Max"; outNames[0] = "Output"; inputs[2] = 1.;} + virtual bool tick_body(double time) {outputs[0] = inputs[2] * (dbool(inputs[0]) + 2. * dbool(inputs[1])) / 3.; return true;} +}; +ADD_NEW_TO_COLLECTION(Digital, BrickDigitalDigitalToAnalog2) + + +class BrickDigitalDigitalToAnalog4: public BrickDigitalBase { + MBRICK(BrickDigitalDigitalToAnalog4) + BrickDigitalDigitalToAnalog4(): BrickDigitalBase(5, 1) {type = "DigitalToAnalog4"; setName(type); inNames[4] = "Max"; outNames[0] = "Output"; inputs[4] = 1.;} + virtual bool tick_body(double time); +}; +ADD_NEW_TO_COLLECTION(Digital, BrickDigitalDigitalToAnalog4) + + +class BrickDigitalDigitalToAnalog8: public BrickDigitalBase { + MBRICK(BrickDigitalDigitalToAnalog8) + BrickDigitalDigitalToAnalog8(): BrickDigitalBase(9, 1) { type = "DigitalToAnalog8"; setName(type); inNames[8] = "Max"; outNames[0] = "Output"; inputs[8] = 1.;} + virtual bool tick_body(double time); +}; +ADD_NEW_TO_COLLECTION(Digital, BrickDigitalDigitalToAnalog8) + + +class BrickDigitalAnalogToDigital2: public BrickDigitalBase { + MBRICK(BrickDigitalAnalogToDigital2) + BrickDigitalAnalogToDigital2(): BrickDigitalBase(2, 2) {type = "AnalogToDigital2"; setName(type); inNames[0] = "Input"; inNames[1] = "Max"; inputs[1] = 1.;} + enum Inputs {Input, Max}; + virtual bool tick_body(double time); +}; +ADD_NEW_TO_COLLECTION(Digital, BrickDigitalAnalogToDigital2) + + +class BrickDigitalAnalogToDigital4: public BrickDigitalBase { + MBRICK(BrickDigitalAnalogToDigital4) + BrickDigitalAnalogToDigital4(): BrickDigitalBase(2, 4) {type = "AnalogToDigital4"; setName(type); inNames[0] = "Input"; inNames[1] = "Max"; inputs[1] = 1.;} + enum Inputs {Input, Max}; + virtual bool tick_body(double time); +}; +ADD_NEW_TO_COLLECTION(Digital, BrickDigitalAnalogToDigital4) + + +class BrickDigitalAnalogToDigital8: public BrickDigitalBase { + MBRICK(BrickDigitalAnalogToDigital8) + BrickDigitalAnalogToDigital8(): BrickDigitalBase(2, 8) {type = "AnalogToDigital8"; setName(type); inNames[0] = "Input"; inNames[1] = "Max"; inputs[1] = 1.;} + enum Inputs {Input, Max}; + virtual bool tick_body(double time); +}; +ADD_NEW_TO_COLLECTION(Digital, BrickDigitalAnalogToDigital8) + +#endif // BRICK_DIGITAL_H diff --git a/mbricks/brick_emits.cpp b/mbricks/brick_emits.cpp new file mode 100644 index 0000000..6116414 --- /dev/null +++ b/mbricks/brick_emits.cpp @@ -0,0 +1,36 @@ +#include "brick_emits.h" + + +bool BrickEmitLinear::tick_body(double time) { + outputs[0] = time * inputs[Slope] + inputs[StartValue]; + return true; +} + + +bool BrickEmitSin::tick_body(double time) { + outputs[0] = inputs[Amplitude] * sin(inputs[Frequency] * time * (M_PI + M_PI) + inputs[PhaseShift]); + //cout << time << "\t: " << outputs[0] << endl; + return true; +} + + +bool BrickEmitDelta::tick_body(double time) { + outputs[0] = (pt < inputs[Time] && time >= inputs[Time]) ? 1. / dt : 0.; + //cout << time << "\t: " << outputs[0] << endl; + return true; +} + + +bool BrickEmitStep::tick_body(double time) { + if (time == inputs[Time]) outputs[0] = (inputs[StartValue] + inputs[FinishValue]) / 2.; + else outputs[0] = (time > inputs[Time]) ? inputs[FinishValue] : inputs[StartValue]; + //cout << time << "\t: " << outputs[0] << endl; + return true; +} + + +bool BrickEmitPulse::tick_body(double time) { + outputs[0] = time < inputs[StartDelay] ? 0. : (residue(time - inputs[StartDelay], inputs[Period]) <= inputs[Duration]) ? inputs[Amplitude] : 0.; + //cout << time << "\t: " << outputs[0] << endl; + return true; +} diff --git a/mbricks/brick_emits.h b/mbricks/brick_emits.h new file mode 100644 index 0000000..e0578d8 --- /dev/null +++ b/mbricks/brick_emits.h @@ -0,0 +1,115 @@ +#ifndef BRICK_EMITS_H +#define BRICK_EMITS_H + +#include "brick_base.h" +#include "brick_manager.h" + + +class BrickEmitBase: public BrickBase { +public: BrickEmitBase(int inputs_num = 1, int outputs_num = 1, int parameters_num = 0): BrickBase(inputs_num, outputs_num, parameters_num) {lib = "Emitters";} +}; + + +class BrickEmitConst: public BrickEmitBase { + MBRICK(BrickEmitConst) + BrickEmitConst(double value = 1.): BrickEmitBase(0, 1, 1) {parameters[0].setValue(value); type = "Const"; setName(type); paramNames[0] = "Const";} + void setValue(double value) {parameters[0].setValue(value);} + virtual bool tick_body(double time) {outputs[0] = parameters[0].toFloat(); return true;} +}; +ADD_NEW_TO_COLLECTION(Emitters, BrickEmitConst) + + +class BrickEmitLinear: public BrickEmitBase { + MBRICK(BrickEmitLinear) + BrickEmitLinear(double start_value = 0., double slope = 1.): BrickEmitBase(2, 1) {setParameters(start_value, slope); type = "Linear"; setName(type); inNames[0] = "Start"; inNames[1] = "Slope";} + enum Inputs {StartValue, Slope}; + void setParameters(double start_value, double slope) {inputs[StartValue] = start_value; inputs[Slope] = slope;} + virtual bool tick_body(double time); +}; +ADD_NEW_TO_COLLECTION(Emitters, BrickEmitLinear) + + +class BrickEmitSin: public BrickEmitBase { + MBRICK(BrickEmitSin) + BrickEmitSin(double amplitude = 1., double frequency = 1., double phase_shift = 0.): BrickEmitBase(3, 1) {setParameters(amplitude, frequency, phase_shift); type = "Sin"; setName(type); inNames[0] = "Amplitude"; inNames[1] = "Frequency, Hz"; inNames[2] = "Phase Shift, rad";} + enum Inputs {Amplitude, Frequency, PhaseShift}; + void setParameters(double amplitude, double frequency, double phase_shift) {inputs[Amplitude] = amplitude; inputs[Frequency] = frequency; inputs[PhaseShift] = phase_shift;} + virtual bool tick_body(double time); +}; +ADD_NEW_TO_COLLECTION(Emitters, BrickEmitSin) + + +class BrickEmitDelta: public BrickEmitBase { + MBRICK(BrickEmitDelta) + BrickEmitDelta(double time = 0.): BrickEmitBase(1, 1) {setTime(time); type = "Delta"; setName(type); inNames[0] = "Time, s";} + enum Inputs {Time}; + void setTime(double time) {inputs[Time] = time;} + virtual bool tick_body(double time); +}; +ADD_NEW_TO_COLLECTION(Emitters, BrickEmitDelta) + + +class BrickEmitStep: public BrickEmitBase { + MBRICK(BrickEmitStep) + BrickEmitStep(double time = 0., double start = 0., double finish = 1.): BrickEmitBase(3, 1) {setParameters(time, start, finish); type = "Step"; setName(type); inNames[0] = "Time, s"; inNames[1] = "Start Value"; inNames[2] = "Finish Value";} + enum Inputs {Time, StartValue, FinishValue}; + void setParameters(double time, double start, double finish) {inputs[Time] = time; inputs[StartValue] = start; inputs[FinishValue] = finish;} + virtual bool tick_body(double time); +}; +ADD_NEW_TO_COLLECTION(Emitters, BrickEmitStep) + + +class BrickEmitPulse: public BrickEmitBase { + MBRICK(BrickEmitPulse) + BrickEmitPulse(double ampl = 1., double period = 1., double duration = 0.5, double offset = 0.): BrickEmitBase(4, 1) {setParameters(ampl, period, duration, offset); type = "Pulse"; setName(type); inNames[0] = "Amplitude"; inNames[1] = "Period, s"; inNames[2] = "Duration, s"; inNames[3] = "Start Delay, s";} + enum Inputs {Amplitude, Period, Duration, StartDelay}; + void setParameters(double ampl, double period, double duration, double offset) {inputs[Amplitude] = ampl; inputs[Period] = period; inputs[Duration] = duration; inputs[StartDelay] = offset;} + virtual bool tick_body(double time); +}; +ADD_NEW_TO_COLLECTION(Emitters, BrickEmitPulse) + + +class BrickEmitStrobe: public BrickEmitBase { + MBRICK(BrickEmitStrobe) + BrickEmitStrobe(): BrickEmitBase(0, 1) {type = "Strobe"; setName(type);} + virtual bool tick_body(double time) {outputs[0] = 1. - outputs[0]; return true;} +}; +ADD_NEW_TO_COLLECTION(Emitters, BrickEmitStrobe) + + +class BrickEmitTime: public BrickEmitBase { + MBRICK(BrickEmitTime) + BrickEmitTime(): BrickEmitBase(0, 1) {type = "Time"; setName(type);} + virtual bool tick_body(double time) {outputs[0] = time; return true;} +}; +ADD_NEW_TO_COLLECTION(Emitters, BrickEmitTime) + + +class BrickEmitFrequency: public BrickEmitBase { + MBRICK(BrickEmitFrequency) + BrickEmitFrequency(): BrickEmitBase(0, 1) {type = "Frequency"; setName(type);} + virtual bool tick_body(double time) {outputs[0] = manager_->freq; return true;} +}; +ADD_NEW_TO_COLLECTION(Emitters, BrickEmitFrequency) + + +class BrickEmitNoiseRandom: public BrickEmitBase { + MBRICK(BrickEmitNoiseRandom) + BrickEmitNoiseRandom(double shift = 0., double scale = 1.): BrickEmitBase(2, 1) {setParameters(shift, scale); type = "Random"; setName(type); inNames[0] = "Shift"; inNames[1] = "Scale";} + enum Inputs {Shift, Scale}; + void setParameters(double shift, double scale) {inputs[Shift] = shift; inputs[Scale] = scale;} + virtual bool tick_body(double time) {outputs[0] = randomd() * inputs[Scale] + inputs[Shift]; return true;} +}; +ADD_NEW_TO_COLLECTION(Emitters, BrickEmitNoiseRandom) + + +class BrickEmitNoiseNormal: public BrickEmitBase { + MBRICK(BrickEmitNoiseNormal) + BrickEmitNoiseNormal(double shift = 0., double scale = 1.): BrickEmitBase(2, 1) {setParameters(shift, scale); type = "NormalNoise"; setName(type); inNames[0] = "Shift"; inNames[1] = "Scale";} + enum Inputs {Shift, Scale}; + void setParameters(double shift, double scale) {inputs[Shift] = shift; inputs[Scale] = scale;} + virtual bool tick_body(double time) {outputs[0] = randomn(inputs[Shift], inputs[Scale]); return true;} +}; +ADD_NEW_TO_COLLECTION(Emitters, BrickEmitNoiseNormal) + +#endif // BRICK_EMITS_H diff --git a/mbricks/brick_interface.cpp b/mbricks/brick_interface.cpp new file mode 100644 index 0000000..5e3683f --- /dev/null +++ b/mbricks/brick_interface.cpp @@ -0,0 +1,120 @@ +#include "brick_interface.h" + + +bool BrickInterfaceBaseIn::received(void * t, uchar * d, int s) { + mutex.lock(); + BrickInterfaceBaseIn * i = (BrickInterfaceBaseIn * )t; + memcpy(i->data.data(), d + i->header_, i->data.size() - i->header_); + ///i->struct_.readData(i->data.data()); + mutex.unlock(); + return true; +} + + +bool BrickInterfaceBaseIn::tick_body(double time) { + mutex.lock(); + /**for (uint i = 0; i < struct_.count(); ++i) + outputs[i + 1] = struct_[i].value();*/ + mutex.unlock(); + return true; +} + + +bool BrickInterfaceBaseOut::tick_body(double time) { + mutex.lock(); + /**for (uint i = 0; i < struct_.count(); ++i) + struct_[i].setValue(inputs[i]); + struct_.writeData(data.data());*/ + mutex.unlock(); + return true; +} + + +void BrickInterfaceSerialIn::started() { + parameterChanged(0); + ///struct_.writeData(data.data()); + header_ = parameters[5].toInt(); + ser.stop(false); + ser.setDevice(parameters[1].toString()); + PIFlags f = 0; + if (parameters[2].toBool()) f |= PISerial::ParityControl; + if (parameters[3].toBool()) f |= PISerial::TwoStopBits; + ser.setParameters(f); + ser.setSpeed((PISerial::Speed)parameters[4].toInt()); + ser.setThreadedReadSlot(received); + ser.setThreadedReadData(this); + //ser.setReadData(data.data(), header_, data.size() - header_); + //cout << "header " << header_ << " bytes, data " << data.size() - header_ << " bytes" << endl; + ser.start(); +} + + +bool BrickInterfaceSerialIn::tick_body(double time) { + outputs[0] = dbool(ser.isOpened()); + return BrickInterfaceBaseIn::tick_body(time); +} + + +void BrickInterfaceSerialOut::started() { + parameterChanged(0); + ser.stop(false); + ser.setDevice(parameters[1].toString()); + PIFlags f = 0; + if (parameters[2].toBool()) f |= PISerial::ParityControl; + if (parameters[3].toBool()) f |= PISerial::TwoStopBits; + ser.setParameters(f); + ser.setSpeed((PISerial::Speed)parameters[4].toInt()); + ser.initialize(); +} + + +bool BrickInterfaceSerialOut::tick_body(double time) { + BrickInterfaceBaseOut::tick_body(time); + ser.send(data.data(), data.size()); + outputs[0] = dbool(ser.isOpened()); + return true; +} + + +void BrickInterfaceUDPIn::started() { + parameterChanged(0); + eth.stop(false); + eth.setReadAddress(parameters[1].toString(), parameters[2].toInt()); + eth.setThreadedReadSlot(received); + eth.setThreadedReadData(this); + eth.start(); +} + + +bool BrickInterfaceUDPIn::tick_body(double time) { + outputs[0] = dbool(eth.isOpened()); + return BrickInterfaceBaseIn::tick_body(time); +} + + +bool BrickInterfaceUDPOut::tick_body(double time) { + BrickInterfaceBaseOut::tick_body(time); + if (eth.send(parameters[1].toString(), parameters[2].toInt(), data.data(), data.size())) + outputs[0] = 1.; + else outputs[0] = 0.; + return true; +} + + +void BrickInterfaceBinFileOut::started() { + if (file.isOpened()) file.close(); + file.open(parameters[1].toString()); + if (!file.isOpened()) file.open(parameters[1].toString(), PIIODevice::ReadWrite); + if (parameters[3].toBool() > 0) file.clear(); + file.seekToEnd(); + id = parameters[2].toInt(); +} + + +bool BrickInterfaceBinFileOut::tick_body(double time) { + BrickInterfaceBaseOut::tick_body(time); + ///file.writeToBinLog(id, data.data(), struct_.size()); + if (parameters[4].toBool() > 0) file.flush(); + return true; +} + diff --git a/mbricks/brick_interface.h b/mbricks/brick_interface.h new file mode 100644 index 0000000..c56b4fd --- /dev/null +++ b/mbricks/brick_interface.h @@ -0,0 +1,206 @@ +#ifndef BRICK_INTERFACE_H +#define BRICK_INTERFACE_H + +#include "brick_base.h" +#include "piserial.h" +#include "piethernet.h" + +static PIMutex mutex; + +class BrickInterfaceBase: public BrickBase { +public: + BrickInterfaceBase(int inputs_num = 1, int outputs_num = 1, int parameters_num = 1): BrickBase(inputs_num, outputs_num, parameters_num + 1) { + lib = "Interfaces"; + paramNames[0] = "Struct file"; + parameters[0].setValue("struct_example.conf"); + parameters[0].setType(BrickBase::File); + header_ = 0; + note_ = "\"Struct file\" is a path to *.conf file that describe struct to send or receive. See \"struct_example.conf\" for details."; + rtOnly = true; + } + virtual ~BrickInterfaceBase() {;} +protected: + virtual void parameterChanged(int index) { + if (index != 0) return; + mutex.lock(); + ///struct_.parseFile(parameters[0].toString()); + ///data.resize(struct_.size()); + mutex.unlock(); + } + ///PIStruct struct_; + PIVector data; + int header_; +}; + +class BrickInterfaceBaseIn: public BrickInterfaceBase { +public: + BrickInterfaceBaseIn(int inputs_num = 1, int outputs_num = 1, int parameters_num = 1): BrickInterfaceBase(inputs_num, outputs_num, parameters_num) {parameterChanged(0);} + virtual ~BrickInterfaceBaseIn() {;} +protected: + static bool received(void * t, uchar * d, int s); + virtual bool tick_body(double time); + virtual void parameterChanged(int index) { + if (index != 0) return; + BrickInterfaceBase::parameterChanged(0); + /**setOutputsCount(struct_.count() + 1); + for (uint i = 0; i < struct_.count(); ++i) { + outNames[i + 1] = struct_[i].name(); + outputs[i + 1] = struct_[i].value(); + }*/ + } +}; + +class BrickInterfaceBaseOut: public BrickInterfaceBase { +public: + BrickInterfaceBaseOut(int inputs_num = 1, int outputs_num = 1, int parameters_num = 1): BrickInterfaceBase(inputs_num, outputs_num, parameters_num) {parameterChanged(0);} + virtual ~BrickInterfaceBaseOut() {;} +protected: + virtual bool tick_body(double time); + virtual void parameterChanged(int index) { + if (index != 0) return; + BrickInterfaceBase::parameterChanged(0); + /**setInputsCount(struct_.count()); + for (uint i = 0; i < struct_.count(); ++i) { + inNames[i] = struct_[i].name(); + inputs[i] = struct_[i].value(); + }*/ + } +}; + + +class BrickInterfaceSerialIn: public BrickInterfaceBaseIn { + MBRICK(BrickInterfaceSerialIn) + BrickInterfaceSerialIn(): BrickInterfaceBaseIn(0, 1,5) { + type = "SerialIn"; + setName(type); + outNames[0] = "Init"; + paramNames[1] = "Device"; + paramNames[2] = "Parity control"; + paramNames[3] = "Two stop bits"; + paramNames[4] = "Baud rate"; + paramNames[5] = "Header size"; +#ifdef WINDOWS + parameters[1].setValue("COM1"); +#else + parameters[1].setValue("/dev/ttyS0"); +#endif + parameters[2].setValue(false); + parameters[3].setValue(false); + parameters[4].setValue(115200); + parameters[5].setValue(0); + note_ += "\n\"Header size\" is a bytes count from begin of struct, that contains packet attribute (need for advanced receive algorithm)."; + note_ += "\n\"Device\" is a name of your serial device, e.g. \"/dev/ttyS0\" or \"COM1\"."; + } + virtual ~BrickInterfaceSerialIn() {;} + virtual void started(); + virtual void finished() {ser.stop(false);} + virtual bool tick_body(double time); +private: + PISerial ser; +}; +ADD_NEW_TO_COLLECTION(Interfaces, BrickInterfaceSerialIn) + + +class BrickInterfaceSerialOut: public BrickInterfaceBaseOut { + MBRICK(BrickInterfaceSerialOut) + BrickInterfaceSerialOut(): BrickInterfaceBaseOut(0, 1, 4) { + type = "SerialOut"; + setName(type); + outNames[0] = "Init"; + paramNames[1] = "Device"; + paramNames[2] = "Parity control"; + paramNames[3] = "Two stop bits"; + paramNames[4] = "Baud rate"; +#ifdef WINDOWS + parameters[1].setValue("COM1"); +#else + parameters[1].setValue("/dev/ttyS0"); +#endif + parameters[2].setValue(false); + parameters[3].setValue(false); + parameters[4].setValue(115200); + note_ += "\n\"Header size\" is a bytes count from begin of struct, that contains packet attribute (need for advanced receive algorithm)."; + note_ += "\n\"Device\" is a name of your serial device, e.g. \"/dev/ttyS0\" or \"COM1\"."; + } + virtual ~BrickInterfaceSerialOut() {;} + virtual void started(); + virtual void finished() {ser.stop(false);} + virtual bool tick_body(double time); +private: + PISerial ser; +}; +ADD_NEW_TO_COLLECTION(Interfaces, BrickInterfaceSerialOut) + + +class BrickInterfaceUDPIn: public BrickInterfaceBaseIn { + MBRICK(BrickInterfaceUDPIn) + BrickInterfaceUDPIn(): BrickInterfaceBaseIn(0, 1, 2) { + type = "UDPIn"; + setName(type); + outNames[0] = "Init"; + paramNames[1] = "IP"; + paramNames[2] = "Port"; + parameters[1].setValue("127.0.0.1"); + parameters[2].setValue(1638); + } + virtual ~BrickInterfaceUDPIn() {;} + virtual void started(); + virtual void finished() {eth.stop(false);} + virtual bool tick_body(double time); +private: + PIEthernet eth; +}; +ADD_NEW_TO_COLLECTION(Interfaces, BrickInterfaceUDPIn) + + +class BrickInterfaceUDPOut: public BrickInterfaceBaseOut { + MBRICK(BrickInterfaceUDPOut) + BrickInterfaceUDPOut(): BrickInterfaceBaseOut(0, 1, 2) { + type = "UDPOut"; + setName(type); + outNames[0] = "Init"; + paramNames[1] = "IP"; + paramNames[2] = "Port"; + parameters[1].setValue("127.0.0.1"); + parameters[2].setValue(1638); + } + virtual ~BrickInterfaceUDPOut() {;} + virtual void started() {parameterChanged(0); eth.open();} + //virtual void finished() {eth.terminate();} + virtual bool tick_body(double time); +private: + PIEthernet eth; +}; +ADD_NEW_TO_COLLECTION(Interfaces, BrickInterfaceUDPOut) + + +class BrickInterfaceBinFileOut: public BrickInterfaceBaseOut { + MBRICK(BrickInterfaceBinFileOut) + BrickInterfaceBinFileOut(): BrickInterfaceBaseOut(0, 0, 4) { + type = "BinFileOut"; + setName(type); + paramNames[1] = "File"; + paramNames[2] = "ID(Dec)"; + paramNames[3] = "Overwrite"; + paramNames[4] = "Flush"; + parameters[1].setValue("binlog.dat"); + parameters[2].setValue(1); + parameters[3].setValue(false); + parameters[4].setValue(false); + parameters[1].setType(BrickBase::File); + note_ += "\nIf \"Overwrite\" is true file will be cleared before every start."; + note_ += "\nIf \"Flush\" is true file will be flushed after every tick."; + note_ += "\nb{NOTE:} this brick create binary file for \"Log Parser\"."; + rtOnly = false; + } + virtual ~BrickInterfaceBinFileOut() {;} + virtual void started(); + virtual void finished() {file.flush(); file.close();} + virtual bool tick_body(double time); +private: + ushort id; + PIFile file; +}; +ADD_NEW_TO_COLLECTION(Interfaces, BrickInterfaceBinFileOut) + +#endif // BRICK_INTERFACE_H diff --git a/mbricks/brick_link.cpp b/mbricks/brick_link.cpp new file mode 100644 index 0000000..42826cc --- /dev/null +++ b/mbricks/brick_link.cpp @@ -0,0 +1,158 @@ +#include "brick_link.h" + + +BrickLinkTransferFunction::BrickLinkTransferFunction(const PIString & num, const PIString & denom): BrickLinkBase(1, 1, 2) { + type = "TransferFunction"; + setName(type); + paramNames[1] = "Numerator"; + paramNames[2] = "Denominator"; + parameters[1] = num; + parameters[2] = denom; + interactive = true; + parameterChanged(1); +} + + +void BrickLinkTransferFunction::parameterChanged(int index) { + if (index == 0) { + KF.setMethod((PIMathSolver::Method)parameters[0].toInt()); + return; + } + PIString ts; + note_ = "Your function:\n\n"; + PIStringList sl = parameters[1].toString().split(" "); + sl.removeStrings(""); sl.removeStrings("\t"); + TF.vector_Bm.resize(sl.size()); + for (int i = sl.size_s() - 1; i >= 0; --i) { + TF.vector_Bm[i] = sl[sl.size_s() - 1 - i].toDouble(); + ts += PIString::fromNumber(TF.vector_Bm[i]); + if (i > 1) { + ts += "s^{" + PIString::fromNumber(i) + "} + "; + continue; + } + if (i > 0) ts += "s" + PIString(" + "); + } + if (ts.left(2) == "1s") ts.pop_front(); + if (ts.left(3) == "-1s") ts.replace(0, 2, "-"); + note_ += ts + "\n---\n"; + sl = parameters[2].toString().split(" "); + sl.removeStrings(""); sl.removeStrings("\t"); + TF.vector_An.resize(sl.size()); + ts.clear(); + for (int i = sl.size_s() - 1; i >= 0; --i) { + TF.vector_An[i] = sl[sl.size_s() - 1 - i].toDouble(); + ts += PIString::fromNumber(TF.vector_An[i]); + if (i > 1) { + ts += "s^{" + PIString::fromNumber(i) + "} + "; + continue; + } + if (i > 0) ts += "s" + PIString(" + "); + } + if (ts.left(2) == "1s") ts.pop_front(); + if (ts.left(3) == "-1s") ts.replace(0, 2, "-"); + note_ += ts; + note_.replaceAll("+ -", "- "); + note_.replaceAll(" + 1s", " + s"); + note_.replaceAll(" - 1s", " - s"); +} + + +bool BrickLinkTransferFunction::tick_body(double time) { + KF.setTime(time); + KF.solve(inputs[0], dt); + outputs[0] = KF.X[0]; + return true; +} + + +BrickLinkFilter1Degree::BrickLinkFilter1Degree(double t, double k): BrickLinkBase(3, 2) { + setParameters(t, k); + type = "Filter1Degree"; + setName(type); + inNames[1] = "T"; + inNames[2] = "K"; + outNames[0] = "Low Pass"; + outNames[1] = "High Pass"; + s.setPreamp(1, -1.); + makeConnections(); +} + + +bool BrickLinkFilter1Degree::tick_body(double time) { + if (inputs[T] == 0.) return false; + a.setGain(1. / inputs[T]); + s.setPreamp(0, inputs[K]); + s.setInputValue(0, inputs[Input]); + s.tick(time); + s.proceedConnections(); + a.tick(time); + a.proceedConnections(); + i.tick(time); + i.proceedConnections(); + outputs[LowPass] = i.output(); + outputs[HighPass] = s.output(); + return true; +} + + +BrickLinkFilterBandpass::BrickLinkFilterBandpass(double lf, double hf): BrickLinkBase(3, 1) { + TF.vector_Bm.resize(2); + TF.vector_An.resize(3, 1.); + type = "FilterBandpass"; + setName(type); + inNames[1] = "Low Freq"; + inNames[2] = "High Freq"; + setParameters(lf, hf); + pl = ph = 0.; +} + + +bool BrickLinkFilterBandpass::tick_body(double time) { + if (pl != inputs[LF] || ph != inputs[HF]) { + pl = inputs[LF]; + ph = inputs[HF]; + if (pl != 0.) t0 = 1. / pl; + else t0 = 0.; + if (ph != 0.) t1 = 1. / ph; + else t1 = 0.; + TF.vector_Bm[0] = 0.; + TF.vector_Bm[1] = t0; + TF.vector_An[0] = 1.; + TF.vector_An[1] = t0 + t1; + TF.vector_An[2] = t0 * t1; + KF.fromTF(TF); + } + KF.solve(inputs[0], dt); + outputs[0] = KF.X[0]; + return true; +} + + + +BrickLinkFilterMedian::BrickLinkFilterMedian(int count): BrickLinkBase(1, 1, 0) { + type = "FilterMedian"; + setName(type); + paramNames[0] = "Count"; + parameters[0].setValue(count); + note_ = "Size of window"; + setParameters(count); +} + + +bool BrickLinkFilterMedian::tick_body(double time) { + for (int i = 0; i < hist_.size_s() - 1; ++i) + hist_[i] = hist_[i + 1]; + hist_.back() = inputs[0]; + hsort = hist_; + hsort.sort(); + int size = hsort.size_s(); + if (size == 0) { + outputs[0] = 0.; + } else { + if (size % 2 == 1) + outputs[0] = hsort[size / 2]; + else + outputs[0] = (hsort[size / 2 - 1] + hsort[size / 2]) / 2.; + } + return true; +} diff --git a/mbricks/brick_link.h b/mbricks/brick_link.h new file mode 100644 index 0000000..ec4341b --- /dev/null +++ b/mbricks/brick_link.h @@ -0,0 +1,83 @@ +#ifndef BRICK_LINK_H +#define BRICK_LINK_H + +#include "brick_math.h" + + +class BrickLinkBase: public BrickBase { +public: + BrickLinkBase(int inputs_num = 1, int outputs_num = 1, int parameters_num = 0): BrickBase(inputs_num, outputs_num, parameters_num + 1) { + lib = "Links"; + paramNames[0] = "Method"; + parameters[0].setValue(-1); + note_ = "Methods description you can find in help content.";//PIMathSolver::methods_desc; + } +}; + + +class BrickLinkTransferFunction: public BrickLinkBase { + MBRICK(BrickLinkTransferFunction) + BrickLinkTransferFunction(const PIString & num = "1", const PIString & denom = "1 1"); + virtual void parameterChanged(int index); + virtual void reset_specified() {started();} + virtual void started() {parameterChanged(1); KF.fromTF(TF);} + virtual bool tick_body(double time); +private: + void copied() {reset_specified();} + PIMathSolver KF; + TransferFunction TF; +}; + + +class BrickLinkFilter1Degree: public BrickLinkBase { + MBRICK(BrickLinkFilter1Degree) + BrickLinkFilter1Degree(double t = 1., double k = 1.); + virtual void reset_specified() {s.reset(); a.reset(); i.reset(); i.setInputValue(1, 1.);} + enum Inputs {Input, T, K}; + enum Outputs {LowPass, HighPass}; + void setParameters(double t, double k) {inputs[T] = t; inputs[K] = k;} + virtual void started() {parameterChanged(0);} + virtual bool tick_body(double time); + virtual void parameterChanged(int index) {i.setParameterValue(index, parameters[index]);} +private: + void copied() {clearConnections(); makeConnections();} + void clearConnections() {s.clearConnections(); a.clearConnections(); i.clearConnections();} + void makeConnections() {connect(s, 0, a, BrickMathAmplifier::Input); BrickBase::connect(a, 0, i, 0); BrickBase::connect(i, 0, s, 1);} + BrickMathSum s; + BrickMathAmplifier a; + BrickMathIntegral i; +}; +ADD_NEW_TO_COLLECTION(Links, BrickLinkFilter1Degree) + + +class BrickLinkFilterBandpass: public BrickLinkBase { + MBRICK(BrickLinkFilterBandpass) + BrickLinkFilterBandpass(double lf = 1., double hf = 2.); + enum Inputs {Input, LF, HF}; + inline void setParameters(double lf, double hf) {inputs[LF] = lf; inputs[HF] = hf;} + virtual void parameterChanged(int index) {KF.setMethod((PIMathSolver::Method)parameters[0].toInt());} + virtual void reset_specified() {started();} + virtual void started() {pl = ph = 0.; setParameters(inputs[LF], inputs[HF]); KF.fromTF(TF);} + virtual bool tick_body(double time); +private: + double pl, ph, t0, t1; + PIMathSolver KF; + TransferFunction TF; +}; +ADD_NEW_TO_COLLECTION(Links, BrickLinkFilterBandpass) + + +class BrickLinkFilterMedian: public BrickLinkBase { + MBRICK(BrickLinkFilterMedian) + BrickLinkFilterMedian(int count = 3); + inline void setParameters(int count) {parameters[0].setValue(piMaxi(count, 0)); hist_.resize(count);} + virtual void parameterChanged(int index) {hist_.resize(parameters[0].toInt()); hsort.resize(hist_.size());} + virtual void reset_specified() {started();} + virtual void started() {hist_.fill(0.);} + virtual bool tick_body(double time); +private: + PIVector hist_, hsort; +}; +ADD_NEW_TO_COLLECTION(Links, BrickLinkFilterMedian) + +#endif // BRICK_LINK_H diff --git a/mbricks/brick_logic.cpp b/mbricks/brick_logic.cpp new file mode 100644 index 0000000..d2932be --- /dev/null +++ b/mbricks/brick_logic.cpp @@ -0,0 +1,68 @@ +#include "brick_logic.h" + + +bool BrickLogicAnd::tick_body(double time) { + bool b = true; + for (int i = 0; i < inputs_count; ++i) + if (inputs[i] <= 0) {b = false; break;} + outputs[0] = dbool(b); + return true; +} + + +bool BrickLogicOr::tick_body(double time) { + bool b = false; + for (int i = 0; i < inputs_count; ++i) + if (inputs[i] > 0) {b = true; break;} + outputs[0] = dbool(b); + return true; +} + + +bool BrickLogicXor::tick_body(double time) { + bool b = false; + for (int i = 0; i < inputs_count; ++i) { + if (inputs[i] > 0) b = (b ^ true); + else b = b ^ false; + } + outputs[0] = dbool(b); + return true; +} + + +bool BrickLogicNAnd::tick_body(double time) { + bool b = true; + for (int i = 0; i < inputs_count; ++i) + if (inputs[i] <= 0) {b = false; break;} + outputs[0] = 1. - dbool(b); + return true; +} + + +bool BrickLogicNOr::tick_body(double time) { + bool b = false; + for (int i = 0; i < inputs_count; ++i) + if (inputs[i] > 0) {b = true; break;} + outputs[0] = 1. - dbool(b); + return true; +} + + +bool BrickLogicNXor::tick_body(double time) { + bool b = false; + for (int i = 0; i < inputs_count; ++i) { + if (inputs[i] > 0) b = (b ^ true); + else b = b ^ false; + } + outputs[0] = 1. - dbool(b); + return true; +} + + +bool BrickLogicCompare::tick_body(double time) { + outputs[0] = outputs[1] = outputs[2] = 0.; + if (inputs[0] > inputs[1]) outputs[0] = 1.; + if (inputs[0] < inputs[1]) outputs[2] = 1.; + if (fabs(inputs[0] - inputs[1]) <= inputs[Tolerance]) outputs[1] = 1.; + return true; +} diff --git a/mbricks/brick_logic.h b/mbricks/brick_logic.h new file mode 100644 index 0000000..40bdd3f --- /dev/null +++ b/mbricks/brick_logic.h @@ -0,0 +1,84 @@ +#ifndef BRICK_LOGIC_H +#define BRICK_LOGIC_H + +#include "brick_base.h" + +class BrickLogicBase: public BrickBase { +public: BrickLogicBase(int inputs_num = 1, int outputs_num = 1, int parameters_num = 0): BrickBase(inputs_num, outputs_num, parameters_num) {lib = "Logics";} +}; + +class BrickLogicNot: public BrickLogicBase { + MBRICK(BrickLogicNot) + BrickLogicNot(): BrickLogicBase(1, 1) {type = "Not"; setName(type);} + virtual bool tick_body(double time) {outputs[0] = (inputs[0] > 0. ? 0. : 1.); return true;} +}; +ADD_NEW_TO_COLLECTION(Logics, BrickLogicNot) + + +class BrickLogicAnd: public BrickLogicBase { + MBRICK(BrickLogicAnd) + BrickLogicAnd(int inputs_num = 2): BrickLogicBase(inputs_num, 1) {type = "And"; setName(type); inNames[0] = ""; io_Type = BrickBase::VariableInputs;} + virtual bool tick_body(double time); +}; +ADD_NEW_TO_COLLECTION(Logics, BrickLogicAnd) + + +class BrickLogicOr: public BrickLogicBase { + MBRICK(BrickLogicOr) + BrickLogicOr(int inputs_num = 2): BrickLogicBase(inputs_num, 1) {type = "Or"; setName(type); inNames[0] = ""; io_Type = BrickBase::VariableInputs;} + virtual bool tick_body(double time); +}; +ADD_NEW_TO_COLLECTION(Logics, BrickLogicOr) + + +class BrickLogicXor: public BrickLogicBase { + MBRICK(BrickLogicXor) + BrickLogicXor(int inputs_num = 2): BrickLogicBase(inputs_num, 1) {type = "Xor"; setName(type); inNames[0] = ""; io_Type = BrickBase::VariableInputs;} + virtual bool tick_body(double time); +}; +ADD_NEW_TO_COLLECTION(Logics, BrickLogicXor) + + +class BrickLogicNAnd: public BrickLogicBase { + MBRICK(BrickLogicNAnd) + BrickLogicNAnd(int inputs_num = 2): BrickLogicBase(inputs_num, 1) {type = "NAnd"; setName(type); inNames[0] = ""; io_Type = BrickBase::VariableInputs;} + virtual bool tick_body(double time); +}; +ADD_NEW_TO_COLLECTION(Logics, BrickLogicNAnd) + + +class BrickLogicNOr: public BrickLogicBase { + MBRICK(BrickLogicNOr) + BrickLogicNOr(int inputs_num = 2): BrickLogicBase(inputs_num, 1) {type = "NOr"; setName(type); inNames[0] = ""; io_Type = BrickBase::VariableInputs;} + virtual bool tick_body(double time); +}; +ADD_NEW_TO_COLLECTION(Logics, BrickLogicNOr) + + +class BrickLogicNXor: public BrickLogicBase { + MBRICK(BrickLogicNXor) + BrickLogicNXor(int inputs_num = 2): BrickLogicBase(inputs_num, 1) {type = "NXor"; setName(type); inNames[0] = ""; io_Type = BrickBase::VariableInputs;} + virtual bool tick_body(double time); +}; +ADD_NEW_TO_COLLECTION(Logics, BrickLogicNXor) + + +class BrickLogicMemory: public BrickLogicBase { + MBRICK(BrickLogicMemory) + BrickLogicMemory(): BrickLogicBase(2, 1) {type = "Memory"; setName(type); inNames[1] = "Write";} + enum Inputs {Input, Write}; + virtual bool tick_body(double time) {if (inputs[Write] > 0) outputs[0] = inputs[Input]; return true;} +}; +ADD_NEW_TO_COLLECTION(Logics, BrickLogicMemory) + + +class BrickLogicCompare: public BrickLogicBase { + MBRICK(BrickLogicCompare) + BrickLogicCompare(double tolerance = 0.): BrickLogicBase(3, 3) {setTolerance(tolerance); type = "Compare"; setName(type); inNames[0] = ""; inNames[2] = "Tolerance"; outNames[0] = "<"; outNames[1] = "="; outNames[2] = ">";} + enum Inputs {Tolerance = 2}; + void setTolerance(double tolerance) {inputs[Tolerance] = tolerance;} + virtual bool tick_body(double time); +}; +ADD_NEW_TO_COLLECTION(Logics, BrickLogicCompare) + +#endif // BRICK_LOGIC_H diff --git a/mbricks/brick_manager.cpp b/mbricks/brick_manager.cpp new file mode 100644 index 0000000..3cdc6d6 --- /dev/null +++ b/mbricks/brick_manager.cpp @@ -0,0 +1,321 @@ +#include "brick_manager.h" +#include "brick_composite.h" + + +BrickManager::BrickManager(double frequency, double time_step) { + timer = new PITimer(run, this, PITimer::ThreadRT); + setFrequency(frequency, time_step); + ctime = 0.; + paused = false; + wasReset = true; + mode_ = BrickBase::Asynchronous; + BrickComposite::fillBaseBricks(); +} + + +void BrickManager::setFrequency(double frequency, double time_step) { + freq = frequency; + tstep = (time_step == 0.) ? 1. / frequency : time_step; + if (!isRunning()) return; + stop(); + start(); +} + + +void BrickManager::addBrick(BrickBase * brick, bool uniqueName) { + //lock(); + pause(); + brick->saveInputsToDefault(); + if (uniqueName) brick->setName(getUniqueName(brick->name())); + brick->setManager(this); + bricks.push_back(brick); + if (mode_ == BrickBase::Asynchronous) buildSchemeTree(); + resume(); + //unlock(); +} + + +void BrickManager::removeBrick(BrickBase * brick) { + for (uint i = 0; i < bricks.size(); ++i) { + if (bricks[i] == brick) { + disconnectBrick(brick); + bricks.remove(i); + buildSchemeTree(); + return; + } + } +} + + +void BrickManager::replaceBrick(BrickBase * old_b, BrickBase * new_b) { + PIVector conns = old_b->connections; + PIFlags ion = new_b->io_Type; + BrickBase * cb; + new_b->setName(getUniqueName(new_b->name())); + new_b->freqDivider_ = old_b->freqDivider_; + new_b->manager_ = old_b->manager_; + if (ion[BrickBase::VariableInputs]) + new_b->setInputsCount(old_b->inputsCount()); + if (ion[BrickBase::VariableOutputs]) + new_b->setOutputsCount(old_b->outputsCount()); + for (uint i = 0; i < bricks.size(); ++i) { + cb = bricks[i]; + if (cb == old_b) { + bricks[i] = new_b; + for (uint j = 0; j < conns.size(); ++j) { + if (conns[j].out_num > new_b->outputsCount()) continue; + new_b->addConnection(conns[j]); + } + continue; + } + for (int j = 0; j < cb->connectionsCount(); ++j) { + if (cb->connections[j].brick_to != old_b) continue; + if (cb->connections[j].out_num > new_b->inputsCount()) + cb->removeConnection(j); + else + cb->connections[j].brick_to = new_b; + } + } + PIVector * tl; + for (uint i = 0; i < tree.size(); ++i) { + tl = &tree[i]; + for (uint j = 0; j < tl->size(); ++j) { + if (tl->at(j) != old_b) continue; + (*tl)[j] = new_b; + } + } + int pc = piMin(old_b->parametersCount(), new_b->parametersCount()), ic = piMin(old_b->inputsCount(), new_b->inputsCount()); + for (int i = 0; i < pc; ++i) + new_b->setParameterValueOnly(i, old_b->parameter(i).toString()); + for (int i = 0; i < ic; ++i) + new_b->setInputValue(i, old_b->input(i)); + //delete old_b; +} + + +void BrickManager::tick(bool realTime) { + //cout << "tick\n"; + if (paused) return; + wasReset = false; + if (realTime) { + //lock(); + switch (mode_) { + case BrickBase::Synchronous: + for (uint i = 0; i < bricks.size(); ++i) + bricks[i]->tick(ctime); + proceedConnections(); + break; + case BrickBase::Asynchronous: + PIVector * tl; + for (uint i = 0; i < tree.size(); ++i) { + tl = &tree[i]; + for (uint j = 0; j < tl->size(); ++j) + (*tl)[j]->tick(ctime); + for (uint j = 0; j < tl->size(); ++j) + (*tl)[j]->proceedConnections(); + } + break; + } + ctime += tstep; + //unlock(); + } else { + switch (mode_) { + case BrickBase::Synchronous: + for (uint i = 0; i < bricks.size(); ++i) + if (!bricks[i]->isRealTimeOnly()) + bricks[i]->tick(ctime); + proceedConnections(); + break; + case BrickBase::Asynchronous: + PIVector * tl; + for (uint i = 0; i < tree.size(); ++i) { + tl = &tree[i]; + for (uint j = 0; j < tl->size(); ++j) + if (!(*tl)[j]->isRealTimeOnly()) + (*tl)[j]->tick(ctime); + for (uint j = 0; j < tl->size(); ++j) + (*tl)[j]->proceedConnections(); + } + break; + } + ctime += tstep; + } + //cout << bricks[0]->output() << endl; +} + + +void BrickManager::proceedConnections(bool compositeToo) { + for (uint i = 0; i < bricks.size(); ++i) + bricks[i]->proceedConnections(compositeToo); +} + + +void BrickManager::start() { + paused = false; + startBricks(); + timer->stop(); +#ifdef WINDOWS + timer->waitForFinish(); +#endif + timer->start(1000. / freq); +} + + +void BrickManager::stop() { + paused = false; + timer->stop(); + stopBricks(); +} + + +void BrickManager::reset() { + paused = false; + wasReset = true; + if (isRunning()) lock(); + for (int i = 0; i < 3; ++i) { + resetOutputs(); + proceedConnections(true); + } + saveInputsToDefault(); + for (uint i = 0; i < bricks.size(); ++i) + bricks[i]->reset(); + ctime = 0.; + if (isRunning()) unlock(); +} + + +void BrickManager::resetOutputs() { + for (uint i = 0; i < bricks.size(); ++i) + bricks[i]->resetOutputs(); +} + + +void BrickManager:: resetScheme() { + stop(); + paused = false; + tree.clear(); + for (uint i = 0; i < bricks.size(); ++i) + delete bricks[i]; + bricks.clear(); +} + + +bool BrickManager::loadScheme(const PIString & file) { + PIConfig sr(file); + if (!sr.isOpened()) return false; + resetScheme(); + + setFrequency(sr.getValue("Real-time Frequency", 100), sr.getValue("Real-time Step", 0.)); + setMode((BrickBase::Mode)(int)sr.getValue("Mode", 1)); + PIMathSolver::method_global = static_cast((int)sr.getValue("PIMathSolver", 0)); + + PIStringList names = sr.getValue("Bricks", PIStringList()); + PIString prefix, cname; + BrickBase * b, * bf, * bt; + if (BrickComposite::baseBricks.size() == 0) + BrickComposite::fillBaseBricks(); + for (int i = 0; i < names.size_s(); ++i) { + prefix = names[i] + " "; + cname = sr.getValue(prefix + "codeName", ""); + b = BrickComposite::findBaseBrick(cname); + if (b == 0) { + cout << "Error while loading scheme: can`t find brick \"" << cname << "\"" << endl; + continue; + } else + b = b->copy(); + loadBrick(sr, prefix, b); + bricks.push_back(b); + } + int cnt = sr.getValue("Connections count", 0); + for (int i = 0; i < cnt; ++i) { + prefix = "Connection " + PIString::fromNumber(i) + " "; + bf = findBrick(sr.getValue(prefix + "from Name", "").value().stdString()); + bt = findBrick(sr.getValue(prefix + "to Name", "").value().stdString()); + if (bf == 0 || bt == 0) { + cout << "Error while loading scheme: can`t create connection " << i << endl; + continue; + } + BrickBase::connect(bf, sr.getValue(prefix + "from Port", 0), bt, sr.getValue(prefix + "to Port", 0)); + } + buildSchemeTree(); + startBricks(); + return true; +} + + +void BrickManager::disconnectBrick(BrickBase * brick) { + for (uint i = 0; i < bricks.size(); ++i) { + for (int j = 0; j < bricks[i]->connectionsCount(); ++j) { + if (bricks[i]->connection(j).brick_to == brick) + bricks[i]->removeConnection(j); + } + } +} + + +void BrickManager::loadBrick(PIConfig & sr, const PIString & prefix, BrickBase * b) { + BrickComposite::loadBrick(sr, prefix, b, this); +} + + +void BrickManager::saveInputsToDefault() { + for (uint i = 0; i < bricks.size(); ++i) + bricks[i]->saveInputsToDefault(); +} + + +bool BrickManager::checkUniqueName(const PIString & name, BrickBase * brick) { + for (uint i = 0; i < bricks.size(); ++i) + if ((bricks[i]->name() == name) && (bricks[i] != brick)) + return false; + return true; +} + + +PIString BrickManager::getUniqueName(const PIString & name) { + int cind = 0, di = 0; + if (name.size() > 0) { + di = name.size_s() - 1; + while (name[di].isDigit()) --di; + di = name.size_s() - di - 1; + } + PIString cname, bname; + if (di > 0) bname = PIString(name).cutRight(di); + else bname = name + "_"; + cname = bname + PIString::fromNumber(cind); + bool ok = false; + while (!ok) { + ok = true; + for (uint i = 0; i < bricks.size(); ++i) { + if (bricks[i]->name() == cname) { + cind++; + ok = false; + break; + } + } + cname = bname + PIString::fromNumber(cind); + } + return cname; +} + + +BrickBase* BrickManager::findBrick(const PIString & name) { + for (uint i = 0; i < bricks.size(); ++i) + if (bricks[i]->name() == name) + return bricks[i]; + return 0; +} + + +void BrickManager::setMode(BrickBase::Mode m) { + mode_ = m; + if (mode_ == BrickBase::Asynchronous) buildSchemeTree(); + else + for (uint i = 0; i < bricks.size(); ++i) + bricks[i]->level_ = -666; +} + + +void BrickManager::buildSchemeTree() { + buildTree(bricks, tree); +} diff --git a/mbricks/brick_manager.h b/mbricks/brick_manager.h new file mode 100644 index 0000000..525c8c4 --- /dev/null +++ b/mbricks/brick_manager.h @@ -0,0 +1,67 @@ +#ifndef BRICK_MANAGER_H +#define BRICK_MANAGER_H + +#include "pitimer.h" +#include "brick_base.h" + +class BrickManager +{ + friend class BrickEmitFrequency; +public: + BrickManager(double frequency = 20., double time_step = 0.); + ~BrickManager() {delete timer;} + + void start(); + void stop(); + void reset(); + void resetOutputs(); + void resetScheme(); + bool loadScheme(const PIString & file); + inline void pause() {paused = true;} + inline void resume() {paused = false;} + inline void needLockRun(bool yes) {timer->needLockRun(yes);} + inline void lock() {timer->lock();} + inline void unlock() {timer->unlock();} + inline bool isPaused() const {return paused;} + inline bool isRunning() const {return timer->isRunning();} + inline bool isReset() const {return wasReset;} + inline double frequency() const {return freq;} + inline double * frequency_ptr() {return &freq;} + void setFrequency(double frequency, double time_step = 0.); + void addBrick(BrickBase * brick, bool uniqueName = true); + inline void addBrick(BrickBase & brick) {addBrick(&brick);} + inline void clearBricks() {bricks.clear();} + void removeBrick(BrickBase * brick); + void replaceBrick(BrickBase * old_b, BrickBase * new_b); + inline int bricksCount() const {return bricks.size();} + inline double time() const {return ctime;} + inline double * time_ptr() {return &ctime;} + inline void setTime(double time) {ctime = time;} + void tick(bool realTime = true); + void proceedConnections(bool compositeToo = false); + void saveInputsToDefault(); + inline void startBricks() {for (uint i = 0; i < bricks.size(); ++i) bricks[i]->started();} + inline void stopBricks() {for (uint i = 0; i < bricks.size(); ++i) bricks[i]->finished();} + bool checkUniqueName(const PIString & name, BrickBase * brick); + PIString getUniqueName(const PIString & name); + BrickBase * findBrick(const PIString & name); + inline BrickBase::Mode mode() const {return mode_;} + void setMode(BrickBase::Mode m); + void buildSchemeTree(); + + PIVector > tree; + +private: + static void run(void * d, int ) {((BrickManager * )d)->tick();} + void disconnectBrick(BrickBase * brick); + void loadBrick(PIConfig & sr, const PIString & prefix, BrickBase * b); + + PITimer * timer; + PIVector bricks; + BrickBase::Mode mode_; + double freq, ctime, tstep; + bool paused, wasReset; + +}; + +#endif // BRICK_MANAGER_H diff --git a/mbricks/brick_math.cpp b/mbricks/brick_math.cpp new file mode 100644 index 0000000..69b8ac3 --- /dev/null +++ b/mbricks/brick_math.cpp @@ -0,0 +1,239 @@ +#include "brick_math.h" + + +bool BrickMathSum::tick_body(double time) { + double t = 0.; + for (int i = 0; i < inputs_count; ++i) + t += inputs[i] * parameters[i].toFloat(); + outputs[0] = t; + return true; +} + + +bool BrickMathMultiply::tick_body(double time) { + double t = 1.; + for (int i = 0; i < inputs_count; ++i) + t *= inputs[i]; + outputs[0] = t; + return true; +} + + +BrickMathIntegral::BrickMathIntegral(double initial): BrickMathBase(4, 1, 1) { + type = "Integral"; + setName(type); + inNames[1] = "Enable"; + inNames[2] = "Reset"; + inNames[3] = "Initial"; + paramNames[0] = "Method"; + note_ = "While \"Reset\" = 1 \"Output\" = \"Initial\", integrate while \"Enable\" = 1.\n"; + note_ += "Methods description you can find in help content.";//PIMathSolver::methods_desc; + inputs[1] = 1.; + parameters[0].setValue(-1); + saveInputsToDefault(); + started(); +} + + +void BrickMathIntegral::started() { + TF.vector_Bm.resize(1); TF.vector_An.resize(2); + TF.vector_Bm[0] = 1.; + TF.vector_An[0] = 0.; TF.vector_An[1] = 1.; + KF.fromTF(TF); + KF.X[0] = inputs[Initial]; + KF.setMethod((PIMathSolver::Method)parameters[0].toInt()); +} + + +bool BrickMathIntegral::tick_body(double time) { + if (inputs[Reset] > 0.) + outputs[0] = KF.X[0] = inputs[Initial]; + else { + if (inputs[Enable] > 0.) { + KF.setTime(time); + KF.solve(inputs[0], dt); + outputs[0] = KF.X[0]; + } + } + return true; +} + + +bool BrickMathDerivate::tick_body(double time) { + outputs[0] = (inputs[0] - v) / dt; + v = inputs[0]; + return true; +} + + +bool BrickMathDeadZone::tick_body(double time) { + if (fabs(inputs[Input]) < inputs[Zone]) { + outputs[Output] = 0.; + outputs[InZone] = 1.; + } else { + outputs[Output] = (fabs(inputs[Input]) - inputs[Zone]) * sign(inputs[Input]); + outputs[InZone] = 0.; + } + return true; +} + + +bool BrickMathSaturation::tick_body(double time) { + if (inputs[Input] > inputs[Max]) { + outputs[Output] = inputs[Max]; + outputs[InMin] = 0.; + outputs[InMax] = 1.; + } else { + if (inputs[Input] < inputs[Min]) { + outputs[Output] = inputs[Min]; + outputs[InMin] = 1.; + outputs[InMax] = 0.; + } else { + outputs[Output] = inputs[Input]; + outputs[InMin] = 0.; + outputs[InMax] = 0.; + } + } + return true; +} + + +bool BrickMathRelay::tick_body(double time) { + if (inputs[Input] - v >= 0) {if (inputs[Input] >= inputs[Size]) outputs[0] = inputs[ActiveValue];} + else {if (inputs[Input] <= -inputs[Size]) outputs[0] = inputs[InactiveValue];} + v = inputs[Input]; + return true; +} + + +bool BrickMathDelayTicks::tick_body(double time) { + if (parameters[0].toUInt() != v.size()) setDelay(parameters[0].toInt()); + v.pop_back(); + v.push_front(inputs[0]); + outputs[0] = v.back(); + return true; +} + + +bool BrickMathDelaySeconds::tick_body(double time) { + t = round(parameters[0].toFloat() / dt) + 1; + if (t < 1) t = 1; + if (v.size() != t) { + v.resize(t); + v.assign(t, 0.); + } + v.pop_back(); + v.push_front(inputs[0]); + outputs[0] = v.back(); + return true; +} + + +BrickMathFunction::BrickMathFunction(): BrickMathBase(0, 2, 1) { + type = "Function"; + setName(type); + paramNames[0] = "Function"; + outNames[0] = "Re out"; + outNames[1] = "Im out"; + parameters[0].setValue(""); + parameterChanged(0); + interactive = true; +} + + +void BrickMathFunction::parameterChanged(int index) { + eval.clearCustomVariables(); + eval.check(parameters[0].toString()); + PIStringList sl = eval.unknownVariables(); + setInputsCount(sl.size()); + for (uint i = 0; i < sl.size(); ++i) { + eval.setVariable(sl[i]); + inNames[i] = sl[i]; + } + eval.check(parameters[0].toString()); + note_ = "Your expression:\n" + eval.error() + "\n" + eval.expression(); +} + + +bool BrickMathFunction::tick_body(double time) { + for (int i = 0; i < inputs_count; ++i) + eval.setCustomVariableValue(i, complexd(inputs[i], 0.)); + res = eval.evaluate(); + outputs[0] = res.real(); + outputs[1] = res.imag(); + return true; +} + + +BrickMathFFT::BrickMathFFT(): BrickMathBase(1, 1, 2) { + type = "FFT"; + setName(type); + paramNames[0] = "Buffer size (2^n)"; + paramNames[1] = "Inverse"; + parameters[0].setValue(256); + parameters[1].setValue(0); + t = 0; + buffered = true; +} + + +bool BrickMathFFT::tick_body(double time) { + if (v.size() != parameters[0].toUInt()) { + t = parameters[0].toInt(); + v.resize(t); + v.fill(complexd(0., 0.)); + buffer.resize(t, 0.); + t = 0; + } + outputs[0] = o[t].real(); + if (t >= v.size()) { + t = 0; + //fft(o.data(), log2((double)v.size()), parameters[1].toInt() > 0.); + for (uint i = 0; i < buffer.size(); ++i) + buffer[i] = abs(o[i]); + } else { + v[t] = inputs[0]; + ++t; + } + return true; +} + + +void BrickMathBessel::parameterChanged(int index) { + k = parameters[0].toInt(); + o = parameters[1].toInt(); + if (k == 0) outNames[0] = "J"; + if (k == 1) outNames[0] = "Y"; + if (k < 0 || k > 1) { + outNames[0] = "?"; + return; + } + outNames[0] += PIString::fromNumber(o); +} + + +bool BrickMathBessel::tick_body(double time) { + k = parameters[0].toInt(); + o = parameters[1].toInt(); + if (k == 0) { + if (o == 0) + outputs[0] = piJ0(inputs[0]); + else { + if (o == 1) + outputs[0] = piJ1(inputs[0]); + else + outputs[0] = piJn(o, inputs[0]); + } + } + if (k == 1) { + if (o == 0) + outputs[0] = piY0(inputs[0]); + else { + if (o == 1) + outputs[0] = piY1(inputs[0]); + else + outputs[0] = piYn(o, inputs[0]); + } + }; + return true; +} diff --git a/mbricks/brick_math.h b/mbricks/brick_math.h new file mode 100644 index 0000000..6d0a2ab --- /dev/null +++ b/mbricks/brick_math.h @@ -0,0 +1,248 @@ +#ifndef BRICK_MATH_H +#define BRICK_MATH_H + +#include "brick_base.h" +#include "brick_manager.h" + + +class BrickMathBase: public BrickBase { +public: BrickMathBase(int inputs_num = 1, int outputs_num = 1, int parameters_num = 0): BrickBase(inputs_num, outputs_num, parameters_num) {lib = "Mathematic";} +}; + + +class BrickMathAmplifier: public BrickMathBase { + MBRICK(BrickMathAmplifier) + BrickMathAmplifier(double gain = 1.): BrickMathBase(2, 1) {setGain(gain); type = "Gain"; setName(type); inNames[1] = "Gain";} + enum Inputs {Input, Gain}; + void setGain(double gain) {inputs[Gain] = gain;} + virtual bool tick_body(double time) {outputs[0] = inputs[Gain] * inputs[Input]; return true;} +}; +ADD_NEW_TO_COLLECTION(Mathematic, BrickMathAmplifier) + + +class BrickMathSum: public BrickMathBase { + MBRICK(BrickMathSum) + BrickMathSum(int inputs_num = 2): BrickMathBase(inputs_num, 1, inputs_num) { + parameters.resize(inputs_num); + parameters.fill(1.); + type = "Sum"; + setName(type); + parametersName_ = "Preamps"; + inNames[0] = ""; + io_Type = BrickBase::VariableInputs; + } + virtual void parameterChanged(int index) {inNames[index] = parameters[index].toFloat() >= 0. ? "+" : "-";} + virtual void inputsCountChanged(int count) {setParametersCount(count, 1.);} + void setPreamp(int input, double preamp) {parameters[input].setValue(preamp);} + virtual bool tick_body(double time); +}; +ADD_NEW_TO_COLLECTION(Mathematic, BrickMathSum) + + +class BrickMathSign: public BrickMathBase { + MBRICK(BrickMathSign) + BrickMathSign(): BrickMathBase(1, 1) {type = "Sign"; setName(type);} + enum Inputs {Input}; + virtual bool tick_body(double time) {outputs[0] = sign(inputs[Input]); return true;} +}; +ADD_NEW_TO_COLLECTION(Mathematic, BrickMathSign) + + +class BrickMathAbsolute: public BrickMathBase { + MBRICK(BrickMathAbsolute) + BrickMathAbsolute(): BrickMathBase(1, 1) {type = "Abs"; setName(type);} + enum Inputs {Input}; + virtual bool tick_body(double time) {outputs[0] = fabs(inputs[Input]); return true;} +}; +ADD_NEW_TO_COLLECTION(Mathematic, BrickMathAbsolute) + + +class BrickMathMultiply: public BrickMathBase { + MBRICK(BrickMathMultiply) + BrickMathMultiply(int inputs_num = 2): BrickMathBase(inputs_num, 1) {type = "Multiply"; setName(type); inNames[0] = ""; io_Type = BrickBase::VariableInputs;} + virtual bool tick_body(double time); +}; +ADD_NEW_TO_COLLECTION(Mathematic, BrickMathMultiply) + + +class BrickMathDivide: public BrickMathBase { + MBRICK(BrickMathDivide) + BrickMathDivide(): BrickMathBase(2, 1) {type = "Divide"; setName(type); inNames[0] = "Divident"; inNames[1] = "Divider"; inputs[1] = 2.;} + enum Inputs {Input, Divider}; + virtual bool tick_body(double time) {if (inputs[Divider] == 0.) return false; outputs[0] = inputs[Input] / inputs[Divider]; return true;} +}; +ADD_NEW_TO_COLLECTION(Mathematic, BrickMathDivide) + + +class BrickMathPower: public BrickMathBase { + MBRICK(BrickMathPower) + BrickMathPower(double power = 2.): BrickMathBase(2, 1) {setPower(power); type = "Power"; setName(type); inNames[1] = "Power";} + enum Inputs {Input, Power}; + void setPower(double power) {inputs[Power] = power;} + virtual bool tick_body(double time) {outputs[0] = pow(inputs[Input], inputs[Power]); return true;} +private: + double p; +}; +ADD_NEW_TO_COLLECTION(Mathematic, BrickMathPower) + + +class BrickMathIntegral: public BrickMathBase { + MBRICK(BrickMathIntegral) + BrickMathIntegral(double initial = 0.); + enum Inputs {Input, Enable, Reset, Initial}; + virtual void started(); + virtual void reset_specified() {KF.fromTF(TF); KF.X[0] = inputs[Initial];} + virtual void parameterChanged(int index) {KF.setMethod((PIMathSolver::Method)parameters[0].toInt());} + virtual bool tick_body(double time); +protected: + PIMathSolver KF; + TransferFunction TF; +}; +ADD_NEW_TO_COLLECTION(Mathematic, BrickMathIntegral) + + +class BrickMathIntegralSaturated: public BrickMathIntegral { + MBRICK(BrickMathIntegralSaturated) + BrickMathIntegralSaturated(double initial = 0.): BrickMathIntegral(initial) {type = "IntegralSaturated"; setName(type); setInputsCount(6); inputs[Min] = -1.; inputs[Max] = 1.; inNames[4] = "Min"; inNames[5] = "Max";} + enum Inputs {Input, Enable, Reset, Initial, Min, Max}; + virtual bool tick_body(double time) {BrickMathIntegral::tick_body(time); if (KF.X[0] < inputs[Min]) {KF.X[0] = inputs[Min]; outputs[0] = KF.X[0];} if (KF.X[0] > inputs[Max]) {KF.X[0] = inputs[Max]; outputs[0] = KF.X[0];} return true;} +}; +ADD_NEW_TO_COLLECTION(Mathematic, BrickMathIntegralSaturated) + + +class BrickMathDerivate: public BrickMathBase { + MBRICK(BrickMathDerivate) + BrickMathDerivate(): BrickMathBase(1, 1) {v = 0.; type = "Derivate"; setName(type);} + virtual bool tick_body(double time); +private: + double v; +}; +ADD_NEW_TO_COLLECTION(Mathematic, BrickMathDerivate) + + +class BrickMathDeadZone: public BrickMathBase { + MBRICK(BrickMathDeadZone) + BrickMathDeadZone(double zone = 1.): BrickMathBase(2, 2) {setZone(zone); type = "DeadZone"; setName(type); inNames[1] = "Zone"; outNames[1] = "In Zone";} + enum Inputs {Input, Zone}; + enum Outputs {Output, InZone}; + void setZone(double zone) {inputs[Zone] = zone;} + virtual bool tick_body(double time); +}; +ADD_NEW_TO_COLLECTION(Mathematic, BrickMathDeadZone) + + +class BrickMathSaturation: public BrickMathBase { + MBRICK(BrickMathSaturation) + BrickMathSaturation(double min = -1., double max = 1.): BrickMathBase(3, 3) {setRange(min, max); type = "Saturation"; setName(type); inNames[1] = "Min"; inNames[2] = "Max"; outNames[1] = "< min"; outNames[2] = "> max";} + enum Inputs {Input, Min, Max}; + enum Outputs {Output, InMin, InMax}; + void setRange(double min, double max) {inputs[Max] = max; inputs[Min] = min;} + virtual bool tick_body(double time); +}; +ADD_NEW_TO_COLLECTION(Mathematic, BrickMathSaturation) + + +class BrickMathQuantize: public BrickMathBase { + MBRICK(BrickMathQuantize) + BrickMathQuantize(double step = 1.): BrickMathBase(2, 1) {setStep(step); type = "Quantize"; setName(type); inNames[1] = "Step";} + enum Inputs {Input, Step}; + void setStep(double step) {inputs[Step] = step;} + virtual bool tick_body(double time) {outputs[0] = round(inputs[Input] / inputs[Step]) * inputs[Step]; return true;} +}; +ADD_NEW_TO_COLLECTION(Mathematic, BrickMathQuantize) + + +class BrickMathRelay: public BrickMathBase { + MBRICK(BrickMathRelay) + BrickMathRelay(double size = 1., double active = 1., double inactine = 0.): BrickMathBase(4, 1) {setParameters(size, active, inactine); v = 0.; type = "Relay"; setName(type); inNames[1] = "Size"; inNames[2] = "Active Value"; inNames[3] = "Inactive Value";} + virtual void reset_specified() {v = 0.;} + enum Inputs {Input, Size, ActiveValue, InactiveValue}; + void setParameters(double size, double active, double inactine) {inputs[Size] = size; inputs[ActiveValue] = active; inputs[InactiveValue] = inactine;} + virtual bool tick_body(double time); +private: + double v; +}; +ADD_NEW_TO_COLLECTION(Mathematic, BrickMathRelay) + + +class BrickMathDelayTicks: public BrickMathBase { + MBRICK(BrickMathDelayTicks) + BrickMathDelayTicks(uint ticks = 1): BrickMathBase(1, 1, 1) {setDelay(ticks); type = "DelayTicks"; setName(type); paramNames[0] = "Ticks"; parameters[0].setValue(1);} + virtual void reset_specified() {v.assign(v.size(), 0.);} + void setDelay(int ticks) {parameters[0].setValue(ticks); v.resize(ticks); v.assign(ticks, 0.);} + virtual bool tick_body(double time); +private: + deque v; +}; +ADD_NEW_TO_COLLECTION(Mathematic, BrickMathDelayTicks) + + +class BrickMathDelaySeconds: public BrickMathBase { + MBRICK(BrickMathDelaySeconds) + BrickMathDelaySeconds(double secs = 1.): BrickMathBase(1, 1, 1) {setDelay(secs); type = "DelaySeconds"; setName(type); paramNames[0] = "Seconds"; parameters[0].setValue(1.);} + virtual void reset_specified() {v.assign(v.size(), 0.);} + void setDelay(double secs) {parameters[0].setValue(secs);} + virtual bool tick_body(double time); +private: + deque v; + uint t; +}; +ADD_NEW_TO_COLLECTION(Mathematic, BrickMathDelaySeconds) + + +class BrickMathThreshold: public BrickMathBase { + MBRICK(BrickMathThreshold) + BrickMathThreshold(double value = 0.5): BrickMathBase(2, 1) {setThreshold(value); type = "Threshold"; setName(type); inNames[1] = "Threshold";} + enum Inputs {Input, Threshold}; + void setThreshold(double value) {inputs[Threshold] = value;} + virtual bool tick_body(double time) {outputs[0] = (inputs[Input] >= inputs[Threshold] ? 1. : 0.); return true;} +}; +ADD_NEW_TO_COLLECTION(Mathematic, BrickMathThreshold) + + +class BrickMathFunction: public BrickMathBase { + MBRICK(BrickMathFunction) + BrickMathFunction(); + virtual void parameterChanged(int index); + virtual bool tick_body(double time); +private: + PIEvaluator eval; + complexd res; +}; +ADD_NEW_TO_COLLECTION(Mathematic, BrickMathFunction) + + +class BrickMathFFT: public BrickMathBase { + MBRICK(BrickMathFFT) + BrickMathFFT(); + virtual bool tick_body(double time); + virtual void started() {t = 0;} + virtual void reset_specified() {t = 0;} +private: + PIFFT fft; + PIVector v, o; + uint t; +}; +ADD_NEW_TO_COLLECTION(Mathematic, BrickMathFFT) + + +class BrickMathCopy: public BrickMathBase { + MBRICK(BrickMathCopy) + BrickMathCopy(): BrickMathBase(1, 2) {type = "Copy"; setName(type); outNames[0] = "0"; io_Type = VariableOutputs;} + virtual bool tick_body(double time) {for (int i = 0; i < outputs_count; ++i) outputs[i] = inputs[0]; return true;} +}; +ADD_NEW_TO_COLLECTION(Mathematic, BrickMathCopy) + + +class BrickMathBessel: public BrickMathBase { + MBRICK(BrickMathBessel) + BrickMathBessel(): BrickMathBase(1, 1, 2) {type = "Bessel"; setName(type); paramNames[0] = "Kind"; paramNames[1] = "Order"; setParameterValue(0, 0); setParameterValue(1, 0);} + virtual void parameterChanged(int index); + virtual bool tick_body(double time); +private: + int o, k; +}; +ADD_NEW_TO_COLLECTION(Mathematic, BrickMathBessel) + + +#endif // BRICK_MATH_H diff --git a/mbricks/brick_statistic.cpp b/mbricks/brick_statistic.cpp new file mode 100644 index 0000000..f58ab23 --- /dev/null +++ b/mbricks/brick_statistic.cpp @@ -0,0 +1,39 @@ +#include "brick_statistic.h" + + +bool BrickStatisticMinMaxI::tick_body(double time) { + if (inputs_count == 0) return true; + min = max = inputs[0]; + for (int i = 1; i < inputs_count; ++i) { + if (min > inputs[i]) min = inputs[i]; + if (max < inputs[i]) max = inputs[i]; + } + outputs[Min] = min; + outputs[Max] = max; + return true; +} + + +bool BrickStatisticExpectation::tick_body(double time) { + t += time - pt; + pt = time; + i.setInputValue(0, inputs[0]); + i.tick(time); + if (t == 0.) outputs[0] = 0.; + else outputs[0] = i.output(0) / t; + return true; +} + + +bool BrickStatisticVariance::tick_body(double time) { + t += time - pt; + pt = time; + i0.setInputValue(0, inputs[0]); + i0.tick(time); + if (t == 0.) i1.setInputValue(0, 0.); + else i1.setInputValue(0, sqr(inputs[0] - i0.output(0) / t)); + i1.tick(time); + if (t == 0.) outputs[0] = 0.; + else outputs[0] = i1.output(0) / t; + return true; +} diff --git a/mbricks/brick_statistic.h b/mbricks/brick_statistic.h new file mode 100644 index 0000000..7a6e651 --- /dev/null +++ b/mbricks/brick_statistic.h @@ -0,0 +1,57 @@ +#ifndef BRICK_STATISTIC_H +#define BRICK_STATISTIC_H + +#include "brick_math.h" + + +class BrickStatisticBase: public BrickBase { +public: BrickStatisticBase(int inputs_num = 1, int outputs_num = 1, int parameters_num = 0): BrickBase(inputs_num, outputs_num, parameters_num) {lib = "Statistic";} +}; + + +class BrickStatisticMinMaxI: public BrickStatisticBase { + MBRICK(BrickStatisticMinMaxI) + BrickStatisticMinMaxI(): BrickStatisticBase(2, 2) {type = "MinMax_Immediate"; setName(type); outNames[Min] = "Min"; outNames[Max] = "Max"; inNames[0] = "0"; io_Type = VariableInputs;} + enum Inputs {Min, Max}; + virtual void reset_specified() {min = max = 0.;} + virtual bool tick_body(double time); +private: + double min, max; +}; +ADD_NEW_TO_COLLECTION(Statistic, BrickStatisticMinMaxI) + + +class BrickStatisticMinMaxF: public BrickStatisticBase { + MBRICK(BrickStatisticMinMaxF) + BrickStatisticMinMaxF(): BrickStatisticBase(1, 2) {type = "MinMax_Function"; setName(type); outNames[Min] = "Min"; outNames[Max] = "Max";} + enum Inputs {Min, Max}; + virtual void reset_specified() {min = max = 0.;} + virtual bool tick_body(double time) {if (min > inputs[0]) min = inputs[0]; if (max < inputs[0]) max = inputs[0]; outputs[Min] = min; outputs[Max] = max; return true;} +private: + double min, max; +}; +ADD_NEW_TO_COLLECTION(Statistic, BrickStatisticMinMaxF) + + +class BrickStatisticExpectation: public BrickStatisticBase { + MBRICK(BrickStatisticExpectation) + BrickStatisticExpectation(): BrickStatisticBase(1, 1) {type = "Expectation"; setName(type);} + virtual void reset_specified() {i.reset(); pt = t = 0.;} + virtual bool tick_body(double time); +private: + BrickMathIntegral i; double pt, t; +}; +ADD_NEW_TO_COLLECTION(Statistic, BrickStatisticExpectation) + + +class BrickStatisticVariance: public BrickStatisticBase { + MBRICK(BrickStatisticVariance) + BrickStatisticVariance(): BrickStatisticBase(1, 1) {type = "Variance"; setName(type);} + virtual void reset_specified() {i0.reset(); i1.reset(); pt = t = 0.;} + virtual bool tick_body(double time); +private: + BrickMathIntegral i0, i1; double pt, t; +}; +ADD_NEW_TO_COLLECTION(Statistic, BrickStatisticVariance) + +#endif // BRICK_STATISTIC_H diff --git a/mbricks/clean b/mbricks/clean new file mode 100644 index 0000000..bd4c90d --- /dev/null +++ b/mbricks/clean @@ -0,0 +1,4 @@ +#! /bin/bash +VERBOSE=1 make clean +rm -rvf CMakeFiles +rm -vf CMakeCache.txt Makefile cmake_install.cmake install_manifest.txt *~ *cxx moc_* *.o *.so *.dll *.a diff --git a/mbricks/clean.bat b/mbricks/clean.bat new file mode 100644 index 0000000..3a657d9 --- /dev/null +++ b/mbricks/clean.bat @@ -0,0 +1,4 @@ +#make clean +del /q /f /s CMakeFiles +rmdir /q /s CMakeFiles +del /q /f CMakeCache.txt Makefile cmake_install.cmake install_manifest.txt *.user* *~ *cxx moc_* ui_* qrc_* *.o *.exe *.a *.dll *.lib core *.qrc.depends diff --git a/mbricks/make_install.sh b/mbricks/make_install.sh new file mode 100644 index 0000000..9e65aa3 --- /dev/null +++ b/mbricks/make_install.sh @@ -0,0 +1,5 @@ +#! /bin/bash +cmake . +make $@ +cp -vf *.h /usr/include/ +cp -vf lib*.so /usr/lib/ diff --git a/mbricks/make_lib.bat b/mbricks/make_lib.bat new file mode 100644 index 0000000..afe1db5 --- /dev/null +++ b/mbricks/make_lib.bat @@ -0,0 +1 @@ +cmake_mgw -DLIB= && make install %* diff --git a/mbricks/mbricks.h b/mbricks/mbricks.h new file mode 100644 index 0000000..43471e6 --- /dev/null +++ b/mbricks/mbricks.h @@ -0,0 +1,9 @@ +#include "brick_manager.h" +#include "brick_emits.h" +#include "brick_math.h" +#include "brick_statistic.h" +#include "brick_logic.h" +#include "brick_digital.h" +#include "brick_link.h" +#include "brick_interface.h" +#include "brick_composite.h" diff --git a/mbricks/mbricks.kdev4 b/mbricks/mbricks.kdev4 new file mode 100644 index 0000000..1fb4530 --- /dev/null +++ b/mbricks/mbricks.kdev4 @@ -0,0 +1,3 @@ +[Project] +Manager=KDevCMakeManager +Name=mbricks diff --git a/pip/.gitignore b/pip/.gitignore new file mode 100644 index 0000000..da8eb4f --- /dev/null +++ b/pip/.gitignore @@ -0,0 +1,2 @@ +doc + diff --git a/pip/.kdev4/_custom.kdev4 b/pip/.kdev4/_custom.kdev4 new file mode 100644 index 0000000..34699f8 --- /dev/null +++ b/pip/.kdev4/_custom.kdev4 @@ -0,0 +1,30 @@ +[Containments][1] +ActionPluginsSource=Global +ExpandAllApplets=false +activity=pip +activityId= +desktop=-1 +formfactor=0 +geometry=0,0,1607,862 +immutability=1 +lastDesktop=-1 +lastScreen=0 +location=0 +orientation=2 +plugin=newspaper +screen=0 +wallpaperplugin=color +wallpaperpluginmode= +zvalue=0 + +[Containments][1][Wallpaper][color] +backgroundMode=0 +color1=255,255,255 +color2=0,0,0 + +[General] +immutability=1 + +[Project] +Manager=KDevCMakeManager +Name=pip diff --git a/pip/.kdev4/pip.kdev4 b/pip/.kdev4/pip.kdev4 new file mode 100644 index 0000000..9007f15 --- /dev/null +++ b/pip/.kdev4/pip.kdev4 @@ -0,0 +1,48 @@ +[Buildset] +BuildItems=@Variant(\x00\x00\x00\t\x00\x00\x00\x00\x01\x00\x00\x00\x0b\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00p\x00i\x00p) + +[CMake] +Build Directory Count=1 +CMakeDir=/usr/share/cmake/Modules +Current Build Directory Index=0 +ProjectRootRelative=./ + +[CMake][CMake Build Directory 0] +Build Directory Path=file:///home/peri4/pprojects/pip/ +Build Type= +CMake Binary=file:///usr/bin/cmake +Environment Profile= +Extra Arguments= +Install Directory=file:///usr/local + +[Defines And Includes][Compiler] +Name=GCC +Path=gcc +Type=GCC + +[Launch] +Launch Configurations=Launch Configuration 0 + +[Launch][Launch Configuration 0] +Configured Launch Modes=execute +Configured Launchers=nativeAppLauncher +Name=pip +Type=Native Application + +[Launch][Launch Configuration 0][Data] +Arguments= +Dependencies=@Variant(\x00\x00\x00\t\x00\x00\x00\x00\x01\x00\x00\x00\x0b\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00p\x00i\x00p) +Dependency Action=Build +EnvironmentGroup=default +Executable=file:///home/peri4/pprojects/pip/pip_test +External Terminal=konsole --noclose --workdir %workdir -e %exe +Project Target=pip,pip_test +Use External Terminal=false +Working Directory= +isExecutable=false + +[MakeBuilder] +Number Of Jobs=8 + +[Project] +VersionControlSupport=kdevgit diff --git a/pip/AUTHORS.txt b/pip/AUTHORS.txt new file mode 100644 index 0000000..53a973d --- /dev/null +++ b/pip/AUTHORS.txt @@ -0,0 +1,2 @@ +Pelipenko Ivan (peri4) peri4ko@yandex.ru +Bychkov Andrey () work.a.b@yandex.ru diff --git a/pip/CMakeLists.txt b/pip/CMakeLists.txt new file mode 100644 index 0000000..9d2fc5c --- /dev/null +++ b/pip/CMakeLists.txt @@ -0,0 +1,187 @@ +project(pip) +cmake_minimum_required(VERSION 2.6) + +include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}) +include(CheckFunctionExists) + +# Version +file(READ "src/piversion.h" VERSION_OFFSET LIMIT 4 OFFSET 3) +file(READ "src/piversion.h" VERSION_MAJOR LIMIT 1 OFFSET ${VERSION_OFFSET}) +file(READ "src/piversion.h" VERSION_OFFSET LIMIT 4 OFFSET 7) +file(READ "src/piversion.h" VERSION_MINOR LIMIT 1 OFFSET ${VERSION_OFFSET}) +file(READ "src/piversion.h" VERSION_OFFSET LIMIT 4 OFFSET 11) +file(READ "src/piversion.h" VERSION_REVISION LIMIT 1 OFFSET ${VERSION_OFFSET}) +file(STRINGS "src/piversion.h" VERSION_SUFFIX REGEX "\".*\"") +string(REGEX MATCH "\".*\"" VERSION_SUFFIX ${VERSION_SUFFIX}) +string(LENGTH ${VERSION_SUFFIX} SL) +math(EXPR SL '${SL}-2') +string(SUBSTRING ${VERSION_SUFFIX} 1 ${SL} VERSION_SUFFIX) +string(LENGTH ${VERSION_MAJOR} SL) +math(EXPR SL '${SL}-1') +string(SUBSTRING ${VERSION_MAJOR} 0 ${SL} VERSION_MAJOR) +string(LENGTH ${VERSION_MINOR} SL) +math(EXPR SL '${SL}-1') +string(SUBSTRING ${VERSION_MINOR} 0 ${SL} VERSION_MINOR) +string(LENGTH ${VERSION_REVISION} SL) +math(EXPR SL '${SL}-1') +string(SUBSTRING ${VERSION_REVISION} 0 ${SL} VERSION_REVISION) +set(VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_REVISION}") +set(SOVERSION ${VERSION}) +message(STATUS "Building PIP version ${VERSION}${VERSION_SUFFIX}") +file(WRITE "src/pip_version_str.h" "#define __PIP_VERSION_STR__ \"${VERSION}${VERSION_SUFFIX}\"\n") +set(CMAKE_BUILD_TYPE "Release") +set(LIBS) + + +# Sources +set(PIP_FOLDERS "." "code" "containers" "core" "io" "math" "system" "thread") +include_directories("src") +foreach(F ${PIP_FOLDERS}) + include_directories("src/${F}") + file(GLOB HS "src/${F}/*.h") + file(GLOB CS "src/${F}/*.cpp") + list(APPEND HDRS ${HS}) + list(APPEND CPPS ${CS}) +endforeach(F) + +# Check Bessel functions +set(CMAKE_REQUIRED_INCLUDES math.h) +set(CMAKE_REQUIRED_LIBRARIES m) +CHECK_FUNCTION_EXISTS(j0 PIP_MATH_J0) +CHECK_FUNCTION_EXISTS(j1 PIP_MATH_J1) +CHECK_FUNCTION_EXISTS(jn PIP_MATH_JN) +CHECK_FUNCTION_EXISTS(y0 PIP_MATH_Y0) +CHECK_FUNCTION_EXISTS(y1 PIP_MATH_Y1) +CHECK_FUNCTION_EXISTS(yn PIP_MATH_YN) +if (PIP_MATH_J0) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DPIP_MATH_J0") +endif () +if (PIP_MATH_J1) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DPIP_MATH_J1") +endif () +if (PIP_MATH_JN) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DPIP_MATH_JN") +endif () +if (PIP_MATH_Y0) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DPIP_MATH_Y0") +endif () +if (PIP_MATH_Y1) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DPIP_MATH_Y1") +endif () +if (PIP_MATH_YN) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DPIP_MATH_YN") +endif () + + +# Check if RT timers exists +set(CMAKE_REQUIRED_INCLUDES time.h) +if (DEFINED ENV{QNX_HOST}) + set(CMAKE_REQUIRED_LIBRARIES ) +else () + set(CMAKE_REQUIRED_LIBRARIES rt) +endif () +CHECK_FUNCTION_EXISTS(timer_create PIP_TIMER_RT_0) +CHECK_FUNCTION_EXISTS(timer_settime PIP_TIMER_RT_1) +CHECK_FUNCTION_EXISTS(timer_delete PIP_TIMER_RT_2) +if (PIP_TIMER_RT_0 AND PIP_TIMER_RT_1 AND PIP_TIMER_RT_2) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DPIP_TIMER_RT") + message(STATUS "Available timers: Thread, ThreadRT, Pool") +else () + message(STATUS "Available timers: Thread, Pool") +endif () + + +# Check if USB is on (to enable use "-DUSB=" argument of cmake) +if (DEFINED USB) + message(STATUS "Building with USB support") + unset(USB) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DPIP_USB") + list(APPEND LIBS usb) +else () + message(STATUS "Building without USB support") +endif () + + +# Check if STL containers is on (to enable use "-DSTL=" argument of cmake) +if (DEFINED STL) + message(STATUS "Building with STL containers") + unset(STL) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DPIP_CONTAINERS_STL") +else () + message(STATUS "Building with PIP containers") +endif () + + +# Add library +if (${WIN32}) + list(APPEND LIBS ws2_32 Iphlpapi Psapi) + #execute_process(COMMAND "make_rc_win.bat" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} OUTPUT_QUIET) + #list(APPEND CPPS "pip_resource_win.o") + list(APPEND CPPS "pip_resource_win.rc") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DPSAPI_VERSION=1") + add_library(pip SHARED ${CPPS}) + if (${CMAKE_C_COMPILER} STREQUAL "cl") + include(GenerateExportHeader) + generate_export_header(pip) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /O2 /Ob2 /Ot") + #set(${CMAKE_C_FLAGS} "/O2 /Ob2 /Ot") + else () + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2") + #set(${CMAKE_CXX_FLAGS} "-O2") + endif () +else () + set(${CMAKE_CXX_FLAGS} "-O2") + if (DEFINED ENV{QNX_HOST}) + list(APPEND LIBS socket) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ftemplate-depth-32") + add_library(pip STATIC ${CPPS}) + else () + list(APPEND LIBS pthread) + if (NOT APPLE) + list(APPEND LIBS rt) + endif() + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall") + #set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g3") + add_library(pip SHARED ${CPPS}) + endif () +endif () +target_link_libraries(pip ${LIBS}) +#install(TARGETS pip DESTINATION bin) +set(CMAKE_C_FLAGS "${CMAKE_CXX_FLAGS}") + +# Test program +#find_package(Qt4 REQUIRED) +#include_directories(${QT_INCLUDES}) +add_executable(pip_test "main.cpp") +target_link_libraries(pip_test pip)# ${QT_QTCORE_LIBRARY}) +#target_link_libraries(pip_test pip) + + +# Install +# Check if system or local install will be used (to system install use "-DLIB=" argument of cmake) +if (DEFINED LIB) + set(LIB 1) + if (${WIN32}) + find_package(MinGW REQUIRED) + set(CMAKE_INSTALL_PREFIX ${MINGW_DIR}) + install(FILES ${HDRS} DESTINATION ${MINGW_INCLUDE}/pip) + install(TARGETS pip DESTINATION ${MINGW_LIB}) + else () + set(CMAKE_INSTALL_PREFIX /usr) + install(FILES ${HDRS} DESTINATION ${CMAKE_INSTALL_PREFIX}/include/pip) + install(TARGETS pip DESTINATION ${CMAKE_INSTALL_PREFIX}/lib) + endif () + message(STATUS "Install to system \"${CMAKE_INSTALL_PREFIX}\"") + # Precompiled header + #add_custom_target(pip_pch ALL COMMAND ${CMAKE_CXX_COMPILER} -O2 -fPIC -g3 ${CMAKE_INSTALL_PREFIX}/include/pip/pip.h DEPENDS pip SOURCES ${HDRS}) + #list(APPEND HDRS "pip.h.gch") + install(FILES "FindPIP.cmake" DESTINATION ${CMAKE_ROOT}/Modules) +else () + install(TARGETS pip DESTINATION bin) + message(STATUS "Install to local \"bin\"") +endif () + +# Utils +add_subdirectory("utils/system_test") +add_subdirectory("utils/remote_console") +add_subdirectory("utils/code_model_generator") diff --git a/pip/CMakeLists.txt.user b/pip/CMakeLists.txt.user new file mode 100644 index 0000000..bb46ae5 --- /dev/null +++ b/pip/CMakeLists.txt.user @@ -0,0 +1,205 @@ + + + + + + EnvironmentId + {948faa78-0b50-402e-a285-1bca3b08de64} + + + ProjectExplorer.Project.ActiveTarget + 0 + + + ProjectExplorer.Project.EditorSettings + + true + false + false + + Cpp + + CppGlobal + + + + QmlJS + + QmlJSGlobal + + + 2 + UTF-8 + false + 4 + false + 80 + true + true + 1 + true + false + 0 + true + 0 + 8 + true + 1 + true + true + true + false + + + + ProjectExplorer.Project.PluginSettings + + + + ProjectExplorer.Project.Target.0 + + DesktopBuild + DesktopBuild + {3c749452-9483-442d-b011-933a1b5dac10} + 0 + 0 + 0 + + false + C:/libs/pip + + + + + false + true + Сборка + + CMakeProjectManager.MakeStep + + 1 + Сборка + + ProjectExplorer.BuildSteps.Build + + + + clean + + true + true + Сборка + + CMakeProjectManager.MakeStep + + 1 + ОчиÑтка + + ProjectExplorer.BuildSteps.Clean + + 2 + false + + all + + CMakeProjectManager.CMakeBuildConfiguration + + 1 + + + 0 + УÑтановка + + ProjectExplorer.BuildSteps.Deploy + + 1 + Ð›Ð¾ÐºÐ°Ð»ÑŒÐ½Ð°Ñ ÑƒÑтановка + + ProjectExplorer.DefaultDeployConfiguration + + 1 + + + pip_test + + false + + 2 + + pip_test + + CMakeProjectManager.CMakeRunConfiguration.pip_test + 3768 + false + true + false + false + true + + + pip_system_test + + false + + 2 + + pip_system_test + + CMakeProjectManager.CMakeRunConfiguration.pip_system_test + 3768 + false + true + false + false + true + + + pip_remote_console + + false + + 2 + + pip_remote_console + + CMakeProjectManager.CMakeRunConfiguration.pip_remote_console + 3768 + false + true + false + false + true + + + pip_cmg + + false + + 2 + + pip_cmg + + CMakeProjectManager.CMakeRunConfiguration.pip_cmg + 3768 + false + true + false + false + true + + 4 + + + + ProjectExplorer.Project.TargetCount + 1 + + + ProjectExplorer.Project.Updater.FileVersion + 16 + + + Version + 16 + + diff --git a/pip/Doxyfile b/pip/Doxyfile new file mode 100644 index 0000000..2c6d54c --- /dev/null +++ b/pip/Doxyfile @@ -0,0 +1,2377 @@ +# Doxyfile 1.8.8 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project. +# +# All text after a double hash (##) is considered a comment and is placed in +# front of the TAG it is preceding. +# +# All text after a single hash (#) is considered a comment and will be ignored. +# The format is: +# TAG = value [value, ...] +# For lists, items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (\" \"). + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# This tag specifies the encoding used for all characters in the config file +# that follow. The default is UTF-8 which is also the encoding used for all text +# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv +# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv +# for the list of possible encodings. +# The default value is: UTF-8. + +DOXYFILE_ENCODING = UTF-8 + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by +# double-quotes, unless you are using Doxywizard) that should identify the +# project for which the documentation is generated. This name is used in the +# title of most generated pages and in a few other places. +# The default value is: My Project. + +PROJECT_NAME = PIP + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. This +# could be handy for archiving the generated documentation or if some version +# control system is used. + +PROJECT_NUMBER = 0.4.1_alpha3 + +# Using the PROJECT_BRIEF tag one can provide an optional one line description +# for a project that appears at the top of each page and should give viewer a +# quick idea about the purpose of the project. Keep the description short. + +PROJECT_BRIEF = "Platform-Independent Primitives" + +# With the PROJECT_LOGO tag one can specify an logo or icon that is included in +# the documentation. The maximum height of the logo should not exceed 55 pixels +# and the maximum width should not exceed 200 pixels. Doxygen will copy the logo +# to the output directory. + +PROJECT_LOGO = + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path +# into which the generated documentation will be written. If a relative path is +# entered, it will be relative to the location where doxygen was started. If +# left blank the current directory will be used. + +OUTPUT_DIRECTORY = doc + +# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 4096 sub- +# directories (in 2 levels) under the output directory of each output format and +# will distribute the generated files over these directories. Enabling this +# option can be useful when feeding doxygen a huge amount of source files, where +# putting all generated files in the same directory would otherwise causes +# performance problems for the file system. +# The default value is: NO. + +CREATE_SUBDIRS = NO + +# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII +# characters to appear in the names of generated files. If set to NO, non-ASCII +# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode +# U+3044. +# The default value is: NO. + +ALLOW_UNICODE_NAMES = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese, +# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States), +# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian, +# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages), +# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian, +# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian, +# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish, +# Ukrainian and Vietnamese. +# The default value is: English. + +OUTPUT_LANGUAGE = English + +# If the BRIEF_MEMBER_DESC tag is set to YES doxygen will include brief member +# descriptions after the members that are listed in the file and class +# documentation (similar to Javadoc). Set to NO to disable this. +# The default value is: YES. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES doxygen will prepend the brief +# description of a member or function before the detailed description +# +# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. +# The default value is: YES. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator that is +# used to form the text in various listings. Each string in this list, if found +# as the leading text of the brief description, will be stripped from the text +# and the result, after processing the whole list, is used as the annotated +# text. Otherwise, the brief description is used as-is. If left blank, the +# following values are used ($name is automatically replaced with the name of +# the entity):The $name class, The $name widget, The $name file, is, provides, +# specifies, contains, represents, a, an and the. + +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# doxygen will generate a detailed section even if there is only a brief +# description. +# The default value is: NO. + +ALWAYS_DETAILED_SEC = NO + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. +# The default value is: NO. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES doxygen will prepend the full path +# before files name in the file list and in the header files. If set to NO the +# shortest path that makes the file name unique will be used +# The default value is: YES. + +FULL_PATH_NAMES = YES + +# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. +# Stripping is only done if one of the specified strings matches the left-hand +# part of the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the path to +# strip. +# +# Note that you can specify absolute paths here, but also relative paths, which +# will be relative from the directory where doxygen is started. +# This tag requires that the tag FULL_PATH_NAMES is set to YES. + +STRIP_FROM_PATH = + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the +# path mentioned in the documentation of a class, which tells the reader which +# header file to include in order to use a class. If left blank only the name of +# the header file containing the class definition is used. Otherwise one should +# specify the list of include paths that are normally passed to the compiler +# using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but +# less readable) file names. This can be useful is your file systems doesn't +# support long names like on DOS, Mac, or CD-ROM. +# The default value is: NO. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the +# first line (until the first dot) of a Javadoc-style comment as the brief +# description. If set to NO, the Javadoc-style will behave just like regular Qt- +# style comments (thus requiring an explicit @brief command for a brief +# description.) +# The default value is: NO. + +JAVADOC_AUTOBRIEF = NO + +# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first +# line (until the first dot) of a Qt-style comment as the brief description. If +# set to NO, the Qt-style will behave just like regular Qt-style comments (thus +# requiring an explicit \brief command for a brief description.) +# The default value is: NO. + +QT_AUTOBRIEF = NO + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a +# multi-line C++ special comment block (i.e. a block of //! or /// comments) as +# a brief description. This used to be the default behavior. The new default is +# to treat a multi-line C++ comment block as a detailed description. Set this +# tag to YES if you prefer the old behavior instead. +# +# Note that setting this tag to YES also means that rational rose comments are +# not recognized any more. +# The default value is: NO. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the +# documentation from any documented member that it re-implements. +# The default value is: YES. + +INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce a +# new page for each member. If set to NO, the documentation of a member will be +# part of the file/class/namespace that contains it. +# The default value is: NO. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen +# uses this value to replace tabs by spaces in code fragments. +# Minimum value: 1, maximum value: 16, default value: 4. + +TAB_SIZE = 4 + +# This tag can be used to specify a number of aliases that act as commands in +# the documentation. An alias has the form: +# name=value +# For example adding +# "sideeffect=@par Side Effects:\n" +# will allow you to put the command \sideeffect (or @sideeffect) in the +# documentation, which will result in a user-defined paragraph with heading +# "Side Effects:". You can put \n's in the value part of an alias to insert +# newlines. + +ALIASES = "handlers=\name Handlers" \ + "vhandlers=\name Virtual handlers" \ + "events=\name Events" \ + "ioparams=\name Configurable parameters" + +# This tag can be used to specify a number of word-keyword mappings (TCL only). +# A mapping has the form "name=value". For example adding "class=itcl::class" +# will allow you to use the command class in the itcl::class meaning. + +TCL_SUBST = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources +# only. Doxygen will then generate output that is more tailored for C. For +# instance, some of the names that are used will be different. The list of all +# members will be omitted, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_FOR_C = NO + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or +# Python sources only. Doxygen will then generate output that is more tailored +# for that language. For instance, namespaces will be presented as packages, +# qualified scopes will look different, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran +# sources. Doxygen will then generate output that is tailored for Fortran. +# The default value is: NO. + +OPTIMIZE_FOR_FORTRAN = NO + +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL +# sources. Doxygen will then generate output that is tailored for VHDL. +# The default value is: NO. + +OPTIMIZE_OUTPUT_VHDL = NO + +# Doxygen selects the parser to use depending on the extension of the files it +# parses. With this tag you can assign which parser to use for a given +# extension. Doxygen has a built-in mapping, but you can override or extend it +# using this tag. The format is ext=language, where ext is a file extension, and +# language is one of the parsers supported by doxygen: IDL, Java, Javascript, +# C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran: +# FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran: +# Fortran. In the later case the parser tries to guess whether the code is fixed +# or free formatted code, this is the default for Fortran type files), VHDL. For +# instance to make doxygen treat .inc files as Fortran files (default is PHP), +# and .f files as C (default is Fortran), use: inc=Fortran f=C. +# +# Note For files without extension you can use no_extension as a placeholder. +# +# Note that for custom extensions you also need to set FILE_PATTERNS otherwise +# the files are not read by doxygen. + +EXTENSION_MAPPING = + +# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments +# according to the Markdown format, which allows for more readable +# documentation. See http://daringfireball.net/projects/markdown/ for details. +# The output of markdown processing is further processed by doxygen, so you can +# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in +# case of backward compatibilities issues. +# The default value is: YES. + +MARKDOWN_SUPPORT = YES + +# When enabled doxygen tries to link words that correspond to documented +# classes, or namespaces to their corresponding documentation. Such a link can +# be prevented in individual cases by by putting a % sign in front of the word +# or globally by setting AUTOLINK_SUPPORT to NO. +# The default value is: YES. + +AUTOLINK_SUPPORT = YES + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want +# to include (a tag file for) the STL sources as input, then you should set this +# tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); +# versus func(std::string) {}). This also make the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. +# The default value is: NO. + +BUILTIN_STL_SUPPORT = NO + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. +# The default value is: NO. + +CPP_CLI_SUPPORT = NO + +# Set the SIP_SUPPORT tag to YES if your project consists of sip (see: +# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen +# will parse them like normal C++ but will assume all classes use public instead +# of private inheritance when no explicit protection keyword is present. +# The default value is: NO. + +SIP_SUPPORT = NO + +# For Microsoft's IDL there are propget and propput attributes to indicate +# getter and setter methods for a property. Setting this option to YES will make +# doxygen to replace the get and set methods by a property in the documentation. +# This will only work if the methods are indeed getting or setting a simple +# type. If this is not the case, or you want to show the methods anyway, you +# should set this option to NO. +# The default value is: YES. + +IDL_PROPERTY_SUPPORT = NO + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES, then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. +# The default value is: NO. + +DISTRIBUTE_GROUP_DOC = NO + +# Set the SUBGROUPING tag to YES to allow class member groups of the same type +# (for instance a group of public functions) to be put as a subgroup of that +# type (e.g. under the Public Functions section). Set it to NO to prevent +# subgrouping. Alternatively, this can be done per class using the +# \nosubgrouping command. +# The default value is: YES. + +SUBGROUPING = NO + +# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions +# are shown inside the group in which they are included (e.g. using \ingroup) +# instead of on a separate page (for HTML and Man pages) or section (for LaTeX +# and RTF). +# +# Note that this feature does not work in combination with +# SEPARATE_MEMBER_PAGES. +# The default value is: NO. + +INLINE_GROUPED_CLASSES = NO + +# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions +# with only public data fields or simple typedef fields will be shown inline in +# the documentation of the scope in which they are defined (i.e. file, +# namespace, or group documentation), provided this scope is documented. If set +# to NO, structs, classes, and unions are shown on a separate page (for HTML and +# Man pages) or section (for LaTeX and RTF). +# The default value is: NO. + +INLINE_SIMPLE_STRUCTS = NO + +# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or +# enum is documented as struct, union, or enum with the name of the typedef. So +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct +# with name TypeT. When disabled the typedef will appear as a member of a file, +# namespace, or class. And the struct will be named TypeS. This can typically be +# useful for C code in case the coding convention dictates that all compound +# types are typedef'ed and only the typedef is referenced, never the tag name. +# The default value is: NO. + +TYPEDEF_HIDES_STRUCT = NO + +# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This +# cache is used to resolve symbols given their name and scope. Since this can be +# an expensive process and often the same symbol appears multiple times in the +# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small +# doxygen will become slower. If the cache is too large, memory is wasted. The +# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range +# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 +# symbols. At the end of a run doxygen will report the cache usage and suggest +# the optimal cache size from a speed point of view. +# Minimum value: 0, maximum value: 9, default value: 0. + +LOOKUP_CACHE_SIZE = 0 + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in +# documentation are documented, even if no documentation was available. Private +# class members and static file members will be hidden unless the +# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. +# Note: This will also disable the warnings about undocumented members that are +# normally produced when WARNINGS is set to YES. +# The default value is: NO. + +EXTRACT_ALL = NO + +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class will +# be included in the documentation. +# The default value is: NO. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal +# scope will be included in the documentation. +# The default value is: NO. + +EXTRACT_PACKAGE = NO + +# If the EXTRACT_STATIC tag is set to YES all static members of a file will be +# included in the documentation. +# The default value is: NO. + +EXTRACT_STATIC = NO + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) defined +# locally in source files will be included in the documentation. If set to NO +# only classes defined in header files are included. Does not have any effect +# for Java sources. +# The default value is: YES. + +EXTRACT_LOCAL_CLASSES = YES + +# This flag is only useful for Objective-C code. When set to YES local methods, +# which are defined in the implementation section but not in the interface are +# included in the documentation. If set to NO only methods in the interface are +# included. +# The default value is: NO. + +EXTRACT_LOCAL_METHODS = YES + +# If this flag is set to YES, the members of anonymous namespaces will be +# extracted and appear in the documentation as a namespace called +# 'anonymous_namespace{file}', where file will be replaced with the base name of +# the file that contains the anonymous namespace. By default anonymous namespace +# are hidden. +# The default value is: NO. + +EXTRACT_ANON_NSPACES = NO + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all +# undocumented members inside documented classes or files. If set to NO these +# members will be included in the various overviews, but no documentation +# section is generated. This option has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_MEMBERS = YES + +# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. If set +# to NO these classes will be included in the various overviews. This option has +# no effect if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_CLASSES = YES + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend +# (class|struct|union) declarations. If set to NO these declarations will be +# included in the documentation. +# The default value is: NO. + +HIDE_FRIEND_COMPOUNDS = YES + +# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any +# documentation blocks found inside the body of a function. If set to NO these +# blocks will be appended to the function's detailed documentation block. +# The default value is: NO. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation that is typed after a +# \internal command is included. If the tag is set to NO then the documentation +# will be excluded. Set it to YES to include the internal documentation. +# The default value is: NO. + +INTERNAL_DOCS = NO + +# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file +# names in lower-case letters. If set to YES upper-case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# and Mac users are advised to set this option to NO. +# The default value is: system dependent. + +CASE_SENSE_NAMES = NO + +# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with +# their full class and namespace scopes in the documentation. If set to YES the +# scope will be hidden. +# The default value is: NO. + +HIDE_SCOPE_NAMES = NO + +# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of +# the files that are included by a file in the documentation of that file. +# The default value is: YES. + +SHOW_INCLUDE_FILES = NO + +# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each +# grouped member an include statement to the documentation, telling the reader +# which file to include in order to use the member. +# The default value is: NO. + +SHOW_GROUPED_MEMB_INC = NO + +# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include +# files with double quotes in the documentation rather than with sharp brackets. +# The default value is: NO. + +FORCE_LOCAL_INCLUDES = NO + +# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the +# documentation for inline members. +# The default value is: YES. + +INLINE_INFO = NO + +# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the +# (detailed) documentation of file and class members alphabetically by member +# name. If set to NO the members will appear in declaration order. +# The default value is: YES. + +SORT_MEMBER_DOCS = NO + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief +# descriptions of file, namespace and class members alphabetically by member +# name. If set to NO the members will appear in declaration order. Note that +# this will also influence the order of the classes in the class list. +# The default value is: NO. + +SORT_BRIEF_DOCS = NO + +# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the +# (brief and detailed) documentation of class members so that constructors and +# destructors are listed first. If set to NO the constructors will appear in the +# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. +# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief +# member documentation. +# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting +# detailed member documentation. +# The default value is: NO. + +SORT_MEMBERS_CTORS_1ST = NO + +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy +# of group names into alphabetical order. If set to NO the group names will +# appear in their defined order. +# The default value is: NO. + +SORT_GROUP_NAMES = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by +# fully-qualified names, including namespaces. If set to NO, the class list will +# be sorted only by class name, not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the alphabetical +# list. +# The default value is: NO. + +SORT_BY_SCOPE_NAME = NO + +# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper +# type resolution of all parameters of a function it will reject a match between +# the prototype and the implementation of a member function even if there is +# only one candidate or it is obvious which candidate to choose by doing a +# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still +# accept a match between prototype and implementation in such cases. +# The default value is: NO. + +STRICT_PROTO_MATCHING = NO + +# The GENERATE_TODOLIST tag can be used to enable ( YES) or disable ( NO) the +# todo list. This list is created by putting \todo commands in the +# documentation. +# The default value is: YES. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable ( YES) or disable ( NO) the +# test list. This list is created by putting \test commands in the +# documentation. +# The default value is: YES. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable ( YES) or disable ( NO) the bug +# list. This list is created by putting \bug commands in the documentation. +# The default value is: YES. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable ( YES) or disable ( NO) +# the deprecated list. This list is created by putting \deprecated commands in +# the documentation. +# The default value is: YES. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional documentation +# sections, marked by \if ... \endif and \cond +# ... \endcond blocks. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the +# initial value of a variable or macro / define can have for it to appear in the +# documentation. If the initializer consists of more lines than specified here +# it will be hidden. Use a value of 0 to hide initializers completely. The +# appearance of the value of individual variables and macros / defines can be +# controlled using \showinitializer or \hideinitializer command in the +# documentation regardless of this setting. +# Minimum value: 0, maximum value: 10000, default value: 30. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at +# the bottom of the documentation of classes and structs. If set to YES the list +# will mention the files that were used to generate the documentation. +# The default value is: YES. + +SHOW_USED_FILES = NO + +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This +# will remove the Files entry from the Quick Index and from the Folder Tree View +# (if specified). +# The default value is: YES. + +SHOW_FILES = YES + +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces +# page. This will remove the Namespaces entry from the Quick Index and from the +# Folder Tree View (if specified). +# The default value is: YES. + +SHOW_NAMESPACES = YES + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from +# the version control system). Doxygen will invoke the program by executing (via +# popen()) the command command input-file, where command is the value of the +# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided +# by doxygen. Whatever the program writes to standard output is used as the file +# version. For an example see the documentation. + +FILE_VERSION_FILTER = + +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed +# by doxygen. The layout file controls the global structure of the generated +# output files in an output format independent way. To create the layout file +# that represents doxygen's defaults, run doxygen with the -l option. You can +# optionally specify a file name after the option, if omitted DoxygenLayout.xml +# will be used as the name of the layout file. +# +# Note that if you run doxygen from a directory containing a file called +# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE +# tag is left empty. + +LAYOUT_FILE = + +# The CITE_BIB_FILES tag can be used to specify one or more bib files containing +# the reference definitions. This must be a list of .bib files. The .bib +# extension is automatically appended if omitted. This requires the bibtex tool +# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info. +# For LaTeX the style of the bibliography can be controlled using +# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the +# search path. See also \cite for info how to create references. + +CITE_BIB_FILES = + +#--------------------------------------------------------------------------- +# Configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated to +# standard output by doxygen. If QUIET is set to YES this implies that the +# messages are off. +# The default value is: NO. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated to standard error ( stderr) by doxygen. If WARNINGS is set to YES +# this implies that the warnings are on. +# +# Tip: Turn warnings on while writing the documentation. +# The default value is: YES. + +WARNINGS = YES + +# If the WARN_IF_UNDOCUMENTED tag is set to YES, then doxygen will generate +# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag +# will automatically be disabled. +# The default value is: YES. + +WARN_IF_UNDOCUMENTED = YES + +# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some parameters +# in a documented function, or documenting parameters that don't exist or using +# markup commands wrongly. +# The default value is: YES. + +WARN_IF_DOC_ERROR = YES + +# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that +# are documented, but have no documentation for their parameters or return +# value. If set to NO doxygen will only warn about wrong or incomplete parameter +# documentation, but not about the absence of documentation. +# The default value is: NO. + +WARN_NO_PARAMDOC = NO + +# The WARN_FORMAT tag determines the format of the warning messages that doxygen +# can produce. The string should contain the $file, $line, and $text tags, which +# will be replaced by the file and line number from which the warning originated +# and the warning text. Optionally the format may contain $version, which will +# be replaced by the version of the file (if it could be obtained via +# FILE_VERSION_FILTER) +# The default value is: $file:$line: $text. + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning and error +# messages should be written. If left blank the output is written to standard +# error (stderr). + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# Configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag is used to specify the files and/or directories that contain +# documented source files. You may enter file names like myfile.cpp or +# directories like /usr/src/myproject. Separate the files or directories with +# spaces. +# Note: If this tag is empty the current directory is searched. + +INPUT = src + +# This tag can be used to specify the character encoding of the source files +# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses +# libiconv (or the iconv built into libc) for the transcoding. See the libiconv +# documentation (see: http://www.gnu.org/software/libiconv) for the list of +# possible encodings. +# The default value is: UTF-8. + +INPUT_ENCODING = UTF-8 + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and +# *.h) to filter out the source-files in the directories. If left blank the +# following patterns are tested:*.c, *.cc, *.cxx, *.cpp, *.c++, *.java, *.ii, +# *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp, +# *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown, +# *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf, +# *.qsf, *.as and *.js. + +FILE_PATTERNS = *.c \ + *.cpp \ + *.c++ \ + *.h \ + *.hpp \ + *.h++ \ + +# The RECURSIVE tag can be used to specify whether or not subdirectories should +# be searched for input files as well. +# The default value is: NO. + +RECURSIVE = YES + +# The EXCLUDE tag can be used to specify files and/or directories that should be +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. +# +# Note that relative paths are relative to the directory from which doxygen is +# run. + +EXCLUDE = + +# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or +# directories that are symbolic links (a Unix file system feature) are excluded +# from the input. +# The default value is: NO. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories for example use the pattern */test/* + +EXCLUDE_PATTERNS = + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the +# output. The symbol name can be a fully qualified name, a word, or if the +# wildcard * is used, a substring. Examples: ANamespace, AClass, +# AClass::ANamespace, ANamespace::*Test +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories use the pattern */test/* + +EXCLUDE_SYMBOLS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or directories +# that contain example code fragments that are included (see the \include +# command). + +EXAMPLE_PATH = doc/examples + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and +# *.h) to filter out the source-files in the directories. If left blank all +# files are included. + +EXAMPLE_PATTERNS = * + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude commands +# irrespective of the value of the RECURSIVE tag. +# The default value is: NO. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or directories +# that contain images that are to be included in the documentation (see the +# \image command). + +IMAGE_PATH = doc/images + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command: +# +# +# +# where is the value of the INPUT_FILTER tag, and is the +# name of an input file. Doxygen will then use the output that the filter +# program writes to standard output. If FILTER_PATTERNS is specified, this tag +# will be ignored. +# +# Note that the filter must not add or remove lines; it is applied before the +# code is scanned, but not when the output code is generated. If lines are added +# or removed, the anchors will not be placed correctly. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. The filters are a list of the form: pattern=filter +# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how +# filters are used. If the FILTER_PATTERNS tag is empty or if none of the +# patterns match the file name, INPUT_FILTER is applied. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER ) will also be used to filter the input files that are used for +# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). +# The default value is: NO. + +FILTER_SOURCE_FILES = NO + +# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file +# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and +# it is also possible to disable source filtering for a specific pattern using +# *.ext= (so without naming a filter). +# This tag requires that the tag FILTER_SOURCE_FILES is set to YES. + +FILTER_SOURCE_PATTERNS = + +# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that +# is part of the input, its contents will be placed on the main page +# (index.html). This can be useful if you have a project on for instance GitHub +# and want to reuse the introduction page also for the doxygen output. + +USE_MDFILE_AS_MAINPAGE = + +#--------------------------------------------------------------------------- +# Configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will be +# generated. Documented entities will be cross-referenced with these sources. +# +# Note: To get rid of all source code in the generated output, make sure that +# also VERBATIM_HEADERS is set to NO. +# The default value is: NO. + +SOURCE_BROWSER = NO + +# Setting the INLINE_SOURCES tag to YES will include the body of functions, +# classes and enums directly into the documentation. +# The default value is: NO. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any +# special comment blocks from generated source code fragments. Normal C, C++ and +# Fortran comments will always remain visible. +# The default value is: YES. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES then for each documented +# function all documented functions referencing it will be listed. +# The default value is: NO. + +REFERENCED_BY_RELATION = NO + +# If the REFERENCES_RELATION tag is set to YES then for each documented function +# all documented entities called/used by that function will be listed. +# The default value is: NO. + +REFERENCES_RELATION = NO + +# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set +# to YES, then the hyperlinks from functions in REFERENCES_RELATION and +# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will +# link to the documentation. +# The default value is: YES. + +REFERENCES_LINK_SOURCE = YES + +# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the +# source code will show a tooltip with additional information such as prototype, +# brief description and links to the definition and documentation. Since this +# will make the HTML file larger and loading of large files a bit slower, you +# can opt to disable this feature. +# The default value is: YES. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +SOURCE_TOOLTIPS = YES + +# If the USE_HTAGS tag is set to YES then the references to source code will +# point to the HTML generated by the htags(1) tool instead of doxygen built-in +# source browser. The htags tool is part of GNU's global source tagging system +# (see http://www.gnu.org/software/global/global.html). You will need version +# 4.8.6 or higher. +# +# To use it do the following: +# - Install the latest version of global +# - Enable SOURCE_BROWSER and USE_HTAGS in the config file +# - Make sure the INPUT points to the root of the source tree +# - Run doxygen as normal +# +# Doxygen will invoke htags (and that will in turn invoke gtags), so these +# tools must be available from the command line (i.e. in the search path). +# +# The result: instead of the source browser generated by doxygen, the links to +# source code will now point to the output of htags. +# The default value is: NO. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a +# verbatim copy of the header file for each class for which an include is +# specified. Set to NO to disable this. +# See also: Section \class. +# The default value is: YES. + +VERBATIM_HEADERS = NO + +# If the CLANG_ASSISTED_PARSING tag is set to YES, then doxygen will use the +# clang parser (see: http://clang.llvm.org/) for more accurate parsing at the +# cost of reduced performance. This can be particularly helpful with template +# rich C++ code for which doxygen's built-in parser lacks the necessary type +# information. +# Note: The availability of this option depends on whether or not doxygen was +# compiled with the --with-libclang option. +# The default value is: NO. + +CLANG_ASSISTED_PARSING = NO + +# If clang assisted parsing is enabled you can provide the compiler with command +# line options that you would normally use when invoking the compiler. Note that +# the include paths will already be set by doxygen for the files and directories +# specified with INPUT and INCLUDE_PATH. +# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. + +CLANG_OPTIONS = + +#--------------------------------------------------------------------------- +# Configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all +# compounds will be generated. Enable this if the project contains a lot of +# classes, structs, unions or interfaces. +# The default value is: YES. + +ALPHABETICAL_INDEX = YES + +# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in +# which the alphabetical index list will be split. +# Minimum value: 1, maximum value: 20, default value: 5. +# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. + +COLS_IN_ALPHA_INDEX = 5 + +# In case all classes in a project start with a common prefix, all classes will +# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag +# can be used to specify a prefix (or a list of prefixes) that should be ignored +# while generating the index headers. +# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES doxygen will generate HTML output +# The default value is: YES. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a +# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of +# it. +# The default directory is: html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_OUTPUT = html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each +# generated HTML page (for example: .htm, .php, .asp). +# The default value is: .html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a user-defined HTML header file for +# each generated HTML page. If the tag is left blank doxygen will generate a +# standard header. +# +# To get valid HTML the header file that includes any scripts and style sheets +# that doxygen needs, which is dependent on the configuration options used (e.g. +# the setting GENERATE_TREEVIEW). It is highly recommended to start with a +# default header using +# doxygen -w html new_header.html new_footer.html new_stylesheet.css +# YourConfigFile +# and then modify the file new_header.html. See also section "Doxygen usage" +# for information on how to generate the default header that doxygen normally +# uses. +# Note: The header is subject to change so you typically have to regenerate the +# default header when upgrading to a newer version of doxygen. For a description +# of the possible markers and block names see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each +# generated HTML page. If the tag is left blank doxygen will generate a standard +# footer. See HTML_HEADER for more information on how to generate a default +# footer and what special commands can be used inside the footer. See also +# section "Doxygen usage" for information on how to generate the default footer +# that doxygen normally uses. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style +# sheet that is used by each HTML page. It can be used to fine-tune the look of +# the HTML output. If left blank doxygen will generate a default style sheet. +# See also section "Doxygen usage" for information on how to generate the style +# sheet that doxygen normally uses. +# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as +# it is more robust and this tag (HTML_STYLESHEET) will in the future become +# obsolete. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_STYLESHEET = + +# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined +# cascading style sheets that are included after the standard style sheets +# created by doxygen. Using this option one can overrule certain style aspects. +# This is preferred over using HTML_STYLESHEET since it does not replace the +# standard style sheet and is therefor more robust against future updates. +# Doxygen will copy the style sheet files to the output directory. +# Note: The order of the extra stylesheet files is of importance (e.g. the last +# stylesheet in the list overrules the setting of the previous ones in the +# list). For an example see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_STYLESHEET = + +# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or +# other source files which should be copied to the HTML output directory. Note +# that these files will be copied to the base HTML output directory. Use the +# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these +# files. In the HTML_STYLESHEET file, use the file name only. Also note that the +# files will be copied as-is; there are no commands or markers available. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_FILES = + +# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen +# will adjust the colors in the stylesheet and background images according to +# this color. Hue is specified as an angle on a colorwheel, see +# http://en.wikipedia.org/wiki/Hue for more information. For instance the value +# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 +# purple, and 360 is red again. +# Minimum value: 0, maximum value: 359, default value: 220. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_HUE = 246 + +# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors +# in the HTML output. For a value of 0 the output will use grayscales only. A +# value of 255 will produce the most vivid colors. +# Minimum value: 0, maximum value: 255, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_SAT = 79 + +# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the +# luminance component of the colors in the HTML output. Values below 100 +# gradually make the output lighter, whereas values above 100 make the output +# darker. The value divided by 100 is the actual gamma applied, so 80 represents +# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not +# change the gamma. +# Minimum value: 40, maximum value: 240, default value: 80. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_GAMMA = 75 + +# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML +# page will contain the date and time when the page was generated. Setting this +# to NO can help when comparing the output of multiple runs. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_TIMESTAMP = YES + +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML +# documentation will contain sections that can be hidden and shown after the +# page has loaded. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_DYNAMIC_SECTIONS = YES + +# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries +# shown in the various tree structured indices initially; the user can expand +# and collapse entries dynamically later on. Doxygen will expand the tree to +# such a level that at most the specified number of entries are visible (unless +# a fully collapsed tree already exceeds this amount). So setting the number of +# entries 1 will produce a full collapsed tree by default. 0 is a special value +# representing an infinite number of entries and will result in a full expanded +# tree by default. +# Minimum value: 0, maximum value: 9999, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_INDEX_NUM_ENTRIES = 100 + +# If the GENERATE_DOCSET tag is set to YES, additional index files will be +# generated that can be used as input for Apple's Xcode 3 integrated development +# environment (see: http://developer.apple.com/tools/xcode/), introduced with +# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a +# Makefile in the HTML output directory. Running make will produce the docset in +# that directory and running make install will install the docset in +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at +# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html +# for more information. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_DOCSET = NO + +# This tag determines the name of the docset feed. A documentation feed provides +# an umbrella under which multiple documentation sets from a single provider +# (such as a company or product suite) can be grouped. +# The default value is: Doxygen generated docs. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_FEEDNAME = "Doxygen generated docs" + +# This tag specifies a string that should uniquely identify the documentation +# set bundle. This should be a reverse domain-name style string, e.g. +# com.mycompany.MyDocSet. Doxygen will append .docset to the name. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_BUNDLE_ID = org.doxygen.Project + +# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify +# the documentation publisher. This should be a reverse domain-name style +# string, e.g. com.mycompany.MyDocSet.documentation. +# The default value is: org.doxygen.Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_ID = org.doxygen.Publisher + +# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. +# The default value is: Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_NAME = Publisher + +# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three +# additional HTML index files: index.hhp, index.hhc, and index.hhk. The +# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop +# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on +# Windows. +# +# The HTML Help Workshop contains a compiler that can convert all HTML output +# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML +# files are now used as the Windows 98 help format, and will replace the old +# Windows help format (.hlp) on all Windows platforms in the future. Compressed +# HTML files also contain an index, a table of contents, and you can search for +# words in the documentation. The HTML workshop also contains a viewer for +# compressed HTML files. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_HTMLHELP = NO + +# The CHM_FILE tag can be used to specify the file name of the resulting .chm +# file. You can add a path in front of the file if the result should not be +# written to the html output directory. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_FILE = + +# The HHC_LOCATION tag can be used to specify the location (absolute path +# including file name) of the HTML help compiler ( hhc.exe). If non-empty +# doxygen will try to run the HTML help compiler on the generated index.hhp. +# The file has to be specified with full path. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +HHC_LOCATION = + +# The GENERATE_CHI flag controls if a separate .chi index file is generated ( +# YES) or that it should be included in the master .chm file ( NO). +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +GENERATE_CHI = NO + +# The CHM_INDEX_ENCODING is used to encode HtmlHelp index ( hhk), content ( hhc) +# and project file content. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_INDEX_ENCODING = + +# The BINARY_TOC flag controls whether a binary table of contents is generated ( +# YES) or a normal table of contents ( NO) in the .chm file. Furthermore it +# enables the Previous and Next buttons. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members to +# the table of contents of the HTML help documentation and to the tree view. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +TOC_EXPAND = NO + +# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and +# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that +# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help +# (.qch) of the generated HTML documentation. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_QHP = YES + +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify +# the file name of the resulting .qch file. The path specified is relative to +# the HTML output folder. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QCH_FILE = pip.qhp + +# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help +# Project output. For more information please see Qt Help Project / Namespace +# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace). +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_NAMESPACE = PIP + +# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt +# Help Project output. For more information please see Qt Help Project / Virtual +# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual- +# folders). +# The default value is: doc. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_VIRTUAL_FOLDER = doc + +# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom +# filter to add. For more information please see Qt Help Project / Custom +# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- +# filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_NAME = + +# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the +# custom filter to add. For more information please see Qt Help Project / Custom +# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- +# filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_ATTRS = + +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this +# project's filter section matches. Qt Help Project / Filter Attributes (see: +# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_SECT_FILTER_ATTRS = + +# The QHG_LOCATION tag can be used to specify the location of Qt's +# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the +# generated .qhp file. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHG_LOCATION = qhelpgenerator + +# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be +# generated, together with the HTML files, they form an Eclipse help plugin. To +# install this plugin and make it available under the help contents menu in +# Eclipse, the contents of the directory containing the HTML and XML files needs +# to be copied into the plugins directory of eclipse. The name of the directory +# within the plugins directory should be the same as the ECLIPSE_DOC_ID value. +# After copying Eclipse needs to be restarted before the help appears. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_ECLIPSEHELP = NO + +# A unique identifier for the Eclipse help plugin. When installing the plugin +# the directory name containing the HTML and XML files should also have this +# name. Each documentation set should have its own identifier. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. + +ECLIPSE_DOC_ID = org.doxygen.Project + +# If you want full control over the layout of the generated HTML pages it might +# be necessary to disable the index and replace it with your own. The +# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top +# of each HTML page. A value of NO enables the index and the value YES disables +# it. Since the tabs in the index contain the same information as the navigation +# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +DISABLE_INDEX = NO + +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index +# structure should be generated to display hierarchical information. If the tag +# value is set to YES, a side panel will be generated containing a tree-like +# index structure (just like the one that is generated for HTML Help). For this +# to work a browser that supports JavaScript, DHTML, CSS and frames is required +# (i.e. any modern browser). Windows users are probably better off using the +# HTML help feature. Via custom stylesheets (see HTML_EXTRA_STYLESHEET) one can +# further fine-tune the look of the index. As an example, the default style +# sheet generated by doxygen has an example that shows how to put an image at +# the root of the tree instead of the PROJECT_NAME. Since the tree basically has +# the same information as the tab index, you could consider setting +# DISABLE_INDEX to YES when enabling this option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_TREEVIEW = YES + +# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that +# doxygen will group on one line in the generated HTML documentation. +# +# Note that a value of 0 will completely suppress the enum values from appearing +# in the overview section. +# Minimum value: 0, maximum value: 20, default value: 4. +# This tag requires that the tag GENERATE_HTML is set to YES. + +ENUM_VALUES_PER_LINE = 4 + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used +# to set the initial width (in pixels) of the frame in which the tree is shown. +# Minimum value: 0, maximum value: 1500, default value: 250. +# This tag requires that the tag GENERATE_HTML is set to YES. + +TREEVIEW_WIDTH = 250 + +# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open links to +# external symbols imported via tag files in a separate window. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +EXT_LINKS_IN_WINDOW = NO + +# Use this tag to change the font size of LaTeX formulas included as images in +# the HTML documentation. When you change the font size after a successful +# doxygen run you need to manually remove any form_*.png images from the HTML +# output directory to force them to be regenerated. +# Minimum value: 8, maximum value: 50, default value: 10. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FORMULA_FONTSIZE = 10 + +# Use the FORMULA_TRANPARENT tag to determine whether or not the images +# generated for formulas are transparent PNGs. Transparent PNGs are not +# supported properly for IE 6.0, but are supported on all modern browsers. +# +# Note that when changing this option you need to delete any form_*.png files in +# the HTML output directory before the changes have effect. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FORMULA_TRANSPARENT = YES + +# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see +# http://www.mathjax.org) which uses client side Javascript for the rendering +# instead of using prerendered bitmaps. Use this if you do not have LaTeX +# installed or if you want to formulas look prettier in the HTML output. When +# enabled you may also need to install MathJax separately and configure the path +# to it using the MATHJAX_RELPATH option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +USE_MATHJAX = NO + +# When MathJax is enabled you can set the default output format to be used for +# the MathJax output. See the MathJax site (see: +# http://docs.mathjax.org/en/latest/output.html) for more details. +# Possible values are: HTML-CSS (which is slower, but has the best +# compatibility), NativeMML (i.e. MathML) and SVG. +# The default value is: HTML-CSS. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_FORMAT = HTML-CSS + +# When MathJax is enabled you need to specify the location relative to the HTML +# output directory using the MATHJAX_RELPATH option. The destination directory +# should contain the MathJax.js script. For instance, if the mathjax directory +# is located at the same level as the HTML output directory, then +# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax +# Content Delivery Network so you can quickly see the result without installing +# MathJax. However, it is strongly recommended to install a local copy of +# MathJax from http://www.mathjax.org before deployment. +# The default value is: http://cdn.mathjax.org/mathjax/latest. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest + +# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax +# extension names that should be enabled during MathJax rendering. For example +# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_EXTENSIONS = + +# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces +# of code that will be used on startup of the MathJax code. See the MathJax site +# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an +# example see the documentation. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_CODEFILE = + +# When the SEARCHENGINE tag is enabled doxygen will generate a search box for +# the HTML output. The underlying search engine uses javascript and DHTML and +# should work on any modern browser. Note that when using HTML help +# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) +# there is already a search function so this one should typically be disabled. +# For large projects the javascript based search engine can be slow, then +# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to +# search using the keyboard; to jump to the search box use + S +# (what the is depends on the OS and browser, but it is typically +# , /
    ^0{2F*_ zjTO6EtYhBDSi;UeMhHSI0UTLDY~yDN=#PCC#3U&q_Czb4#;-l4KeQeV<`Q#>J5nS9 zw1~DdXWZD;90Aj%+sw3Vn=?=rSS)Vv7z8AeB`T5xoCA>rv=BBi)lTet;^6)>qo>dA z+kbTL>C>$xY$&?9QZETirng61g4JY1HG`nlqb>J%ak(DVYutN|7`qJQXV;^CjXSnM zXwEpt!byO=4BQpFHKIVWsuiH*hyjuDbUut}(ZiR*Zfy@%CLEuEomYD$?|!OqTG18P zKcHoG%)teBym*hU(SRGv)z-+X82>T7J?MkX{sia4?;=Zp!!+_^MM9$>Q&$=m6(@1v zz=%CIEvn1BQ$V726{~ULZzUuXkb0zNSwijRKR@D8~;Va`cvy(^KqkCspB^) zKZP(VOumo>m))F0@V$QEV(TVCdNpwLrKk*#UBx0&E2sn)aw}6WgQVa>;dDGFuH>(3_wyHsW z(Wb&T23h3uRM)b)Rjk0{fwRR2iYvT*$Bhl{m`{y52)PLa30Mx1q-?Z;8Te_Go4Dv% zz@9-n$>By6&eff!O%H2Ye$jQ4*|~HAELH6oX0qT7{zZ7n%C%D*aL-SV%{tqIs-e|Z zU>Bx1r%n5;2^49(W5je!#u_&pA_1c`ze52&^rZ8)M4N*XtOPU@+YIqMa(3nIiPY0Q7` z70bor!dsdKdXHOP0o8MuB2k=09a4Jl440Nnb zx(4xl0S-bGSsV+)kVe|Fb&O{DFMg%TOrL%jUMW#DTbx)}bR$t36#x-+Nkegx%4V(a z^opg^I7Q*j0@4s`2MntYj9G}EO@|3hX8uaKSh@iF9zIA=)iDX9KnDiHc;RsBqywf` z3~)OJif9<}0=Bt;-iWs=p_U`ia%B_NZ+XRtKm-S5%8mmKLCfk8 zlpS(B2aN-vAY+U}v^_G35~vX0#;_CJrXR**GI1aUQJlI#Oz}8`63u81tVt$gewSB_ zaGy36AUv@hO{OW8!J8l%bMW|vr`3GFS1fC%GR$nyvMmJBewJA{Pux)-p7fS(aw4o~`&U6Yy7aA+@tD^1(0vU}(&A-qU zCE~k-s~6Gi(EJg+4A%gm49Ue3SfhYTcn?cO6It1}5=t^mq{B$6z&OZA2*(8O#Mb}q z6(i(!Sm*`mvnWOQ82DPHsVS~5;F&Dt|8u`_!3caN@KGXs+zOlt>2XgZV36wJHuwmDb?al(%#_;T?==s1Pw5rol%h!!dZr$w~C zEXt;M0gtgn=op2VWKfdu?U}dX7Zas(MBK&MkTC+o(a=!}F{z^-7c#ya^Gw9f;WPqJ zoAC-!5q7lD5ejjZ7p6i?M0Unz+K*H#hb_4kpubx#a`%f3gI;dHz0FaHXCR1$kNRV z5MAa86Un0L*r7udf*wt%rSiOu5@BW_v|fBi30<3~9YT*$C`M?+B(p^VojVXUPLdcf zGUVg*T)YHA2Pp&;5AX9>28t%|>F6HO<>62d^AVdU^x>fc6oNM>PO~$OqJN?l(5K=R zl_kg)arIF4h4xbjTrxc!2TEKMiL^!d z*RElfvPNkYRShR;JO~exYyuy(E83{p=6^Q9=OVd4b>Nv;YTj@ z7q}Fvz9iaBxzgvxKWA>JWY{m*_HNnt6aK&R4(;N8|eDxC+D)`3clhDJjJz8)wRO-q&=$`Cou$ zx_T&WdCv$J2GqCJZFOU6CcNSVf9zW!T~w*j?b+~s$K_A=R{j)TeN6tcR=%qvSfvT) zIR!;pdDMHNVW`8|)_i^{c!a;jdMkZk$Hys;~w9YL7n^^@0f`$t3(u0 z`F=iHu*E%~tm$a%X8szF?+U!by;xjbsrH~xwU@z-fo&7NM4{hhpMq*X!)6ZECY!7R zE^>>Ly3J90aSy2S*{W2$bhZ{Pt`⋙H|Dx?A4WvxNG+MRj%8nm$4H<36;Q1L9N6+ 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∾Q)xFd*yDfq_NUKxid5!st>82{V5hsDR%DJ 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≮GneG}EYVs0CMx2)@-y&v2?bM`m+MRVUdt*^( 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 z uUQ7B77645mYnv?jLi+>e%4WJYd<=6NMMek7!z+5K)NXpNm6{dAyd*QjL5_U=n zJToIVQgV|n83>DeeT=0e$|#J(6|>+F_=s*2-1y5WsS&Q2MuI~Gs5VxoNe~{03>3}c zZ^YumZkjUwQ0D(q;~{=83o`%T=y}w0#Ix4=h4o46^&o#8vR0cvGe2Seq4^y1pz)A- zjq#5ZeMbJQcO1Vg7qgUVd+5y2@Q|oF$44?l0XrRF4`ortfrQ|}OhG@;M&MD&*tH{s zb7h$Tk%|RC02EkDU@e#stka;YfM*r-yo(|5rif?MIx{>xmKr&W$H!3o6tAYy!4V;z zDy?99aY)Oc!qgvT=yRG7t`wHffY$4nP~TTwpQW)`r14IIe+UwF5QGY#-1!{3OKiC;A}u)RXDoQkp=ctB zOE~KoOFurvIJJYS1!NNgie9?xH`QA~xMQ0kE{|+pc!~?ZK^O!$5{|fbFzksy|AT6n z5Sd#r%b3jK5sN()>@b`ak=EH0aIU@%Qa`C*N+I#1C*VMuFNT26rEVx!8Ht4X4wz>s z`c_pm%|6WffbI&03#Nzz4WEw7<{cq^W5hE|Q9Vt7d}B?*&XM?w;IrYbi%yRB0+a+2 zLB_V;P0=Cs))cH6UL0VM&}Klo!Nvo_23yC>!$CISVMv=AlndxIRvA_i_BHf;G2q1l z0te21!HyOWi2~bPuipyrN`RqGya@O~;wnCWd0Cx2BNJ2*v85xq>3{9wZ}%xye#4dWZS zC{exyY>Ix!$O`FCG5p!PKqbQ-Et57Sfalj$(FD8zI&oSF)G_QJ2{eVsjBp2Ruo=+F zJy*&3|Cx&ay^eUpsfZZCsm+ru9iEMy9aI?rCy4jLU+?rqMBJW6RY1>Yg|}oYU?wxl<7rNbz0)hD6mun-!6H}o2eC9G zn3{0ZaeiWfBy_Eylx#Wym^4&1tR;j4z>E~mG!hKK+(x66>ZO#7(`I0Lz0*CE!X<$n zjFS&z2?i;g1}q-UT86I2k}ypjyD7z?1E3CCl0_fhEd#s&nmF(Vh!+w=`q?|}qg0k- zBQQx~RL0bV!+;p}DY$KdEPzJWJH4Dz905|C5Ljiwn}JDY$P1S#n^Q`V3woz-l6Mi8 zyBYJ_JKaSoKo#j?)Ik668Uzo<;V4Zk@f#>bKhSf`NpbZDMvsl1QG!4P zlte$mir(oCN)hf$qGPj-pkDz;kn{V8e5 zvjkQniaWi_k}8IQz0=oH3Qj_H47P0ooD=O8oj@E88n#WuFiA=+rBo}~Snu>Tlxig% zk@>&hcuP6{_q#oR=6QqX)z||57Tmy;XV`O}=dkBius=hdHJ&cdHJ&!>=hkzzan{zL1P)^A%cfMb}jPFW|A84Oz66ax5itDVT=m(1^(|7re<`6=_m=DW;4 zHD7PO3XIX;G9NJ~%~R$H^N_j6++qgIRY)JMHWwH_F}`Jd(fBO#i1!~dTx8MwZl8Bpq|^F zZ*B9=DyZkS8S`u2Sq1gn_LzB_cUD0?lf2zKtDv6SrsS@IdL}vOomEiJZIkBjdS?~X zbK8S*SD>D)wlmgN@2tXlZX36@cxM&XbK97;**mMSo=Nt5XBE~n$wb?%U_F~{V?dHC zsOPp3*o!|xiimVe-g@j5Tx8mN}xRZ=|XJbw>+BO>{X|~<7w{13}Qg`!wSY_XBJl-}N zQaA6~>zxg%o5!q3+iXDHymNEgtY4*$^2{cceN>+5Q#X%rbECR>#CWN9c7sYDHurdE z*Q@01R=90;ohrJUH?38vU6*@j*Qo5BR;X=uwYs^3H?2}PZ_P{|*GCqKJTC4XqGkoms=qkqq!^*iQg%+6=t{y#eR94!@Hey~&Q|HaFv zuBVSkML#0CJUq(SPQ!jMS+R`ZoE7Jwhkz>$TUgYGu5v}R&c7wU4OdL;Z1R<1P?eFP8LP}E?t61 zP~R%iE#bPJG$Q@O)`uIA-aq&3BIzPSZ%X>#wA^v3n{*zeyWNv**zkX2{Y?Yv19KPV zFG&9&;y4j60gDXNCyY|mMhxMn3t$hBb`=$WPf1JEK#=}H>w`t2D-}ecxrd5GH&wRC zIDbDDtZ+pbRN{~nh!E!nwwE|$sEm@~FuJ26>f%!(x}mb={nq>Ildb1J_+JCoZmtgkz4?MX#Ux++o#l z?zkmd&7DtMpRV5`x&FLSB)#R_`D9DZ&z(CiVU6dGTS9_k%fjGmJa;~6eX;@dk-0~U z)HhvjMSJ#f4qhBYgMhE2fr9Vk;7JrhIq)D4BTQJ)An7?SO${5~Ezx4R{kZk#=g`a>;7k>~4uxBj%&l zN9$9bn0s!K@}>huDF6GGhX8lLxOB~fa<_9D517BV{=P2pdj3Bl_@6H}|Jl6Vc;c6v z_|MeSIe-3g8dc(HAKkcTxpok)>tSygSFS=F1?(d-1P)WIof&i;ASt4c1DZP>#2sDC z9zgt_JTO@0NO55B*0b5{s6E!-->6K{Y@q5<@xj2|(s{mT@?36Feu1WW+1`yfnlu0> zz;Ozi5n&MfA?ZhR2SfpK9zSQ_D56dfkU12G6ZRP1B@lckzBb?n%hfi9LXq6cYyy?0 zGrn!be9O8rbSW3eU#3Uq%00&NW^BM-M&{>nN=AYKe5+p+eu&+ps6s*@q7qY{vuug? z5+~w@>wsjIL#dRrIDEwV{2*vO!>Qq^3&Pf%!--uW*m1GDHzkh}MLX}&L_4k^4SAOk zM1L0XdJ-8c;!}*m@cuv)9<&(<*wrPl=;q{mM*x2M+mtrmgLTAw`v(2_4pwaTnR zqIpZxJRc_aAM6luE09B@D-?+#mMjTEF(4X1lYmmkUqp^~cZ9}EfLo%)s{0StKNP2b z1=}L?zl{hWp8Gh(uQ7kmTyFeNE{)t3`9*pxuiV>>gb=JJ7w)Nq`(*Mb&u_8=K|eYh zG`&DbrwMP8RzP^Ly$GL>b3`%^Wl}rssmu`^x|oAbifRpx4Nvv=*U#3uR@36&rXc|YfugER z0PZH5E?ML0J#j>n<4JL`@9(e7aVXS&h9Fz$ldt1;SlY6zp3yUU{=dfXJlnbi#>GPO z<>or$H8kC?%U^Cm{#xCHU3?030}hEfSF8A>y>4=!!q0->ZN7`<+Yob6#W4c;a;a8vVhJwM{-~ zst>NWIZ%pT2O+!6d~_%1Ktyfq$NB{ylVs)h^i}b58;loT$S-l4IkAi-wi)lz7Q>Gr z5k%FB$_fZegwkoy-7y;E3?Y^!L5cW%ZU~0!=u%KzO8n2#8Lz=iDoH$WT5_hpIpCEa?Bt(|lX_SHtz_$01ui7etTR4!t5nLrnh zeghL30wIaXgI~c|Iqa7Ui3h_im{oFDjl=!gwc6r+#wQ2L;H>&`cjh}ZHSMwX(Pq?~ zgqlyZ)c$b58ml43y;)q{UAR2u#O$A_|6&h>uVjVw{idpIZqT_6}7F5=B+lsacCE zeBAhWO%=q?y$D*mF~6)x^5#|~f2^gFZ9XIyIfPX%XqH<$M$5;HkJS(?t?jgVU#=~G zU6J6XV|gWQ{87<53pY!21eBYILj+kB!vGNKnfy$*<^)%chmRT`Eu*b3w>aMpDI99S zS99YV)v_*n4`FV%&^!ueLIql&UT-RI*No>g&X#6*0Z)C6KL7u<;YnE^vNoA7HU7G^ ztNz-jSQwV;uHAI7-JL!)?J3nbP1k#(G) zmfCbpbxOA@mf#|>8o^T$sEYRGmgc+WN7r`f`bXF?9PVP6ufi&@4-n>$tx{ClV(!k7 zOeRyNmafw6mUKzczFbHCMopHxU$I%$-LG~*)@RU)!$L%0v4v;hP>3yHhPJ{$79>L$ z$Lt8W+BL0JyjwvO?=wC#I69h14|A;bou3%y7wi{b62TJE4I!>m6W2XZ?8~~u1t9KI zA`2Ha2G%QK?7^^^z&rpvB>0?EAm)#Rhv7$u?UCVUtG%;gsjtkcBJ)$mr(}W9k2-jQ z4*nPTKVIu@tU*6pjpOrl*MLXzE2y)qbi6^vZ&7?udZQ8_Fn;@qG>d665i_t%!?Y0~ zJa||?1~srYV0R`Wr9G>(v00Zz`?smpRkkOD!;%vVAY=yEngYfaE}!|gsGdDc4>)XAaj$JyszjM(@wrQY zJ{>7rZAx!M2Ifm%n959+@Ti$A(cH#-kFL(@Js4&7)-mgJd8&zeHtz_aJYR>vjsQT!7Tl}L@C8m5Tjj;c(A?;B*ZoqLtH!(64(qD_Ywsc-+VKv zEV4#}5BY}EdMA+uWhyf^G|6x)=Prtiv|e#)w-kN9xTgqI=#)KqT63j?JAFOF=^i!z zFE{QpJP%vnWCi$uxrvKs>@T-3zs|wQ&9$9qItmO%!5*y6{SnmtoSnr>1|wHu2XmY! zNGfMoj(n<4LkMfmB1AhV|7;GbKVH9ICI>mwP1U6+b zM+{9Nk1T$_g64V!Dv8=HM6G!$L}8m3!qOL8Nn8n{*wP7hdX|Vq$V@p%hn#N?kF_AG zqCg#@R%@bG?(b^ZQoC$IJqK|W5>X*mf)e-_N1zOL#Ud2L23&WZ9_0rH_1am{QuPW{ z61D46Zef0vCThu^wJnL-iSG$^({L}aEwEIK%K&<5!lqzOjrnXWF*OP)tfBid_9V!_ z_6^sB5B6!OII2i1pS=j|Fjd3LO zR1s2^QAxzWB`yCW{_kTR%X-NCqIuHz(k~kWICoXv3FEqcpDg{juGG^Vu=UEM$66zf z{3eDx2Ry_S_NuI{xG5zt1!me{imN+)2$9{yR3<%Cv-sD^FRLbBK#cFiXzkoOAA&$@ z#6%Vgcm^Uu!>rgOV3rC4%bCnhN>nVk)>=Z!?pG1;?EEIDs}u7f07eA2#$Yr8N_jLY zNRa^6!VabZH^EjvEqq?>=Zkl%KAyWe->1K>7p>;~5kW!C296d3uOaL&Fh$Mc8p$ab z-5?@|ND3tGA;H`ml5>)S!B;UA>lLV=DRL=yd48kQBD=aYO-Vi?IHXkhrpn_Ab;#1}Ow-RA9$_x>Z zJB}|&d|{GUkB9NFAW$|OYn&ht4g*p85NnZpw{%lBv|H8uUtql2@T9HJn}28CM)KF` zFSj}`5n(w;v=4MIr*-7qRC{(ZO@o8oPPSV-bMV?oirF9@x~$rG`Osr{TFOo=BcaJ4 zDP@%@uwDMaitgMwaCSoQFGca|gz|x@N~`cOeUIiP0xXpFZZ_13U6TpDr3O`Da_Gk$ zu)7>G2x1b%%qfOlV=9D4vxLhLKTW(1L?PguDoQD>Cva|8obF--eSYC%&&o^Obvbk; zjPXW1ET^suDIs|@r=xOUkIS=B^1GbDlmr7|iW`zo@0>q>3J9E)AbU7vTN zvqz52XZ2^-LvQZKWf21`m_=A%jzRul2LDd%8sZZoOB&L<9!rg^IJKKWqe2z5MN9Ml zKI_lTADH1^xB0&$FEL>m(yIsCo6dh`)gch+WE}>d1{N1>8;)OSB4YTb!ECdY(rzUQ zNbMoACb#Y?aOhBOTVA5Q%2eOgoTzaldH}OdyvtJzFF!#7ffvA?D~R(Jx)B^;Qo-o( zq?#Ubu&rTjs`Ba*bl?DcFafK4_a=P`>lP`aEOb6XTd6ni9~%MWe8N|piG8`vc?rud zE5$(b8Xz3m2SbK;5}qx1vnmfl+)8n|!h<|bL@(erh9~9K4JuHcRhRyK`x?_P57!}o zWnO}_Lq7am!dd9*?g}9zdRt4+BE%VDhfpK$E4yEJtt(&9qPN|4n7ArxAuH_(=>H`Y zJA}4x?`k@HHyhDCHV&v*i-0cymH^v2PEdHL(df7Y!;gi-^7f)Gq%@KH`^z)xw(*`l z?$%XBp_c#OYIt^8FE#(e^c%O9cB`k7%BAx+bJC}#8~3-bZ`LIuKS`paV?9HOjNA_i zbsF0(JgRVQ6PN>7T>(YcA|^*(Q?GMs3anA{=R#)Ejp5;LRaP{alFf=cA;Sk-NJ*CUp|)m3nqymu@cvF&9gS!;3 z%Ws`uGaojhcj3xzvrQs144{k0#EW)M;pdzLFNRi+1%@XFM4?*NlDi(hXcs8?o<3`JT)0OASbI3}jLrR899QZEO@ zP#UvG2n?wrg-S7Zb#U1$y$(#BvZvrNbpS2Bie%DPa4&;($Az*;ca`f$pHDuoUP+wh zvmsqsxSS!pP)IfSq4@k`QlG=QEs7 z-TjR~5JdWNf-|ZekCn^W^ql#>-0<|6?=yak(R$?{8unZ1GYo+Osnw1942y;1Xhm|k z(~FxjKnH+6;DiOP6{wxWG)`i=k_Fem9l0_&wa!c1CaNJ{d8TSwR4ns~UU8*q4Tf3H z=}q2?)`X)vS`SCjrl+!&ZujMOIs`kYe-fq>hZW(8rNLMTd=g!GukfLJaqiO?@W+`n}XNVjl0jUZ2=#Ej{pnBWT z{C}t6S#I59zQy>Uq2joxMIg5-?}RpmrEk2WF!woS881TNjEQw70viS(A5b2EaQm4p zfc^ob0gw^|o+%$MwY9EOpmJ*=I>Cz$Q>t=G_i^~Roi1XP!Vai0+X1Dyg^-%JF|CMT zxhhB#X_#9q)Iq($v=jUd&?*8^rD|wFE6RxK63uxIBX8sniw>ibdY=fa=%nG3V|BYo zb)Af2iF}uL0)|u1racm&ngsnqX$oKp;8W+bJ+hn_^Q;jW|iICq&W(hxsJK>?uUz&DG7mVyQ*sCuZ*62knF zyH)GPYmL|HF`6XqX`T7!c8fkY%h)}riQRmn`9#Bb#dsB>dyGTl%7Bb8zaWUBEW`y# z(5o;s%Mji-V^6r_Qyut~?LrOtP0CeO=vBt62IQrsx|~;rXUf7u*+kg;lOwTt8&%`Oa_SmkO3|XGdT{CU_=pMTU^h=YIsz%cpYlXmhfVQs>pr9ctQ`H z>JhRte}|^G>0!nh&X0rj4SXp!1jtY`Nc9PBh-)GcSU9))iDQpsx`Nmy%bTK9^6Rf} zj~kCSS>IG+i(pu_4-4D^Ci}RV<=48?%$g(Sg!vGtJk#b2K>&V<`3m#3VDLsjh(<(i5Bt$^JkW2d9ACgYpokBpS23K;Gh);`Ddqfn{~jt)4JD6 zf(JBaO@Sf&8`krQCir6O3F}qXA6Rd+-fH~?*g@|DS@?fhpRzt@{j2pQ>+9eO{mA-- z=Q7U~o~ywdzR}YI=1`v}?CJO1?Ah(P-E+uu7kETz&jX$_o^zh(V7KrBPadqImwA5A z^FKXr2AlY=Jn!;+!1K4Bk9j`h`6ti66WQ>ap6_{n@+(=@=KWIhW3wZGy?uNZd_nV5 zv*-E!^enL!%zvEY9p>leF5~y}bHFj1|1?JoI`g0B1fTDJ&k6A8zs&jg{nxpb{QleA zI)1+}2OOvQA9G=TzciQN_ses@zL{T{8{qdp=aAx>U!4Pp)BM`p0e-(ecZA<>%-zlJ zH|MbMGM}7F@%!z$Q~Z8sZj|5e&Q0+9y*Z)nCv(r?_osPGG|Zpn1%2=5d00jB7x`=X zy_5%y(=zg$7A-Tsf?q2SRhB0o;P&pC{{4UA^KW$x=hbn7v9;&RX^9)F9NuIsPx+V{8*0uR@e%td?{9c!*-K=E=XtS;_ zK%3Q3cox4m6t3pCt3Z%HYk5H^^c94{?t)O*QxFPQ7X19KDhNvA>Vir{sM>N-sM>n*CVsbF?B#d+MFK)vH(y-O?~aS~sddZ65WfQ#WBl&C zC=~9xC=~9#C=}j$Q79a|C=}jykv_HdUK9#%zbF*$yC@XiaZxDTe^Dqra8W2ccu^=k zbWtcg{30C2tRpXKi)tC$uhZ>QrVFt{xS2(XOvAcR26Ff?l>~={`A0BA=@j z(NV<*so|S#HBi~^GEbn*uHD2GM#Nytx2l&2H+qC z;1Z93u#Ij+LMJByg9fi0fgiYr%7Ug*t)%0mQo1^FH8eHetVVAz-q5s0@(SI#6;;aS z4?BY~*1oCXnO_Fu0CjpDhko3za1G?N0;oLBSm;Z_0N8@vCjjMetK(bs(KBsJB&eEEH-4a$(4MUe-s$=a`C%>q`Elx)Q z+%g-=+d75-^wN$r!V)o)W|UX*d_KiiS4?s#H@H(|#dqr&K>gIjre<{~w$$(Kf*+5a zPb4k+zaYomAO=cIbb-i44U*Lp`)Sp0e$)Kz#@nA(HP`0v($!oRTk3XW-D;xEHvXa| z?x(v%mD%w)M%txyt8D$O?Jz!K{KYYK?&*=vRKcwsbF9aD^T+fQ?mgTaYBuH`GokiR zSy2;$e~fPuvg3g9rwQo=0A3N_xOZ}@5_lQX_fl>>laz0V;Q^hdV(2O z4!Zv|esHL`3OOoVF?i~61pGYE;~OoP@QcLA*=OXFi1(!S)!U8F(KNUsQ3iA}<2%U{ zXuTNQ$WHyv{6At?e`4m0fB9uCfAws}EyILrYbjE37SUx#`Tv@MvY%ztZ^q$2R8g)#G&2 zur?8Cw0l0bh;jNs4vlC>u|#L5!Bq|EUQh(iSfPTH3j(nKYfNGWltS}4GIBudS{x3c zuH{HgX}47U)8z+^4_0ia<5~$LpF`4)dh{&#CduKGXUEUV8FK=Oy?EM8rY44y_-HAK zydL5u2OK?;Cq-W+uMm+K(`K&zJYyrd<4?V+2~apa&+1ZNKt6J8ZTb2$r z{}&+k$N%>WR@fXP`QPs^w=$p7vwUep3y&JjA!Li@4vdWmg+rJNB28qGa@i=t0t84Q z+7+5GmYmF3txKwNuVRVeUFMFWhTk;{z-TCi2dIeoGw4|{B63xbeYsomNj=%i2(3SK zyP))DL5Bj^9@KJN{sC_X;0^~fbjmCN#2$%cCeDu4tV7Pd3QA+fCyX!EQVNmUfI;mw z6GJRf_60T@#>=F`HfkQocb>D1FpOtJD84>#JA8nH4xyO?>kb;5$TA6=<* z2#rRk5U>>!%OpxPf)zxwNsQva3B<#1RS01VFvSUB6IT(_Q6vr4m8PlsJH~AD zxmC{p9^<3P1&pa1TEx!w7!b8y=uE5X8sN9^2E8oLt(8JcjA>Iun3+zZ_EfWX6O zfjG>d#S`*cb+)sC)@%=wsU@+cw&tZ~XYBwbw2o-3v%?c8pxMjB4r8Zs9AKA&*;7kB z>$%>#$0rCgn$PG-w(0J!0mZ+%v#iufu0MhCcPLt$ga40-&5<~byKF&mt18hhI8qHt z)ogyURo9?##LRVO?0IYRX}v)QQY)KLo_jRM0%81Z%a8D8 zR60a7KxC4{Op-`ED6mQ^S;Kmkis))?^_QlsRaHqTTO8?6v2KrT%AeGATYsWG({%M0 zM(`$3+CYmXKnPnbLRK(IvUpwkCF~2n(8K{N&iYmz>2mJ6oT{Z-%zauQlNlPdhsWGQ zf_qOh>s$S0XF`ZFZ>nmMA`unG0&LqRz$^6i=y&%hxfB=rr5p!RHam?yaq{daMLBu_ zuqqx?1B%rC{#`tOVV!gS4;$9k%~BdBZvaknOuuw(>b zm#8N|B*cN(EJzXY@)+;*Q3UDaxF{zG! z^^e+pINxRMvm;Z!VK8z7A!z%!vmAjnVUd8H{=6ZjBWl^_C9a#h4HP_cRk7kb= zi5h$W3?et^tGl!IJ+>tOfUft-V}cgdgg3;P)m&|dQZY0YetZi;07*wMi0~7u7ni_< zEE3VUD;_??LE5c#%^F``NUaO4!J_!Kxw@8xJb#Ln(K(LE*}Vi8Rg$Gt^}BN<#qWiY zqYT}#75DY9tZD~tjsFoh9y2^odj1uS`FlKXMUQ^b^BZW_@An+^+(OKsUe8jG$NDbv zflpfRxBk?6Ejs+ii1U*qI^Zqn`+KZwEX(|k`R~{UywCg-ECya|K877ZlBhnnm_f70 zyatfU?->8i8T5U|pBS$-Ud#uJe~V@wY(tHV^&VCO9`n+onKQ-fjp};by&mBDXNzXW z-0NE?|Kmk7qs43TxgK$^cX0iKMKh<1*Oce_f#S8!A9k;A=KA}KW=<8aDbMxE;-?m9y^Z{DFPgEduJ5n99&)d@QvS(BGxt?ppD14Q ze)8{iueVVCTZ?9nS6$!ZUT>!S*B8y)UA(3|*LM}Kb^bB;x}WQ>Et&LH^$@nmO!V$GQHMLh@2@r zG&A5nyvBTBt8dZFE$;Pdu9q*G*`bP4yH&wXBNRqMA3J)u)Ewy4`SB}i`Ak;;J=qVxI_i`>l^LFJ1=Ky6Gd;@oADJm)5)9PF z#;?$eMECi2 zjTDbhlTJkt)mFTY_qeiiMfmu{6}qkn+jT)Jv@lb=$)9)1wn=+|%XIr?J;UYRFFUoMfK)b&}ur@gyTeN5~?P8jjSNb3nCpTZg# z({EyTf)0}gq#FMZcxMS}$*Ft?-hk)agH9Q3{rwf0MNei<3}vMfK(@Y-1wv|&9JeRZ zKHR=&4(U-yx7Eu@&z5>eixuDLJ~8RU>}z;7-sQ5nW42Xs{Cqz=Y{IQD#9mSAlxbg99B$ z{BeP9-(R!ct*PGbWJi-z0ZZ6{!Tq<~wrk)BF6~N~qSde3XlwlZSeeXG&Hpx|-|#$w zxquSw_>h;{NRvS^tp0lbr_bVA5rN2`{Z1eFjs zs5EXWNHJrA5{T|A%jCimgTOiwyn^+?aqlg{Aux_AdZ{wEA`@aJ1@Zp8CZ=;hT7}`V z&>3H~BW8qY0s1yEnhDpOA~bXWkl0`bgkyhzKu=5)sW}TqqaJdyD#?hCT*`U#=QI_| z6Dw7d)M4G+al0DjB`afEw5$8aC;6^kXS@&)w zDc<<%OONKyYErNQ)(zrLq0+olq$G^^df8V%G>9jWID-l-@g^f#A{=6%LQroOj>Bg% zDbRfnUl>h}k5qi@viSP2lUv$47&LnSzufq?#Q*q-^&Io3<~c6@zxo5n6@_QZBBIpuM4sMGl5Wn7LrH#|KkW3R3LY{zE&fXG1BcqAQpQ&j$LjATb7+ zmh&P407@W{;{i02$wUGyDjP&Tu~@*%Jc9mwvLO+roLV9t$xEa_XjrR=5E2okaYDfF+w-_QXSW zBoY9w9lK$?>)7j&JOa=aA=V%E#4)V&CQ>`=b%S%e`s)vY`zKNRRQ2cab=W#KiYSl- z#8<(y3p24Kah`&*7T8!_vG&#fymPci%7*~yfmhFGePWnOqBRXy%j4a)s#G8;{ z_kO(VG5rEmDkSV~5t*#4rThDfIkkOo&cXkh5&ZAx;MEf|X8sE%f3C0K1p8xSSlx_M z-DkuHBn%5MlyKKUGzeH&%O4Qw*p#G!`os4tGgXEZQqdM=S!fY(Mm`hf76QLu za9P2N7x(%^GK-BSam{cS#`_$|#IkQzTqxkgvdrr9NFtG&Dp;ClU%kuN)9|Dxa;kt4 zkKsfu&ed^*Q)1qP!AOd*iNM4sfpAQRqk)RgS6m2$VmT>g!*Hv={P3z2gJmTXYvaOd zDBI4-(l)M7fLQb@&42Bn?NK9ENlMDchd%H+=l{PnJhxh}ApYkq#$Wyy%>SqU$y{5( z3Czdgqt(zk1Xh*bpOlR}fQ2uZGI-OlhhRb*2VaK0gGn~ugL&1&0}XIl!HLkvd9@WO z`#I@E0o1awKqTxl_-YB zeZY}saQ_9mK>$t?AbSl-H&Q*0yF9O&5EtN2LC`dnT&zKE;lqAW z1RC9Ib88CT;v&18IVnG>D2BH2C<}a&k@rAOMy)VIP50O#-MV=Y_qE z4^d85nJ%(y?!^ZO-4#q;BeSn016_S^bzd%Aa3cM21Z_$yTi9-iw2G%Po$hKz(A~2~v)H#F4VNpk-y$=u=;Legmp^?{=vcd8I?R7z!6<6=MIlz}RAV?y#oK z&zP5!ocCXDcj0QSP+gW=xY^iVE&?dMM8()JkSTn{W;6jTmjUE~Xd4KZQrLeIzbzd_ z^dx*XhV>&UL4AeEQ}BM{e=wI|0ym$jAr@=SNt^7Kv5N(14KXR>k>x70t~n zqh8RE?1mXqpD$m^tt&XO<(3jYNCYB!+Ax1g9iuEXGDiGC8)!o0u*?yv6a%ORMnCP3 za@gUJjZF+-QgsEeWhT*OgVRcY((;7J2bAf-e5|5(7Z&Ngw<)zKk#k)}{0zSI$VZ|a zd9fmiMu9B?HY6z;BMG65u~Nw>x{NHmbF{5=)#_v=2910zwNKMBy072_s$I6dNxQ>E z3>)!rz!nG=iw{^z5Sc`%01pd*wTKqrvcL-}GmNgNN-?9RGMjhT)}@(ow9Nl&Kw$Cw zrRNdP4$lJX@2m^f9_w23o96q?SD6o*d(0b*|HLxrMHG5^e;cl8GrCr9^m^T}4Hf*4 zl9vpf85(u~jn^)rbazE*SM^a{bp6$BMt4U8}R7ZN|pl_43uqkmqH7Z>49_5vyW1cA{ez&lO%Pf~#Wb&TTb9?-YtPYq z;}fw3)NX5aCpb;p->=nW2XMzJJ*drT`Y&rULK`b+*`-vT>m&jU9f^*vzyFpA0>_>z zJ*z*u+0$mM3?#hXA!nT2Vgt_YqzQFCbVPN#er!k&bQv;3Ny^169$wqz;X_C2Ke)$i zGXfh2OJ6O0sr=ie%9ei__2STwGu>qVFEwHYxET+4qSi00f3V(c<*fZyyZI&a&&}tV zx0{{D7mYsyVbe;+-3OR05AJ-uoL-O^bx=+uNNmDR&;buZ<*D$A9% zoh%W$U|$af*H`rO;R`4~M)!?lkUu_Ada>@_NH^WPvV1(dhG){fhn1IF<#6=683JE}N>_LjieK^ZySTo?+{~)|KWS6!X8@zucihyTfYl zH*$-%Ya4;uQyn^WIW&9|H8ha^!K8RYg;T)8MR3O^^a=Oz*d~aDW`!Fv#3F8y$?e$A z2oLUCbq+yGN*U=o*MX|*VAXYqW52wGAzXPP;oxC>)A(j?M?s>LgFx7^-xzIGsc#VM zFdo9l3HB9C(WJm@A38J%APov z;V~+gC?1qpY2XNo`eVLyHY4k+##d$j-+`yR=lhpidZyx8-b z;A=hT$$E}^4tREfz_rPGUD_&;!3crPekZ?b;Rdfa-U^(Z)B!`6M) zVe3|FE0)2ltsAW+*5zmwpEUo&{G9nw;tReFG_l_|pD^dJ5k3#zm~Gx^?lo^VBe;$& zH?K7p8ow~UYkbA{XRL+)hI7XsL!9BATX`8Kn{D5;hP`tuRPq~=>{ZFHTMu~WdYmM8 zyH)aQa@Xf1xw~8?zigfI&fTPvU$Rbm=enF^);o8jO8$qH@y>NR$+UOw29^AxmGaJY z=%h*VdX@ZwmGsUn(@D8|ol5?@Wqaq^o#YAc+_g^fUhmvemHam;dyPu|t0b4GY zd*`lpl03H9N%GiLD)~>=kaup8lf2J6ccqi0?6aICWv@`l&s)d6a|@m1J>EI5N`A_^ z%RASmlAo01r+3cdB#(LLES3CUa@TZ{`@D08lRWC3ebh-F z@yqt&)Evk3FE0Z?^V&XNOht53D`j*;6X{`;t8ABnQ2- zS(SXPb*pzaqmy*^Y+5B>BgvFX{+>LRRLNIM(pJe=S-ZWn_p9W~rRLcWNtAY z`PFX!m2c1W7jDptVtZ<3j73rSfQG!lcQJV&Rwamx;Cn zY_%PI+eRViPYZxGy1_t#P(UDVN>nQ1PNGb)#S8G6puI_hf7|$WuD!5K6Ww{xXt{?z z391aXROovE6GmGc%EoZ*j|PC1MV&zmohA(S?^vtW z{1(c}Oe98hY1Az-M14Tp66%=P0R#)kMpE%qOS*Ic-Rpv0Ud65oKeAN@(VDf*DF2r6 zEj|DL(C{1ukF(9Z+xWxE8TxB-g@wR!r-6?xO|+V7KLTep8b-@b=r;5z!1(~nOi-9q z!jG&q9wD%-a-NhK-?(G@i-juA4pZ}(U_UZ`gb4m7P4Uvh?JX((Az^lsxD5l*js7i? zhy_t3q+-Mkjz);ViG|`Rd(zRnH5!QhPLZcf?GKF~=2jNEoSAjJeR-?){eg`#9!UEP zksd@;E%0R+bV?NAFeX80--ai5jh>mpMj7mzCM{f6tW1N|sDj21j34B>3pW-ALQ6uw zZ>K{6TuNe*DB+d_HxV}9kKzDGK8Q_5lQMaLeQZ7uiiPGwS+@1B67!#iWA5k1&*4&foiR7mwY?SXKO-6y@w31a!Rm))NNjkM z9E+LYVT=w4{f(t|W@2g{be9)&_xLm8la-5oQ|fl@!{1f9RxeW!MCb<20>v8^L zn^lu>L3`8IAfX1qipTsLXBbeak|}=(1<%Ml+PYNisf_I(8$Xu$e>p)vJli?NcbKO+ zb9Xu`0Ol9#bXAsTLdJTr)poVVB{j06-ES9nXTc87Y3Wa)Fq>5 zhDSk3g1>gvO31DUQ#s-mH6VR}_tj{ehlJSbdXew4;%J~XwHLblTR=1>e z6}na8%VS1JT+RsML}qKkkBfH*cajvAI0^YaON2xaIxy%+<&QL=v$~wrpq9o}qLg0) zjhNweKe!PZX-v00OKYxUc;3DT=am49UMP~mxQwW1h&{pOk7rq0g6VY3PAVt1p($2; z`Clw15Qp2t6I*mE)*-g^gj3SzHh2}ep7uSLa#s~rYihfWEp0_D1}#aXQxedQ@aROS z4-hF_tTM4pC5Ttr@5f-Kf>yp<+v{#2GHWQ>eJOW!VU?z+_wL25DB6W^ID(-7tP_3} z5)K-t8UnDU!kI)k7)!)MqqcyVRS<_VQlvrz7VuS^dWy6yK?+kcwd}>?|w$h-ZZ<`v5)I6ai)V^)=VO4%%{6gmc)y6IZ z#QgJ~TR{Q;jP-KsertvKE%Tjd|Mnn{dpohE!5(k&w`J1;Ul@;Er^{{lPJf^)r4pUw7OiBbdy^)PzP_U{B@$c1Gq&g@6_AmEr{mJ zm3saC>Z*VJ0%O0oyaiO*il-;eiUz;(;X~Yuty^I1HOuRN233_NUlM1OK8mIj4HiW6 zt5sBiwF``0-i;+~QRQ>PW7+ZYhX%P0tyy5~F*lagvho?>G%LQelNswo z6p8e&qhaSctqfEB>)cGNl4dQhT-mc|p@%XEWTFUAKx6OJe0b9urHH*eWt&k zAGL>V>{(!J_pYz`qWebYL+<6??ghq>cTY`mT61!0h>+g(>D1Y7uKTinAN}KvHF}v_ z%ppO)!@Vi+>e~G`8%gi zb9*DV4MS1mBh%(Y{t&RKqgPKqKyLd|$rV0vV*LEo)58_FP(@!ieTrKv7nk0l&OWQo zEuKCpW!1~&@l;^(bhh%2fAMst;?4wR(v^4o*H5Rov$pI55P4|)Jj%oCr<1i=Qn^*< zR!rMutz2#x9ZuCWSrQ0OZNGB4X6=gU`zf|n)ls)Valv<%Z{B5(Tsb{NF;&Xw>+4%G zeIJ+YM3OKJc~6!i%cf6ouUp;IZ*tmfa@q8~b#iFB$?K<&J2{ITBHd>~*H7P5Crcg* zbxhw)R+swx6kiu00HH$uZ=b%4yv}7p8IjC5QsbEiXV*S`jQhQ1jVSy6s?*m_-^u+B zRbI&mR%JO1q_3SmDz8zMab7b5idFmck?OZA9L4VG!}9hn!&v6jL%m%*gwUoBaj|CY z_0xwav%Etn)9nLJf@XxerVmOMk1s7{xep&%vv%3^0m)ZHRzA9XdOtavR8AFB;9CXC zQf8ui`VLBLE~|J=xv6E-`zX^}HVAa%WG<|nzFnR!`*O|G>MN_J_o{O88Fv`5AZ;n~ zbq+O0mQCMA!LFt9Ew}IZ82@Sh{{@EUdDeeg4-o6;IwGX~7yRX}DEKuawRBI{5@C)T zYXaJh-vKi`i5D-NT{4^wr{M4W+yX@^$HQ;}VVqTe=tJGZUSr4#- z-(OX*Y-Bkil&UA35m(cyTL+#~*r+SevDs+c!MXyQ!GOWvD1+q(ko>_EwjU{!_L&q% zBA}1M{uF|FD6RUqa`WMKZ4++ZoV%{DL4SW)!f4fi{Yac>JB|;S<04B=z?~Cw4)H<; zs}oK*+4`SXcb{6r^!Gozu)auGtAi_ykoi%=5yYID?zH6yI1 zR}u-C{|k(F8=m9V+pX*H{(bjh*LsN zvz};8-%IT{3Qf=}0ysy9kX_>+i*5is4pyGHggVg;H4h3^^H-OvL*q-0m*%<(K~3Y* z!)sf1{Y&s^z;l~O37FRtZv}rKjIGi^v~5J+iwX$MSX%dc{x38AIFppeH9Uz(M}p}CV-o8WYD^@t0`>lXpW)fZ{9kLn z*!a0Y9JXibFV|Vvtec>FaOuW|yOuM~U&B6{wuu7;^lCZ_ zEKo50V1}2evubBwS!UxNdA0Fs48;JuU|WIMnq9<&v_ z)EPq~nX!{or!-SuOI3MpW3q@gnp;$eJ7f(kZAsQELEo|2DN(z^fQWrY1Sfq|-f=Ki zaM%xKi#oMhnu=MC33{dR%G}~YOcT_;t93iQ0yi^4j`{sIN+e7#@I1qI1mzNDi-_Q2 znW%iVQ7e`58k6)2;}yA0g{VVPruA<0G8@uu9f3R@lW60P@`Hxi*+0y1MX7S3XRlM1t<144yu6Gunz&SLgd zy}gCI^Vn0~XuL7EzOcpV^uw)N>kTkT*e3-QP&ii}i}wXE8^jCa9I-=b;m8ftspjwx$~V&?=arM9<@Ug zIiEf1?J#EmP=NQA%|=2Q(C`TB1k6;7P)U&>3hAIbvAbLBQ9A#r?@`2o)bsyw+5g{a zU1J_J9)AiG_E%LDW1-u0J1!gS9B#Gad=6ieNHWWr(;tABA{H>-;R&p}h~Fc}(0E$O zdmApF<+)XzU9_}O*t$xpycNlC$pWxq+_W2?Gd_n#cu>>MBDSy91nfOIO<6M$4+BDqTC%K4Sc1?uNpxx&rMx+PAi< zz=!NGaA4_Z7E_NH1{KIC0$5oB9m>I)nU{=Cp10l5w-v1g;;ECfriu?}BttYlWPF%Y z{~l*(9NW}Va`FLe5;8C&k*p1tw4Gs}AczU30Ks4qC^t;ZQX?5#YXM!mi8=?%vO?vJ zTibjeFh0Qkzq?3a%RS-!b`&hRcr2a`;>-rH94K><6rqthqa*_0WTw$mD*r&l`i=R$ zvO?tqR`z}^x$igLujl_?8J@k?>n$JnKY#VBn$*widvli;_B+iy(9Sqm*i2twS{&VD z4ACS4Q;fkf5gZ8!N|y`-z>dg<(n))0a(u##>Q*&Oi&?dDD55r6xqAwCXotp?$2xP1 zA*HDd@`rW^V^o4fhf^7bB38DZu5s3m#I^Z7OeKTSEtY#x3E%< zZSc95qC#_LerY8rQ@b@>&VFc`xyuUsimO4(`Su0m=I{nFS{1-h@UVnWU>sA`kYLpz zuRJ^2U^Q@aYFil{^H+1r3%5IT9A4j2{P0gKs;sA2{BxqhoQ@t2W{5UOx5v|2;x&a% z1AbZ5xzZ|i%%v)d$h4|3s;L+x?Z!VD|AtG&UQOcCtxG3c?OLD5EHuQC18ypfKm-x5 z#GVu|S{yBqoJ0lvT0UB}I4az0?mIhGQJY!O!>$%{s}yX!U47p8yv+a0jcdjJ_s`8s z=CJWe<62;&oH+Gek4B70Q&^u)Ye+)R#%!BoE6Y__v?keXAe$9nqlh2N`>3nk7tJG- zsTxh4(i(q-@S_{Qc*{|NgXrU!1xOQA=hnMtVYx7LDR)ibi0+4u9ZT1@S{ha$(6cjG zUUF^~|CRunyCCS2Y-)ba5HUOCDDLa*3r-G)1$V9~t#{2rYZA)~st&soX<19EdI>n~ zhl61=4FO8*x3L!s_yd@Ui9fUezY69ry<3keozt4CUb8nBEF98QEjzw3(PHf~yI@#@ zc>M+tEaJ2*C~7RFDL+u4L1g`K))*@dPv~t&E7_&bYlm>%VpWaU;K*-wnLR+R9n@4K zw{6*$OW0HC-jp3jB`P3ie&nN3>Ji}wu=#ipRgat$9r(qHnav<9WmZvGH8b1ICFYIT z{~mA}bg=Vas|NKDV+b>4xYvlE>5p%F7(gJz0Dv$BIK~FjL>C@QyQ8b>gV0u%Tfw?I zVTZL@MWglI^q5!c{r}B|XP5Ot^M_{Ic=I#6Pd}4y17qzT-L{LzcU7)S-l8R~W02fw zecuL{HWBkDLoEFg&Mg=Sq|$*90$@Bsz_qeRiyJ^OA;v7*e2vzl(gO@>$12#h*HI?F z)r*v6LB}N|)pt8%Vqbepy1xf3RDdCYSQ;3c!^AZnlzMUm%?c+3nLX33!!Et74w^r6e}Fl zBy~L8de@2LpqN=71Hl_ z@P8)^&w%x?`3L5+jEQG*#@2fmPMmHy>^|L#?eidPSoE|RzsPQ5vO5zvG77s1QJCoC zITKFFm~TRuo85x2VQV;dxNyQbVH`Aa&!Wki9CnBa1rv@271sfSm8>$^8<)j3E14t$tHkMWCC@O_y1P24^lgZ+Lm`s<`T%LZ~wUW)iCq|YVFurV1kF=G> z!RmOi9(T8@hp-_C`qM#xUI45{FNJ9l=2~b1BOnh>jU6_uQ5jI&Dm$>9%8+;vrOLIy{A<}jmx}GvrorE;;|b|_`y1l<1&G6 z4C5CTd{BE?s@+3^=7g(9nu@DaRtm0IwToiZ-Imf@1$Lng+G*SxhxXL`X&=K;5z-Oi z5b`v@8V@LFS|HoQgb+Y37D+)nYxO*6FDuoEc8WBneasrm-CIaHkV|)W=N7eU_)$9; z!hHwZJ2p}QBF7e%VlJ zFmgt$5vaR={?wh8(_RpdIn=;$U~+-2CQKH%pqT*YQ;BoH5)5_H=k=*8=C`Kqv~^m~ zfAD|yS}!rbZtfMdonOB{v_HeT4ZDxE<{8c*j6jKk)*k@`Rxp^O+2B`)2-qFTVptK6 z4o?oIaqSx}dZ^cqED1VPUZ}-3eaebBG1yrVtp2~5t(pMNrV7I#*QZn zHieiNCGnv@{NPzk`-=7nwQE~>kro7=wa(^N6;5gb+mCjyZ#7RQK+KMYGTAr|zzN*v z2muxco&s=M5LhtrLrcdIe{Fm{g;-3EC% zVDR9Ugy0D=4M-CZj2$W%$kw4rRiV+$t5e>URX9A5)S})V(rGVu-uJ}rM>30T>r6KG+2*bMZ0p(R z1x`C;4t7LZwekgQfdq`RZe(yL6iOPksZ)tk`;}2zuV$Tq zX1{ccABD${C6GkPEDmHy1mKVb zsVYhw4dP!F=`Ax$Y23aQwkZ|uTPEPIe!LSX$wwjk%>2oI1Rw`|z@ouKEQCr2xgbDg zL|qo^<6t@-O&0fnGKy3Xo09#A^$0KzJeRkaeA)xT$%s>9q>OV1+dUNV4e5QDP%{I=e%9BPzKAj#WQvO{252UYTVN#3fG%LL7J zkCWu?Zk4=F?(TAu+}){?*9Z**D!If0!u1v>nf1=?P|2$W!u4h+354r*m0Ts0c)Qedr0en*mPRPx)BT&*q;zvE2Nrp0Q@|_mh~o zx~-SA;-aU)p-#jJdq*5p!l@-N4Mwtw!JineVPu<0xKtP0umRs+Q%)QIRBy|j*0ePZ zsGbDN)m%(V>BaN#^0c#l+vwadjT|0nzY#=}=KUykHyhYB*0Rrg} zqYk6a;W4~lr@(V^kwofG?&@M|)G=z^_-Pevu~rJ$X+3E@nTr%8QY*A}+}*vS)$I5) zR8+8WA$;$$aG>yX7#(1J?g#fb60iwfrHODUZFJVGEQL^~MCt|sOhKL{Xetc}|1;}b z*dj}ab_m}z-rcg1Uuc7f7AFRwok89Js)G326Ish2=DduOGZ>s2KMH2n#1Z0#jGa6? zVo$WHL&FCus?*@4^+M}U@CcE>?o@z1pyix@0Vl0Mh~r8Kv7bPZg0ls%a==dEBa+Gx zJ-ayPUBX+eOPkzs^O{aCuwDSc68L?d1pg*}qp55ddlZ7MM}a2`VLAueVmN?9VkQ*u z7mu>*TtZq9Tr4*)f`8NcO_~3f0pH`f$10dFC-Lj}mz%g~Y6aHvTx7qozqv)Cc@;R7 zEcRGf(6mHP;MmFuE16D*`~Y=?uqJR@b8re_Pqj(nku4%B-ry6NDySHgs1y?(+2UmB zVrn;#@Pp3EGg!XzP`3JI8XVBw;_AK(s}l37OSv-_4PEQ5T&Q)e7hxF)COWR;sVHtx z0nCWl|NM9u;njw4(I0dvtY2we-BO*NQl+cvT>Y+j)_KvT+@692C1?J04R;+?OYK4> z`z;xG8HNg62u_f764y?&WB{G8Jz&Ni$)uT0h)g9gGTo}3(Nuy&oaPUdC95Ypu1w{IdD?=9|oddB!|U#Ewqm$Hu=Je@k?*$9ctk|CY}z z0*pwbCux;1GI?9}lqmBgBWDbWu8QMVzx9v)j~PYQJ21aV>4tX(?uEV7p?a3wnO z>{JHeu+gP6SJd2HH+tR7LU|Q{T!wm8YJ6fMlY&uLKI0`LR(wfWm@A3M|fvLf?VBEbUc z$Fm(X9Yl3WqGS4PZl8%t7d>}q}>EKN`~m+|3luJz}In= zcmFeIl6aI@P8>&Z97VQd#f!Y&eX(OZj^o%)Y{!Y6eNpZ**AlTMN0O5`D>q0g&_=p) z3k3=k0-;dKmJ)UXAqf!LQg~llxMrM0q4xzGc(UQ zGiQ6w@A>_RrVFcoIwvH3Yc=JXMz`VW9P1f>)cw_CE$iP={xv^*JbMI+uSev)75$fY zZ+YuW#vhi~RIFd^J>V56DOQRBofrx#K6Q&J>*P z@%!By%r^aAT`QgA_sJ|(baP(m3PauF_o`nzc$fNXEL$+D>NR@)_;LAEMaLzJo|8L? z=Z}w7om9QS1>>Wf)VyZ8+L$QGx*L(F6$zO>%_0Q$!H)5J-0bHX71={e#*fK+Q`a5p zJ<3j5{$F;h9pl69Z~7g}bMpTejSq3YM;TcLS}3cQj30G>@`~t}BBba4VZ*vaq|9GO z$|@YtjEm{gS-M+0_r8u5RYP&PkM=;g<_E#*WZ72%-z;Sqm;yVfT(eb|ishnl@My`S zYW%G1kLwPJn>HQ2O&0Tx+hj#3fsD%I!0SQcnjbt>>?xh8jbGTmsCphz$M_F0G0SEP z89AIL5a^J*iTMP34WMK2hr?|=0vBX83b%prDq~AVen1*|#$1eKr5ged3ECmYf;@x& zBb?7f;K@Qg0EAgC*Q${!W2;8qRkB=6QL%SNbyb$XApbi!FGElTa3bO=n5D2)$lh!| z7iDvv@SJ2W6G=1X@_wtQCc2e+^D+6Mv^pu_R=ObGE!=6C`q-+V+I3%;oPeEos(4pP z%%P0uW&mAg3E%{l9Llgi6#)xMFdy{qpiV&V#3&R|F#_~N{oN%4% z;(rfH{Ld@U<~qwbSblq_nJR89ouj|s4yR+;waxeL%^tMyh-V=ds*r;2h+R&H9h@)$ z(F*#+{@4gLBRj0BrBB`029c|qx9-Mg-D^6{9EK zxu+M(g`<+X9oB|A(BHa`m$BwL?_5moHoJ>^OKsZZRY#3o)N(USuz3M=SJ@Oa^A0d- z0`x+u4BPeWI>o{IWg`UXRki!7gZj&zsx0nA*~eD+K!aKUaNRoSME321;?@$o7IL~w zdDaG%XA$9&L`KAu61hhx5~B;iS{S|H|92oJ$W~#T6?1pf6<0Ol`Os?BPt=9}HYmX& zb5Su|n&+2bVNeOq2UE$;Ul#vFC<|p1d^HS-`6Nu`;6w=oj#brg)j=z7q-tT(!07YM z^Y!@OVOYCG$^3}%_slp9qj*i}JYABm`+CAbC0Uta#hD>ioxz7VIxv(B@r>|MUI`5a zJ(%W5rn<)I=y2Jgd5f_iSX15Gbeb#8mBs5z=j!4t8SM#dDl0N^dLH_4KCE<#cws_y ziEKoPF-_|R&cf=TG48mo6+Z?Dx$gZs%@yVfO0}T%Qe8^x0OA7V9M?c99EY-xNlh3% zl>%yNEI&fc5Xp6|P^DrJs(nGV&}y>O!jtRXuTzCd#!BtFRErKTVS3rTTkFNsLtJE1 zdiPOIA|y$YbY_X6NfN7+V9vpSpl22>jvhL5Bj{`cyJa9{tTexMyO#s8M*0n|ST?P| zrlyl@N`yl>qCTTIG7$e@RKOHjbuF}fKl2>zUT!Ye?f){v3X7xWQ>fZq*7~SljFvjw zFK{q;pkGgC02M8ChCs{1%u&&kgDjHmjy%{0sMyjCfK7EPUBYvlqMYhp)oHFb*B3XJ zF3@K8+!Ji}I;br}DK@&Yu_#DQLW0vW7A_J=aDw>4f>VtXZsmPdUon?~f1SCmm@K&} zyE7B4TkTD={^ zJ%MBVYTWthT#hgw_QX;!Iz^C7PUmxM>N2G!1SDJuF0S52sr&XfZK}M0@kFna)mUG% zomcnzPII-nnz7N<@oi;nT$O=dkTS4Um8WHgSrQO$oMp3`)N5mM*4nybuJy8ZXa_`k=@PZ(F{>+vJ($E zEJ~v&S)*PgwW4MCeJTc%ObpmzszUIx{1r)kw(=fgU0cfK@!8r~)^@w{ql{Md5U+Lb z)M-Y{NO4=qlkpr~(i8M{(2WLXz#J2(0qlHozLsTcFNX|v1hP5&8{P()mLQ#Dc~nEH zC`n*tbedr^T-;Jxth?idnT{PnFNTFR{T9#&Q2ilr2Z*PqBak9Q+3y2IN33HVpmE*$ zt41AD^B%;%KDN8=Jvz;h8NwsxihnN5EeUKP8<`rjBN>B?h^W>C$OI`*n#&YGw8{YW zM64bJx$e`w68JOYsxq`t`y0)Tvi+Zd3*Xu(?lgac#4qh%@v4$5xXG{{_!{8#0AmwL z)11-bg$p{AgbkeNai))#1-Rgr6f@QO1Ka{ClEOB zhNT!;63H}i(@+$nD4OzVl#t+qgn$S*S$%nnJ^Q@eI-||lad6s?KlKj?07}x z%CP_e8XS%xps?9=f(VWr&<`I7QwMom*NAdS<^)5od#_G5yy6tdRrYM9K#U!bv#g9J^zn9c z8T$Q;PP06l&CSJ4r5-(MQl3C((Nm<3TU@bSj*Y~&(QqUj~nKjRPlepSz< zJpM)18_f;g#wK%9aeK*C$)p(tE(Fqa3F#bP7Sn(D6^NT;qXQWeIsQ{1Jb~WVRR_yg z*NF0`6$tFBdwr*wHq#Ws)ue8v5Gk-exLhGFh^4bI7obTk8GjIY2JbI-MSMVF9h6^P zBg%ycg#6XLzSB&ZDLwu_XIOF6e}3C|?w4@*FWy{QrMGD|7TbCPeMZ+Z@=IBG`lbQ| z;Zey4C}Zu2$7Js;N9<)o)LKhx%!XGt#=JFnJ=dD|6?c_Z>So?M+5rft`Ksk|bh&fM zFq=)`7>plzqID8%xe>aXMfwMN*-+j=`0gkKgF|X-yOl;>b4djZaSltB%guchWrg2k z1-ALEnRpJma99#$G%VvLd=FTUwk&*^4*SUd{LIJbwNe%czdK>Mxg=$jBy#N0&3!>D;g91uPD27%Pq*J7p~Sok8TAFX=Rh<z-bI*gz0(VrOg6x#0 zFFQ8e{V1n|*mn!)Y(Q;@kts7Jo-G)iq*2rGcRN_Axr>(Ho1!(MZ|rKTZAX~@w!4cR+iZpe+U zoO4V5l=&%&w_y&&dloWPbdQ+0^L_Bm5WIqdH5m64fw}DGMRQ*9Za(eeHM(-n#e3F# zws=EHiu}C%O}wifUg&2j$DK{mL!hXNoMg&rbcs_BTjAodtGg9 zWB1PE9&dJ;S1t{~Yo!PNg!u^ywyyPpJ;OAN*bhjb2sZ-t777D(f{2180GQ+)U=d|u zZOwZH2q;*i%jRCNXUu1G`+v1z^@!cH|5yLK+rK-Q-%#@O=UVuVKFtWh^c|&l)culp zkXSH63yIPOUcOkIC8MhDTj$(FnqD^d>i)F(X}%*@w62u~@0DhxeVe*w0>ri==c<9>g*X2 z4~C0{AW2-Z8L!8l`{x*RrB}X|rIqNUvYma>Aj{iyY&3O zapZ`3F>5lW3;7sqm^m6*!ATRwisT0T91dGd;j~xTw=@eKsk?Bmm^t{X%(+hbFE%fx zM2R_+XbIHTi5N5gTnwnG!Y!;h~_4v>J-v*I2U;RtH z|F^s3YK<;=)OE@B_*+N#rOIj|sT|f&+~YDwTx22MHed`NMjeaJpr=<@C$aWp+^( zPtUZ4_i_oo7)ja&jF;6xJc~vr1bOUK03Az(iRUcnnZfCnWmX5)`g^$qcK`jQ)ExTc z&P)t$=p0eh;T#&adE`gYH0Mjpr@#b(X!3ioTTi1rUhj8n?dxfI{O>e7W&1zVc*KCm z{C4w2b2Z7I;a_oO$rbg40y-KLS>Fy`nl&%2G~^H{K(qxET1wCv_&4+6yi#Q!8_+Qy zdbY3AA1g0WGhSFr^@E8G@N>C{`bzV?LP?Q<-7xx>T$Rqn`+`LVc7gvz zTNL~ynz&3#voXjO(l{FO(2v4G5zWX7sbuu8HO>FMkx9Ew0km|LIa|?@IR`*Iuw5_< z1kDh>43r$|M!3fy?*e!gPUXD7yfJF59JK8k)~p)63+tI$@0?`yKj&02Q*xC&mkf5C zkdbb--7pr}d|Ga=gy5P5&Ll^@xrhMIs(2N^a{b}GH$bFCvB;SbgF(Lt9JM28mD`8woY-r zIG>j1Dtywf-Vs#6=P}VnGXMY)p@gXzV-sCKftrmJ;P*km+ojgm531K-yzm*F!$&pf zLm6T0)v(tRyH^&5+!<=E`R9rAilLG#_KEp{MDgclAW~%aCMyvdOssRzAUKf1u+7Uq ztn%F0ra78l+x4p0^aeJcE6xQBzg>F>v3Xxml`mjxLk9VTa1$ozA&>(h90UGw)W8vW z3P)3w)m)kOdi}ap?hj=;lCW01pth- zdrC9A{iaN6X17<#q-J*e4VhOnyZyR6tC`(S%Cnl;ZAPBe%x)!_)XZ+vGO3u|>?xU4 z%x?DMGO3u|>|cW$Zb~t`*}p22irLM6rA#VjH~SSbshHjDm&?l(vzt9GlZx5Rewj=v zW;gpWnN-Yfc2Oo3vzz@=nN-Yf_Cs*aO(|wKl6TruirLMEs@I-U%x?ArvOtR2%{~E9 z;?xRB@<#Hd_SB^+dB40vubbo!%T@9|d0CH29+#JOyU9oGsbwlT2JhX}Qk5K)cj$7H z+~E?H95UW)Pj#x~QSq=nb+Ma#$evoFl1HSG7pdgkGPzhKUm_oTp-K+QWQR%)$P5># z_$Ip0AR5nRlT|=H%J)R5B~io~x1>d3J$H-X)XmD%mfS^HuUrnLI}&?~uu} zRq}TEvf5PgHkq_l@>ZFgr;@kGsnY2{$dYKd|d7Vs}DtSOA z!Q1j$_KFAW#~*c*C+x=`QORp0ui(RO5?;ZFRPt(Zzy0`wD!GSZKK_78?v{B^xJmNf zuadiDhWk|VDoJp8uTJuY9zU**kF)jphZFd6*UGS(SHDIdZMG z^Snr0#PVg2?(DQknv)0V!YN)leftE3#0l%EFp} z+FCm=6cHE5+rFZ%#sj}CJ2o3Aw4^VzfK$LZgEss z5uRnWD)4jZrNL=WVJ{FD==T2+!@5zt1OCrJ<0Fk5=P%YT#kD0@0eEdDm{z?D=W8;b zg?pp`T?X9m#EYP%LKsFA{W?_koTHhcfy~%gW@xW7ba-q)eE{_*UUhN?Ov$@MS8+*c zzy4lYVS&FyiWf$l0wLlcsPhGaTkz>a>XCy;g)cmWBz1t5jSU%cM@7c*rP zf5xqxb(5>s3r$+!h`&4oqdNi90Nh}aNx`fSoIQke69j+oh@hVV8`eu8_yW1-z1;>~ z>FkUx5B%FCtH+H_(Ia}W*p>Qi#o}&u6QK;qVs-?#AQ;IQaCKy;QfzC(d<46$ zWVX6KlMk}k%`#VuyG1t^yE4D6SiB7U5W&I3ogj6H3J~OZadduZ{sf^oAtr{(;)8=j zK^D7N=4$aWu?&k{_1{)3Udr+x?Nme!2_~0p|9H7#4rHao#pj3=<_*X?-Z4BHWU-rN zt`;v9OJ(~%%UEYvw}{^t7n%j*4>)M>SL`gg`nyQN$fnx#oA1jcqY$(Z0G!Ih@RWsV zf`Jz(gk+ltqk-xMIyPvYItsFq(4grD-Y5Esi%YJ|?!rC6GH^tfBh-l)SS$>nj#+Lr zo#qQia}Z1b>j`l4RZ=k3Evh#3vaI{E^A26piX zYK^mf#9TJT79U|FNyK*ZY=#exUOO^2FkGPlQ)^yDj=6pnE5%ACD>t=1Sy_Rvp1sGM zRQky{1sU%S6%wJ}%wXWX0;g2wYH0Ab%NYV@0xQId;_{NKw%ZD^=A{`Z++d(1dLUVV zoCfpa2rx3IV&fgH)?9XIc;sm22)UUKRqN<4y)!F3oziGd-L2STkS2ws7tJlN*5CixIO&E%rP}JkMK=vgblS^3$x6?l7 zb5%@eBdcq|KwGqWy;#qD`VRN|yg_y5&33oMI)aQdu&zTFz(zdcps^VA6_Et7x?y5* z*eUQLYbv9q8yc;)wOVzwtP|^4>$y_FRB_TcMoE*cqA0;p zj7y%en&zNEbFa?S@<_B+tSzo8xr)F&w*-$wYuFM7`3&K|)TSgf6RvpZ*+8@+Ttp0Q z#t(1Q<~C~h)%JSpm1ZN;8nH&V|2G)cb>a#0`{r)r4L^&9-r_T;M^`YI*B(g!9%bt! z!k#;XQ0%KQ;|467rJslLJIaZ4$`{k93KMPgkv548t-hpFL`9S@)YS)eztE=5DZ-$X zjl_WKzzPGW5JYJbFbaH``8JrOg#U$B1%p;Ux7>AA#eaI^Lu1cnL`10BtZx0S)GWLq zbga;6;aP*RibYGB0Y9PG64+xy8^HVa=5DT<+BS4uhDDf~&G@DUE)YY|Zsu@NN{lrB zV>>>^HheCbWfB@iea-QSTdLII8r5tKm4nXKxMo8lgt@NVZz~_dMs{2akwS`B4@VB( zK?0mmkw?f5G%5is2|qTlioBtbxix$ZLFR50ivQzG|HnO2|L1k)KbqafJwLUEt#3^I zxXQju`d9P@;UumE$qH4t44%db4k9cLtyrAhz7%|%U{tb^vEw5{hlVS^^9C<*cEi2Y*ECzb&1ox*jQAB0qXc<A}5u~lpbP~(dE;@=NkSZ$^RF*KH(cq+okREV+l0F^b0 zUuaZ9@0v+?ALX4*3Q?73Rv7}8Rhz|TdMH=f7wwT$Cb5aZ%hmdAMX)H1ZZ*8oQg11lWc?2aELxD@ z=NR7YR4NiLxBeE5h73U$&NaIE;FT6>J^z1&VO=U7H@|LfGhXpiZvTyL&nns#0bZ3c z*6uKx@(dcUr(Y<9ah)PFEme_op(O4diMd5JEy;?n3bN+%KkJ$S40%vt{#4x{+*A27 z>oY&sy|B}Gz47|uijpe@jMWQ+tbQG%5jwi~7{ic^v4o~Ifz(IK3_JiJu=HtLUDfn! zO4x~}?eAE!qf$Z1w!L@a(e)c&1DamI^MqF_k}t4-hO`dkK_NES89ISn z7jm;&e$7(>FW)BXSxYsjR8>V+zXdSN#@9|27nNMa-*c~9WCR)cx0!qvDosQli6w-) z5Fjjj#I(C8Tm_EWoV4Jq5wcuovgkxue=Huj&lLue{e#UlD+v zas{8t0>e(BvmT&c=5mRCoD|L3RqtGs=?QGkPcYX>v4ISaeil}qbONW1`qvX2otjyesQ#rf;+CezWmroXz*@iE+m*9n0v3n(fROZ_2;}LU>Rn ziBF9ErZ^h&GO_}yb7IvcAH}GPG_IOT)jT)=k6e?x(|D8dCb)B52~T>uZ?=x!Rt~a=~BY?_>b%G18!YM)Y@@9WIAGau&k!-2;=7Tn-ZIQV&g1Q=(0qs4SyV9Pm)cIRM7{U0LXCP(c4*U}y{zN)0ry{KGf%#-A4LTj$ zTk2}xYP^*`%vJbgU<>TS-jd0~Ov9dXSknE5KqGWZ5G2WuvKjZ%m;x*=rCdHMi(Ae$V*5;$<@gLn=D47VLi~qPc14w)iwt zQIN-M--jjMQw~xf_y`7Uh&`!!xNHBMASgAr=rrDGyc7G4*6sgY!hVuDz|+tS!61Os zg0*J|BpTqVTuz4EH$zyyV$(PSPJl3Qi8tE8{HK{xFcpe4&gNY5o?=`C6-y_ZjaihGx#v zruH1|3S82^7pOeIJ~}C&uX)gC?B1dAzz2xbFym9G4BV&>FRA(XH*NCq8-D(3Z*$EB zoyL2O_ZGu5uCC#-qdkE(zb7Llfg#e1(_=wsj2KV?cu}5hXIN>YgrE5~cq4ki&@?MQ z15|UD#CweQ6t~Z~I)_wr;OynyKs9a!4{M(qF zzs_*cq`h?-?>62|KWnw#&%TSz-Z(=A@F>6^4qN?+0+YuaeJoyWmb+Qi&(_0%*1UGN zpLKKAF}#&=?p?;abo;;8u&xlVHUHI&8u!*|y+83&#q^A;mek{P$XDNVz4}2pw&vM0 z!>Il8xq23CyQhF{HyjdvzT=$EQ3W>#s`b>8CT!12Z^en zS@#Drxo9>C!jK?Uf|MjDhlHkwl3+hsazh7OZBRfVtSV4SmzecE`sxMHSF zH>`y>1=sTXi4iAwHUWtWyVC_ha1!Z zN!C2R3^m%olv;NIqwun!p@((V5?!`dZYX@1eXz__io_TNG-#>oqH$GGh7 zu0W^sv$U-Ull^!okq7~WOwcJZGeWP9NEF1k;=Xd2kHTo)J$m)yXK!r<@T~DH-Gi%Z z*h=^CNyu{ui2=)tiXoW3G%OTKWY+<`ktcl5hsM@{aMXNQ<*%~}eOP|O0Wb8E#wV$D zPuOi1?O*G2(>jkI)_Hb=Zq$ZuMwZG20PwNDtIpw?Yo!&Ykj z8Mc0j(_j~afrZ#4x&I6N6IfytlC316*53QC14(RH>n#B(Yp(7zo-v-G)?H;oj1R2! zj}!RAFcK$RiRBCxO{7nv00$~8hb#}kTm0C@w^ZvNH$JZ0|AmH?fdBJt##fCCWy>yJ zHRH-0(R2gHm`?-ANu>)+2_JICk)@0CCaFgu>Px}WOtZzPT ze41X`lP|oxD;+fFeSx4Gc4b&-#(`kuS!4owbC3Z-t)4F{k@t0seA7;^B;M<3r4%n1 zFHj0sypZ=1Sc>N}QH1_j+ryL=VNWtlGiGBI>l5f05;5V=wtS3BYo+kByYFKzrFhG$xhmBP<{nqSp(#&eX! z)hukKB%jJa0LI!0epWg43IPrPr9$L?Cd{r^u8>Q6?ZZb!wpJ29`)QWsQ^u!c`@a^4 zxAk4?U#zcKU$S1bp0R%4db{-o>!kH^>tSou8nEuP4qAJxZC2b`Yjs;4*4dUJzAOGk zd_{aod`^5qykGpTc$0XQ_*GF9_lhGTBW@IX#T6nY){Et0v6wGR^Lyqu%&(e%Vt&s2 zg!z8+9p)R&UpHTFK5UMdht1o~>&&an&4?+kFfTUGg)8NU#=jeXXZ)G*N5-dEa{r#5 zZP?SA>gB)0>+ESw_3~e0#-7$xFaIS<_OzyY`Jwm?ds+S8iqUTsfns+aGPcS=*ee2=_Sn(F0ygBuKcS=*ed`G;>p3+n=-;tMTs+aG`%QV%?cPPb_rh55~yu+wseff@j+K5Vi zTV8gLo8+=%Zj#G}-6WR{xk)ZNs*?XHrsqu^A!*v*S~G9zZk75bsh6nKf2^^m235v? z6I1rofJ%PDeC@oc!|L~c;rD_%`Oo6IRkd>FefA9a5?HlRBtUzmIv>tJG86 z=sHrueo9Qvn>yg1yw*KAF>h+We{!FDa(v#@UVW0%U87H$VSDOom3*JT>-ysio+*u+0F?95VKx}IXkp1?KJ=a9Q6?jeR~EVD+)O;F0g zy%@>@rDEQN%4AuxM;E{=URCJ=U}lZ(QCmf=t*<_3e7?AK#??0k9}+mb{4D!<63CCg z0{k5~6K^Q8b^{fhCG;=?n`b@N?PJZD$aeK^PHH2x}s?-QwE zx!PvID%By0{{#Rofi6xVO7oo++@Rs1G+${`IH={;xm@*X-u2yE1Nx-DGXCmb*i?o` zx*sgVQXlRf8}6<=?cMI-;(?hS?ebw6oC(?*`BUbtIXzeeO*zhEGCwYaBw z_9~n1Iqn>HHVlOKh`XC#rL3ZSW5aMYOS=~A7Aq*GcV-~AE9k+aCq~Ddqq1&BhI7v7 zsJu)2Rid|iVj!|Js77bqWFUT}7;SEQ|M8*GEa5BARar{rTFn(5PzUACo#$8v8<2n3ig zvt$S&Cje*c5E5WYC;%>LXKcV38FFTox$=C~Y7<5oYi5bQX7P;s1_PK<39Gz1Cw0bQE`P#;Pbbi1APWYq)6 zvo(*F!o;mUI+9I8HIw86L)rmK5kTNsxMm=6gV;Tu%#X5w96DV4=l3umiakhii8*tuMy9J2ihgRWv#Ssu}anpy4BbDcZ1b0n)jr~2Je-h!tl_B0n>_E zcL!!a*6&`>Pu+2m2wR8E=Fg}ebqBV#c!h2XazNO-(aN>*4EKtGYc^P!R`MSo&C1&^ zUT59WYW9KigYSJbGd93@mK(`2Kqstw0`Bc*cjTfbkjxF|ot(73FJcV_R8q}F z1FM5yN5v&Wqr*oW`J^>-GEZMNuyB)gqE++m&gPG>sB)NO%jc>1-?I$Iuzp4Sx!7gC z)3iDGN&gj>%}8-by1CwKJHl(3KGa>~s~Ns}+LW^yH8dBv9QZcGfdY~r#E*fL3ZmuHuxxulYEkpGS`OhYvqjzaf`Nh95DW~CN@AzdY>s8~;3D%>WwyqKnnM+`U1`8iZ-PK*Tn#CyccQ1aenM55KBp>6Coj9`VmbfsFs?AH&sY=I9oA~r|DP1E z6JzY(b({amZrxkWd(FM(YU4-7m*56FLe`qU)x&K@*J67;RefO3K{ffw9m$N2s(<>A z^$*JNn;B7W@5Z4vqj#|#C8|c|%#6_y4d!NLcF%WO?}#65Gx`?Wo84Py#+-eb+yD-O zI@dV;NA+*l?^}7K&FEZguk|j=-90;h?(XZBt+~6+Shm>SsPhdT9%7bUn^T{?cKPy` zv>A&R+pBb5XRJ1#Gq!K#>cPsIP_yn?+2mCGn*MbIZAQ;xJFM<@y>rZ=Xd^XwN8Hm} zwqAO;%~-P7?sIeJY9Btrdg{teD+?8+zD_zSYHp~U7gsM^=Ttn~`z~v;%I{ZtF1GGj zldq^Fa!XId?9B4)&W$T`6&4&AW)51LQ=Yr>;!Cp?I4c*Y zHg#{ltIgQB*xs({=74f1?DX6TwYOEjG8J&W4cmMA`rQ{MKges<3bf`Ly)3oNS4Zz` zGgd9O)9N|9?CuTi-Q`n@;Qj|Q}}_0r^RZN}Qg_LkXqnDs>N?q9t{wf{4r{1q>V4)Z18OB=HP z;;KJqCgJu{*L0`>s7WWk764foz4}xF)&tb`cC?-mrqoUFN7_-LI-ptl{Q(B|NCqhhb(9hz zQOR#YKn{^4d>9BnGj~hRdG^NodQ^Iq^zhfclHH zi1{qU;U!?pEDhaQ6jo<6b7EO(QnQhw{OfFEHf}6hGbwG%;vIp;tVb8s!K;=>kBR9t z3Iae|*}sDy1q?dF7WKop)u?9NpJtn}etmJ_Oj4V%;<`XH))AwbAifPXca(yqP7w6P zsG~}H@K6Hv@Q5;_;x)|vtZQ@3Hfr5E-TrSitli>cB5uB!dH$_GnFe26IwM6K`2?bO z7z?9K7yVmT!^$k9pHh?*@O(5!<>!&4OoR7y(sbBzO;g$SlkdK2?W&1j;=YDkIvgJtIm?YM| z6!~OGKjcsS)j8`FMu@H9Q^oUUq(m~+*t2ia&XOq2klWF~P zy9;kp%Dz#1o$HN-olX27+l_5Kw8T7WDfo+|NDYV)LhuM?lkTKUC{Ku++xXo7=stlK zr@tW*m-j_>$Qj$naW*2mj}NK!TE1H~%MJI=NL@GiQN@=4(xF{7-0j@9pTShhg+Nmv zX|!bQOqk)F=#DUP^iYo%)IH_5t*5*^+-?5qdtc+4D8#n?r;7K??9{W^6^A>D8)bjQ zM5uv-Z|g=V)0nYBLIkoLRUXDlBBa9%qkL2ZAVs5Y|FZL5XK0L}09T8iPS$+hx=X6e zEKS2_I;+3MdAhEmr_jFCb=}$F;UmN`jBtxFCyzQ-ZXh$#y(Z86RL^QhnatKsJ>^ry zR>tN7Gg3mC>V_xg(WueZ#HqQJK@n;29PVM_!iX`+!>Hv%QG;@l$UTJV?A&7HJ!fXU zUZtwQYVkSCLHuJBYU{dn#nm%XeVH=FhxN$U*ipN+FB4+$ixbHii}85VS)NGmuF z^C9qp*;@arwBIXVowqdGVJk0~)ql#9Tl@Od{-3$jFn5|u%_Cs)KVp7W%o7{L4dNm3 z1X!SNT8pi%mSg=IQ2~EGw^sejpL->=$S`{lpbb^O404LFTtt;8FBN%m5c)Ea&s)=O zHpu~)gCC!LXqbx8$RiRE;@mj<7wm;JA*#kOdcEh!B%7JhH4} z`L6o(&16tKDx88VNc2D`7b@f+GFGd2xOBlX z6vW+LHZ+L1QyBPSj%Y7*&6u)f*j@+$$xMi=+-xZr+!)#-c+|O18YM2G41r_kVp1f~ z_`EJbisAr_b5cNhAsc|vGr_8e03UdU=|czf&EU|I#J&#P?zrb!|50piP3P-SvWUpL z*`g>B5-KG7UL+pzJmHjp92Qv(#s$YR+-w;K+_dCoLi&*z04$D}n1Wmy#eh&;%y+Y~ z(o7PlgHJu5;O(+65GD4T+JLJkA2na}vgM#~&4cxe7pO6|3nGv}F`#aCO+=o&7mro2^1ib+u(c zn505E`DqmrQr!Y>4CXOFUoxq<6TMpB43p_a5VwLdO<`cd1t-HCj1WUf?PQ%N=l>TQ zR~gn{Sns!{tOu+^)&|QKUt=}!Ht|w%tB8pO@B)9zd_DUB2h24DxBQLqAyfj6aFPGl zJAS3OmItNd@R`ew4D3ms*FfZ1Hpd%b)|`l^d&hT>E1U=CnF}Ez%d2KWosY!BajANk z3^`GRe0s;PAQz)L2v7hmxh#GqczqpO8be+-2XQ`i*E_zQTv@m`<&Gd4V@#olZzBRX zUw}}TF9Qm(Snv4d7wCCCN&Ewv*1MJ7j%v>^g~1~C9~g{2+D<%h!s=1+jg zl0=8_RYiCMNQmVVnLJ-zh+Om+c}a%?84cf`6d9$<;eAEI5dUWLd?_2rMdQxUH4_Y* zW@{7PqCBgzINt%#V5&I3aD0PUTP~BDDE5x8msZfngb@Eh3^0uxfD_Lm2^LK;2ow?w z8N8)+w*NB$^;wTI|NkRUK+F6_EfY-4_qwy;UCWGB&1b{6((GBX z=aE$d@(kB0ThCz97zT)JrY(gNs*vuS*PjsUjTCoU?Ecv8&5ZSr%#Uw9_1MyxYxMlM zGuh!S66#HlAB%^LZI?^hKqnu9M*u2*q_rFdQoLJeD#^|?9wyM|guJ_&zPgXyw5j5x zzg*aM`Bi%gdUen}Sg~Fh9P0+8EWz;Z0z%HRo$d^)>Jdjm_eZ;zv&L|icMl#t>f{Ic zal_e_cgh@*h}09_<%Q!zO1RX&+P{o@`X`qc*rw#3-G@d_c+Ym1F2#*AQazoC=aP8S z8alkn*aoK}-DZ^FW|k}t%{`i+(V#^FkT4;6^dfp;y~eh_3^N|6324JkQnrU20>5x*;Q&U; zkuE4K-$b>=-kGw!eH$xZg1`K0;dS~iq_y{$mCu$R%-G-&_xrhT@W_$wtW#cecJC#R zTN%e@cDrk#jm=lVhOwm(ATMg@o_%pHB{59kM8e6M+fTjnyG+j;EwL4cBU2?_h{gtnCiP0_dH|Y}@2H6Kh zi-rH8amK`nrpb84qz|G)Zx?o7W+-#m8L9L|vGCM8v~_;-eiAkhIRzJkCmVZWmomy< z!Ou2Iya6g7=B0c<(E8v=C_u{!?t|$eWF7@}7aTle1T2i581vcM53u!onYXJWm&7;f z0ZE4AXe04CxL4s>lezgtZw^&tmrxL$U09ZQ!zsAr4$u|^YvCfXSY6U=&-YNr@)MGq zKamchf=~b##Vn)19FKW~0|q)ps9dhUf9G!b^cu_cZk1{!Yr5BU%UoB{^;BB#UFlh0 zc}e+-asjaa#3=>~smMtp|m)`#0}z8SZvlv~G^RXdFp0k+%}I9OLbz3RaCF1ePt zKX$J?s$3qviQ8_v37e$KdTTb_7&r~6GNbCCkxgrAZMyMB-Tv1b);;2bV!b(T{IRjV z{H@ibaOt};wmr8+t6NqXgXT4N@dR@@rsA=%^yh=)V2kO{q4U|C2^jxlKq|;)zobVY(9cc9H(F#PG z2NwbhO>}KoB&S$`Fo|dN0`xE$bL$JNbs4d?LsvED>eOsi&hB#7a{Cq-`ubDFvu0dP z+n$}Bx_@eOKao1`|3RkH49O5*<-i?EX9g`D4mBvqU>IhrG1TAh4D?sd3H>*_Y16FV zypID*9z4a4v8x)t?9m;8mOKE(JSvM}e6-;->hTFw!BgzJ=CUkBQ3%X9>S@wrso!$d zTl0E!*(Y8}ma1>F@rC8=6_!763J{Ge9KSZ+yRh+)DX3V>d<`4MA;l6IM=yr)5*IgK zPXdX<_$DN4X#V)oW804%J2IHV!#g~rdi9!f?l3BUk{zYnUhFf>G4oe+`+v}|9ufa0 zGBAM0jR$L5{ZH$Vcj)Toc7=^=ax1%9B&BL zIFc>ip^EI)8PC|WpReED7x1p`zHe}Bpj$#Wx|hp;mu~

    }uzB-r+XbChg!&8OckT zV;L6%vJlU)!-;p7;Wx zDNo`DLmHR1$p8!#7WWd93313EJ=5)pD&k@o+Y)v$yKEO zO;*ZVPZir|Tmk!4*U0{>!QPILd#RRq3$CIRVK%sJ@IpwRR*LBTP@({@xb#kh9o2R9 zyWOoj0#}$*@8?Q`-g4^E8CS7>$(B~^iL=p+=OM;2I~l{%h36ucB+iX`3bPB8*AHxD zh$Xq7r{WRjdzc<{536RPTH*%wSX{l`#qo}1*eLC*Yhyn)zEgJkdFi+>NH;Ee zt2vyj(R}CiYK`ALSm;(6yN3&U?dzJ!Dwv>F zpa2_+yJlRm-9Bf9vK2$?+IkJPz8&Zv-XGlHIDqj0GZls*0#^Q1BE@E3G@cth&YWb2 z#8|6pb#eQAhG5X--dkmpsLor?1Gug%Z0;56?dIEcp+>#BR+nptfb9A<6jL)9JyltD zTl1o9rzlTm;(46d(29qF(I=VUC*ew$^1-l^g;Mw()UAU{;b#jdz?0^aH3g`&eaVcg z%-gZKtLY~b$Mz>O4xVK|q9K+ia$f~Df;+tsYkxQi2Oz|DV?cKWcu|`#ii`)R}*zW?b>!wYwHI{gNSeH9sU}=x~-X z|7O*Y!Wjz^8ZlKmJ+_aSjOWU$mK|jbjJ8O{vbaki@5ee{^@q$4)tJqaiNfLf(*2_2 z_9z>Qhi6<3-<}gUG`0O&Y=0V>&lL2FQg~E)*ID{Raw)dBh_z!GQL4_&VR+;8CN5>BieDd+pcDJUd$I{=LK76z@Cs?zSNY_J2k5n9U&Ts za0Zn2?ysEC*SxPY%&W~|W`9R?^Jhxj^vjcGJ};e>M7M)oi@;-$Cz6hREG3?WY-^O4 zGdOxk&3q3sC$5<})c#cG1A5+k9)FOlaJy<}M^CfwLmKoPn^6U}jB)vfl36zI;%t{m zz+^mxXmkO=6uytLMKu*T>o@(SoNz`fzLV$7=ZZJXxB|B8ujy#oM-nq?J{!1mH#mC0 zb%gG`pK!0ySrs+==UMMq4v@23;IrnlUJGOj=5_-oW_6a`j(YBf#}>^DYUgV2_Kv}3 zm0gs*|1*L6iqxoQ`|P@|{H1Pr%CQ07*s)S^O;x;&XUu10t8H8|HlCKNiH-^OoXa3gxV)I`WfVxFn?l$I$p#bMx3$s ziS_=^Jb>%h)n32W&!DegQ+<73&Cjc=e_mDfbI-&|j#qSa5H+cX4)yZaP@5z2?uVkQ z`+6r)gqBQPO0J%TGX7HE=};8myr{gx1rxpe)+=wIYDwO? z`%rYr#PZrpB3u$V6p@$o)VUN8%5cOmxb7E|D3$QMh}Jj81Vz7EfF(f0JKG#c#5rmQE~bc-sM4 zCrc+TYM8;18M-DG%M9w?-bn8S>BuKsGI62&U4Bcm42O~G{D}^JUZQ^1@7d`eSTu2g zJgM&Kp1fC{T~u>c-hau&`JAmSxBR7l_>zf*{MO*vgNHAiI8R=xo?TI8Be^9L=kmjf ziZYcy!3`4&5K z*N#SKAO-ba_8nb`?eI-q-q6`_8uW*OU>x6?<42BMH9P`8Ml+LVWvV;u%r^Y3Xaz=R zT-oi7Hv}902Z8t?&+zRdhmRkX;NvEC&&t!H*{?(Nc>T<-%$ofTh9F zeeNf+L-Xj&o~+c%(4xU5<2RY_4Y`Z_eJj)=Ut7z+iONWEgi)rYJ#VIY}K`^0%a`on}Ha;V}pDKa(hxWd#?v(JzRMn14#*EgB0+rpr7uxACbog_=Gjewqx6K?c7ejv}O^Wd!fgr*vb1OcMs`InH;l_p0 zonYf4+sP)dBjlI{|{GS|K9?$|F^*YZ?W>$ zuUb$2{}20L{#1WbDFw+^bS?1JNev4}N(06TT_!>=n@72Z4Sexsh3|&h4Q&{Zsc_nX zX(wWstvM7%bCUQCN5pP@Ghz>u@PB6k2;<~q!+ul`S1KowQ0pzQcGw0#>nTefwzFAo6^KnZiX2i;tF*Au8TMgi7E0fM7@ zn4kjL5g=MHSGYqzlF$Wq=n=dDh>=J^1SR3ZU`POahmlMa|D&^|P_ri5TH?Y%?92U4 zcJslQg@{N@gp<~|n+@M)I-SjgV01^M4NM=bio{xEfmIXWA#QZD{Z z@Lwtf1f|?05IghpIveu^gzAVkp!3Sus!99%H!fY9@IO3FED=K*x;3eqpTb2P6MicYH21=J^qw?V)HEXJa#8e=%EGM zi|s+ie>X6!;iqf7KSWkdV2mG{R`K?k`*lHjwsjPD1Qq1lfsq&f7cSaR<^_UyVeXi%xUQRn$-d(_{)13iY?{?M_(Ma&|24_R<+3x$4n|xSfN%YnD z%w6cvhT@T#2mONI(6r!-DEJQp1JzEu;NA!2E$+KlvY4!>jYa0txzvW<7*U_9i)G_> z%a#9sKi;dl`d`0dJ!IWu6|CE=1J+J!leN*h)LLRK0POt(@$cgAU=01dcuss+yj#2l zuHY&53hoz2MONG__K7P*QmjM$>msp0SmqDRe>1;ke%bs(^I7u)fM?zW&-g3NM?oMC zns=H9&E4h}Gh(hXFJVvNEaSh8ZyNt#`~_I#=TTaHce!`4r=`Y|XzLKq+tW(qiR5$k zv=VtD`6+u^i9C^f)}B@(Pb5ESPfL*}dD$oIX{GW+@)>(tsXUSVxIL{@o=ASoo|Y<4 zqU{3lQF~g-Jjvuo>}jdJuRi4 zM-k$ks3t;C+% z&KK{prciPiR?1|*>+S5wxscoTnhdr&to=Cpkp5Cq=e4h9nd-`&f zJXgHUp5CUC^HKGh-b&JJJ7>+j=`AYNM(Q$^nzzQD-mEg7CEjXJZ*r4Q*wbk@`6hch zL$4=LegwIldHn+Nv;a1j*)lP>9y*2i{IC{C!d@*-KS0pPOerbh2Wx9Drw4Mt#p$ZxWY~H z)Jxsu8|~>{H~D&ddbykYEql60B@J1wZa2wg%iJWFEp?Mz*5xL->=K!@PsxIHx=He0 z>?X;(#7&a-B9;7KL59U{k_;ERNiuY(Ev*YpoteXh;cP`%?f z%3KIlHe0v#j^98oD7F9sqaiLs4WMi%fQ?95mSqmBJr-%b$=_4&g8k zP}4a3i)rG0bK!`LkUmH*wm6y+3B<>*uUqOMSX=M-b<&2wx;a2DNGbqBu+n8-1?NFJ zfq}3Z;13|w8iA|c@oUKy0h~Y-J|W9#gxF+!F0Ya3{1Cx>lES2Sd_TDg1RIBmqjkc0 z+!L&zV-Od!{w<(jDye#U$M=y74+rahydwlC7YKeQh$x8~6!=bPmotfE@AzJF;lLnR z9_|8&haiMwsgLX%FOl^-_+}Z$dkwkbpk|?zhCT))om3MeS~iR%S4h@7-hkfmtJS@r z>S4W%3qGAiX)23f0X4aF9y57=Sigr{yx0VR+qgEup&aOG*uww`gZPeudqi`!cYHUw z2!SPXn}{=3?FqJ}2zkaWAyrL7`12E#ahJ;FAlpEETwMAipus8-z@3!5P7#7MlYI48 zk&8yql!l>qd?&erCd0D*rzHR1H?6N)U$8!Dz1MmZO#d&nj#+mx>R)b!Q2aa(z0Yro zuhJ`gQoI+X&l1c4$HZOYfVfXIQ6XDb*hQxN`9qp4{-tR}betG-kCFSEo+m|nx>{Q3(zgrx!j3*aN zUhJJ16fd!ilkJmByekfi0qfEB$&0*WM-;3~`{ZKpI4`cZ?rfjD&^yj?d|Ufuhj*Oi z_~!P>3%uhD$2YW3F7l4=;`sXZ$@9JAJ4L^>zkPC{cYFuGU(-H$o_BmZ$Gh7n&-IRP z<9KKLeowVep6wmqz;V2Nvdud_ z#Brp3()NxIa=fv9a-Mg59mnh1C(q(oy@3N@`d`yNd8T)KEypiwpFG1m-p?`hXL-l_ zIKHWUQq&xq-tk_3r#_78HOCKo$5-?FW$hCW)f_+Q9q-}yX#2zi zHOD8skE9naZ#zOH7K%;@HVH{hrs}B10e>&{AS#v6oGUmj$kIJrwtjfy~fhrG!${!;$0=FgV&)y2bxwK5}NE0Ju7KrehT zs3qe-DTI@VenU(dBP5C%y5j1cI}Uj@Wvw`MV)%IX=)mytBl&J*Yjq4RT0kSi?&q&V zK#_7gk{MAP36eES=G=MX&i#k@c=9^czkB=sEBEfaUY+qi9l1AqTq5?n`OmTAW5qou z7w9iU5~VdP4(-+>`da}S{ex!mu9KHq9yRa|{?zBZ}rCW-nsb>~wbJ1AZYmu4FD6BBM6&Jai@@G#j7DB$!t#)=SDL-P$W`t|V`%&F)!`sC(TpLw-gT_+ZNL`^HD~`2Smm zl@Le4|Nd4@%lvsB7VkN^NOv85vZ?KB(seKvNu*qJx4CNWUL%iql}iYb+7DeVqme?4 z9V7IZDl$o?!+lodl2ZKvkh3M%Q0d9V_~*jX&*z_7!)YTv$=Ko+gD$8`k>3O^B+( zg=Q75&sz7>DN)5i1WPI5C<$0QVw|GSVh0H6-aM)d zdQ|H_u>E?*B(Ega>Yx1JM*n{-GeT5`R({a!f3G3FZGPU|P=8;q)lQ&z=gGwtwGwXf zdT%kT%LDiA^y|IR9hUv~>v5m^A90_x&416{j~eLU&g)LIt$Oz=Kd5-g$qVW6C4-xM z?|qF+m}5p2xOG_d{dzCG>SV~;e5&e%oYsz>7#bcraa0cFRlkKcJl1ovqoRR5+}OUy zIt+`gyMSHGs@u!2R81ZI`l#P!>h3clyU&PDM`b$NXQlkt^pki!r)$PzZ6`0Ns3fOx zB^4iLTnyZ_t*WHxX;f0575{lvjEetD8smobE$eU9{@;77--ZYL5o?%8;QcWFueZ9a z`Qk^g1O27=Ls-GzMNIIop$%|U+<`{uWn!)96!VD<{)YLNsD*ySe24j3kUbB8>$wF~ zPYO)WVh}ywGyc)|Q{x5WY2!(D|Hi9(l=cb4HTjbfjdJ{5FoBRJe_o6*A;1HE2I-7% zpFk0lzw!lWUshj$$fcV>Ux18d)iF|)?y>wd7fc{Y$)EQ`wrNnGEN6%;n7FGdL!^BI z?Z|Ql;+heN?7XN42k`_$dTy;Gb z+*FwX3vR5+fCV>HX260&RT;40pr1ioaJ@SAEx6AA84Gy8fvW3yz_pbbc)Qpo*`k z%0LxwugpLVTwaxd8rW8ufg0Fam4O=A;%Cq$xJ(`UHL%(LS-<2>Ro7!dx-tV6q^dGt zL9#Lf79^@NU_so^pe=~0W6uJ|-F(#WnAR-0YY$gUNZ zZI?8%YlSt>E@@=f3hOMpq>){hT4&lNjqJMAI>Rn$WY?vZWtSAPtL;)t*d>MRB5B$s zh3snUwJ4B6cD412Q+7!qyGZ`8T~f#{lK*3u6tb(WNBqbxDP$MP|F%mC*+ufd?2}wWl9&lV7!`Pq@ji*wgpB$-l9u?{kxXZBO6pCjZKwKJF&}(w-i3lYe1PkE-Ow z;?M2r5jXi~_Vhh&^2_%0F*o_A_Vlou{1bb6$W4C9o<8a(|F1oL#7+Jmd-`sbTq3?` zPrt-Xe!-p|bd!H0B#^C^nRgaZwD!a*SleB?dy zUhJ0=*_n@q!sr4JF$z8wUvn}PV^aW7Z}0dqauH*RK84iuh&u5UYCRFeQXscWW~Eq7 z4(#x-yce2N&}hb^2?919;K3+4#hn~&J)U)-pzIwVB3BsLW-0>dY%+z|6e5g~TwV%8 z5qt{2Y8owTi-P~PPUNhaT`1nie-d)Oj#+V%j9zjL@01?MRLTWB9ewKA40Y9@j~6ZqYO`>Bk-%m(x``J5W5RW z+W$PbV+aaEz2gpdPfF3NbUFzMn-fNYw-DleV^IjkHS`X6(|K9K0CBM1@tm|2_CplD zLP@M73YiTIRCSVQli`}n1N!Y9&yp)mKyxaTO-7dsd@jgC%7|$Y%!rL@|KBGK=J8$T z3FDKxW&iU0Ta2Gvs(Wq8E!CB7(rYg?tQ!O0oa(j9oi!WqweI@9&DITmH?4>6W?KPn zoUB}WRctZzZ7z17?9#48W%!E5hU0`f82BwIyUQ+8-)^kE{xq#sHeRA_?30zdwy}-u z-3EV=)gz+kD62jjvi7?UPj9wW*W>B^h|6>H$<8&(C97QV#rDQVJ_fJv-oO@7ZIAEt zY%*?F?iV$7eqQ6h2Jcosr+HtMPgb}87bO1gD)UM_bia&$51m}DKU3-2=~~kG3)o>; z*}y?XeE?NoXUNLvkFwsk7}`*L)qBHtjCG_J!0K%U1M#w z)>s!?ZQ_UG>*#~MC_W_Kj;C)@+$Ufn5j#)^?G+ag-}`N%f4)fc&wGgenI^9Hh5d+8p;Z9 z`+`YHKv_N!nm;KCCk?}ObDlRTIVKJCybZ(M6eRLSosydfk|ANi_&oo2)dS6+Jj?%GJ>pDt zSoMfA)T#0#EdLhnBZPko9x;Cszpqi51M}?&Ln>SpivYLh&PMRivO@Kw6++xw$28o2#8R6K%+4N2o5z| z!d_XRAW_JA1cs_uG#;|F=rK~SgzmDGhh#gCa5dqi$Q{Lr)MO7m8%bL4R)kE1`64(S z1`8bj|Hyk206DJe+`ksv(;CYgVl2zDJR^-|?NaZHgk(n2Se9j3k|kM|w{b7k(pb{W zcor?*TSy}eHq3O7*n(}szJ&(?0?C6Uk4H#e!pj1L_Gl+z^$sfx4TZ=y6d^$`91=GiJ>Kgn003g9SH<-^WlB^o-E5#=-f)sCW5XcrdT*4 zmyC)xz`}_A8u!OC@Owj@1WlBK@*J#8X@WtaR6@TQ29eeJ$A~mVh84#IE`(5C;5Kpe zf757g!OE1(*_+*LqA1MrFP{T;hMFcK+boi!sEiQqn~4~oce9~a?4ZDnu5B)i91xBN z)S%%>}X+-!&$N^C4# z;b@YhT%14;n+19{nHPC(>ztb{g~~Cjd1$bRO-_PKiQ~DzpOcM4QkAqm=4PXGVc;j= z7cdLa+0c3soC-`ERxFfr?LM82q7aD>VIqTh6P@5N(y%yEcw9UZd2^MUEfS9)VugKZ zp(mgnLv|Mz0L9C~J0G`SaI+<#5lbR!DN2pV_U2OwYDg#(ZSGw7R`V0B%d>SQWju9k|LIj2*D4sxk*?v%GOY(;J2{g5d zX(l3ABDA4A<2^(paBA7_a* zA(lWq8OvZ;3nQ-{7U9Z>{kWSAy=o-sBZ!6}XPpT}h;~P>7!L|R9F3cUdj1cU$pZL) zy3}yVboORF$MJ*go<^_c1WuKpgljuVbfWMQQJGUbeHJ;&IDz}o#Fkxm-U(v2Jj=0< zUjT_Hlv*zOy0Uy$G%mv$pM1Y?vjC+NC~GZD8#s?UhI`;U#th_kYoKSJfM&!i>CyZ&b|c3(>yrdt{4JZsZ0g|>kI(YM2t5Vf|D5S4Yvf! zZUuYnzd#AxH2V^Gg!|`E8G&;?=39tV=rL|tffix3(vX>J*{pa$0h*%N}z}H$OQQDv`fm|b5!IQ z6#vg9#+YIK5Dd>42QU9$;ql^1N*1|G1)^&e5&(q$G$>Hx47&pD{oDuo`*sX8)G*^U zFJS>|jPFHtGlIRZ>uKEH<*%7q21*SBzW37E_U`iu9*4q7nsRtFvW39b4F!g|Y zxFs-kzk9ejFm<1M*cX_(*FAi7VCtZIcuQdF9`|rlVCsN6Tw`wxOx^7szA7-a-#y$A znA+zat`AJ@bq`a4sk_|6WMFEKdzc7J?RF32fvH{UaJ3x^Ox@`oMgvnj-NQ&=>JIlX z9GKeS9)PHg&klUK^O&<{qvIOx@}pt`1D~yN9a+Q(N7`m4T@( z?%|5S)MjT?g51*Tr@9^M?7y2U+Q8kpMT9^Mp~+Nchf+r5FQSGk8v0#h5@ z!^MHA_3mL$U@GMvb_b@C?%|Drsf2sDC@>Xw4{r!e#oWV%fvKoETxMS%n2NZE3j$MN z_wc&FRLDJ?AD9Zdht~$C*13mWfvL6b;VT1EYuv+m(*EPdY3={}qWxLd|M#eU#J(5* z-+KIi^X-83Pu5?9_WJ@@zjs+P#GH;=u*+C|R>-=MxZxkd?)QJq-!MM|v)@mduQgAZ z4}<>QZpK0XUJJj9pntz?e4cotcN!&bR`Yk|WCgeC`i3-aRa|$<{ZtEE#pR`8tDbuh zmsbsL_3BBDTdnpUO={?B*?Tmpk*gK&(WHj1mhY*7t5vtCL9SjssgbKSx6t6#$}Kc@ zwdxiX@TzioY4EDtQMtS{cD3dgEBICI8?4}0-Gb8i)w0pG@YTqblN!G2Jp~@iI{fOD zlN!J3<)A1vfVFIuhOgFGr4g)^=hP6^s^`=g*0NO^!Rp-tBkCZmS59gOtCs^KG={Zo zghsH|7@Ry|AeYTH(VUu{tlmEouKYddDz)i5&9(bAK#G)?CD5Da(0KO8I}vQX75Z2YQW26L;^a9vM&M!)z4pX z`54dqk;bTnxgg(Fa|IJAI z&zO%9oAVR!SI8Da`kjaZUb`6k)0boT+tLouH%HheaJoaNiEACkM--9cFpB0w;q2D! zd)>8Z)f;*1g=%W%*|{Q>fAXbrM)H`!i+Id8r{R%oizci*X2s8Dyy?gOnAaEAX?Mp` zd7H~xxI1w7pww=ZeDR9a4b1a-R9_3is(7LLLY@1gItlE?>`MTIMyG^* zgK!v!y13}`IV4%Zk}@n*|9r(0V!ZJuxcy&h+$8@0FzSDwr zdwv(~nf;+7$vDk5u$`43uc}Dz{IR#^Y%y{XkNFOn7$w>H1#T*P zV_|mV(5Qj^HyB}$FdffV9u{F`sACE*KA{ps8Ya5_oNleLdbOSYm*= zYzJm4k6AS>di#(2F=hN;Zsdjk_mAw~Wc~kP`={(@(E&bU--8lx(q6{C|D`a3|CRN- z*5|DM2Fw4DwTIZgE6ne+=Kn?TJ_R!aYTzcKeE-_`g7I$Sb;e14u;%ZoNkMCLp>=B* z`&fUS8n|jw;2M=HCkN(F3Sz^RfpwhG?L+zDo|PjUbx#U*Bc{IXahPa-mwA<6STrf%j+%7u4mS^SpM{fx^;lDV2QPi)IH`jCXqtNS`0%1hfq~TgwkyYo z+HZP1eZ!={LY4_M(9qUP2?)br`sjocx?xg4BK66_Nhry|g_D9ASv22U91EyJeP4Yn zoD>8}V`@-RgV#<9oTOXUe#YLBql4o+hjY#`{_C0)TuJX$l5iJPYV^LhP7G!9OC|+g zvQb^%oz5O{#`{l>kD?SmJi0~pOjV{ECIxe{R2G@W?(N%mZFPs*J@7`W#!r0)W&ef9-lc5Geb@k+6{iQ1= z535U+Rqr8nUS9Rioy@BXW%qznP9LY_@SNmoF5tAt)?C1Wkg2(V10k(0l${n2sneRZ z_<*`pvFgF{Pq?f52g*O890>Q9)5R)`xUc2{M%-I-0V58Ue?d6}?op>TMjTL=JR_w2 z?>0WvD*pEgd(=K;KVZWIjS^s(-e8ga3cCY7fbUpev;N5XGMK<$v_5WqzSu&p?vZ$f}vdN5^D_{$M zrP+xm;`_!oj6Xwe>5FiN{~QJq1U#*szV9}k3ruUL@4JoH2d1^t_g%)bfobjZeV6h2 zj%jiFnseT{vSV6&zUG{t=15$==A3uz2uy2_?>mg|c1(-M*PQb_$>Q)e=e(UG@%Nf@ z-n1bwt=+wEGR_C4wY&GceY|5@+`ZiVTDyARC_klLy>GNn zbWDq@*PQbPeoA|K-yj#o(`(Loj-S$w-sj|}R&&vs^PKU$!1OA0_^kZYN_}X2uVZ?J z`qu0Dspab8>*eAyb@7>%f$5vo#YgRl!1Pl0aJ*ysCY64iTlK1o$IVS0(@WIF2`(;H z7bnb3f$1LiaAU`Gw@M!;{YG_hT+$c0hos-2(nm>Os4k8g=R2maR~H}Q;sSN?5#!B) z>Fd;?V}8D4dcI1}ZRnW3Rvl$|JzeT3!_h0%QJQbhghd#8AbWC5S(i42?Qgtz5ZVgOdq7LKs!+~jA9Y*cJz_jHa z9u7>K?%|=pwBa7+15;1AhfZMXN%t@pn0mrJ%m$_&cMmgxsmI*Iw6y=rjMavHqxGWI zVIDSqgOe72g@wgex$A&~y~aB67c%o!e-&j{sM*Dj*k}B=G|MB%?tnbSAU*;M6-{SD zxnvx@#*hO+TXHNjkv?Fu5P(C>;>l!k(GHzjU{l%1B9Q_HvB(ZP;0Sv;; zz;C6H&&&gg%MfH2J9e0H+qdi*bG0(>mBo}cZ{D7zzOVKpX?DS30t|)olpQe4tb`zj z6A^eqD? zk^n*)2aX34&q<)Mf><^Sb5M*(YG&f)Nl?SxF6mpg)}8Ah79hke2}vmH`}!+9q0?;0J+jvZg~1WkgM??m`1* z@Hix}0{3q)1%>H`T+1gQXdPva#e5PzPsqDuG6a)vU9sLJ(st0D_KZzrv(DI99##0B z`_nLf$z<;C^wB{fXk5Oc$D@i>_@7ISPZ)NVaeRUKB!@rof3UCh>807K0+?jKj_9L+ zdRc>kNd)Cd5M(6F>j}q_@kAn(P68B8GF2Lo5*ctCRg0-_vv)PiuQt3Xsoo#GP?%qQ zwXR?D_s^!w%0_c}M1w?Z7V^y)f!6qLPKK*HZo~EYJn=UTiqD@;o zFe}qQ+eU%i60i#vHkZl)tc^LS17{snk1|0fv;+C!VVpZY_BGAe+Q>~8V`M4^z85ri zDw0kj&I@vx;V6qp5SmXQePeR(S#_*UGqy5vL2;uta(3eqgAhVj1k#6t2-Mf7It~`caqdpXb{!KTZTa z;pj;usqqpLoD9?%$0{tI**s8U1{vLN?WM09I1JtCc(WE*pQq`Ae*6MX%v-f-i+0S$ zH24Y-O{V$+_9m8qEk3|+StmfJLNgYwZJ5%x$< z#SyIraE-W>K(7I*C)2o{vU(;mAOk}Sn`(2kGOM$=Rh!kdZGrDA{MmFE(Y0_Gh&m;d zC2~C+My4&93K5h~oP8M2*LYe6y5^GrH?hU||Fahg^NL%vHS_m$`&#occnxSXOq3uN z$mg<|SPWhS0vUkVL%vDN7w^YFc^c5HI@RWAT1X$ezzDSYqDG(uQfESC%?A+ud;*oU zSc0i>G!Jh^BpxddBW@S@ql`f9zuNRkK6*j7|2G--G3$@5J^1sM8E^WLoBvDpMH=f) z_qFfvuY{jalJ{&l5EewFhlFjg?T~-~1PQh<;S{ibA9DtB!xNdKPP2DjmE5$LJ|Xq+ zj*DrmaVMF97@HP~ctM;tl7w6YyeyM?8EH~gomPv+TAQP(S#)Yw6?bT}x_8c|4?)@< zwLD^`=rjPW9$G#s z(O-zvX9xhxWE{d;5?OX|vlDoNTiH`iY-P;l#qHXdh1+Li3>z_QvF4I!Qu6MyoH8bb z*sY*0iGCqm;BET+N@^=}t}5PkF|P~ZOlBnn7X>ruh{U0Fk+`5lFe~d*BH9o<7Wb{w zs(7l?TbLy6|5Cttwqt$CT4z4Q;eYkN!kpq=x|HW{>$*l(2i}^^^H%VLb7avdZi@G( z^9-x-*+4P_fP)CNICYWb8rKMF$)!>v88OgmtyWGHBKzI7-L|#)fy0Fz#XT6q3U=Lo z)C>H75zd5{3FvuriJpy#<~F*rJivbpAi zCSi*X&O#-l;d@r0ySQ7I?TQEdJLaFGOHMO+r8$Qg?3ln3d=|?kWbBLQSRo{j4UQpl zFrYiTF;=U?Lx-C6(9QBSTF08|=cG^ErA=J0b2cWzYsAbd3!fJYszeG#AgTbtqo}~L zLX0Hzt^G{X>8(tfU%XSBv~+)$?=0q%X~GA?@f5KJY#zp968xDXa+CN;f(1oLRWDIk zPNCqD86G~`tiQW6aYKamf@_Gzg1KmrX|A|dcBjV=?;b@|=44rCB|wI_eoD29q%a@o7Q@9zuV)S#Pu*l0NmKo;qe}kW6&<2C2I?(ihJG3{C!=a zmSrPk{=JmV2Yfl>ny5H6YoSfDH3)Y!8&r;r-u==EKFRnmLLl}+YmVt~@RR>nSX(@( zhtvfJmNLF8r)*fc@q*VjGT;?N;OS=_Yq(KC_=@s26N-BUW6R9I&8;hpiJ zS8On);eyOm>bgE=D&DlD3@F%$9!q7#F3a^va%hY9DI!S_EJ>Y_l+|=(w zzmA?I`riR9)8gi=xcz&U$W7=M(#5-Vzp!|Zo<}x)Ygz-Y&-gH-1pJZWS0*+x7mY%T z5RWIqsJO@23t+-CJmL&(RTZgKk6D|e$%|ra_^|Qey0JmNMfWGwSP9HXD7@A{J28m= zKjZX_p*q7LvP5z+-C9EO=wO=Fup9sTTZX;Cdd_@<@moLn&A+XMg$>0A+?JN^>TlOK zF!zVU6)p!66-052tt*%=B5;S`ua4&dEvB+z4TedJuxnDQJWe2)ev@^f3!RYIQh%*mo2DvDKa?8`Up8-gDGR z6NY|>L0iE)3BzSDAI2RsqSj36XVw;07VpzCHSKy3CP&+uYP2U@rU=SoZ<_+B$+NtC)*}OHVsyOXKBKh^L0bl>hvtjW4umN&G0S&205 zvitiPaURq*hx|vJt?3vPLJ&!%iAxdGH(bF?_F}1U5^|qNDiOwJ{Zeb}XtsQ4p7Y{H zoUL1B{%=FjXZ@Y|2mJH@&|l&HVy-;adc8%{!KQGj(YHUH%0dgxzA>;42%K;cvbn{O z1JiN@-+3~kYMa0;e8yVch`mg0`ij2&`}eB8LVk1>U4{H)r7Ku_`l@19KOe&rOaA8A z6;r0K2aUeFe0ki<^{q`mpsTKAD6eEI*e->JZtM*<8_yWe$%E?6g&w_{Z`UV!y&gWx zmOW~})3251FrLk{wEkPcb> zh(4H*hD>cHYnhBUSz~ud2_5QhznrCb+Abc_g~DEb`$9<@eFKEVu#QKqHo=U8fMUqP zqz4gE$W$g8ie}yUfwbrrJ8`u++7!pYKz(t%jFXSe#k@NsKG@y181@)__k&x)xt-61 z@T)?y2upp2(3udEd59QMkw}esF$F>zGFkVxUxeWg zyocpsl&b6`C2T7J!(})NDPl?-P8nDiQx3hvKK7pp!EVz{ROMLiZd4z`b34}9U-sQ| zk8};PXDw0P$eJHxl@IO@7jcedSG%6my-U?7aVZUc*pzS`>+5D7-riC3B&hr|X!uQ; zZ!+I*zSDd^id~;T+3%OlFPL96zhwSCIR3vh{}xTJe>8t!SysTh5{&=#R*!WvjGGE$TDM!fVF(K-;VC|C zzZSj18T)PaJM8xoz4Wv8r(rSvy#4E_8GhCNzxJQoe`9~k{+|6~p4(Ulrmv-p@0lhR z!@74GIIDHvG~vzG1Jm%ZP2a)i;pw~h9Gt#~ z&xfZUiH=}|sMrjPSEI{hf0W7ALad7^0Xd9rvJpQnnDzFLnK z3G=ZYD-y3_JzgX-#(JuFJ)ec*jeMRiF5&ZR@n$|Ji!1qjrnrXB*A>Oi*B8akHx$Lr zHx~Q&oGOZ))5V>97K>tMskoodnc_h{&lexy^G(GxpKmUT&2K4+&2K9n<@2YCkMQ~S z;y9nr7f44=O_BX|F;8F_2JJtJ@JcV^_-zceGy{^j#F zpIz~Fu zCC*U+Ld&k12ZSEeUMu$5CWgk>7KVyP^boLcSNn$&Kim=U-l@mMww|0yF{ zl1)QIVRCQ|yPb7=1QNZu&d}y*jvVox#+%%{MB_kVp!l#m==r$b3X6=s!|5QN(ky(; zkq8mJ!2e+>1TvB3-G%@IhN=KgEhjMET8Rv8p7`+L`X{dP7`7kn>K8=U6bJPq&SvK7 z2ryjgXM`a3WHcAarXbIa=CY}Hf>8EoIIY(!J~P*bOl=<3aq1sce|r`)S8uIz(Muv} z|CbuwhJCMfxA|6>y69P|{tA1GkI=f|s_fb_Z<{P4TkU~J0L0VjG@Q&}(?Lol(#+{1 zsbn0fuN*unkqFM&plsTDQ5%Y!+MkWSo&luU$pVG@$}ZgQOJakp6ba0 zc#?1j`7-6~wQZsLt#N^_1;#R>J1xNNZMP6{G(C=^5dXTckRnwDc{0=@1bK&XyMy9H zcr1Pt-?m<3`P7D{8JleL^gaGKj=W)Q;<`sxwCz_h@g&6!17!@yC8W|0j~`?UgCfVB z$=*Gebmymi4`Tx(;Z^L-s#g;TQT&p2QP7q?_8RW9^MEEH?Tk(z#?d zlYs^tk^luf5SJJX-Y^Y8kc~!p)u?b0wyOc6K7U)wCnmfWSVcrZg{r#0dTtpbdiIYw zU@>r8jP}rVk1!W!i%r3&#@N_cTUb&&reEN)``V8oyui_Ph%mXF!?q2pV(^dXq7mMK zxLhVlSXwHYsd*jxwKem8G|ATHO^uF9`?rmwhTUua9sj(nf2W@)j#De>OjZnb?O8|Q zREy5!bbmj+$y?a-&cWi7q%yFMqH3es2c9ewNjO5Z5Kp<|xTD*iw+Y^AbG0_NvVG^ugmI-PDZztrP}dbwG=q%m>T zX{(iEud}mrYjgO@s0%2_oLZA%Qq&`)=u7mTHW(HTv%|-*#-Yz+!ZhB~QwGgY8NDZV z@4ohQxHzU?z`8>Mf(i%-O8-?}yg~t;zJeEUHVv0GA$5WbhSoe2iboj=S+3)VcZFV3tPE$yfoKWsK-L>5tU)H-9Y#n<24Nfq53(Vs`W^y z=l|ET`ZKqp?s=`Q2ZdJ_PwKvF!T$NcXjq2ufAv=#>8k)M>zA?%4Z0J>ihL*+%?1fi zMMMK61g)1dAeGuTp%^PvpEWr8svgBqv0D8T>e)n?ukv50JW_WWvsmkwUV!-Lgtlw` zUSGRzN;7j~7e6WX047g4j_7AZLa;UGQ`u}Llph=&8&`(3G^>)Ol~p%gIGrdS*Uf6x zk*-vmeyy-$8#UxT=?s+cIfBoea6IFr66p{k8OV@8`9rX3Jeu&@t-B>P+m6l6Ufr|# z_Ga%f-qWnRa(#p~{Z+N!(7(gFKhs0c;I!zF+}~QukT7u(L&A&coW$=T%o$829D+G> zNw#Z~knXb;NVpF%wQh{7o)FKr(~ zYXAQ-qsOpEtR)Os065yTC$PBA(gBV-2q6gpV^Nqy zAt!^nDj`_}SVF{?A>1$Fj2{M(I+WYJy?^{LfJ|pxO+I1US--w9O~r+gW?B69g~E-+ zC$udK@7w5W%bN&ukyu~EheE+fJRYK=L~;ZgQc;3b9w&4xJHRc+c5lC%<-_pkt1342 ztnAq&U4k;JJ{t+1?UGMt6ARyTp>SRCacyDOet!$kr^AHcplnO*K_nIjB2Q#*GDOf? zEFO;$3KN=*c{O=j+IIdz;m+b?x~VNFTyvmv2-{{#8ebaNi}W~4ZWd|~L9!l+0zru};Q%*yG(RB3 zV&%%qYr-^{=G3L=1nEBBeqo|yYbzE+x_qs8Tbk0yCt2#}qlq|97I1*kJn_LSn)6KB z(_sexflSt04yoH$E>-UPHtuU(%zaVvim*%v13?&cI1)ul8m9;~5?yfM$|1SQvBvxA zOV#%+zyakJ`z;H7ANZ~53?n}D9ugE2%d>e*cqc7tFZu^~subsqn2B$kh%q@Hxpiw}k(u`J;^k#JrHm8K@t zU9Yy_RPiZo!Tf~31#d}*a5aNtPb0fUGzy3{dI5-G9H8!r5aE;J5r$+z_WDN4B~X2_ za__ge@xRX+cF=l{b-npkbEWa@%hvXNez2eAJ2zuALu0spj_UGMuq0b~fG6;~0 zKq&&F5~4RR66`cfh-gAlnP${fe(ypVh@l6Y9!UJWKD^q0SH`Q*a=Q2KJzDD2#w}cB zTqDLcT|28KQTIAt1#)P}08%@Xp;R`W&k{izj^oKdozBSz1(wh6>Q9Z*=Tx}@`FG2@ z4NsQl=-Vw=VWix$Xk4o6+pWb-lq1qO0um0KDLoLx1rZoFk*((>AA~=&`fmEHp%{c) zP(}(dVBzXQM=7AI<%0fYzK!!ml;^|vs)(IryoxisiY2pIrVDsVi6lyfL%G59p#kQ7 zTlsfrcx-$yJ65ipP13X-(l5Sv0aH3I#uPf@3}Qu)0A(XY8Hy*3eo2%dK?oD}tZv7k z(bAOKv>H?HC|#y!QOgP)1HQ%bLOO)=E=nJP24NO2XDl9NcZ5zP7|McNj^V1!;kp@f z#s-e1N9ecGBNs7&YVzgT&!H&V7cQ_Bto1*C%lJq026Kz~uyL=y=-a5I96?{ZouP2 z#BLJUO+FS(v3p>5yV;^l4e&ot53=AP7e5LNM_v~D2S2_d(M+jY2K=d-$5m!UqQ&mW$QN!WhvzL<#8VXphsfUEB zWWaspg3$!A&P3HRI`X1=&vue4A?+*8k_U;kdX&`Z#a=!2jU<6TCwh~p)({!(%!Sf^2+>A|v0RYid{6_YhJ zgL5L9N@RP_ULv{Z4A?dgGp9vQF9?$t4T*p;{1Z6}BiMV^CRZ#75fQ_CBoTx6L2=r| za4ZY9fXH=+lCa2yXfH1twPNPUNyfTVC`uit62UT#Q<`Tq$;GB1{bi8I8Ha9{nuBsh z8s>T;%+YENWqQvVa!0^;NHx=U=Ax8!3_V_G#^OPy{!#Ri)4gY&A{Xl)T0Qa$G<>=p z(foykMds%@(F#oVo_Ug7@~-HpP{pNNX8$}J;c>(ll!lotA4~O~d4gQ5q43hOvdYHU z=Si`H2?qzbkUTvjxPnCQna9aRe}f`18?f+-iQFx>gxinZW!fqfgu&i3kC7`zXGpn5 zqVUj%MYvb~k871yAEO-Oy=NYk-y%;w0y9vOzMO6yDnqn_!xS$>04y(i&zvF`o?1s3 z?W3sN;;X?y6XwpiL>%_$DA(RIC&`62aMVFmI2&chm328h9ik6I{fDtF8;bUxIYBN5 z*F%=6I^8P;n|IRr4BER7N?O+JlpYL!U8(eo?}_;K9P8($!__j`^%D?qRzTsp&AaA?^@a!cd2}cP>b9r);Q0%1M#*}d5<#xEGZ#k-wb zHqr0h?(=Q`KZ=RX-|fDA(*8Gy{@-^%%6=K#>?c9dz8OsIDG;{zfw$dgud^4!`E6U@ zLj&Ne)~{NhvfgLC**a&Punt-G!1KM{T4mjU9>5RHzc>HX{2lXi=Eu!tyX_# z?&JaQ^euDy56qpsyL@WN>3;9@%~t>2b0_!Jp6;zZy{qfb(ha+`NL zW%X~JJ9(>j`bMjN%iPI+@AM5;|K=+ux2jX#>2n*qjc2cz+~S=-%R2P+S4?j9&R1#H2kIkJ-l~1kivCAiu9r&d1N{w&q-gEh6!aW$Oclw0Y z{Q&BO-s$5TyYHVnxz;;<%<8^(?&KQp^wEvo2j@<%_D)Y(-PF8Q-s#DW-PF95-suUe zd%qt4M`ir~ycINGWQGqG`Q`j8yrMK;cZQ)IUEK_H;zw(-Yt#J@vuD6RtQ^y6;_Om{ zbutTL1BzJ{Y|Fq52gi1Tdl}3E!MjWID%be@nkQEyPMAk@KlD&xUg=tGRd=eZ-)H!J zFwJ@+7#Aj4;fG_5$%>R|YcLBwDbF-g`5yNT_Z>azg?w-qasChG%2(ZaOuJdZgAW$2 zD0P+1^4x%}3hM#iIdqKyHFKAGvzm_=4?Iw~y7bDjLAUsn)BV2F^@}m6#SGy7`5{l^kx993h6%aD4|4!dloWRmSQZRqftm<;OLIw{78aU@$nlsnR&K*i}&5f`2UKs zfqvuvy}qlLAH~4t@AKY!b^E{0upcH4XSI0@29WEd^%o+gMcU+L2i8CY+qRVs`Yr?y z5lT<7Z9a7;K4yjBD(}Qq_W#>t0=4OWt33Tu-s%blRhseOAXC*FwAo8<5&qh?W*_oh znGTML)%_<2$HvF%x|Q05*;sezP+>!9p|)<(Bm4cjK30J&Lqe=I*?@=A9_COgDh?1h zV})%up8)MFR*ZQibGHX$kgKrk@F^>#O*fZYdW&zA)4i{-M}KpDADPb=t}9)y&0ld~ zmD&Pn({r=I&RPl76}V~eSBYQ>>N=cJP8QWnmeKI@mNx>nLf}>7jjveTCX<+`UGv?! zT;ayj0&Uy62YhYA^%Mr7BK!V`7D)VIG@c`*0lx-NtYikKN!hl&&Zy>xs@g1QW?r*= zRTgHmjC)*UbES7*%i)#_|_nyqYzqvJwG%QgYd zShiTH`w{d!<7^rvAut+E3s#3slJa zN{h?Y%FoJSU+HW31Gztpr)EoY0JifR`nGS*mfZ0RbzU+~pHUa$h=y3K(&C9M_ zD)(ZrpO$XacV!~uch@7pEu2Uw2V*I{8No?Nk^;%b#~ejHGRGcJ!#%wV%xc3-UO*4mmm?z=%z(_yrZZtj1L=CENWTY z0{e#MJC~)pBb>rsMvy_?8`Cy{R4eyUm7#9ardbVjdXT7025Sa6z~9pTcWM2?>2XseP$dl;bL>XIoGs|e=@#_`rlVkBl~4n{SVx6QR%*Q?zE>milX~wcHXfe zP!!oWtMd-~je(-*zFD0+>^B68BK#(Y&jpI2{3eIb28v4htrLf2ps1wZI&ZUI-%%9l zH?y;!i%R*ev)`KRC@SSQbx|q5aq(nJMWw@!m}E&TTH_A`N^7JmD8`%Ivyh2MT)zcx_R z!f!vY&jpHF`0WSwWS~gYHY#>MAn&vme)~5vOl#q{eRlo2r_L+|9Q}SGM{`s!J^htH`pY7KKrcbEDf0D!F>hL?pRA72S9ez^|$JOCC z83FZw*X8q7MH?4oB4C*W_?m9e&Y%Dlk2y4u3-qkEz37m&2p#@PFB- z1Jg&;;jhWz!|L!0b|El5s1AQc@*Y-)pO>qL)Zzb>t9fN9;!f(+AYy&)BCrrtjv^obzFnC-f#4PWN^2-_AvnX^l1y_lB=|PeY@_ zHaaZ!U_@C@5(B|jJg}bxm?Y%75^$Dj^O}~D*zF~Frn#4TlxlLtwAYyDn31jaM!&LY zjW1BoexCG2T8yd!6BBCuF143Et7?5hE?lqs$tMe)rB&Ldg)v{7p76zW98N2DP>n%V z*Vh~CCUWbI`) znqH-6Sc8VhiXmw0;j}? ze&VBQ%BlLIpG~)A*i{K@lVZF4-{D!%npp=WBFIIc^~F;N$Obxzd@cjH69h&O4Y=H$ z4&lyY<9!}(w#K|x87gnm{D@^gQ3`3R*z57FS!eLR0bnCe2uM^iL=ZHvO+ouWT_$n8 zk>J>=p{(>&wIx+^wd(%U=7+#D2g^0dGoZ1rbVr%jq*<*3r%NJdmQE!Bse%;)?8dDH zkOD7>H>R~1Wn{RkB$Z9+HV7FmkN+9#la|e%{hS}q`2S={w0nX6FWhKcv#Krhe`|Ld zOc(guEC4_JqzwDGJ&@G`QU!;1Fr7#+1Pl`|?f#>Kxg^Ngy`YLfGI%LlySpDPi9Rm| zT(zOg5Ci1@>aRL1Np;R!7o~x5LmeCng^*>*rUvq2YvoP87kU+2{z7w(|pnZt0A+Cqmb2Np|UuxsN;X9qdLx(f4 zBh(C+P12To^NgOABQ&C>j=4;_+|ikb%;Ca{k}J!*^uEP0KZ{@Q3rc-tVh}Q-F||cS z0bxbeg1NFkRg;ZOGC69pF*QD1HrDun@hKc>ab3JP(pnGuZt*_ji;a~cEDswsonJ#r zxq~kI4|;B{F3M5!X=(r00q4DF{IA7Px5#8r=|Ku%RG|Z^Y#X zd3+F}y=QyLMUYiCi)Ke2Hwi-F#BIbPgq;EW$Il2FxcBT5a z`1qpvI8anJ&B(QwTtp!U2`GTTR~)7})NH_kvH=uBq&$~NfD-PJ-y)U{R4IBP@Xnxh zlSAZ!y!19i9;Bk6al6R{%)4!TLGRfc$pwC1!W7Z{OTm#97vO6ok^pELBLbPgh2FD^ z$R!b5@BlzZ5JsUgkqPGkd&Arlq+bU>o9;b(1GzwSODr=KTL65CUd5T2f`N*~4nR`C ziM?kRk_*r+%^$_Pv>w|EnOgLooky-PO3JwDd6`)RAc))qy2zdzJPdF$B(l`PSLojY)(rNVHwcYY0_*^9 z2^eSu;CU*^Z(T#KTs8`n0JJe3qZ1?^O(ef1Iw3;QgC6ZYdo{VDIP8HS1AI;*RGMN& z!{broMBtsmp?+OOE@C9&0JKpOk<#Uf8E$f5)`5v<*%$+%eI>cF1Xd8*#gdl@RN_M7 zJVJzim;fhQLNwod_6lTGomx$I!I<7QQ2^%iDzrmZ*M zTzF;a)viT57x-DUlxaeO$iXCS2xJiv1TYX1Nt0oN9a`^vGNo>M7g&+9ZfN!W)~~Nk zZ)w-krG;Qgq_icjasRqLpUKTlggYQWNwhkZo8U&mB0_AafaM1^9z}f%4cp_$73rCU zjP!bczt*8PtgUSh`PkeGp)(;xNtUH( zanKF0W|e@SNQP}GVG7Jt+jDU?tGUd{0nHTCb84W$RwC+eE{VW4w$9tT&d*jf7Kva$ z93&Yee2B;^_UBS;{b$i71jdq&i)e~h9<5BR%2F=H<-V3KSwfq6m9~^=uAiknbawD$ zJLtJ&GiesGtd0ob2?gn}=w-5biT#(?=2`2SQkmxZTGZ1c?SGN6+kh$ebM^=9Df_6s z-Ck*T;@$ssB7$FM9RcCH!nz8s-#^4_KWW~9pZ-RckY9x<#vbTBXUMb&FJEiiioMIqMoSVnh9gFz}_T73keQ4}ev^J0-gK5m% zEu>)%@;75Wn-qbVI?kt$jyczzdj;R@?UMVryW7I!B~o>XbJzUHKYBIaT+l5)s^*C+ z56h0~=jGbS!NcLgb{NRh(#o@p;r z_S~3!bf23``WjUvUO(e)Kx(y_8_r!$j`_H$f9!{?b5@G&Ry0n zJ#@plOC=o^Uc+ee`#t9_kz{3leX{!)i_h7T1@_{`U+@IEu03awXQ^rd`e#%lzBza8 zIhN*45=Q2qV~4crl?{$DimF$(c=9PyHdOsqT~E<-^N6(nOO0{EzTJAG`6uR09KP&- zh1I27buZZcz^YX~W6PR!KIh=}NB}G#%2ntr8KU{f0=*>`D=V^U3KO)(dpgx?)9`A> zwDs#7^11z`yGqjK+&C7lSp$ZtzihAH_`O>E5b#nV?!uH588Hk6XUcpx&*GTf-AscW zKbpOD&&RuL7#dfvrl_};P4_G6RUi%t2bQ^+BW{#jQXT|7J7)QWo`RF}Okd^Q+{g5C zzS$M^s#O&Ama@HmMZFRqInlp~ki^|(a_n+oWscZVB%R>;N#(;Yk-gs2mdEK32*@G=H+5%Olr;pBw$P39uR2RlT9rvM>`LgT}`hmWR(AVST|S`>6$ zF0YuC&qZ|v8&ywG#noCf&s(-kxBur2`vL1`%zrm`8qdG%&42bcp!SNqJrlddJG*xI z6loY=agLB%f~y^PxPwFm2Z=xyt{#v-`DiNW)rQ3zJ)cx{VN^N@onCgH)N~`#%qsZ7 z>hEt2hq3qeS=)=#kYzVNuTH;cdqW}Y-Ck~O ze!T-um=ud5@y4@8Cia|gY6pN@QbOtyG{LlI?>e7K+mO$zwlxD@LvI!gV()FUws#$2 z|MUus5=@_A%1NO33NnucREEfU0<6me$I4mSTh2E-d)KWaG;v$mUO%t)TKu}ga4WQi z_%rfYPd^6kmxUGnGWaUJa{G}7x`rZMtN8yqjEG@x!vDY4{8@92@i9)@{XJH?OFz_n zyqVpt7y;F~zkfnl8B_Sz2#$wzk3J6?1jzF7809m-!QsXjU_Q-kc@Ql~-oxl{7B&<_ zvn!X&S1qf5;=-xY9({M&(Dl7LH^YOJLT$jw;hTquCdVKF^bao#ao}lT>1uX!?`rM6 z;j7xMZ$7WD*YD=zL>J)8WYa2_3X8gda{Mr1;jv?gy+u>%!7HxW^1bMZq)5ssvwnT$YWX7f z9uuB45we$+_Lil7Hy_231$Q%EI0&po9{|dVbTrIsfbSs*$~)x@9ry08Ci3N*!39~H zR8GN+(F=u3OFP|404b$UB^ZT5j-45tY7pq*BF5ndMFs@^%x6+K0GM5}d}w7yeOjF% zn@V?RL%NTw($keWEq!3i)3_cI?9;$B0znHDANY8p>|hbw#_lFAC;=L(QGaY4b&70x z3fp4vFK5T7>XE4RNKlt?>+r>F`U00K^Ee83qkZ%uifPWfW>osV;8SG{{y zcVdtw}D!3dkMY|6qm0?kz%AUuRV z5P2j)WgKc&*5!-!ciw*ycg`jt{e#!Z0pbLOR4SXp!LNF@P>%Uj>`=3^E?=y@^F(Ri zMU*u>VsI=*@YS-)%Tb|V84-{bllM%5InkjeW$j(7z3*eCz3vmwYB+_4BtlOP;|YMb zH1#{rkP?dGWo5r89?wfzHyhE)m#gnSq4@tgp!~CsS>Lus(DWKHe)!{J030r*bxB;a zZk}HYf0FJc2TzN{+``2Yf?Sj z`oP{+IErhYWigxo0%SwkBqG~tV~^I|QC+CL;}a!U;kJ9@ES{03O#LSEE5%!8+YuJj zI8^+s(Gv-f;tA*E;P^lmk=?o*S6{EczpGZe0ECdw$oT~OeFzk0pq64!jM)<$S@?tNXJdN|k0?kmqI69${Au zMkkrlKvKpGnfuUhHobrOdhPumE#2?7Hvj1(&z~fohKO_GMeyb@V-QhwCUQ_9M}dB1 zxc}gg+`j(l^;Jb*t*f7Uco15yzWFt~B7UWR3T4B5Jdv+RrM2u%;YKL!!=D;RI8%NtnYE z4~e*wU@vn7eoHhX%1;bEx4KfjQ|XpPVq?K7Il3$sZScJ}oAcC7qLcHvJX_~sm`>T! zR-A#1L8uLdqyyU0ykBxJH?blfKUvCYBNiu&Yow0o{bXuNr54VCi-WU%q=Ayqy)vtZ z(~AIE_yR+~7?=jY?hSEaBq|)M`T@%anrT&ER46cgxNYf*2n-kRPX zEtc;?e1KP5zpOgiAs z1g|0c=5)i+Bv6YOPG&qDX|}DLlfcl}l&XI7RhP>a(Iq|Q^8Y?+*u&PBtO!v#a||>P z|1Y z8(@>#c=3C0DL#1#n}Z{;3~ALZaAN;R|zo2>MGICBPfYuq1UNsP3nldrNC- zQmc(YRDMCp6;-5XO8FSG)fZMm$@Gto4v#i7r9Q2^c=R^!LOhL#nF@d z8Mnn3&C>R@H6;3(w`B`u_pml^7G<~D7e<2xH7}~VRn@2Y8Mk>eL(X8?IKNS_kKGu! zCSeT5O$N*g5?HE#I*rZI91hK>H{__7TVLZbPKKj$TC*XiuTR$hmoebmW7e0g<&6IS z`m&7v#1mgp8rM(Wy|dS^eci!6H59HQoe6U(G`^WE@H3pwFm(#~yOWaOVD)HKezNLU z(=5HZjoonv6Ou7)(BfUb2JKMjHdu+l%ds2A`b%Kx0^b7Zl7yr(Ave_BPaBIGGE|$i zV+Y|qqBMnjEpfoN54s&K9Oyt(__uL$00smQ4jn0;j*x6T!jBA0-WfkIJbDD7Q!NcO zJbJ3WnzYPRZQAX(7nYSo2olpGdwm=Ic3(K$EDURr#jlNR-%gyyh&FZ2{zZP%sN2#) z9L=i)W2g`+Q-UGAF68dET|gH>yz|6(qPf6yc1m8j1GpE6gpqQYsjEi;t0eeNmyF zLDg^8yVlCcDtq?sE!MT4-XxKD&+1o zFrrN3%%*j&2Ae&QNn^=IPj zUSF4+rB^q!UAqW{n$QOI?p^9P{@sZ;394xHB4SP+rxOeQP>^U&h8-ZlA}7H9h*vSZ z4ynl&O0z80X5D$GZvQtJ_7=QPC5+Zb{zOI z&~1UOCQ_+9aBq;w^r@K>>A~?^WfD3xI7Vbh?ENyY5ZGe@2Z8kl*2_GPWkVzxOo9(QHaL_XZ&<<9Bve~)&w~ukB8-L! z^n(*VCLHiZ?R$M*bs2cq8rq+WZL9B6s(^V_?+q^DU8Tp-&(Nk8w)ofznXpgnfM?f# z#8!n54Ann@x*BeJHB$9R5D=$IBCO^<(tMvs+V30a@Nz#=mGS!(|L3K~q+uV0*>|Bi z&Eb#X?{vq^r7Kkt&Vz1AoFL5|KbBEgR9MtMj4)j==+Ivi-@{fqjO@U_*hgi*kyxT+ zBtJSaRNqCrm#SKhwJmP^Oj$2iiXG9YTu*wu$2snRS6-rGsRsy|PM=!Rqxzs8l%EHW zA}cG?{hkx)F?8>SM^M09%iLr_hUqau2l4gs!Qr8v&d#cSx;7z?lVVJXN27l?IJ9nf zVtk!5I@(jXY(}KWs7;G^&ePpV%Pr;pJi#wXf_zX~g|0sZY=kZSY&=es5Crpx3Z}CY zqoY{0d;3;*Pr1$|SV|c|!T}DG)IP*@;vJhO(1D++HeSzg1^LyOd}?=6}TRLHhtg zFol{#3at%d$I^MT&&`(2@I(Nj*_34R8fN_u;U-%pXmr95XD`y(VBQP^iDhdZ-66_@ zo`NFIqXk6S1%u{|IvXz`1S$~}BH}~rJ0W^QWG{t+<^>`k)}2Z_iGoD)1W^`tyxDYT zGl249kBZnjD0MTz8+EQc!c2faME{5NYM7218qf?fPav;QH(IQ3$>ttdB(NF8*s~}K z0fdE-Hx^@(l#k`Z=A@eq#m-cgm@O`65pW@@4oC&~S)_vK_RXJivt3)%#kJJpM23i1+DS|QpGQdEE z3Dc4gZu6kb|2vE!!#-=@WPQZC#(W&^t)Z8+byxjZ;nEoqLLk&!@MDW5aKYQzsci8; zktQ2Fn~dL0izhvs2hB?bf)|wfifj_q5M7~iwR70~n&uv17hm;xCG_@b3OD3@CjthkaGjsGH71`-))DA*}1<=Q4IA|EuX;|72bWEr;;%h8h zL;1QJZzj5~oniIqHOB3@Fg6p=wn>=HVyQb`^{G@cRbUZg)4c?Z(>O3o1lEWpW(i8a zOee;efktFJxkm?!Rqk=grh6aSQf`htZiv|02WLcmQ0DjQuDp&Gccs$qWY|{3eqi`T z`AoJ5frI4;V!=_&pcWG_U*(q8C7X8cJUMfjz5#G6HT%^w7d|VG-j&Z3>Ys@9f^qhfEl4gV#s73A=k&9F_*#59QalEIPPS_m@;ux6xiiAAj!C^c7GhHSZsqrgy+Eut!Q24-C}IWTh+u(6 zjX@FsN{&h_L<(DVK-`2310J}=wWu+<%Aifg?_DSaW<&}Jd%CyH#vU}D@jDTGuE+uq ztBat(7ZH*JCKxFvT#nmoW=(x!y)E|4)!LSYeY3HJmjccS@+1Uq0hfWE%z<1aFa-_5 z9J}gnprEp(wyUd7sq5=hk%+tzMY42Tm+ve3DxM^zYv+KtKxKjdL{1(Lqs&UE=V9+1 z>_tRrqP(W5dqG}eO_6-{LgA7b(KEu9#am`&ODqTe3Q#M;%FOqeqQblqLX8gpU<&$9 z{RX_7)l}Zvq_G)Qaka zIvceA@0elVOT2H&{Gd6{IM&$aU!p68B{M?OE)P7A@a;PO2JtdD>Zo)nh&-6{5op2; zKLmOjwh(G#?%2q{@QEQAdTT~E8ANKUW}A#PHI?4vZ!Q$(%?MFDRxaGL!q>{LLBtP8 z306JUD=5Ap?i+?RBqZ$!6*wUs7UA3RV_K1UC%D9kQ7z0|4q$GYqv}Or*4Hi+E}s$I z6e+yz-M(i1HN-${1>zqOx;V5;0TCh(sCpIL0lC* z9Wd(@juRFcQ6dCUtqc*hlt+g&HEJM-TB<_l^6$n?T z5x{Q|7Keo{mt*NTKA;O(bfP7G{Z%qc*i_T=H_O$dCKK>EdvkO#@S8H_7OfSjx%=1n z8u*PgeLXG(CfIP>fcKYKLzK8-`APq!OoMw9YkP85D!y64*v|yISj421k^9%%+Lo$oowYk>(|Sy zy~e&)nJQlr$s6Ke~Do}yz$7~FYR3;So&ZL#PAgA4eR^|$EMg3L+~ zY=gE8A?PSBtNU#yz|eINSMG-vm>60~t0c*L!IZ8U(M`dW6?#`JWGRN^JYX91;du@nT=uSR?{QkzhWVQ!&cy1 z^j*9<>E}TYm+#uLe{Y(j!K?){i?vy64$Q_ZNX^h}L!Vg~$(Wcxv6;_6tcDgdb2nJq zoa63-w0(&+&D3Dr{29?eq0Cn8pN(;>iixuZ^NtKMULFYq1_6(&7F*NcO{33Ldeu7gck!QIQHz5HMdp6MSIK2SsDymG_yh*7P`;BdVCAYH0mjnq*N|PL{gGS zM;a8BID!;+D4fW9hK-J~ICcxINe|RITdjfLk}+(#`%(|i#y}w$&x9DdAiyL3JBph+ zM)X8VctyZHglg}s%Ei~ds$5OX6X6x9bF(rJ-NrDnR5&fe31Y_ZE+=Vf5oj2~&__qg z04-E5yAnJHCj4w6S6i6G0H%imrsBgVRhh@p1N^W zu{3QH^_l98llI?XTr2$lU$O2%pCb+f$h8G~#^r5Z)HmO^75@W1K2XZ2o#*ouC^V0F zZRob(jugI|EKnww=}FHqD>e}4U7b=%kU{Vtq{X^K&7r;GAgS`aHgPq62Z>N3!|1$W z^mJsuF3UO>#dKWtL{0LJy^=dII>@Gv^d=P;lIuEZo~72X?}&>a=+?MBvoVZaMFwWT zq%a1DaD}q6gP1cPqn+RhO_v*lHjH=bW0#ww!K{uMS45$=e>P_2@H+C|*yT$yZNO`h z$BR$PK(&w7n~Mlf8m<#rU^N(2msW4esTo&Cp^Ip3|2Ic?Hf*aBzYP5a!=7k5(BHz> zKvWG|sRFQVFu}W6e{bH7tCFy4kAFx1Z2&n;+Hg@*bBGTou7@Z`Bp2Cj5~Nn9+~5Xt zs?JP|9UdNaV7;(!-aLO32p?sq zT2x@uOsSG=u7}uBcAO|x5N7R^ySQ(#KzUup?h8La3ZG5PaA~P$*=rKDo{K1s0%~~z z*N@{6P6RfEu-j-fDexm;K?9AwW=%@18T6W0%y@*;J7&{)Q`KRU1ZBW>72CyNirCc5 z1e0MX&ST7Vcv$DqX!@w)>T9&6F}cB@t7cp!hZQ?#V~{Ya=Lqyb5{qUTVJyLsD%347 zdE}`kgU60JxDe>V#evbpqQ>-klb)Dyr5xsOn2kjlT3f%zrN@D>0~-Acoh0PSX}Yg!S9(hiai?YRG)ZqT>GBz&yv3y6?Xxi{!UBd+Yvv^hpcO%UD@^LLkUM~oN<|Zi6NEz? zYH3hIYJ)lEj0jC&j^1-?Kc)O0L7h&Vd2Ld*c!>FhcEe$#2Ru8@IM~X=fD{L0WKy2p z%FWiVuTH33mwD~?#LpyR6Bx0ye>OuVZ0Zv554SiQ|DhzyV{r8_YbnMNh}pfNao||` zWW%844ySHfttsDC{{Ksjl{)^X-+Y0?7JsKlX8JWocX7%%Js{|dRxpLaGGo&|Upo4V zDU~BPN?Hy14N!9pziLEe53w__x=RIqO!v$zPRG zuGD6eHdmL=yQDK}Fr_ki`{F+EBjckJS#ZEIZ5D!J!TkaoW7jX&Ba}@&;>+k+qOUGd zk3+J)O2?>x!%O6umaHxG&baiQl=(GokvHX7A22rUVGD`CbeOJS<->VQZN)tRK@Bwp z)K@ZJ(WjE5A`_5M#fJ8f3A8M?*Z2W2@%%LS$8`i5K&BV1ivQC zm%Oi_sF`FS^M@mz9TzZp&@VIfX+BUiNv}MRG%+Q{=eG{yI}pJbvOE7-NtP#I)Jv93wvjF=pcx7d%6l&wd@^~%*iG+ z`+O8Fh-$k_4?d$?9T8x!0GizOK+_xzeFm;lzPy@wMh#_kk8;1S?on$>MRM&DrB=#k zyZPtlcfi2AjGnOrUF&?Firq>C_HfwXMFua-#vE%4R+9ogg#;}c4N0ut$r0MPle^U; zzHatlO*1XmGhLZeD#q-p#=70wXuXBMD z?GCvBpaF=d#1SC@S_q9Lx?JoB*P2i>tF2G0F04(N%;PgI7k2Lk-NQGJd{G$C10a8d zgeJv*5j0m=jW8<#<1LG4Py+F+raVzEqEeGR(i3&L`u5wm-Yf0@QsanW@3Y=w{*Kwn z;mh@h7ujXcT(P4o)NU}N(2wBx$O7+2%RG`#h2r?|aJfsA3xv5sMJ;W~trB~o$#1Np z4av*h>=Nm;4QSJmBZVz9F0p3fV3*@#-ova*+spe@%p0u`|F^NSE*BviZ3P5+ zDhdMCkMZ!sJcdiriO=+yPtzOp)gP*Q3|Dcl-7{2WY3PXuNAzrL1m~Gg$NN3YDkNuI zicj9gE}yq?7_CJ-z0l&|{UwGY$r2giOg0{wW(a|9uIe#lE~lr6?VhAImn);G(R|1x z=qIUw`>J2T;lm6XE-UD&on6~}Y(FIGSIHb&J_&FL)N4YH(fVPxgdk+LCJ?49*W^*L z%Fk*^uaf;NTbpxdw$-*CIwb9X7ok7)KiZ=I{Z;!n>|eG&X@Agu(VnrNv7aQ`XV4z7 z_n`{1$&T79>>KTQFopdPwD8w!^uJ%QO4e(M6&kY!tp}}rsD^B^BGz(ik@X6z17`7m zFu!L0k@+R_SIy7BGW)et5CWA7vozXk$&I! z-^S;RPhp<=3lx>wbLTJFF9wQA?U}>(1&T`Tx%0C~JQtPPbLVFygHn6ukPJ%gx%0o< zKOHD4wPz0B5hyCPXAa4$)SfvcuTp#N`~~~Hfud4-=I}j%qEdV2@ZEu;QhV~ zqEdV2@STC8QhV>y@8hDfd&#O4pF7`cZVeP~SLyGS^z9s)o$n$2w*Qa4_W-ctD(}9h*w$KW+1T5UZ4*{|oeFH#3z z4|nzH4eH?QIJjONe4QLzrw%^B!E4mPC*)n$I>mLfPWP$vui<=39ejfnow>5kLAs(8?z>Nvex6>qg4opt(ZRrOY?u2KgN2<7}rT{OSbae9R+-Xc}6QdMuE z>T-S1{LZY?%hbV}Ik;3Eyjj@mm#E@Ra;qMv2z!0EQ-r;Ku`2Et_WFP-?v>&qRorEt z?l^s=D)!s2?l`?r6>k&?UP#fLeIr#D=z}7`3)I1#YqkEr!>}{(e{Tf=V3D!o*(w0V z{xdh}Jpl8b?;c>>mq(9@Z?B43X}treKi{zG{2cnfb-r~eL7WaAEvu=k|F=>U?-HGb zts@aH1iB$X6x&4`EA7;3?=cD- zLxwn;OdS8PWLZM&g8h@2dI44?bSkHG<`y!bYP)CJw8}Q?fR!Q3%Ymv#D!+yq!F?Qs zOwqhlaHN5B}dR*0lL!bKNfs z{f|hY4QCuM)X08cefzjC&1Yq3wb!=w*s87bEOqVU$BRqPIJoG`w{>mt(Y24kQklTP zMj$M>jlj8J%ZU-!MKnqw%Dhp?R9^uVxpDNlbH^^{tU^ff*QTvCR$p<|83#Na)4%~A zL67>9rB(#pwyU+6`dq_=EZcx~Ru`+=x|*)xAg-_O_ua!xVy|e=+FB9UvpuQZqPtD& zsnAq#F|N;`#V@xO6_=cGpxfyhetUokLb^!TRsl0a{6R*F9WtH3F-zbkCXryZYqZ({ z=zi^Beja11XxghvBF|(wYddcc1 z>M;xSFY%DEtoeDTS|Q0A0op{ifLSe*5N96#8JIfhq%)Gnp2HUS~w=jE3k#~Kp_vw z!(j{B1@S2%<4LC)94`nDvy(i;wdl&MjHLC=fGvn%V`8BO>KDW}iIOC8g1Zal4``SK z`S@`Nz9qCPn$PQ7Ny;-$OJUh1ygx$REW|owASYP7iT66DpumdQ66EUE;ljL8US2)#(9f^lYB`N^WP7pZ0 z-JE1LWzr$*}c%^BLVZ~TTY zZ8y`gL?ky`Io#t7ldrhLylNFm3cpbdoJngVGcjhZ{gGO(2hhV~ad?txDO5Wa-6$U( z@)rP==}oabQ*1Mp*E#42q-0(xmK1FPk^oz0InxxN9vQb`Ao(w1C>(|XWOOxzR?6S~ zl7R+O6{zoIeUY6EPKFR$pp(ZL%gkfXRz{Cl>+iq+#2JT!0GV8^xRtJcpY$fUrBl&7 zQJstqnHuQp#HE2b1nLKSns)8xdGa>fw68dR#^E3EJiAqU+zaWg;J{Is-fll^zt#S0@6_;Im+KH%@NLd|ft~O`n@Hx^$mj&*NE7DJI{W_Sr+`c$ ze_l1a|85r;e=%BoT@KRC}0d9DU7BtK5hnfX*7p^#N9756x|OmI(# zqgf9{Lkp7knCqSnWN{=`RYfPs!IDxQ9YtJHkqvvyIx4q=~>f~N? z-=_15v)WWpy&dxeb_=3fxicIHOwqyw1pr%$q|mszytcQyksIcn+Wxmn@V~!oEjLGv zuNkXajB4^|2ecm0){x=o0jFpf0?E;JB&HS@GjUuHMG$U=8*PL)Da;v;29-lHRe%vp&uZ6~1{Yg${U zsfZ_ylf~#6q4+?=#NhJQ#vn(;hnaICN%RzyHq4446ks%7dN}bsKp`-N^ej!aDIeBRp3aKGAtl}+V-*m#(4FZ3YDJ(F+$67*!?07<|=e~}GNhtd|Lj9<)h9dv}re+BD|4X^p0h^@#BZPHCa# zK)lrO3SaSF&a#N~#VRiWGVC35I>tDac2!6To zau70wwFB8hH~Tm3%UIKh$`kxNHj{a^%?Ah&Ohc?uY&s)NWN#8a-6*iG)U<(LX1t8) zQMfx0awgN`OTh)g_D2|e4p=lS3o*!kL5fU~9G*!=2-0a-KdSAkCY;*l^{d^YabIe@ zv=~1#=yZ%D{?mF1EJwonu#JGQgyjkfC!p=nS1}gxCMc7QD^GjD8y2Cu>MbNM86`db z&lvU%*4r5WHyCGrb)(;Xaxr{HXfWsnk;DGO>{UQ!!Z`_bJunU`btFh2EZfus1c_jJ zWz=@*S_vuDvp}_NnvF4;5ZY93(UPw+Ud7xc3>ip0lez0R0h!68xRQ0Gz#Ra02frXA zq(&HkC3Ch;kS3$6X^o~s>o<+xWbP7H48)ts-1R76eg%k5qRCJSA13IjKu^(Q#ac+9 z9@s3-&~DRIwS&vQev77k)OeJ+OBgedeI|3)E7L?_V(SFHpCBO6=&_1nL&)Vq1kFPh zm4iG+r8RhDZ_>K0Dm883R~oOR*9xE2414V>((F|*o09GoBiKh`2{Esv0lo=J<^{3G zbt{v9uWhr8v}oE_7_ZR!f6A~ATOYN$&0|E}q}*}X_TS>NGs1Pj>n=a&KS;~a(MHL3 zE8xZ~K&`?a6SFUgCZt{hm<3xv<#lKHqV?5UykglX6P+$R7D&2ii~q_uExm{N8PKd8 z?92pS6LJVf6zNR>{Q{{Gtw`FW)6|`7+E=EHX(GggodS_o-0t6aXMiLUqcV}iz*fLl z0LEq>d>AG>7Gm=MLn`e>egFDqsU3u^>$PaUGsYQAm_l5EtRy)3Dm_!g@WNJ+WhMsS z3kL(U8tFtr2owosLG{xKJWAFk?N=30pKRKIQ^r*B>NCP7g;1;0{tb8<9h&sw95KZ> zT=Jl|rofNGltzpOpn7N!&S0NG6Sk|_q7hFUr^#d&vMJ;x9l^H|UrkD~q+pYj3EByU=#`>LGd7-X+K{g{UaiOf63PGhxOJI1Zai%)sUP=Dzrt`KjeWEK zhUImbHP}_*RKleKt2tPkIGrGeM4`m*14*EjMw3d7Y+=B z1VqEPg`Y@cvtxNnG1%z?z{Ij#;FBTQiv=PRO@y5$^b@mnwWfkTVLU->{C!%`p4~mZ zg1$BlkVcL?Slko|;5dQx5vQEUN?Z~7@)-xEwmR@pV{1o!vl=bB>T8YH(vbIR`4$|E z_{#ShVc`VvH%U$$h(|F}Q^5nr)|yI?i3D{{&Uv~w9DTP2-mUS$x31Q-Azx#>rnvHq zP*m~7R~_=710GM4-w1Fv=z7?80RAFk9_T@k++%o#!CTGiT+bOy0c|R_Xx7J##{ne} zt}3J@57M_;A4}(OPNEqK$+y6J#sMY*4h#xlT-sow20cPFnE)EjHf_YmjK{S8|7yeD zZ%vthZ}u9mt{?rsrTzZn_{}&r^O9>!?iN;7Ml-m}xUKO}0p*AYF}m9KBfd!poFK`?qMpbAZUB)Z37jcny%R*L zqf0BGVRt6nE5KaUQS8cEJCwb%Vv7q}bip?nZz}don_7Bsa(tzKBQXcW&y(nY84r|i z@rR{|8IUBsDC=iNc_VA2cV(^_*bO4PwVF2a8;v&>*G~)W6pg%g!oQKu}(phwi@hy2IfTfv?P6QhRzlSL^WA~PNeqDTZfkph7`f_#XIr)E^YCT>%)MZ><; zcx!R)^!ZxaMce$x*KZNN01^e`bJ3t&D0J^+Bh<0{iWEIm;I^#tdU ziJ_pNwf3r=hchl3@uUP6tf5NNul*k5J;mg-!)3B=c&V>|?|Zt9w+D75wSXYMA+Ij%D;Y#ul{c1-NnVz4*dzMP#JJrlMD& zUxD2Tj}DeAR2is&*z6Tz&17lbymc=qm6|s2yNq|CYzaLI!)YeU);rS*U=(;9Ff#GC zD~7l{AZCE9K{tfuM#gb|+%qXwTh|@;wJkh@3tBYsJB@duY+b0OpNX>d4q$WG@3TRX z2!;ZCy=0isA99Tezrem7Qm(8T>0Ox{=BlQ(nl|z~jCbh$|1E}nz4b9GXg+BCm2t~+ zG0=;h(+*1rxj-$0%=DAi8y_aLhLt*uR}%=!7>KNNIpVtEdPp&TiOzK9HvwaEMiP6EpHgA&{#15>0D(MOtrs(D-0+^|ZqjvT88mE7u1AqR0{P0?sdCu7wEpQ*vgo z01{nHG%Va+I(Vc449}+9A1S_dZRy?BefxUj1I7o6=TAFyA`3Up_Z9g4EN5VVhX{89 z7>fAcObin+{B5#-0N9;O9|olxwca@T+%xrpyx({~9n2vV>DlTp$oq&?WW~ozOyqbF zJ2bmR;KlO5_`tOyl-f=Qa-Uc$OWnzOao%UVuNa+nI7L!}{;R=zL5e^gu+7*LCJ8Kq zJw8{j)g(bs5NU*b+&4;7PP6|Vw!rd@!rb#zsvfub` zvumwT@-W(34!BQXMPiRkunV}qm^*+u0OJVEE?}Ur#G@HIUjWkMNsLE2gQVIuE8}0S zCk{(at|m;krXzpC_(buB=_^Q9WOV_Jpy>AGhA>!nhWZ#*P2krs8prT1r{J+6L=q%p!so%}2g)EsoH+41fB@oKh`QeW#vDNBJE#*^sU;rj@Ijh7 ze`pZMo+DnFW=%T`A*8_gHtY*`o3|^~0L4MXsQgvo)f0 zPCK+9Gg%m)B+!w0f&2sF!7%~~vOEacd^x66P(TtD>&9N9p5dWwXcy;$v2a$-d&QCQ zKi{~)u)k!#$-aj?|6aSp`l0m+t89%~H&{!||1!U0e#v~3d5^iz>@_=#9}*>8HpaN5 z?yu+MI;$UK%`9Il0fUFEQHp^EOa`(Uu(IRsj`p0qhFW-nuyzDVkqPl?nCi$ph1QU9 zL}f@edrq!ZwPLV!qZ1Tz5MGjR!#hJqnI(Z$BElm*C;O}?_|c(!&&eeBiU-^0@ARBZPz$>P zpu+gK2o4vL3*5Cbpg<@go-7$ft~j*>v<>$rsLkl~DIufFMhN~*0qxAJ5f1g7j8O}) zy#h%$M6twRo`E2TAR7p}agnkkB-*^^WRzNb`xrin6y8&C@L0A8ssybM+kn_P61huG zMy%!4h+cx%dQOIw4A6`Mz)X6M0NoQh##m1R`oT4zZXs!iT5wGS3DT2&J1#qRD8%0q z=t_bOD|IlD>^T{v7EwQd^%tOxOvd4pMBB#J8l(hWS&p~rIk|>f5+_XLKnh|yRFyot zF`(;+uFEie5>CYX^vV-~=O7i59xa&2!0r;qg_b3TMZEQ~OwY;H)M8>4#xdAo@W4hG zfhfg5zW{=hBSRvb>p6KfwNl)vkcNg7j~TchtfwF_k?(9G78ip zDjjhRajHQu!+;_zmwTCs$Al)*!kWhTItG zKv0vBJi@0y4B-$$!{|AA6}1SUN?^MW!P1Bi6hu{Ws9-+8lN`cb66J}@sTHJegIYrW zU{8hi3t$vkT6uz*pt8=#`9jO6#rzWmR#So#b2x#qXMl4}t}=ZN`jUJiadN43y!!p! z@LnQ={WuV1{3nS@w0~m%x&00M)Asv8{`gJ%H|)FYw7uJYksXBf_Y&)@^%KxOzF~dZ zdcXBX>o=_jtr1W@ZUp0Fwe>=))BHDLhrVlm#r(MWUXVQ=H6J90Fm3KJuQkJD6kcXp z#y>N2`~helA2i-#oaTX*zd5BB&H|u-mDu`@)nok4oYDgK_aECm#xrwDFK~bV5$C@? zr!?RF{cX;FZcgb6_xHCr|LHlUdG7B&Wa`*Q$ zod2ykrMd3!Z*czcIi<_o-@niK={coK-QQp5{LAN*p6CAl8s|$Fl`c`g%?qusT0N5& zl`eLFe#P#&?V{2g_vh1g&#sF~7r8&bysl^GMWs&n=kM7)$%{&}-Jf5wdZHJVE_8o> z(dy~FsMO*9{KC4P)fbg!xj#Q|_pF#xxr;Eo1s9jB`U9qW;FD70ia8~c$Mm=R#6^3IAI&-Sp!@sd)*j=# zb51?r{{CHlKXdV^``sHn#WRgJ%sF+RTj8VJ;E6e>?sb2EgbSwUoVv&T{UpC1nRDud zx&e**Ve^*$^>a?$?f(9t^`V`qIj4@h^*>;3H@oMYI_CcV9eyvKbLy!3`~Cc$H|Nx( z`}=+Cwi`d4b85o<{oB@d<0luN8t1oawfCC0Y^OJzy34Kb9x9x<_|%wN;oVZ<wXWozu!*%-=A~paOF4k`CX{_eetP0zt#J^)q2}{<6~O?zr(P{t*7w+-)Vf$xT7*O zf9}GGX@>?(XM0`P0x{I$LFeZBEj?r8}-!XR?UpB68HSCL5Ogmg%i~74(2-Gz@`j&h8?|~zaDj1Wz zX!e>x=s_q)g#s!}04YqevQOG_3{G@W$p^C!cOzyP!=aYp)lAvvG=prW%m^!0wtUx5Lu&8TC`s+P zT3Md9eq7u!y;z%C*nJBwRC{5*;j0wOlrNkYf=xc&AWp+s3@tzzgR$J#w*_$K6Meb&Z&N)tvv--8 z(YqLrnpeyC4?y{8|AYM%`ziY!cG*5@zt~=DKi~Q%>ubaWK5mU$X=@iqAPdm(zha&- zkCT7a1e0eF=zTl^*d%H6>3o_=2W=E5vs02@cE@EHM*dApJ&Ky zNy@-vAw4vazp@nJ#Qeo_A~$+8Gn983IEE((A`A8|E`?QvE|RJ1D+ovc=7;>UQiwXS zMIsk0aY;etcrgEk#N}DsERO3_dWRm1`yry|A=~t5(l#_Wq;@uPOD) zP3IfNB|N2)k7 zqpTLyTaSgiOG|w#g}O^id@BXJOFe#-GUMH)Zof*CLl>78Q>of$0~eP9H3yDgTv}9f z;KU`RE7bvMAZfR|_XSD|Ig(Is--Hl5uyT0pd8HRpWxi@uHPNih%lJRvc)MZmwN9D; zWZpsX*YFSTibLH88tew8d9?8+e4k9ULO2!?H5ptQk||i&Fm7Y#31OcDvpX0_luWIuh7~6$b7EG)Zk-qAi0hIMUby#f{`Ust?z`l^b8;w#dh5$S`u z8OD2zxiM4&g8Rc5Q;yQLQl zgx(SBv+*FtXfPTZ0G@qNS zeXO7m#evt9Al4kJI-tS;3nMSSAYXppGMZ@j(LB7|fqjAXeSPX+V3{bU)x$R|S#s~R z(B<*y1#2(ydvp)susEhbVhXcm%z^}x1FNTi1sMJu0!}d+3oifB{Jy$}yNBzZ-qTaO za#}d@6lgelDhm5Gl@7i_~%jf9$HT%}r zH$#05X&hRms-V@jPj~m-)54=C0wxT<_E}6EE^e6+Ok$GJN-L@C4-i+PU{ncayVLmI zZy@9&>WkDh&f>*HC^=+#Yj2lbGJ8$;ui7aubZ5>V5;rFp;Cba9W4lSaz!{d2%+LZ+ zO1MCjTh>3NzfC>wzJ|fG$=X`nFzt}th9(k(QJKHGma%(M)+BOsvx2qU;; zNJ+LQwtSqf!NTy-p~*ql<*U}DCJRk%WWtOtY3lxGvigDX0~!Cbj6uV`%le*mJBUA7 zVJ3CI$Ks%q9G4z+?i!MCKUuSQtF;p(SIxwu#E9 z|LbaZ(wXF_d?)$WJ-&J4#(SoP5s!yoy0*)Zhs*!eUx!=Zw3=f!Z(wx+2Zvp7P~|KV zP%I%?Ns#Waz!4J^J`qxyYVA|{`t;%2qt@mPXYZL7_Pd!qe7*RAc;zTCHP|C@4U!fr z)-(avK?TU9?r#2YeYpPN>v^~k-OcRb>##LpcEyPaUU3Fk6cBabnTUm1jqr>TJbNP8 z{LR(j`iHOM;X-mZvxi^9?2!P8MX>b1i^SPRb{?QMKsEx?1~NzH?&c5IhwC4H4IHi0 z!ePtP7w%r}H+wAu^Ayh?SS6tduJwpGj)Sbe0OtXMM093&a#YW&p82(IqHm}n^K0G2 zwrm-3OTuZ3SY4YIEn?PhK4<9lZYcqmWY5KLWkQQW0v#BLI9>~YF@hzF$1^2Mn=^se zPxqcvvi4Ps8=fU_=~Au#pEm5A^+EGTW)R=pulTR{f@vX)qk$G|=~~NRZPP%TuV*eG z1~o@gC*fs)<0J$~6G#wnQQ-K@z>_2!z-=Rr-shbc`uaTQu2LQQ?yL1C^hC9_yjN_# z{(54(g+C7I=Jv1N=`)XQB~w0{jRlE`7l%E@JS?JkjAK#2tzb2Y#o1ywJy)KuR&4JB z`}(RCD%;~aQ5}(wJO2*U&wg9C66(~aaoL%Bi)(y@-pnk38yb*Jc2HtA2M;F}0y~mM zCc=U@&=S{F-?1Rzx&&{6 zE-M*90JcK&MHsf&HS^EvWhRGON}L(5mw3}A?B+sGOP@hvzdmy@j33PIb^nJGe1Qn42Lfi;l8sJYh)dX#zBaEjJ?_+gvXEEg>c5R zQZ;;T&pBr=*W?3NCf^!4w{4U0e^^&qy~LhxUu@gfzgqu5l;9uZA^5EI5$iqHo2+T;zR z*!&ao86pWk0kY^jz!!bBdCI((D51Q0tJ!aEHv90bEK%$~=NtcK{G;)g#-A9^;E(<| z!g>BWrWDOfXUN<-Yf5Nd%+Ao-jwxYzu{uLAwoECSm(HO5p;=Rk=A|>pc}4Tmxke5u znwQQs98@$foxS!4XH5ysi`m)BLB;aY*=syDYf7=abgt&0VtMIYZ9LX7rC44%mz%Gd zH6<)BX6G`_3(1Ss`9ky69aDBP*`5f&db)$no=Y$ozLU6B6;b& z*#1Drl#skwopa1bJErFAq8zH&UFXihnJ|3smv1;Cz}oUlo5W#q(70 zFQtO5ia(N~rHX%Hzo%o$RK*`k(NM)72y4`Xs`!1Oe|kU_|6GpVuZsUmj^3w=e`>$G zI)nM%Gih`fb7@!CMbvg8xG zjTMNYW?c7XAj95UTJ2~HUyM+LUq z!6+m=cqTZKh}THdTqUWg;tJe;k=(r-)!CsFp10Rm9oYo|MV7d2w!p-+5`qgpE@((# z%K~f<{X9v&(yr}Q5pR|124JV#B1k?(L>h5Gq!ZxcAY2}d8lj&i&*&&2FFtcvO%-=aXdy2xP%rXL zH!-rYmw+|Q3 z)=Ka76L2p{3}WWRhY<|o5Ck$7QW~+t;De0~M1=9|{aMuRkmbsNQd`Lntzrij@;tEMxSkohbAEXEcB_o(fszP&7+!L)N zx%E~;Egg#Bx$Ar-IRIW!0pBeg*^m^F0wvgqIG2dA#LkjTMbqTRHEk2;cq=&$94Mxy z9lGD1+kI#HThOM$(Y*LMKpcnpjlK(z8y*Hgtg-Z^5|y>bXBuj(=gvbjpYw0IMUVfq z#Q%TWiknmL?xvs9;a|LP+95(?BrWt=2O;9Z&`AI;Qy_^@g1pHB$b=0Jg7B{wzz&?; zSK)l|E)dF8?wrzgxnuRST{eqX`6fLd_Z(W~Hy@LZ%*qC^G;pP<0?s!;#Uw=zNJa=5 zalU8t*xe(;$u+r17h2z7qG?jm{aE!vW-`S^(+=n8;@f?NB!D;u+7+-n5>ZXY9xg-S zf=ZG9MldrJlKR;@7-ut)(Oa*Ti0O23!L-Xbdcar27xO{M@5H7Jv~?~)<}ryCSr~Re zJBmskev~0bBTf#q7qGroEAd|ZVldSsvw{~KkTVcHXIUWBqz8QVWA!u53V1?h@XXJdb{JF_ZuJ%EFnFiXBa&^9 zhv)?3H?tV250VQT&!VxXgq-+h(V1FFR5{r~pu>l0BZm)l25nSG19+2(WeLy}WLP$B zYF7;R2JDW2a-|~(bgfdHT1iwr+d`y5fi^mzXZ#toQC{|4P%|=96;Rq>-Gb>5w^29) zoOlfUQ2A_XrfMZoH3lr9*v;G zlUomn7yLYY5J+#}n`FP~j@C8nn!a!CY5mF)lj|K@o8hXybXxcfXC~ArxZk9-fy)9g zKmL0<13;n>W+p%!NRS;EcAvVky-@me3!z3wu^^@^LirhxM%a0im&me@W=~8KPyoc} zvMfa5++z99MqQy+w--vEZtXRyYdgrSFP(Py3}^5`hY868lZf1SJ|`wl5SEGA1okwF zD_e5xbLS?eQqS+M|DeOew4Fm}h){lQHw2|O;nl*61xFDf7zB-kWAJODYJzqE^S3M1 zs`hQCPtUmRhK6W6hx>2_ZFdBc7}O8Iz5xRx9Jl}-WDMO-@C9-JqNHNyCT8=tJ90$E z|M|wN4Et6Rs{a%F|Ep%aVE;lY7Q@p6dK{ny_}QS2rh!Zll0-?+WqQoU5@Z^(-qK>A z)M5d48|l6oX#s96R|{ydk*e>3M~@aG(}yck`}M#{31SvDOEwZj)@8|*g-{1)e+v8& zP-pUSSL$b{ySP%OL-TVFJzyR=}XWjkiYClSZkmoOA1pnm@<{A^1k*` z>eDlo@~*q|_rCQ3s^L%!r=JC2$~e-Jd`^q@B41<}89w^n)sl{{(?=^`ckkr*;K<>ClcrjYNpp{@j65~$ z9Z_F&BgrX31E$B$PM^3Gm}o%zanjxHE!2 zU6H$f>@*Kfx%+N}6*{n)340v(30q{)i}>;Y{E>GKJE$OUfS3`TzP?HA1vj0FG$ zfEE*R69}=)#Z^vK>Du_hOgC3IVDg zKy4)Fke(w!fn*j2!L3V%qb~HMdUlf*^NQA_(f01e8Y#qJhyxO^pE$emm;mg7p-5;x zfC2+-4Wd^8qruLVfX*84^(Y<3XXR>Ht7hriy<3m}8x4Ed`UCubFE@TdIN-DX!y$Wu zR|QnFXJePKkdfas(Z({3jmCEKQd$`^brLghoRnAGLD77Ubvh}TrC9tE(aGbZf?Ig) z;N*m}zPM@gb!XgsdduRrXFVsc4hUu)c~t?G$d3}?u$C=a*IvMN2zW6(Oc^YVY+?y2 zAty*kx0tDgxG|R?nm9wM{NUt?e#}?E1z=rt#j82)9v0y)K3h3eFIvyELsPbVOMB6_ zAX+CIX_}512x!C{K=x#jVh+MG0i_^>yP>px&ZbciFGh!&isw1!6|vJ1(K%f&=E7-* zx@`HTxotnOv|tCp_E=0nFoHk?4+_D-1^&rEcNZbEAOc}4D6R5+)$qcnC!nfSr3!@viV*v#!&)|f?fkZF7eX|Pl~KVXf|(3^8N&hQSg1mC zWT)XfBoS0Izk_WlTA(XTU!V7|dsO59#x8QTl7lC=*s8*ESn2SWZBVTER`#z+PmWC+nB!|915 zn{V#lv)R*zm1CXbQV&E*OMn?{Glj4Ju0 z?zH6|3#@dH(QQ_oot$>4)%1vJ|KzI(W+(m<_h^in7q041iU5s-xctCnfb%pxk;_kH zH*dPu^I-Ro=do9v9iMiH(z-%2ko_K;Lb)J4j)(`ME7_fpNl4;g7VNAPDcU*MVe6mj z9I1Ke*tD>pu~-YnNzDpY9T8-TS_VUOgdGt~hrkaI(U1tkJcKHSk(uy3_wbSG;hJab^*?KX`FVwP#+nU)LALs$&q?W6d6u3s7DbFprA6IDZg=M3 zDHqbD{IlIC5n2kou_W7)vO~yb4%`Va@KPD*J&1*hCLeHL%l)^nuX0F~8{L|N}uTOt?wJ@yPs}}@; zp=t}o6JQlj4^ONMdR}bVRcd8Enw^{oEOl=mI6gQzfUa|FFq;p^zCX~de{^51*P=kT zdUAIlJ(AORRiHzGZvBMr-r@yihg4@S;fj944T1)-rGd2pC@&s#6jiu@(A|P)`S>|A z(aGUMySD8c9M12|rzeh%=f^7@zOS$0ockI~H{r8IqkNw3F^e~dCe(i5hd@G*O#cYl zu|N~E)d!gYP89*0Bb69Oo?2vNT5Y<FpH1TU&qiEs~j9veJ6Qg-;|E(OTR@682`oKzvERnkeJvV`(J2uMsA zZWdG;34AToDK6@F%>!lppKoju{EwHIUo#g_JlDVCzOqAvgW`JF8D)*zeNYf~GRPih z@of*-j7zgRSvihAcY$g+2Ncf?29WCNhpJ-;F^tFe<|n-aVRFDLaHYjGMLX1m1+eLNW_# z26pEx&=Zn+m=Zz?ppwE7^3dWb7|2PSR|!;g5$~F;_k9TU9quVC@qjPVfirLNSok=As(H*Ca zS9nfVFA?~PifvwB3#2tXsC)90N5@AdJkw_{pUWY@S+TY2pz~5%)2l8hO3k~SmwE%L z76X?sJIvrg@J&Dv&L+ZSIxzb{_mmF~PE_Qewd)q{#*?0LQMt||U&Cwc*tOSviNQkk zJv>W5w|qqUOmFc(*>4+`g>56HLx(m7s2_rJvL?*e zn$Q20`~R)7!_+cA(IsO;b_-3F3E3@tka%IycO)~7loLQ=Fmf};hT}L^(hM6&V>IlD2p%G&(%rWXyVId;q zfjhP|3ZaiRlR=oa_Lt}C`41T)?FLkFDNXTycu!eK;4UW@2PGVb1RP2jj>y@AeVvtt zK{M#$ptuu3<(Qi3Mve|=^5czT<;cD6SQ#4}3FumZZvAg}U}*F(;LSt%WBDO>64a+A z>L$aGOopl6;-T_o`o;Lfu3pu2JQdkv8}G$p0x&YvOHgt!TY%UM&2J2Q5@sa6dk$j1 z$;LOU9`w9gWx!Ow_l}ze_R3gk@?uEqc{ep`>R%9ExWT)U_6w+dXz6d}Ezck36Hi8Kedm1EZNU>>SleTaU zHk0C`#z&de=4*9zCbQZ{=#Vm%CZhmR;^S1Y6rlpavBdwRp{mXxMY9jm`g?rD_y{sw zF>@K7#6k-Q7~!`OdIIf{OAsrS!=j3v4clH?;$QdfYy2GgShIF`(s+`u;gF@xP5bsX3gH}VCdG%14tM2MI2auEZY$vK(R?;?};X}h|n+u+(XR-_>A$H2g-}} z0GNpYpC$`M5W{es;T}!0fh5QPlM-QTkfovhgH+Sd|J_5)1o*V^X}&_BW(c-zf=`hJ zC9#zt0gxC&5(j)CD1Y(isotYhJIH$)=UN=!7$1WGt5kS!Y9$G;&9$&$q@h= z5c04%9y)m5GRPDWhWEjV#=c)U)=UPdFOb0@h?$8DpGXsPA0u@`g3N>s`5P9t z6*`8{UnlqyAjm{82J{{A;sm{M1iouX`uGMUj%p(uA~$!yx+j{6_;us!u81B}UT^V^ z@^Y;jui06#c{HlVSO$t+i1@V7rjl0+8Zxbl;Tsb4upoyKSdqaB9#QHFcJFNy*NP1s zH*w>Jb5Fy0y;PjYd#oNi%+H(8>_tx&W4UaMl}%mT&V|wOK;h^}c5-lZM4fdIs8#vU zO2SSJBSfr<}ULPB$583|%4gtJLt2V{SD zlQY(1>Hh+EP_bZq(fA^R-{G>E$>9Gyn|eIQ^j5ThARq^<`*83?@hcNUEJTG2 z^d<{|bF5hp_`LCXWLPruiTHCQPZH(9fREy4B&;jST!b$Wgh`>uLM>y$Yfw!q$C}CT zIoR_U>*pEYH0&F#uUktg{CEF*Xjd7W7zshbYrIuDn6@4;imIA-Di^&qi*(nkVt8L*od`6`d- zEiNfLVB8EA<-(;+b+gvCDZb4fppbjj&fS4^9*M6G+v zB|Vt*Org)Hfj!$D6gA^tN$<=M-f1O2lpd40;kFS`)#Ns6dYCObNzE(NOd5g4Nh2>n z!+7H)h?l`X64+Ox-c1bB2I+B80Bhz6bRpS|>4`^K_0za3-McjEb#2DKWt=d~ck!QJ z=HEkCmqWS-qpXd#>A_oz;xPWJbXIVaP}T(DL+tWGLxmL-xW^DF(xI#hBCgfe+(S-K zjoKrwl(wqflsaA^SrgW&ECEj^HviK6w~7X>Xc%iW=s@6R5&%%&N8OMd^(ngLzuh_} z51oE+_~@|iB2^7vt!nNv#^l$G;ggZ~njI zzgB5zIsRp@7D&rSn9&@7hTm-b*W9H#2gtsz&G@&CQN#Lz`Fj5OMgI|!8?C6RX=l_o z+etoHT*IjUX_^!$!UYA7Nu@%7*9a#C(d2@JLNq--sFC`pPWMnHl&;#pm+8T;oFvVL zJ5MxzS{d%n(3A1lWaO{YBbq>NJ?l131=X)XfS#HVWN|o$G5=6cIZ|mYiK%H74Dn!b zIj!{*F+_n26~X)ma$1CqExXGgp%HO%m2%)*x=rI5=g7Zdwmzwu7N|NlGt`}VhC0sf5rr2TIDjrJM)W%dL1 zq&;XKviI3H*c#wapBWLjUtWQ`Uu-TxDe__^CLA~%8FPwJ{ z@|HPO9JN2!F_l%tA^WqlrZTE(25kSdI+!tU=$Lx3D&A(kZ`RZyb^cb`^A1%yK+W6L z>09j2bWGi*iuLyj( zE=TvP;tlr4JErzI#oz6i+Updb>X_Q&6hGE6wObXp*;Lr&6sgef6sd5dDqe4Mbf;7N zXvfqJRorUr>X_QDiW}{Z%$mA^qS?8TSKFozzQ}&EW9oWc6gGyf>imm1f1NtG!G7he zsV(Z@H5}Zm4qjtS&zjn#4zA_kwd&wnA+Fe{ihbr^cTBy=DgIT*)CN^d8IN~Ntyjf_ z{o#(Ob*dN@5{zponw`<@9aC%7!HBuFW2#RV?PDENDOC(h)ugH#=CKKV(3sZt|G9?s zCk&snhOkE$2g*r3ov!E?H`#?3wzBpXSCHiQd}1^R$U-wG@KK@5rJ-07wLBQk1KWwu zn6&6!Y2Y2l^M%2?o9r^1S7@+e@+|ZDd-8+BV?+7jJdwF*-PzF*)(&!EFsHE1JWA?I zX7KRQ(WCBWC@`j;%0`WUnb5cOZ&pG0hcFl=dLJ^&3H`3C4=!D!R#>f#)O!mI6^r&C z(BG1Zna0Tmehk^{S*S;W8cEdI{b6DKAn^TW<2#I=HPi|zoXy-H$`y8}ifEI~9M039Q}#l2;r zN5o~a3RKi~jWEpe`Tqe)O;8f=8Yi}u_$YwKB9d&AOOVt{{(QC~mGa@z1P&vq@Dal} z+N2elR`fUmc33N|V2c-*IDgzB7#JoLrFx|e9$H+E>2JGczjpV!pSI2uWIQy7_xc%H z6UZCs1iVG?g2Bfr$S07j;vwk|){?ku^x6WQ^> zOnw4$34S2$KCY(px+VdP1+~Kp0agXN`_`=K=3mZ^F(R*8A>-dReq>nRHs8lT|G)ez zURM^*KKeJNhMkgC)oMb!i}`FmNu9WOEnNSux1Lz)vDqu28WL&d?rzg9I zd@KzW!vc>n=huAu8lw**Q{7R9=!wyz*EmX=dd&ig{k;3aBK~ z0BvN0fWwT_M|NCF#pqIhlV^(~d>G8uyW&URb zD5Kb}ZJX3<^!07w`V%XAA6i~c>1Imo@7mP1nU2#;^U^Wm3&Dm0C5+gnP@V*0f~|NLuNDmT&qm2IxjDTU!vL3Z8GjDvBAD+MB!t%ySi~?Iw z(FL5pYAuI{dAr$7xLPVmj0QpYq-91S(v1=zMQlFE)SxRSh*1FSp{|=%jwuTh={9bU zau?6QvW%p()(58VAX(uJ#Xwmo_81a`Q67?S?aEg(%agE;)7M$asWFf+Dr6ZC6gDvaW63P({bOT8C-&wiC+S`j zbz`LATy>4#VLoVn=2%%s^AJVH8MF{Zr;3|brUCB^tF(K914(%Rs6~JWf?%~o(==1z z&>*ZSbs|)bc^;j-u6VS3jh-SvP=V zAp;~;0S(F>8yufJnjQ+&N#TG7Y3M3G8nc?J;jvE3cE0kZc%=ElEqCX$N6`xd#|N+y zr$#J2pfc(fGJI$C8Ua2z=cwPAViV^3*zS@V?_P~MR;JnPU2Uz;qIZGt5$6i z;2f1>PhgJYqmg7Vqr63nvT)la#$rJ~@ys($iveaJXa+lpDuEd!#E^>v)f*)W29q2N zx`0t6S%^V$IFdhcXcEc*`F}bR;&|n9&+e-pw0EY?GM#L8n&Z$KWZ+q?WmujjE--{T zOL90IAVE@Rpt&UCgivPE^hv8Zv`I#*BLIZ+>9K3}Ik;(BS$CUBRn!#%ZjHeDs%)0M zbNN}aV&L^iLQPAV%#wLhr^Lye@R(A^e-V1x+CaFEbCGG55)EfC?)I-DjRAv-iW z(Lz0`J>wbBWJ?CQyEBZ8>l(J%pd#-5pKnc&l#N9OZL|x;Z^QD0{lz z;*I5N^~;fA-Tvizm?oB_LF^92g9#K!Op7p66HywM;4h??~sDHDn6L?r!Eg_7j8{R2JuSP-SS`&dZ* zH|*%k$0A?>Y$$Kxo$@t^12yss0D z&g^xRceMLhm=_6`udlqw#&$1~Hg-ZS0v2%)Dzym1E1Lpxst^vroE=9G6=*r=zUeMA z|43fhLm@xe9jQY|y|nBQf6=v8x0Cvyv9mXw2?L}oaQ9dlVhJ#7L6S`4l}HG5S}cr@ z)<c_BN4KVnUs+L!XgLx|ROF2oC`4zrSa{7rx&E*!h>+ms$T}{e|^S>%G>? ztc-QN^*rqNPlFBis5xQYY(~s0;OPA`-^Gg>MZT53ccs(P#&CU{(D7f7w48=T0OUSQliL~O^&{x)GwzzmpP{d zOkhFjMmgzeTj%72T;5aK$yxBwj7yxhb(=|<9+$}mY9e%HX$Q4Lu6a(as$44cAy(Qh zw^_`)H@yuXH8&{R$QsM$RV(I|Zs58F3*@D)#|Jf(A19(&{#jDm#+j~=JW>|9af#XA zI5b2Db?&4d94K8c)mFIG(nlvp_X$0_dYY=zUD`^O)r+bP=f0wXK-PD=q;#F!N42hi z-cOERTG}Ei-pUQ#D+@Uqe-sjiw?syjXRS`N;iFOSxWx;9D7D{YkH z>OT6oW2*=TN-yHf8g&I?4jvv!4^0rjs|)JCt4kZG!ft~<7r8<7zuLNi^%MHQp({%3 zso$esL|58!Ow1rdqmzNsI!=W=eS`Zr`Ypp`av(oGw{#6v7I}I!i_N57|DQDM{nnKE zhvff1DboC!|J_k`$@vg;QCl6ne+g?_3}hSFcFB?=r#D0jMHKEEQhK8VyG9baDJ$)M zUjLF*F;#X5_ZIG4zKH2tbe5)i%U)yW7Q$)(e2YiGYE41Bh0z#fraX)snB4#b&d~?8 z1-vp(?5kC*8_tX3Qe!Z7w1F*KTq8K+kWeAw{0TomEnw&8-n_SXP1#}So4=*K(#48- zEh{F--mH)i&;yc^$icai$NW_wTMJl&M0PwsJbDb8U+GTu3YYg>TV?CoYhA$!rl_nz z;+?n~$H)Yp0d39ZU3!b_%MP#K;!RzVc8!nx8)Orcg7*O?BP=;EwWX06U?Vbh+4DrR z71Ef4w^vkbcSGaqi~5vfr;}0PwKO?RzhT2UyutFa!w87lyP@6cuQrMKd;wl%I6g2j zX9#b>h(W5Od=9<_J{4EYXQlQw%mZFE;hJk?{J+q+!LYw(m+cqZE9@@ohaiE!*1E%5 z1{%P}%!kcAc;)AyqW_ceN5&V7r;K;N5OyE2LK$N}7gqi*ywh4RHaMIf>mBGEv=)sG z=JIzDw>Ho@AU`OoABW`!3s&|>@4!U`Yw_6NF}P?)$9o4BH-W-);@B85kW#Abd;FHDe%)--)~v2spMz zKVe*?RXapLfOtUgHf!*lt{I3Nv_{)sF*zXdcsxfJ{*0RoUUp?Ag?H(2-L6DypsP;Gp)e2LeR& zlQ5``M5?h4gyR?uLvU%uK!IRkI6R)tI5)2sukIA$RUs1VdZeqIwXFVaXMr$usH=M(oFDViNY`Q&CK#JYY)maF zapx$qfm{sy)B`<5Ib=?mzia-$>L7aWChI=yE!NZ4Kic!`b#~5v#QvcDU8lu=P5)VD_gi4jL%Kj^+M4l)gYll;f%x_`s zgpHv9ITILP5ird`dd&hy6N#7?xYZKa*Xdz-7%kxnPJpFJ9&9=pgPAX%us-ipgF6JO zUTjm?gYh2;RWD$8IsBwCTxiw}x*8ZWka8xo^phYY+9Z2Jhya`{4r#U*achH9Ee7#; z2Bf3}jzM@cF`kP$PxLR|!bsBmrdtgh{;0A(1Lc7efRRAzIMiuLA_MZ)^W17}gRQOi zIo0A}?Aox5FookZ#{dfESR%|6E`G6~^}9>$ev{B`fiFssTog^@faX+K+~G_LyDoVg z$yh+w0^ceT1@sDuF!+L92GKL^8VBbmiTQV9I4i(6_%%;ge&cTVEwn9#|0-F~&s>sSj<-<|H{7+6YaON1GlM(aZ zbu}WA=#ap%!2bvU9^kEXayUVutH{DrY5tB=jUI%T7W8%Q0E`lFX*3!w21q&owPxw{ z{}J&2iRXnzyaorca0Z~&`j{As6v`hm2 zUph-TI7W`SyC-%xuCniNe10{j>-Vlg9gcC$sl2E@1l^s&urCYj|D#c3cHq|w+ zf}h^MHI4s_epN`tqVNsm-~l0@J(mZ;D28u33;4cTKMv)^a#XK4)Spwq4*FnqA+~l6 zjgsf?u=F3F@ByI#GOdPl$)tXS#MW$L*H>Ae-1XRN z6Z5IsLgM~GI+sJcyLiJ~bVO6zbVUEEc6V3%+Cn%%K8mWvoC{YGvlrnPu&IN;Do9Wu zQfV$p>$Tj@Et|YEog*%eXvG%-n2>C|4iGkUk?Ar!{$Fw{Gaw$ER@sQsoT}xb!n>A zyd$7H5n~UGF%i~U7Hq~?Bo`;vBM%-BF$aviFlao%2ukh|cW8-eey83;GVx$emUsiV zf-}||YVZ*A{GDtHD>>p~=X3Xz0VfVbf;jUkBm{Fj)qDyUW;?f4twvy-OK%^v1P)dmjn6;C5iA}G6|Dl(1E^#g)IsAQ6|%1w$x_L%H+k1 z)*C*xVbeSD?OwL5cwyP$?`32zVs>q5Z8ePD1PnmnhcP4`>k}2TYhv0-Y znI)NwwFt^4mfx{vQeb1Oo9CA-nJC|`XMwqqOZ*<(1287~41lNvbHa5(dR!_UjYmLo z2$KB;h4~l{u6uhqRQJ@L9?}2jm|?>Vn}g;X%x@EuywN&leaQNMumxu9$Lz2CPn!<> z-ZyUFWwy8IRIDtnMGD)@HBo!`TrV3~dk)XSGAV&yVh7rK4$pEg8`yFV&(e#Wde*LU zc$RzFK>s!N{WEP0-I$)1yt&Ul@$4=hxapiPtyn-0B<-W;_Edf8z%Bj_RI%<36Ww>W ze8Crm?LnWX)m=2OA!d)x^pdI-`Jh_=jVlb>wC0*GHaW!2*^bHp#eEVo(mUH%AkVh5?ce=fxvG0aJ~W zqayBb<(zA}aMx81DCfCEz%{8Y;%+`$TvN_zaTgp}<16kaQiyU5rnAL6%USdxqAeE{JJ%vJAKv};)yYxW z*={!W>}SV8;t!-ZWB>&tNr)U(wpIutHR1ga#<7IF>aFsUmU+ut{uPEMI&Q!F&wZ7Wl1ptwT zNv8%ajG)RCKzslalZcMR0zN}Y4{?>dmi^qV;J_&9lyuof^Kh7-PHZW|2YX>36SY}JtF!2uhGq%I4L zW`>wu%sfG~Nw)0H1X1Zzt$S=u{Xpe{cB2jx@`AE(T_g1319N?az8+&xHiJC~6chl< z<7o`XWC%pDFTkTpvRX=nIHZ_KoE>VD@!r>0Q>*nncKul*IR~A2?B@Bt;$en}MRQor zV79^56$LGm-2Z)|qIXT8I;tI8^LBwNS?#TyTFonoc-NgR&MP0* z;?3Vblf@L2;}E8XLN3bA5{oq!WWrSl$qcgbq*c|d?z5VD>a-SZ%UM1CZ!zqU^=fwi z8;x6@o8e!~mxU>s?!55kuKU|fs|jNd)JW`Eh@c4u;fs!v{sI_cUbv}9H3dr&sAWvr zYUygbul82DN_{#NyyXVhN;~M-KnaFh*Gj~L3FG|;2(e6c2l#G|A*)oC}jiESCPC%Y0d@{~535Epb%oqd+c*Az71iH3wT2sqe zNc3oFwSE{cHC{@tlrT{v>-_!m7a?o&jkZel*#i|Lp3z*EL5mYIDBcmVA<`Qm6vfH` z=bwJ!OvbQ!nU%GB?#4CFC>f>V3(LdEi1xASpwZeIqx{Hw_FzTC@`C#|M35KB9uSui zM1!M*6m498!Gc)BJm0hSSJfg@SFNRCX3w7D_VSRHZ^Z#)P0R0%e7lW3yVG#qW)m@J zg(HOfqYD#G9WKCwj;kP&Nd;rI0@ePiidTEw`Q9~&mY#QXFWa+wH){{-PF)s@RIM13 zWc;5;Adh{6bq4N_{m;qhe`rp5QtMO;_IDMxw`?Rj+FAz1;|z2np9|SAV6ntM6Z(V! z7KnXf(*!KM0MA2CRPDAy!c#|&eTnnDTHD+NhPrO3J7_JnVWv9a-Z|A6s9Md(Z`Rzx zDJWBfY!YOKn5;yv_5yn}QE8Be&i8AO>9j=P1@l1Y!h@1eL2ZOv4|f>(i7ED364L(j zHwbIL#w2hiMbQORux&$Its`?m1Sw+)pL7$gKUW2^J<6@Wa$>A z9D>+Lt`LgG;7ZG6$Qi*O1e!09$m41jsN^Fy`F@ zRG_dV>sWnQnLuXn{VUa4fBv@`Z}ohB8SZ@jHRa=u$Oqbg{iTTfW*psFaz0qC;EK*h z@SWojMs{o!M5;g~tM2Oi@oQ@NetRMA6JZ0Iu&}tHd`yeXEFJQjlVI!%7O?;0>rNo2 zkY3|c7Mu(*Jmae;*y7ygBt8F#L^>~`rRMSm;|(oliig&hk5=c^)qd~r1nzy3m$6tx z;Lad0Jeo+c=Yt(B7R<)T7LApD?6~COh_6g&O z7A+|2zik{K|KD7}KhND?aYtE*)X_EP?QTDY?`J@KDNU>xxm!S1hVVKiV?eJkt7l_* zFc@%oMggcr=WVM1RBE&yxnDBAv`6masy~i8kDpA8kAviCD<_()18QooezxA1+*-az zceUl|E}7n&r!rdB!(C}!=t(^Ou)1Xc8GsEM0L}ujjc}SrCEAdDUcT zZ$8DVeWs_T)^8?9TaK6~jn8jG0U_%{QIX0tQLB--arg4N3Pwg%slM)P3}%EpgQ^3@ zwcKc=+GI)^?OhznA9tFtf@?c;qBqblPd-i*rF+qAH?h3X9mNZ=eU zO)-yMwW0!p9k?y408kYQqco4>(nJ8yGp`P)92fOWF3=f8pl7S6IX+Owe_H+KYUu>5 zca(g+qvaF&>#oXoEp794jpC(z-FIR=X5xm>06Q{iAFvT(?~D=~mV+w^tyN$ow&^aV zzHi%(+oY~%_uBF!ztec%Uhsd%Dt%YI4?tIG(wey^>w#)^itcx)zPmU7?>tiY?8Vki z<}ig{ z|8L#Ft0;*2Ae9lTLQ~c$cH1?L+Hen7j3V_HL2TrK~OwQ zGC%}Pt;wtL%?_6D)3360ba`8~zMofl8slLkR!Ea<2G|Y%fQ*Of1kIFx$WB7fI65xy zNNQG~1=)eAq7$mnU=v|i()@z@2!@6$5yp7h%~^78;*5V!Fp1v(zs#`ClHt4Fc-b#< z__w`xG4zK!LuNa6JH}VSa|x}K{=tc=tEpYVQbkyzBrHX?g^hFiOx!2e?W%R?7EhMp%{*_vY4*0$aG5Y7BEvg?R>4uKmE z^DdB1F>J9h!k0k+BJw1Lxm?Ro9hl6(NcfJiUeB}a8bcD1dJ*0elh?urHIJGCQ6WH)_F+vRnBQiQWIO< zyzI%|ZrKxmWc>3kXD!ld6dysGay%=N>{9fy#Cjx90J6e4`~R1U{{PSB7L3HdqQ7G5 zv03^IY_{9HO25bK@^vbv0|t|xawzUt6w*% z>wE;?%_;7kC1$X=;;{>~@QV)4Lwjs5{FQ_T2k|>)(`bqXaDW7#Cz1(C_CbspEte<^ zj%aU(S{hn9l54B^tBeSHrP=e)rH`Gjr+~#ry7s4xHc(d!3GG-QzI~uR@l*(bBdRU% zX=1CDXn7zq^XaOcvmWfK>2AhTU2>=Bs_q&X_&@Bu2Y_7Fb^rg0kVew1KnNiuA+*w< zipumNA%rA^SU?ReU9e0Qi?)a@2!ScHcp1fx9XsCL8M&9Z$BF%q?Kti|J@GGb;uvF7 z?AVT5Y{w>X|9{SXWoBn)XJ#b~{QS$>Jl*&1o%hZ?x1aJotF4ptq(@Vqa`dJ8(n&}- z)ewrdZIgXq5KstbE>Jt=Nm`uY;tY!^%exmw8Zu=zOt~P5gpmO6f)xrpB-lzsLuCet z5G9qp4DmQ!!_1a=QZ8M?5=H7%BVWHjzn~=+Oj&VR{}*c=n)zk(&&-#ZN6a1OQsbw_ zKN{~e9x-k+V#a*^yZYz!H|QtyL;6O2miCnP5u}9u{ABWFZZ@3IQ3&I%B4H+Tgw3Hsk!%jlFu~z` zqX$$e5XG=#_v6wM&t|i1`S8j?@<>ohiBatv-A^eDL8DRdj08^}j}!o8gT&{=G+*2t zadPpE?vqlO`DFcgD-lc>d!Hb&UGX7G2Lb^kYr#y&H@cTnn0S+eNsT{}!EFcN&SW5k zVo4%EVtE?zjb5wh!i7AH*xS#ljn5Im08(fckuIWDMH}xMy+*!>kqW3^2)!s6#Ip!% zb|UDq9m%94xddFjno<&XnF#b*I2cA7OJqE3x(GQ-yMfOYqf`f_GMO+Nm^AZmROEoM z9GXI$p8yQXVKbbI`9`mz6fmlBKm+4Zan%PdIf}guAXvx{!|dW>0pI8zDTSFmV*Gd{ z06*Af;3~tUlYmwD&0t>R8@*EKl6aetpUBb;F!#mDBFD)AX&&AV*kk)fcT*~eIFIA(9u#!lBWkVsR zeTnynLsc^28@-%T&6YOb=yv&HlUe!V(aVg3mh!LbSXXzKnn%EERqo7P0sg0+$oQYh zfHrp-pElz9pXe9A0CWKPxy3eXJ@xI;=5L%@)&}uQ&37k5oEej040!OFi!q*4QHc|a zB_cr`;{a4!J9y-+-Qw)Ys-%+aS7Qsg z)O;ctW24NF4@bpC4Y5!Rh|C-=Ud$(eM#keuhX;oG2fGJt1MNxFxOvrt8oc>8P%^i5 zO1_57gbvAINdY5@&K@1PIH;kFjuN*!>Q4+F%^vT=YPcRHZeATqz9y8+X`Pae!QyO-kcHctH_qeCxL`7J zP{fvoxH80&A)GFbV{)2FvB$~uW|MvOh)~b#5b*eK*t&Ww3R>B^vSDa43)B%{Ot}TD zQ+66#*MPpmI{#m;nVtHR2n;Ttyr?(7%b!)8Z&iNLE}tgY@$T4|?HY~RcEUb$J_jg) z-vyNo!=@BoX(&6fcSX*RXC(kSJRM46jav@cBP^^Hd>R8cP zwA5zadYePfw)XoaK;9YrH;0f5*54VtqTbxpc_o>PbJnMjl-&m%Vb? zCzt(lIUtvVa=A_}hvd>Z>8IDrqZ{OMqg-y1%gu7RMJ~6>C z{MzC?YfLQPyKqOd63Oj2ka89x{fEZjgfxff%^W2pVgQ3yt~4Oe_n2NF2S# z^ncVp3!>1U=x@8vSxTqOaGN>*o>u=hp<``Znl-|D^q;_E9_% z-o}(NW`%e8wtmzzW`%e8mL#q4F5fi&(=%p;clmeo2cEJ0D!9ov%A7F$wQt%zeWAwr9+W@A5VCTb?m1zROq5Z+gZg zzKb#Uar0k1V^)Bdub5x-j7fkOWA0=6Ydm9CgqJUy|Lhr)2rtIme-k3D5HEixKeIx- z{H>I=LcIKq`R|@FE5yrROIa(#%U?-ZE5yrRN?8fRwdtSe#tYo zMkW8${JLjswMzbp`Lt(jl}f(He9AL+u}c22`J`ver;_hBpYV*WRLOUlU-OKuP|0_i zU-gW&tK>V($30`qRr2lTS3F}EspQ+t$2?=pRPwFTSQpyKFMGz8s^lMOd~J!9G*aDS&gD~n`m3+PQo%t&H zI(gYSD*0OZ@YyQ)8lh~SO1@gS)25QAs9y9*gi0H4Qqwge&k2KjT`ezi|4x}hMJJLA&JRbPz<<%R>6k_aF+ze z+*zVU22ln9-%?9NizFhQ5uvmo6_?4|upxg@aiLA#H7g=Ed3AuoB%+D$l4K@@F<~|o zB^)v~`b6YHZkb6F=o@h(H_=-1+FPXWcm*D^OJL`{+AH%*is!i$5;aY=aUBZ9In=kF zcnsj+0GdNw4$wXj@gfjJOcTHeKA1t0dioTq^M`;$m&rReoL^jA;5M&A-4t+ezI9Cn ze6`fI$UYmxdUe_*&bMw|-djA^B5qkgBZ9!x!()f$TTO%$1c@*(THDqEjRi=nt2= z6g2Fyw`o4+peCYn=gZE&H5An8nelkJkJ$4Pc76bd(3LPA96ZsR>hEb^nZ{JkEG}`0 zZ8m#`n@a2*BAtKh5PQg;CoOwN)uqE>)|tf?87msil1gFh^Ct=aLSP;uA){{+4UAvm zy~+H8L<&pb+EL!}ENQcA(lp+Q6#Z1by?B93Vr0{Oy-s_R z;D1~ohQDv;@(3o0G3 z?NHZ%3<=V-*z(aBfdp==iMaUzt5_B+GJuw{QJh2Zc1(y`3_X4>lm+E1nK0jHzby>H zodjeE-5~40tScjOjHTtg^|?1Xcq$n2g4U&`qJ_mFvf6E%4ISHBG2NdX~e8zDO5|y z*>UFZhtVwIS&Fl(ICG#43#1apD!W(+N^ti>Erj6@{{5&K5qd^4xfB|}l=&vRSQ5ol zJc%`&2t{#iNMHk<6Ra2PoI-wci(M?0#K9$lA`ZzVmif5^QI60vU`vO-F=V#c#TpyE z8-H#WL(hrMER2$$h@Px4Qd^d3Ky7$g()gBD4DBRHg#hqH7&#%XkthM*P?>?tM=R=v zRSW>F6ixwAjGf>>mgsuyqQU^02Jy9xXSKh!iy;9HVCIc>I10j|K)Hcwmjg`+t$HG; z*{zVp6fl4)64tQ_VmTE^;eQ|Gg@6$S;^v#Jx8?k}aL2H%K*Jc0`q2yq*LLG{65Y|%kA*9P$Ld679`ai2;C>${J5Pw!+G3b|I@dfCCD6~=Rg0rN( zMS%_iC74O1fc;AgV7>4<1cC<67SuT$PGowmmw^O}b{)b69U{k`lw43)xe{cEM)tn!Q~V>1ye0qtF!&$(kMy0|hyU+c{PQ!4?e03{Y?G(j z=82PkIul@=1){JU=YDaYPoRrVF@*47kq9?xnQ{KDS%)eEiTA`l5LLINx{vt)Zjda^t)5%9`a{*?SERW$;tC*3Xsv zyK)m2fES?<;C#jgv=Q6#TYEL%F6Kfe7?7-Ru+3z!=LpgrbAdz@r6!%+a$uDuc}jZg zo+5m^b}4e&2@f;elW9+7!Q<%Z*@#;}Z+9P}?#$u7IlJ#oO61Bd?S}{Zx{ndcqrDQO z+toX)b-&QQu3c;eZI4&G+KLbO1URMA8z=E2e}8eA%a2BTuYBZ2&375l{82ywfhkP{ zh@+MxKq$jG#U+QY83=q1ADn+{+OPJ^;=Am!XO9`y>!;>KRrRg$->(6iJEA{~UC(d# zZ=|hwvCHi}4ffi@d7tLHiHVl*X;B6)s&l4xRM!!Ij)efj*;tN)ki%u?-x_X<+KvcA z4g^5;-utGTTJ2=Kh?k)6s@KPogGAvV!~qIyu_}{d$uxbL2wiE6EpzRu;am=n7qz8^ zoFnY4SMo2r=?9BGclIDQ@s#Jm`|sC$oouH9tZf7{$wdW19jjsB_@ZKDkPw5^=KQd_ z2P44Yh|Qq#jMmxNDod<)wJU##dR$Q>PgS#$BV}$_6H>mTxYFgo!3G@A;J|^VHb+iR zaQ?075f!1OrsTna1NEno=9Sr4T;W!xq4eu!&9}FyX_Qk5=ifS&DQn6nNxAm!tzQEP zZb1O$f#iwym8ql^|7)gpm4-eqt3R&ap#38^r}4+BaJ^gchN~cl=x%JH{26T5WZ}b2 z0?Ar1!byywF37d`#X1#s{;jEaPrpdc6ud{d>vnfT#=4ftxRbL5#&jTIha&9pQt?m> zJ3DZ6LhO-%GK)#vwZ@x*VHrNvWZZdY-YBkh$p|#+({STRGRQZ9mL_TtM$J)h%CNQ- z!)B0;17N*M(7MKC)T83a5o|NoxKudjWu>><<90DEu=L_;D03X-%7hHaco#e%RY z6#y=mW4)DIC6{BXw%R46(Vl~j=i^+5_jWoC3v$T3u+_x7gY%r6&?Js@SYksoW=DNG zve}Wdi>ut#r_p44BEL-Y9d2p`*_04_a&_jJI&zo8hg+R(dDjN^JiA(3f-Hee^Yus8 z|90(&WoPqo$bq9RJcbn`NI6_7Yro_hBgKk6^1FWioj@2 zF`l4Crb+{vMa+Z z+MHCm7Z#FLKX!O&|M-roAKTotbGxc?ZGNiUC579`T~$F>#Ui()a9dSo#nQ95aF|SA z#V-|eY=Unkud=q2rfC`fGqu0a%zKR=8b|ae*a7@S!HCbB*&sLcnRna9ss1Xn5GK z94cixdV68WMwgCe4C%oHp1>BE;)9A3%4HC);ZhO-Y!g(*5YDs`BB1dOVA7y06VlTI zLpHdCG-Jq7Ht585j3#h}AdU&Ks0jo@gle#62rz=;AkdVM%Hdz8F9xiftu{~?!3egcxZfbI!~i^jbQl~}f-5*9P;5qJfv=}! zb@JTtC-WRrdbvj0i?tV9-k*RVaO74;a>2p36j-c?_||3bZC}Z+IDN;8A-fK{7AL5~ zlz@19s6!sF-6+vw5W@nEPt2NJ3JDk}jff-AbRZM1u7fM1D#s>ws$iQbI28~OfeJJ( zKBndEdQ3rjyco1PQ0$t3dr%~c0=*f{Aqoe^Cr7`*vkJ>+kO0YcG(RyhDN{FFXKvZdxCAb*i5s2MeOGLAO{k@Rm%E0Q z;hGLPi#q+aGE9X0rjz~ACwKMt3if5Y^WIG;0pc#fI~q+SLhvhbhr!=B44@`z2#|+S z>k*JH6^n4{_2a~xbzZz}DuS&Hn_z2LS=wE@lRLeik7=*0C3jsh=90Uu8M!Y9cm-KE zq3J@g3_gEAGUETwQjFgWQIDg!)bz-;#%CSg`ZVC_YKdK2jJm{%Ol`_ZT6p`Crrwg% zBi24irmOn_U(#MuOY6pB#HF=q$1UJ-inOJH&*pS#ZP;=DRQq5J!PfYH1O7k8+x7p^ zJG3{H2iOZBm0w-F%;M+rZ3~;W{o9&)@H+gwbc%UEJ$I)8*@m>&Y5BKlZ>wP>Gr%^N z(xxr{7AS4(MLa!98@Bsrw7;)M?xk)=Z8~ASA&D?9kxt>gh|4by#(-_I15Tx*@nAZE zUOwQE+u97G5{z2@8DM8d|OK|3{j6z3~qHXZn8ak6r+y zzKVqWn&K{ZXfP~R$i?xn_?1B&+SQ|LDPRo z`%n!#nXh)bq&98(_cui^aGJgqQm1bC_iOL3rSy{G4wurV^VR#BA}CCc(uVWZ7qrJ} z$z4~x+$Fc^eDxks7Ba{zIN5+SKzvoi7lc{O;Px8|6R9oao_AVV2pY~-@6p~n|qaTz@&SmFur2 zc5wam#FbosGjR=Vs81Z=YEIn1^{k1*TxU)sxq2pYTxU-lmGvUzclZf347Ue9$+@n){;innoHUla;2DQ3BDDBj6+ zV^QebT!fRRzbMoOiUVAOMWH!VJkB*-ypL<7_yE^vN&0WBB$UTXbZIkD68g845Ph3l zOYq#hv~&*FZKd;J z6ybVx3I3bclrH6ZZD~8#y``O8_my^Y-Cye9dY~jVJy<%#wX<{+*BeUG7B`me;CfRj z!}aD;H`iNBeOwQhq+Yj`q(--&lDc%An#uK!Q**f{Podi|Q>V~~{ za4UPjhFg`7XdkH|R>uEKEl`&KeTRPvxHf{4SA+=^-3ObNL zm8J-I9|H{q7XYMcY4kf$mn)Y|HCb61txQ&5(!NyF>P%MGxa2mStiFh_0`PM5HiZ8X z6Lz|0iv2VoZz*tnI8r-|YmM9nlhqfsFV+&fws^HmY}3i=3)l#y!385AUjmCE;(){= z7!qMoBq(Rt)=!hSQ%_c3(7sSh>&9Y-OKa1~>hGK46oDDYV9xQ%7ijLqIKdJijjrI$~ z8RFnz0L(TH-5KK6NZ`$A3RFM*d6K{-`bPUGl@0^XmkLI4H39D}6vz6FU@e^3vv|Q^ zO6?o%wSdqFa}JVn6reyHNTVr&WP}pAAeMUgzyZhCL#bd4G%GCBh~b7cHXwk+%pn{) zLmC-SBIx&x9;H+^MFe-kR)fsNm_rDFBnbRg-1flei$s9XyNgm`aJx7&2049&aWWAg z90k=0C{6||Ti(^JN(tI)2G0si1^r?xh&vgT1}?oPqHFjN|En0wEnE_H^72a9oyB zXvr{l=c|{#$i;M!1b26N_YeF#f-cQY&@KaVnnV6gg8Q!CBGayu{}tDbC-n^ zX-eTs0stRQIoWiMHA%G2*doG)Z~*t55T#O-iiL=~11dXOU81)|atPT#@rz=_7{ci* z2+&?q=n_X?WHH1xk%%FoL?{(!N5SYsN&`!Lqjyk><$)ECKq815$io;^9D!2wCfu|9 zS$N+?DOxW;Nb)GA3PCy%*!ws?b4A(*lvo;=z}qPm$faU_8Xt&gFa#qB?DGk<7LUe& zG-7?t_(pG|R0_W|mIEpPArfzow}!GYjI0UD!&%%ndYDp(JMl+DNQasoj}a!oL;`J1 zFe8f^4r{*ATPa1HTLl0Jgjg;lkeAGsz$bzW35H@I3@2`(R1$bV#sw`%SXZnWa3#Rq z3KN3>fRnV5Z}etL@ih@wMo}wc7(&QDf{Vuqt4mn#tf-89qc_RBa9@&`H=r}eqJT6f zn4+ay#E3{Aj;HApH_E%3OolT4XK8-U0>*cYJM@3muhu@!?UaA{ImPR(3GR~Z&6nJ# z!8Rg8ziT3Xo{Jt44XglZ<3 z1?LeEL)oVZfF*%#k)UU=Ms{0i3R2{89ZH_io`8~rty2PGAr{9e%$_+21&IQg!T=}C zY!M_N93wsM>KWR_{H-2ScwC2)uW4Vy;^u%w2?)(iH?Ch*TQuUo5~~GgLBQrif>ej2 z9sz&BE-2$FU{F$zkot6dRr@L*6+(_h;=<{rE;!ouVn8gD={IoA80>l(FT0WmP;>PYrO)0n;p2sVUSXG&2PuL ziO4%d*U3~E+l*+%o7}ojZF*-I_hW0L{YTSvC~lS)v_|`jJa=U z-(aPRqN|XHpyUSX8kdLgcA(g7vhJqF~;Z&n3q5x?zBj|vc9ZCjCx*&mal7H zm+>FRfZzO~`6QC^Pnz#Ve*OycVWjGJfckeiz5wk=;E`D)m;ZwCNu>2}G+u!W|Cn(H zlKsmKKl1)_3=J*7llm9X4ZN4L!YlNL^<(G}4uI?D*W2}T5P<(sds6#?_DSu%+8ec3 z@Im{ptpEzpCnf zk8}Sset)p7aAno~?yCDMocsTw{JyrruB!W;&i#Lre@$Cqhjaf7_gmTumpk`AtIG`F(ALb`ZDdDk=e!DFwGRJ-i{R;5${bEhvV+N$#U^4w$z|aBx7lCojKkh$o3P=CJ_ab zKLJce$hBlEFNQ5Hm29Ate@BIF@2|99O=qRx4K<5Its&$}yh~QrUpn*G77x2i=hQw1 zh@QLQ#m_k3BiRT5ai8&XzjE7E8pJ$TMkXTKKZvp~i$4jv zi!W-=Os9R_w}`j9&50=;{ikT*2a3129BH&MJduVYKTaY7K&-_n9;6vAVczhP(7l6Z3xB=hioKo2pp2Z({3Wm8;jYZJR|9|^jXtsqBEb7 zE-K#P_Sc3p651EtOrlF*7EW`B1l?Y6igy@-7yNn&@LHZvS2vdQc)b#r8HvCD0* zsa>B9!)h-BL@va2h=-6>f?tSKGDpk|!m1$A!r`Z^l$rLBD*F{yG?<|q&uxQUSiIeB zutwdNap%*14fcE*_o6fbZ$ohu+2HwPk&FUC83M@%;os>uSe^Cs*V?bu_}AO8I50kL zTu9>o?9~;vJN1>OU4MH1Mm{gV&FUl5HX@5DBB!NS59F2(M=v*XX|G_ zw|)1bV#e*eO(&bVNT>ij!`>Ek4H1t)`AQ@*sA+;I;DUlBcKUtS_M)52j=B2W{IX)& zrLfUtBcn^7L)2I>xw5Pf0tp9VBeA1UU8GT7Fj1nAK5Yu?5;#Yn1A(d53G{$7$2K~f z;-C*g9vT?5PLTv*j8MOzo+%3*r#%_k{(qA>=+Qkg;7vUx=leDM^S^)3ItTJQig#LF zVDXL>jpT0{@;7}+Q%zD*iT#{iV&!3Ka!!TJv98=rU!pJR=o`cx&34OcZ?H|w?=Bv( zDzS7|<4Ukk))zHZbm15%!pnNKsLE& zs^@SZ2F4PblnjQ%;Kqf~>&0+7!yEUsrwqqud-9N6pf7k%=Xf>#wYxRrt@_LO=ePei zazXLvdL>|3v~5`|QNpDW?N1Kc1KmgNbTu#) z9=DU8+mdEFr_2l?o;vhIw7Q?qI zFf8@Uc5x%^P2StxJKQV8l)=D8&MV$!bxwSp8uR8MShFe#x@Lf2dQntkIP(&D5mh&M zqpZJCFnr9}+^i?f0M&4V?7ggydjFDe9;LDB0ZmZ8MNGwa*HfObX zPgKd9icc5(> z1J!+~laMt(+Cji!D_j}Q#F=cbICT#QoFQ65{C!)(Gu*NTIvh3%W9HUCl!k z;>Ej49!iK8-Mfm1D#DBRVtFVLUUcupJX8T*ygqp-0bWo&@KD8f@m@rjm2nl{#k)+B zD!z;NLi2~7aTVXi%d0)(D!z+%sXSHjT}b}MGp^#hc$di2b9k*m^4Fem72n0XSe~l* zF5bmNXBk)VUAz~_Qx)HZd>8LR zd8*>Oco)ih&r%;gPoB=OlfUqcn<}|Lo*H(N_k#Wok!PDf^NgbvCOO;uAJ5oBcJjYH zV-MQNXFOvMsH7>;Z(gL5h9vJ-NnMin*~uSz#!g6b?yn{C%)NG!0>@SISMu~8JIT{w zmHegltyyD3B=xz!Jm?u4R1bflADuNepdS8$hj*)oKR16mYwVbM_;ViitA{@`|9RF} zpL+PSgR{nZRqB7X&Km1cssG;U89S;9K4bpaGj^Aq{E26*TP1%gPw%voJUyb4KhYlb zjODDP6v*013S?CBzobCgN=kv0ouoigC4VeW@34{@$u9fpe|g4kSIHkqf!nO46gX@@ z{gG$vR+apLaP}6J{Jtb_R>|*4@+Lb8zi(8@@5<8~RPsBLyj~^$Lz10#@`p114UB$_ zQ7-@ccLp37i4}XTMT#wQBRrJ+=KMw$DT#>z+8&mG1S}>laezfC9TPib#L4JX*yjun zU0bn$S8nyIvfNFwv%hf`H$J0BT3)~Hw>oPNw|m{)4L8@xM$1~rd;9Onw%6O?G+fBl zGGqa0V5k5-hNaioG;+MyW3g`Wt`!b0U)}Y+JAVk)`7r|xVz3m>A=D)j3)^$d$^ol1)HUr?Nz=-K06Ejpo3@AWTBr^ z#x9w}dTak*(u_|d{TDZ?7s%hpg5oiIH0@aCSZmeo5^ed#bcrj7!|sn@h#U2XfY(NT z3TQnxxLCNR({X}>M==uV?akKP_EqK3!zcS1bm|NBi&`E;_S>A+mD`HVFXmb&1DSGh8mSUg9 zl4ZM_&AR}E=v#mk!|EI5W|}Dj!yYVsFwFJ`us;W4D~3s}J=HmEshW7zH0b0tn0dG8 zTUut5^GSzQ)(lae608YA&X!Zoyy|!`kpNU4Bh&o=Lpcx1{Yfywt7jmH(hs!U znH(Cr{7!eWpEw6ei+t8HYbdJ9SgU!x=}Ad0Y}7PKPkox4V}%T2<^Y^|rQBF$?IoX= zcXJZ97yUyOqA?FvX_egDyI{@RgySU=p6YhT%abY(j`-oE}J73l)dd=`8{ zT7WONl7JOia>2*z@6FOWjGp6!6mY1W4*r|-o323B*l*m`EDXCGGZImW+6RYI)*xjN zQ|pyh+yeJelX1PiIOvY+2O5m)k?na|k8fz|tz*}z+!QU0>vG{1+s*kwC!*l+bKhXk zWqVbRe-lxg@ml?>{PVl?M`(@XmNXs3o6qiu^&H3h^RwxP_@ZHN62VmtH@HA7jJXgI z%lrW#ga8r36+2Ep%qCrVdgZQgat?b!IfoB*_hu`QNkLV~O=rR2Q?lQaPs(|u3YK!E zdizT2BU5ee@>`4d*xKhk%LW@vpfo$StW6#D?19KK<&2ivkyw#wFR^af22*J5w3*UV zBX<;st(k-nf7u2zNj|1#5)jFn_z>2qKvgr!zOJGQ?)JW=N;ri&^_YI?blTefYSolI zdAnwxo2<=R5b{G&~~&mI4cRH@$hAI#69`wt|O z;W%CvxDBH-!XqC6oLI}@poed9fPjD9N?YzUa%IPvoa1&HnFZ8_&Dl376U|EJ9~2-1 zEq4^_D_w#1c1PjuM&(4~C1|wv?ojGgl@t+}Q^8Lkot@)CpqL>p+g)}-y^d22lZn4$FGf2d@v1kOxYa&F(uob}N z8jswlwJc0^PGn*)XH~2iRnjLuq~FytC!9|@YG}2KR9|A7DGQRbWZ0)LOa6C2GoH{t zryV%+<$vVv;se&4y=K2F%B?r(^6T=%m(w3^>W`ki_ZX5NC3NZRuQ&MW7ML^!QL;ND zuwGAlSbw->{!aRsGhbT|MMl%vFGuR#eLcy6BSg)$PQq;QE7kn%sT1vlvFcW!*p*?! zESc`$9EllLmid(>U>l}d=NZv2az}LInQksTzmJY9kq5;k9$$XqOXFHf2vnS+b3p=e zrekM5qAg?eiYUhbNZi*lm+hG@SRT)|OaYF&_nw2`iw#A_+udfT##j0u2-P6|-q9+lg}Oj}ss;$u52%3*!1+jC(> zZ71zXhKmnc%f_m`&6W*(lk`WMf}K>($@MB@FJ0 z=CMztNUrd3%B8~^{}Ii2r{1rDZ`jh`NVH^Ht+l*y=#P9v!g%U$Os4!G@cPrl)ea?q zmWgHvmVw?oN}w6=E@GjfGq^0AXmch8Yg>8KvvJDuX4#|c*8lv;vCakLnDDmehr*^O)@2scf)BG>o^-r zpaOB-0l*BS@K`K@&dMRw;X=jyR-H8^-(I7?W?Fm`#!SsN)sE7m>+-G2Ah&hS9V+P- z=a%kRcBsLrB_GJ|fO8X|>V)FplmpvC2P1lV7UUT$17bw{2Ae3Y`Wy{D1>-7mD)^?9 zvd&(z!WPhZ3E$Nxro~IXQ^`tUt+FPS#;eOocT8If0ml%)4Q!)Gv<`nQbV#ND)3ciK zr(FK`@3+H&kt<7QxtkhiQLm@9A6Y62$ai7Zo5>}Kcasn_twc`Z#sig>!=nf|9t0E8 zId1G9n5yqqW|i0UPW?~yPfn|E%6lq1=OHC;u*FhB!!9XNaer-hU$)|Q-*9g#J5cf9 zx@6xG3b<3laei)fW0_Ljsi9(LP(6R{EzPiIffaj}HRhzU9)GL2gW~Fl^{+q59GVS8 z2qg`i56DYcO$T!+sfJZAXAD=(pp!Ez+4*|?kEg{>>rIsmtzzGqvUAXq2f1rh3kP6rZKudASh(v1i`w)0pyFI$>GN zq9;2fq2)KAN0#XogE5Tz*L1D1k)Q@$md|N*{A+)$8E@k9fAilXou%29wE$<5{K5vJ zo{?;R7oF!*O;I(a^QaZe=^#}r!=yZWljz77Cv6m+hj_d>dq?My6~uU3yM!@zPcogv zPuRcmkcw}-(gFCwFYX><>CxKBo)d$Z5-2OeEOF)T#gahH{F~-XtIsO>pM^f_F6RTX zyt9lC9nWU_#GMcqC~GIWlBzp3DR5X5rLeTZY_CQUGWLpt$#Qf!j6xaS|LDA zL+Ma1D4TtJ_%QMV2{etxBh6|Jw<+3na%SbM@DpR*v^Z?NX*w)!vIS60R>n?N~G05EEpIZ${bSSUJ_fj*qy>@DtSWfU^OZ zOMkOyv+-HVHL1?3sYR!8m+^3?7|Q2{`_f8Zkn2YCYX_J_kKm{e<}ew^`v*6*@9plZ z^ej}f1aBw@rBrr@@&jwq;3pQNF#Lg4HkJHha`4J~hvsDO&0?2ohw@ZRbI6)jh)Sup zGbAj%$d18ucenKFa*NqyG;XYs?WH+ZWBIl(Xw+CE>%eu?|2B!hBuQ`u!J-X-`YV>< zfUc*55{D5e>rfF3fx2Y^^NVrY= zISj0b06HCOuL`mpj@ofV9aauxlk}GpL)ew8cDGgyTGtv^%KmQ#us>$6QPS^w0pkDU zuP>crw{eH75U4jGwfxz%@xNmwO3MN_4IDU#&xv3#o(h4AP0ZwE921woQ2+IK&=2fN z4%XdZ*XGt~?dyyicUhra+q22^oz4=CkEclZT^m<1?i-emwWs-7^-*?7>1?ZFi*~Q- zu$9gAD%P7{M8%$J3Kc$htf$+xPP(?cBAPIhW_6ysU9qOx_SKnePj_$iG}@`}(GRt} z;;E0cw;z&kIl51^V^#0&76XNqDv1udUwXVVz7(+)ngP*+94yVV78T$A#*2zbOum|o zhC={nL_?`C*u1d_nC8(0`+zi9B*7pM;uR5f4|KS}bzKUOGM7W{Rurgdd%mTA)tRQG z2IY4#%MT?{0#=M=XY#cNTmI})n{AJ^d#N*D)l=@U4EyviC+V#qXA8i4BA5u_ESAm& zFhrAZ z;Fcs5pn=O@!v8i=)-9+r$d2ee6rS<7I}1oe(MW>NBK3SbFJYJyUm^2ryLI7 zN#f2=v;;8SVuT$94=V}yeHyTRU=WD*nNAP&?<3OqJ=rU=>F(ZS&jAV1J?P9a6+@$8 zxjMt-JNkE6h2~FV75a8E8i@ngn<9Qe7zs}lwM{M(js)?;LJJX3q=x#h?LXdN6{^Xt zp{vul#pr5v73z_X)mw#R{I_cdHR9ua-h7Ao`{q&eYIB{rz%-1f@a=!Q@lu0O97e!c zp#NC^YyD07%ZUwmtKOln)#rlf`+4o1+KY(>a?qL`xL$a2$!tvv5VB0u4s>+h$p(a7 z{DFb){(|7$8O$y^c|Msd)LX4jUde`8Hdkv;E|i}Uk!P2b|8S7QoemJ?ES}TYf^MH%$|OdyaRjPR`@e zu1O!hf?a0zQnyF9U)H|5fAz^W%I%(1?uIO5VxX$vMJK&N#iWAPB4Sa|zx3o>3T&)H zCKfB9r6=c1of}+wa`x1@fu$!sQ|I~@pPWVRItV*kQwKJ-F!Y{YzUp6kawd7J=ptup z7VE6A5Nx%Fv;6Wba((1#cCNzXQkfT>oI&0t6~F9pkaw&f&pT;Sz-lI$MDJN}(%``& z^)~e$wSB(mq~7>F7oF57u#rCKkm$57z9Z;4{1+7-YFuD(;Xw+lqV=6OzyQ?vT>VQ6 z50JO6BF}ld4&cc3b?=GgbY97&hrnPFyr_OkH z(IYRZ-dwCKo$qcg#4uhK&3X%`wYm6plE^#ZR18!}c90>&<8i_zVTKV3M8n8oz`1X- z3A6g4?CD$Bg8B4c>%X2Bqt2K~^|xRvN()^srJHi;=gBYu7^A@Z2NKyx1hyb1@Dp$+ z6!8-WDF}&tCvcvc`XpX8gVWI<4ooJN!pBmX^4qyivEcM)|xX zem9s0hlsfZsALEOKaj3C`bb!0!o$Qft&Z~Pbzj05&zn}u{PxEAhSFk}VU2pQ#jrWa zNGcx2whEaRwpN%8fp-=5BkM}0lVOe*;Z_+ot)6VmF-;}oGyXw;rS=bO!1IaHMb@Eg+17=- z8yxU~4I{oolDV>BkUkVYgE!)Vq+DbjK5f}j`MCO|znbw{D~T%Uud(GW;wWp`gUeei z<%hzq+?3y5T4oDawl^jo7#U-6)7XLPkWr8P$r-Ix;1BijnhIF&sjR|CqI99vhnH_% z(A$9j!})F0;d~4S8b>yiKCHA#wVl{`TtmO?S6f)bI`vWg52n?R)fe5dziZ>*(21UG zyV7m1lj-#WZM?w|HQS0g1OnNC?zHIUhO=e!?oIid zN-M06UqNfV69Mx(#I8=F9*^a+A(XKM{bQqrIt)tFX%Vdv$uopF9O+Eeq+NbkLoDw! zR+ottL<0qAV9(Qc52J>%a1J)KuRMVp8vpe7t!(diWTxPWIoJqd*ix?LrhK&2ZneYG zgxd~v>o!Q$RwfBa%+?)8JdnLJQG#^%2_Og@DtJFgSrggr!QH*bhE7z~t>S5&%B?h3 zPFXpWX<2z8kPe%&n;f;@ws!xf{PNOry9Y&F{bXIr_d@w{#F&9lC=Fzwmtx&He29MJc5f;@fhYvJ|^d`je#EnhmkTvH*DZfN-jSls9^i>HLoJY!& zGljknjM#?AAV$P!9hwiBwX*iA)R9X^m^4(%69U?bcA=qtrCe8T8kt+V*sA}s?TZ`M zA9b1$NJeFXAS$lJ0!?652aFit*O+XC{P8SNno*)2l6dWQ7?8^OtTLl@UIdIl%d25M zUf6`R%8r>OpFO2)UDS{r_rs2j!~zwl+4J z8Rf^VvtpyM@r+nuQPCnNtn>f(G~*ZgGurolSBJkV1E5m9ouN(s@ZI}cmu!Zu^u8F4|8 z&^i-Vx6XuwxD12<91R6C0i>t_NhP9UWsKV?0q@u{UC*K*YMV(+a2~eKgoKeeBPJ*k zT4aKZ|AX3l1poWHL;(F)^KZ>hnSXBnvH51RWWLON#5`g4nHlpIbHBOU+)6ai)#iof zd~>GpOXEkzH;u=Q|6}~6@loS_#@iGE_@l;)jJu5^#%;!R##P2;M#xxaEH}m7{we)~`n%C3PUyd{=kuW1exrfi}DcX3X-8DcmLd3;|d7cdoAGJ0t9V%uhqWg8COWq-fIN>Taci2?=@RzjSCPosp~xB3J2PI zwPXtpwC=r{pDP$>@6|JAdd3wDw6{a@1qNF8c95@7puHV4&hm^a6lm{NGmKf|f? z_gwE8S0K>dD`(8`j4Kdm?{4$!v&IDkTK8UYyJuWsKznz|O9ca3_wM4Q3If`@%Y4c+ zt{|YjJ0)Krpmpy~@)ZKKcc=NJXIvpbdv{2_AVBNh9n?txph?~48CUqv-peKXka~DI z+1FXAn?2(PNg3Yll6^ou+)nm>D|Og2zE5ReCfR${!^_CN)=J&v8NWtlZyrY>`Ntkk9v41*;iVr8$IK@RrXfx%bxKoRC3D<(=)zHB@;6Y&-hN2jL*`?0}Vmb$*rYm+Z~zp`YwcRtnZ_RN0#) zdxLtone0of6s%jXvNuWgI`wc9*=wy7tXre9*Gu+l^>95kTcsYZlZO|phwFIgQxDf_ zkE-*(cA?t;gZ_SD*u{dZ3@nj^wU1>3jy zlTM|H$Cr!^^l|B8~>o^vW*tFUooMKAclnvLjzx1I6HX+;A%7&280uFPSTVdRYgv9=r;dA# zy=PKK>uXb0k^TRAw<#Mg__F`+z^^8Z5gm%vl(=X6Q5Qx+;V>FktkH7h$ksR)plnps-sws=E!$o_wKG7$FzEuILXhe`p^PUM-i zKM>|*h#z|@oxsXMRoaRIR@vg^$E~wsx3T+-SYc7oA}6f<|2s5uf&Mk^9hIa1g_Rx& zmNwgB@jWY!aDbmGF7a@FDNWWzr%ka(4W)zONG#z`N0T9xV!05A;6cBiAopNzTD{0= zu1aK#noJiN!aipz`5OWs_Im25AMj5)>O1d*5TmQ*#&o~hj!B|xL5sPI!v4c#)@jpP ztN4|QATUI$j{SksCYNiXac#`CTRG^4!%_M-%u8qEK%wO#scejBoWZngd?PN2P7Pb* znsp>?nQ6Bgt(zyh6g_K9%XgPHT9d=_T@9^t?*@U!xSps3u}~rujuRRzlS>nW3C_jQ zxaN{M>^Q-;=)cxl-WK5fDwNw=ypTVV>j-GN5N!|WB!VtEOEZX=RF+G1Of7oBUFdM(Wu+#4l7&hhU#?K zaxXk;9BrBNEp z!ztD!;#GvRr`aI(?r?R>jdI*L{ya7co1L)Bw&t6i!DJBQ@-%TRBp6Nx1w|&OT%O`- zWOSiiEOnY}vv!iLb8XNVd_K7rD1}_EHQ(&?Ai7Nn%^>YW+t4^T;%7{6D4{Kh?jjJ@#ym|L604BXde|dmFcBg#^=_YVH}7Bkv>0 zU^It8Y#5JFoJrXG212oDBAJadfKVT&PkRj6!Ut;E(RgG!?XF}8r@gz_G%~vs zbGgwd3bEqGL&+#MgoK<2rU^Q`O$6Gs*iw2YFIO?Wg zAeLrx>qqwzM;b*$8tWjBE!_~NG0yhZO>EgxF5_g{W?R!dm%hw+S<6jR{-%2zvyB$z zK(G8noika>$NBt)rL8UXTN=@4d?J|+qqa;1qhN;-%OC`fIf7ZjT%o|nG&qqPP|>6+ z;O;ArQ8k&a48&n#`|5it`t2u-Pvqy9wz%{yYcS<1`aYhFq;m-@kWvBckMQ7#p;;pe z0|=%>*N$_Vt|6f*eHd7^R}%GcjLkWMTwP zi}?{A#gnOc5DOyE!qT!I4T|XKI=tGFh_VlL-&gh`ucU6uGHb0(mGUWaxz}m@jq!BL zU90NdQ!NU24)-Se2qI%q+CB)WA|Kkh`RLBgdv|W$vvYIjPTT(H8j1f`(5^Y7!9Nl& zZFh&Zb;@rvv`;ar0}O41C$U5}8pfX!XV(ZYEg_=yrPz>_htO#Z?dhFcPZ_6LW`CKi zXK!SW#7dXByt7WOjd(YXXg(G}ze1qHbQoL1fIl2aCBkB#lgw~ZN|%W|4c<-b{5o!o zKfkQoQrhOS&N?hLV%;m{&>sM-AFwb?r(qf0FqJ_>oXz1&oB&SwOjeZX%7`x!K%sd4W!Pq(5%Z=eWPY9Ty62U5 z*7!fA8K2VsL_2i`B#)jZfh^eLBTq()}PjgA7az?zGNyH1v@MlW#^VoqpwAR zn~VFw7z=TPMHGHUZ93Jl^?kJ{{wv6LjKMxT8w{(Te6zkyHfGO`uf)xxj zhCf39?bU z?K`t!oWHWvVfD{Ty5w}Pi=llziy=PaGd_nYMVM0n7NqGQeKi>hV`ohmcWh`fnVcUd z4tFcI6Cul?R<^RLpmRdCkNMVaphbzS0b$0!j+|Gz%Ia3DZeC`c8td2O{`^@~<)Z`- z6Nr}-yUQFQG?{&35q}(mQO?^bOo+qIIZRHBQ`e)ilv{~EVevGYnk7yN zmmL=VhjQPkmYsdb_>euf+A&peFIuU0!HbsdVqYQ)3ne+1JmiAiot=c2jk&3>0awSEd7h9xIIGVs_kR=C;hBT6o zcs7G1Ihn(FB%E=-erPCTOA4J%vt>(dW-V2ns1%C0oLy^CbxFrUdO0(&^H*-y*}ASP zs^%usG58dcbFcv969P37%5VS+CBnG`iq~Wk_`<%-mGm@mUL3rqzdKVQSgn(5Pq`L? zK-w~qDn~&zIuG>bFDqSRGw#r$-e!x$x05O0(b37Lf{}12lg#D_P?jPz0``}wG*Dmw zI$A?aW`27pS~F&ueU(L2UX9ys_2N+FyXCx!#o^oLocx~B)i#s6mLYOzyv%(Gw3=u# zEf%79B!-E-mcosM`UC)E!AdAnu{V`ET;Ixkq6#`x*|o7ZAJtWv!ZwYne98EhHU1Z9 z=33(h{Z-l*wFO#!Tj`KhyXAppPRz8ri#RaaW{@~rS!9fnNGcNtbrWFwKnB;DSR{@K zUMdw%_5*;4!RWvx4!P|$PimSY=XjsnBSAp|IKStkX3(DJ85n8eDE3J#MaQQxzqNFo zTY>8viJ_$en}Lx7hBy%j1o8AsF=1qADAx0201KoX79us|PNxFaK%g3~u$NDon;Vh8 zy>!qe|F&l2ujk|nxgggd$V#xrV)KaUbpXSuU<@CfXyA0nhhC=z9Im&o&Q(-ly}7j)tdR3`F``|=AGtF^Frep;|s>Sj29cX8*$@Y z{d@Z7iL7;>-l=cWJ=)XSN3{v`gjbiB6D#F=)MM;VB2Pt!!)Z#)&X7rAA&DA2yZczc_vl%aN}(3aVzHG7CBqrQXAliA#hyDC%0v@H&58LQok1xgnzyXOpQY%AG7oVH|-|GBx{skD8PsFbB@>EI5D&^8%naW9TH}u|zzaX5C5o9yKVH zL#mKSM_C^+4uD=nMi>g&BoN4ivT+}v zYx|Rt1g{9i6OkO7mjLQ@!WX7vc(BKb%E>79jXp#vK&aB7z^18uD1+jOC~6o)a-L73 zrUDAqH~Ju@{P-=Ssbc6P{CFi0;}gU6NHCj?Voe!}2YjOsPzsqLbfLv(BZB;k09nZt z&_Fmk=lnSSCVZnWk}rnwaR3`26ZR*lR+zallw+185?LyMtlT$xzq~6F^+!1N1lcZN zLxYYM69Eh<{6u)mp&9p$-Y4&ZS-d8Slr5P}@UehDf%-fg$+Gnch4|tLN(KF4oGaN6 z1q1XNOz|?Q2)nsp5~{FkiugwFrBpPKz|M&&Iu;8uans3Qd5B{pkvsjd45f}ssZcDA z?P!MZ?OAL`5%0%y9Kxbm)+7QbC4Hm!P>O9tI0sw<>{TJv*e;?d#p6CqpTykMH##h( zqUi`C69O`&`6=BegX9%9B#6WojmF@_5T%+eg1*r~N;O+)e4_)DYBr(!M(?InvpLf@ zdW=%d<{=sX`?a@g<}>*JJ!SjAt%j`5e%*)J>xz=1}o@;uH zUl~6(zNNhXK5u-)c(3tRAr}-^?PG@82i& z59sgG-=L4_zo$Q_59)X7x9QgbGkvKZ&{ykA_4)ct?U&k*v~OyUYyYJEC9}=@AaB-$ zczx;K&u;ZhSWaJ`ow3L>Ax>Y0_p>w3_e@w`U!T>lo;6{4eZ6n%tO@b@(!KBHN0!sq zpXhr$6XNt`c;7SQ{8k`%Wu!~0fAT7F-DBuVl6GQ4k@vA{DSj$elN&62b{zuqKC@%%EpZ@mOTnK(}+kDCADnOLBbcj>S3Oq{Ed-80VdOw3owJMjUXI7cOq z%n2Guk{8Ggb0ddF@#$dCLrHIm1rQ@l2R@a<*r}u#+Co1pak!|K=GK zz~)9Jab$hSPI^4!531x%GkE%do#g3@RPsjs=&bSkN$TF~$-hrMyx#nmS>q?v!%iOF zs~&d3rSan`c}Vi_QTd0+A65^q(_b@dd`LaKZnm}mU$2=vjED8d^!eKQ>UG_@&!Ix7VNYl7YdTXq8!|zitxN+J+;K=r#wDlbWH5-QP4&)aFyQV?k4!^QK`G!VheBG2l(;U#rpNS!K>&qgZ(|(EpWcK ze<-`Fr<;f>v={^0u>MhROIyX{ja_0aHk9p3tD^Juf7t_Ia%8bhnj58oHzto?K?EA> zEfwz)i>$8Xz(DeZ^}6KoE{Ub$-F-9I%6k@j(yERY=J($IzHaI!xaR%o?BL)bOb-WZ z-e_TqclBC@)mx8Q<-0`0GkC+wYk_7?EYfe})m?z4gCsuC(R-}x00ME|%~dhZu-Mn7 zsyrlxy1FUFJteHyl9)ZT_P*KLvPGVaickytyNdhwC_wP@eCtol)|M~wY_>`!2fCAe zL)AsCr-uU<-#Z&HY|kaC?DdCsR+Ss>8th7)yL`>@+1gSmC9S6_QdLgTJzE=%-ZNWU zx5%^AEx0$E92_3VR(BLB-_>j9U95Z74A0gUFRu7N4ZGzR7i%A0J5<313k<%R6a`9u z%f*4g*+7bWVyb3kF!!p`b}Op4CsG5mwf&1c{gppK=s2ima|;fh+v|{r)l|rNj}*5W zjp0!7kPa-ry6K|W-Lt_f_iU^9hTY%lQ)c(C8)OV720sZAymJYis*fot-Fwp?q*!0X=$&||U6iabk^!#;|Kjfq4jrk>| zTU{!*Hly-}rf25L4^*b7pt9V~1Ocd`?gsOQk;SE3EbCWxZTXFj$jdK;i=9nR>y)D%oxNU&z1~Bmo6F2O zt08k{!<>Ung%p(xsZ2j>%&B6;LG$40FhYf*5?8$Tt)u4Ih;JuwduKD8$aG&pD-`M&S&1#R50ssL@HF7o?>pP7bK>tqugZP zWUc?;e;qQm>M4b?^_)!s)BaFCP|8>w^>r+4c%;1%j`k;0X#PQGAO;|^+Z2-SL>5R- z;$Q?7Jiec`N1!#tBuC8ylet=zTaE*3^{9Tc-#%9j4)+T3riH|+;__B>nN5U_N?SxP z+`Fz3(Sw^Ix(7u9Uc0$C5C|#o_5x@GfEvVjfDmA4>Z4(XWN#&*)w4%+K9fdOv-g;- z#xb$RoV<}3zjCdt7$#CFYuIl*;#RDl0YrW-KpEzp$y^MR@3=n_%i!IeK;xH27lQ2< z3LdP!;3G6}>jiy8MwpKVjsn8URu0E+8H;?CIrJT*@JqsJ{A~cyNhnwnG9hz5c zn}qajO=*)et2Po=U+Aw6K_QR%usOV|zxP;j0Qhy=W?&PfXIm$IpsCW=dGWSJq+6NO zA$`Ccs3Bd(e@uHsGk*yB=NHURn(sB=XublyU%z>~x!1hZyu@5$&M|&w{D<*xAboxi zoX?_BFph)qd82Wq5e4@BeB&(rC;B(^FY2Gw|4e_g{z@=C?*`HHfPT5YS#L+9r=!n% zO8Y}K)%!Kwb?;h{TIoxBS#{D+$p0<;-o$NT-S9(u+ zob32E@0D#QXQ^9bwiyear=Q<;a;9@1<$h+{$+MjMNbo%EKif{uaPGt0f2QrE>D-67 z|Frj{q3-#5FnHcB?@8Uc4Fu2IJny8&t%2|gBOd=@eXyQ+X@5DFIIRDYfrQl?so3mjlPrX zRa>FgxxbJXyrQkpRh1uttW991uX>q{Uh=q=o(^5uTk;b2>#+bO=-I9D5;SGZFZ zrx`BL-#=SwaKw4A$RrlzsdaWzcyNDP;a2Bf3vJ>2)V6>fI!XK~-tR=CNzpUM5M zw!)3v>(W8b^7_m_Xe->{+|S_tzP7^k&b^5p>j`W9f4OEJFkY|!r+%6C^2(w4T&MFJ zN`3BHySdpG;bDRcrvU{@r*YoE=sq5Z0ML&GpC3OU%vggJR#vSnT$48v?#iVcx>nLvwpztu;T#`Foela_E{lV+>Psy z`=I$?epBhFOKzwce;**uAx=CwK`Y4u(jCubapO-$umi%_3nQ!0vqG*V6sfoKdcb^u z9(W#{W$1 zJk8v1yiWg^9wwgedB8XfQ3rkY{)GouX_sK$jO@bt^Ee5zl@0j~yRc;DcnS)72Be&9 zHV_lsLo9-$kzg)>0US}vlS7qyGLh&gRf(%bt1eMhz%Xvu^_%>x(x64uqCJb75w$Z3 zz(p9#dSbwXDnT3-Ki+}pSHf7@VQ3bO<+^*a9HXz~pIUkpQ+vyEz3Mml9z4Cz8g5H_ zw>BI39ax8gznTJwJdHm$04|uW;7OQaD!?cf=iuIKZ&$i+=)iURckMoOsB7=;z5B1b zxog+{>-Tl;zV1-%WYD;L?Xc{Ssp^D9a0^q_Rrr6zu|vj-KZ0^2Nz^KK36W@2!t}-? zsc_&#pbg&;Osu9?K5dGF{g^iv%U-O3ej^?rmoa=Rb8s8?kUl z2SxxUPNbRs@^(C*2}f9ZKqF7@h_l=SO&!l3njBExtj31;t~N2|@HC78&z{HtXy$EX zNiPq@@-P$uA&<#_$fZ7H9kd68TBo5g{;Q3QdDT;s+LoTHI;fbW1#43b#`z>tb2M$J zh$Op>v5k=;m(Cs9v2CES8Tvva3v~a-|7Qh$I}iq!`;woV2e5E?(a@z`d27$Y)jA$h z?=RNNiuG0+WWK=vW8nw`I;jDWgD^_cS*$#SEt2XrHgV&Kv$Ak~Jar3;ntK!tI~64> zA^*Mmk~<48f9h4*zO^?R7q+pl7ra~;fI3VYVERQSP$4A0NrYPSH8#}z zQw5Uz2Gm=0*$NhiuhbS@c+<*uBg#%zTtNKo47m#Fq=>VNZKU<&SqUYRs47jc2)hN~ zj*9}SA6aVes4Oo2UE#ZX-AxcqR~m0q~!V-EHRM=9de-#q%g@ z;QSlsZ|N~)yVh{y5HMjHT4KD*3Q2^66%QjAaSn*9@%d-TM9o057=`qA+$IK>8&?}} z*LW%K`t`mm{tGyE-gS1b{+1TQ8y%CpK-H*wC-`cAAyu5A-$(d}ap8?EN1<2rT7;=c zHU$IA9F%}D#=y4!m7XT&8h-8eMJo$tu}j-N z=c*n?sAkE%0bbEh*J zz0$yp8}=2##elYA;b2@Qlg5|>J(+B@vM@@-2(*#HgDPvr%7st~C2uT3?o$e4dD(%o zupZ3P-~^83gLSIKc6I%0<_T^FgnZDF>bT+ zi85M}N{5ttgbcVC>^AIboEdPhJ(O=b{kb>PRpf0OHc0=UVZ28CfA28=-0bD>#rP}q z6knoi2AG<=)2m+_1f*pzxrTKRV@IAGJ=8ce39|F@=@>MJ>R#e6o2EWO{OxePeyo^ zzRAv8hKTX&*VkP2mxihEJ!fyIe7nhXDE+_7__h(;9Jt^7bq@YZ{1vV%UZ7jd@|)%@ zq{TFy9fpl1do5O?>@ngg5>hjav^m(r7)x@H!zJ*{WMj}rR4UT(|M=@#gk0+GsGA2= z^WVEygNDYz*43^}dKJD-I9h%0wZE{l_%dCVm3v#4g+9E;f*b?xay;Sbuy~ST$slEx zV&veg3B_ZSW%poq%xzOm3R8be$hVYORgs| zKEd)H`q5;X1Z+Gi3Ft3n4I)mTL>66TXZ6~oBvn@%7vlQsJ1K-yVGjQHoklPgxZQl% zc;_!?_b=R1oZ~bas|8q?8Nf1@+->0{K+`^h90oA}9Dq<@hr>|c!3qHUk2LdK&evW2 zJ-M>j(*tbtJ6Y&C??}0~D-+z^cW=q%dKKG3T?b!$cyV>#-dDUxmuq#lb-A*}k~=N6 zj7FOvii&+IO(HrWIZ^0~#9{XnM?@~?@40OX*6h}%CA;&^)+MX%=lhBmc3iam;4|6g z!T=YF;IbemAMz5o402IGgDgvM>Pyio{jP1%8sFNqX#4lKD_Z3T`oeQlE8pnN!yM?W(A27|zxTiqYixu7T<@*pwk}$JawI!3 zI7$`-)H>d`a)bH2J!X$&0SM;(?~j6x=@+l_(tW$O{#iTny~jo;d$R(tR`urnIKS_^ z6Fz@QyuhiYHcSVsnwOQG9OKy&yrc=0<;ZRPVusvsWuP@Q426)C&OXfku(wyQ|Bo8M zx$uA9XdL}T4FH9`#ml@gwB^3~R%6LgwAa~~#uz{I=&&L#oPZcAo6N)rO2reo3eab@ zfKR=KTsxb4U9{>h#!$!WH$@+)%|Zq^~^hq^Sp6KFwRXk9`_qdCRv*h zI*34Ol*gl(KuA6dJ0`FX(VB(bJK-9<&R?pUH{S3br$o*Q1)YvYBhKWc+hcQshX=={ zC1>o3Bet#cda9b8q_(I6W{a10R=`&pOUB?64C8teO2KF@nNI-AvF#{A$qYPJCY12- zL#sL{VAVYx6>x0KE#UCv(8Qq5E9k74c5$v(%$D=Vq_JeQE$fy0j@EWi%&L2uw9H0t zbJR&k8SnLtKyBZr^#4n7`8VMI8Vl?K-D{Y?YrfrlB{}M0VuL?4J_}3uc#{}G--%u* zhX_|Nz2u__RFdOtYwVbfGDQTgD*Vt#7A8Ho0sxSYEn@`8>w3xO1vE4(iGFeK2TmMLsyu;ulgn9p4V9U+`cL(Z8MF|bf3 ziK~(AS{l{wTsoTVJ8_vj(IQ@-0u)Ekk8C1T3RAf_wEJwZC1lQT&EqasuDH!${z}1S z2P`p_z;X-G6Owvt2&wu`Tq<|Pk>-Iqn6kp;2M7c@vMls{#G_aRC!rIY%UubDVIl=6 z8%oH9a5@!X-H#JAmmo|Zik-M5aKB3R_R$2uoE2dr%x7d3%^aB)Pka_O-WFNre)?QzEeAy@b0+aD^Qf_PQ`pN!~1F6i+w&(iwmvDVohJu`3}# zf5_KJ90E7ODh`JsF%24Y4E8pxKcBnWO`LlE|F{uc9N1+}8Xx~f&HvBuIfV_yD;S>f zvMy?qE0V;^`dHfX4r?!XSi z|7~ZGfeTAb`n~;~7P8`_@1&4rqujEPm0xpLH%oLO`wq5#ld@=giZ_WYJDZ*~E45HO zO6U?sVju|Y3?eM(R9kgC`kj@pf&0H%8-2=nszuQp-@huA^#7pow?=Sv;4S>;zwqB9 z%ZjTU&vLwHT~i%cGw^71xv_seJ2m#lz|`1r!Oei*9P}!PRkp<%(3NNKENfJyW{cZ?a2@0GiH?W1;fQn`Talx z3V@|~pYguJO~n=3tob)B-K$_o+Ne6Swle^{!%CBai0Bc@!SK05dybb02K6jKXaIdV z9HZJ*?;omaW~T;stWYiP(3qVC^DvN^oEYFWI5dKrROMIUmimn^7=PnBL7kuT`*j`t z-`z&wJLV%zyn3CF3CAPFwYrNf+~jq!`WI)K$1mJ#?7xyq5FPbA4El_faS>nyaU-ZL z+;*{4BCHzCjYLu!bu;(;3f+vaAsEvu?bhpR`>(uGUi#1|PNST20-C;awyhHcD#zPVcD|Y>0F{{1`UyQ+`S)DE|uJ#7|o0s!r7L_3yHsy@FDq7w1+(0bE-}owL&>p+XA)dk#ETM>U#gijlWz? z(&_(SMgJS3@~?K@)qe@^JRUEG^gCa=wMUC%>X>-#_T54~(>=X=V3_rlfL`^ubceakyzv$Z<-3z= zZ)RvTdtdM5$i$$;dS!m>%@2+Yj^CrA&T0<#erNG4W=tnsE7NMt)!vOv@r~zS79VP? zfdKuexa%1Md-qW!^$_Q=s#*7gabCy72AqIlyVU@6d(zmy1rAK2B{pdhL@v@cV#5+S zVDQe6ybiV{#2R9FPz0GASii0ZFp~cBGQm0(guKHi_L2pl)*#-B$gyy6c-YPj@?*dS zSS5^&jvV9&Pvjw|>iUnbFZS!#-V^QVYt_|9mm2#wTL7Ag2T1TJhu@uG46-~{h?9({ z_`4+Ac9uxmne?{71dyS@IU;^kP|+v1EePT8*#%Cc+xY zX(qgT<_r1iggr~f6x9l9zpn^Atq})yp_`P8P8b}Ym6;qr=CvZKu~K`o{y)#?G0?nR zZ~mq^53cVXW2~6a?O_2|rAFm{HGeAqKWgl6AGp~wHaI#qIC0E<;a&T~N%x$FiHN=Z zg_jiL`l<8N&0C>ZK`R8Gi%<{BH<07u4o6}qN7gS}t2B`;C@aF2yt6}guECph&Q@CB z%@%7Zcpcr&C|~U_ytEkW%p3-j9LknyB9BPyMhMy1A;e2bUX14>OwSn_nqJB@Fh{M5 z#mH9Xa8rL_b}_2$nV0mcr_tKVz@7nC1|Z!Ddc}|hgQ_C~`v75CfHBAcBO4x_9Fak& zrgkbPE7t5E7`Rp4TUoUXgWfsXUzk~pXoKi??x@kwpt!OBE-MlV=WO(RNYscY()=?@ zLZ=`(vTTeY>S$n&d&+0bU3cx0vD4ckX;Y3Ti(x$kEZ^RGFu=Q{N3!AQ;j zGm-NO-XHjJz%qYq4wC_RsHU&Kfd72BxQRwX;BMZg`3x=RSB93#EDd{+B#-SkzG#ud zPdo^LFk3D6KPEmqDLZNK)TT?-_yO5y{gI^@hBpnAC>!?d`-6z*As9NNHj! z$%;=QoB|66bSi0CfEL2;stRM8+2XsU&Ky1ef7A$0(EksZ&zceAqc320|GE6sgT<{* zTTZv{!e6y=VSptFl7>*Y1^W>JA8O-}ffyLgK=S4FO0%{PSI$;-;;)`9bQiC7TGF+P z+BWFl23rFkRgUQf4M<=+piuHDXlhuIheW_HjPGnfwg$QbU&E1aB&omXYt_Gfws2W- zi?(Iq?cuhzptqieA}5~9hjV1(GxL%A3d2Sw9YX=nB31a1vs4o?616cQv(Gu@Gpfa1 z?)Mn(z9coZSzFh0?aH>+Jx5KkG$6baC%uQXaPk|-+<^2Vk;x=ju4gBP#~hUuA6tNH zXZ=N=EzgN9S53zjR!Yz_k)|AtK!8T}6zYwTFaz%a4Fqt1VtBljEwvYGZMkw;MNer2Ocz*S(%@)N`PR<_h$tg=P-|D{IYFH!m|qxMrKX|eWiyto5< zg%7OFN{>nVDiY?YEM#<9nOn&SlC&^hC2Y~61ei@yjx4Wh7M|`Y-%9VQs|sDk>-1yi zRvh*X7nnSD1BlrygbwLEP_HbZBpdWq2uV#;tYEa^y{TnZ&1~VFt99X2_IDdLOcq7) zp3-AR%XKbhu&@mQdIhmaz=xbdCNQ#DWCTiEV6}4LHerLxbJOXGqUhDjt~_d}=jyW8 zc)>x_@Z5e@Lt(Ioq`0R@DgoJ;hfxq_1sfGnyn;~+wh`S`-2W;95`C&t?RQwCB|cXCZwd%AE2CVV=9vnsykX#KK!#bN?&3!p>9G z%TTZ2hS4M1d97V%5}wd;lTB+y+D+eo$8C32f?5+Ux_#oF-eHSahzgeI$jIW#_ZRmc zpI_XD#s}3%aSC&rx>u>k!mY;sl`4s|)+u0)tf53%NWB1Yytj3MAvU31+3`U<34 z^(tBYt#N`YYB-nCeT`nIOrx~d?`>S#>?FNqxL2OiyI4MvHL3T-I__+7LA0zM>Hm9> z*bM#z{m;Kp`k$W*ek}N&;M;<42|f-F@ZsQ4&_d^CS8z)(8C(-w6ucz(lAwV`@ZSf1 z04MO*0?!3L8Tdfp9f6`!0DT}Z8n6TV1AAZx-Vg`}mIp2mTomXw|I_?eb{Btce#87S zJcA!L-({YLDfoo>kU6F_K=+#0nOB-obESEOIR_lle;WU4{Mh)Orvd7=z3wR`06F_U z*}5UgM+PQ%V4G_Mkb@J*5O7XWwJ|xO++oK+ZmB-rqf?1R!VU&BwZ@lmO)H zT-UOhQ!f!6#M!yo-BY6f7?{1+Bskvu`$@nmHu`kml?gHgr!Z{m0oi z7;l|9CHjx%?A@GH@{hB3%gLZRxr>uZ{c-j#V`}DSE$Jy6)E$u#~q#tKrD~C$@arQM`OS(^q^kZQ5b~#kqkF&RR^>v>T?Z?3EtzC<| zPbu-o*;jWh>OQ5!A7?M`>YaH?i9gO>#uJqIMfoG&L2s*{&-GOtd~lasbOIggV$b@Gy~dEKY7>hR*OE4oi*)ZrZSD>F}7>eh>R z=H2S(OQrLqrgkQ({)+*sh#TZ+vc(EQ`f7*Z^_{f zb@&abo9oo!?{!_;ed=0u_*D_Hy@o^crC&L(`_y)I^2>5^n>zU=Y}%?$eyMA&^#2*g z-NOIzi23{GDhs($Rp|6GV!IW2_u4gwM%i1sgtL)$TIfbG@tTO{-+1XGe#JaZjot{}6JDxbjIk zs~hzD3z6b3ZE)X~o-IwMIs)go!LDzMr6-=}uKsJ+Yt>g))Yr7G&&u3wE;geQcx_b8 zJBmBC_YTLe3(RQPL}07jf2{>y52S#st#afvL|EUYB1s~j|J}U*jQJwIEF0|jn$cSI!ekru=4DzdnJ)hAtV%l1OAWe^(&w-(qe0>6L*Iju1djEMK(v_;nWHj`l)?ZxMQrzqHlU5-k<3VHpomMJItPm$4 zc{+Ho1#Fnfi?3gtkvTkcBkbkHEv?*AgE^mNHCJ@}NKRI4yz@?ZT_d*0h!P}`;YWN} zRn1BTx$6osqj<9}1WxakmCOF%c8k@kl@%$WFuf;6xCE>W0Sbig$rZ_EGt={VSM0z2 zc07DHX+wy+wlicOX*sxJ;t`x$IrvB-fEUR2il=D*>=RSbkYmVR7fR);&e}`9SG{jv z;k@D=ZN{RjRL^TV(@-C`0wsl002MiC%}G`QpvV8AD`&A?1V)sL4#gt=-KZ@gp4xKWV8gK&{{~4)IdG6Tg|d*8=SVLC+X2@p$;?b4gX1(TaW>W& z;yYh&hs!kMh8TUIEFz5zR`Qb${vZBdJMg){73R<{9s93g6t)*{XMP}NFbBdpi5c)_ z>*oh%wZZ~|2A{IXw#&lA1>>E-N+IMV(F;oWFe{4`ly5d=KRh@#A(D1AlZ0HUipBAB z#;0Txr+|8uk)KII4g1xAI~Dn_4(uPX6w{A{BKr&dMMpt>uIjPP3o=MKp0RK{K~2Z- z2c0pS`$$SyqDg>^hGJO=;0P=p9Bft+eXXV}&lu0tmqp+`y-aTa1szbHO5N8n*(-{U z82ajK=cJ|TorO>qI0x0S*<&a*I#V7uJDGQJIop8!os5BZS*x7 zM|_{G(OO&h5y@+W7CxU4a+rLM4SgaPCSpuD2OlWuf!eR29J2Dt2c&lN6zdy@n&0G1 z#}$0Q9mbE$Kw)mt5jkJIyS}_$wXD5n|Eam)Ydjp<@k~NaXA4cYG9*`y>1EKDW=E+4M z(>s}rIYswByK>5V?6W-95p(Y3v7fP`#JPYh5T39@Nw|%OLZ)M3Iz&zwC}bkv#Wu4`Y~Peb5LkOoI)5?w;pqp3(Z6eq8jMT!+8cPFQsf&ZcI3Gb1g zKFj>SU%%pZ6Bc^_<5^O7bBs%DULb)W{1F2@0#^$Oy)iy)a;-;lP39}PQZvRsYdqU} zjORPPJ+9jSn{!3~^P7RI%y)D6-+!z*W)~f$(Um)l3s>r4rQQjyhZS>{@K!-v4}%r) zsxTUk@nk-oAas?FWXTLqLP#q8-wj(;|H~a_+^cF;>$|%j|LDD7;vE&yxoEPm9BMUe zm>aAZ9&Cm=;)_uTw=+OnVOofXiTBa5;3JqA01aLPJ@=akT(9|67*`ZGQN6?mLX-3RT@zMVk`2}w`9^wa@{>?qP9+b~Kff5=b zlrS)HXz;L-OjvR<&6VWb3%KIC$vQT8;d~^QEHC*;vgum#} zkbQJ0$JNVDuIB1mpGD49xj66SDlV?}T^#b51LmGw$u)mgE<4*(G-Fx-=_1i~shY;=NC+tIW zPA=i5xvFKTx2Kp3E;`xA*?Dv1tGXc^8q8gEa&gT`7!P_*E|TxhS9i)wCW<_Uo95z^ zy_{dDY}4bJyy)cR+%#{wluB1TrM1T>8o={`oZ5n}I60qt*3QF7ukze3 zp~nPoNRa*?gf|)V@AdrWh5IWE7Z2)P`@-GxTF#&a(xuExEh_{78(Qdc|N8Yc*WDr6omKmZGfudfP*oYM&KEUV!Vth=m5nEE zWSlC#lo)XMLZ>hxueNvCw#FyNILNY5R(VB*p<=$n0&k_jJr*1@pacNeB|_qrgPDk& zHJCl1MoL3P;}v+MO@W>3^#vX_JxVBlTJj52-bb!3+Pb`RamzSMq(*L;M^_J0-iz2{ zr*psrP!6<2-8u^m4%}@C{JWykm5kA~Y|m>?CA)79Jp%ViZ5jDl^P*~iEy5k7QvjOh z$J``CevByi*nR!IyBImgW@)Cq5dq}07A7IftrB^+&Rdp@4fRj?qJ&#O*UuUrmF}#T z&vK_r!RI!;@f9oANaJz;J2I3BqkC!x|7bn8YNn6%1GosaM-A>u{U0I@jyV zdc-{Dmeudld7%od_W!VE2lIj7L;q(xhcE13;qKxgU88FUoetfE;-g?vqig8P(HMzX z2v0!mkxW=5b7x|xez6Ql1H}%zHL4l429RrE{>}EbsbBYQeOqlc^IUU{Th0Eta?B>x zdfZ*Y$-v)e5G@QAM|Bw&-Qf)l4F|2lBFeZDx;psl@ZsZ1OG3zpA{Lp55WU5tIGqqp ztqe(39lCbO)A+Xf!mTt{x`nGu2oh*)wb+q68?JLMDLNX>os7`Sz#OMV$%Z|?Fyjd- z6Q>#^fvkHnc_hIzsks!(9NFbgEL&m$1Yq>ci##Z-h)^6eXodyhN=if;K6~F| zn=OayZ>hIziMd4jf0yw}BRD^hF!yori~K9xRurLOf;TJgclu3}u>qED6Ilx~PRe!^OYkh5{%v8f()Nn+&qbO>{l&syT zcZ`z7Et^)zvL(qLh{!K$)hI%PexlF7B?)q<+RlOTX$^W!=24z&#@!OR^Js?yo>d&{ za8M6YK7#$E_#uC6h2cxhB%{bOpv4-4+7-+TMBTN6`tY>M*JSSGxn{&IU)9{%aUt)Y zMj_X+pUI#-6wZPuNJ04lodpmp0?!~F5-ftUH7^ky?=)sEr=Qn1%XQ|uN+B!CE)a!x zGIi$KW2PTP!}qjS$)abZMz#S*VVy3r-JwHKYpNi zM8BxH(Vlb*gOA($u=oRP7Gf;b;D=!Yiu7O_2RV_KNHWWWjPQ~cR&&u7+Fq{+F6EMI zit@TR@jXiL0pkOErC@%?0c1F8F7-BgdgI6}fBz&r@y8Io3itP}>(%gq>mGm&o>h&| z0x(CjSyazfK}bz4;O!WR*|SSM?6}3CjvqbZ+wzXhQq|@@X3!q*9TsjAz-%ME;okeM zdq6Vk#a3;euH=kkhOd4Lhl+>2`i-`z-@+WJ-}lqEV`-F!VCIF`OA;kxp?DIdTDX%C zyaDOtzIw-%O?&W8sdD-&cd$~q?>FAB4fc6uI;mWL-F8~$TyfGXbE{5Jm}61q_rV!L zszsKBoHSIuz<83dMze-x#*Rg@tT4O+HY#(ai0};kT#9IE_!w@&>b@iW|2!DL(f|HB z>c8`hGyFpa0kbH=voZ*vV>X{6HV;#uZ?3YklBfy6bTXfeSOj-s&{^AQ*r7?`ijuq3 zENxTwuIj8!ITzqZ$<-C9S!|d`u5LRUR>JfRcThMHV#>_R{*zQ7!unC%1HzV*RRG)p zuc}Esb4ueodj5mHSJ1QB|ZybTCH8aC`Ak-4A{39YJ>k~I z_F?SDEgR1EC@^81DL^=(CQ{BX1{a_M%(Y2LqpO{^^ckO7A2&X(=2$i8EBxPi;{PiI z{ylJq`FV5wi|Yd{EGvn`Embmqt>KKjdhOw&WN7S)`|Su-@;I3LENV6hIz5Qo9CEHX zP*W<|E*h3$*J%a{B&?&-}9NV@pYHQmXT$%uLfjou7Y|0ZLf-noPekg(p^1yj?AR>r6g_!xWC}2dZh%YKO zRGqFoe)U=H|GU-*?hM>y{+aPJ<638Go8Es4q0;$IeQuh!ka7HC!#6Wd#5b@FUeBoZFlEEp| zPyChl()oAl%lbCsZPjJ1{;~e?lA}bsV4WUGopH1Q4CQ>IY>^Ov6b32Nc04Q#*BtpY zF*uc3L5OHwMiPjnC|<$b6TY!DXC5pZE}cidtscM&=j$a);}N_dOS)oPWs}7wLTli00#(voNaG|Fp znz!26b?uD(kQJj2Nqw^Oak4;Ae21M1G+%_w9npY~POm;4W9tq3kny3y(vqmxVi?4|YmwB6MJ3UP@4(RQ82WC=yjaJhCSGE@?+c#Q13s;95jYZf=jZ&B&hp;(g^Mdd=^CK6UL9A*K7Y* zSY7JTMeT{Up6?G*)Xx)Bv60=1r^)7Hq9?TxJP(ntF!XqYhImtKCZ&wNRj+%hIyF|_ z6F+Et-hB~`6CGtQ=())d+*wq*SeuJWvtlI4JdO&2rG&tQ;t9+ zxcdyt^Qsh6-FSQ_Yv-oQXaGFB@?NT}>}Qk^kz<+dAV-F*#s@6(Z^qur?^D73Dp&$nOSSI=lb4#L9jA2X%uK%yj38DG8 z&nIt5Ni!yGwi=AN_*Btl1NMLd8L^u%nm-Lw4RsyXU24p(CpXVBf8Bg9>v&Na)~2;` z)6t~QH$K5ygPh?IPB|K+05R|oA?3mrj1)2QDeSuES8A^AlDF>RhmB7Zq9qXp)|TAY z>g|aoABCHSELTwC@Uq$|b`yB5ptxfhj5i%ug!UKuC&r2;b#s+F08~v#9n7O2H9o4> z|KAk;zyBS0mH8Iqo9#RQFZ&&ZjU~|*(eX5^~~QR1n#!nl5LTF20qLz05+ zI?O#VMB>jJQ(hczCtN)iH@K+UtlA`3y46>WueNap_2LCnU+OO$ERoG5_AlMiv!hj0 zD$Jt*UuGf+A%sdwyr>{%a(J;I=goq*L8FjCEDUb7iS@NtDyBON=*s%q%VJ{u{j%}p zEr^^q@M(Fa&_0yWLxOArh^9&=9z?aEmb+wO-G8(sYNC{M9^6W;N-CWO{;~udQp6Ae zRprUPwpoV2tHxHv!sE-bq(Wd?=`EFWz7G2(<4Y4IQTXK1?R;Ku4(@+|?~ZoZ526_t@u*=L#<=i83|MZMR5}=YEk@G}I9!MLTFi^5S#HDN3q?lLAU2~y2_gqh-Uo^g``~Nm07!K?<-^Koa+w^-kL!Tpo zv~Fk59qr!Yw-B_6vN4FIqG%(c)NIEo2!x zxY~uSu-}#b_$}jGg%u@7L=dxG-+I$s&Nr#t-7~(&PMD89Tw1Jq1&#zJ^45>Ng5eW>O_{hw%{dp1rWu-&B3ld9GSmk6 ze_`Mr92;-&Z11$sfP2mR3%#X9+Jco^=d>JqWM2Ia%sY65g!DtU+`Ro%2qJPQ0GMnu z84%2BppylQnt^2K^BkXbmpU4DzGHl+a6zfpv$5sERBZe?F8fMBqF_N`54*{D$QGgmE0g$ROG6#KhRsW+;}ON6plB=%!VgSJg?C`W4`} z&W@E<=|}g3=e2$G>u7RWIB=OJ0eiyz60<^4qK4>AhuKD_Q+X1@2Ao_$C%vq4#(n7P zc<9RMJQTti5qP#qF=u~F+BZ7UI2eS>H3YwTl*F@|hgQy19!hX+g?{RsTer3?>J#`6 zQBSAKC0H|)L!Tq5pUrR>%G5kDHZX>VDltE&tZpiuME+Ez`|okjxi|F^`r{_v!V_l; zvrCSuNMdr<}{;R}(oWaD{_9OALX z$LE%o>2*oZ7Fm}xC0;pBcR1f%4geq~t&i|jD49-W@w`Hsgx`?x8%%Veggmr1CBI^h zGDQuVDj3lWL&1a0<+nLRG}=*D!8N&9u{FKp03e1e;0>d_PDlb6ge^IPf(=uTkuQ_R zxfX7*_YSI#RAg=51N1T0l4kBoTLfAk6;_I-zv7eS3CncW;nn-SPG7 z1=l8Vb}nACX@+q}_m(!l=2k=fPhI06O}1^EVcgz*Rh!?jb!4voXSVAL8#c@^Zt9Nv zekDt!nZo2pRjH(W>R)?yY~{iZ&g%?hIoi5jOxV=)%Wfg+e!wk*{K$rMYYXg=$>F*m z*v?7$^0lcM#+_A_S#7?2*&b7GYLMIgg^-`nm*j^wC1)6Wy8)8OTT<`1`iHWl42;*A zu~p8>*S95R82h@n=(`RL3=SMt>D*FH<@BPq+-Ma1MXuQSfKB4Z*YHdb5ts0Q;VN;@2r@kf5|-`i=eG- zuJu*tw69Xoj)VT-WeB ztQE6kgNLYd_gmY%Gt&QOO8(Dlf-ge>{HJE#_?s6r2dEGziA)UprMX*{x1Ffo2m`2) z9Az?ibD+CIa{^>8OmUtlHPdsp;Fi}V#A`g zM!W&PP8hOLoPSncsOUqvD4gc7GBG10E#-I_&kj^7(X~J-+IQN0{2R^|URnz2=P%f~ zy6y9S#Uk-36o~;@lvNOkvXB)~CD3~(QS|}oWFHzhf}|2WMQUPp8-Z&_lgq9>zjC%P zt0anFyp;JnIO zZhQL`S9!2r{}cZ!1pXti(VQ?o-C6w4 zEQy?ou&Sr$Eu3qZ;y0`Johfqqi=cR6PXz^T29r^rh!Zm=@0*&lVWY|N|Ey+mqhmX^ zRWG)y&-%i#YN2Uag;+_XR4`)geVf`DF@XOL&2XT|Y;U1?#ElE3djc3z688-7g|w5$ zv%_sYYAAQxjdxavM^&fm>~`TJ^*~C>?ty{AwvwZ-7JqPiJG<{9t2s|#2%)Sz(QH|U z#u*FQFW`yJ!NwJG45=Cut8A~jQfq(J#pYkDFUMVX6;dTfv2ESxRqe`gC%y$XT1fg> zxHqD4-~)KJ+pt6zMFJ_Q@<+)hyh((rZQSZ>?`X_uNxhRT3dH>|JWLwfCUKG>$MxG#P`- z(@u~e70JecBEd3cqnn9#p=0mO%%Yu{+w{(QYY!d-t1PN#V(o@G?P?c%;-zEHN&Q1Cm;xk152jC zBU?l*=Hfv0Q_!H&?eNN~ZLicsy%o;cS|eHp zXDO?Urex}danUI5>O32UxL}NcuHs8hk_==MCe7rNgy^CKy>6qU$wEW9O`M6m=JX0@ z5rWqZCz2YbM@PYSUac*OXIHOwEUAaU==IJpscsqZ+(Ot3k~T?_Iq%N~QiR|v3+Y_) zpgrM^LsuUol1_>w?l(1CxaZwY)xoVRG&LEqeEA*6=((%b0m|N@jb1sr^};qr4-w7| z!-1QoV*z)Efgvg&f@l)4aWaw#e7a-Qxa#-rmUp9TsAqV^U+4^KZNDI%e5vTU8@3es zOPjUL%ZJ<(~P-PP}%%_-{3Eq%Y0gI+&HXtHTe9g02hJ)#t+~$7I;z+8nz9h<<5}!Z15P4FP4l?2ZvGmt`9g#D zQnwbp_g=mJf3@iUeLrxs`62UV#;bpk0{}bG9lG{bZ|zyori&l3*y8~g%mO&YXALt# z9^?fA5N!Jh9FXIt;@Xt~xu%=P@3wA43xlsW!xV=L4nHqEIu6YEG)gu8^cCLws4;L1c962&7teuII zu%}3C1KNg+r^MC?JV3OW0|^_Jpq~H%Tr;G}H?h#Y)ZW0!$-?<1N4IS0rXFbO)S%sL zs2qnwm=PNujto+-tg!7&+CoG;FL~sm<x*Z#C#4?|x@(P$+IDN9yR=OkMGdu^ z)(%-Dn~>u}GiMcogk(4Z0S3$$3D`+vBw345d)(Q-=KWQjcPBPtSZ;GVbV&REE-`|W z=zrc}{;s(a{m)AZmz6|IfnCYE8yC1^TKzjz^tTro1r}(cO-n)&WaZ)>W1fpaWS1n0 z8n)orRzs7xl&_f_8row`+ym2w%VnzGX44yLRxESP*O*U?l^l76x$AnGPixw^S3$!? zqfbO~tY*QWBAb|C5iYAID~|pJe#Rjte1E-pC%i%4yv5vKxV+>D8L@=k-LzTjr@j)b zu;{u(1iU3|GC*%|bf6!b1M(b(8H@rG)E}x{Lf4#j`kS)O(Up^x?yz-K5vaP;rn$qs zsqnIrBUUtbZCm>u60UQgjbR8>*oKHuIQw#_Z&6N9qi$(Mj>yKzx2ksk-KjyQQ`Pab2sE&Ho zRnKZOi7`8MpJUjZ-)3Y#2J3nRk8?C4a`K9jDTee5UReCVP_#s3RJuj)J{k?|wU^X9 zBOyr{l`cAVtT40Why<x#P7*p#mgHI{m3#WOcSB(?wH zk|WT-MuQ=x6@29)|se@h-B4uD1!;B_GZoqIyQEC_(9S6213laYmQFGcE zU*?*Zn=2kFiBb{+?xJ*i15VN;awPTR_d!D#3?(|XY)x_h(u2vSOr=K;*(3GOuRiNO z-gv7yuduEpiby=4?qN5r05iZ_xX3txC;;gkQ5-N4600I0+fcBf>cLNtn-0E^dQ}0M zMwL*1scKNM2PDUTjpH=cL!Uix$Qt84DGV~5Xzl~Xn@B+s{Uc0H;=^ldvNK0L1|LKu z4l$1f`8i2nEE+|>$%62k>}#Yz5}wJ|!1C(OQ~r6O=?&hh$eGiY<(cKMc;X)2<>#8O zH%o;%B~eMj+?6|INxPo@_cj~b8a`Ts77|D6|j%sgvO8vkhARn;q>$3H-VI9d}ILZh*ewV>Cd zeOMsKM$x*`YOMKsnQmh5v!lwu)hly+9U(qf-T@GqHXMFrzSG;X7>3$F@( zs5tB8bZ+3V!@=!RaeI#wTdJ>lm$2lOu$+_}sfq<#=C!rtAp(IW+--?IMK3uw8ca8a*=C(EBK^9R$GLuCT3A7$dxeSR= zP%4BHcL;}&rNzp5Xh?O;MSb=uD;%dB(|8+FF?%f`sVJIkDMmNm`JNw$2 z^f(JuBENXb$%_R_nqhV%8wXLDFe^#0?)22Gl5gI#+Zyy*c0Z`gA$Vm0X3iySbjdSzk{B^tN32YT1`Y!mK?rVWQ0Z!@<6Rv4 z>#5m2Ri?f6EUQ{q_hS2kwx*r5642~KSleguQA8kQ%d^v#7)}D>tQ>xS_p!dY&DWT< z+3vL}Q%;^`vK`R1)OS<+*Y+BVi4{--BRlEVDc~pU`_sf`=wxZu3W@Z<;S8_K67__p zZ?4fDRc5{BEDhYzep$6$f+Igpx#8a z-|(Bbe}6L*<%9^4%`B{Z;Xu?L5+9}L^&aHR1+D5i3dS6 zM1r(eh2DX`E-MZ3&RBB0U}g1wM0{AIV~TWNW)BwBt|~BFZGq?l$=xx66LL^-7Knxv z-DuIeu6m&tp?$gO1T2v2h1;;U(x%2_&;tBd?@e|GiQ88 z_&=7EM!l+D+p1^LY{x7j+lf5*4Mt3ncfe7?mXsx0gyCKCYP=fu4*XTEjhvJPQSep2yX=FD+v{KX9Lx!g_nzk8=xP8x-fu%F@%yfA7=MTGGeN;5uo18(a{df6kh7i z%p78-2K)!>0A#tSe?sddn;+D>SmK4_u|(dhMem?Nb;{z;|GEzh4Yf6MaY;z3wV5r) zQ{MU@E(o*@U`@@j0OddEXVQ3Swd@Ttgd$U(b>2a}nRQkU4z{&&Nl64Ew3Y4Jrr)F|IP^C6`*TNHu z-y}==7u09C8uQSL;oidu31J32cI}6LtzG5o;|H?Yc4kWdzrlE?5&TK;Z-d_telz&H z!DoXX3BEgcCio_N0uKf659Wh+1os5D2iFJJ1(yWp1z#2nf))Iqfgc3EgJ!_z10N6k zR^V3yZw)*icvWB`Fc`Qius3jBU{fFxSRS}MaADv)^JnHinLjlD)cgbUIrD#*?>FCW zK4m^>9ygDeL#AckhML%BxTsf|3(bqo^HCN1SL4UV_l!R>eg`z-hcM3Qp1Qls2n1&T zsB3xm)POqtVOOGi>MnKo*In`MsXNu-UvVP={YIzSljqPaS@~E7U!8n>zel*ShYhTh-xbyZXDQZc&HN8h_S3wO1W} z#`u%&shic|r;TU3r*2Y*pXyrMJ+((2ezI##_tcH*@PBlz?w-0q9X`{ws(Wg;I{bw3 zneM4w>hR-TE4!z5s>6>NpX#2vULAha_(b>A4t4kug;2sB1;{ z)HUkxgHk)&)!_$>XS%1hsl)dhAMKvnst(_0PIOOQtq$L7{J48+i#q%*^ZxFs&Fb(y z=40JcSE<9_l-jvc9ZpH@Y*L4(q;@u{!?#N9Y*2@9k=j|W4&N-blU9dslG;hB!#7Ip zB-P;?q;?YO@K>aE;_C4AQadqq_@vZMR2{xfYA2!&pOD%KtHZ~oc0%g#wNg9l)Zs~~ zoql!r8mXPN>hOfr&Kh<2nAFZ{b@-^%&MI~Ih}6zXb$DEAXN5W}NbM|Fhp(2}S*8wO zCAG6u9X>2ovP2!eQmUj+9X=#gvREBHC{?mZ9X=pc(yI=SNtG;AhexGKu26?Zq)Ha3 z!^2V~m#f1`sgn8Xa6+o&GIcmERWeTTp=9WR5x<>RK-Se+InU!B+%60BfVg;V<Cyx@>aE5BB9m-QP;(b0 z9y^RDF-|fUu4|T42#k>tCzueux9|??$A8zWRyCg*1*6bxa8-*0?E>p(EhS0-dcIoM z)L@paEUq7h4K$l2woA|n=MD-+BLB*QfE03o_T=q(W_kzp_BzhDDsvxxxS6r8or_Cj zo}De{)g8ux2g#7gfn>751jf>66hzoTfrv%RQ#goN1A69p2laNk;()$+^}z?5nW=8> zhp_B^&&rmy$*g)*AWc!Bazc=m)iha`DMI_adLsI1JcS*tQSh_ZElrOeZDyvoG+k0U zp?R@oB)9fYc$zNU`rrAh8_Hc(v#q)K_N%J0~aG*{S>g8;s!1 zfw!CgY;JmS*?-|3Us-Y}k?G&jrrm}9O?NTgfId24RRkmmN3l|-uZP+8#nTCBZ`g+9 zB3^xY2lW-_I+3au%+$min$@1WB@LAvr38#kw=#Aw#**p`Nf(j#R5FG0I+X-HisOXn z0!gI^;Y2%fLHPYoRXv=z?UT*y72i~^auoFguscG-Bo2km$yPSsgw2oRQB8rJ$mEH~ zi%0^1HHK2+QAGJ@s_Cd#uiinU3ifG_`g*(Zxbb*XlLseUi&vKpdltuASxi?lUIXd` zJ^^Ah79`%}nk2LMQy@XNiJ-u8knPBe;+I498~hsMHO&lmz5)YzY0@*dWeXN_9~BYx zw79Lq=?p1Mtoj-9#eYnc0S9t)I_8Q#tKVAUd+n^%{r?H!|NB+*-_0$?6EE8IUx<_( z$pKm>$q-H4j?UEnHn#IHxFrdN(h70p(dEO!CJ`fM2huIk(G*12uV_tIS041b%_>jp z3n_BNeynyx3flFj+j-rm+0-YA)uRxHk0%}jn~dxT;Ceb(6d+-?!~O)ZpDPgTf8nQ% z)6Hy#PLUx1FOi_;Wgd0Z4Y0cTJW5^TJB6b+3K3!!uAXcN(jzj?EcU9PQBnvTQi^m( zE*?*}*l%&sD7La#41Lh+O>GT5g`r^2$Wa7?38^`3Zm}eiSvV>1OxU4RhmAtuG&Ozc zlyRz=p}Iz+B}aImUF+RPjlLNK7!0Z~b^|wr(F_W@7@L2j(olxWqh!%xJJ?$Z*i^UP zHydwmX0D#R#(O2?qxk=47=uReI`IF0W-jLN=kr&HmmRwN1)F-B`$K4PcTztefRYEm z0~l_|pa49=ehXDhh|DMO8YK9{Gx%F?^KpYYt9S^7edkwXl>@ZiFQR06aM&Jp;tJd+ zFd*GO1SNzg*IUWO%MQVQCx*Y59S2T3;mKu|B*qYlqb|o0L2L9#;t}Bv?bPu4sEF}i zx;TmP zo5pXpvs*_@Vr7?@zm3t-Oy0?4&oVxY8#hO|3C=K3ga9Rom5~^hj->?O+-YssMNaTM zy|bOsUJNBxa(MjPwURrq`|aQhBVa*+PY^T#=Yx+g6HT#V4Z#IP`w>iEr*_xJQjE77 zZ*OO~vxL?2f5r%26L`J(E%S0C^Fnw3LZaO5HN)mRA*bU%3sX%z4z4UAQ+tX{5dlz$ zy3+_WhCqIV($lD!20;bGA>i$>=g;&kZ#!gt3ML~sHz6|y7)PH6A`%lgr(yVHol74^ z`DfZSMsKW*m1lT{w;Zyh_kRrHAR9$k*+N+)SK6_RD8L~5j8_6>x2(W)JFW40yFX@p ztYf$@?Je>it zvA^#3jo)uqDOG;EMA@On$NrWJPZ`j^Lgz<82Y6z?|SlLWrr)jU1O9T$?xDIOTc4+504oi4$d$@^E|9%f-gi$DJ3-Yopz!I z9zB9Mzthfe$G4X(JM{VOYFs-1b4&*0!iPZ)ftA2wd=ofU5-7=}<00q~rZs9c@SUNC z`CL20y>Tm1KHnR++V+3w@Z(|7{D>S8l}r)$&jT7`IUvJt7Kp#3^mJO~jVy;Azf;R~ z|KDx|w}SqC4lnffbLjttRM{bj=gqZrc}QRRE-nuUK+srApp+QTlcO6Whf~z*fR=)D zna-PQ;=B8<@!fVc;QH{cDmx7F*xu5Im&Nu!vDl(30IK-sZBoPlt0l598slmTG22h4 zpEq~q{fY4>?acSP^fr|p>UoOL(xqongm1I<1l$JN4H_R@^)Von&{-r|r-0{;hHRB5 z-Qm`XBDlD->is9wl5I;+@$juLJ9;w|prwaTdj2=S=RwmN2KAd4Nrr^Y|E1tH3Xn{hk)J%?Yq>`2kHYyD#V*DbOgqhUr{f%#+s8M5bs6Ow!uSZHBkozBkI zF`?G)_jTjzof@zE|7Ih&K5*RpiaEpBJiY#3*iv?A)G2&Rr=3jme+O8QycyUONqc6e zoMDY`MM#bl46mTLr}OGs`0oDB_`7x$Q02qhQg%4m+jXEp3h`rB#)2GT!2;<@A{~RN z8vQ|#`M@*rGY{IRCk~s8$WJWgc_G#tn5g#P>7Zb7TNCqkOe4{Ce%j&lgUQ} z1;ri(=n1<}{QV)7yxi#=)X=l{L*s{?6rjHlD?8dOo!I>YD6@$$;-tX+2(@{N?O~Wm zDTz<4zOr^~I=d`Q7h2=!`+@O;c6Mur-_>PDuBBbeKS+IlU&OI#C}cE)pNyb#$7q#c zmkV+Vh2(J59`Ah4cPBjs)UIwe-#5PB&iXq4-=(suj`M6Y0S~*1_!6BtVmZ1Qn@=@f)@_i=~+?60fm1>Jag=b4Dtp(2m ztm=4A;Dw2YGJPlF++~ZRD^XNdR1t(;B5WWKRY@d3cSG9}iS?a`aTl8}n}jg5et0JA zPDlnzZvdvi-y1z7rAd0wkUbhhcIM z1!$r;>;dc)bTw$9!Tynr_MHfGSBP9etY!6+fE)x3Ns!1Xb~z|@D7L}GiBMqDM>nax zlLO(lsg8Xo*75UEWXvf}9$gIl^*EHMYk=%HP5=?Jx9mI7&t0Ukv)F{F0J`mXHkkwr z9ijq3LjW};>#Fa>TJ9p_Cy{^_^J7U0Kv1lc-#v zrkEz9D31BbFmfg~o)f(KxxN!Cxr?$vXpoMRTmdRJoRWn<>@NLX0EjJx2N zBIB361~r?HN0N|mQ(qA9K|`3$T2|kQrSe-4Qt&-IjyQfvHII|NjBp!yW63Og5}L^p z?#d(DOS@;m6@pd5>bFiseO1RpQj-y>_vj^YjZPYVhCX(~a%OIK_XzWzs-OW6M( zQENsrR1!$?8ImMvJ7GfVQBeQ&8*{kUcz=FFYH458e(TbIgzo!QB z>hETHLn4K(2Wu6p@o1aZ%o?4z#~wQ}h_$Y9jh-dB&UqoxcYdYz+3Htn3W+dJNTju$ zGS_(*eLGA>Pipzd-%K zb9{s9;jQ1IRJG)O=>GqZ5!h%vROxEJn4?EFmgnnMMA~J`RusLFR`ky>!jS&N2woNv&Q%$J!<+qNYAqvzW9)$^y-fI|KG z=h1we=bdBw;n}TQkE)FRM>dx)>+t=_mgApT5aeUB_952-4%R3Uo~%eHN$Ms+-IzTw zx@%XXyjlPG2Jg@K2XjW-_vg6k&Uy4!mQC*s?s^_C(0SaszQA3r-=A`H%ZJndb4Fmj zk^6b|`bTaqFVO9TboZA1e5?2e{}p9RmPZhO1K-5^k2767J_$R=zB`{K96)>6HaeLZ zvRzMqRbQ{Z)}XzZH<)(Y_Tq~LoO_$mR!*|h#KKc z%YK6QtLP*7?yPh;f~R>b6mTy-^E!z4;q$TZroO&Qt!o z(`!T&I5C00JGIjP$gc7g`u#3~#-`OyEh#Jie`BkT(If=s^!1 z$uMJr_jUa8RsE@QzEMy5g!w67Pm+6;f53AyR9^2iD(|P3P$xm6pHIRA0EeD1Ll8hrLSY7CIBn-9Mx`K5 zaGkdVg>y4`Ri{_VoRV%+&U8&MNoboH#+z}E1d)0tbQ^oSQ>aWUObzfE8t-)98 zpRB&_rE1iCrRfV5Gvv40b^GdHm-*i`uQK@GfB#Lt1|Hi~UZPv~g6%Dr!zcS>6a2r? z0mvjtL6tBWpa+O{33S>7Gs9^(Afg$B@pL4?4IET2hO4hNYSn*k{>;~^n>fY&aS7?| zTD_v#*0#EBI{}G?)0j4|el2|O=-`N*b7L7R7Oz;`yPASkZePD%ZdtK-L+|31Tw1(x zab2Lq!x^D|d9}x#Rvn?CxTtW*a0Tzx_&R||jn}R>q>HTSmCn-3FS(sYm9Y})ao++p z%#TgngJ7mAaNVy}M$wvI7+1roN+=nzMqqk+Wd9% z-SBpN)cmCRInV&VXa14-$L61#e{KFP%pN~A|4$$g=nlLraB<+WKyP4KU=7?Kslb(i zZGr0pdjhuw4g@lRdjcb{gFFy;b>Kwcb%8epo(eo2cn2th55gbv>A)8PUk-dN@Xf%V z2L2-Oqrl&zMf4wm{|t5oX9Zs#yd-#eaB*-&us;}sgJg5?n&7VB&B0foR+?ULOvfUE#>pk5^Ai$6Qu~BuPLSYJXyMu&)1f=^7(ja2cJ)r@Z|(w zSGtYQCre;8g0C-S`TUg<*Q(nO5(`B*hZRJIL{%X08&tEGq;q&d~<$S)QyoS%;D2Mrc zXF0*=yUH8*e0O;>pYJJyGY!7CypzxOm2c+r{pDBi`GN9Xe15Pj_4c9iy?lP8EH(Dg z@?kzdR(^obPn?$4`poI``26JQm-6}P(_-gmPG8FBv!}(j&z@e)=jTo@USMm9U z(_+sTPp{+ixzkZTzjQju=Wm}DtA6LSSoP)8*YNqfr+4xBd#A;!-#@*N&##?6z~>*F zzMIdlpSJn@!_!ie-#9(O=eJIe^ZD)5@;1M7`jveC$r*T(gMWHvCZB(HMlAg9nG5;+ z-kD4I{PQ#NPQQQV3O@hhjMUo?&aC9~ug>)I`PXOSeE#svMm~RZW*eV>b4F_E$7gQh z^Zz*`_WbP`vFGp3kgF5?`!mwI{^yxtKL6>AywiU^^B|x9@-+0B!GC>PYU$seehHsH zdHUsi{`6^SSO5OB*zg}uFO>N|XoL*1f3y6j?cecr<>h+9gITfFa;|Vt(B=OxDgdZ= z3R#p$Jg}An5kZP3f=0+rPaXAXSRY$e+3^_?Ci_2DNRn2mqHH`7N}*enNP=%i z@eQ;M*=_=Ea3@0_{IE*HpKwSi|Moo;36YI1)~Q8seQiQ!>~ zvvg>+ulJtXfBZmsX=gjMxcHNQ219ZTND?SP07oJppCgeT>=H^)A!3g)Husffhkpsu zXrU!58UH_mgTLGCE?rD=Afz)8C!> zY*G9F8O9QWSvO)HH@?AP-CtpK*;Oaq+1D~FYb~VNEAXelO$x^>3FBlq1M)~ob^{qP z$n=1|OS!~_o4htFVn&|NxBfDccC3!TvDD?2nk&o|TgJx+4~}?ri2azmS|?*H?7-Y* zc&LGt#pr2Sl3o!}BrAb@Ocv^}ETgv=ueYaDa}}P&&&XgdGndtwyQaL#Gq+`yq15gY zcAY=wLquR@z&Fvq0BRf0r6a&<;m{?Yg3wYj9uL>Iu1*_QeI~0J zF(b7ti^0ZG_U>e`VIc%V4$^;PXbX3c^aBnKxh-O6rPLp^DwtT-m2Me_SYG_rtD~g zchVl#SirCmV*{d_0vwEddW_^?QAZKEmS`ekpL_k*vq+e0%ry<{btS|*Xuqov8j6al zL{wx>Q(4s1VY!H+OA-kKjb=0BJlUrhd=wPlgT z7G|mr+U7 z`$>I>Gp1%FDIx=LdKiL+yiE#wJ`+86iyNe^nkh5Yz+gunyAy-S;fS+!BF_ZTxjgv{ zz{GRtw7?OEf-t%{&u2PNFo^0lkuVc=2Cpecyf)Ex{)(X_C0Xx6P>vTkmKLc7G9bdJ zjG<3Nj?D9@;X2krGiJtW?bZGNAtQK0pltq)8Tmz`fD4hb$U*D=(=u;W`p-2MjgAR3 z6DDDr4|F5rS;(FcXoNb6DBSayj4J!&nkn=e^P1WkD}>9UAFZu+*T0R{l4||Cjev5R zj!xPU+1!#rLTuiQ%1TnW6ytUR zwe@5Of!#FeRvD7FA|x4P63?S6InmJS-oM%0TxW8BIq8|)c1F088K1U*L`#+}C&H&t z(<(LqFzxK<@RFUo$qg;O(!8?PV%`6b3IE?)&F`734gA5skUu6*5qj=$^4x>A4=d+9 z)fCB*YzBUe!5vMsEGmFPqVPPXA_pZ?{c`u1dupo+i$&)pr1lofCdQfJW^dz zLfB*$Mv%>juvUrX&;8{#%3B50d_$eZvGSFk#VwPwr3dY5o9gy_EcUsvs%v_exvS3Z zP~bm z(b?z1WzGNIO>XZ`%>_&!_nB`rpE185I4`g^@PFBR5BNB)^W1w1C@d+06a_*Q1W{O$ zVsG0E*hEnzMNt$>DF)ov_xd{)kfz z?JW^OU4~C6#$pM9G~8sM8G+&ox~Kl~Qgg44BSa!$0~R^NY*he&Ad`uJB9Fwozz#SZA7bgD5a2T8w<2f<|)mZf+Agh75tE1~o1 zL8lsxkcRexDG`G!$f5~agwTjMR5I{#886z^a$x;Hj1z`+NEk*zdQM6l77!Yepls>y zELMxr3Q?MuJmom(q+phU%L2qI3B$3NdDy8YSPf*65&oA5!K)~n8`2ZN4$Mi~v{_Kq z=rJ&bNU}G;0%4plEYvx)^eo`gfp{jU+s!L!D(FWcx)3?SQOKJF{tXQTNQGo364%G< zyP-VgNZL(;6$2h=mNt;?$i9_kjwKUDw^J>ViSuscH^V-L(GhrHzD6Jj?=NJ{F>{mZ zN4by%+&U^6oRC&JM4pTwYH)YKH7BunyL~gr)F6Ndb2b8nax_F+1K>)SV~~AaE|fD* z+3Wvl&AiKaPXCS`&`!UKW4rOKKm!$CcGl9a-K(1!WVJoamXD;;aJGtBhgJvy_{*0g zeJm9x!yB|mPKnRTwFcK``m4HJ&r17<{zx(LRXM>_%xY!a8%lt1wS&$?cubiom=jo7r9T%?LGIz+D%iC%su4}Is zi68LHoiEC@siDO7l~yD^ydzsHZ{+gr?n3IRv>f!z;&%^3KUlqz zvYXxN%I&$E?PnFi@sxxlD}#QBdzTd@PL3OiZmf803}1=dZdg<0`rohjS4%DH|MlAM zY5I2k0sXl4d;0r{@cEYh17jueJEx4FF@DwfV{@rFY`&xumGb|Wzl1qvlyEd`=PNK8 z32_25oeGRFYZ$EI5g`o-kvxoIo{O3vjKYI@VsLOcGjuX*jSVD@@+%Bpfp9`F#km1m zg5<9N%K&UsCPboQz?{6^TweY-Yuxzwd~>Z{ErHQMED#=$4XTe^3|iX+um+)EoUB-d zXA7OIdA!?<*W7Jj2=Dalo6LCmqZOF>fP|WAAFLE%{OBm_X|z%V`y}rOz=kaTfpj35 zg{BlY3Klfnia>nF2z5@I*UvXsmpw?HFsgqdZa!XplAF<>;aD!6gAy>1fDI%a$8^Y= zZ9&P0I*>GPxWQas_B#h;z=$NxleMS0p%>G;8K`{MQqJc44F45Ms)pv4;z1WvRD zjPQI-v|p^G%}R0@F&cc}Raxi#Gyy znv{9`#K}w!pJpHldvqF{8u%rX^t8DCZdw1Y(M|~d_k=N*9H4*W;5Gcqw_o19Lam== zIsbLnPa)ub4p21wd(4NBqD0VK$ZcW2AI^f8p0%>*(2mp9cFwpnyd;h(2dz3^Z>fJy ze-2UZYF(7Kf(Zk9i)hU}9Dq_fb1s24jzNsBLeF*{Y5QGjMN#MLiSkzct@#<3cR8YL zaPc%6w#r*lsSIBdv}?X?8l+Bib_iquN`eMD##bgnNWHys=+{ajr|Svw7X2*zmNb}g>4VE&bnfunCPxTnNLdi>>QUha23&lWdft?ui}FuueG z04)z3T=bei&WZtb$POt4R}bF{nq%^2REKr^ShZc&zEJN)FX@*U$om~(N;o17g_%fY z$Sux*x|INyI}(b=!%<+@0lbP~swW@47~EmIsA^?V=j(|wp-&*nzSc##h!+i{E?Ngo z!UBE|XH|v`XaTvxb*-F6XYPOT^k;JltF7xjw_<-Lw5EzBwJOyweiVQhg#&4R-a z&am0ef^f+8JOL_oQ559{tCd7f*AwKO`a2Qip4J6FJmgoR3pqjs{}9U4J`c=Wa)g7RJuoP{aU{52x7QLk)`YCutFt2J}^o=>xztA{yXgfswdEtK9#@r^1Y5gTV2qX zh5}8pqY4C>ZY&tO0-0=%VCOVc%~_bSpj5~Pi<(4T#1|!xbETd*llmls?w})13xn>m zSc6H?ia=!?!e5gMSTKl3GSG47AU;o9#j)?W*=oO+eW9K(m-Wl65(gY%T3E2&l}bVb z&v?&*osfv5{i1UMcb*ME(;(ARv2EKF81V3Zwlglb`wy(h&~j9Dd&;-1U|1ay_qooogR1Wp+&=*4}E4L>9@6J*`L>cK0p8RgN`t} zygT;K;c&qW1H@@A2`?nrrp(rG-w>EiF0{Ztxbt%{EWX|%Ru(j0cPaZh{palQ|A=ND zBl|9{zf1dfjSQ?;>o0%P<*fbIy}NpwhMUSZ;RRM|x}z|+VeVi#0wIQAQ}SiO4aN@z zAq~l@PFp+a0_6jz_Nrrpwl$+lTj&e=3rLq~UApI4B=I{&b4)qxZt19eq&P825Y7;D z#zI>A{FbD%4F;9cJ+D8X@4lRNrE3~VCT;g2w&Ey;V0goOl@d|~pl<^p4GTm8`(Xg{ zudeNs4WUxF59uF5xK!)HeUOxpFnKvZ-GkN|O%XyA!BLjRh?2IVxG=9)IJKRx6z+ri z2lJhmAGL+++2!V_HJlnhfW03$xkn9qR74GMHP zL3h5oPFpX!^yB)+k#4Yc>0ZR{jH6UMrm}8=UCAVr1+rOK@}R_puHovWt3ykszo@^+ zm^$i8=Q-d%#%?_gVhyfQBFJSf!laR5%T59uo5aXfPnLD!TtB9N4B?KnF5E}4+rkpc zD9WH>C|^E#U~Hq=cL@4DVGUQ=bh6p59Pl62KbpVsa?Ta5X@Z(el^-Ee0+Ke+zB738 zS#1O)8_aP+vl2NX@-kQZU2A3gi2jj$&t=P%t!YT0$oAn>&cXmhh$!YukP+j!>G34s zb_&M{6wDCxc9jiRZw>sg{$Uya_ds-L{-gPQ^H0ognqMPt{^RB^np5U;=1-DY|G1em z51ISS?d0CCH*Yn&%{it?cK%-*-!XpQ_`30B^7lVv{G9O);|<2sWcUxl8gRh4)7S(C zz;feeW1ex1{%@cJ{5iJ8--2Q2GvEmPf<6JGz%%-3kOorvefnZs3YA453JH?giwGmJUA+iv$wtX0LG`p0||YgBQ&{uSTEYE`^L|FUml zl~eqZZ(^k?Zqq;Kn^@r#Kku7Zu8OzoU-V5ZQ^l?N7km>-ogx)(RmI!nXG>IZixd|- z#n1XC7CFV2eG`6F+$@S zVxCic-ZycbDz0kVYMO6Mb5UX;!>%5jVj(M#Tlx&Sf19Vii@OZs-j;WY^Y+d6m?a+rEQ~cLQ}pw$^v?F;)CQ z+Zx}+K~?Ms zGphI(+RMI+X;u85_9@@Rlq&wOwiWjJzg5=%uNt@Nuh+h-ZM~xPKYz>R6Yl)hG#p;$ zx6hE=P8MYda|$j|5?^8&h!-H1z@?WZh$)r6%K6Q;k5#P>pV2>)UwC=Mm9S|vsYv)~ zvOFbZFa!&G4$j_48lEB;#sS>J2^$qwiL0A|T~k`+^7U!`)A^e(54!?34RjX)UrLGl z76W-aCuuEUXr@yE3_&>GA|YJYcvP-Vz@llbQofh;msrA%yYhK1VV_E+0)ZGofiR?z zkxc$90e$dvk&r_`K$rl=tCX*9Nc*SsPodQfx#D^1oREfQ@hU`#5F|oUZ80HYAzTv{ z;RI){T5qbCH10w#PBk}VvoB!OVkPxoot1XEqaxWS2siK z6Z$9Y@gLR9!^UTf8}%{mn;Q5d9)G;ksn*}=iv(1pMdyR-9IcC>64G|jYIsZ1U*f^^ z)oS^51NXnEe-ZIcwl3Zma5&*tis2c6Fvk*{4g6okU_r^2%;0s3TxFBjjne;u{)POa z%j2$iO#|FyxPRW0Wap~IYZ#LMdHwTDnq#hzo|ES1JUM<|p^#Ox`seh|<^7jOT>+cM z+e<5c){|c7ss(hn{Z%r4R{w0i_wwVej7>uVMaGv2_sK9x3UL&>O|sbmGQlVcLoj0> z?3}Az8yjY~y{x}1uCx<4uAPwm(SVlw)D_ydxY5Ln@Tz$-Ox7BZYMk` ztt0|s2aBQ|P~ifN9OQI`&7^TPH<;BPGyY}c5>TM0Aa1cUf2~mgC5_;8ULqUAw9?cm#~YH2}qhUtal*^_XoQmkRc-idNo$hz||^tB^=bMZ~rCzOA`M( zSN|;d|N3W*`;GI)`;6Z({+?a_7RmL|zhk~=%zRbzeSRF~m;XCtP#GQ=g`g44U^<24 zFOyCRB^rt2c!ratuY|(pkXjo$j;$Oq5f;I^OV>q420+k@Tr8!_%%aT={B{~8A z^-L%UM2Q7EJ#3BSq+=wHnfsiF!sKX?V-+L?g9j!hssdAWoCq17oizTysYYm9f&ed} zMkGj(psQexiXkgWq+TMd{gzz~;zpc)*xE_^LOa9?584QhNxW|OeuDawD&r-Uib9=7 z#1_d}XlCRI1xXqMksuc$hANr9!?_v8yd1%0#LZ^0o`rK6SRTcy9}A^%3LB3*)!-!{ zp_Ei3{QTJjaX!#FlK+KERE&Yf9nLdJsexij^i|Sva%>NPA(mts?C=muuCQyRA*jbJ zoCv_Tm>|1{$YIhvi5wtL3_;j$0};^#d%?2~TX8szdzeiJ5sPG<>2Gyz7KaTo z4LK4i%NYGI27+Qn;u(RJDR3iJ**D81Y03zcYM9TH!hjlw4iRo8_-N4{5_-)vE()dq*dpW{lc8kgvN5yU*8lI7{Qs{ToAr~}|L=Xp!y`X`QnTm1g@?Me3a;x0=e7CzNkC8{8NPQqj@HfQj4&rYAIKPlkh4|D=1vTr8WjM^xo({=-=GeSFC1VWr-?XGz^|Ioo~DRv?JHnPEWbU1*?n{UdSs*G$dai zE=Nel2$f-wpp_+)^1y6rJatexUrSH3MNwD$t7_yJpU!W;eBJ?3%wM};!*XezVgr>L z-)*4T#O4Ly!(@0vp&23@jZHOOJBD)#KYlQn-exEL>^M1`k+n2y!5u~zT#Z;|^;Ww2 zz^XNl$NHdu)k^iV2G=Uy#GJ3sp3cv@{1gqUlMQuXE)Ck?J-`CvLt__U3n-D7S&}da z&5C8C%p>@K7}G@5r4pwEQ)@upp!gOCMW-om*iw~)6<5spsp+RLKWTs6o()~|dg*m! zIn`6N5awb16w4~s{up_N0dg$J5){fQvJ^t{#R(RJXpY2@k+UiijAz-JNMB#s=@lgf z(BO{xDYC?eS0kf6n+#BdlN2{`Efy0pR@PHFnSG-K5Qvo>TW@**&L^kOv&bmdQpgtj?O zBpS1FfW;IqHX-j(fH}#y1j8j)d~oq!M}Xqt3TMhH&QYZ?w=B2m;EI*L$<{}Z%xqb*l>}mjVD}bCb-cYl>69G-s7$E7#?_CJk4zW}Rva)6r7ws3h9t;AAF` zmI!>=Vu1oF>0X5SCgRbeM8$urC98V=(iPiAhG84cjE}La@!OcOb}AB0rX!d@M;vZt zK}3-t>zXY9>Iq^&UQLc~jIAK*3|!Sw=|!W`1TCzHs$Rn-QS|@$+K)8tN4j6%fj{m! zC-Z*|Uc7V0&x6bTw;*tD0&Dw?plZLGng6Ag?mwfX^dqAGvn&Io665*BWF3OLnt&Nb zQ<8`y%QEj$I+?IqLn}L|$DLYi(x5RTY5<*%a9Z;E$i)`I zs|*TaWWcGFA(5Z_b|w+B&RE*xZ12&Y(a~a&WWrW_Mhgm*G zS2MnEONNhwU?yf-g5QY4l59aTucEvpY9`5W&dm~`ESWV)327!$H;IJ;tN8c`fXu!TZoYD+s2)*As!2)qHwj7u4RQLL5{Z2$)GF#h;JA}K-I@LZ$T673(+ zUT~^G0FId!zyry6=VVMY;5%@&x7R0WS1GdLRr!g}6pU4XuHiIA8lP-T~Q-v4JI6pEjm9B-j`L(n#lF zv}dhhxao+(Y$#eyh4N6W(sIkQv=8SOPR_E0TX4WzxEG+)BaV(OEa+$HB$y=-Y%BrBFK931ubG_bwBELbo?rL*6d)&2qzePMp=P}RFwi8ekXOs} zC!v4C*+!qV>{88ld|rD#KWozGG}TUTNj?Ox5R)g7WqA9@1_qObtS0cyq5;c72Vk=) z-K>!;6&Guy`H=RZd}Oj6Y1j$%-oM&QUE4k zz%A$9ZZ6#CT;(j%1H7DfDw{6C4i32Ok_w4UgrlQMKhB92xd6JGkSz!hZLM_U(>dSJ+o|>g3$Q zUO6SV((Ejw-oibcSqZboT;6uu$nY>FW!-INhVZ#hq|a4Oyc{ z18WL*ax%)vl~vzSB~&cS6u*%iu2?yzuv2cW8c=qkxg~`ioG5R;n(2Jm;P}$QcBj@n z=PC7SEneJRxPyAD)$Q%?+@Csq2b%-hV?kjX*LwM)#kSx}i}D+|xo|sIg6dZTwrh5D z*YOhr`)CvYs`0MERxU45mt|)yn`8fhgQu1hZsUBstmW$stHp&a)LH=Z$Wl$ko)))x z67<1091sBSTMC=0w3=JVXD-|AIo~n3tgy*>R;Sy{wbj@x_7*lu#j+Nty5IP+!iLsv zWv~B1&CD7fGYmaT_HR&i%|`#p&z-#9o_4#pcY7|MpCYd-2|!;O%X1vZhU762;~yrj zR^WtK`jSJz+9`;OC{U=R zDBD1BV}u4G+ET)d(Q&Hfu`fV3AlAo50)0~Z65U@(4fJbSc&##zVV9T~>zqf3k1B9ED zcMI^hbT*C`N}MWL62EdW963y1nWCz7=x`$$YihJ6>*uu3UC;5+w+`!HiCbVg&f09IgNyVae2Zy%xmpU)gpQgK@t0S?#l!&$^sO+wLvM z%Va*W#XyM$r~o7uHq;W^mnM`h!_GaFa>2F_9j+Cq)LdSIy{x^Qzio29Em+UCuBKDe z7(MON2u5UNj{P%xqF^=_66*pkCah?9ZOD%p9NT{U#Q51F7)Yt_^!1fpYBZuht$o_I zqx&Du_!ndFvljaYVK-K{@q-JZEPreKgX^qy%3SH+e}6GPT52&eFbYu0NWf8^+^E$C6hfG1X&Yud93uH z9J*bw1Xfr6v5TFs8nCWZhd`eOlgwANuQ=W`JE+C^{ENpIugixfZ?<1z!QS4c-E})J z@#Peqm5C7e8ek#GJtLzT8yL=OytM2O0Vx^9uI$V^;@GK~AImE+%o|AjW$nv521fx5 zv~2anrnZErR=w`JeD7qBBlWhJzIb=4ajV`u+3kqDwRx+G$X_7%E1D*tBMQ(7tR-N`fWM~WJUhzF)=t>Q->@&@8oxH{VOp97rtG-HtF_B1VA`KYfApYWu zk*I01BSD2H}Bp)1KGNKI2;Af1iKV zNB^sML)O)0&bZjWdZ*Vg{YHwdauTu~8aaWv7u3%ffn%Uu2(5fdTtJFA&~3vy7S^g7 z5@y5<>r5-er>dx=a#w!!g7yvV8~LS^OI@iwCzs!4vX{s%GC+VNqgSwJB?(;|!U2#e z6V_Er?M#{ey72}iTmJ4dt0x^U^R5G{n+ZCSk26+(o$gDcW&@Z^VxXr2pc#%JC=)gT zW+5!>xxt|!w{`8dtKO#8sZtub^#UWbU)O$T`q6cFEEPk@+L)eW_7lAnd1djxv2-CYY z3h}CA`>ZoAt7=q^OJy1;4odefcAa_=E!y8||C|p`u5<_KF0WVkbFm!)$<8Z;2;_{B zvjMI!iFa_fMbjayHB|z>qE|psK2;|~Nc(f`Z!mMLu*L2&)ut5mjqaZaqB2fwR*_u1ont*aZy zTN%c)-8&gD-vlHii!%%;lW>aAUDy?Hk`bN*X#puRVD;NQx!#DeuefhfU&LY$p?T|0 zG~d*|v%P4?9kq^+oMK9lECD~(H-)6Bnn-s3lBghSf`6lb1TrQmuJPldCUlkG$W?c~ z+2mg=O(Y%$Wi)Vqy4n5dI(UJvXoj=jcGkmVDd7y2r>|JKMv7|USh2ESjrijH$7G;n zT`d1ytoT0-{fMSd^Pm6vd#zf4h-imGxocBb(qo|N*O2Fv39_nU%MkFpM2ff*2shZf zN-hvEePgFnC+hY5;&}-MEv+GrgQ;pz>euMAo_%U^^(qyZ)_wo#X7k?b=jA&Yl|M=e z&MvrJu^3?{g#Qp*9!6gwIwAoq4fDD^RH`2DuE$OYUENAWy~>%trGFCRtz0OZf>p8; zuGZGC2Bm+osXBN%)(RV7sp#dd8l3ud`gOa8Gw=$+#oO|G@O3EPhSO}fc5?fC_~*&LjBgkzJJorX-ASZtiRQQ%!6`2-dh zY~1+RNSXF%FaFi9Ri_HkyUJHD5gp7rs=UehSNZR&-*S#V=Zd_))); z%jn$SCHQV_PowS>Jiz^mtNKaIJ4gJe{F!5Zx#~|19T^$rLC4j+N2cg-HZ__pzL)zv zwf?thU&;>IOPG%Yr=;cPQOt7>=(d4qmKerz)6}R%223lQV+IjEJR5SxKhj5Z$W&}kS9B4p+a+pWfc_GHhXXGHGOE45%={Q$Ltb#A$uPdqEI9iMU^5}g`IthfN(gSAubf8 zPAI%$E~9JB5>x&9UTaZR>(#Sb={M>Nr8%5eRqmIom_qIG|Hqm++t{T)rTy`1H~#w-!qtAUkT_8Ho}VzYlRl1SNkS-z$m1j8d3C?dfrFc?ziU+u z0!aOv8@S{3mHNv3os)e|2i!HcsR>!UWBM{esIqB1!6foXI(>-L_6Y6)lDo;g0W3B# zo;pUXsq1)mMU}|_PNdS+n%QrezO32o=P|kl33A*rS!5XB+5BCe;#HQWNXiFx9P0+z zL&9H#DV(S`m`q6qh6*&Ogmt~$_1;8Xta*{8`qE}E(onyUS2!`5us;VI*5;psKuvuK zN&BSeLkj?c0>%$gyl}oI#AF$k9O86RR;ZR{!v^(gUT%rLq}j`Pe5HC`3>p73w0CR9 zUm9ufIoDA9G5RCN!yyUp-qg8BfCQT4>gd4Z0Jsn(Jx=00Q!G;?>yu*@3`NP4OXflr z=2l|GYhCls`I2*fta7sldO%XYjR+Zs030LU9xrLwqe=i5IOYU7k^z&zn9Z)6*g{b8 z$Q{l`dFsJ>M!e$r6_WHiHeNDRuNoW8lrmszM2zYQqO%>w?*-esJsWH-PALM6NxVzM znDUrJK%QWq1)%~-bp+3(Q(}d4EOAw1ujSiW2_tq{(Rr7DS1}-EZ z_hWF>;+a6#L+_K^NOpbXTMDHMQMzN+c)fNjU8x#4e7-gMnrG%sZnTH@(g!=YDnmnk zASNw;fZ^Sd3Zr;J^aC3;IDv%Uvf9H2iKkA;s~GR)#sLS5sZNkZc`Yux3eKwWK-rfa zueNaN9eM}(EA_YS{v7TFaU%E^%aXKso!<#%@CU>pF&-e~a6Gui?_V2qjyH1bSGE9u z@ziEcsr~;o+A+!h|6L=gzg_z$4qltTeEZ}MM=9Rs-4PC@Kt~AU9gSt!GX#NwjPvk&tkX?IbFRvqGd@!4nDvExP=AnMVTV?jm|UU- znhSX_1ruh14Av}BFT%-3rY|0Z9B@|za3<1;_&IBIgt@t%gk_i1l-OhnJg7gAzizU~ zAH1`x$4jt#u!NF3D^cj=;wG}p*aEsk%n^(&OhvGLtB=}1w2F%&+_G%V7rjS6K>q($ zx9j7lZQfYhQ$g8iAr|;EWEBfXJ^92~EWmxqL`l=OA6s|vD7#eESm$aa+ph1C_5T_z zqM46@;XNPz&p+kB;}5U15SWqc*nOZYp0u$$SeW@M{c@(R0@i1qBYH1NB6EuUdsuRm z$-;mhHW0+fPY?v*e51;bqdt6fVpd9igLaZYBMj&(c&-=lT^%xkO)uo+DJGNV#CA zHqWC)PtzeFJ|ce#_IQf{p2gfq`aF{W2*98}1{}(fLTele>lhb2qJMJ5@;rjTx%>#hkkv2$K;(X+S1qZGj?gx zH1a?7SL$v$f1H~6B(Wu+c#vd93IJ)wg61k~2Q;`$I^l3Spoojd+}XLhk^HNO@Txvp z?1fdot*IwJuK!zO=9AO;>n9yX(*;|)Jm-LiA&n#A0k%Kz+@QIac?duQ3_@{GvDhMI z8!mqCg`!%9KB)rLYR3P=`lyV5!+fU(?*BXOR{gL4{#Oh9R}1{-wm@)syVet3?ejT_ z%H>(%eSHToVpyXkc6l`~MVGZ}3zKWrPZZUA{h6rjSE`nb|Gg6bTh9OS3GbAdVA)Qx|J0pz>JAAlP672_r2d60tM30^?nIBg6W zDdRq4x3SfT8LJJy(M4X-wEhqJU+Djj{tXyLKM&c>2lPq(t@;K13H^j_=@039^*h*M zuhW-c*6aY+_g}yv{0_N@U)R2@y;O`!_D$GS58rEhsC`1H9`rfiYxhmqOb_2_d(byw zGd+B#?E&9}&Ghi?w)=e(Hq*l&x83KPu$dmd)wZjBLYN-(Ip5+2is)g^x6BXvCKS=b zod40b-#0NP6bTgf`6d+6!<=u*Sw-|fk+X{EVa_+?tRi}#$XP}7Fz0vWtRi}#$XP}7 zFz0vL?)6P5q6dmpP(%+Dsi24+=KQvtRYVUIIje{s=KPkNRYVUIIje{s=KOa#tB4*b za#j&N%=t|@tB4*ba#j&N%=x;UeN?^B*X8VhD*lF?eZ(np_OL4cdfP$Y#KWriwYCGk zi9@RRYi<3$iHB72SLJ69I>mkM6Aw_-=e&P|Z{mJ+^8IaleG~Vo;(Ocf@lD*Tia*=7 z$2W0M72n-q<(t^+6nFV1?s1BD`X=_+ zMg1GTiMyS%JAD(oRq^d@JA4y&sp8w(cC=6IqNvY#j%VGeN^haGQ=bPA}D!x&B zoo`~hD*mMW{0>#TAV1%xs{RB&x?Po?rLy~0d-YnK+Rmn`*L};0!T@k44xXam<|mU;zv-L&#(m4D*4UwBpU;}Xu_$q^Gm{MZ!)B;-`k43FBR%SpjG+LFm<_8`U-#QHtfY6E~@xrIO z?LAWitW7osX9U4Fi&azLg89sBQNYw^LoH}}NsK!QBDS%%Wvu$kCaQh?3uFvCKa{PE zFhn^CWA-V@NziE)Jd))?A;0D5*3=D~V``vu5X5Wz-I4maJ5 zI@cSE6w~`;{Lhf}{~_a}tkb#TT3eh0ew_Zz$0mh#o90`4dV$wyT0_tcT@g^^7`{9( zKHyGM#B-o^604tOJ~~SBG>H)d$F1XH;;|LWhF!BcmfHPqZdySyc}yS4`XEAN=nf#&a|ou@qY%+7aBVhtY!(#x-Syv==?JqoJUN_Ck z^nfjM3oFywRGL5z3y4+-@IoMy#DT(LHjRSY3UWm_g}`Hj;7X2Pk=S*ANL+%Rg#QH}QPC=X4V#un@2+;#~!h6_PJPd_v&=VDwMGxWbm8 ze5_sZRMYgw9-kvRo!>J#V86&>4G!z7M3?zX7S?gA|++x$TpH&)nBp{>7p5^{P1Pvf<%h`ek z0H-L6DVuwO@K9nh;7z81{U$$%cq@R2NFh6Ma$smAl^r-qaEg(1DGO5kJ8#7~w z5F$+K ze%D-9z)=vC2p$FN zT8wMoytzz@W&YCX97sfD_>^4*Po?5$Y)$!9_lx-@H>>uO_+~>D|Gj>gdL+5B_#6U+ zEX)5e@vi0f8WwLy~?-WZle$m?i| zuoVLbiP*`^k_$Vi1;}uM;GH-CYg|hPNVWnAAGSX$4NqJmxa7iisg;I+EuFwpo`iu+ zva!-ZC{EC50cs-+bIFA}s0Aq#ux-%d<*>2Aq5^Fo^)fLa3m~pYC2zX0&DdnmoCD(y zbh=8a6`b=W7j9R#fYZq$Cy!tq;X8p@f%Jx?*h?g&JGZle~Ad9otl(g|nCaLkgufhh?RO_)4j`$Fg~)FOomeB~^Dt7J4H zp?}#dU}IqHK~N9y9F4h|T4`8SphbzMWtz(ZDjLN~VsjG)6R~Ju$%ReSVoS*$9?dZg zNk@|Yljf#^5hFaFm`9gf*hno}m85n;HQ_JJrE?Nwok*eb5f=v$c9>clq*f*lAtD?! zK|Vb*E*m+J6K%lqeLXuiuGq!F2 zd!O+Cebi{v_iOK~8qGfrhXfoB+w=75?Mn$)P~nrctCUh)yB@$+PK+e9xv)&JZ{%x% zP#a*)!dnIRWf-ciJ*g8L{kyHRYa}tonUz&!1nWh^YgLydDzTE2#PD@JEN-de$O_fd z()+dKhDO?q3XYto|DNZ^mVA$KYuga(Cc6w-#Ycd?>MK88dF1FeXnw%{kq)0@XG}0Wx%kXCDdIWP(Nrc2 ze!6%bd7RJ~SlI(|M7!2~zT>8>tlXfk!Lz4{+&*T@+V$WYZc+IzS+*h~@BwAp(+hj3A$*yL!00;F2I z{Fkr+i}lc{G77}e`5pK#b+xD2dsO^yQai7iKQRB){B85gaD2VTe9nB<95pj$zq!>6 z67kb%n#K=}KQsP^@!yE``9VK?%UH_c^g8pv( z&HB^&2uvY+^)32(y;q;BO#`#_C)#gmUxb6_-P)UYB!3-+JK71&V63lG@lSI6(T+l2@%RGAAMPk5i^o5~@$(&pMDh6b9DlH*5HB7- z%keLE6k^5WXE=U;M_Vt`*sczP&f$5k zzN@1UaDHq)!0|*!VSUB%?7}*Atj{#>Z(o$_D6B1BzArT2nA=fU;~uxGGr@wmUeQ~&nt!ma8U@%Fd( z1!fnP6c6_qH}=jhEG{1IHE+CSc41NR@SgS=CubM@#lt=AGY-x!^cD~AZlBRVyKqbK zaCiHR?XwFDi-&g^H|*^w+^h~Ew%)aAp1!}M(8Do;&NT1TADD6L?7~gO>USD)*j;|u zQMj@A>z&L<=jId^s9$rp9mW^>wb#!n+)zBRT~0hZyUAxAmBN zW*0i;`b_SyHLgF{QMg`RN1WS?&-9OX6y_C=w{Sc*yKtRU7jZWm{iCxBbBl+YX7@kb zQJA9+x!K0heC-V#g^uF!2E_fnj>2q?)ywuVqSW}Gp@lVbJqSSW*Zzj0*Izz9Ic86C zog+(n_cp@wwO3k{Dpx1O91K%l|6Rc40!+n&=Aw)q@J}WE7oI~;40SN+C{dn zulxssckBYzdi=60lfgHGtekGpc;?3Xk!v-W&Om2{ZCa|L< z0zt)huIN)dMsr`EUG<7q#BA2y|8LjKRmMU6dDj2!S24bUxE30C_Pm{$Zf$p?Nl|Se z=W9O=T`F)1BvR*uM3>k`lCvTah-65*B#$f-l3CeCe{>VIYy^wyg^MY$Sk-g{3J4hwVC%Z$V~_DxXIp-&K`h%aFJN{`Mlx8fF~!CK zN5={Q9jZl)lDlNN%rq^(RRvqkD|@TKK^gxY+LN03f_d1SPd3j7jE9X|^#7?}Br|7) z_6;t*W`76svuA2syY)lN9A#FO`%{77#t9V2P4=(kpDa7 zRF;!cd!9bnpTAaa>pR32Y2U8xGA#;YumB~HSx~&YeZR81TE&VAoq4R{?lS z3wP_g>&x1jkn{9Cx8`Tg)Or^9mLr_7kPc*ql;KhRN1foz+J!swzL{FI+qYl6!?uyE zwQD#x($^<1A*CAWGgKKE&ZuO=<6xJ!*$zQ+t~$X_#4 zTiLB|t$gc)sdV!f9#5s`>1XfE&zPyji!Y(1tt$TrQDS{jr8DjfVYPA7611EaSzB}?Jt+qhl&0bn{D2GV3B4y4{zZ`Hn zl2gNemddNs@7s~b-bCZ?RgGUMw@|CLAoeKL`XAVn*Jo;57WnQ}H@X8*KHj`~#Fo8? z$dr{@B2KZM%PZaa_`bYG&tBlWUwsaHiuSzWDTRer_m1vOd_EzReAd@7L4M2LlNGLsIy+Dl)&NPWSb=0=9rK$Gi zOPal-Y@)O^{Q)9qZ_RI>VzQ%E_x6tU_9AmrilVoGNE65gK_@1lD~vx*a*1M)s>9rv z4FgmfDK0>(?7f-N-m!@riO8ExtgRJf|1pi}~@ecBHXL_T5Fv9mw3D-HJg%N(h zYqY#G6~KFoClh?BC=ejIIFS?NT%qX;k|I=h#lGe$cunOl4V4Nir0S-uRPUPJaXu90 z@8qSfY5k?%0o@j9g8=da>PzH2>MDT=IrvSp#0ubibhTDjziTQ&>7}kfyK8#K`Pw_Q zcjUuUGu)S2;58S&ognC71j5Ov#1SX({4>Ro&IvOikq^9NtoWr|dqq+t+S17jENSd#`O?w+n zZMrghHuZDludt1@U^>G`Z81I~fT*&Pz@nT^N^(_EX4hKLwAo5cU14Ks`kVRMbJ}zE z_Cso69ffx2stYx8zB(ifCXzVi$wwIorgi6{XRSOtR^ zSBb)4ODn*2q^d-#=Yf5@l-}hMPgJfGwe!3z1kHZYdFD+1&Z%o%iMQ=)vJVoxs7OKiduvDhn?xLn}sC7{`>7@gze`9)K+?04x*b!+l2d;t5e z#`@lQ3MW6H=0J*(030DIIUNrZ4J2^dM4k{N3?_5Qa?|Y56^5H;6%C{F6v4GqGi@Qe zA7AMul}6L|39Uf_ZgS;@9PQery2~?*ZMRH>^!@z79H#Ing*WYTP6wXh!I8& zaTTU%!l$C7*rC(X9|I{@e|1-?QVZ3#L}~VP7Amhf;HjsWwXSo;UEncmJxL52woWYR zB(r4r%mDbtEe=p%b8H@BR?TeRnz$8{eY2l*KKUdKJlB=jtAU>&ypL2Bf*l#-aqt|7 zs6uLy7E5(Dnv1_OiM<;5i6`>OsX4Z|y^r_y(!lk%WcJuOmkKizVQd4#8FqOAFb$GW znn}lDHi+Z)Oc%v1Zm-1C+^oS$U84AliVaz_pLU)*mtQv3;RtVadbRc0RGN4}7?k2{ zCZW2(H%<^ADEDc^CvvUS)~nQJtl6{6#CG;#&1!d^J!`N32POXRy#66(|AVi5pyyXi z-C)1{y!*RwC^U#C)( zWK&6v2_<8sE2nY*SVPuMU@AKRAU%~}&800?YgWtX&rKf~IXMdHq$BFysriU1+pc3> z2O5qDwfXGSUI%ChDS=QdLg*ne*iaUNW=mwUpax=TapxR&+tsYAlseWG?7EuW5DB%{ z+VtU^Q&1wO@JmPXF`31Y?B$2N0dij+VeNZNtb@@|M z-FB=<@O1O3C4a5fKTMc17&S2%2w)ZmkDH+X7{u?e^ML+}iIIH*xYt{UhVYAI)f0*& z*p25rQFZG5sQFtCPm@pst1cMR!y`f^HRL}*=G@5Wao!P&rt@?m+Hg$u)o;FS>PGu> zt{iFp=5eim2%U}ie4v4GSmy9k2EaQZEiN4lB#B~Ti;+6X>@Ga88-?`AJu`-A2$ zJT$$PM;vEe$W(m5N2eCpA8=8AM!ada+@keAM%WcV9Trm&Xh=y`3HE$o3u8cuf|J5Z zQEEEZH0ORxp^|9!N_BqgcYo|B-Kz1AjsC}`m%4SwVj??(@eSOu{-7vlb#bg06yXwnlYiAGwxSx>i>!4*mY%MnE<8lp>| zAU~9Zh`R^J#{J7Oo63)cwz0Tc9F=@ZHOZvLH|0`8W3-1l98G2HV>T~Mn&e^mAY;E6o%uU9G{%w5=(fL2lfBD%{kgnt2-P^Ti0qOMhw-z&12#o#+(ROUQaU8`^cM0ZU z0}EP4Bm@yV3Nh9paljXIt7()fcd=l*IoIoXlMVe5(ov=s+wv?pw8TrE!zmCgNEan4 zEfg2gNB|B+KpG%72`-#)EIKAh#br4jEDH6+s;*YAmZ2Y>&c~+~+0yl#-sC0S!{DNj z_b0Kb0#gwp#||KEa?j%ESOKBA$y%od!Dw_BuYJ3A?Y%>tQ?S|fqyUtl>PNg%`LF8z z$k0inS~TUiMek0n^b-A0Dw2jBE-1Tw%s(-b5Xn%Ckp-9o5Ii0axPe-w)|3F-(or!& zpk(SRU6bgn(owOdp&y!NIqGeBIU4uON-Qo%?uM-KEK^#JDz;-+x*Uy<&tkOCHr8pz zI^$mBN#i}n*Nh*4@VnWx%%3(tZvN4a^JMT}vi(Q5z%p~MA$b3gnGy!cUW=GLFxvuw zSTq<_LHLBNY9A|BixbHz{7Z0zGra-Oks*u1BIhGSfS>-ZrRH9pyOE)ggc&Kw>K92R z37Ae~L5q#cm?pvXHv49ALSo6fCGVMRSqq}AKrj=KI1x~0Q{jOAOtBi6c}dcO$)<+* z1j|~A+};2Q)5w@f>et%U;B`x+16W|wAuPy1>yyGC4+fK@ibMC4F*}`V&9imQjZQVz zlpp|pB#gkI6y?5Rg(S`|&a4>^>3`}}1H=^|#~_vq@Lb7SfVY8$gkOTx>tIUzwp}e5 zra=ihCFWFeHgHQ*einc(@##VuqB+kVL9ju^_3JmPPfNAOhT0K zer6+V8Y3}sThI^iXEP2+a>?O6d_eLU#*f<0+^qY=%G0(yJpSuQb*^3N~KW>?o9Re`a>!3JRmWRXGpRKvJn&pBGLu!fewSQF&H^-gYDOQ z98@ayMR6I|N&~9>L-|{#ZgsSn?b;R(VIK4ZH)tk{BTBg>{#CZ8b3mcO)R7PxCtLqt z!}_m(SYOBfe@&^6RF|HfT4(pGd7GqLH*gg@1CJ2%NDvB^r~nva%E7vo%mt$1G)H8X zfW({%*6-I<=besC&$gzYnp#^vu)HK7R@dki(#>%_3{_`tOmp}j6d!|;gp=a)0x_i;Q?w`1} z`Q$qQLs6F0rzD>t7PADo1dcLRyENf0X<*`$_QX0y)azI#qf*v0;B~rFT>Z<34%;$q z@-I$5Vb4xueNR0+>)~NVc(>NSQ_bao0FC4AIWlHn2?YIX{c4u>2c0t^_e{t>6O3@C z|K#uyYwhlny=nN*re8B;Y@=vC(5#KmbaPq8Wj+k_cH3R4#*V z*Qq*R>cvN~Cp9KXc3(So00ucE?`YV`#;7Y>Zc`Q<2f~xbC5`?Zq0&;PZ;8=pD2kRJvItdO? zlGJE)S#5P;*Eg12j#rhe)fWPeg_HHFhl2K!VEi zl@bK5NCNPjL0O{VcVV__-*nu>$gGG`H}>divLmL|8>UyXB+_yCQT0DYdZeVPHnW`xjT;f z?x95-1MP|6`W#VyX$+%Tf=@uFB1|9`U`xq1%TeF$Rlptm_PSx8EWPcq>BpxWLh!Ej zU7pV-GcAc)3<$pk%QKEChzoJZfi4C@Xo&41d>qyZ$=PwATRc&E=3_jw&wk(5o=Ns6 z(I6?ffPm9Sf3?%pk) z0v(0k93E4$LfDst#2L;<2m)~|G=9M(>?k{2VJdojNv2W-?0n@jQ<+#tnTO-8kG~^q z5v&mTeAzUn4tDy&fFcYx^n?VEmn^Z&W~s&0{ATWiYTk#T7!*wCgAk0V$&8+l-_BG5$7<| zw)RW_B*Ks{gwkwRLWGYKK8Tejn@R9d$x9BO306PTIZ^)1k*V9A@3^*=_XPee9uLMz zdy-L(od_g9cwKT3XAlOKiH=u2(m5`F;^R|Woxa;r%SPaoAWS+Fj|O3>k6J;FB4k{n z&k#0=T5+`Mk;N00&vfY6TWeVibfnzSs-9UqQTa@V zbiK7_X4zvv0}tg#97ChnBy)reC4;$G20mYq#jBgPc%t%|4vTt=&jdA)^l+x>q~N%Q zNw>xZ3G{ayMG+3+@od$57EhEvb8O0?N$(7{(u2@{u=vH`Ho;(&k(UjywPwnMFBBkz z=-A2QRS$K~ls{F*f4g>AGv8wRVem8bbJ`C%e0Bcv*G~!gF5AT=o4TT6iK-L-?AVEV z%>AiU0Q)EuAS~-}N(E4Fuo^R~Sy^~_Va6JhL{GJa3o2WX{UTt~&9_bMvc>34b}jM};~o;q*#spqx+l|c+D2Iwv1PK64`4Z$ zh!e!H6`pEAN@rKtMgMVEj(f~|^4Cq>Y0J?a?%MA4k@f)f*&L@+#WwD!5TbNyg}upF z(L6b8bjQizjN1GzJGjIBMAsOx{54ZWuH2w^$GMxZOj3TBQdk_BW6)Vh2Z_Lq0G?`? z?2w4+AQd9HXNsSvPG`~omth{C+Tk?LN^PFkN4kp*5)%$$02CF(>_k>;GC{;NT_^$+ zYCL6kL;JsY5>?{z3ioT=W!`ms$|0tox7u4nJx&%86yccn35EoSHiW?o%n(ww(qNd9 zbr%>pra~8r53~>MBZK|_ai#xX1CAp6-+yG>seekpm4nv)^48RT+Ze<++SRn<_J9UTJdYzDR$kaK{4V9`xuNQkQU+z&(?WY_YIF3k0X(= z^|dI`y#TDBRbUBBkhGi)idT%SGa&RJr?ZHJLPd$fbtO_~n@N;5jv~=LtxI$e?;II> zWKe?13U3c;7w$5kZ8N|igLxdx6(tJQl}Md!Ceee&0HGp6wnrN+jC+5z19*nQ1PVZ3 z28s~-Op;dlR&-VY<0T`{?w$R+>wGllWHWj8827Ol-fhd%%3|0rV;Ynw0wb+BsKhBe zfLPF>rx6#0g^NhFkXj7uv{C7NGpTkMcggyHjrK0hJYoE)u}}XJ+W)&+8~(3#t^BGf zhwX2{Kvz??zolCLc}(jT_{%Xo3@BsR_tQ*?m|&j0mKfe+f?k)!9T19xQh^6_ zC!5Lhkogeu2n%0}?em~SXc2r(I6yK(`UEafRw|&)g`q1N%_TFAJas0@eOo=|$sY4T z^FibhPTdyed4MDUj159s$QGX{0g}fEwP1e4A|e>$2}hnfQ^3Bh9xbDpxBwsGd;r#rP*TeWQN-lQT{$Ydeai zJtCKlj32c|OW;mT?t@&~v-!KG9CE(}_i7o37^ij+5tB=p>XV*e_v&#?XAe|ALB+Ns zRe{X3wPN{639`E)BDG;er@Bx7lTYH^bz@E!O*zDWyiJkjr_tM-BR*2V3I&dO-bb$SsXC`F-&Fx^u`?c|sz z!i2MsaTNgkF@RqLAjrxr4zD@BvUbx?W$<+GtPesI*5!j!LITJuby-cA&Uhty5&2ng zPC*xd#Rq^{p|Q!aVIYf)IhhS!ESD$;9rt>n^15EH^Sa`~B|oy)|Ey-ljkg)?`f2T- zv~24$Kx;M84byhRbcVGpD{V7CZHH9z1c=H+eKn`A0Dek^IWYH;`Nxs^4>U5)@Dad! z#*{dcj}=27+`2qKKX-mAgiDENDj zfI=9P85ufxe7NMk*rtvp;YQ}8QXi_WM}Cd`P?BrPE7D$1OtbVIwq3h8=*Gh3Q z^9cP_b8&;%Uv;g;TohFota9!3_WJ+pnt2dh|LgT9wO?;-O#k@RBKOjvvRW__Zx}HS zZaSjRST2h=K{1%}tQ_l{>^NwSae0_b5e^7lF z0q`?sET3ja=+IAf9a!ik@v>B0;vU2yCY}nm@+2R_6-}-jTOUA`Qsd5^MX3<=o=GTO zS(SPHM7+nB~#j|h&3DO1xORUZ1gS|n^l~<`R)zWEl z%7sUf#kJQ8YHOQL**#`3733q5{Y=y=VX?3}@|j~mE@ZLBk+&VqoU&2zwhp_FMB8Y* z*8C=mTri5p)Wm!r1Cqg+(q9b!BGZz4;#Eqc^;O8dFA?-Z> z_T#O~T2{BYtoHg3|HsY7&oKV;@N_65P#wX*!;+Qo~Xo)YF8 zTYz2<0TvOQo&m5)c!YrdB7mFa7Y_xYY=q_z8I)-%z{z?NELw!CUI=Y$5jJ>;;HNtf zwwO)88wE=ia~Mf4;QK-{4)rxDFwv$WWK@J*c@y}dlq)}8>-V3Tawu&0Ci6Vx=}nP< z4Wuo$Dnfx0!dZrEQ8KQg!3+%7fmBm@Dj(h3o4lDob}d-2v}tU}T5XCrBz&e& zaiwDc;Q|XwY&{6&nQSa4z+c3}!?JF-d-+R}lq44p-Mv0>SY5SClI)ckQr*Tdxczkg z(W#?$`r^V}T7E;L@Lgv~xz&@LP4W?C?yon;m7ranovf?N!QWIYOPZqn4U1>|%f>6N zR^QrQuyT$TT)k+`xb;>U|BJQzH1pf$FPk4S-)4@30~|4D7~e8pG~NWq&ppOgBVsH! zZZbN+2m7J^|KcOKKy334J*F?#XKCNnK8wZhtTxC^+`sDzPZE>gJy%X361wqNN8t%h zb*fW9lbpJxaE{~fJgHKACzsoZ>%m(JXPZ_CEG?X&!q&NR%idoVbwaNIq}%qk4I2V6Pk9&qI`_kb&d?g3Yhx(9j~N5TL1UM(*$5jejD^Pa zSQY+V|2yW5Z|T3S{|fO%AJN~dU((+Mqv#p^xSr7;(C^W==}CQ^eyiTC&(+(se}yaT z&tM||@7hGn$-)yaLF+@MbGZA-OZ>Qg88ax$q--r4r3?^41p z>i_J!6j#MN+6H`=Vyd`JKj*s?RmC-JhkchKs<^uC5#Ob-Dz1{VAyr)2_OS0#P!(6` z6TV9URa`E`^{Ti`itAKysT9|$;;m9#ql!zUxLOq#YcKgOty0BB+NXS%R;r@EZMpB# z3RUcFi~24tSH)Y}!oEw(RB@s9S>L6ls(7>ZvhUKZs@T)E!gpzjD&Eu<^Icl3irsAy z-=#&Wc%wYnuZj!g!M&<@gFN^aRqT=nFI2_(^5C0Qu~Q!0ql(wdgKtvBdGg?HRlH6f ze4{GPl?N|S#X0ie8&t7F9^9phv*p3_Rq zHWrI9WvctsJW5@5}mhaT_G*Fm*? z$Ld7dkLfoa6(Qhx6_a@&%vLBJ03Ceqe|| zWNS`mo8v&VLG8j?S<&aV*^GK5aUk)}Ak zo3UvU8b&w;_3Y|IeX0{r{InB~t(mxy3=f`Uetd4DiUC=Vv_OWPbr}k zz{}&%iTw+Q|H9K4P09(vp%OX#e#>~=;fz_irK%ho5)3EoS@A+)uo3bDq`)$Swu-15 z=)DUyLW3?N21iPy*sy``;*hOPv+s!5fR zLmexTq^XJT;?So}&-kMnlJr108C8^gRSmqPq>}L0*-ur;H$?bt#c! z{d(kZ7}2I7$2yqhWeP}&3MZ(H9O8#pBFDOQ4?XS> zoG}Pin+Dc0>BZAfg2%ABz-q?aM?eC4Fqsx%W{*`Kgr}Sd*RGZRe}(phX5MG~ZzHLH zPv1r6CG@k_jOq56vTWbVYU;5V!0F9^`^W?-yj_V1!2>XIU>cH%E0xGo4K%u6Y1d}u zLg*@f3bvK}8KOpXbTaNmQpEOd;;0kbYI(g9-#j?(GqVNBNQRS zYA4LVh=IB=@~G8BSy3jBfsqJ(O*k`hJh1!M$u3Bls2CcX7L6U~^Sm?C0CVc_CMkVyc5 zQ0(>KOc0)#$#?!$ZVi>~{P{DAJHJ{-)9ZbWx+oU(rBPHXj;P;J<<#_9Z(WW5!S zTtZ{;E5OjGmL33o#Nrq>{LH+~1VFf-G%v{ula&r21JqQa-g>LmFedaGwy2w`h`Iw) z8YsKTW(?~Y`~*X+`Lh!C3-u1D+gLs>Q&f9lT1MC%J7@#Kt1-PcupMtEDiEZyRI?cW z@RTE_gz#KeFl-qJqP$FDl?|titlPI+8^(;htUIezY-<8nct7ZGfD^^Dp!{W|8%&Vo@SBfrS^+jXd=ArPXYufnd)bYt@*;sDY@_Dve+_Yg|9!?AWJc z5zP329R#tRf&P;XGb<+oc^;Tc6ScxPuzNRMYi7Q=%G#>ZkhM$rbp<^I-{mwYTzEba zt=J5Su~2sgGg1HLb*+lSz^+|10EbFr8V%rf)-!@-NK}4;5ZxF7!%*y`Gm(tgZT-X@ zT%N3zMuFRJXLuEQtmzG}w-LKUtfDyjO9e+53jBa8Ks=jD;s2j0Fj-t$18_88WrnQV zl>fh){|_+#|0CZ2FRA%|^_WAlF^!LYfZ%9|0|>M6196jNz0b}}R*pc#r9uQ5<-5{3 zcj_)Xr{>Qnp8qTKr2_}}=nlIEqE?$z_tRxik?owTm}AGbx@J#99#O#-bqRcBV@dwo-3u zZ)Z+*sWkSjtTw0a1Cs*|5bXb;MZmj`cOn2#g1`-0AmJhD{9@%2Wu*;Nn^X7gqk0`i zE80S}>TSd2C(}%nGO>IBkTFIvLB%P;eW@cH0!=(lFX?NO9wStZB9L`cC*At#n?Cz$Hf`|uTUUu{h-RDX-wuf0+-eZDvSe% z5A*GXq+@!^)jR1;a2SdA626Dbrvz{V!-0_lPV8u$NVv=ES`~+ZJMUypb=WtiF}xl^ zGa5wW1+R{99END3xI#g=mx@8R19AIhcCAXIz@bA7uUF@*wc7A{hd_rCoQ;nZ@&&+? z0H%XDz6_IVARfn)`|_%_@|=3d9kc<5%4!<@{~)#v+G!vqI9G9@$;1_v)m0R2Be0Ah zwq35UVgW1D{|_F_@Ba@Pzpww3e%niH{%;s_XhEpRYG1vB7&@?JBXJ@(Q*NL6QX$|mg8=_T zCE$}8_Hu=-)SZqUV^VbpI;hxclj_~5PywbVvXb7<{~4ZOG6S0yXg^i}fcCmAG+%9H zS1b85iYs;+lj_}fQ@snPUA;#Ddqwvnm;j8WS)t_cV>Al^l0lS>#Adr9U)mH6)w_TyAP^MgCKe8$)bOT;-Ue1scubkMPzztCtQGqIU3c02|0&Is{{OG~ zKJBTO%%oosgm3TQtWRS=mC!ZlL6rk_D9YM3ltNLJA_Sl16(~Z%v|FF~#`uDoYsFz8 zo#xv+6eY-7?c1jaUO_F9CE$zY9u^(YIcWoEni;~tH;m@j)|V!0rBNW2Vp4UeNTxBo zf~6CRuqq)m9tu;~+JI68a~gakI#e`8tnB4gYvoBbnWPO|m+w>6hSvn4vET%zP>u_1 z9DG^;9D%GxxP%|2ekPNr3cIv=wS6keOsa_lZNOpum_{482ZJk<6wv087+PVF8Tj(d z0tvL0fPNF=ahVlcVZD0KJ$C>9fbf65M<3Vk(mqh=b}!MCRX+x(vMjNe@2IObd7Z#R zACN{I4I;8!RW!i>Z-r!Mkcwm6%8#xaHz}wTcWodORKd(s1wJ)#JzMRm=0TRvTIAM_FPs81w=3 z2SO2B8SV>2Y{byF6Um>Ooe* znVMM!HU|-n^$RdG;Ur2;)-QM*<|hOvTGSPI;*ez@d;vpNPY+@WbHMb(JcUD=Y_j30 z#@vP{N-7e^ClRjTOp2%=R0Hn3<={C?E#?IB&Eiwa4O*v8Atv+#(-gBik-~u?h}8m* z0#MxixD<&okku7R7A%ALoz~_`6M%j21=MDDHxmF%1ZohdJ^`G>Z6yl22iztM00GQ@ z0&gq>KnmE?a5|jVUT>~20jOgyK**CPW&XbcKvwL3PwW4zAHv^WMWJZck}(IHcxl^8 z@lBfAIHZF1*K4oFjDb=cA{882P_ZTbQ2@IcZ1Gw26Br%~IxP2T_Y+U*U8N_ezBOfk z(q65-1@Rm*g6W9&J2>{GWdMLO7N(7OAPJp%CPro4EiCsYvc zceLNJt{Zch3YN4rRIR;7#lIFK03Mzgso=oGwF9?aR)n~C0?LsLI8QHB-l`I}rIHgw zx+21A_c|$FuRW?gYBi1tlY#W~{S|g8_SXgRgas;~nqe6z@yuj5m1+ikoftc80s()1 z>A!KK`=m*q*BuNBr>Gh%ELI3)nfhywXd~=Yg!sS~x59iXlqT!XB?5vRgryP~JS@Io z&cUpLx+R9{0^)^4zAF`Ed12yK80*h#!w9=JFKo4S$~i_Q;Nsx?1*w`~RS3W{n>k?fS>Gf7J$m+Y10|#+XY1uywu`su;_C z6&x*831FuTj=d+KN0CBi$+}b$i z5CJSc+geqQ!z^=IlL65Mt|I&y0e?1lhx<^flbA?1^t9;x+!K)M&T(tzSdivV^!wtQ>Z%TXqnJQgM1*m+L!~H_ zbAZ)4n1CVT;h}bJj&)~xjt_RqxKc9Y6%MSKdf*tP% zho){<2_S05T=4!K)klqcKoAdrbB8?uJrGNMyw~ISRY7o-#ao5I4FS?GD~WS(YFX|X zx2_y>K>e4tRhI=C94wCj1OTuH3sE)-CNw)~z|FzShyYKKO?C}#?H%fYt)|R4R&>JD zGIfkwbH^Oa|0TPt%Y*?U8$<6Hq{G3Qo&n4U@XaXtJ#-^6K2w-SZtsVvrh-V$@u?+( z9Cgl^1Ny)C_UaPdoq**9L>7OuxEqL{Edt?agx?m5uq^Ay-fR|-QVhV}iR>D+}k|^=A(l`gFmIZ#(8Dq`%C^?;8 zbtJ*4h~kB&3xgUY2oSa5(2|7CNjZw813hQUN}>);EyocD|M!Gu_88xU|L99B&>{9PoaB?}>+s{E#{`K1VTJ&r&K&~< ztJ0x!wc(uH`N#%(ut!1#Xvsi0MMYet@74EOi^sOu;w@>bTZVWQ_B&VUZP=Hi@UY+< zPh<$aC`)Vx)Fcr1At1bh*{*@sQ+rQWOjs-$~I#L+Q8mu1u@+~LP9+!U0(zB)zo&`vH+*&y1p!d%| zxU#BrsYIMbH*Uh%GT43LG76a~9+-Y2kA!#*E(Xsn=_T<5O2wQuY5D zK)=jG#=8x#p8hY4|FvLDFyq-HE(P{-OS$ny1q&?L1Naw!RgB``aRaH33l1b(to6Xy zC+3fS?Dm4aJ6i?dSHdd<*Q@XmXiK&a zNFDexgJFnup{{`QmH{S=V#x1@y$~eosKOgg_1bU}eD`uscA$*iGs~Z7EZ8@0T|Xwk z^T=4&QB}shxT*q;%Q6(BATe-Q*b=DKg9_$812J2mc%x8J#NrbxNw{~MZM8!svuuA| zwAvUbZi)zkRU(d4MMNkcg9OaQAP-K5K#ua~m8hH4%rHg&C|G~gDUMprZ5IlvW9r!? zqi3y^V_WUn1YtK+6LuduXdJ;<=%m>Rp{@V~G~k!zp#(1A91=X;-!+)o#wb}{*a@cq zhFJurlT1u4=sx|BZU6go&Ai!oxBlk4lOc9X&b zT%I7b6wp<8UsDj@1ILEG7!N#It;6OL&4i`%tBt)Z?C{c}RTuX8#lT8ZYH#&ROMw%# zFHwVa=}~*1ZB%p~&tW&yGvcQZ+=x-Prxl4&#(Z>O2`7FAdt7E zi39^K4%oN=+SRiA(7b@j;+&@o52KhjB%KJ%(XE$7z?c_lkEIC=*;`<@ zdldA>_CZEAbsWkxy0;xgAG5G_OeK2cI7_ zJ6bwRRX~3;>`oKJ7?(;lp+}br46xY2W?FyFeAIlu z`QK$-PH``?OFJ5E264Igw+@ zG?b@kr2{|?MW6r+m>;xHQ$v$XC{+SYLZkxeLey?TECrPn^lPDn_EzUKpnZjhCc@So$Ze<+ zvyiRepP)Pe{Ij<7EM2L?USX+Br=S)d2MnM7sP=!f zH-Wi6`PVrntk6Qw~2>A;FiJgItnNJ3u5Z+!GR5LPDO@7RZ6{x50 z;FT~`3Fv2_+y()KWUJO_UWEq~oP`qPAzLHcd#9l!ZSh6s&jdpf=ccQ1O zZ>U>z2Lm&>g}F{sX=wm6w9xUK7fNW{T%`Rm!ap#he>Dls=}5Q`5Y~~YP2?Qq~djh zU4v&!uavTu+pArBDsw8CQO%+7)ZMBqc3X|M+Z(Fz+*65Ezk~Gb3cOp2R_(0OqTZE- z`YC$RVkuj1t z-MXztJM7(5_VTPlBRWY6mtRy~=Ekj+YeMuolWySdau(lG(sYF=a_>%oFJ7{xq&M{S zVv3_#%b!Cx*J!=ow!+sQI15MosgA+Sz~F#t*Ya753OoA20FgGgU!8bB&TDBY&bF%) zw%;VpqxjQgTs3uvyor5tGy+`-xY|pnzk(7$`u`PLN;6+?{IzkL{)c)UnHTrR7FPIN zSUNQJ2DH`1^X#Pk;Nj~M5UgWP!xb*X3JwQ&@ZWGZhr9uBuNWHezAjZ=G=@nvWmk=C z5Q{6X>ID%Ub{8aGf3QwlT~|qAfB0I|%W(`fkvK%Ncy2dCF_DmXUML+f zTH-)5G|-*N^mW+w=?-$@J3ir|&=gE@&V*Ao`I`O4;cLgOx-lVLliJ*mZ1XG1wm1P$ z96nO4=$UC?p^4*SlR~wDosyLT>m^|&?#Of}`tW`1=$TTqDNZSo48azUW8Za1)B=aA z3brUgI5ttkShDbclO;8})+i2{EOaxl8-#4Z`ZE~OhJ=x|l5CUCDiJSW99}eT-7w~` zqBSIzY3t>if{m?ylUm^dUjm^B4@t3%4B;oiRv{5gVM$Fv0SE+V)BzAdFxCz|gSIBl zw!oK~W9*4~(wU`Qa+5C*HWv8CyT^nVjn6BKz$)wP)v}_8dI7I?c65X~gWra#A@+U2<9b&qkjr^=&q}@3>`*IUF%dT4f7US&ml{Ux|JUOkGy0Y+j*G2Y!XMAa(kq}+35YqlchF6SRv&NFP3`=**BDt~*4-+0KIB5hI1c{9T z))p-R@PBB_A(6(`7j|Z|bU_FkmEYyeagRHHH|9BKkmh0WyGc0G+`hi5G!`+DjHppy zk%00dT%Q0wA`HR9feI&%R^OGTsDaqh17?$W zk$~ufAw+~L6}V%(paJX%K*fYU+j&S)Be5Uqwi1=2nK+{4+sVtMwF>1LJ$>np3awQs z(YHN>Gd&=YxS2+vZ$&SSm6$0JO-GRZJe&N8^N6B$Vn5PpC@MosapZ8C%0rI*zgGkQ z^UJLIw`#q7px@pP5rTW{WI7YC=#1 zDmD=7w)5w44{+$;kd-BDMOoo(0uwGq5Tk_L0;!F`1bW3xn(z<;@6i`dEz_mQ>h!n+ zjNgv1(I}%()*ca;?5sW_z6wQc7yxvlX|h0EVbc_c;6xBD7rvx~H8k5ZK+*85DyT3z zOE&FJ6LzthDPE=e|4ax;&F#j|jYo`C`XA{BwO@~waj2l+WALV}!9ORiQc?fzp+VXCIDgbr!t#{Fn1g%2SmKJg)JK{Cd2CZwcXanA6W#W|a(AnF zOi0{V0pB!mlU+emZ7$RbxJG*;=p@+;Mgt5E_(KB!NF)ZYA>pZ*3xO6#+tVew9?^)D zXnM-%d3-PY5(7z``M+H=-)1g1p449kGx25q9$q_khUrk(+m@?46}8R6oxL1?cwd*+ zvU4^zYrs0ftfg4!0eFcO2o*l|q*zcu{Nl}hUFg)Y7>BVX{n~&J zHTocW0MS?v3?_QgiT<>21q$^Qvj%&8$1{UI(Gs9JPGtrLd=$xje3|adDO^zGBGGuG zi_i2o&DskglrP=YPt#<#=HnT5#&@)5R_mFBcvQ6bjt-#G@8iDmft*VRno@mzqQzH2 zDlMPne7I}@%Z%Q-=WO9QzTTehv+A%&*7UG%?6h55s%I59`;yu^vRiA}G8@ZR6!SQE z=4?qZuc7%T+Lk#1GaTi~M839Kwp?0eZBUM6|B+QzrN)}>AG^<<7?!TC3pq2pcxM;J z9`^F~DrC_z@yQ0EOrnt)_5{~FhFdnQiT+4B-Q1jM?&uoWDq4Q!HCvon!v}?n3*~{s z!k%hav~1a#F$bcbhqINc873A|H{A~@XN?9 z`~Rr+a?Si-=AWAHHQ!*Kf$i&Nv&p>1_*Wu=zHNNUc+$8Cx7U!-Y20DlWUPSE%g}!f zQ^b-i0zF)sp->e7qRr+->dFk5o+Fxrw(!Q;IRr|E|N7}QX z3%^x+1CJ~I&9Rmn%TLphds8QaO`TU*KBKOyx2bccwai$;H<5IWb-gkFRHCoOT58NE z2*hJuXDp<{r%rmTCB{N!fbdw?8Vj*N3}vpc78`Y9cko(^jKwy6s@Ga*EM~>o)pLB7 zwZK?vC!0EFTXn{=MECJtJS;m;&9bgBmdY+yMqZCK-&mL;qz_T9Mij<}O#k3a>nhR% zUB`P8-5%>o&JYEe*P3T6PN|TPnburmNv6NQ2f1slTB9C)-o^c}?=t z8Q{il>Rj@WaTBa`8&ZsK8>GCu+a4ih)T?{Y2+6^&UJi9JW8K%4;+iYZ8x0dq?VNqi zSSBa(@kodC#-P5^lkv&TG#Yn~F|Po@K=E?@yeS zi{_s;HWVF`Xt<`%y8CRY9Fg5mJ$FdnoVX_Y>dpm&Mx^Lkr7Z8^(TfI*cu{%bd7W4G z+wYYh_&cw?*OkpJ;}umSMDD&Rj;Th=GkV=;6kSKd=19*JM`-#@oy$%cJ8Zd%t|^*@ zIu~`@mnsGMDFm@wDeZ3INh4bPO8GjF{%>OPH$J1E<E0S_}1zM}jK+ipczSF(^CuL>PmCi8FJFAbiv$}hG`v#W#wsfCPoE`8D zu@YI~+w4KHw|)Ly8pX)Kj|rx~DG z&MBOR!aA+#;g+$p(_3$LJfOAgn~iM-HXm`Tf?^xyWFX=3t&)&TS`bbYv=--!x3}!O zv}(M(C6xP$FKF3WwJyulp7j4VrsWd;&v%)RvlbBk&jGU&M&SMCt>$JkWUeunn)6Ms z@$bezpfC6lF@s+=J^^yj?;APeO~#1vpfPB4y+8)gq<%=>rEh^xxKa1%b#MxgJL`sT zYG2YmuDu`eyrVYB<5SwB-cg(6@k#BA-cg(6@kuGQNgjVsf5tm%lRW;Ol-eYZ@6f*B z9kodw-yx+o$>ZC#&wEF0lE=48sZH|ug!Vb_s7>W&z zN$;pl@;D}?Hp%1T+9$lDHp%1TQmRNE=ekijEfGb!iS{r4psON7adfE56-yP zd+~si?DJmSuaf7bwB1Qkx=$s~N$FlENoku(-an()dvTAG?D1aQt&(SFobq1W%&H*0ni@FKhXR#jeV>%*L(-w|g8YQTVX0!Lu{ojL8raB8Zs; z2*>2Vg34BOB>2^p7EIwHRfc4{p#|$~(W7rbOHyh^B#RLMs`xWGyFZ(p)T%XoJee46YHwsq4yX{x(8g1Kjw z%Hx)YI%>35Z(yoBxTh2@bxW2WtI^hbmzG}Sp19=h68|u@0~9S2+KYupYqZtgg@tR` z0&*xbxa3I5RccSUcjrFQZ}{&*%$besYh7Sh-nEU91KTbMx|_ zUdl_F9OZb{+qz`P!nFf?MElURW2FQhmNlp@e384|ESA#D=ujt~G8;C@L|ZX#ZP zA<0=`VxtLEk`O6@4GID}2Yyfpa9Z4B3EQi`kl-vh48kBi!TU@!X@u}S7y|u7&Pk|9 zEEx~gU$}>}*cHWbUiq_*!_!(rIcu76e#{ zC#8h}m|XpZW1Ph|!-NHPD=gp<;HXnX7D5J$6H1W#1$pA#oCQ@do^Xu2AnQ^G@a=@K zK>5MO5_sk2=K2dqMK0tC6PBC=S0@JeSptt0(Ae;qZpIrR&J&Mt7I30O!voNpra{1m zmPr!07a)R;P&(WZdE#B11*j45&EQ|*W&&^;v5r)@AbZ1{LKq+Qb(pi{Q}b0M*fL0X z9R3FxaI*sV{4mxKp;Uk2PR`0mC?T+tL^DEb9?qts*qw=MjN=dlLO4%6Byv@Wo~*xc z2WNpLO~?+&JW$Qy%t1UL_oOisXo#CphIc&3SwSkE>4FbOm=C6IwuzZ2bfvgo!uXJ+ z$@Av#QNi_Wa)}@qh2r{y}Rk>D1H9T5EIO{7ltRd8WF?m{YYHUc8yg-ge~YRUU54 zd3ikNv8Sp{@_MgqtTa_!qraD_s>%nEsp^i_tq0oLr#V+SV*STWRz(lI^x3NDCNJ`I zHTlj{%~yPjacgnziu_vbNadzhr+p_Uo!vyvoXV1VEBwCW3zE9UI3lOS>tth1w3VZ z82$hE@e}wLv&Ou}TxrJ4+sz|pulX|bjph^PGv;T_ubY2q{=@W!k>CDV^Kf!H(0yyB zyDx;NfnFOnPw5*vdrx85&h&SMH}v)O_lo&>KxEs^ zIdiVL%*gu~Xm6flE-@T$0__d6&Bcc8IH0|DmbuVS4hPyB<&wMyfHtBov3()5+||Ts zruqjl;p1V{gLzl`eRbS6_iC?Kw^Tj?+Fz<$ityU&B&l|k+FRvx$3;PV%~j?~qx1BJ zp01R5J#e=l%{1!_aWK%Hs5O_8Ler2*oYGz{_1D$c+1-bm5l5et^Tf|WyC~8iR%}Ia>fp?GU1`?aB~nbmI~SN63I!d5{X`&9{Iu7cPjR0%ChuT7Luil4#XXt9 z4PDuebT?=Hg;ao8^2K`F-HX42_QfmBm3pypf9NW6wG`x?1v-z-F_%(ey9lhBZ7z|F z_!pd&x)yf@mZjY4U+r7D{&!8C_grl@$hjQ115%qhlWtMo8KU#NRF0h0lkF0TzC7P- zu=72%DCJtAeM8j@4b?!C+7%A0X}FPerl%Vpn#>w!CwLz_L7%f#9B2}x$~CL5RgYF(`0dwBO~{yqrVA zj-F(9+38J1tSrw~T{stJx9Ly4w{#6|5!WBzDlqMqL$tFp=a8*4zdrm{JLdd*}79YrfZCORreE@QhClQ%T+S* z7-OFF|7)}Zn)yTXqvj)Knt}Cu#>b6!7(K=g{Wtoj_4E2YdMld2zXlofwVXJOU;I8% zV-^SV+fH3dLoKoDnU2m58}hYHd3&|Abab@dD)5H!p=n$y;of_97GEkMj!Oqi)bRF0 z-4hoNltgfgU-jOd5-fjHzo>5Gw%SzW6ZNeeCRyTrEh~Mwq(lD6$KNl$x8&X_%#U`X zUeZ^h$Ik)}=mG)W(p#i6b{|}Du$%aBxt}}R6g@rK19HO5iAV(QX{y4H_xBE=^DbQ6 z(y~K}Za-CG5-57GAOjR-F<{y-2=0wRTFc9_MGmg)uF)bBQ4QR4iys|4S)=XHiwzg4 zj&3Sjp2wIwBwpDD7wp>E(z3i+s&`_H&?th-g8>^2Uvrk=+9>)Y;31`5;t(`BkC{%`#IohAj zA_Odn${Y7i*ggVT)+$M&&_W65E1|L==4`?$c6)oUE$=fWYs| ztU=PEa-QbI|6I__J;oS2{Wy01|AZfk6Crn2ij&plSC&p^e=h;0QNSXyL_~r`D_|kb zX>^})LbOovgPNEBX24t)eUf~S75K}d@=2Xt*{t#K?Zk?x`uuyf_m=kg4Y>u=7x~?+ z>(R`DVJE@tEI08?4gvMnoJxcA2N(Edk59J9c?!)r(73$2ROF^yU0&qds|~5|0@nn3 zAjTzOH_D=|$G8zsf&IsJDjdNw^5WF8LPLQ{caHWh?Oml3ughJNmzX_O1HfUK(k@1#b2yIq*?O)UtqhCeWS?xwDxqVyiK|Jd3meW@RLBE;L-+~ zGRPB5TS7=1gx(4+JuEUHsuw8$C$!fWC~u(|KdC)gBC$RHKdb>x`8NIMu>U;#AKm>e ze@=*{p`YsdwhZ7jN(o|dm^NMViiTurCElM;q6okNeoPe5E)W=_7ojF0$s$G6q z`*2CEp_&kaXIti~-}!@Bt-{!;*mq{aVL}lhcT2^veWlpyr@*G4FyUXi%r+K^w9F4` zA1syFpSw0Man)LWKej}0IhzR&hKL%gEXF7(X)%`aK6X@AsF= zydk$ZFLTvd;eB8p3dsm4=-_06iV1#+EVFph(*I-HdCmNl`4en)pEBQv-R^bR@A}Mp%)LYc`%RyDrKy1q_7mf4 z*a)5_(&x3tLq;!AK5fJUZ!ne_^Yn53@AMz*U(-LSKda~T*Wx!U(ZFr`P5K6XnLdw* zp1;$6tbI-U1Vhl6_8J~2zq!NbJcPS2kDC4FK%>5)cK88RpwBdW%zGPswZr!p@_mv& zTgdk|`sNOwac|IVo?54Uuy*(~1z?TMG*6luljJ{H zJABH`C&+)acDUQk-$VYn+ToLKzJvUSYKKp_`D5hYUpw68=IXh|DM|6 zKzp5QRP?F#8=HJHg zpVbbxyZN`0|7q>;J~ux~{wKA=d)@p+@;|B_ZgcaGk^f=s@E$k+yX3!LJG|S?zlA&v za+jNbGx_h-4&UzP-$edfwZpf$`8SfMf$ntkZy^8m+TmNBym^@XmurW2xW`{l{tLCk z+ui)@$bYtWxYfsK3v=mMCFK`oU!)_M|{#os_C4x);-%~FB_f_UO^IkKHN6%if z)od|0m^YY<&AFyYoY3DIKQ+E<{E6{te1P6#JYl>U^st9i^zSiPM0VmS6f)KrOF;|q z=>G~{$Y1F{(7&#KUjGOygeUPYdX4^a{fvH!_@e63zckcQiS9J6Y@YEl@2CpzB>9kc zRKh!rdB2+Rpm)@c@BEV)=e?tLeCJopZ+b^1zSEfZ6=GRO?Eud&OQ{5S8uPv^rFMkp zm!#B=@cfdL+7X^#lv0WCH0FI#O6?HOFG#6`cpCG*Af zJ}0Gikmu*5RDwK>d7qV1JIeF3Qffzeenv{|D9_JGsU79{X(_d%JU=a^c9iF*q|}b` z{FL@{@2DN+`AI3YqdY$;rFN9(C#3Xt_25rP>1`_caVgztC#CdOmHe2L?y!?mx?Lqd zs{O<}+Ug_;Jl>{~AJKm79o_0ADZND{|5*F6XLJimecm6}dPi?oh0o16=N-LCCI3hw zmp41f?|DZzspN;Hbfc4`^hTBZ(2NJXqb+t)PKc}I2et2dM`KQs(x^&)K>Ln&wAo2g z8d1sjYv1;chMgp(A(i|??OWc_pp&FDppx&?cz3^(q;!KyKC6AhJKE$VDP6CU&uIU{ zJG#zEQrf7Jf1rKcJG$0MQre)B@72EM9bMxjDP66S@6rCuJG#nAQo2$l->v0@2xkao#a|wm znsl@oZ+&;BDw*%|18Pb6q;-H&p{RN4huRM(&#UWl4S8v|R+?8u+V3ZtVYLQo0xBr5 zhGXpG2_*2dcg*7a2@y>`{a)~_T|=Yk=f#V+V>`lyEeBvFK*Sw@SOyxU(GSx?8V*QPoOa5dO@Nj zm|)>~h3ogS#m#E~zoUI;va}7kRe5P~F)zQ!lE&~YD3B_X8(prnVy;jv_gmVxCJAfz z|Ey;2Gv2QMy?%?9{cUuA>(1PUe3k63R3+!BlD|rTc8rA#(v~z-c1dXAh$aCrku_e7 zHB&6Vu)Ea$F<~zti_gE({;ITUrmZ1bmut$uTh+e*vjoEuhTJsqJ&LSLy&$mTLF@vc z9Tqg}m-=qSmW!WhKP!E$CU#is^YT{h`#;5vuQDyzPVDf6(+AF5l)HA9$JSA_SGM0Kbj=2-TzxOqW+HRPieo>TBh6otza&k zf6l^@4xf{7*rY|3S~sVU4Hztny?S?rCuKwj)rrBPqR{zU>7LCA`6 ze<4Z|7+e@j2#SPJB@_xnX&A`c94~cbtYqT&h4zcd^52v5=jE?xW0G0x=lDkisbfFP zeh`|#e#d|wMy->9cZ@xK0oCKu<7?A+7ZzJFp+VWneiTSVvvH#8o9IUc9IeJbHo z1Pc^^h-6t1bt=5EuHwMBLqqWobP&2sqET_Q#AZg^aRM(PK^q`IH`JWTYp|w<4w|q4 z%LoqIbg|h$m-vJ3P z9i(dgJzF)D-<5Cb4r13?c?qA@o}Db=#@vnhK2dRq-^Ukz4`?sZH1X_=J8_)5W2sOI zNK{zbW3d=vUzw?w2h;Bp?gy9g{yo}z+KCp*>s#yysiUdlajMDMl55G!UvUB4hWzhJ zz!<^046-Mjl5qU<1GI*AA`^xP4O-G*UPX0T#+2f>z@PFEsMdv1Q%zbEUqbr-6~g~{ z%=nnGSU;nEx4`pRZYN+Z%Wcayt%_5Hbj>eSMb&Vd*5*wU+rG*cH~zI#_RcS9Uz*&u zmgctFA~JeZ74h>`Aw66XtBf8~3;22M^HT|U%k%~OOjR@ySHLR6$J7FTM*GZU0hi^r zO#dT)vMP{?D`3^}V`>pUseN*?h}Y+C&Wl)ei2G<&6cty*jT76Uoh@#MQ#QkoY9F0S z!keZq;d50HTwDpO_LM0l#7St9gm(YmsF`=u|Cj0yYJZ_^EZ6T#%dMrk+wyN$(b-YP zfgdQEGPvi#JH#~K90of}xc?%c+62*p6?wr{sDI^qJ=Glj1MLTsUJe0wPG7+9RRu4a zPW6`+5XJUn0hi=%wFP9Ds#=5Ju8N!F3Rr%aDl6W%wQo-)-j3;u_l>H6O|E$52dT2+ z;e0V!yrsGA)Bn6*tBMrmidSifDl6dEw69GTa9OT3FJRSK=&Myhs$2o94p38%p<_nUuS+UNiO{QsA0U=?8^2^7;nhGm24 z3{i_X^y0FD12vdvXzK(4P5*CnwXfKm;O$2;gbPT>G>X zP+>TAXTUpTf1ikCAb3rri3y8J@I|xntaDl%{)BK`aMYp+2;CCUOl6YX4Y;#NvtR$U za~fXOFfBnTN5lqUkA!PsQy?xc8%-pmS$(^G8k`JR7W`38Ofa1RxQ4151w$OYUoads z-fGuJIu5@p(UXv(B_Rd^a2ZT8;JjdAO9fN$6VA;lqsEyj=d>({U!e?yxzSJ%8wY>^ zK&}y=LG`dr(x0|Z!PV4jKb0O&&m34>%x91sn({=yl~0xXU=70f==3Sl8=s<1Ic zA~CuR?}ZE(PEQsf9uvY~!ijMwjDc*&Q|V#E5#vfmiwx9XxQ|-{kS9EeQ2GjIEn(7F zADbh9PJxpL&L6OIL!6c3Jp{fk$aY%rFhCJa!7fWbfohg(n=T9*85;=6uKpm)I3dX+ zt|B8{0+hitju#1xn?M4FlEDiDlO>K4=oTbQ2N*=cwW$T<&afo(hk_Xxt5fwC`jG|h zmIN-GFi3)i4fr4p99O?|1T#h|0c2kA!o8DkO${R{9v}ek1tIREt4e>vMKIyV^xqu3 z&^P&_<}6MlDVhbN1{kvOFznd?ae>)K6NGFtc%gUlMW`HzA^|p%h}NPFq#?!bl7gQ3s{WDuatIJV;~y&;8_hd^y<)+aejsDUf3 zx$X5o_X~WV{0TGMwn^+LlQU z9al<`qVy&okQ5nX-NNzXiiXmsh^yc_^<{dXJQa4M-hAYLUzb=rtWa*Z4W%TE72h6bbROKYc|8P}K#lIF?{m!Kew>B}mqE2Br|~h73fI zU`CrGft1bW=|ZSX0HG1#+yg~8Fb)Bzdt^G77*`xq@&8TQ%QW+6=668rd)B;YUVsDe zgn5^Fn;AB*GiMmj8$U2U3m)+6jnl^6#x2GT#Mk@^T)?mEp8@pn9r~N}3;Jo01Mk#t z(>LntVg8#-Gx~e&XWBQ3Cwv<>ukc$uvUaAXHC!d9xQh1!pw;nnQK!kZ7b+vqx4@plR}u`$DrvRu*!>*&{a;a)H?+^@W^& z?#K$26B1t-4SELWj4W3L^C*Ou>kB#Vv{dDa?sT0h$lqy6;cTwG zwvgl6#iiFSnt1KP31=@TJ-e>>?71V?Og!!znNPv`I+4Wv0ASw8D6*;#GD6;S$;j25 zvO!fSomMd)4z#p5iA5tmw;(DnL)Rr6&&lV2Ujm+V|vZ5>83uc#GAR{Rk)Q-&JzX|>{k#f6%Db7&NAE+IbDk!?a)cg^hBKskyr5Q8(tv!9!h(_rWb)r*x`pV&l@)s)$%-YoK;Rh+QpO#H8 z9zIX5VV+#&e&VfS>{^w&Pv(D*wm>r8Jm6UeH)9;+q|ObRPGLY zEQSTAqV!C5EXG-the3;gHoTctfbhZr7ZC~pV4e;Ex~wGG+70KVLYkkLMfT>6*v=2y z4~!qjxI4dSnwq@+X~dfdNEe(`2~o)~>4#VZ2nP>P-fWKHuZ9CehQNM&I(oZ@L9w6Dgx#&OHY9k9i1*tCq1vZAv&ivCoLM>#yxpC;T|#8tsH+ax6c-0 z{U%ndl`G)}aHC{{1ByApZh&2)9|0&G=6l@TLpZtz@Se>p?c2S+q&) zf#BYX(WTgh!#d#4W|9J(c?ZrjJKOej>_51D`_4NXo5uIE#_KvGyx$!5xszyQcm0l~A@<+5b*>`j*>x`pWU$i4*0XZgu1i z+qkLq^77Wo@*n@a*65pAb!T1l{534_3oT){2qO#kKy!odoGku}j!8B7Hu_?6r1*gQ z4I3JL<9FCJ$?n(d>hX2b!Pdj4U0=UOy<&qTq^2d|e)9(KKkt+p1|lw0c}BfmTX!1- zVf1a_q0$h_zzcwC2+b;?jxc%q*`2bF+3QH+jwT{;NfC3?ZF@`SRj1KAFVH0O|6PRT zoBwS7()@ow0sW@=74y^PbL<43h6D6XSOFe3&w>VU+&pF;Gi31G41G>yyVAirb z_&>(q8-EQpz;}&5Gd_-flbwM!*H*Jn?`hjihnd*lX+{A~0gCGwO|NjjIeV zhynkk|1B)yKhVFSe_8*O{zv*V#08G(uVXiHPVd({(K;SrM{zT}pzHJ%`XY7}Gqm5} zq5N0c54CT=4EhPiONg-8wKi(M>xJM-rQYI&ol2$N?1gJerQYO)HAxD{5rC#IR>!e=oZF5q;+}m0MmpyOvuy>o2vbbgA3>_pacy-M`V_bj!~neVwyCFVyw zOH`t}#dEDnoNVzdR*9B9o<(-zglD0h=<+PE6P=zqJ8|4|jh)DP=G%#g=W3P6Eb?5X z5{uHFEA2$eGfyS1PkQF6M54x1s}eN_J#$pz+Iu{+RbpF*XO^@NeMyIBrb^5?=JBdT z{XvgMCEE9Uu26~HdptENvH4cd43%iz?lD!OG2$^)V&y82t`gTRmHywZeONR9$^0Ah zr{?#}KQljPegqVdr_Hx12H*$HL9_w)U>Vp2H&C1y;FabQ^D5H=2k`U8FNgyEp6dA@ zHU7|er|~!}z=b&A{jddWGJ?ix;(+JlT|BP;qy7v1C$I{91*DJWYvF!GA^q|*L4a&G1 z-dszX6qkSg2CpTJisa{R@K|=U8l+I#6@?$C&~8~ba6L_nVdMtw^}^{fTK-DBC!uKj+GMZ06XIcIt; z8lK$oVsb3Z9vf6(JSYZtxW<2@rq zhKKKZS{?Kp^xUTs-tFEYb>9_mbl2f6(advs3SF^!D1R z_cVHXZC4uk2tBv z#Qxu?eMi%tNBMh=-k?YHTlD?<3H_`-%xny)iT*$IpX$FdG^lfyViUX>)Ss;OGkgU` znB|25$JI75gU#eY z{t7uNro=Az5wvH7tAZRFh5NcvP$FnQu~`;QCeuP~k?Dc^HINO_(K~wJ%kCrA?j3uQAv2Byz9| zK;i-QUQ_3O`!#G$c~j>>``ri5Qg5dURq}6kjoQV7V5rF5KWo2-P?M1RL%Vt;C$IHw zo77@xAW7z*ZNZe8qetrIkL;)3r#NMsI5P&8WJx^jN3% z$))B^rI$H`AzYZb4j=oHo4Rx&+E168JDf{hCJ^;pH`CO4YN@%&x!f(}42Kv*d+)Vo zeDd|Gwf0}fFK0b}#Mo^FjO##I`WcMj&*@_zd33Q>zgb@m(%17a1bz{{{}YVTZUc}Y1(7MUJXktU`oNsM56hTq3pp5HORSB?O%onn+=UlfH@eSIwc!j&2zIsAV!wy;3`Lf+*oqrB7Tt`|t=r|dnQg_4 zWis?JU^R8tT2Z6EP`jOVR`Z0qRl@O@g;vBCpisApbg8LxffX*Pb?4S~R%pVl++lRS z6|~>qsY-i@o@E7$rMBZjQ|C;}Z!8fG9fp}&YlBFbAMs{cO>&}LYm2S*6JFGHJ&{Ix zt+meBWLLuE&bY*CbgR4QpgUOAT5IK*`N46X)nKfiK;|^pT4St~5!Pi-s#-`!f{R+MhgrQ_~{T^wQ` zyq7{aKH;4aN}v#iqBFb;gY=z^TTwHm`g?s{1DFo7Oi^jy>COyF8t9UwFahPwuCAV; zGfn4mDf{uFcdhjJ!&>9bXuQHnNJj}!jf5cb#Dyb`J{(nW3WKvBFP$xWwzaqI+}3z= z6#=&Nr2Bij(oOg0lJ?^lS9$y)t#Q+A_<-=Af*v%*|FLoVQ?W2!B3LKF0E2>yuzSna zj<)@co2opW%JH@BZ#th#*bf)Qca?W#~4tQwdyBH8htB7A- zcWY5#?15d42gkRmp6(kgkYN#=%c{<||G+L^7j)4X;gv}!BO>G-AW zEj{gYS9iBBnUTAso2=!zF8eLSxvA1OvleQN?LzBC>m)c9Use3}l0&xGT)7p)Jv@BA6((-l#oOMnI=w^-FUa>N(ldd%C9y zPq5>*6xBxcQ(EILx>yD;7%_UH=ZQdYgRih3TNj2;II2U;NpS)r<5bj+ty>$nmyxabTXCKbOAI!O9fwr^pQ&|d z==hfye{3Al{|#imY@`;>k?UeO>+VMRhodMt#xviQK(K&j?h0#{7lTea4!#9eeig$PBjHk6hEx zAP?)#^%Xs=qL*HyK5I7Kt>Qu8$8QybJWG-oz~;;oS-3hPQGCA#Q|W$&x~|^TVE3AA zn!xX^`)_H#eVs4B<7SN?$@SWgQ*+V0itncVqBa3TMI=mkKZfT>l-PN2Yk)ur1)!S- zg)^Ppf9t^m9qro=wFeuuUvT#x`|i{D_S(l^=(q34owDz)`p?qJvVX9a^#eda&4R^| zOa@?Z=lh4?T?8K`mcd7bW}CTo{CMvEqDM7U zYzf8{JgSO2zVnEz`zYnJ#*?lX@64SodQz2_s+n2UrN6JMy?3Z5%}c4jg_o+~rOp&R zs>(~vm|4}u-+2TtWk1S&sTt#}NKf03QmdN^Bis(g=pe@TDscjbw(LC6vAqqed274# z$9HO=JCo^K6KJ@RTR3x+tgY072G(KOa%X&}6R2d7=f3I7vtee{SOG_d4v}jrc{Ws* z=X`F+7Dr7o6$Toqo^>-}O{yH=;D~@Ln{UmHH!=>dEBky}d|%U%+@SsZX$+(K4Rc@M zFeLrIS$jY;|IYl8`KRW`%=eh1<_I3Z$Fcae;sIQ5UTx~2|Nj^b;Kz;k8gIqEcNPZl zL&kRO`8QzKGeGzK3E2Oi(EmVxoBpW&fPPXxqTjCHs5k0M^x4|~(SD)*01MtnfmL{` z_9zdtf3+h)7mECyo9fNs+L3^hH~z_}H(P2){BHgq$wzBPHn{oc$p>pkn%w+9kl#={ zvfj=AJ^8h@BkM}?jZR*Bn&Yc#N7m-^JfD1nn}3Sq^|d2w@_CMvU+v`e_i%h!?Z~Qp z-lOs>ojeNDdh@#4ksI9nugEX19jSNn<`af#yr*_#MIk>!e`M~+a`K7|A!oj=(O5Zm z#OD@_Nx=z_ug11V+3LK5yf>HC$jmGl1BiFeF7p1^AcVvlM@R$@V zn>%u?TkyM5a6JykZoylmVCmeEMQ*{Hq~N-_BMaSvH=3_$G?vUAS>P7DK?<&&J5uKs zyj}_x<9F;9yiN)h%^jKV7Q9vp7S0{H+AVms6fBrKa+O=~JLanzjk>ubSGom{O2IXA zN9MT&k4VA%xg&Gkf)OdWdhSTATQDpISIr%n;}%?yf-C2a%>KXZy$N6)S9SkC%X2ic zEya%GINoB}@+L3x+ZV6#9!1`ltWK1-T1sR|k>n*I3!_jJg#ZOgfk?zp2FhBX6bckt zmhxk3p|oXb%UYJQboo*C0zv=Jxij+?E$_)-(qH?pAkSy++?jjl&fI&?J@=gN*Gu>v z^SSGdtLukmdI`^yg!=lSS})--NvNwIvb=-=Ntj(fRO2Psk}#`&=qfMaQAwCtKQzNj zc*J~oy-`~~uP{EPF9qX! zJ-hw)X+L2%;7`r3yM6Y5$UhPsi2?p>x?gd_dUWZEhZg5?d|3f+Gv6LD&!~;U(wM^p zF0VPbYp{NSG#tYSmnPIp|8E{R6?CP(?U# z%oj~|6$)xt2m{jo7$7QGMzHcFBsD7UjxQ&$w!weBP1>m2x~7K_i?HXR|$uc9ar^*_MYv`8t)xiL|pOx`Rh zWliOUz}26d>w6ONUbk!!>2h8cSb%q@;{0?KPA3suGs2?#?GBZ^iq>W{%}9K3wuvsw~TD z`NXP(wG*D1?daqilYfdIS?yT%;zK0`Rr!`J9;Zr>yHf&RnJUQp%&f5)^#7bb!msZo zXz!QwH{gf+PFOlVsDD)dD|~bRUjGXF{NE$u?c=HC0IDWl* zjGOWBy#>sG6f1)+ynY`vo{RtQlUNj9X*_Mb7N6j^<3I3z8TS`|vnCX5NP1aRv{>9`hV*Bm;OBy$G-5r_4Ma zif;j-T2?{WO`844P<}*)& z&t(4U>0SJeJq;(WPkZ_RzxvZh`8A)$a^suvG&N^v%1-WZ;{B@fv=wyNLbXx8ULuey_jS!0)1qm(@n(KkT|C0?nv1vcyY}K;{BFFM;kWss)MwL0 zsgM7n)FhObIz;nQdMtk(zll6HG2iC=N`ANG*YmqIALMsiUdq~$-@)&Vd0N1?GcP6X z%J1WMcm5`R_vAqW^X<(`>HG3h`u@DM#!Y!?jhpjl_-)Pi@_R6Up5H_Hhxt7+iV50x zbhL)wiO_tdC7dwO&?zuD2f z{GJ|_7U&q2H_|nFC%@gJQhLv5H^29fp5wQ7^dWxxE}8uHUz)}5xl3$^`p#csj`Tfn z36revIhUl(AG#!M{_rJf^G7c64fr0tw2j~AUXo|GFUi{b?7E4R+3GU(l5@H9ekIFq1zfEt)xdA5(jsLYLn^T?HnLAMo) zCkW_I1=)xLR~o#RG++r(h5@tCICu@YLI92Uv+Q&Oqd@(zafK8t4X7bNcVrTcgLBCR zEPE~y0PR*lOvr`$p20C77w5SG$#kx9a1OZ$dyKMYk!8n{urcsn*mekmasWI@fcSoL zT}>`vu9=ymXy{;&1bL7|E`xebXiGf8ES?Dt)=zAhYRibm!8)mC5K}iO>*)k&H1PzS z-MK8YCJ-Abw%Ib##=+U-N@vor5o5+@TNQPLN#!`nY*e8#xfF!fi10{mH$uKZsnUss~kRMF8E)>iFrEC7-hM5pDS zt)5Q15S?~*i7Hq{r@bC^vr30`ig8PEblU63lKELBg;ddL7qAylrN67&qtnWxI6CbD zRvI%)%Ba#_*U?^8I=;HQESo69(`m0`rBPc_N)=UeK1+Zq0|)oV*+u;pHQM<+j8#%h zm4~^O2CFjir~*)EDXg$;x|WBjaY~uavS}WAbCr=x-CuoT6ytqj^Z3NBDtVYHpV&3L znJPn{Q;hR45Fy^nUqSbKiHQy7{Vz5|sDTV9)FD;AP<{7b-G1FH*tfWiSL2(e2Z zj^_Lq>%PawiQVinLU^)OkRtiM1bSe$1SRn2PtV@+3 zpRZGt_W>^(%jK^rd8jI#{s!=XM1=xzDl9-*alpM|aMs|t1Bw~AZV6oNouUdQIUn&2 zW7+)Nl7gyq`=xvpRTM_I06t^qk(>{CDQ{^`NjX*8ZVBa7(H`CV^YJ<5c%R-9hM23J zl2Ft&txD4^uC1zp(jk)hL3LI`y*xrr?uXIgwLW4Qz#mr0by4dlWP z3ky4*8fol-IADfC`00?H0YdD9=H&r>0N5T-jXmxLuC@F9A;1aj&nR1zODj~1|%NVx5mL$PAo>Cc83GRw&r4Qj zv;a#H%8m-KBDq#by|MrV1~8feuPD~c0IV8-1!ABBe-Nfiw){u17oWQ*W0T#`% zpTSm4zqoJV`QM-rXq+SwP3|ye@69j4DU=cucI`rpNRw&}UXj{QDT|JaZbGMtWV7*H zh=snmn`E&m_`$869FoVYf}jPhT?a11WVk&|Yfm0Hd}#lMhFymbAK1I|5EM8np~<;w z%G2h0?WbeC`NdAlEsKcX9*rzi$&p(I)Chav9FrqjU$EBU_e^nIP# zu43acr#2K4IiS#=jM;VhMI{r`y2;VQp<1#AZrRbuY~MYf?kPPAcrZ0 zJ`NubGb<>1WF7DSf`fL3owe>R{CU^9z=usGn1&8KU-NzWg-(5xV@wr&b5(8Ck;GFo zMP2d~PETQ4HP(^8-YHFKw^bC*m9oE3c|`KcC@svrBLHf;)%9nCjT-$H_491bzMB*dzHyr!ot6uc_8W^aDvy zKU3jsDhPI28is;gI1>(L(4sLJF~bLv3Y~89x~NlSwV(nA#vaVCa4Il=2S(hBtn`I>x(LKK*xbb25~J zaWziQOkj;ng%dH1c41t4*=_@`)*o{gUK7e!Ix$>h)Iy1cdK6Ajo11wT4by)YE$D?P zj`0AXn1njvpbMTCP{`OWc^BY$rq2q<-GsU*N$yfC6*R!7n)H7Ix$D1MJBxo}9qH;vghP*sC+2AI zzy!Bb!@X|*ZxsB$pBnd}>$hsJ(Hg00@$cdMdgmFMssgpG*M9a}Kx$i=U*}ffH2WTv z8_~oLPskPy@v`7g=F*^~B?M#-rfPh863IZ?nLc(C1=QQ!+2^(8k(Pa($8=uqWO8$OXBym7QX~DC3JFeUZ<3b?wskfXODEmhD9?RS`MgGO7PsD^*Nj^mRJy9mkulqsU+vaqKl^!A zT1G7NK!{`Zh)0M{6PR|udV$@;M@1H8Ilo(W$M{#p*tp%R2`~ccb!}B6ro5rU42`Rt zYAoI@ov!jHbBK4q@=s=n3}KL|Kn4)NEURdLD#+qB;ZM7-->ZchjNEtNo+?SA0*BoG zze6)0G5*H52~6Lutng8dr}_72KIqiHI)34L8M!wl;i|P>Y>-G7+Jq&oeDeuyoD=gLu zFGYYaelBsvIO+TsfUyb^>!bM%ZlehhYn8hG=aoic6%)NE=_Oa?)8}BCkG0429x#r3D^)IC&4g=K?pmI>?@;QNhm5dDYW0HJ4AM7+88an zh}kbB6r~BL*7}=?Xlrh|kdHg9xh6I>#G+T18(5XHeUH&DL~wZsvJawPA+E(m7uQ@^ zzJp}}dZJ6NTeq%ZLSh4{Yn$wvyvv@uaQVFBZadT}24JT^`2{7);GgySY%F9b+|WKo zb4h|9d&OU6$L#?gH@gRAp!B|tBKqq1!|RQI|7`&f zOaDKly+Jd7Y<|!Ds`**-6Zq5pvH1qDKVNDN;&FGsnKSP+j}QyA8SKB6=0dZc*npoI z{|55k7mUARr{GVFHye55<;Dx}`8$gTL7Q>HXu&HmWUK`->>5yoe@TSUKZEr78U6p@ zS@Q@%Nh==#BSf~t>KUoyF?5s@r?Gn)^I?H9lk%XhW)PiI%{~7E56nm zZg$1jSi>7#@sc&X!4*fX;q^*v_vNkOb*^~P8g6pMr>)_&uJ~$ec#SKLSi`H8c-l8? z4X<*=r>x-#-x_y$*enKisr zi5Yp!B}z>CUTO_5R^ln&ORV8VO1#rYhJ{MJ!}nrq_x#&$)SvHC(F_Z`NT{I1hk~DaP>H)md_al2M7*HHog$uB;*GxNTTh*H#ow`> zI;+GTlG^Wzr1mLsyYG3{Q@u*u=6lR~>V73|mDCOXr|euq1UHO|L+Hs#pe zb|s{_Qgew5u(*r$d*Zqv|kB1=9Xw1{4H<0w=Zt2)_#zS}|A?rXO7 z{C4LlmhWg{eNb69x}B{J$i`yWoq!_^bQ9J#7crY%sW8f84qXu^rL z=tNY)r753IC2qsJPnguj01;vRA4&qY1UEH03iMm-wj>IbV98sepOsW%+zFJkCKd-< z3oTJqOS}~toG>1pY(^4c1x0oW9|Itdi2q0t0RVehp%UdvVo4>&o$xe7D&kU(qpntc zCAY9)$?h%C5Lx1;aInB6idQJ6hy>OL>;a*Ib~^5zbQY?DCR_fxIy36E%*bzcT4XvE zIhn-VkRrg0y-O$(u{g+!!At}VAsgn|3`Mw>ptkbnFRRG-Q}Sx0|C>PdnM?F9^3SvX zH*iaSm$NCixN%;kzCLgkBouuB_sq(idv4giXsktXt@E|g+0W702lRn`f+iqvE&c6T zP+59UgGwoOne6FouLIq}xvuX1hSRVLq2o!KhunXvYvzgeY;U$9$$x#IMm7+g)!W^- zdFI9jIO0A005vGAP*$fEWoMkI_Z5y|X2r~z-oP_+s$qwFP}#}GonD7E#mNA+kt(er zCjyQsrZ9sJo zo`$C$*MREGWjA22z${d1Kqtev2DI`y=!ADA_pUq z-CtP?mqUu&%qDU+mO9qAg%l^Wk=Os!>#(9KBM;E3WE;m9Zov^wKTQU zNtN|$S+bWt{=}p`lDl7ae@v$OCjDC7;f&Kxo6sR4c>=6B?Tu*%^ShmwgLR|Q%NgkC z;N?77l_C}=1S0R8Axw&%Je4+x$~rrDkm z3bTYdKW>bZ`5!(%%^2k8|Bru<8ToyM?tZeuTH~>%Zoa5@CaZ;-U?1=3lI|}56u%{w z8U-B$;K70{R=aoV@2sp)aH~msHtCb}Y*M`*T-viG*-J0$*_@d4BP9K@zriydU7?`lqXWg~c>71VtLM{atJ6)9A(%`3dg}$5bpTtyaoFIhx8Bq4{G_!{lBE; z%lp5neL^!T5@ru&iYp1mXofK7;vy`OaDUt~j@% z+1`-9xlq?crMhOR>sMJ#;>7Ov$A}id4-UX@K6@6MeEk9NuM-vOs%pP3lk87!P+ljp zQApjts(*c-XS$rEvas5n$)4#3Z#dP7Z*cQtx8_@%-nn?$)pu2>@AFOq)~eQseuR3$t18`bm$|~srDg&*jK1a3w zpP`-7jN9=2y#wFhQ&(;bcp!hI@RhHx@YPV_di`hY#}kbbjfII9A=C`iD!lE9>klR3 z38HRdu}&2Y*w!H)uMMRK?j)@{g#Xa=Och0FA{8azx1NlSKfBGMTF&zUl95!1J ziY3g2U1)&MQ($ywV%b0>;EhM>DN7H$(xp{Y*+15Q{Am8*^q>Am0`Q;1$nQ@Q(Sz$P zPSE(%Wy9Gt?)u;=5V7bCf9}(lAA04NJpGUKA3e4*e_)-O(3dW+XhnJKyj{a9_z!%X zK`E*bXXBMBgN9R`(outv;Xm~MI3W=5g-sa+FbWhr;|b$&zq{4|*1i9H7EXxHj{g2m zjJS*wsgBbi;%7QoxmUHaIAy!zg3}@e2{Hek@XLzV?74B3Y z;iO$%%|ebbrLTb*N16PX0MxX^;}+&6)&Fa>t(v(DT+ikD>p=f~Cx_GeJDb1N`O4-u zF09tS4G9AT&?(7!jhGXBJK5pEw;t$&0O0uXNH`9ER-fbF+)xzVuS-5|EJ01{jf8RI zx%@4KayM4#+eRGN3!=q{BFh5*KuiYnCLkm^fbnp*#?8l%tBqG~QFO}{#(1~jxDh{_ z7n*OB)cMQihpH7EBZx1CyE?9QaY~mkBEs6z0A(}oxDT+?K%8WJu$1OAZHJtmtj z)DS9m=KN8& z-s=}GcfShd`Gq&H_b0AjQg8hk{Jo-tL^0fpLYD%)#`Y_zONw3;h;NPzN-A?N)Ute$uo7g(a__*Ha zB4{iW!MB+yI1vrtXU$?e0Cr6%5X2cg>IqFc1HW9gK9yK&D0`8%AFr!&+YO%jg7 zs)+4y;DW*gCKK!|ObFseK`50!3<+ala4(VFvei874(~^e+b-m9FO*$%UTH}(l0(N4 z%S9Q<0d!=O5C73rRD#+4cu}X%7H2V{vina^Cf(&7h1eK?$DAE0KC@C_jER$diO+S+2<4A>$?QA)|w+*QH zLnr)ZX3Soc&o~Vc+d1D`8BZK8lpigS*;Ql6GiT5A?Ck03>|kIgp!7udKB$n?oIB+i zx0woEeRU5keoYjnzv98XaE9@g)<-IgWp3sAaV;m5J)GrzgrS8HMF-L-KVumvR$ymD z##KQLXp^L^rSN`z5Ccbw(qWJHljw<&P#E-2G?5^_-tBlweTHI`x2QMJ>=q_w;;LPV3DeVaEs zLPKAZ)hHfN_c(P~zYVow9$)N~?Pe`QQHiHn5QTG0Hi38?pl2rLIMJa2^hQ5D>}+o@ zY*Gih)6CRu{n$s;zYSBQZ)@-y*0M2seqN}@_;i+sDo;wS%t`kr0fxXEIUCIY*aiR^ zF@Sys)j0Ge8MK~E4z8hF9J06U*E3RY2VUD$vE!sZlQ=iUwaZ=)kD)}xz*(`LMpUk zhgY|)2Ti*4SZq=fT<7K8ym^lz;5|Y$wAdQG$NS?{#gm*s<}RMnf8j`O$Fn3T<%_sXGPSg&_m8z;R0#;&e(d+~~0>UgQJ zV{f#Uj=#jqw_hl;@6vaaG$`Kpc#O1lb~_c}P|0Yk*cOc=Esp!gfo^Jr$iK(bnU%u0 z9kCjVB^7T}a?vtj;0Sl7uF>tACx4bZ@bmia8Xp!kKKc?`&_j_ejeL zpcf9hM~y<`9kG^|)Sp*PPa)5d7T#!9axa47d%d-ATqfuIB3Qr6&pFr1b*te4kCnbi zhb-2;`*FoPtn$GUUY<|sZ*9Wp?Dd!f$V=f6FMAo(s6@}(3bFW6D^^lX1*%QlXGyy;3$^;hNZb4p*_x{$!INtG-YJiydnmJA0{EbswaND2C^l051Kjdo}2dFv%+qb6^hbSE(c%$avUPc zNDdr@OeB|zq#`AEhr&R`|IN_8pqVdb?mwhI5AlD(A5oyaw3_H!n-&6+J@w*wrv`No zYq@v=r+fHi2}(?aiT`77FaYmkB%H%OknHZs_F|>$-Rj~4G>lI``xKynhJtI4H_M1k zo)XMuhtKx+kiomK0mHO&O|!i(f4^JV9ZfBjDtkMXUBd2KGL~kmgn;;DB%Q^8!Ez#& zkyt{(JP3M4Y~QZnADHIwVLsEax={A`6Kl)!@eJj)Ut%t4=_;#yuDAP4L)lepiB@c~ z59E6aPg2R5LX#(1$Zi8T8{n3KfacG}Q2*)3^k0m6;RxY?IqylfZdGML;ymt2#-DJW zq>yilx3SP%ILX^6D}q(v+5V=kydp@%_}N%6Nlp>Zc*6Ks484Sq!cd$D$Af7i7cv3h zqTyZ<2G|&+qUrYD1Lu2H^kh+VqAAl&+`#yLS6*=@POrdk5f_q)LCOp`6$o{HLDmMk zI_ytoF`&tA7Nwl*DHQ06#R9)&d{^fG!`kbe_`k22p94w%1Lix;H=0j_vi}5#;Ag?! zZ!=GtH=8$_5px}1^0j8I@hjs;#&_Wa`>gRv;{(P!jW>ew|1z|PhmBt2G&}%DjeW)z z!*8sDDd1|ur~jw^@A^0368Mz)O!RbZ-zJuynBTkgpuC?0d5{ z;zW5pC8^Np+&UULmPY zl-KV|suSh)`;zKJdA(dxohYxDOR5v)^?Q=)M0x$5q&iVvFVnta4Lea@FVl#pbE3Rn zs(slScA~sqDydGC*Gsf7*9=RPmpqeAE_CZATNE+i?-AZ zON^I3=Y<5zIU!z8`rc*@J0V_A`iO6HLcCresqHG->jgS-i>HHGG#6e@9YJxgx1|D)D)e zdWS2Ldb<)IlV-fl6=}v>l{g@&x40syCzWVR>IqkTW6kh!M19V4X^~?p@loxIHN!_$ z;-fU^5taCeBpz0YkIb@$52?h5wJ%x22VL<6*6;x(KBRro8g6w(Qg2q`b0osFMTrmk zUSBhO6QVxnfm&;Lze;?-{9MiOK9zWZ#JwuAnJ2^ zX@Iy&ykBk*b41@8r2o$#0@&PaJOG1V4dQR`XGijiOS1OxvcS^YE6rrP8UF?96K9qT z;Fy^>AoYOHpbEwC%j%n&e60AG^Gbzm)n z=?T>=%)Qg7xD#IQRC|-TsZzCLc|}gCs$I!3N0Vx=ll{M7GJ)n0$HW#%Vw8-q2g_^` z1gsN!f?ucF)YEJ6l9xb>uQS(Gs`|FP;Ov%r4Fq5&$6 zRWpNiGbD(d(WqDT?c1?!u)n>tw>SAfna)#|j=olsYl6nJ+FU)E##3@pGeN3~+gd$9 zMaYL%9-uLq0j@O-V+Ft$SUZUk!Z?gqONi~-BwPoDPexSClByLxoN?(B9$$VS@^sY0MswR0(MKP2^!e%v zaHF~P3h1NEAc|vodNaso*5sgy`jg_g6$?OrKuj!@Dy((G@R|f7g?CjLb_;K*kmAlD z&P<@Di^<2c&F1Dx<5?)L7@Mazg8)#>mL1sC8GIJls?4TXCE)s%j^h00k49rz?;|Tz zbIOVrri;m|9W!GUsx9+>LVH{@zi)oc{EYcQ^X)Ke{jT|3__ppb51Tt+n z$`9`@J**qLi$k7^YM5`5dYmdfJ$vZR!r^Q=dq?3=Rr>bw!`sRaZ!JH(rTp+@`QeH3 z!{g*|G-$O&!`*P?H#|4 zV_)6SF7NoY9Gmq+JJt0@t@ak}O)Itc)D7L}X3*ZUjpO>E9bSevONMvV4Q=-_yqOH| zsvp|sWq6}xct_pPRxiUFYt-=;_t<=m(X5}S8`|t0U*dRw-B7|i9_4sT-B8>;*55L_ z(R^v$P^@qa=`_btFaHeAzqoEF;vQ>n;P?e~L*c?PB-R{5-b3Sz>2eda{UVSX>)zq{+aC99zAs1rUM;aXD@7Gn`uMC`Sy-MrA5u7Tx1#(e0+t_LDt8VYQ#N(Uf?59Z^ zvCFxE{3Q;xGtVbG`WsHA8nPFX>Hf|Kq>?}(*(lJ8VW2}&Ikf$RKO8N5 zxZ{nOg_(Z*iE7r(;&Z&%eDNgDF^Pp!`u|nhi!`&__=?fW?A^q{f7zeCV6>(%GGr@s zLu%OE4rCslPjRdVpjWa{lfbQoU9b$SAh~Rc4Y2Z|pwO(&Kv5VOyglji(V--j5u*J* zyKeLH5ERm@|RX=p1Ju56*8t>p`Exh^W6Zz9tng3 zZ1b>UfHyN52dM=yIV8AX?`5kzsEuQ+k?(ukGB7M<0&-# z=Nf%5f$jv!Z-)MlVE4U1PwQL3>C?4;)4rzto%T`fy(mi;wU=tYqg~MM<5neqGlvc< zU#qK0J2!LaP~jjwbLe2%c;tj3*w`OuaLHQHV3|3o<} zhBlLDTUo8WJdVc`nPv_p$fRlRcMvZAZj8 z&<4&oO{lrd77K^gPj$}k%>P@&|MyeG06$C&@D{1%H2&|{L(>(6|0;s-_!*@xDuuZyDs}mcQkRuJ?P!xKLDbI9PV`I~ z6t&a#kItqx;+(r}>6s~22j!g0x~nSRmG^Z79lKD$v^_<7*&OK%xstQE+9-eBO;kb8 z*egdBiD>O%LKUV~cicMfugbn9B~Dh~acO0BrK4A_=YIVt^_=On?R4t71$5)e{9n@R z#?`4|lC(lSo%WO*720!)zQ?|9w6-w2PTiimpfEQ-oJ21NCo)FZV+NP>5U9^kdZlB+ zw}M$NQP4mtP4|0fJhyr!OUsf}l*fm)A$$I)HJzFX22XPr8krwd=wyTd7(&J%&W0<8 z0H;_8E<6~KL(`e}OX@IX&AJ|x{_oRvYQ~fL`?Vh+T<)K}adfWpZB$>yVgJB=$`6-b zFf2^hG<7Zt3uqt?0CbA5E$p9#N4p$Pn}Xjbb4?SaXz!S0^;7V+85O2ThONb`=EDs% z#cqJE_Z`+&qQ9ebsqIN<`$7aJ!^slE=_U$|o`7TmG@}M4ccEX9*ScYJYUo-Sir!Z`Ck{6A6Se#QRt-f`?dnr2@!s_4kd%ym3!Y4C_V(KS4t6=t6UT&{*4#$uAB}11x%m(P-AJsl;*N-Z?;pr^xR%-v}*;w1v zk19^$>DA~X&%)x)o-?Ybi_6~JWL8ZE{gv8ZJS&z~d*`SkIi^nA)*PO4&_d@qNS)q; zcL)YPW{7kO9?w)diyJY~WAMMGpo9e-*_$tZgMI&Tv&Vb1_f+3e9=*n$^tP?3vZKtd z0P#dQ%s%Lx1b;!&3<-4tVlyFrBCeHiC+{JC;~nL3kMb_Nv{L(=_Bn=_CC*!}ZarG5efHU~`PGkl%%4?_kSn#ndp3-Ib4C}rJ)!De z&PwfXpB<~;HKU3dv~1X$@@x7ys3#cdCB8&FSMc{p1>hIX#X|sX!@igdd%bge`Gn;h zPH)2cxb|_ram64yy;^+?Zy|VS2nxvI4i^cB(c6Mp1A)Q;2%L3G!5F!^t##L?53 z^DEzntr5r5^BGBXJUyTBeb5>aPfugc&-7Q;jEJkJKIdn%tP%0_H0J!!_ko%b$JO(P zb=HXE>iGjn6jx7u&JRd*JUu_7z0ewQJUu^y!|;gX>G{{%lh%mi>G{`^DxRLkoR9nd z+!}FQJwNWFvW~0gM+}}Osxo}U*ldkN9MSjwnvt+7>?7-}k&sIK3*Y-{MuIBwFQ`F4 zC4SiVr!^yfmH1&2H>t!ANzP`K_#vKZqe}dst$; z`QB@dtX1Nl`rc!WtWn~7eebqLRx9y6zCW=>Rw?n_zIRz8E0y>szIR$9jY@p0p0`F; zIHK>5t&!zQ{6qcK)<}aZUbIG*De*17#n#9Tj)>3m$WkS~9zW)hC9e2~*2rQd{(+<} zaz#=XD)Duadc7->xx!h#Q{p8_y~Y(u<;&!ajq0zlM&>x8 z?;Y02)k@4uYP};$YMl}<;x#=o+ZEqzjm%Qw(~>&V6-ljC;;SXqaz#>WlsF=(SGnSw z9sM8wUzz_m=+C3y{RSSu7+_r5U1rP*1{g7Otb}0u*|T%l*N?h;guvt}-R+uA- zmZD6_a;qd&mRvv9evBE=CGuT1je7ow=)Z8BO*G;VA$&_DgXv5dASUcQf^3E-uQ#va z;#MeZlC;aK=Z~}>G1IzyzthnszrfNkn@J@7xj+v5A_C?jIoa;Z5)y_NI$Y&mohr}& z6}8DPXkVaKE*J20YW4YKCM4XeK$>E9!lyBoW2-xa1qX8!=roCfR#JKXuUM7xGd4LVYl(l^2ztVnnZq((>ole2eu(_Xs7#I5R6x_W) z!XyZNO@dtng*n8A&=5NXi}AvBIhv3n1wW%bV=o$AQ&6R=4gK2Wzo__6qE;PBoIYu(_LU3cow2o9iT22wZ-$7fQ4 zZ#e6Y#zp85c6y6ew2EgLw{^UeCk5dPH9JoCcv?CWfah5$E!1pZHR@8@uiv@6(nF{L zVT=HjEbwM{0O3i>ZZaN~=u=akkx6GvQ}O?n_NYd*Z=>;c zV=q2Fr?nrF@a+8EKPqIk9=^nuO863|*3}A6FOZ=UB7qT=zWy zxZ&2WTT9PStY{gqEt=cT^(N0ZHJw^FcK@i5)KaDjblOp|%(b<6aiT$BjKTC02e<*9 z5Qha~|DsUhfe;mJJ10J~w7Qg7`thu5^2%I0)-x((w3NAA+O_g?t^r3Q6oJYR%uqqk z!`MlD}v^>Bv9lt?R91x$Ik{e`mt zv8MxV=ZeiKpL4OORWxM4DM|s7Bq~1DN*WSK6sCF_4K&0=8ir#(OOGrJ!|8YokHa?a zdx4g(_`!7Y#dz;-^L~M)^j0R~dzJm&pZ`HWp6v)u5mS!l)L7B1=mw zDX?*@V^lcYDR7&7EORRsxV#qf@)SO=sDh}WsW^MP=|qH}LcC8SL3Y$bg6Ve4&SNb* z51nW`d8p;^p|;~KckFFz3k6Rtcl-aX8nOOMjJFzb7!fvVAJJ}=l7EB0dq=lBkDwe1 zuCDY5bxUb8ltmB}k@(y`pAP+ZbpVDf6({ECGwp)g{^1n4>kZz2vA(PSu;3?(QS{QpEO2r5~zuv_*X zJ5G!FFN6YhOUBqw^LQ*bEo`a0C?Py0iMOVoz0fd*Wgf#1b7Y*|ACN7=VVs|eKpmIk zvF>7WiK7EW=%4H#6-G<%>)c)G;ZJR9aPT`X_9a#!34(hi)ZjL7Z6DZ6l?{ zr(N0x`XP%4;tv_#@NP>4S>+@mvi%*%fX0jyF{O@=h1db7ctZ_WfI@Q22Cj4v6VF+O7aDR_aeHC|=B$au`SV00O2 z<2K`dOOs+M^Qz$5+}GuUxL~FDwdny*Zx`i zqV^d!`roJQ|28;nU?^|bepF+F$yTfDEjL*<_-eI=uKjRXjSXBHi4QHaY{1YY@dt?K zB+*!=eYVCvtIjW5YT5lNakus#mfh!M{r*nN?sdd3Al~nYpG53Yd3S1Gv+Qmq?$Z9Q z#_kePe`uR!pK-GO-)%K^r%K#*Q>}fUBpSF!|GQ=1>ty)XsAYFJ;$I`SJL10}o_56V zA?6(MyNFpw{0?FUQ8%L6=PWzzitnzmQzGiohb=qlCcf3O?@?k*`-Ek;xgr(68Rc|JmrY*L%h=wzlC^*BYqR{c1QdM;%$!jb;Mg|XqIk-w12YfTSyi0Yc=*s z5%qA|vQIc!|6z$`A9uu0BOY_aPcEskkE*Oo_F483k&GqMwufDjXFQ||@M~YS?1QfO z70W*0ieI+uR+ZPUeWJ#`S>4OOwAOAxqRBs_eX-WQ$&tS#@_tAD6M#JIeIo1H7t^)& zUMKk}SLH&}h=^um%p;|6x{ZZ@)D`n=kBAMpUsfc(=$biiHaIrD|)Ys`1+5%W{} z67#z1zPZHQQkLvuq^fH^waAQ3da_;nf>+pt8cJ3E ze!jV}cwwfaSKaPQ^US95)OPJ#WkqD&m;sgj)82!sA_}M4weOWZN)G5`mH*qg9Al&2(>? z)DL?fvzuD{F59&adPSCg%Nn-zBX+B2e|84a0sJYnGjc+o;kFu-Z zW*j!Q8*61Y*T2s`{s;88=r7YB);kzCwlHhgGWPzdHVkg)8MStpXZISL3a{L2+L`wK z#?qb+r%7+HdyKusEEC_~61&^jS;$cS`uXNof+(A_N z>=}9T-tII!Sk3JV?Ub=aP6_z{C*+@=BxGgW3}wPtm?lWHqr2X|$5;jCx7Up+sEvXi z=-ZS@pUJd!bZ;c!sJXq~zS~&UetuI|2k3vf?&kJ7`!1uAQ=2++ZJEyI_G|1@#>T?4 zxZ~40`%dGoX}lx#gd6NTjN~*k^BU*cx0f`t^QA4aZ!@-)RH8V@bHM`pRwGt8Neg=8 za{Kl6E#q2|vk((!o7-pECyix2Af&@h+}u9bK4GjMH+#&tj~gM{ecWfwJ3MAINwXKr zxyC+P(nfB#pKl*2`M8Q>#{&CsNp%bFM?J`)k~4+RkuwYJgU&lw<9kWboWuJc(xcPa z{#%4Ie(kxgqy$-b(JpHV0&Chpyf<(=eN9^)Za6iwRsml(tS(+7tx^iW)!^QwJl%;+ zh6*FMp+SY1u5)kO07QCI!*hBaCj0Rq!d*xTG z_$gjG{XbQ)175KT{93PGakgB6)^}KDF8AFFSq9d>OEW^{dU);fEY1s+EA(s44zg|+kj(N)dy2tA4HUnH zN=&Rk#lfO-4W5^D1vY-ei<1wL$jKgZ{2RRHRPrN(@ z-zAewW)rDkAr|p+cHnl8L%?XFApNWOclcI^sm?(Mt8bZ+t!q>R<$oD*#-@z;lKb_7o?&jKE~j! zNyuFy?1#3j;9p!0PgSHBC{J%#JvD6ABu)8c{mX=u-&m+`6-P**9+RLx`C~%Wn2r-m zo`%t#xVlgzMRYcv3`H2I@_PLy^(}2+2+3cyW^{)HF6)N_(tG}BL8Z;RdbXh1ZY2ml z4a-OvYU?CCAk-MPHgV~JLInq&-G>kDYuVqnfA5L5TXr5ex%VYlK?xb?qw`z>HnQvdBKUhE1Q=U*a)a~BSSOE_1ztjzNjXOS5I5yPzPWRY+ zEBU`F{olalU%&DH5x;-07uk)Yd!0#OeVaHDl?kNt=`<<<$dmNtoO`)r8 zDmtYH^Yb6=)_4I>1ppmNB@^)s0QLYE#sEc1f{EmZPau>@!*G*vs1T25`}-j$IMFaM zso?bM!3sHcTSop$1+ql$*SEQ0MfQxFvpw6<+rZuf zcPF)HML9reSNBZ!T((C{#OkbM6ZF!qZlQzk>{LZMwR0-w*_1&tRe5vngUocy%Y6=@ zsqEKgn;Z6a0#fRoP-()7S#~=?M0Kj}RJ^-)rt_>FUdBv!wy*1+ez)M}hErV)LVcK492;@@(6=?pDkEidv!dYhpzjk+7V5qrrDZNC*N=21Iw zZC=i{RI(5C=b-HBdDrYBDP}L8p|$D((6~IFQQ6#46o*Q1c3R*#JVNs3&GLIhZN3ET zMKiR$r5v5*7s|#}=~XQphwO#aQr|dbX*jDT%gVw7H@VQheuma$Ei68pl;qsoZ!ZvP z(M=`iRPEXdTh`=LDSN#=?B(`#t<-jtu0PY;ZJrtmP2<-hwD$m2dapb+uEG|DznV);)#SkTR!Ya zu`I4~Cni-F5?Bc)SN&DpJ%?`rTHhb~HgJrXN@z$tAvYyy^1AKOX)k4CYz&ALByC@F$aTcO+ z+{QEf2FCT6-R;@*eQNFksgo&5Z8XAkIaM}~`f@{qvp2M^MBqzqlKsN9>#F54ciu2& zuN`ecTLFrzv3nr^iY400gy)Jjz$y}rg<}xJ`Gp#td0$|ni3h@8lm%hhe~g)e_>oB- zrR2;c^{QBDIcY{4#_Ua_H#tF9M5EbNqEFB{u?OJ1>xb_slp{n5`WleegK_vbA)f~* zw-Co$359l&Zj1|aNx1Rk83IjIKz|T$$Ng)?x$f|eZh@zyc|o*Pe!w(I!-67eu1GsXUtwPy3eU|bp=-M z`>)bprT@>>_iE-p!ut0je0_Hj2k;ZTe%@p}&$t^O-fQ%K)jz7=N0$Hno2msG2X`2U zF+&N13%=OF7=a8334xH#28i3qhOzG5Hn`oiV`byKc$2gd{18as7oSQHyiY(vF2`sP zk3`eaU@!|3bu2-A1d%wg5RT+oKcQeDLY;%ywjxl}MzcV}G!AZ~0&%WQ6EzXU@jMU) zVG4I}kQD==C~+Y4*2clD70gDW5Zg28kQ5FR=oG{@nrHXox!Oi4?yOU4?#;!~dil-Q4PhbmTaSelZA0~LIaWFwH zmSZWnXMwIshWx1@#0hZUW}~o|hH}B6Kh-!GCl|r)*=Q^#5djc=#fVJ^Vss1zqSP`& zIAr5sj9fVKhXp~B_zlA0!R>@GlzS6f!DFW~)GJCZzz||Vq8xHTVkxshz_TM1nCG2MOiski@_M^I>aW$8wbPWN)YLo$r2<&Tk!Z`L4r`8 ziv-d!_$L^;8wW$=3P=zn##;g;GsLWL0if>$R7ulBgULwaV31r{(0pPnPQg6Sr6`2j zKv@I|qXd~H!?agG>P4Ue!35-Hg-CElA{)pF2zf3f{L0BhQ!azmi}L(oz~2knyZaJHV*0+wV!f$rT^^NqetEO@puJBYc=n0CoEfn!r}z#0EHP! zK_sT8|0G{QC>V^VnH$sDj&s@4`B4Bknd(cffu*o$B%6Bb=K2dHEk01Kc><9t0Kf~gn>vL&Ybk}4GIISzkrLOq%J zl&jZdwSBGj+VtoldCB_Wjq?3e48+>KkPsGN0f0&fW&;s8R3OU5j-Lr77(>~4pc7)G zIkI=}v9^Q9CF<*rz4Vpf?uCQ^9&}2HNGWS3Rkd7B^4-@%h@BCy46 z`=O|d_%XrpCK}{kP$MO6Ji<&9tjgpGwnnIiD+tKS;tT8Ja&T80-@d4sr|ndTAOBm z!~CrIZu8aVOU!=r7IV9KooQk7|7YW`@cth#4uRw~L;nx`>%<4XR)36GfrGkVUk+Zz zm$eT8ANDFdf7_(KDQoS#g0nZy|PI0Q7IdF}!w6EiI z7e3SN*AL8fZqwf`Mik}ti?g@*M=u6G7^pW| z#QAevhBMt=cvC2M@Yw@(#_|)LH)T6}Lc!+tMFX=PU((_gs*dV*iw0(mJBe9C`Q1|1 zbptaUx8A~);(LqV_6-BIlh)F!1Z7&|ZtI;=&sa0=>e6N;!|Z{pjOF;Ms+Pl9bzp`# ztCnV>d3_T+U8QPVy?($n+A6!>_AnCn_F=zjZVwC?#(mXt_q4hB+nB@T-Rk2C_nxkO z!+=)J_ZJsiOej6wy?7%pupf0iU?DdW-{y|4bm!Sj7O&@8`w?R?Ubo^VKhJ(x{KlQP zP$+7a{g8O{y02uF{T$Ge!x@>&+zXPsN9epT+w-agyzmpATto-eZd z#(h3AjEf&LHr5jtdH(3KtaF<>aw+7tcuFoS%aF1b6ZI=`*YW3GQM6`NO$2 z11h*ne`u~XAhBH}{vo17cj?Al?HOx8!n;KLY|Vhgcj@}vo2&sRzH6@B%8Bn15KX%AGHH(J(;In<7R)bc3`!a{I=SGRh~?RS9K!WAE= z9a!$=cy8@LgD1bcc3_z&f6f}X!O8yf#nu3ZWU1{37uO76FQ$e1NyGvyiT{a+Ntec2 zti82n081_BgKaefSYM@8ud@cQwMx#PA!0)n@$1*s3}7nd{B`8S3M$gcngJ}GNP$ev z0Cr8edSlH1wn?OooW;&4Y1dc-SQF(oe}jl^kg~5KaB%?RAL0UH`UbG#De!=KZ$6mtgUi`8dv1$uTtUxViE^txFWapxgu}SMC4{a*=`LOj`(9l z-4Q>JsHwc$wI?k5QCB3`@DW!eXz^iJB!=}N5%uj$CH`-<_M`^(&tpc+IH`YGdxQP~ zW3iq!?$`GlFNC}E)$C5bLHoGzaqXMN*R>~!16+VlfFB*9)x6!z5+VGA`IPx)^S$QB z%)c}L$^8B}9bnprUieaRCRgzlj8gi1FO;h=d6rFJ`n(C(o;m9(2>M(v@~(JaXD*Z* z&spw9kri(22n7{Ezq%1_FG3(ngaUHD0q7>g|**=X?{+dG~JD^$F#cOexwACtT^BZPz|O;hfhN z?bA5qA(*VLQK-$`LyZe$ zV!NG`eKynXoz~7$bB-5I+@@Z=vg({m5}AnEF`V{Rc^zlsCINIc;c;EiYFJ^=o{;;1;xfq zxAnHA*%dpsd!dc~vBp}g&YfkOqpc0aU;a&ZMs4(wR-Il|*f&1g*4LI&t;*UU-P_T_ zXUg`NqFUQiNZD$my&TmelU~T{EN#nieNAGZMt1!JP;tjR#3_l?}j4@^5iG+a=&Ib%G>1Z_N-22#}{fX8a zx%X|;zW0tPq@#W|<6y$|V{Ff2rg!eWd*`u0>yEM8MsIcQ4Xz^8 zdzI{Dt=nfMqgdhC*h@vCfdqcZkd$ILhijQ;5;~W-bMNEFg00)R^)1uB^|o2EF@cqj z4MT{N;MdB;)7ZLsneliy5rJUSz4eJu>o!{CXC3%jcTWS+`5_OJ~r*o2K*>RD8evy72Jo_T?*n@StqEoSn+b6z^z=uJpBhgayY=trFVutZ zUtGBIy}x+JJ4Un4BPn#ciWb$@1GB_gU!3^Tj^C{_Qz5=Kd@A6yD`v&W$w%XsD@VDjH4i3iHC{zt$FRot*ZqZ<>|NL8=@EcrX9=&AGMW)|^*y2-`OcY)o7}**f&Y3>1_*%a$PBOptvUAJb>z=U_qoZSt; zsu^a3Gn{5};ytpzoZA(P#3HS`-TuEv1J7rl@onRAFu*^qp9X{Lb=sa{Z>=odJ=*P5 zO-(e5E54;$X0agy!e2B1i3$F>As!z>Y|w5Y^dVR$mW%IV%8@_!pVnK(?jG%$b^#}8 zRCbut0P4b;461W9nFYHOtlB^@%#IUZmb@)hfb&o5NeVbK?E+576Ugip2DUc_x?~{C zR&ykq5|Wl!Gz0$HE(b5+dz}ZmUK816~`O#2Z$%qVPN1h zyXYRO0Oz09;}me;vBrNVrNS$qv3A`hjKG!Ye`h2*#OD7WvJ_U(_* z(}SRigHnoq!iG9QREZ1|XC}q}!|aeVWCt1d7)Io`^$53bpZ4t!Gu<#4@$t|Z8Bme| zx_>mm-Wmv{^wdlsK(~y@D5ZW|4>RGMc5Xk7+3XOt$Dsg{QRv0-{m5l;H%Krk!~n0y zVI-JH?uq~mjb8>ot%taIZrV3Lh(?451`Q2i04^7SNFhHnPb37}4UJJK1Qin;uGR%?U=e1G$2L31b38dKB zWrsT+g;kiB#mI@414J+=$t(`r0#R8;i#MQJEN%@%w>LQH&T&H^+OXZ^ZetIQo}GT- zUr&N5oy!u%l>$tjz6yO*BrGcx{7RVJQ#mOl7%ne77V;KKBno6-LDL9gsp_HP!RKF2@Zxx?^CqHW^yg8t-s#rt|7-6|pyRl%GhIuIEK=42 zQ6xpRNrIFp5~2w9-VH92DH4<@E}#H#m(=c6fJgu&050MprV)=5*q+Hav1f87z?rCc zW;>qPah!OW#LjVSXS_{hXJR{cJhrUOvTRGTeVjzH9L#rLRdrW4y3vru*fTloBN4Y= zy{dQXRlWD_yZ68Ma=|Z=v+Uz1V9bj}x~lG{>cS9q9%e#JhU4sd2&l|_RV;{GC9ZzV z^jU(Fk|A>|`-rW*Jt22yXW9zwJj}Fy+-YPMOX~p^CVXAV1``5FDoL0D4doCelFSAm zX+!bY-Hd$sxqo&ZP~(4&_6M5z8^$+`Bl3Yvu>MQhr)mG=Dk$Im)Vw~`K05ef(I-HQUnK|nfO7q{a()@GUbEUS&&p7R`*xdG@tR+ln4P3?7X*LK;c7S==_{G^T z%3lu1tNIX>7g|HmQ?6oiQ|qqQI|b)O z+nRmq@zV~ki#t~E@z$M8%In@U8S*NnB2jc<*-#clGbsQ7ow6o$WDB4VW6p^`YIDf)j)dq^`c8m}1d zGM4Edz!Ufh3NFiU(7swe88_8NN8M@7m63w6tI^x?p|I&qWI(U86r!U?AxauAaPffZ zQ@gR+^xWUw3pkUFB>I5}+cI4xN4chZ(-C&q~UcQLHOezYLv3M7eYXd}i zJRHL5C>u)_!d`=sP&=sia43-^I}aO;STcr7Oe7edI%dyv8dTfjnV+!zYW94wOoVhI z#Sl>bTnYgN^9DLuknZS}L)qQV^M%`!(Fm3e!t)D8KM5EX9dxjr=B!yaw-%u@A?a+< zhhaJaA&-_RL8?0vXoIgtofmSNi-g-zsbXG{q$6n0#Cw2846dCzYR`3=Q~TPPpKcA} zCo1z)64wKwS;R@PK%R{lN*D5$q(r?P+nwIECmf2jv&m(3$3KEK79}Gqd?*rJGxdl) z$7xMzR%dQ)6*`PaEW+ymTu<6JR7ZRP%(0{zM9hvv3khkB7biXhv1AybPn4HhjqZRlM1>0?#N5s~Gqlq=qU?3wl@lS9_ckOM=72SJ!vgtt#x6 zSnRnfvEZv}xG)wV>rT7NB}9Bx4VQIL3l58GByxO*AF%*DNBPYP0($R`o!Pwj z%F4kOi7mgc*3r}P9-=FT3j;%=1+3luU<|MhV~Lh?8#Z*S6I)ezyF{hmqPO`>%Oa2} z4uj+l5hjQlxCEos87c`)NC<^){=TV{DA|d#z5Fhf9 z@izK_9LOi7$aNB(e~Z4_$6zsCOpnUfSsXonEF;~seS0q<0@cwH3E^L5s8`ihoy8K< zf0gGv&T9cA-J||pCn5efTb?sI5zYrkiue>4-Pi`bZh_j$f}^;-1Wt6eFdJw6f4k)W zT5WvH*opPOkL=rT_YL!30@-gbaAyA1(%9-5taU%xmjXiVIYIpo$idZv%IhrN$w@QZ;(0h?dGX+8M3ZZr)@C7^VBL?AlnbCr7EB49gq}Z2jF)gR9uFni z7bTG^dA3A*1WX884kSx@lNT%RF1TT;-+q(Rn6i4#{Nj=bu}EC84j?T#94Ik4WqDL= z&SAWOl9;M^aeH^*$b{En2NFXxj#n6_Q49cyVA9q9-LIL)@cvt%AJ_g$yZ;Rh__OvB zm^a)^cRL$=1xkY-)aT*^mPo{K>rasEt3ZcEqWFNxS4S459O;h9#9G?W+Q(#wX)`nY;0Y-_EcNYI6PHaX5S>6FTG1mB&DloZhj7~TEJ40>?I2H zK7+L*i!K7AY_ublq&!58PehVA$bc7!JBYRtg8h#9=9Om~+nOd>rQB@X%Cg zxxLuoQ1m=nsgX_F?VzjRP&VwzLY7p}QS$rdNr1|(fJBJN6#3oa#R`X&=IgU}t{H=^ z=Yqz;snVP6MGlK%g3+3FVgMHLsl~|3zv3Fqn28s$kCUVtgij8i*)og%F09){J`U?X zL(n)dRf^jS9sbl@Iztx**K0w1C^8IY9F$Q7kPZ+hT5LhFdJaJvL_w5f64){wmW}XNx*<4Fj~mBm#(*ObjF5ayz$r&zO~<(hbJ=O4DsZ|`irG7 z8^c+W?4=kB2x*W)Wd`5-Wo%UVmXX2NC?lh%|7^h<8FQx`qbM>R;CXr~YU92ia5np8jw3x3jZ2 zp%?Wd`d+uVGwdAh0CRaci zE!n_7T9d6V`486Qaz$nWe{W4LbIG4tlS>u(*1(VEPQDpZZ+YuA)?`o>rls&^RhZ_k zOH|=QftRewn;cSmr!~1)kq-u5v?dohq?9gH_@<`wZ*5m?39u9opn!Ld! zU$7=y6nQA{y}6UuL+UMu;NUt{crft%+{tTI;XydKMim|ieAk+MlOp#Ap0g&eR^-0G zr>)8PF8L{Ia-Jf40?*E!v>^4C9_~6<6?O-nu_osz^8Ucn*5p-++#7hxnhYqiOGs0Z zd$fm%ujwtdiLJlkPE+J1S z@=j^^xFR~z8Kd~kT6uBYrq&0C&ksX0=TN6hWnF@T%ns`K!$-w`y zCi)e*BJfRXqEC^nfxojR9#-V?z&EUkqDy|=nkXo8S>SK2iM&gG&6>z5a%teJ)hIQmz`-x@E4A9o{VQ)HxT&+Q8HeUcgb5U2DQ04Da2Nwn_a#t*0$jqD4Nk|Kl+z7Y z-eFeW^h`@HTU4ilyY{ZIm-*M;MyNxV$Aj>g7km;KGLa9Erf~WXvmBF7lHCMme)fW{ zaI&K^1^X5TKZE|Y!?(KlSaet4W%g44>f59v53sr=hz61%jcF`LfF!_mg6ct;iDo$- zf%`I(4OU-23(X!wt-ne8&HnYbaW~33X6%PUR8)ATr-&WI@`V}|-CqpL3wX35qJ7@u zu+n;?9;z=NRQ2;N}0d<3p6+bDfm)2xYIKUPqLm0XHPRuo;B6#4{>bZTqv$+;|LeKtlygnr>%QjJ@rSu) z%XR)|afHZCo-SLg*lWg%RO_T#OZkz#Y93NTy}NMxvhe~{Jvv~YLPObKxa`MdFc4q$g1DwI@g8xs=A3x$hI9xs$o;3ZJ{Xxlet-D@cJ@{dob`XdW{#NwBPQ?8Uo+g!YMQeq;Uh`HjIZUtbNgvHlun-D--{*M!qsX3y!*GO2hG zEf=UTg2O}sibV79o{cB7faAq0p{lWH15TrLIgQqG>Q+;n{!BPsIeSiD&0r@iq)?GX z62uE57EVEoh@l)Ix^VKy=d0ggqyeY$W~cXQq?S{+n&R};sdM%UVboPwH5Ll^Fjz9* z@B&g3H$Y1)e6tZu3zLa$%5@vA5 z*+PE_e;sV}*mUtuiwlwk&3`yg#4AANjJ-m_`KB51xDofpYKNa&zDdSa%@C|yQgw?> zs-ABg>Mu>fbKC5Bei76WNcDsO?DN3P;sCcI1h6ZL6(L1n(@<4|(b|FN@hl^(W-z*^ zxTNY9n^ZmDh}2&cp4ZHt=O5xa5-AD{16WEDk1`D2pa+uGgNbQjH zc$TqNGb}5YRNVqJbfvD0P5p;ctR$-)o@cX?Ol5EbEMS<&8UhYn6uNv5;A`-=OQnin z5u64c(WE!lU?q`P?JV-OlXLYfVE& z136gY1a6bfTV>^nHsDuYb6tL;wft6Us=4oC2{_8txIpLgkhttTLVzzJa zodKCK^L$`*7T|C<=HgoJ$ah5w$tc2=S##0kyC6Vcj0wRIl@@x~?MZ67ivX zs&tdx?s9k}+LXilGuZ-2Y{0d#B;HpF^E+nG`H%2%%VTrEgC>iZ2)e!iiYkllD4t3Zk~HV` zs>=g`8mq-Hk8>Fkm0{rx_{vo^oL5&@v(%4-^R=_*{AJ>@;$75%RS*SJqL2y^l2m|D zpw)B9Xf|Bk=VXbf&$%~S*6nkys^Pr4y5jt0*Zy}{GxOy3xn2J^+RNJE%QFF#Zm{F@ z2{_eYd=+~`->UA5+3bMzg9JT|;ywe^4~Y*eZ6X}X(;bXwB5g`g-6Y$+2>U>1Kka@t zb;>rkwl=hh8^Nxr(#>|vc~h$%lwgiNt}2i1?M%#PGGRQa!yUOi^D|Bx1b-!9F1BwF zy~rCmnP1Cj5Z_xWm-%Lva+&`c|GZ*8BlAkshC+*2gA zLX5|*&%_raU;`k2tlfmy#j!O;nZF_5lviooo$<;AOn7CwJl~m5iOo0c@HLCo!n{SG zh+#q~;1~jeK8l+R;#e|*FLI252e95hYJ9Jh3BeV0eDAbUST)$H-s&y#Rzog_%~uO^ zC1Ga6Xh-?DaGK;_@D3?F$T8bTql89|yL&cghVpe?g&F^9;a2lMRi*b&mcKIBM3*(~cJqYY`dOfm(HqbXtGK`msG9V~|tmcXhdu}&FFVtve(5!|cB z|6J|e8ra|Y#yiOn_FMY(9RBKl=k0Ay7cFjU`UR$u79s%mGx++0YmWm&VKhs8h5~j) z;@BiJxuKC<`7^6Jn)VH1BuuBz+goSd{6jLONWr1gJY?U%SI0P;cf6O$+oP`&?Hx$pf4^%{TR zf%CRx{hZyiA0Z@32ygFfE`ies4hDr(E{V%G!LU1+aucBh<8ElU+*f!G!~vO;%L7{^Wvc|DAqqED<$_p6vuPo)gWfcm*%aYWzucfEyt5Cc<7Mm|19lR&HPtH z^?j%DCjGtoQf-m~-|v*YYZ_|}y!?VkFQ=>B1zUweSDtRD<<)A`sNqNcSv>9To5h1G zPrG3M<@B_(cg&_;@w5x}T|Q5{^Y*TRI zEPib0VT2BE1XLZ>8v%vFS(_X`GX7^V`JnEN63He;G$GvkSOySvLMSp21sDVcGKbJ$ z#NT@PpkCwo{8@YZtQ$w@L7z*ig$RLQ5J2Jyg0GQqBvK&55YkAzz)ag$Zrp!Rukl>& zjNR!pzF<|;H4oP`v<4t%5Sc+27vnhnQy^~sY?Fymm6d7U>vkVqujy>o8UJzo|IN8X z@Lo=I?xc1}lg(%2-%-2Q;TPAb#y;(i+%L5L>+DX3zxJxMMYd@_>+Q7IzE zi04$^otCPO*0cprp9VImLaWW|A~;1?6S;7-X^s`opK|uGDcs)l?9*+*(a{rjx6=cQ zS1m!gF{7M(LbQ;C!NErhd{d!_gBp6CVwOMvPL@aRxCF2RmBnveF{M6PTL9zQ-} z?{%JY$?B%hIV4zaeEJYX@WCzQ*t??62_+(kvB(7x+zEz<2DWA0M*Rm~tC;WGf+dx1HZJ8pyuo+=yyVtvtv+;TC`VP{nrLdl zKSj?ee#TlOZ9!m3KPauVC3L5-zkbO;!(r-j|3cG*P#(LppE_pb5&=wmL3^Q;vJbjk zZf-l*jLYW<=0?P*WP)^I9a$Wb@CG776fUS}!v*mduW;#)K=JwmRW#+D5F@3OcqB@7dYh16L+@y%gUIe^0(qvE}xK)8f4|xeiPRAJ7XHwFoZOk zqa~(M@LbabUVbiKA7|yoScUrtp3_RDxwZ;&s(g>Jc+V)2&QUO;hH1ELWuntFT;ET!-aZ;2?$ZpJ+cRMQn+5 zDO1WlTMsp3{AIQuIbgbkS0R3`D9JjIHF1@~G(z|yq#snQ)iaquA)PmTr)XWPPb#+= z@BNo2nI_%+vi5Q*W=mjexL&xUIoB^@0YnuB$4d`8* zuzLL5tZEhqZW})Pep1HSdP;(#mz(eYDU`rx#-%9n2Kc2){v?35cEh>o9}`6{_JDUao1 z@2cX!;_*?gTDVx=t%rvX3sd36<0DmP)aB}*mhoXZ(;^J2Yr3~~N5@Z4mTu7F4IXzu z#(zLtsF}U^e|;W8exdw;@jt=ky~uu^47TjZ@JImHhEfu5?O3j| zc3eJ*wDMW9ZWz0b-D3$md%K!}m-lQfp}=S$@F8ZDmf{!sWTpf2RX&HofW(vRk_kFT zre2Ku*a->F7p#zIxDv3R{rsuqeR^M*b zz?s&AUR5QH$ykwr;0>3?JvnVuRd;0hu64&Pz4?Ux&FbDHYopU|A?eU=)t%?IcDubB zuIf$I@2Z|Kd!fCw#+HcaB6_V~(oFQyztA-EvDcfgciUNh>U!UrNVZ?lzaaU)-elaN zk*lxAIBPs^eAal$T!hb09uJ^DGQY0ogDd}B=>dA+HnYnh69eHh;)G4h#lz?oQS=d< zw1D$QoFw6-8rQ$&RLc;oJjIqRg6b1JJx-K_Rufx2raFQ#>UX)-h+;tMksNSnqIfYQ zM~E39u|QGm16t7j!mWnC0t!rWeS|_FkumrYPK-eENwCPpa6$iDr&?Ay_sjMRm=^KP zK-3a61T`z>a(FOSxYgnS6^L^}3`$83PGaX!3>#in(zGC#Yp=Q0h|R(5hWVXPTN#NU z7Q(DnjUYI&ZqfW-nd6d(d( z-~%@TbCd_Z8jr_~?>p6Se@kGlja zH_R_ltbo$f6cH5NJm^*<$qG<;tOOEQm7v4Khv5;4BZG3bm@x~o{;xFtwfO%_{?D(P zUobz(PT+m!@0;%>uir(o0r#5^nLXyc%n1>5HTgeV%sIx-jF*jP(HK5KuCR|8?>8

    TBcN;fI;y#AOqxzQyl-Jr;G`UPvU!zC$ADe|m--kMChB&7*OKB}LyCgUzi zX-tuiT%}o)QHKmnS(6dBRJSI>Zs|W+lOaX+OWpMjDRtXjk_zh-*%$b^HF<|i{>++O ztH_4~uUV6~yCkJ;iYx|RojbV(Qg0~|`C+vxEJ)#Ps<1#jiB+mFA9!W%Ik&nDcOqF6JjgpM-bsm&AhIT;Hm^wC2hNc zs|co!AnV@-oKw;@kwI6$_}e1d05lC6GcVNwognY_x z2~~Jq?PF`0pY*Oa zxo-pKO3rgq*Orj_Mk#G`U`Qnp7t#8$kYhTJfUrZqAdVz^)7v`tc6V;w(%ZQ$oz9Hn z=9eYeZ#vz&W=%SsFB~5(P`v0r;$@9jFUjw>%bZyataL0syPz zdLi(%1c@RRFyTL9h_Z-L;*GpFy{9YPd2nx6cW)I3Yu23VAL-Bb9|M-XW@TSL0GYv+ zZNkQlQ>FXtM=G{dyrO5c`j}JTBoa(6WGsjjBnU9U`LTT@V#u)(IwzJpu&XD%tADVN z8CJH`>cjHP;_1;EXbCG*j91aGo@C?gC?zvxD$ArZ6Zv9)rYfxn!5ZxZ~koTM!RpelRnxZa{*yCFj;qm za8}5YT8KRYsn7u0#6#qwivi2^cI8#7pZb%2xoed!v-~j37@kW(dDf_%^s6t$`op+2 z7nrTplm3}jHI=(Fd6n)*sd)U8{wcpws9pB|OZ20fepLTWH2t5{zooxoTxZ;7Y%&fT zr;Ya*A3!7UZR1tijF`L0_Wc<9f)8RXcuvOBmEY^=fj66*Rd#E1(W4p0?eNI@kz#t8?bjQ6>aAMGo&X zUPA5MP|eA{k%i`Z{~dFEnc?=n(~Hb-Rq3&QxzD+U<~o-@Es6fYq4%>fulNtB7;hpOn z^)BikQXj}*X82JskgA=}dWp_!&h=@}$@*_;y_$K{_>%Fk{`bV?yIuPv1#jT@h)pUh zS#QH~lLq+!-SyTapb=Qk6lxzl)^KkiHU;?sGh{)FqA3c8NDV3L?f%a0o*i9#(mngO zZ{KlnWjYJSa;0usQ$?H1RnnM(EH;RiWJt&mkp9%nYK5FIpy?Sd!>_~T3VQXC;VNE=DG54=XAcvRv^ z>T6}oeO=ul-Mor438a-W=ILGHyiC+-`37o#7UwBL+$QlV2n@V|1$UamCygX~XwKrK zH15FVI+INkVYbptPj7cRy)x7uYY)4x$>1%KB65~*Nn18AL&Caj5xiKcNRB!eO4<@YX4^Wq@7U8RQdmV64C&gkDNsLyPD>KUMeA?yXs)~&B)&8HLvU2FXbLqR z!H5%Na_dN;bi*CGfDTcftkOnB?vwJe5ZGEJ1=f{AgHxpzn=F&k2}xlsH#2KD6Xu%C zpwR;Rt9&R=!Z6tjkUIhx5PJjCGZ8|#iZw?bl|qM_1yeV>{{NrW%v+74MEk#>eOh?? z|LX_T#mzJYI;V-frA7ZX1F!%-v55a6kc$jayV)IP$=zANftEPHzD!R(;LR+dE?FdH z&)B@x3&X!ZGu)pc!w&@#*IpoM@S%VE5&H~VL+^uFQvZW+JfvGzUXKbGyPL@W{1+vS zQjUEAGBrs@d88yMTtw{~@RhR#R|%$Ai?kJ*x93Q+C3%>qmC zH8#!n?DlX5jWg3E>1QHH!N|R&s3f)^sP|ARiUL0@LteI-=>fK0XXI$N5PWlW%Z)p3 zmAJj9WXs@g1xraE3zZMfq5?;^8!s@qb)e)fMnKj}N)q7Az-EZ&ft7)T&Fs?lcJJ8J zo8G^rJAHT8wnI7C8Cg?g)m=j%!GX+ZTiZqz7h$+CN?2UyGzjC91}x{*r!|_TI{?_?1zFj(W`1 znQUBr#N8>^wMPqh={Yv##I!CdqZzEI}$;bxpZOAaPQ?;0U6^98Iz@rbvntb)^3 zIISwK$LX}G$ItJx`m>m(C4-`<&^E4aqTy@NpT@hFMF;mXP^U36wHaD$rW=fj!{Bp=VLhOlEsgp zD@ZKiFr$#*vL3Hhomk}EoLjF@49|4yjlpZN^5UV6YpOV`lf$0jhUaXN#Y}?xW(!1q@ITsBCf{yifnDf1VjQyEY4yJCM`H&8_1s-EgtW8lm4(yI@y27_E%eE zY+5u`y7rPJHl*Dp`x##bSN{Mh)e@lE5)#$OtLYW$(`pN#)t{Fd=H5JW>p-Z*6JF}4~hW1X?m zxXHN2F!X;Qw%}7VbLIET=>co({8idK_L>Xl%^f=jsq5$GSz~9N!W$tURiyTL$TJT4 z0_16j{2o`Gg4FfLC_E{YF;DxTH8$#y`W$O)M3M8guUKQlkhFFEVQcJ!L(YRdu1M`^ z$RVe60py@l`su@S#|9vE{qR|9?3hr-VeO;V*in~!zcnUibxQRctTC+SR5+r2${Oo) zNMYe&NZM_=%Ni>xQu`Cgf49l@USY}zug);B$TmVSUjl61Nt@A z*a3&ser}EJhlKGrb1-b>`_nNrM-LZShqUgHEfODFO;!Y`+zmJ zS5?)o?zG0b9CAM79z|*&hTQFx&V$_Ll)lh8cWfu5u6O3FvHOHFI`ug+{!QbeM$GTU z{JHYG(gVND9w^;-NhLI8KXPOV7UH_Xg)8pNTb4&H8ZXDReBOnA!-^qof-|p2~@;jP7Nr#}R^5?BF(Y9%{t-msI9c__}`y^50B+ z9bN$#5g+^_fCKauG2ns{oR+-HSULebvWoZiN#e^oqFCjG$5#zYZRX(>QwJ~2aU`%= zh|tTf&JarrNF_39oJdzOqOuUgE>2`7l7*w|j)ol(8hNp6ncDx)Hxiopl=%_!-;@6{ zP8{$r8SgR%DZKK#(gSsSAYNjv*)cEdOMEG|t6@oe2?FC-|3Lq!q%c*(Zo`IcUP-XT z!c>)XQ(fj(+)`q#I-qwrX;;%KDW`MW{(<9Zj&T`REeK(tXjHe~!MVK@knxp&!zC8E zPHWwa_o%tDy~J|3)oN>W%`h1~eV26i#!EYRd@J1Of>AZx{nt3-e0Aww$@scz`gPgN zNWrUrH}uldJy&V#tffv($)fAr6E@Vn*Oa!`&W`Ao6l6gb%*@Qp%*I~(_7 zFXHNTRaaM6W>jP+RAuIqmje5M0sue(05-A8LQG^8C3FA);CBTM0c0E7%Y3&T0ESzZV>`iQq?TlP(Ol+NL?Hx^=fcHP<$p06lB8Za#{%`=m z?}`CLs%-9JV`yt&VeLfc{AZWe-qtKaURDea8VedY1x`X-SP=jK0d@gBP@urpIF5<| zI4&k3ETHV3ah7Rjj-rPiHmncn)f-r{f(p*3E-#FNm@k@#0RzQqjaVxJ9uXXFxIkf7 zqfe(V#f%lRQj@pBFLF(Yaf+lMEDWAd^7FmJ>(ViEHPeQPD?MZT+Mt!o>3(V=^?71q zwUbHfbvm050-#uWehUrQAw>X$Lx2Ki`2hr2Pyk^t5Px$500P_xKwbcVpZS0DWd?eV zW}{_nGp1V0EB_-EKEGLnqg#t3g!}z@CidhISfyrTWUpeGJs^|xX){2I;P2~^>4554 zm8KZoj>csA>9XDB3K`B!@*e=;a=9$|$JuCe`i5Bq=(m`}a$)&A(h!a`yqitqR)4xGndo5ozPuSOX0ac~i{-vr_3-0Mm0HCz=}kV*cg1qqWk;UI-0)FK z?sPp7$mA_OVK`nb^CvIUV(L=NxD9jj^Q|*QGU*EWqLuf#Y82Geu;o5tP@k!N;rqXf z4q>6i!iI%F7mc_hp$!A+YHok`@_cuu1*vt721%@x)Mr@e2m|0x{5!Mp2Vc5{yPPZm z*MHGywVY=?d`7rLfPg?CC@Ccs6&Y!})sdQ=jW5HsaO(i(AI9$wWwF`TNPK30p~lA% zgaHOZG*J2$>3c!rK*&#Ve|t&C74``?jnO31M@f60({zg2p7h3nS^)hRNua;Zpg%O{ za}hj3g;KGshK7a-e&-%F5RPCd7T4=|fzn6P)%9*~I8H{WE~VA!@O-7V|MKjr-fWuJ z<0^QJ+jMG%6B+d;jf~WNsm7q+(b3WK<|hNN0-3QqIY0;|Dr ziNP|uE0w#jqhq5`rL1G15wHN01SqRdgD79D(n-I!va~$T6NzebJ(EOTNNEL9HMOm! zv}hD0O+{PV`|;|aQmc7R3n@Z3oz1SQTIHt?Pu+NW&X1o441zEt7u($yk}+5;zAq1m zy;Ld&yMlo9ggOgVO-(G^Yw4gxL5nd?o|(javAC;sm2y>w0NMahnkkjQ&=9o=PS5Eg z#Ofwe+XxsC!Qlie2RSq>Xv7Nj4cjO+WkwKyJ=&kTz@O>i^>}F2F3caB9{_o|o(mRZ z+cT2g0{UNdhBi7s{#=X2d{LoPavD|1_VF$GLktGPZeIvY5F~t;!yd%+-${XA#`Wb;f;monYXr)s@!3TI4A z%%W+MVzAj%>&5Yq zdX(Q^9B9#1zG{o4r`aO7RX(RJYS=JKK;v12q^P1Y+l1_}y@gTt30 zQ)}X$o}6)xg)&l-l8kRY2vl;lzA@wZCW{u2K)r_}S5*os-no4__@$k0vhm!_r=|>1 zU#`@QZ%$Cg$T73e1w_!h?iUw+=)w0eR(yC**#&&qlC_UFC<5Iymt!etC|j5eF&fImQXW5=t=qB0l+xLBZbnZ?j=R|-!V@^ zIv}nWTbW5ow?8J+fmC1JKADs=g}dq21hfRVgHr2tarcIOKiLH;C0aT@kqoc#IxIw5rq#LOEn{6&YF5J5UYIV6R?$sItp}M?=hQzkU zGSOGB9)A$G^NsJ#$_9&ND#{5(eh-(ui!2}d9Mt?go^DV4UY}eZF2A$BFVr|4POa9P zX`$yf+j*{c`8)&JJLGe`;38;v=5@w>uPvZ&e0I{XOG6^YRbt0lzD|m zftJ|rqqoiQIqpN<0^ZcJd3~OkZPpev&o)|}h{a+HiZq+7B|s-KIO;1ZCY&FcfxOz+ z*EgC#p3b{oYb1uGzt&&@lpLd>XodH8k+UzpOD3hK+Lf#{2f?2gT1)X(7?>odKjIp3p6)fe(%1X2YwMJGr9fOhtpoS$3SvdLBiwBBtG9?+@Gzp z$>;c&xA;QLz?VGb#$N3`ULUF{E6XnzGXZ2c+%E|z4J?C??TKkL8*=)ZY}P4sSR06G zQ56*xOD>=9?dHum0*XxGwznZEL6DG;uvjc_9pr` z+U>41$$Y*q;-e9?0H2PM67kG|t!_U#nNrmJt!bFTEjc@h=l%VC;6_8y<6tZas10JN zM+hW0c)%WLn3i5v>{!5Y>EN~vZol`31ss>~?HWJ8<5iwsB99WHhmOvWl!=YV_Dh0CCG_ehUjq9klHZ z4<$jAs(JjIFzbtga)i~1|CJe|}T90jtL+E5%_ zZMM5rwo*4sfLlS^24~Zjr+JEg!s*ok(QLM@?2aM($l4HVB@+?>G?GgAbwz!!mtKNp=aOH&A=Xa$(s% zsv4V`hGs#hW8IX8$yj2OAJt7Z;)lmeCVcoj;0juceNL4m2LRxF_{+>7N8$HjbZ@8r z6!N5}KpMze$plG+)qc1-fbr|BlvCrQmq}xeu)_q(qDn{W2P{5cZ=f*F&&}1<*DuaU z2|b7W><@!)v|KDJDY-Ph^~d3UCXAj9LuOidK2ny~*6wgU)8r&o;M<);)wk}# zGkZ$Mls~_{a&-<)=k*|Rw-Za_lcFurXljp)jO54>xB1?U;XaO`RIGcqw%)&roD$L@tN^qz=80I@s3=>{x$+wMszDI;p{+-^YeEy^7P z1jn+u1uL9enK$c&xa_G22!Je-lL8l>Orte)A3}%?@%8&8t^p+_rE%q zDk`X{m~A&!7G(e`*mk~9T*Fol7p zjcwYra>@9z3KQkGz%Oli?Z%5C{{u5HB3ISbW<$IFd}$Tox(W(hm$ z17G|1hD2p|4Tz1#XA>vQpvNn3*(FYNs~<%R75K#fsrozCcx5U%_=;5- zu7$o1s_kWXpq((@0H&mHUk8oqL(%sbPs^_#w#^rKeMjK@Af3C!QQj*Ybh)M@^?pgn z=WYa{U*5Iqr+RD7V%gXmCW#oT-*xgZ6e6vmWHd3rN{PG^l`JRM^4{$fhr>d-tughH z?Dt-L+<)ez1?{98&iH`LOl@%~8O$*oX8cJnB1MUIoS2~-GEpc31%95dSA{1Ra-0k^ zuS>90Yt&^|2yKk3j|ZZz|C_N&-Y=~FMSR;2sd2X=Mn_=@LHpknvK{mE!>v(|Y;qu# zhc8K63!jG53dhgKg{l}`QSe9nE1Y-Mhslwqu$MKVY8}@WC-|~8UF%>Q!<6^Ci6#M? z8}+B znDxMbpO25Ab>*qWKDYJCm$#0WJTnKNyPV7}P-F~Wi+$Jx|L%nGy-k@S%XFdy(hTT%A+D64eRRs4yQI@wo_@LudSYlYcv(GaOfBCyhPa!0;}O@7G)R66`nA_*T=F zn(4%L@!(+PBNqpY(nr6ZxRETF&SIx!qrgKUUaCf(1_=$~T)*z+!fpa+kq8{N9tO$o zcnwEod#%`u_dedP2RaSBqgUlg}3|^c|EUL5K81wE5{0fErgLM_`j-4=dd#|wA^vv6g~0z-cT$-d}BYB zF@D-DMk;o#;EY2QHuK7h>ay@nTiO&>LQ8uPd2GC$(&n1OCPH7z$RZ`55Fbe_!Y$wT z&hx#SWreva-np$QA!6+eSr%d_%!2f`!hXc|1k0oe`*1EQZaK`oD+*j)6?ELUm`BdgB1q?$hk=|7vK!i77KiMyl3F*8*rs`>grEAl zvTTMiv?Fus${KU`C3O@1j7TKQ8zM-;xkJ`@i5H+mu?3;R0b1@*s9ZNo;7Ax}8~BfS z#C-k1j1Q$l4%Ka$j<>aVU~9%tCn ziq~L-b?K?1M9RJ_f1xkCTTCcM#OMwDdBQx@(VK&u2%>@OSv*dAn(=h9Equ~>;LALr1njYg5`Svs07*2#RL{e1_@SoFm*Oh0 zh!d_l0gaY}5CF%;<-M>Fy{UB^Q=^pFT1Xjpu;O&r+OVWH&tzlMW5^Tu#s9V=*M@vu z4AsoK$7NYAO~q?osmS==JPq@C>UMO&#mkN&!3?&jifK4djdCdNZ4&FHd+k*7%mmIg z3jOh*$>f@S%o`J$&F~kRbYNaIK_5tSgTeL0FFnxndJMBkA%0@wvQBrzq$`{>EJC9uTnLI)&buvG_3 z^&Qf3q5{||Ri2;1&pIlXB+hB>+tL!`uvsY79x$GACVD5udpfuIAJKnvz{=w$>OwnA7$oGhrI%;NxpHwkxdB znAnJYkPIbqpH4~ayt#%|gjpq!QF zM`POAX~l5jznV?Fv_4JZu&L6K(_QW!FovD$yv5LMwnXDR#@Eb--EF9#rxDl$ku)tn zw?2`fc~G3FS_U1;y;9g#WdmRFqLHh6PNK&cZ&>u@nQPPsXr`Tb&k`|Y&$#NCnua-IEGa@>n|zA6k7!S#7K8p;5ldZnkWfdRRreP zx&6UR&P2Qo7_t;nw?A%>ei$Rx@3sIY}ZO_r^37HZ(^Uw;7$SNmux?3^oK7h^@d zKn2}vkZMZxXw&asBs$Q0LeOT;sM>M@9w}1p+aD30*X!&xP`HQcw*Dnp|Wfl1Os6dYUB^fs3Z(Fv5O@ksE8kbpIBj^qt&j` zZulXD<|*-PGY~UIzI+25RQG$Km+*GKwBy+)x<>dx`Li7B+1sA|-ZIMT8M7+Sl7Zyl zYvR&<9I0X!IfomB!n&03STrA29{40X7ZL5**t*0>tX*u!3@Vg^?X)I=UFAM#mMGM^ zuQ`}YQnHP+;so{j-;nHk*A(pnU+9>~uE>miW%uKGO)&R=&@ys9M!zOrkibL92{wd= zu*nP>xF`dy(=vlySi`=2Naa^BUNUS?T9NR$WYD?Bg7U(k5+ zs$5ZNIfejxn_p7>$$aUTSM z<;93k*aL-Hg0onI%6c;-X@N=b6vmW3d;>;@VMd)D@qK?S8>dqgOsWf}bJmzzg20uj z>FDum;8h6TJjVUNDL}bn*a4^1^qiychmUuusmWw((N*z0_SNP3F?9~Lpsggx50ya! z7XModCKZE98Tm9Hix19>;zU_>jvD86j2SLiRz8nNP zB$J%^Xmz;PcX)CNXhov1j*nZTRw8~dbi+)YvpWbqzUEYM81bCSSSmDSvIH8&8;qlZ z-?l1POvJ$STHj9AF7t~-*-l8JnRJ3iWC$eOrrCOG}-4gjf75*o^r-ZF}iF7z+$118CZ zkUKlP0LZNH`mZ0e6hoyDbnyhYW)U2v??s51*@*QIk=XPN99&c0kVq!}+GxNF7dec$Qbs34uCPfgC~@rC3>0?x_fb^dm< z^IB5Zq>Xb{JR{580nO*y&)~k;Pj|DkyY=nTQb58!Z&Cp#I7P<=gANyM*vVm(irzFu zl-w^tQ>HYpnd*Dc;&=FGfuM&str z$KM}Z?NmL<0#aw}apPN9C^n~ZaL(Z*r*X2f?S>2US*sRCbfRvRPzzc7xeX#gAIY6k^?crwlFIJ_$%Ze>U zy3UQ8QHJ4;o#xWoPvIO-MDE;3>@W5Vwqg+{Z6y`l7+`=;5+oKn;GxaGkq^e`4Irpm z7dF<Bx70EmeJi9}fVpjDxi7et$~8JAZC(KXJPk0e{3289f<| z_@*|yi+QH=lgE5ZAm%;MGBHVdsany!b%8eN^Z3TEq$8C~uNCLcKHs~Nc~*vNO3&NL zli}3(ZRW(N7EhNoQX@0#rMr=nX(YZV5i6m}mA&?V8Wj6sA!R^You3%l zUX&Kpt2zA5v$-^7J93q?6zXf-A@hbd|K^zL(h`p5q(lWY3x5sEC{A(TVKZ%)s4@<` zO0qAT8@1N7WyP99?BXxJFUjv=>0Zd`_$=22*SRtpaRM==Af()oBcDqf^FVc9bJiSzlU+J zj!hz%t@V{iou49(7@h3&8DFP#-KRg}7qDNRGe9Z0Ux1*8-hXw8^Z8krc|N#wZ%w7! z2XV5N$%5u3cFA$PmfA#f1D<})R6k^B#{~$h%Cyi5EM4)5YIpVhgzFJy0@KbLE*}wT z2I-NFU*LoCcz^x)-Cq7vXkgH$wpR7BlWIDmwaM8FyS@77^)w;KxzWDXBJ=BpN*Lmq zB;GYulF_J5I9N_0Fe3R?6+VAL3&C$vk9F((hS{KgJZGFv%kxzrrdIHQQ{F>Z=o*7H z?e&ocQ9e2dXV`acEPf4mkKshbJMuj#8-d%K z7}Yk&Ra8A0BOqeQNJpJm;jYPbW`V;d0avdN>rn*pw65Gb%4qt>a}P-HG%qYdCFrLU zS3Qhe0_47#@Z+Axo0E*C(VH$pB$n2zU@O&R-U7E{w1j787;1|38OJ{Oi&pB1NV69< z(sO|)#5a&P)M;K&x(psecqt~L+PS7+Iz7CC3;(!&w}a3Q$OJw|Mfj;t$g5TMcTC(9zA~X@ zkcA6XU}RoA&eMcccLhu&l{xqBdG2~ger2B+cUIhD-XIGL1nWzXH!h)wE5$M4#nLZ;SPx9~u@ zUUby_$hCTptx=vnxqltEG1Z)0NXxZi>et5ZyRn$nE%M`(Qb|6VrhELfVh>|TuCS{# zfz;pza(O=zKi4#Bw+bH~3`Zn91)oV74f=u^uQk&vJpDXGe}Sf-UZEd_Ltd_Nd{QZ5 z+4S(n9~xgf&B6&ke&Z&a2oKsr_E~zctOO-V0O$J*p%yk{R@wH^JW~+=g3qF zGb7|C{wld@SY0`00}4A(sPHD~pJJ**O3IT2W3AGpJ3;#&92+Pvk*=)8FO)4GYZNF5 zCj{3($%8S~_d|(t4EYKsmO3gbICRuZ8Xcfa45?Ng2(h(BN@(|c z4nq;^*LbMnQdM5}%qYVuda@{0iK?&i5k>vAHv(vG5A}zNGD1e#R|J|!9B)BZmG@L> z)HugZU(}H`Bl@ykl%3ZaHSG`~@>~%Q(*(i#bZ9m$Y;?>#7wS-%@p)B+THz4RlkeI2 z_2^aXMji#Y>Pr0v41$~JqMf|;mG<<=tfeJpZ@@`KOICI$^4eT z``Ps2t&84?(=#drbEQcfp@<(_!$oVa3Y!>po+S(4k!bZ+qGFOJB&cuCt36CWTER_@-L5K~B5SOY!!cAe5v(;OcAPqUq#53L;m124gpP|aaq7%&8}4zJUNMsN^v z7iEYVFklIF80?U8+j|ihZIQAM>>oBtGIZfWzj)+3dh!qmHd7X}xX_2A*-6R6EJh5n z+A(%$+W0WC)w;Sm_ijXrONSTGHxfh^Zb(voGl7s)oS?qr*?(nGdHt5exQ|eOE^ZFdH*N@2k4aEhK~- z3gi6Bvjd1qsXYgAM%Y;LkH|i*sj&KTDKv#0D7F_)4rce}uj82g ze^=XZ&R;eWG`d?><=_;^&apU_u|L*yi+;k5M#(P^FFOfPX1-AJ@(#jn=X0(mQ5A*B z)Y!umK;+n8Y7K8g2zIcKxYlIpf@G*YiHER!W+}je@=A|%CYmvV7m4uMa*4a)W!xDi zSv3Nym~Qv~Vff9Bf8yAe#wIFxiL-Y~{bTcRe?8g)snwq2DhfKtOg|zwe1iZDJl@T* zsn>|u#&ySyiq7aqYv&C?UE8BP)!{?KqWvP?-L`^h!SgiE2AH(Ttj9R)!)d3@W6Bl{ zau-idJB}$? z)%AKBGjuT}^u4`IQ-0)$av*5Hu~JOg!jshNRKY8ggXRhe6HSO^pofP`M!6eugsb|3 z;_8+!A=h6RLSx5VXx7qDb1SpUq^+1z6e}Vh$M#uze(PHa9xqJ=%W{-O)LwHt+^fy{ zX2zS<+9n)|H;t>?;CH>6_VmsL7Sjtr*wiT^RvF1{#CgWr*v4`l=U`z5^&$oYgAc|) zbXISJ=z!(tC^^Hd$P^A(!y)?cBOZkEhkZ?*P!+$e(r}tkfe9RlT3(QKD?(Q`Si`7l z$l3$?@J%0{@XAmD>&IJyCOnARMKynQ3_D9DNXWP#W5gZuwfV8VZrVBxVpX!-4r~hf2@pU{XObyHG6o%eKdvUJ7olmJA=R}+Z#vuKSWnL6^{-|)X2#eQUf*QA5py^xS#T)z#3TJlfxC} zCoF8Wg+WFi!VQ?k$mF80Z?YueMO0BDcS|id20R)n&cvgxTyYRFBXly|jEE)#;m7gw z&NKv70>YS3g7cE?tO&)340e2SJk#lS5@$XeiruRB{YBVgn)74jjENy_+~697QH2&> zYC~nnaA^Wx&Y(^^ZU!^=$$j>deUT^Q=Ob@Ct07;L#Z<~HoCK>BYFnbTvL=&3^CChh z37*or?-;?s5PM_668#px_>R#4#HD%5jJk>@hMk%3ObGp3LDo<_W<()cBmK(4FL; zsp0X+bybe4QwIrCSGWgVyE&6^E<-@F!c}CvND2$8k+O87>xAs3b}hzt{UG<_v$RQ| z8Jhh{W?goZo)OWdxjqAdIIE55WuZ~6=Ei*lbu<9np#Ln>BV(qVToLQ#Sh9{!T*~^I5^N7LLxU*=Cs4Z`Yb1;tNq1`p| zqvT@&$xYljhUS=uwFU^M&MrnjOs{J42t2=1N6(NI+AXY~tHYU!$$C0TZgQGB-ODkb zx_g?~@Al--y~wAq?L}p0PbfWkM5@JtW>7k_@|KluJR^1W&~yJ7Y!|CuPqOh*Y$7-D z`lIoNk{P=zu$KE*(}I|mXhW#dz>q{zYA=9M8&`a(h}Q1V14ENX{G;1LJ*@nQ`*Q%2 zvL2mxXMs>Uv-RT20ulR%6$^{6-j$(bpXyYvuQ=IvBz6-g&~;#+*h~&bLO%3SrS~MJ{wTf1&lZG!)8379<|=8SEu4;-z=FZ)y!h?gZbs{roa)>joIe7>d@sLy^K55+-c%|FsES^B5DX;W`N*d13 zIlXV*%ji*Ps+7&&{N!@jLs3cu9~)C=wb2w5P*Qct>-g5>v^CKnmYm_IceJ5m)s{!2 z7BkM8)M&~|!1ap`g7$n}zWs-}{QoLj>DnLxWIRnuNM@4jAvA!d`5zX6DnYdVY zRUnMn+*qf+#ZZZMV41}HOSu3aACw!h~Zp#Q&0_BHLld$l6dnY z96I8nnv(Fa#cBrBqMGgZhFnwWZ&UK_GH7y{gG!wR%DPqWF z|2xRX(vWH3mXG76DK-B z3uhYxdndYo4i1t3H^2r)MkdxKKwNf?bVe?Yj{gc9fB|DnkiUaTfZr+8zsoFg0=dBlb|KG;Rw<2-|V^S#<+_ErTji=F`_F@FPh1rFH?(pqhyI zZn}0wJe8y}1*g8D{t5klODEVa4t_H9TIA|05oUkZyHCTi-ltpZY_%G6s=Ybb{_5F5 zMOi{^1(_6>F3kJl`5*byDq}y^#5H~3U)uiVsoG}D2Jy|X)4a+v=z3=9`q5bge(;$U zbIVO|lepCu@@J;SV`2_68ReBR$-%zT&IooZT zq5%FmZT=6^|7Y`O68*nJ{d->ge*yqhfZcz}lK&ISpLrU8k1+nu)A*~v0QvIoSsVWj z`S-}wA58O~pjODh)c=3QBmW)h@6MXvQLDd-4Unb&7Q^~?z`u*iZ(q(|x7R!zR literal 0 HcmV?d00001 diff --git a/pip/doc/examples/pibytearray.cpp b/pip/doc/examples/pibytearray.cpp new file mode 100644 index 0000000..6459222 --- /dev/null +++ b/pip/doc/examples/pibytearray.cpp @@ -0,0 +1,63 @@ +#include "pip.h" + +void _() { +//! [0] +PIByteArray ba; +int i = -1, j = 2; +float f = 1.; +PIString text("123"); +ba << i << j << f << text; // form binary data +piCout << "data =" << ba; +i = j = 0; // clear variables +f = 0; // clear variables +text.clear(); // clear variables +piCout << i << j << f << text; // show variables +ba >> i >> j >> f >> text; // restore data +piCout << i << j << f << text; // show variables +piCout << "data =" << ba; +//! [0] +//! [1] +struct MyType { + MyType(int i_ = 0, const PIString & t_ = PIString()) { + m_i = i_; + m_text = t_; + } + int m_i; + PIString m_text; +}; + +inline PIByteArray & operator <<(PIByteArray & s, const MyType & v) {s << v.m_i << v.m_text; return s;} +inline PIByteArray & operator >>(PIByteArray & s, MyType & v) {s >> v.m_i >> v.m_text; return s;} + +PIByteArray ba; +PIVector my_vec; +my_vec << MyType(1, "s1") << MyType(10, "s10"); // add to vector +ba << my_vec; // store to byte array +piCout << "data =" << ba; +my_vec.clear(); // clear vector +ba >> my_vec; // restore from byte array +//! [1] +//! [2] +PIByteArray ba; +const char * chars = "8 bytes"; +ba << PIByteArray::RawData(chars, 8); // form binary data +piCout << "data =" << ba; +char rchars[16]; +memset(rchars, 0, 16); // clear data +ba >> PIByteArray::RawData(rchars, 8); // restore data +piCout << rchars; +piCout << "data =" << ba; +//! [2] +//! [3] +PIByteArray ba, sba; +uchar uc(127); +sba << uc; // byte array with one byte +ba << sba; // stream operator +piCout << ba; // result +// {1, 0, 0, 0, 127} +ba.clear(); +ba.append(sba); +piCout << ba; // result +// {127} +//! [3] +}; diff --git a/pip/doc/examples/picli.cpp b/pip/doc/examples/picli.cpp new file mode 100644 index 0000000..2a7998f --- /dev/null +++ b/pip/doc/examples/picli.cpp @@ -0,0 +1,26 @@ +#include "pip.h" + +//! [main] +int main(int argc, char ** argv) { + PICLI cli(argc, argv); + cli.addArgument("console"); + cli.addArgument("debug"); + cli.addArgument("Value", "v", "value", true); + if (cli.hasArgument("console")) + piCout << "console active"; + if (cli.hasArgument("debug")) + piCout << "debug active"; + piCout << "Value =" << cli.argumentValue("Value"); + return 0; +} + +These executions are similar: +a.out -cd -v 10 +a.out --value 10 -dc +a.out -c -v 10 -d +a.out --console -d -v 10 +a.out --debug -c --value 10 +//! [main] + +void _() { +}; diff --git a/pip/doc/examples/picollection.cpp b/pip/doc/examples/picollection.cpp new file mode 100644 index 0000000..8f2e82d --- /dev/null +++ b/pip/doc/examples/picollection.cpp @@ -0,0 +1,48 @@ +#include "pip.h" +//! [main] +class ElementA: public PIObject { + PIOBJECT(ElementA) + // ... +}; +ADD_NEW_TO_COLLECTION(ab_group, ElementA) + +class ElementB: public PIObject { + PIOBJECT(ElementB) + // ... +}; +ADD_NEW_TO_COLLECTION(ab_group, ElementB) + +class ElementC: public PIObject { + PIOBJECT(ElementC) + // ... +}; +ADD_NEW_TO_COLLECTION(c_group, ElementC) + +class ElementD: public PIObject { + PIOBJECT(ElementD) + // ... +}; + +int main() { + ElementD * el_d = new ElementD(); + ADD_TO_COLLECTION(ab_group, el_d) + + PIStringList gl = PICollection::groups(); + piCout << gl; // {"ab_group", "c_group"} + piForeachC (PIString g, gl) { + PIVector go = PICollection::groupElements(g); + piCout << "group" << g << ":"; + piForeachC (PIObject * o, go) + piCout << Tab << o->className(); + } + + /* + group ab_group : + ElementA + ElementB + ElementD + group c_group : + ElementC + */ +}; +//! [main] diff --git a/pip/doc/examples/piconfig.cpp b/pip/doc/examples/piconfig.cpp new file mode 100644 index 0000000..fcf62c2 --- /dev/null +++ b/pip/doc/examples/piconfig.cpp @@ -0,0 +1,27 @@ +#include "pip.h" + + +void _() { + +//! [PIConfig::Entry] +/* "example.conf" +a = 1 +s0.a = A +s0.b = B +*/ +PIConfig conf("example.conf", PIIODevice::ReadOnly); +PIConfig::Entry ce = conf.getValue("a"); +int a = ce; // a = 1 +PIString A = ce; // A = "1" +ce = conf.getValue("s0"); +piCout << ce.childCount(); // 2 +A = ce.getValue("b"); // A = "B" +A = conf.getValue("s0.a"); // A = "A" +//! [PIConfig::Entry] +//! [fullName] +PIConfig conf("example.conf", PIIODevice::ReadOnly); +piCout << conf.getValue("a.b.c").name(); // "c" +piCout << conf.getValue("a.b.c").fullName(); // "a.b.c" +//! [fullName] + +}; diff --git a/pip/doc/examples/picontainers.cpp b/pip/doc/examples/picontainers.cpp new file mode 100644 index 0000000..c83cf1e --- /dev/null +++ b/pip/doc/examples/picontainers.cpp @@ -0,0 +1,207 @@ +#include "pip.h" +void _() { + +//! [foreach] +PIVector vec; +vec << 1 << 2 << 3; +piForeach (int & i, vec) + cout << i << ", "; +// 1, 2, 3, +piForeach (int & i, vec) + i++; +piForeach (int & i, vec) + cout << i << ", "; +// 2, 3, 4, +//! [foreach] +//! [foreachC] +PIVector vec; +vec << 1 << 2 << 3; +piForeachC (int & i, vec) + cout << i << ", "; +// 1, 2, 3, +piForeachC (int & i, vec) + i++; // ERROR! const iterator +//! [foreachC] +//! [foreachR] +PIVector vec; +vec << 1 << 2 << 3; +piForeachR (int & i, vec) + cout << i << ", "; +// 3, 2, 1, +piForeachR (int & i, vec) + i++; +piForeachR (int & i, vec) + cout << i << ", "; +// 4, 3, 2, +//! [foreachR] +//! [foreachCR] +PIVector vec; +vec << 1 << 2 << 3; +piForeachCR (int & i, vec) + cout << i << ", "; +// 3, 2, 1, +piForeachCR (int & i, vec) + i++; // ERROR! const iterator +//! [foreachCR] + +//! [PIVector::PIVector] +PIVector vec(4u, 'p'); +piForeachC (char i, vec) + cout << i << ", "; +// p, p, p, p, +//! [PIVector::PIVector] +//! [PIVector::at_c] +PIVector vec; +vec << 1 << 3 << 5; +for (int i = 0; i < vec.size_s(); ++i) + cout << vec.at(i) << ", "; +// 1, 3, 5, +//! [PIVector::at_c] +//! [PIVector::at] +PIVector vec; +vec << 1 << 3 << 5; +for (int i = 0; i < vec.size_s(); ++i) + vec.at(i) += 1; +for (int i = 0; i < vec.size_s(); ++i) + cout << vec.at(i) << ", "; +// 2, 4, 6, +//! [PIVector::at] +//! [PIVector::()_c] +PIVector vec; +vec << 1 << 3 << 5; +for (int i = 0; i < vec.size_s(); ++i) + cout << vec[i] << ", "; +// 1, 3, 5, +//! [PIVector::()_c] +//! [PIVector::()] +PIVector vec; +vec << 1 << 3 << 5; +for (int i = 0; i < vec.size_s(); ++i) + vec[i] += 1; +for (int i = 0; i < vec.size_s(); ++i) + cout << vec[i] << ", "; +// 2, 4, 6, +//! [PIVector::()] +//! [PIVector::data_c] +PIVector vec; +vec << 1 << 3 << 5; +int carr[3]; +// copy data from "vec" to "carr" +memcpy(carr, vec.data(), vec.size() * sizeof(int)); +for (int i = 0; i < vec.size_s(); ++i) + cout << carr[i] << ", "; +// 1, 3, 5, +//! [PIVector::data_c] +//! [PIVector::data] +PIVector vec; +vec << 1 << 3 << 5; +int carr[2] = {12, 13}; +// copy data from "carr" to "vec" with offset +memcpy(vec.data(1), carr, 2 * sizeof(int)); +for (int i = 0; i < vec.size_s(); ++i) + cout << vec[i] << ", "; +// 1, 12, 13, +//! [PIVector::data] +//! [PIVector::resize] +PIVector vec; +vec << 1 << 2; +vec.resize(4); +piForeachC (int & i, vec) + cout << i << ", "; +// 1, 2, 0, 0, +vec.resize(3); +piForeachC (int & i, vec) + cout << i << ", "; +// 1, 2, 0, +//! [PIVector::resize] +//! [PIVector::sort_0] +PIVector vec; +vec << 3 << 2 << 5 << 1 << 4; +vec.sort(); +piForeachC (int & i, vec) + cout << i << ", "; +// 1, 2, 3, 4, 5, +//! [PIVector::sort_0] +//! [PIVector::sort_1] +static int mycomp(const int * v0, const int * v1) { + if (*v0 == *v1) return 0; + return *v0 < *v1 ? 1 : -1; +} +PIVector vec; +vec << 3 << 2 << 5 << 1 << 4; +vec.sort(mycomp); +piForeachC (int & i, vec) + cout << i << ", "; +// 5, 4, 3, 2, 1, +//! [PIVector::sort_1] +//! [PIVector::fill] +PIVector vec; +vec << '1' << '2' << '3' << '4' << '5'; +vec.fill('0'); +piForeachC (char i, vec) + cout << i << ", "; +// 0, 0, 0, 0, 0, +//! [PIVector::fill] +//! [PIVector::remove_0] +PIVector vec; +vec << '1' << '2' << '3' << '4' << '5'; +vec.remove(1); +piForeachC (char i, vec) + cout << i << ", "; +// 1, 3, 4, 5, +//! [PIVector::remove_0] +//! [PIVector::remove_1] +PIVector vec; +vec << '1' << '2' << '3' << '4' << '5'; +vec.remove(2, 2); +piForeachC (char i, vec) + cout << i << ", "; +// 1, 2, 5, +//! [PIVector::remove_1] +//! [PIVector::removeOne] +PIVector vec; +vec << '1' << '2' << '3' << '2' << '1'; +vec.removeOne('2'); +piForeachC (char i, vec) + cout << i << ", "; +// 1, 3, 2, 1, +//! [PIVector::removeOne] +//! [PIVector::removeAll] +PIVector vec; +vec << '1' << '2' << '3' << '2' << '1'; +vec.removeAll('2'); +piForeachC (char i, vec) + cout << i << ", "; +// 1, 3, 1, +//! [PIVector::removeAll] +//! [PIVector::insert_0] +PIVector vec; +vec << '1' << '3' << '4'; +vec.insert(1, '2'); +piForeachC (char i, vec) + cout << i << ", "; +// 1, 2, 3, 4, +//! [PIVector::insert_0] +//! [PIVector::insert_1] +PIVector vec, vec2; +vec << '1' << '4' << '5'; +vec2 << '2' << '3'; +vec.insert(1, vec2); +piForeachC (char i, vec) + cout << i << ", "; +// 1, 2, 3, 4, 5, +//! [PIVector::insert_1] +//! [PIVector::ostream<<] +PIVector vec; +vec << '1' << '2' << '3' << '4' << '5'; +cout << vec << endl; +// {1, 2, 3, 4, 5} +//! [PIVector::ostream<<] +//! [PIVector::PICout<<] +PIVector vec; +vec << '1' << '2' << '3' << '4' << '5'; +piCout << vec; +// {1, 2, 3, 4, 5} +//! [PIVector::PICout<<] + +}; diff --git a/pip/doc/examples/picout.cpp b/pip/doc/examples/picout.cpp new file mode 100644 index 0000000..8261f23 --- /dev/null +++ b/pip/doc/examples/picout.cpp @@ -0,0 +1,36 @@ +#include "pip.h" + +//! [own] +inline PICout operator <<(PICout s, const PIByteArray & ba) { + s.space(); // insert space after previous output + s.quote(); // ONLY if you want to quoted your type + s.setControl(0, true); // clear all features and + // save them to stack, + // now it`s behavior similar to std::cout + + // your output + for (uint i = 0; i < ba.size(); ++i) + s << ba[i]; + + s.restoreControl(); // restore features from stack + s.quote(); // ONLY if you want to quoted your type + return s; +} +//! [own] + +void _() { + +//! [0] +int a = 10, b = 32, c = 11; +piCout << a << Hex << b << Bin << c; +// 10 20 1011 + +piCout << "this" << "is" << Green << "green" << Default << "word"; +// this is green word + +PICout(AddSpaces | AddNewLine | AddQuotes) << Tab << "tab and" << "quotes"; +// "tab and" "quotes" +//! [0] + + +}; diff --git a/pip/doc/examples/pievaluator.cpp b/pip/doc/examples/pievaluator.cpp new file mode 100644 index 0000000..901ac05 --- /dev/null +++ b/pip/doc/examples/pievaluator.cpp @@ -0,0 +1,31 @@ +#include "pip.h" + +void _() { +//! [main] +PIEvaluator eval; + +eval.check("e2eelge"); + +piCout << eval.expression() << "=" << eval.evaluate(); +// e*2*e*e*lg(e) = (17.4461; 0) + +eval.check("10x"); + +piCout << eval.error() << eval.unknownVariables(); +// Unknown variables: "x" {"x"} + +eval.setVariable("x", complexd(1, 2)); +eval.check("10x"); + +piCout << eval.error() << eval.unknownVariables(); +// Correct {} + +piCout << eval.expression() << "=" << eval.evaluate(); +// 10*x = (10; 20) + +eval.setVariable("x", complexd(-2, 0)); + +piCout << eval.expression() << "=" << eval.evaluate(); +// 10*x = (-20; 0) +//! [main] +}; diff --git a/pip/doc/examples/piincludes.cpp b/pip/doc/examples/piincludes.cpp new file mode 100644 index 0000000..a312fa2 --- /dev/null +++ b/pip/doc/examples/piincludes.cpp @@ -0,0 +1,55 @@ +#include "pip.h" +void _() { + +//! [swap] +int v1 = 1, v2 = 2; +piCout << v1 << v2; // 1 2 +piSwap(v1, v2); +piCout << v1 << v2; // 2 1 +//! [swap] +//! [round] +piCout << piRoundf(0.6f) << piRoundd(0.2); // 1 0 +piCout << piRoundf(-0.6f) << piRoundd(-0.2); // -1 0 +//! [round] +//! [floor] +piCout << piFloorf(0.6f) << piFloorf(0.2); // 0 0 +piCout << piFloorf(-0.6f) << piFloorf(-0.2f); // -1 -1 +//! [floor] +//! [ceil] +piCout << piCeilf(0.6f) << piCeilf(0.2); // 1 1 +piCout << piCeilf(-0.6f) << piCeilf(-0.2f); // 0 0 +//! [ceil] +//! [abs] +piCout << piAbsi(5) << piAbsi(-11); // 5 11 +piCout << piAbsf(-0.6f) << piAbsf(-0.2f); // 0.6 0.2 +//! [abs] +//! [min2] +piCout << piMini(5, 1); // 1 +piCout << piMinf(-0.6f, -0.2f); // -0.6 +//! [min2] +//! [min3] +piCout << piMini(5, 1, -1); // -1 +piCout << piMinf(-0.6f, -0.2f, 1.f); // -0.6 +//! [min3] +//! [max2] +piCout << piMaxi(5, 1); // 5 +piCout << piMaxf(-0.6f, -0.2f); // -0.2 +//! [max2] +//! [max3] +piCout << piMaxi(5, 1, -1); // 5 +piCout << piMaxf(-0.6f, -0.2f, 1.f); // 1 +//! [max3] +//! [clamp] +piCout << piClampf(-5, -3, 2); // -3 +piCout << piClampf(1, -3, 2); // 1 +piCout << piClampf(5, -3, 2); // 2 +//! [clamp] +//! [flags] +enum TestEnum {First = 0x1, Second = 0x2, Third = 0x4}; +PIFlags testFlags(First); +testFlags |= Third; +piCout << testFlags[First] << testFlags[Second] << testFlags[Third]; // 1 0 1 +piCout << (int)testFlags; // 5 +//! [flags] + +}; diff --git a/pip/doc/examples/piiodevice.cpp b/pip/doc/examples/piiodevice.cpp new file mode 100644 index 0000000..1afd67d --- /dev/null +++ b/pip/doc/examples/piiodevice.cpp @@ -0,0 +1,53 @@ +#include "pip.h" +void _() { + +//! [0] +class SomeIO: public PIIODevice { + PIIODEVICE(SomeIO) +public: + SomeIO(): PIIODevice() {} +protected: + bool openDevice() { + // open your device here + return if_success; + } + int read(void * read_to, int max_size) { + // read from your device here + return readed_bytes; + } + int write(const void * data, int max_size) { + // write to your device here + return written_bytes; + } + PIString fullPathPrefix() const {return "myio";} + void configureFromFullPath(const PIString & full_path) { + // parse full_path and configure device there + } +}; +REGISTER_DEVICE(SomeIO) +//! [0] +//! [configure] +// file example.conf +dev.reopenEnabled = false +dev.device = /dev/ttyS0 +dev.speed = 9600 +// end example.conf +// code +PISerial ser; +ser.configure("example.conf", "dev"); +//! [configure] +//! [configureDevice] +class SomeIO: public PIIODevice { + ... + bool configureDevice(const void * e_main, const void * e_parent) { + PIConfig::Entry * em = (PIConfig::Entry * )e_main; + PIConfig::Entry * ep = (PIConfig::Entry * )e_parent; + setStringParam(readDeviceSetting("stringParam", stringParam(), em, ep)); + setIntParam(readDeviceSetting("intParam", intParam(), em, ep)); + return true; + } + ... +}; +//! [configureDevice] + +}; diff --git a/pip/doc/examples/pikbdlistener.cpp b/pip/doc/examples/pikbdlistener.cpp new file mode 100644 index 0000000..f095a19 --- /dev/null +++ b/pip/doc/examples/pikbdlistener.cpp @@ -0,0 +1,17 @@ +#include "pip.h" + +//! [main] +void key_event(char key, void * ) { + piCout << "key" << key << "pressed"; +} +int main(int argc, char ** argv) { + PIKbdListener kbd; + kbd.enableExitCapture(); + kbd.start(); + WAIT_FOR_EXIT + return 0; +} +//! [main] + +void _() { +}; diff --git a/pip/doc/examples/pimutex.cpp b/pip/doc/examples/pimutex.cpp new file mode 100644 index 0000000..f0defdc --- /dev/null +++ b/pip/doc/examples/pimutex.cpp @@ -0,0 +1,9 @@ +#include "pip.h" + +void _() { +//! [main] +mutex.lock(); +// ... your code here +mutex.unlock(); +//! [main] +} diff --git a/pip/doc/examples/piobject.cpp b/pip/doc/examples/piobject.cpp new file mode 100644 index 0000000..93107d1 --- /dev/null +++ b/pip/doc/examples/piobject.cpp @@ -0,0 +1,32 @@ +#include "pip.h" + +//! [main] +class ObjectA: public PIObject { + PIOBJECT(ObjectA) +public: + EVENT_HANDLER1(void, handlerA, const PIString & , str) {piCoutObj << "handler A:" << str;} + EVENT2(eventA2, int, i, float, f); + EVENT1(eventA1, const PIString & , str); +}; + +class ObjectB: public PIObject { + PIOBJECT(ObjectB) +public: + EVENT_HANDLER2(void, handlerB, int, i, float, f) {piCoutObj << "handler B:" << i << "," << f;} + EVENT1(eventB, PIString, str); +}; + +int main(int argc, char * argv[]) { + ObjectA obj_a; + ObjectB obj_b; + + CONNECT2(void, int, float, &obj_a, eventA2, &obj_b, handlerB); + obj_a.eventA2(2, 0.5); + + CONNECT1(void, PIString, &obj_b, eventB, &obj_a, handlerA); + obj_b.eventB("event to handler"); + + CONNECT1(void, PIString, &obj_a, eventA1, &obj_b, eventB); + obj_a.eventA1("event to event"); +}; +//! [main] diff --git a/pip/doc/examples/pistatemachine.cpp b/pip/doc/examples/pistatemachine.cpp new file mode 100644 index 0000000..d5228a9 --- /dev/null +++ b/pip/doc/examples/pistatemachine.cpp @@ -0,0 +1,74 @@ +//! [main] +#include "pip.h" + +enum Mode {Start, Manual, Auto, Finish, End}; + +class Machine: public PIStateMachine { + PIOBJECT(Machine) +public: + Machine() { + addState(Start, "start", HANDLER(startFunc)); + addState(Manual, "manual", HANDLER(manualFunc)); + addState(Auto, "auto", HANDLER(autoFunc)); + addState(Finish, "finish", HANDLER(finishFunc)); + addState(End, "end", HANDLER(endFunc)); + + addRule(Start, Manual, "init_ok", HANDLER(beginManualFunc)); + addRule(Start, Auto, "init_ok", HANDLER(beginAutoFunc)); + addRule(Manual, Auto, HANDLER(manualToAutoFunc)); + addRule(Auto, Manual, HANDLER(autoToManualFunc)); + addRule(Manual, Finish); + addRule(Auto, Finish); + Rule r(Finish, End); + r.addCondition("finish_0_ok"); + r.addCondition("finish_1_ok", 2); + addRule(r); + + setInitialState(Start); + + CONNECT2(void, void*, int, &timer, timeout, this, tick); + timer.start(500); + } + virtual void execution(const State & state) { + piCout << "performed conditions:" << currentConditions(); + } + virtual void transition(const State & from, const State & to) { + piCout << "switch from" << from.name << "to" << to.name << "state"; + } + + EVENT_HANDLER(void, startFunc) {piCout << "start function";} + EVENT_HANDLER(void, manualFunc) {piCout << "manual function";} + EVENT_HANDLER(void, autoFunc) {piCout << "auto function";} + EVENT_HANDLER(void, finishFunc) {piCout << "finish function";} + EVENT_HANDLER(void, endFunc) {piCout << "end function";} + EVENT_HANDLER(void, beginManualFunc) {piCout << "begin manual function";} + EVENT_HANDLER(void, beginAutoFunc) {piCout << "begin auto function";} + EVENT_HANDLER(void, autoToManualFunc) {piCout << "switch from auto to manual function";} + EVENT_HANDLER(void, manualToAutoFunc) {piCout << "switch from manual to auto function";} + + PITimer timer; +}; + +Machine machine; + +void key_event(char key, void*) { + switch (key) { + case 's': machine.switchToState(Start); break; + case 'm': machine.switchToState(Manual); break; + case 'a': machine.switchToState(Auto); break; + case 'f': machine.switchToState(Finish); break; + case 'e': machine.switchToState(End); break; + case '1': machine.performCondition("init_ok"); break; + case '2': machine.performCondition("finish_0_ok"); break; + case '3': machine.performCondition("finish_1_ok"); break; + case 'r': machine.resetConditions(); break; + case 'R': machine.reset(); break; + } +} + +int main(int argc, char * argv[]) { + PIKbdListener kbd(key_event); + kbd.enableExitCapture(); + WAIT_FOR_EXIT +}; +//! [main] diff --git a/pip/doc/examples/pistring.cpp b/pip/doc/examples/pistring.cpp new file mode 100644 index 0000000..ab10fb9 --- /dev/null +++ b/pip/doc/examples/pistring.cpp @@ -0,0 +1,332 @@ +#include "pip.h" + +void _() { + +//! [PIString(char * )] +PIString s("string"); +//! [PIString(char * )] +//! [PIString(wchar_t * )] +PIString s(L"string"); +//! [PIString(wchar_t * )] +//! [PIString(char * , int)] +PIString s("string", 3); // s = "str" +//! [PIString(char * , int)] +//! [PIString(int, char)] +PIString s(5, 'p'); // s = "ppppp" +//! [PIString(int, char)] +//! [PIString(int, PIChar)] +PIString s(5, "â„–"); // s = "â„–â„–â„–â„–â„–" +//! [PIString(int, PIChar)] +//! [PIString::char*] +PIString s("pip"); +cout << (char*)s << endl; // pip +//! [PIString::char*] +//! [PIString::<<(PIString)] +PIString s("this"), s1(" is"), s2(" string"); +s << s1 << s2; // s = "this is string" +//! [PIString::<<(PIString)] +//! [PIString::<<(PIChar)] +PIString s("stri"); +s << PIChar('n') << PIChar('g'); // s = "string" +//! [PIString::<<(PIChar)] +//! [PIString::<<(char * )] +PIString s("this"); +s << " is" << " string"; // s = "this is string" +//! [PIString::<<(char * )] +//! [PIString::<<(wchar_t * )] +PIString s; +s << L"â„– -" << " number"; // s = "â„– - number" +//! [PIString::<<(wchar_t * )] +//! [PIString::<<(int)] +PIString s("ten - "); +s << 10; // s = "ten - 10" +//! [PIString::<<(int)] +//! [PIString::mid] +PIString s("0123456789"); +piCout << s.mid(-2, -1); // s = "0123456789" +piCout << s.mid(-2, 4); // s = "01" +piCout << s.mid(3, -1); // s = "3456789" +piCout << s.mid(3, 4); // s = "3456" +//! [PIString::mid] +//! [PIString::left] +PIString s("0123456789"); +piCout << s.left(-1); // s = "" +piCout << s.left(1); // s = "0" +piCout << s.left(5); // s = "01234" +piCout << s.left(15); // s = "0123456789" +//! [PIString::left] +//! [PIString::right] +PIString s("0123456789"); +piCout << s.right(-1); // s = "" +piCout << s.right(1); // s = "9" +piCout << s.right(5); // s = "56789" +piCout << s.right(15); // s = "0123456789" +//! [PIString::right] +//! [PIString::cutMid] +PIString s("0123456789"); +s.cutMid(1, 3); +piCout << s; // s = "0456789" +s.cutMid(-1, 3); +piCout << s; // s = "56789" +s.cutMid(3, -1); +piCout << s; // s = "567" +//! [PIString::cutMid] +//! [PIString::cutLeft] +PIString s("0123456789"); +s.cutLeft(1); +piCout << s; // s = "123456789" +s.cutLeft(3); +piCout << s; // s = "456789" +s.cutLeft(30); +piCout << s; // s = "" +//! [PIString::cutLeft] +//! [PIString::cutRight] +PIString s("0123456789"); +s.cutRight(1); +piCout << s; // s = "012345678" +s.cutRight(3); +piCout << s; // s = "012345" +s.cutRight(30); +piCout << s; // s = "" +//! [PIString::cutRight] +//! [PIString::trim] +PIString s(" string "); +s.trim(); +piCout << s; // s = "string" +//! [PIString::trim] +//! [PIString::trimmed] +PIString s(" string "); +piCout << s.trimmed(); // s = "string" +piCout << s; // s = " string " +//! [PIString::trimmed] +//! [PIString::replace_0] +PIString s("0123456789"); +s.replace(2, 3, "_cut_"); +piCout << s; // s = "01_cut_56789" +s.replace(0, 1, "one_"); +piCout << s; // s = "one_1_cut_56789" +//! [PIString::replace_0] +//! [PIString::replaced_0] +PIString s("0123456789"); +piCout << s.replaced(2, 3, "_cut_"); // s = "01_cut_56789" +piCout << s.replaced(0, 1, "one_"); // s = "one_123456789" +//! [PIString::replaced_0] +//! [PIString::replace_1] +PIString s("pip string"); +bool ok; +s.replace("string", "conf", &ok); +piCout << s << ok; // s = "pip conf", true +s.replace("PIP", "PlInPr", &ok); +piCout << s << ok; // s = "pip conf", false +//! [PIString::replace_1] +//! [PIString::replaced_1] +PIString s("pip string"); +bool ok; +piCout << s.replace("string", "conf", &ok); // s = "pip conf", true +piCout << s.replace("PIP", "PlInPr", &ok); // s = "pip string", false +//! [PIString::replaced_1] +//! [PIString::replaceAll] +PIString s("substrings"); +s.replaceAll("s", "_"); +piCout << s; // s = "_ub_tring_" +//! [PIString::replaceAll] +//! [PIString::repeat] +PIString s(" :-) "); +s.repeat(3); +piCout << s; // :-) :-) :-) +//! [PIString::repeat] +//! [PIString::repeated] +PIString s(" :-) "); +piCout << s.repeated(3); // :-) :-) :-) +piCout << s; // :-) +//! [PIString::repeated] +//! [PIString::insert_0] +PIString s("pp"); +s.insert(1, "i"); +piCout << s; // s = "pip" +//! [PIString::insert_0] +//! [PIString::insert_1] +PIString s("pp"); +s.insert(1, 'i'); +piCout << s; // s = "pip" +//! [PIString::insert_1] +//! [PIString::insert_2] +PIString s("stg"); +s.insert(2, "rin"); +piCout << s; // s = "string" +//! [PIString::insert_2] +//! [PIString::expandRightTo] +PIString s("str"); +s.expandRightTo(2, "_"); +piCout << s; // s = "str" +s.expandRightTo(6, "_"); +piCout << s; // s = "str___" +//! [PIString::expandRightTo] +//! [PIString::expandLeftTo] +PIString s("str"); +s.expandLeftTo(2, "_"); +piCout << s; // s = "str" +s.expandLeftTo(6, "_"); +piCout << s; // s = "___str" +//! [PIString::expandLeftTo] +//! [PIString::reverse] +PIString s("0123456789"); +s.reverse(); +piCout << s; // s = "9876543210" +//! [PIString::reverse] +//! [PIString::reversed] +PIString s("0123456789"); +piCout << s.reversed(); // s = "9876543210" +piCout << s; // s = "0123456789" +//! [PIString::reversed] +//! [PIString::lengthAscii] +piCout << PIString("0123456789").lengthAscii(); // 10 +piCout << PIString("â„–1").lengthAscii(); // 3 +//! [PIString::lengthAscii] +//! [PIString::data] +piCout << PIString("0123456789").data(); // 0123456789 +piCout << PIString("â„–1").data(); // â„–1 +//! [PIString::data] +//! [PIString::split] +PIString s("1 2 3"); +piCout << s.split(" "); // {"1", "2", "3"} +//! [PIString::split] +//! [PIString::find] +PIString s("012345012345"); +piCout << s.find("-"); // -1 +piCout << s.find("3"); // 3 +piCout << s.find("3", 4); // 9 +piCout << s.find("3", 10); // -1 +//! [PIString::find] +//! [PIString::findLast] +PIString s("012345012345"); +piCout << s.find("-"); // -1 +piCout << s.find("3"); // 9 +piCout << s.find("3", 4); // 9 +piCout << s.find("3", 10); // -1 +//! [PIString::findLast] +//! [PIString::findWord] +PIString s("this is "); +piCout << s.find("this"); // 0 +piCout << s.find("is"); // 5 +piCout << s.find("PIP", 4); // -1 +piCout << s.find("", 10); // 8 +//! [PIString::findWord] +//! [PIString::findCWord] +PIString s("this::is "); +piCout << s.find("this"); // 0 +piCout << s.find("is"); // 6 +piCout << s.find("PIP", 4); // 10 +piCout << s.find("", 10); // 9 +//! [PIString::findCWord] +//! [PIString::toNumber] +piCout << PIString("123").toInt(); // 123 +piCout << PIString("123").toInt(16); // 291 +piCout << PIString("0x123").toInt(); // 291 +piCout << PIString("1001").toInt(2); // 9 +//! [PIString::toNumber] +//! [PIString::toFloat] +piCout << PIString("123").toFloat(); // 123 +piCout << PIString("1.2E+2").toFloat(); // 120 +piCout << PIString("0.01").toFloat(); // 0.01 +//! [PIString::toFloat] +//! [PIString::setNumber] +PIString s; +s.setNumber(123); +piCout << s; // 123 +s.setNumber(123, 16); +piCout << s; // 7B +//! [PIString::setNumber] +//! [PIString::setFloat] +PIString s; +s.setNumber(12.3); +piCout << s; // 12.3 +//! [PIString::setFloat] +//! [PIString::setReadableSize] +PIString s; +s.setReadableSize(512); +piCout << s; // 512 B +s.setReadableSize(5120); +piCout << s; // 5.0 kB +s.setReadableSize(512000); +piCout << s; // 500.0 kB +s.setReadableSize(5120000); +piCout << s; // 4.8 MB +s.setReadableSize(512000000); +piCout << s; // 488.2 MB +s.setReadableSize(51200000000); +piCout << s; // 47.6 GB +//! [PIString::setReadableSize] +//! [PIString::fromNumber] +piCout << PIString::fromNumber(123); // 123 +piCout << PIString::fromNumber(123, 16); // 7B +//! [PIString::fromNumber] +//! [PIString::fromFloat] +piCout << PIString::fromNumber(12.3); // 12.3 +//! [PIString::fromFloat] +//! [PIString::readableSize] +piCout << PIString::readableSize(512); // 512 B +piCout << PIString::readableSize(5120); // 5.0 kB +piCout << PIString::readableSize(512000); // 500.0 kB +piCout << PIString::readableSize(5120000); // 4.8 MB +piCout << PIString::readableSize(512000000); // 488.2 MB +piCout << PIString::readableSize(51200000000); // 47.6 GB +//! [PIString::readableSize] +//! [PIString::takeSymbol] +PIString s("\t ! word"); +piCout << s.takeSymbol(); // "!" +piCout << s.takeSymbol(); // "w" +piCout << s.takeSymbol(); // "o" +piCout << s; // "rd" +//! [PIString::takeSymbol] +//! [PIString::takeWord] +PIString s("some words\nnew line "); +piCout << s.takeWord(); // "some" +piCout << s.takeWord(); // "words" +piCout << s.takeWord(); // "new" +piCout << s; // " line " +//! [PIString::takeWord] +//! [PIString::takeLine] +PIString s("some words\nnew line \n\nend"); +piCout << s.takeLine(); // "some words" +piCout << s.takeLine(); // "new line " +piCout << s.takeLine(); // "" +piCout << s; // "end" +//! [PIString::takeLine] +//! [PIString::takeNumber] +PIString s(" 0xFF -99 1.2E+5f 1000L"); +piCout << s.takeNumber(); // "0xFF" +piCout << s.takeNumber(); // "-99" +piCout << s.takeNumber(); // "1.2E+5f" +piCout << s.takeNumber(); // "1000L" +piCout << s; // "" +//! [PIString::takeNumber] +//! [PIString::takeRange] +PIString s(" {figures{inside}}"); +piCout << s.takeRange('{', '}'); // "figures{inside}" +piCout << s; // "" +s = "\"text\\\"shielded\" next"; +piCout << s.takeRange('"', '"'); // "text\"shielded" +piCout << s; // " next" +//! [PIString::takeRange] + +//! [PIStringList::join] +PIStringList sl("1", "2"); +sl << "3"; +piCout << sl.join(" < "); // 1 < 2 < 3 +//! [PIStringList::join] +//! [PIStringList::removeStrings] +PIStringList sl("1", "2"); +sl << "1" << "2" << "3"; +piCout << sl; // {"1", "2", "1", "2", "3"} +piCout << sl.removeStrings("1"); // {"2", "2", "3"} +//! [PIStringList::removeStrings] +//! [PIStringList::removeDuplicates] +PIStringList sl("1", "2"); +sl << "1" << "2" << "3"; +piCout << sl; // {"1", "2", "1", "2", "3"} +piCout << sl.removeDuplicates(); // {"1", "2", "3"} +//! [PIStringList::removeDuplicates] + + +}; diff --git a/pip/doc/examples/pitimer.cpp b/pip/doc/examples/pitimer.cpp new file mode 100644 index 0000000..69fc5b4 --- /dev/null +++ b/pip/doc/examples/pitimer.cpp @@ -0,0 +1,68 @@ +#include "pip.h" + +//! [delimiter] +void tfunc(void * , int delim) { + piCout << "tick with delimiter" << delim; +}; +void tfunc4(void * , int delim) { + piCout << "tick4 with delimiter" << delim; +}; +int main() { + PITimer timer(tfunc); + timer.addDelimiter(2); + timer.addDelimiter(4, tfunc4); + timer.start(50); + piMSleep(200); + timer.stop(); + timer.waitForFinish(); + return 0; +}; +/* Result: +tick with delimiter 1 +tick with delimiter 1 +tick with delimiter 2 +tick with delimiter 1 +tick with delimiter 1 +tick with delimiter 2 +tick4 with delimiter 4 +*/ +//! [delimiter] +//! [elapsed] +int main() { + PITimer timer; + piMSleep(100); + piCout << "elapsed" << timer.elapsed_m() << "ms"; + piMSleep(100); + piCout << "elapsed" << timer.elapsed_m() << "ms"; + timer.reset(); + piMSleep(150); + piCout << "elapsed" << timer.elapsed_s() << "s"; + return 0; +}; +/* Result: +elapsed 100 ms +elapsed 200 ms +elapsed 0.15 s +*/ +//! [elapsed] +//! [system_time] +int main() { + PISystemTime t0; // s = ns = 0 + t0.addMilliseconds(200); // s = 0, ns = 200000000 + t0.addMilliseconds(900); // s = 1, ns = 100000000 + t0 -= PISystemTime::fromSeconds(0.1); // s = 1, ns = 0 + t0.sleep(); // sleep for 1 second + PISystemTime t1; + t0 = currentSystemTime(); + piMSleep(500); + t1 = currentSystemTime(); + (t1 - t0).sleep(); // sleep for 500 milliseconds + return 0; +}; +//! [system_time] + +void _() { + + + +}; diff --git a/pip/doc/html/annotated.html b/pip/doc/html/annotated.html new file mode 100644 index 0000000..185aab6 --- /dev/null +++ b/pip/doc/html/annotated.html @@ -0,0 +1,168 @@ + + + + + + +PIP: Class List + + + + + + + + + + + + + +

    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    Class List
    +
    +
    +
    Here are the classes, structs, unions and interfaces with brief descriptions:
    +
    [detail level 12]
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
     CPIBinaryLogClass for read and write binary data to logfile, and playback this data in realtime
     CPIByteArrayByte array
     CRawDataHelp struct to store/restore custom blocks of data to/from PIByteArray
     CPICharUnicode char
     CPICLICommand-line arguments parser
     CPICollectionInterface to discover element groups
     CPIConfigConfiguration file
     CBranchBranch is a list of entries of configuration file
     CEntryEntry of configuration file
     CPIConnectionComplex Input/Output point
     CPIConsoleConsole output class
     CPICoutClass for formatted output similar std::cout
     CPIDiagnosticsConnection quality diagnostics
     CPIEthernetEthernet device
     CInterfaceNetwork interface descriptor
     CInterfaceListArray of Interface with some features
     CPIEvaluatorThis class provide mathematical evaluations of custom expression
     CPIFileLocal file
     CPIFlagsThis class used as container for bit flags
     CPIIODeviceBase class for input/output classes
     CPIKbdListenerKeyboard console input listener
     CPIMutexMutex
     CPIObjectThis is base class for any classes which use events -> handlers mechanism
     CPIPacketExtractorPackets extractor
     CPIProcess
     CPIProtocol
     CPISerialSerial device
     CPISetSet of any type
     CPIStateMachineBase class for custom state machine
     CRuleRule of transition between states of machine
     CStateState of machine
     CPIStringString class
     CPIStringListStrings array class
     CPISystemTimeSystem time
     CPIThreadThread class
     CPITimeMeasurerTime measurements
     CPITimerTimer
     CPIVariantVariant type
     CPIVectorDynamic array of any type
     CTransferFunctionDifferential evaluations
    +
    +
    +
    + + + + diff --git a/pip/doc/html/annotated.js b/pip/doc/html/annotated.js new file mode 100644 index 0000000..e6d139d --- /dev/null +++ b/pip/doc/html/annotated.js @@ -0,0 +1,36 @@ +var annotated = +[ + [ "PIBinaryLog", "class_p_i_binary_log.html", "class_p_i_binary_log" ], + [ "PIByteArray", "class_p_i_byte_array.html", "class_p_i_byte_array" ], + [ "PIChar", "class_p_i_char.html", "class_p_i_char" ], + [ "PICLI", "class_p_i_c_l_i.html", "class_p_i_c_l_i" ], + [ "PICollection", "class_p_i_collection.html", "class_p_i_collection" ], + [ "PIConfig", "class_p_i_config.html", "class_p_i_config" ], + [ "PIConnection", "class_p_i_connection.html", "class_p_i_connection" ], + [ "PIConsole", "class_p_i_console.html", "class_p_i_console" ], + [ "PICout", "class_p_i_cout.html", "class_p_i_cout" ], + [ "PIDiagnostics", "class_p_i_diagnostics.html", "class_p_i_diagnostics" ], + [ "PIEthernet", "class_p_i_ethernet.html", "class_p_i_ethernet" ], + [ "PIEvaluator", "class_p_i_evaluator.html", "class_p_i_evaluator" ], + [ "PIFile", "class_p_i_file.html", "class_p_i_file" ], + [ "PIFlags", "class_p_i_flags.html", "class_p_i_flags" ], + [ "PIIODevice", "class_p_i_i_o_device.html", "class_p_i_i_o_device" ], + [ "PIKbdListener", "class_p_i_kbd_listener.html", "class_p_i_kbd_listener" ], + [ "PIMutex", "class_p_i_mutex.html", "class_p_i_mutex" ], + [ "PIObject", "class_p_i_object.html", "class_p_i_object" ], + [ "PIPacketExtractor", "class_p_i_packet_extractor.html", "class_p_i_packet_extractor" ], + [ "PIProcess", "class_p_i_process.html", null ], + [ "PIProtocol", "class_p_i_protocol.html", "class_p_i_protocol" ], + [ "PISerial", "class_p_i_serial.html", "class_p_i_serial" ], + [ "PISet", "class_p_i_set.html", "class_p_i_set" ], + [ "PIStateMachine", "class_p_i_state_machine.html", "class_p_i_state_machine" ], + [ "PIString", "class_p_i_string.html", "class_p_i_string" ], + [ "PIStringList", "class_p_i_string_list.html", "class_p_i_string_list" ], + [ "PISystemTime", "class_p_i_system_time.html", "class_p_i_system_time" ], + [ "PIThread", "class_p_i_thread.html", "class_p_i_thread" ], + [ "PITimeMeasurer", "class_p_i_time_measurer.html", "class_p_i_time_measurer" ], + [ "PITimer", "class_p_i_timer.html", "class_p_i_timer" ], + [ "PIVariant", "class_p_i_variant.html", "class_p_i_variant" ], + [ "PIVector", "class_p_i_vector.html", "class_p_i_vector" ], + [ "TransferFunction", "struct_transfer_function.html", null ] +]; \ No newline at end of file diff --git a/pip/doc/html/bc_s.png b/pip/doc/html/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..6b2a7130334fda887507a6a2cae4dd8b63fa6726 GIT binary patch literal 674 zcmV;T0$u%yP)HiMVkku38ZV@j=C=wxE()v?wKLjV)Rg zT^20GAc|B)i;rrokM0DaY1&L0R9u)gfo^OOMDGkH%#HpFm+x}U&G~UN=gc>IbaVLK za^pHDkQGR$@{0gK30)tWy6y2<*RL@d66u-zWdNXrt_{9vHu8Af-(deq&h_b;@4qPE zYCNgN_w@n0Y%t;;0zA|M_;0*bEc}R8yUd*=rvP;2l6HduA@~vqIar2a!gHy7stgPb zye{Q2m&?4R%PXU0EMH_q2p?L(IIrRhpD0Rzr;h^0vW|a9tD>{ARF#u5dROh#uFvlEG z=9eZ>wEL01*dmDBo!YgQRZ`R@$!^`eR}aL +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + + +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    PIBinaryLog Member List
    +
    +
    + +

    This is the complete list of members for PIBinaryLog, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    className() const PIObjectinlinevirtual
    closeDevice()PIBinaryLogprotectedvirtual
    configureDevice(const void *e_main, const void *e_parent=0)PIIODeviceinlineprotectedvirtual
    configureFromFullPath(const PIString &full_path)PIBinaryLogprotectedvirtual
    CONNECTPIObjectrelated
    CONNECT0PIObjectrelated
    CONNECT1PIObjectrelated
    CONNECT2PIObjectrelated
    CONNECT3PIObjectrelated
    CONNECT4PIObjectrelated
    CONNECTUPIObjectrelated
    data() const PIThreadinline
    debug() const PIObjectinline
    DISCONNECTPIObjectrelated
    DISCONNECT0PIObjectrelated
    DISCONNECT1PIObjectrelated
    DISCONNECT2PIObjectrelated
    DISCONNECT3PIObjectrelated
    DISCONNECT4PIObjectrelated
    emitter() const PIObjectinlineprotected
    EVENTPIObjectrelated
    EVENT0PIObjectrelated
    EVENT1PIObjectrelated
    EVENT2PIObjectrelated
    EVENT3PIObjectrelated
    EVENT4PIObjectrelated
    EVENT_HANDLERPIObjectrelated
    EVENT_HANDLER0PIObjectrelated
    EVENT_HANDLER1PIObjectrelated
    EVENT_HANDLER2PIObjectrelated
    EVENT_HANDLER3PIObjectrelated
    EVENT_HANDLER4PIObjectrelated
    EVENT_VHANDLERPIObjectrelated
    EVENT_VHANDLER0PIObjectrelated
    EVENT_VHANDLER1PIObjectrelated
    EVENT_VHANDLER2PIObjectrelated
    EVENT_VHANDLER3PIObjectrelated
    EVENT_VHANDLER4PIObjectrelated
    findByName(const PIString &name)PIObjectinlinestatic
    fullPathPrefix() const PIBinaryLoginlineprotectedvirtual
    HANDLERPIObjectrelated
    init()PIIODeviceinlineprotectedvirtual
    isPropertyExists(const PIString &name) const PIObjectinline
    isRunning() const PIThreadinline
    lock()PIThreadinline
    mutex()PIThreadinline
    name() const PIObjectinline
    needLockRun(bool need)PIThreadinline
    openDevice()PIBinaryLogprotectedvirtual
    piCoutObjPIObjectrelated
    piDisconnect(PIObject *src, const PIString &sig)PIObjectstatic
    piDisconnect(PIObject *src)PIObjectstatic
    piHigh enum valuePIThread
    piHighest enum valuePIThread
    PIIODEVICEPIIODevicerelated
    piLow enum valuePIThread
    piLowerst enum valuePIThread
    piNormal enum valuePIThread
    PIObject(const PIString &name=PIString())PIObject
    PIOBJECTPIObjectrelated
    PIOBJECT_PARENTPIObjectrelated
    PIThread(void *data, ThreadFunc func, bool startNow=false, int loop_delay=-1)PIThread
    PIThread(bool startNow=false, int loop_delay=-1)PIThread
    priority() const PIThreadinline
    Priority enum namePIThread
    properties() const PIObjectinline
    propertiesCount() const PIObjectinline
    property(const PIString &name) const PIObjectinline
    propertyChanged(const PIString &name)PIObjectinlineprotectedvirtual
    readDeviceSetting(const PIString &name, const T &def, const PIConfig::Entry *em, const PIConfig::Entry *ep)PIIODevicerelated
    REGISTER_DEVICEPIIODevicerelated
    setData(void *d)PIThreadinline
    setDebug(bool debug)PIObjectinline
    setName(const PIString &name)PIObjectinline
    setPriority(PIThread::Priority prior)PIThread
    setProperty(const PIString &name, const PIVariant &value)PIObjectinline
    setSlot(ThreadFunc func)PIThreadinline
    PIThread::start(int timer_delay)PIThread
    PIThread::start(ThreadFunc func, int timer_delay)PIThreadinline
    started()PIThread
    startOnce()PIThread
    startOnce(ThreadFunc func)PIThreadinline
    stopped()PIThread
    superClassName() const PIObjectinlinevirtual
    threadedRead(uchar *readed, int size)PIBinaryLogprotectedvirtual
    unlock()PIThreadinline
    waitForFinish(int timeout_msecs)PIThread
    waitForStart(int timeout_msecs)PIThread
    WEAK_CONNECTPIObjectrelated
    WEAK_CONNECT0PIObjectrelated
    WEAK_CONNECT1PIObjectrelated
    WEAK_CONNECT2PIObjectrelated
    WEAK_CONNECT3PIObjectrelated
    WEAK_CONNECT4PIObjectrelated
    +
    + + + + diff --git a/pip/doc/html/class_p_i_binary_log.html b/pip/doc/html/class_p_i_binary_log.html new file mode 100644 index 0000000..86824a1 --- /dev/null +++ b/pip/doc/html/class_p_i_binary_log.html @@ -0,0 +1,526 @@ + + + + + + +PIP: PIBinaryLog Class Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    + +
    +
    PIBinaryLog Class Reference
    +
    +
    + +

    Class for read and write binary data to logfile, and playback this data in realtime. + More...

    +
    + + Inheritance diagram for PIBinaryLog:
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Protected Member Functions

    +PIString fullPathPrefix () const
     Reimplement to construct full unambiguous string prefix. Creating devices by unambiguous string.
     
    +void configureFromFullPath (const PIString &full_path)
     Reimplement to configure your device with parameters of full unambiguous string. Default implementation does nothing.
     
    +bool openDevice ()
     Reimplement to open device, return value will be set to "opened_" variable.
     
    +bool closeDevice ()
     Reimplement to close device, inverse return value will be set to "opened_" variable.
     
    +bool threadedRead (uchar *readed, int size)
     Function executed when thread read some data, default implementation execute external slot "ret_func_".
     
    - Protected Member Functions inherited from PIIODevice
    +virtual bool init ()
     Function executed before first openDevice() or from constructor.
     
    +virtual bool configureDevice (const void *e_main, const void *e_parent=0)
     Reimplement to configure device from entries "e_main" and "e_parent", cast arguments to PIConfig::Entry*.
     
    - Protected Member Functions inherited from PIObject
    +PIObjectemitter () const
     Returns PIObject* which has raised an event. This value is correct only in definition of some event handler.
     
    +virtual void propertyChanged (const PIString &name)
     Virtual function executes after property with name "name" has been changed.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Additional Inherited Members

    - Public Types inherited from PIThread
    enum  Priority {
    +  piLowerst, +piLow, +piNormal, +piHigh, +
    +  piHighest +
    + }
     Priority of thread. More...
     
    - Public Member Functions inherited from PIThread
    PIThread (void *data, ThreadFunc func, bool startNow=false, int loop_delay=-1)
     Contructs thread with custom data "data", external function "func" and main loop delay "loop_delay".
     
    PIThread (bool startNow=false, int loop_delay=-1)
     Contructs thread with main loop delay "loop_delay".
     
    +void setData (void *d)
     Set common data passed to external function.
     
    +void setSlot (ThreadFunc func)
     Set external function that will be executed after every run()
     
    +void setPriority (PIThread::Priority prior)
     Set priority of thread.
     
    +void * data () const
     Returns common data passed to external function.
     
    +PIThread::Priority priority () const
     Return priority of thread.
     
    +bool isRunning () const
     Return true if thread is running.
     
    +void needLockRun (bool need)
     Set necessity of lock every run with internal mutex.
     
    +PIMutexmutex ()
     Return internal mutex.
     
    bool start (int timer_delay)
     Start thread. More...
     
    bool start (ThreadFunc func, int timer_delay)
     Start thread. More...
     
    bool startOnce ()
     Start thread without internal loop. More...
     
    bool startOnce (ThreadFunc func)
     Start thread without internal loop. More...
     
    void stop (bool wait)
     Stop thread. More...
     
    void terminate ()
     Strongly stop thread. More...
     
    bool waitForStart (int timeout_msecs)
     Wait for thread start. More...
     
    bool waitForFinish (int timeout_msecs)
     Wait for thread finish. More...
     
    +void lock ()
     Lock internal mutex.
     
    +void unlock ()
     Unlock internal mutex.
     
    +void started ()
     Raise on thread start.
     
    +void stopped ()
     Raise on thread stop.
     
    - Public Member Functions inherited from PIObject
    PIObject (const PIString &name=PIString())
     Contructs PIObject with name "name".
     
    +PIString name () const
     Returns object name.
     
    +virtual const char * className () const
     Returns object class name.
     
    +virtual const char * superClassName () const
     Returns object superclass name.
     
    +bool debug () const
     Return if debug of this object is active.
     
    +void setName (const PIString &name)
     Set object name.
     
    +void setDebug (bool debug)
     Set object debug active.
     
    +const PIMap< PIString,
    +PIVariant > & 
    properties () const
     Returns properties of the object.
     
    +int propertiesCount () const
     Returns properties count of the object.
     
    +PIVariant property (const PIString &name) const
     Returns property with name "name".
     
    +void setProperty (const PIString &name, const PIVariant &value)
     Set property with name "name" to "value". If there is no such property in object it will be added.
     
    +bool isPropertyExists (const PIString &name) const
     Returns if property with name "name" exists.
     
    - Static Public Member Functions inherited from PIObject
    +static void piDisconnect (PIObject *src, const PIString &sig)
     Disconnect object "src" from all connections with event name "sig".
     
    +static void piDisconnect (PIObject *src)
     Disconnect object "src" from all connections, i.e. all connections where object "src" is emitter.
     
    +static PIObjectfindByName (const PIString &name)
     Returns PIObject* with name "name" or 0, if there is no object found.
     
    +

    Detailed Description

    +

    Class for read and write binary data to logfile, and playback this data in realtime.

    +

    +Synopsis

    +

    Binary Log is a file with simle header, where you can read and write some binary data. Any written data include special header with ID, size and timestamp. This header provides separation different messages from the one file by choosing different IDs. With filterID or special functions, like readBinLog() you can choose IDs what you want to read. With function writeBinLog() or setDefaultID() you can choose ID that mark you data. By default ID = 1, and filterID is empty, that mean you read any ID without filtering. ThreadedRead provide you playback data, with delay that you write data. You can choose realtime playbak or variable speed play back by set PlayMode.

    +

    +Basic usage

    +

    This class provide all functions of PIIODevice, such open(), close(), read() ,write(), and threaded read/write. function setLogDir() need to set directory for BinLog files function createNewFile() need to create new binlog file function restart() need start from the begining of binlog file

    +
    +
    + + + + diff --git a/pip/doc/html/class_p_i_binary_log.js b/pip/doc/html/class_p_i_binary_log.js new file mode 100644 index 0000000..cacf92d --- /dev/null +++ b/pip/doc/html/class_p_i_binary_log.js @@ -0,0 +1,8 @@ +var class_p_i_binary_log = +[ + [ "fullPathPrefix", "class_p_i_binary_log.html#aeea31dead45c393c32a5a37e0e55af77", null ], + [ "configureFromFullPath", "class_p_i_binary_log.html#ae728df2cfb529e5d3bee2c2a327503cc", null ], + [ "openDevice", "class_p_i_binary_log.html#a8d43d7d13b16fd665d5f814cb5daddfe", null ], + [ "closeDevice", "class_p_i_binary_log.html#a3a3e8054f70c230c2d1b04b7ddead5d4", null ], + [ "threadedRead", "class_p_i_binary_log.html#a78ea56ff4489d441205ded106c63966e", null ] +]; \ No newline at end of file diff --git a/pip/doc/html/class_p_i_binary_log__inherit__graph.map b/pip/doc/html/class_p_i_binary_log__inherit__graph.map new file mode 100644 index 0000000..5df8be4 --- /dev/null +++ b/pip/doc/html/class_p_i_binary_log__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/pip/doc/html/class_p_i_binary_log__inherit__graph.md5 b/pip/doc/html/class_p_i_binary_log__inherit__graph.md5 new file mode 100644 index 0000000..6580480 --- /dev/null +++ b/pip/doc/html/class_p_i_binary_log__inherit__graph.md5 @@ -0,0 +1 @@ +90aa7c351ae1babe496b95d157951958 \ No newline at end of file diff --git a/pip/doc/html/class_p_i_binary_log__inherit__graph.svg b/pip/doc/html/class_p_i_binary_log__inherit__graph.svg new file mode 100644 index 0000000..943f9ae --- /dev/null +++ b/pip/doc/html/class_p_i_binary_log__inherit__graph.svg @@ -0,0 +1,57 @@ + + + + + + +PIBinaryLog + + +Node1 + +PIBinaryLog + + +Node2 + + +PIIODevice + + + + +Node2->Node1 + + + + +Node3 + + +PIThread + + + + +Node3->Node2 + + + + +Node4 + + +PIObject + + + + +Node4->Node3 + + + + + diff --git a/pip/doc/html/class_p_i_byte_array-members.html b/pip/doc/html/class_p_i_byte_array-members.html new file mode 100644 index 0000000..0d194c5 --- /dev/null +++ b/pip/doc/html/class_p_i_byte_array-members.html @@ -0,0 +1,184 @@ + + + + + + +PIP: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    PIByteArray Member List
    +
    +
    + +

    This is the complete list of members for PIByteArray, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    append(const void *data_, int size_)PIByteArrayinline
    append(const PIByteArray &data_)PIByteArrayinline
    checksumPlain32() const PIByteArray
    checksumPlain8() const PIByteArray
    convertFromBase64()PIByteArray
    convertToBase64()PIByteArray
    fromBase64() const PIByteArrayinline
    operator!=(PIByteArray &f, PIByteArray &s)PIByteArrayrelated
    operator<<(std::ostream &s, const PIByteArray &ba)PIByteArrayrelated
    operator<<(PICout s, const PIByteArray &ba)PIByteArrayrelated
    operator<<(PIByteArray &s, uchar v)PIByteArrayrelated
    operator<<(PIByteArray &s, const short v)PIByteArrayrelated
    operator<<(PIByteArray &s, const int v)PIByteArrayrelated
    operator<<(PIByteArray &s, const long &v)PIByteArrayrelated
    operator<<(PIByteArray &s, const llong &v)PIByteArrayrelated
    operator<<(PIByteArray &s, const ushort v)PIByteArrayrelated
    operator<<(PIByteArray &s, const uint v)PIByteArrayrelated
    operator<<(PIByteArray &s, const ulong &v)PIByteArrayrelated
    operator<<(PIByteArray &s, const ullong &v)PIByteArrayrelated
    operator<<(PIByteArray &s, const float v)PIByteArrayrelated
    operator<<(PIByteArray &s, const double &v)PIByteArrayrelated
    operator<<(PIByteArray &s, const PIByteArray &v)PIByteArrayrelated
    operator<<(PIByteArray &s, const PIByteArray::RawData &v)PIByteArrayrelated
    operator<<(PIByteArray &s, const PIPair< Type0, Type1 > &v)PIByteArrayrelated
    operator<<(PIByteArray &s, const PIVector< T > &v)PIByteArrayrelated
    operator<<(PIByteArray &s, const PIList< T > &v)PIByteArrayrelated
    operator<<(PIByteArray &s, const PIDeque< T > &v)PIByteArrayrelated
    operator<<(PIByteArray &s, const PIString &v)PIByteArrayrelated
    operator<<(PIByteArray &s, const PIStringList &v)PIByteArrayrelated
    operator<<(PICout s, const PISystemTime &v)PIByteArrayrelated
    operator<<(PIByteArray &s, const PISystemTime &v)PIByteArrayrelated
    operator==(PIByteArray &f, PIByteArray &s)PIByteArrayrelated
    operator>>(PIByteArray &s, uchar &v)PIByteArrayrelated
    operator>>(PIByteArray &s, short &v)PIByteArrayrelated
    operator>>(PIByteArray &s, int &v)PIByteArrayrelated
    operator>>(PIByteArray &s, long &v)PIByteArrayrelated
    operator>>(PIByteArray &s, llong &v)PIByteArrayrelated
    operator>>(PIByteArray &s, ushort &v)PIByteArrayrelated
    operator>>(PIByteArray &s, uint &v)PIByteArrayrelated
    operator>>(PIByteArray &s, ulong &v)PIByteArrayrelated
    operator>>(PIByteArray &s, ullong &v)PIByteArrayrelated
    operator>>(PIByteArray &s, float &v)PIByteArrayrelated
    operator>>(PIByteArray &s, double &v)PIByteArrayrelated
    operator>>(PIByteArray &s, PIByteArray &v)PIByteArrayrelated
    operator>>(PIByteArray &s, PIByteArray::RawData v)PIByteArrayrelated
    operator>>(PIByteArray &s, PIPair< Type0, Type1 > &v)PIByteArrayrelated
    operator>>(PIByteArray &s, PIVector< T > &v)PIByteArrayrelated
    operator>>(PIByteArray &s, PIList< T > &v)PIByteArrayrelated
    operator>>(PIByteArray &s, PIDeque< T > &v)PIByteArrayrelated
    operator>>(PIByteArray &s, PIString &v)PIByteArrayrelated
    operator>>(PIByteArray &s, PIStringList &v)PIByteArrayrelated
    operator>>(PIByteArray &s, PISystemTime &v)PIByteArrayrelated
    PIByteArray()PIByteArrayinline
    PIByteArray(const uint size)PIByteArrayinline
    PIByteArray(const void *data, const uint size)PIByteArrayinline
    resized(int new_size) const PIByteArrayinline
    toBase64() const PIByteArrayinline
    +
    + + + + diff --git a/pip/doc/html/class_p_i_byte_array.html b/pip/doc/html/class_p_i_byte_array.html new file mode 100644 index 0000000..7cc11f4 --- /dev/null +++ b/pip/doc/html/class_p_i_byte_array.html @@ -0,0 +1,448 @@ + + + + + + +PIP: PIByteArray Class Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    + +
    +
    PIByteArray Class Reference
    +
    +
    + +

    Byte array. + More...

    + +

    Inherits PIDeque< T >.

    + + + + + +

    +Classes

    struct  RawData
     Help struct to store/restore custom blocks of data to/from PIByteArray. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    PIByteArray ()
     Constructs an empty byte array.
     
    PIByteArray (const uint size)
     Constructs 0-filled byte array with size "size".
     
    PIByteArray (const void *data, const uint size)
     Constructs byte array from data "data" and size "size".
     
    +PIByteArray resized (int new_size) const
     Return resized byte array.
     
    +PIByteArrayconvertToBase64 ()
     Convert data to Base 64 and return this byte array.
     
    +PIByteArrayconvertFromBase64 ()
     Convert data from Base 64 and return this byte array.
     
    +PIByteArray toBase64 () const
     Return converted to Base 64 data.
     
    +PIByteArray fromBase64 () const
     Return converted from Base 64 data.
     
    +PIByteArrayappend (const void *data_, int size_)
     Add to the end data "data" with size "size".
     
    +PIByteArrayappend (const PIByteArray &data_)
     Add to the end byte array "data".
     
    +uchar checksumPlain8 () const
     Returns plain 8-bit checksum.
     
    +uint checksumPlain32 () const
     Returns plain 32-bit checksum.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Related Functions

    (Note that these are not member functions.)

    +
    +std::ostream & operator<< (std::ostream &s, const PIByteArray &ba)
     Output to std::ostream operator.
     
    +PICout operator<< (PICout s, const PIByteArray &ba)
     Output to PICout operator.
     
    +PIByteArrayoperator<< (PIByteArray &s, uchar v)
     Store operator.
     
    +PIByteArrayoperator<< (PIByteArray &s, const short v)
     Store operator.
     
    +PIByteArrayoperator<< (PIByteArray &s, const int v)
     Store operator.
     
    +PIByteArrayoperator<< (PIByteArray &s, const long &v)
     Store operator.
     
    +PIByteArrayoperator<< (PIByteArray &s, const llong &v)
     Store operator.
     
    +PIByteArrayoperator<< (PIByteArray &s, const ushort v)
     Store operator.
     
    +PIByteArrayoperator<< (PIByteArray &s, const uint v)
     Store operator.
     
    +PIByteArrayoperator<< (PIByteArray &s, const ulong &v)
     Store operator.
     
    +PIByteArrayoperator<< (PIByteArray &s, const ullong &v)
     Store operator.
     
    +PIByteArrayoperator<< (PIByteArray &s, const float v)
     Store operator.
     
    +PIByteArrayoperator<< (PIByteArray &s, const double &v)
     Store operator.
     
    +PIByteArrayoperator<< (PIByteArray &s, const PIByteArray &v)
     Store operator, see Attention for details.
     
    +PIByteArrayoperator<< (PIByteArray &s, const PIByteArray::RawData &v)
     Store operator, see Attention for details.
     
    +template<typename Type0 , typename Type1 >
    PIByteArrayoperator<< (PIByteArray &s, const PIPair< Type0, Type1 > &v)
     Store operator.
     
    +template<typename T >
    PIByteArrayoperator<< (PIByteArray &s, const PIVector< T > &v)
     Store operator.
     
    +template<typename T >
    PIByteArrayoperator<< (PIByteArray &s, const PIList< T > &v)
     Store operator.
     
    +template<typename T >
    PIByteArrayoperator<< (PIByteArray &s, const PIDeque< T > &v)
     Store operator.
     
    +PIByteArrayoperator>> (PIByteArray &s, uchar &v)
     Restore operator.
     
    +PIByteArrayoperator>> (PIByteArray &s, short &v)
     Restore operator.
     
    +PIByteArrayoperator>> (PIByteArray &s, int &v)
     Restore operator.
     
    +PIByteArrayoperator>> (PIByteArray &s, long &v)
     Restore operator.
     
    +PIByteArrayoperator>> (PIByteArray &s, llong &v)
     Restore operator.
     
    +PIByteArrayoperator>> (PIByteArray &s, ushort &v)
     Restore operator.
     
    +PIByteArrayoperator>> (PIByteArray &s, uint &v)
     Restore operator.
     
    +PIByteArrayoperator>> (PIByteArray &s, ulong &v)
     Restore operator.
     
    +PIByteArrayoperator>> (PIByteArray &s, ullong &v)
     Restore operator.
     
    +PIByteArrayoperator>> (PIByteArray &s, float &v)
     Restore operator.
     
    +PIByteArrayoperator>> (PIByteArray &s, double &v)
     Restore operator.
     
    +PIByteArrayoperator>> (PIByteArray &s, PIByteArray &v)
     Restore operator, see Attention for details.
     
    +PIByteArrayoperator>> (PIByteArray &s, PIByteArray::RawData v)
     Restore operator, see Attention for details.
     
    +template<typename Type0 , typename Type1 >
    PIByteArrayoperator>> (PIByteArray &s, PIPair< Type0, Type1 > &v)
     Restore operator.
     
    +template<typename T >
    PIByteArrayoperator>> (PIByteArray &s, PIVector< T > &v)
     Restore operator.
     
    +template<typename T >
    PIByteArrayoperator>> (PIByteArray &s, PIList< T > &v)
     Restore operator.
     
    +template<typename T >
    PIByteArrayoperator>> (PIByteArray &s, PIDeque< T > &v)
     Restore operator.
     
    +bool operator== (PIByteArray &f, PIByteArray &s)
     Byte arrays compare operator.
     
    +bool operator!= (PIByteArray &f, PIByteArray &s)
     Byte arrays compare operator.
     
    +PIByteArrayoperator<< (PIByteArray &s, const PIString &v)
     Output operator to PIByteArray.
     
    +PIByteArrayoperator>> (PIByteArray &s, PIString &v)
     Input operator from PIByteArray.
     
    +PIByteArrayoperator<< (PIByteArray &s, const PIStringList &v)
     Output operator to PIByteArray.
     
    +PIByteArrayoperator>> (PIByteArray &s, PIStringList &v)
     Input operator from PIByteArray.
     
    +PICout operator<< (PICout s, const PISystemTime &v)
     Output operator to PICout.
     
    +PIByteArrayoperator<< (PIByteArray &s, const PISystemTime &v)
     Output operator to PIByteArray.
     
    +PIByteArrayoperator>> (PIByteArray &s, PISystemTime &v)
     Input operator from PIByteArray.
     
    +

    Detailed Description

    +

    Byte array.

    +

    This class based on PIDeque<uchar> and provide some handle function to manipulate it.

    +

    +Usage

    +

    PIByteArray can be used to store custom data and manipulate it. There are many stream operators to store/restore common types to byte array. Store operators places data at the end of array, restore operators takes data from the beginning of array. In addition there are Base 64 convertions and checksums:

      +
    • plain 8-bit
    • +
    • plain 32-bit
    • +
    +

    One of the major usage of PIByteArray is stream functions. You can form binary packet from many types (also dynamic types, e.g. PIVector) with one line:

    +
    int i = -1, j = 2;
    +
    float f = 1.;
    +
    PIString text("123");
    +
    ba << i << j << f << text; // form binary data
    +
    piCout << "data =" << ba;
    +
    i = j = 0; // clear variables
    +
    f = 0; // clear variables
    +
    text.clear(); // clear variables
    +
    piCout << i << j << f << text; // show variables
    +
    ba >> i >> j >> f >> text; // restore data
    +
    piCout << i << j << f << text; // show variables
    +
    piCout << "data =" << ba;
    +

    Or you can descibe stream operator of your own type and store/restore vectors of your type:

    struct MyType {
    +
    MyType(int i_ = 0, const PIString & t_ = PIString()) {
    +
    m_i = i_;
    +
    m_text = t_;
    +
    }
    +
    int m_i;
    +
    PIString m_text;
    +
    };
    +
    +
    inline PIByteArray & operator <<(PIByteArray & s, const MyType & v) {s << v.m_i << v.m_text; return s;}
    +
    inline PIByteArray & operator >>(PIByteArray & s, MyType & v) {s >> v.m_i >> v.m_text; return s;}
    +
    + + +
    my_vec << MyType(1, "s1") << MyType(10, "s10"); // add to vector
    +
    ba << my_vec; // store to byte array
    +
    piCout << "data =" << ba;
    +
    my_vec.clear(); // clear vector
    +
    ba >> my_vec; // restore from byte array
    +

    For store/restore custom data blocks there is PIByteArray::RawData class. Stream operators of this class simply store/restore data block to/from byte array.

    +
    const char * chars = "8 bytes";
    +
    ba << PIByteArray::RawData(chars, 8); // form binary data
    +
    piCout << "data =" << ba;
    +
    char rchars[16];
    +
    memset(rchars, 0, 16); // clear data
    +
    ba >> PIByteArray::RawData(rchars, 8); // restore data
    +
    piCout << rchars;
    +
    piCout << "data =" << ba;
    +

    +Attention

    +

    Stream operator of PIByteArray store byte array as vector, not simply append content of byte array. This operators useful to transmit custom data as PIByteArray packed into parent byte array, e.g. to form packet from PIByteArray. To append one byte array to another use funtion append().

    PIByteArray ba, sba;
    +
    uchar uc(127);
    +
    sba << uc; // byte array with one byte
    +
    ba << sba; // stream operator
    +
    piCout << ba; // result
    +
    // {1, 0, 0, 0, 127}
    +
    ba.clear();
    +
    ba.append(sba);
    +
    piCout << ba; // result
    +
    // {127}
    +
    +
    + + + + diff --git a/pip/doc/html/class_p_i_byte_array.js b/pip/doc/html/class_p_i_byte_array.js new file mode 100644 index 0000000..45d8351 --- /dev/null +++ b/pip/doc/html/class_p_i_byte_array.js @@ -0,0 +1,61 @@ +var class_p_i_byte_array = +[ + [ "RawData", "struct_p_i_byte_array_1_1_raw_data.html", "struct_p_i_byte_array_1_1_raw_data" ], + [ "PIByteArray", "class_p_i_byte_array.html#aaff8154b09dfd8f6b42a2ffccf77a417", null ], + [ "PIByteArray", "class_p_i_byte_array.html#a77c41715c48c52ca6fde95e49c398bff", null ], + [ "PIByteArray", "class_p_i_byte_array.html#a53393736cdd642d3fb0f68cc762eaf10", null ], + [ "resized", "class_p_i_byte_array.html#a0c59a360cbc7e6a36f6ed13c041ee7f7", null ], + [ "convertToBase64", "class_p_i_byte_array.html#ae024450dbd082250560b168189a6f043", null ], + [ "convertFromBase64", "class_p_i_byte_array.html#a3dff2c2171ecbd1b12c0edc232648cf9", null ], + [ "toBase64", "class_p_i_byte_array.html#afa9bf40116570c11328f117849180f7f", null ], + [ "fromBase64", "class_p_i_byte_array.html#aa3b756ec5c724a649d90c13c0f104f6b", null ], + [ "append", "class_p_i_byte_array.html#a3f59d6f9e5aa117ebce88de767bdf6a0", null ], + [ "append", "class_p_i_byte_array.html#a42ccaa717c6341aaf47a3a811c8c6498", null ], + [ "checksumPlain8", "class_p_i_byte_array.html#aeec044f424697f902aa2903bc74a889c", null ], + [ "checksumPlain32", "class_p_i_byte_array.html#acbf4fa4d378627d648f6634bbf08349d", null ], + [ "operator<<", "class_p_i_byte_array.html#ab1e23cf01f90071f1239fcfc17c8ed3d", null ], + [ "operator<<", "class_p_i_byte_array.html#a32613363dcf56aac9f693c135fff6f89", null ], + [ "operator<<", "class_p_i_byte_array.html#ae4152fca25c857d502396fc477dd5b4e", null ], + [ "operator<<", "class_p_i_byte_array.html#a27cb4295a655c80c9223e2af2843ac14", null ], + [ "operator<<", "class_p_i_byte_array.html#ab8951385e7eda4d8d6925b2a519624ae", null ], + [ "operator<<", "class_p_i_byte_array.html#a750963c1940bf98afb59c6d5ee745f57", null ], + [ "operator<<", "class_p_i_byte_array.html#a34e8e853e5ed6beccd359e6cdbbd79ee", null ], + [ "operator<<", "class_p_i_byte_array.html#ab5772ffd8c729df606daef9af4bab33f", null ], + [ "operator<<", "class_p_i_byte_array.html#ad4fedc65364715baf41b635174c5fe8a", null ], + [ "operator<<", "class_p_i_byte_array.html#ac808ed51ef9536275a6133abfde4bb83", null ], + [ "operator<<", "class_p_i_byte_array.html#ab44ea6a59afa51508ff2901d41b627f0", null ], + [ "operator<<", "class_p_i_byte_array.html#a2a485f703e44ccea18c8638c7c4c5889", null ], + [ "operator<<", "class_p_i_byte_array.html#a499da27a6b5a3474fff8cda6c723886a", null ], + [ "operator<<", "class_p_i_byte_array.html#a959efd617590b844d4dccf73c3565f95", null ], + [ "operator<<", "class_p_i_byte_array.html#a65a8de355c00ee10f723c0c4a108adcd", null ], + [ "operator<<", "class_p_i_byte_array.html#a96190dee065ee5b78285ca129e2adb1d", null ], + [ "operator<<", "class_p_i_byte_array.html#adbbbcf8bf5e3b56e3a114df299fe7c7f", null ], + [ "operator<<", "class_p_i_byte_array.html#a068a0bcfbe5b9d2fa4b778ba968f44db", null ], + [ "operator<<", "class_p_i_byte_array.html#a9b9678e9c4c372565e933d2e3ea99407", null ], + [ "operator>>", "class_p_i_byte_array.html#ab13b3356e12200d943eca6fb5914fff3", null ], + [ "operator>>", "class_p_i_byte_array.html#ab169b593f262836b81ef0f1e85742bb5", null ], + [ "operator>>", "class_p_i_byte_array.html#a9193853f9065d13faa500d7402011e95", null ], + [ "operator>>", "class_p_i_byte_array.html#a2936831420330a89c932b9378bcb531a", null ], + [ "operator>>", "class_p_i_byte_array.html#ac2f7009be50024c741ba1e34e2520105", null ], + [ "operator>>", "class_p_i_byte_array.html#a6d7b09e8e0ae58e2a0660a95f5297d62", null ], + [ "operator>>", "class_p_i_byte_array.html#a6c4c55eac2a9c3f087e4f86ae8d76104", null ], + [ "operator>>", "class_p_i_byte_array.html#a562da0ccdeabb8269757e25955bb3da5", null ], + [ "operator>>", "class_p_i_byte_array.html#a51721eb920f53d0c919eec52cf10cd52", null ], + [ "operator>>", "class_p_i_byte_array.html#a908c8071a8eee9fb7a3752bee614333a", null ], + [ "operator>>", "class_p_i_byte_array.html#a4f8b92d20e45ebe4e3bac6e2ccedf9f0", null ], + [ "operator>>", "class_p_i_byte_array.html#aa77ecc852d4e3ba6e4fbe7a7258cfb87", null ], + [ "operator>>", "class_p_i_byte_array.html#afb2b51047b10d19aced414fec7744dd2", null ], + [ "operator>>", "class_p_i_byte_array.html#ab2b77a56ba810e64d937dc4f33438310", null ], + [ "operator>>", "class_p_i_byte_array.html#a3ad45b3c81b974189a6c9ab5193e24d5", null ], + [ "operator>>", "class_p_i_byte_array.html#a35c4ea115bdcb4627fd9fa635d1c681a", null ], + [ "operator>>", "class_p_i_byte_array.html#a6cee541d60566eef92585f50aa9ec436", null ], + [ "operator==", "class_p_i_byte_array.html#a30e1b305b0f9bdcfc1d1e9c970e82d5d", null ], + [ "operator!=", "class_p_i_byte_array.html#a9db13625502ec190fa40b4155ad136eb", null ], + [ "operator<<", "class_p_i_byte_array.html#adaf9cbdf9ef8f318a08ff773a54a3d6c", null ], + [ "operator>>", "class_p_i_byte_array.html#a6cd37806e2577611e4a22dc2031fc166", null ], + [ "operator<<", "class_p_i_byte_array.html#a08f09ee06ada0b3aab326f1c888daf4c", null ], + [ "operator>>", "class_p_i_byte_array.html#a410bed597b49992e265e0941feca5cb8", null ], + [ "operator<<", "class_p_i_byte_array.html#a6d0138248acb706f616018e64bbc64c6", null ], + [ "operator<<", "class_p_i_byte_array.html#a43f469a88331d5bf809f97f77a12e019", null ], + [ "operator>>", "class_p_i_byte_array.html#ad563e018cb30fbced03966997b2fc65a", null ] +]; \ No newline at end of file diff --git a/pip/doc/html/class_p_i_c_l_i-members.html b/pip/doc/html/class_p_i_c_l_i-members.html new file mode 100644 index 0000000..8433fda --- /dev/null +++ b/pip/doc/html/class_p_i_c_l_i-members.html @@ -0,0 +1,194 @@ + + + + + + +PIP: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    PICLI Member List
    +
    +
    + +

    This is the complete list of members for PICLI, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    addArgument(const PIString &name, bool value=false)PICLIinline
    addArgument(const PIString &name, const PIChar &shortKey, bool value=false)PICLIinline
    addArgument(const PIString &name, const char *shortKey, bool value=false)PICLIinline
    addArgument(const PIString &name, const PIChar &shortKey, const PIString &fullKey, bool value=false)PICLIinline
    addArgument(const PIString &name, const char *shortKey, const PIString &fullKey, bool value=false)PICLIinline
    className() const PIObjectinlinevirtual
    CONNECTPIObjectrelated
    CONNECT0PIObjectrelated
    CONNECT1PIObjectrelated
    CONNECT2PIObjectrelated
    CONNECT3PIObjectrelated
    CONNECT4PIObjectrelated
    CONNECTUPIObjectrelated
    debug() const PIObjectinline
    DISCONNECTPIObjectrelated
    DISCONNECT0PIObjectrelated
    DISCONNECT1PIObjectrelated
    DISCONNECT2PIObjectrelated
    DISCONNECT3PIObjectrelated
    DISCONNECT4PIObjectrelated
    emitter() const PIObjectinlineprotected
    EVENTPIObjectrelated
    EVENT0PIObjectrelated
    EVENT1PIObjectrelated
    EVENT2PIObjectrelated
    EVENT3PIObjectrelated
    EVENT4PIObjectrelated
    EVENT_HANDLERPIObjectrelated
    EVENT_HANDLER0PIObjectrelated
    EVENT_HANDLER1PIObjectrelated
    EVENT_HANDLER2PIObjectrelated
    EVENT_HANDLER3PIObjectrelated
    EVENT_HANDLER4PIObjectrelated
    EVENT_VHANDLERPIObjectrelated
    EVENT_VHANDLER0PIObjectrelated
    EVENT_VHANDLER1PIObjectrelated
    EVENT_VHANDLER2PIObjectrelated
    EVENT_VHANDLER3PIObjectrelated
    EVENT_VHANDLER4PIObjectrelated
    findByName(const PIString &name)PIObjectinlinestatic
    HANDLERPIObjectrelated
    isPropertyExists(const PIString &name) const PIObjectinline
    name() const PIObjectinline
    PICLI(int argc, char *argv[])PICLI
    piCoutObjPIObjectrelated
    piDisconnect(PIObject *src, const PIString &sig)PIObjectstatic
    piDisconnect(PIObject *src)PIObjectstatic
    PIOBJECTPIObjectrelated
    PIObject(const PIString &name=PIString())PIObject
    PIOBJECT_PARENTPIObjectrelated
    programCommand()PICLIinline
    properties() const PIObjectinline
    propertiesCount() const PIObjectinline
    property(const PIString &name) const PIObjectinline
    propertyChanged(const PIString &name)PIObjectinlineprotectedvirtual
    rawArgument(int index)PICLIinline
    rawArguments()PICLIinline
    setDebug(bool debug)PIObjectinline
    setName(const PIString &name)PIObjectinline
    setProperty(const PIString &name, const PIVariant &value)PIObjectinline
    superClassName() const PIObjectinlinevirtual
    WEAK_CONNECTPIObjectrelated
    WEAK_CONNECT0PIObjectrelated
    WEAK_CONNECT1PIObjectrelated
    WEAK_CONNECT2PIObjectrelated
    WEAK_CONNECT3PIObjectrelated
    WEAK_CONNECT4PIObjectrelated
    +
    + + + + diff --git a/pip/doc/html/class_p_i_c_l_i.html b/pip/doc/html/class_p_i_c_l_i.html new file mode 100644 index 0000000..bc4175d --- /dev/null +++ b/pip/doc/html/class_p_i_c_l_i.html @@ -0,0 +1,445 @@ + + + + + + +PIP: PICLI Class Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    + +
    +
    PICLI Class Reference
    +
    +
    + +

    Command-line arguments parser. + More...

    +
    + + Inheritance diagram for PICLI:
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    PICLI (int argc, char *argv[])
     Constructor.
     
    +void addArgument (const PIString &name, bool value=false)
     Add argument with name "name", short key = name first letter, full key = name.
     
    +void addArgument (const PIString &name, const PIChar &shortKey, bool value=false)
     Add argument with name "name", short key = "shortKey", full key = name.
     
    +void addArgument (const PIString &name, const char *shortKey, bool value=false)
     Add argument with name "name", short key = "shortKey", full key = name.
     
    +void addArgument (const PIString &name, const PIChar &shortKey, const PIString &fullKey, bool value=false)
     Add argument with name "name", short key = "shortKey", full key = "fullKey".
     
    +void addArgument (const PIString &name, const char *shortKey, const PIString &fullKey, bool value=false)
     Add argument with name "name", short key = "shortKey", full key = "fullKey".
     
    +PIString rawArgument (int index)
     Returns unparsed command-line argument by index "index". Index 0 is program execute command.
     
    +const PIStringListrawArguments ()
     Returns unparsed command-line arguments.
     
    +PIString programCommand ()
     Returns program execute command without arguments.
     
    - Public Member Functions inherited from PIObject
    PIObject (const PIString &name=PIString())
     Contructs PIObject with name "name".
     
    +PIString name () const
     Returns object name.
     
    +virtual const char * className () const
     Returns object class name.
     
    +virtual const char * superClassName () const
     Returns object superclass name.
     
    +bool debug () const
     Return if debug of this object is active.
     
    +void setName (const PIString &name)
     Set object name.
     
    +void setDebug (bool debug)
     Set object debug active.
     
    +const PIMap< PIString,
    +PIVariant > & 
    properties () const
     Returns properties of the object.
     
    +int propertiesCount () const
     Returns properties count of the object.
     
    +PIVariant property (const PIString &name) const
     Returns property with name "name".
     
    +void setProperty (const PIString &name, const PIVariant &value)
     Set property with name "name" to "value". If there is no such property in object it will be added.
     
    +bool isPropertyExists (const PIString &name) const
     Returns if property with name "name" exists.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Additional Inherited Members

    - Static Public Member Functions inherited from PIObject
    +static void piDisconnect (PIObject *src, const PIString &sig)
     Disconnect object "src" from all connections with event name "sig".
     
    +static void piDisconnect (PIObject *src)
     Disconnect object "src" from all connections, i.e. all connections where object "src" is emitter.
     
    +static PIObjectfindByName (const PIString &name)
     Returns PIObject* with name "name" or 0, if there is no object found.
     
    - Protected Member Functions inherited from PIObject
    +PIObjectemitter () const
     Returns PIObject* which has raised an event. This value is correct only in definition of some event handler.
     
    +virtual void propertyChanged (const PIString &name)
     Virtual function executes after property with name "name" has been changed.
     
    +

    Detailed Description

    +

    Command-line arguments parser.

    +

    +Synopsis

    +

    This class provide handy parsing of command-line arguments. First you should add arguments to PICLI with function addArgument(). Then you can check if there is some argument in application command-line with function hasArgument();

    +

    +Example

    +
    int main(int argc, char ** argv) {
    +
    PICLI cli(argc, argv);
    +
    cli.addArgument("console");
    +
    cli.addArgument("debug");
    +
    cli.addArgument("Value", "v", "value", true);
    +
    if (cli.hasArgument("console"))
    +
    piCout << "console active";
    +
    if (cli.hasArgument("debug"))
    +
    piCout << "debug active";
    +
    piCout << "Value =" << cli.argumentValue("Value");
    +
    return 0;
    +
    }
    +
    +
    These executions are similar:
    +
    a.out -cd -v 10
    +
    a.out --value 10 -dc
    +
    a.out -c -v 10 -d
    +
    a.out --console -d -v 10
    +
    a.out --debug -c --value 10
    +
    +
    + + + + diff --git a/pip/doc/html/class_p_i_c_l_i.js b/pip/doc/html/class_p_i_c_l_i.js new file mode 100644 index 0000000..956c8b6 --- /dev/null +++ b/pip/doc/html/class_p_i_c_l_i.js @@ -0,0 +1,12 @@ +var class_p_i_c_l_i = +[ + [ "PICLI", "class_p_i_c_l_i.html#abc57c0e1bb06e1af2087e1ff158039ac", null ], + [ "addArgument", "class_p_i_c_l_i.html#a6091825b4eb1e3e8e336ae9524fa8331", null ], + [ "addArgument", "class_p_i_c_l_i.html#ab378101cdb1517da4c430d3b58a3ed79", null ], + [ "addArgument", "class_p_i_c_l_i.html#a787fd46efaa3f64d57398782e7deb612", null ], + [ "addArgument", "class_p_i_c_l_i.html#a1335cd90d383e1cdeeb6e6b729d18244", null ], + [ "addArgument", "class_p_i_c_l_i.html#a9a69f3dd05852ebdbddb0543ca912faa", null ], + [ "rawArgument", "class_p_i_c_l_i.html#acfa1357e283fb2fceb69ff93e53cef6f", null ], + [ "rawArguments", "class_p_i_c_l_i.html#a48e694f023cd8a8606865b1704583613", null ], + [ "programCommand", "class_p_i_c_l_i.html#a31bf2b18e408514af453029ebc09f00d", null ] +]; \ No newline at end of file diff --git a/pip/doc/html/class_p_i_c_l_i__inherit__graph.map b/pip/doc/html/class_p_i_c_l_i__inherit__graph.map new file mode 100644 index 0000000..a35364c --- /dev/null +++ b/pip/doc/html/class_p_i_c_l_i__inherit__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/class_p_i_c_l_i__inherit__graph.md5 b/pip/doc/html/class_p_i_c_l_i__inherit__graph.md5 new file mode 100644 index 0000000..ba9996f --- /dev/null +++ b/pip/doc/html/class_p_i_c_l_i__inherit__graph.md5 @@ -0,0 +1 @@ +63bc62143fdf935156af34224b74aa68 \ No newline at end of file diff --git a/pip/doc/html/class_p_i_c_l_i__inherit__graph.svg b/pip/doc/html/class_p_i_c_l_i__inherit__graph.svg new file mode 100644 index 0000000..1c4cf4d --- /dev/null +++ b/pip/doc/html/class_p_i_c_l_i__inherit__graph.svg @@ -0,0 +1,31 @@ + + + + + + +PICLI + + +Node1 + +PICLI + + +Node2 + + +PIObject + + + + +Node2->Node1 + + + + + diff --git a/pip/doc/html/class_p_i_char-members.html b/pip/doc/html/class_p_i_char-members.html new file mode 100644 index 0000000..24d69fc --- /dev/null +++ b/pip/doc/html/class_p_i_char-members.html @@ -0,0 +1,156 @@ + + + + + + +PIP: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    PIChar Member List
    +
    +
    + +

    This is the complete list of members for PIChar, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    isAlpha() const PICharinline
    isAscii() const PICharinline
    isControl() const PICharinline
    isDigit() const PICharinline
    isGraphical() const PICharinline
    isHex() const PICharinline
    isLower() const PICharinline
    isPrint() const PICharinline
    isSpace() const PICharinline
    isUpper() const PICharinline
    operator!=(const PIChar &o) const PICharinline
    operator<(const PIChar &o) const PICharinline
    operator<<(PIByteArray &s, const PIChar &v)PICharfriend
    operator<=(const PIChar &o) const PICharinline
    operator=(const char v)PICharinline
    operator==(const PIChar &o) const PICharinline
    operator>(const PIChar &o) const PICharinline
    operator>=(const PIChar &o) const PICharinline
    operator>>(PIByteArray &s, PIChar &v)PICharfriend
    PIChar(const char c)PICharinline
    PIChar(const short c)PICharinline
    PIChar(const int c)PICharinline
    PIChar(const uchar c)PICharinline
    PIChar(const ushort c)PICharinline
    PIChar(const uint c=0)PICharinline
    PIChar(const char *c)PICharinline
    toCharPtr() const PICharinline
    toLower() const PICharinline
    toUpper() const PICharinline
    +
    + + + + diff --git a/pip/doc/html/class_p_i_char.html b/pip/doc/html/class_p_i_char.html new file mode 100644 index 0000000..56cdd26 --- /dev/null +++ b/pip/doc/html/class_p_i_char.html @@ -0,0 +1,258 @@ + + + + + + +PIP: PIChar Class Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    + +
    +
    PIChar Class Reference
    +
    +
    + +

    Unicode char. + More...

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    PIChar (const char c)
     Contructs ascii symbol.
     
    PIChar (const short c)
     Contructs 2-bytes symbol.
     
    PIChar (const int c)
     Contructs 4-bytes symbol.
     
    PIChar (const uchar c)
     Contructs ascii symbol.
     
    PIChar (const ushort c)
     Contructs 2-bytes symbol.
     
    PIChar (const uint c=0)
     Default constructor. Contructs 4-bytes symbol.
     
    PIChar (const char *c)
     Contructs symbol from no more than 4 bytes of string.
     
    +PICharoperator= (const char v)
     Copy operator.
     
    +bool operator== (const PIChar &o) const
     Compare operator.
     
    +bool operator!= (const PIChar &o) const
     Compare operator.
     
    +bool operator> (const PIChar &o) const
     Compare operator.
     
    +bool operator< (const PIChar &o) const
     Compare operator.
     
    +bool operator>= (const PIChar &o) const
     Compare operator.
     
    +bool operator<= (const PIChar &o) const
     Compare operator.
     
    +bool isDigit () const
     Return true if symbol is digit ('0' to '9')
     
    +bool isHex () const
     Return true if symbol is HEX digit ('0' to '9', 'a' to 'f', 'A' to 'F')
     
    +bool isGraphical () const
     Return true if symbol is drawable (without space)
     
    +bool isControl () const
     Return true if symbol is control byte (< 32 or 127)
     
    +bool isLower () const
     Return true if symbol is in lower case.
     
    +bool isUpper () const
     Return true if symbol is in upper case.
     
    +bool isPrint () const
     Return true if symbol is printable (with space)
     
    +bool isSpace () const
     Return true if symbol is space or tab.
     
    +bool isAlpha () const
     Return true if symbol is alphabetical letter.
     
    +bool isAscii () const
     Return true if symbol is ascii (< 128)
     
    +const char * toCharPtr () const
     Return as "char * " string.
     
    +PIChar toUpper () const
     Return symbol in upper case.
     
    +PIChar toLower () const
     Return symbol in lower case.
     
    + + + + + + + +

    +Friends

    +PIByteArrayoperator<< (PIByteArray &s, const PIChar &v)
     Write operator to PIByteArray.
     
    +PIByteArrayoperator>> (PIByteArray &s, PIChar &v)
     Read operator from PIByteArray.
     
    +

    Detailed Description

    +

    Unicode char.

    +

    This class is wrapper around "uint". There are many contructors and information functions

    +
    +
    + + + + diff --git a/pip/doc/html/class_p_i_char.js b/pip/doc/html/class_p_i_char.js new file mode 100644 index 0000000..40bedd7 --- /dev/null +++ b/pip/doc/html/class_p_i_char.js @@ -0,0 +1,32 @@ +var class_p_i_char = +[ + [ "PIChar", "class_p_i_char.html#a9c13f6b3a242d13924b64dbd3deec204", null ], + [ "PIChar", "class_p_i_char.html#ac11bc7f521d447ef402a9cb9ef05707f", null ], + [ "PIChar", "class_p_i_char.html#a272e1665fe42d557cad91ed3dc416a29", null ], + [ "PIChar", "class_p_i_char.html#a610057fd1840516fce1c5fb0955535b9", null ], + [ "PIChar", "class_p_i_char.html#a2dcff5b1473cc887cff45cb31bb132f5", null ], + [ "PIChar", "class_p_i_char.html#ae684b56acf78dff045b74bfdd91b0540", null ], + [ "PIChar", "class_p_i_char.html#a5507bf7ad8fe1f80ace5f56e3e694ddd", null ], + [ "operator=", "class_p_i_char.html#a1ef5c3ed6b13e9dcf10f23f702dd600e", null ], + [ "operator==", "class_p_i_char.html#a394d08896adbc253e919fd662422228c", null ], + [ "operator!=", "class_p_i_char.html#a90f2d92ee153f08c7b850c99fcbc4eac", null ], + [ "operator>", "class_p_i_char.html#a4610045d91868b899c0065150fe7686d", null ], + [ "operator<", "class_p_i_char.html#a4939c02157bfbcb9a3a669ee738ddaa9", null ], + [ "operator>=", "class_p_i_char.html#ac68d8b501225795d53adf67b4d9ea2b2", null ], + [ "operator<=", "class_p_i_char.html#abf1f0ddb2ea78a58d20b880011c838b1", null ], + [ "isDigit", "class_p_i_char.html#a56d2cedeabb4c86d8b777d4e1411c25d", null ], + [ "isHex", "class_p_i_char.html#a2730d5567a93f19d6389be7ea07b1168", null ], + [ "isGraphical", "class_p_i_char.html#ac02e6ddd18b2cb837b772444ee17be2c", null ], + [ "isControl", "class_p_i_char.html#a683aebcd7e500fc96c6367dfe6932219", null ], + [ "isLower", "class_p_i_char.html#afcf054d8470c333c69f8b7df2c767ecf", null ], + [ "isUpper", "class_p_i_char.html#a9bf6075c65410d1ea24622024246dd42", null ], + [ "isPrint", "class_p_i_char.html#a55255ed564ce213a1abaf519bd28c1c6", null ], + [ "isSpace", "class_p_i_char.html#a08354995df8b6b1897c3c56fb61614f9", null ], + [ "isAlpha", "class_p_i_char.html#a60b68169d49d4d296b03c99d962f2fe0", null ], + [ "isAscii", "class_p_i_char.html#a201aaf6b6cf4406d84ad97879b0df42b", null ], + [ "toCharPtr", "class_p_i_char.html#a9baee39596206d0977ebfb5e3d12f810", null ], + [ "toUpper", "class_p_i_char.html#a48a9400b58447e7a492d346dd75ef09c", null ], + [ "toLower", "class_p_i_char.html#a0d4ae4c2e8e77e21762121f82be79a2e", null ], + [ "operator<<", "class_p_i_char.html#a43cad479313327c089e30ae490e01c24", null ], + [ "operator>>", "class_p_i_char.html#a697daa3db190238c3cad29b288821ae0", null ] +]; \ No newline at end of file diff --git a/pip/doc/html/class_p_i_collection-members.html b/pip/doc/html/class_p_i_collection-members.html new file mode 100644 index 0000000..ed78081 --- /dev/null +++ b/pip/doc/html/class_p_i_collection-members.html @@ -0,0 +1,131 @@ + + + + + + +PIP: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    PICollection Member List
    +
    +
    + +

    This is the complete list of members for PICollection, including all inherited members.

    + + + + + +
    ADD_NEW_TO_COLLECTIONPICollectionrelated
    ADD_TO_COLLECTIONPICollectionrelated
    groupElements(const PIString &group)PICollectionstatic
    groups()PICollectionstatic
    +
    + + + + diff --git a/pip/doc/html/class_p_i_collection.html b/pip/doc/html/class_p_i_collection.html new file mode 100644 index 0000000..bcb0ef8 --- /dev/null +++ b/pip/doc/html/class_p_i_collection.html @@ -0,0 +1,281 @@ + + + + + + +PIP: PICollection Class Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    + +
    +
    PICollection Class Reference
    +
    +
    + +

    Interface to discover element groups. + More...

    + + + + + + + + +

    +Static Public Member Functions

    +static PIStringList groups ()
     Returns all existing groups by their names.
     
    +static PIVector< const PIObject * > groupElements (const PIString &group)
     Returns all elements of group "group".
     
    + + + + + + + + +

    +Related Functions

    (Note that these are not member functions.)

    +
    #define ADD_TO_COLLECTION(group, object)
     Add existing element "object" in group with name "group". More...
     
    #define ADD_NEW_TO_COLLECTION(group, class)
     Add new element of class "class" in group with name "group". More...
     
    +

    Detailed Description

    +

    Interface to discover element groups.

    +

    +Synopsis

    +

    This class has only static functions so no need to create instance of the PICollection. This class provide macros to add some classes or existing objects to global collection and access to them from any place of the code.

    class ElementA: public PIObject {
    +
    PIOBJECT(ElementA)
    +
    // ...
    +
    };
    +
    ADD_NEW_TO_COLLECTION(ab_group, ElementA)
    +
    +
    class ElementB: public PIObject {
    +
    PIOBJECT(ElementB)
    +
    // ...
    +
    };
    +
    ADD_NEW_TO_COLLECTION(ab_group, ElementB)
    +
    +
    class ElementC: public PIObject {
    +
    PIOBJECT(ElementC)
    +
    // ...
    +
    };
    +
    ADD_NEW_TO_COLLECTION(c_group, ElementC)
    +
    +
    class ElementD: public PIObject {
    +
    PIOBJECT(ElementD)
    +
    // ...
    +
    };
    +
    +
    int main() {
    +
    ElementD * el_d = new ElementD();
    +
    ADD_TO_COLLECTION(ab_group, el_d)
    +
    + +
    piCout << gl; // {"ab_group", "c_group"}
    +
    piForeachC (PIString g, gl) {
    + +
    piCout << "group" << g << ":";
    +
    piForeachC (PIObject * o, go)
    +
    piCout << Tab << o->className();
    +
    }
    +
    +
    /*
    +
    group ab_group :
    +
    ElementA
    +
    ElementB
    +
    ElementD
    +
    group c_group :
    +
    ElementC
    +
    */
    +
    };
    +

    Friends And Related Function Documentation

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    #define ADD_TO_COLLECTION( group,
     object 
    )
    +
    +related
    +
    + +

    Add existing element "object" in group with name "group".

    +

    If there is no group with name "group" it will be created. Only one element of the class "object" can be in group "group". If this is already exists nothing be happens.
    + "object" should to be pointer to object based on PIObject.

    + +
    +
    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    #define ADD_NEW_TO_COLLECTION( group,
     class 
    )
    +
    +related
    +
    + +

    Add new element of class "class" in group with name "group".

    +

    If there is no group with name "group" it will be created. Only one element of the class "class" can be in group "group". If this is already exists nothing be happens.
    + "class" should to be name of the any class based on PIObject.

    + +
    +
    +
    +
    + + + + diff --git a/pip/doc/html/class_p_i_collection.js b/pip/doc/html/class_p_i_collection.js new file mode 100644 index 0000000..32e6491 --- /dev/null +++ b/pip/doc/html/class_p_i_collection.js @@ -0,0 +1,5 @@ +var class_p_i_collection = +[ + [ "ADD_TO_COLLECTION", "class_p_i_collection.html#a450e8ac720c8b0f6223ad2bf42f83ae2", null ], + [ "ADD_NEW_TO_COLLECTION", "class_p_i_collection.html#a78cc4937360f5e286cdd8baf403edfec", null ] +]; \ No newline at end of file diff --git a/pip/doc/html/class_p_i_config-members.html b/pip/doc/html/class_p_i_config-members.html new file mode 100644 index 0000000..5cc5e11 --- /dev/null +++ b/pip/doc/html/class_p_i_config-members.html @@ -0,0 +1,259 @@ + + + + + + +PIP: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    PIConfig Member List
    +
    +
    + +

    This is the complete list of members for PIConfig, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    allLeaves()PIConfiginline
    allTree()PIConfiginline
    className() const PIObjectinlinevirtual
    clear()PIConfiginline
    closeDevice()PIFileprotectedvirtual
    configureDevice(const void *e_main, const void *e_parent=0)PIIODeviceinlineprotectedvirtual
    configureFromFullPath(const PIString &full_path)PIFileprotectedvirtual
    CONNECTPIObjectrelated
    CONNECT0PIObjectrelated
    CONNECT1PIObjectrelated
    CONNECT2PIObjectrelated
    CONNECT3PIObjectrelated
    CONNECT4PIObjectrelated
    CONNECTUPIObjectrelated
    data() const PIThreadinline
    debug() const PIObjectinline
    delimiter() const PIConfiginline
    DISCONNECTPIObjectrelated
    DISCONNECT0PIObjectrelated
    DISCONNECT1PIObjectrelated
    DISCONNECT2PIObjectrelated
    DISCONNECT3PIObjectrelated
    DISCONNECT4PIObjectrelated
    emitter() const PIObjectinlineprotected
    entriesCount() const PIConfiginline
    EVENTPIObjectrelated
    EVENT0PIObjectrelated
    EVENT1PIObjectrelated
    EVENT2PIObjectrelated
    EVENT3PIObjectrelated
    EVENT4PIObjectrelated
    EVENT_HANDLERPIObjectrelated
    EVENT_HANDLER0PIObjectrelated
    EVENT_HANDLER1PIObjectrelated
    EVENT_HANDLER2PIObjectrelated
    EVENT_HANDLER3PIObjectrelated
    EVENT_HANDLER4PIObjectrelated
    EVENT_VHANDLERPIObjectrelated
    EVENT_VHANDLER0PIObjectrelated
    EVENT_VHANDLER1PIObjectrelated
    EVENT_VHANDLER2PIObjectrelated
    EVENT_VHANDLER3PIObjectrelated
    EVENT_VHANDLER4PIObjectrelated
    findByName(const PIString &name)PIObjectinlinestatic
    fullPathPrefix() const PIFileinlineprotectedvirtual
    getValue(const PIString &vname, const PIString &def=PIString(), bool *exists=0)PIConfig
    getValue(const PIString &vname, const char *def, bool *exists=0)PIConfiginline
    getValue(const PIString &vname, const PIStringList &def, bool *exists=0)PIConfiginline
    getValue(const PIString &vname, const bool def, bool *exists=0)PIConfiginline
    getValue(const PIString &vname, const short def, bool *exists=0)PIConfiginline
    getValue(const PIString &vname, const int def, bool *exists=0)PIConfiginline
    getValue(const PIString &vname, const long def, bool *exists=0)PIConfiginline
    getValue(const PIString &vname, const uchar def, bool *exists=0)PIConfiginline
    getValue(const PIString &vname, const ushort def, bool *exists=0)PIConfiginline
    getValue(const PIString &vname, const uint def, bool *exists=0)PIConfiginline
    getValue(const PIString &vname, const ulong def, bool *exists=0)PIConfiginline
    getValue(const PIString &vname, const float def, bool *exists=0)PIConfiginline
    getValue(const PIString &vname, const double def, bool *exists=0)PIConfiginline
    getValues(const PIString &vname)PIConfig
    HANDLERPIObjectrelated
    init()PIIODeviceinlineprotectedvirtual
    isEntryExists(const PIString &name) const PIConfiginline
    isPropertyExists(const PIString &name) const PIObjectinline
    isRunning() const PIThreadinline
    lock()PIThreadinline
    mutex()PIThreadinline
    name() const PIObjectinline
    needLockRun(bool need)PIThreadinline
    openDevice()PIFileprotectedvirtual
    PIConfig(const PIString &path, PIIODevice::DeviceMode mode=PIIODevice::ReadWrite)PIConfig
    piCoutObjPIObjectrelated
    piDisconnect(PIObject *src, const PIString &sig)PIObjectstatic
    piDisconnect(PIObject *src)PIObjectstatic
    piHigh enum valuePIThread
    piHighest enum valuePIThread
    PIIODEVICEPIIODevicerelated
    piLow enum valuePIThread
    piLowerst enum valuePIThread
    piNormal enum valuePIThread
    PIOBJECTPIObjectrelated
    PIObject(const PIString &name=PIString())PIObject
    PIOBJECT_PARENTPIObjectrelated
    PIThread(void *data, ThreadFunc func, bool startNow=false, int loop_delay=-1)PIThread
    PIThread(bool startNow=false, int loop_delay=-1)PIThread
    Priority enum namePIThread
    priority() const PIThreadinline
    properties() const PIObjectinline
    propertiesCount() const PIObjectinline
    property(const PIString &name) const PIObjectinline
    propertyChanged(const PIString &name)PIObjectinlineprotectedvirtual
    readAll()PIConfig
    readDeviceSetting(const PIString &name, const T &def, const PIConfig::Entry *em, const PIConfig::Entry *ep)PIIODevicerelated
    REGISTER_DEVICEPIIODevicerelated
    rootEntry()PIConfiginline
    setData(void *d)PIThreadinline
    setDebug(bool debug)PIObjectinline
    setDelimiter(const PIString &d)PIConfiginline
    PIFile::setName(const PIString &name)PIObjectinline
    setPriority(PIThread::Priority prior)PIThread
    setProperty(const PIString &name, const PIVariant &value)PIObjectinline
    setSlot(ThreadFunc func)PIThreadinline
    setValue(const PIString &name, const PIString &value, const PIString &type="s", bool write=true)PIConfig
    setValue(const PIString &name, const PIStringList &value, bool write=true)PIConfiginline
    setValue(const PIString &name, const char *value, bool write=true)PIConfiginline
    setValue(const PIString &name, const bool value, bool write=true)PIConfiginline
    setValue(const PIString &name, const short value, bool write=true)PIConfiginline
    setValue(const PIString &name, const int value, bool write=true)PIConfiginline
    setValue(const PIString &name, const long value, bool write=true)PIConfiginline
    setValue(const PIString &name, const uchar value, bool write=true)PIConfiginline
    setValue(const PIString &name, const ushort value, bool write=true)PIConfiginline
    setValue(const PIString &name, const uint value, bool write=true)PIConfiginline
    setValue(const PIString &name, const ulong value, bool write=true)PIConfiginline
    setValue(const PIString &name, const float value, bool write=true)PIConfiginline
    setValue(const PIString &name, const double value, bool write=true)PIConfiginline
    PIThread::start(int timer_delay)PIThread
    PIThread::start(ThreadFunc func, int timer_delay)PIThreadinline
    started()PIThread
    startOnce()PIThread
    startOnce(ThreadFunc func)PIThreadinline
    stopped()PIThread
    superClassName() const PIObjectinlinevirtual
    threadedRead(uchar *readed, int size)PIIODeviceinlineprotectedvirtual
    unlock()PIThreadinline
    waitForFinish(int timeout_msecs)PIThread
    waitForStart(int timeout_msecs)PIThread
    WEAK_CONNECTPIObjectrelated
    WEAK_CONNECT0PIObjectrelated
    WEAK_CONNECT1PIObjectrelated
    WEAK_CONNECT2PIObjectrelated
    WEAK_CONNECT3PIObjectrelated
    WEAK_CONNECT4PIObjectrelated
    writeAll()PIConfig
    +
    + + + + diff --git a/pip/doc/html/class_p_i_config.html b/pip/doc/html/class_p_i_config.html new file mode 100644 index 0000000..53d5540 --- /dev/null +++ b/pip/doc/html/class_p_i_config.html @@ -0,0 +1,700 @@ + + + + + + +PIP: PIConfig Class Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    + +
    +
    PIConfig Class Reference
    +
    +
    + +

    Configuration file. + More...

    +
    + + Inheritance diagram for PIConfig:
    +
    +
    + + + + + + + + + +

    +Classes

    class  Branch
     Branch is a list of entries of configuration file More...
     
    class  Entry
     Entry of configuration file More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    PIConfig (const PIString &path, PIIODevice::DeviceMode mode=PIIODevice::ReadWrite)
     Contructs and read configuration file at path "path" in mode "mode".
     
    +EntrygetValue (const PIString &vname, const PIString &def=PIString(), bool *exists=0)
     Returns top-level entry with name "vname", if doesn`t exists return entry with value "def" and set *exist to false.
     
    +EntrygetValue (const PIString &vname, const char *def, bool *exists=0)
     Returns top-level entry with name "vname" and default value "def".
     
    +EntrygetValue (const PIString &vname, const PIStringList &def, bool *exists=0)
     Returns top-level entry with name "vname" and default value "def".
     
    +EntrygetValue (const PIString &vname, const bool def, bool *exists=0)
     Returns top-level entry with name "vname" and default value "def".
     
    +EntrygetValue (const PIString &vname, const short def, bool *exists=0)
     Returns top-level entry with name "vname" and default value "def".
     
    +EntrygetValue (const PIString &vname, const int def, bool *exists=0)
     Returns top-level entry with name "vname" and default value "def".
     
    +EntrygetValue (const PIString &vname, const long def, bool *exists=0)
     Returns top-level entry with name "vname" and default value "def".
     
    +EntrygetValue (const PIString &vname, const uchar def, bool *exists=0)
     Returns top-level entry with name "vname" and default value "def".
     
    +EntrygetValue (const PIString &vname, const ushort def, bool *exists=0)
     Returns top-level entry with name "vname" and default value "def".
     
    +EntrygetValue (const PIString &vname, const uint def, bool *exists=0)
     Returns top-level entry with name "vname" and default value "def".
     
    +EntrygetValue (const PIString &vname, const ulong def, bool *exists=0)
     Returns top-level entry with name "vname" and default value "def".
     
    +EntrygetValue (const PIString &vname, const float def, bool *exists=0)
     Returns top-level entry with name "vname" and default value "def".
     
    +EntrygetValue (const PIString &vname, const double def, bool *exists=0)
     Returns top-level entry with name "vname" and default value "def".
     
    +Branch getValues (const PIString &vname)
     Returns top-level entries with names with substrings "vname".
     
    +void setValue (const PIString &name, const PIString &value, const PIString &type="s", bool write=true)
     Set top-level entry with name "name" value to "value", type to "type" and if "write" immediate write to file. Add new entry if there is no suitable exists.
     
    +void setValue (const PIString &name, const PIStringList &value, bool write=true)
     Set top-level entry with name "name" value to "value", type to "l" and if "write" immediate write to file. Add new entry if there is no suitable exists.
     
    +void setValue (const PIString &name, const char *value, bool write=true)
     Set top-level entry with name "name" value to "value", type to "s" and if "write" immediate write to file. Add new entry if there is no suitable exists.
     
    +void setValue (const PIString &name, const bool value, bool write=true)
     Set top-level entry with name "name" value to "value", type to "b" and if "write" immediate write to file. Add new entry if there is no suitable exists.
     
    +void setValue (const PIString &name, const short value, bool write=true)
     Set top-level entry with name "name" value to "value", type to "n" and if "write" immediate write to file. Add new entry if there is no suitable exists.
     
    +void setValue (const PIString &name, const int value, bool write=true)
     Set top-level entry with name "name" value to "value", type to "n" and if "write" immediate write to file. Add new entry if there is no suitable exists.
     
    +void setValue (const PIString &name, const long value, bool write=true)
     Set top-level entry with name "name" value to "value", type to "n" and if "write" immediate write to file. Add new entry if there is no suitable exists.
     
    +void setValue (const PIString &name, const uchar value, bool write=true)
     Set top-level entry with name "name" value to "value", type to "n" and if "write" immediate write to file. Add new entry if there is no suitable exists.
     
    +void setValue (const PIString &name, const ushort value, bool write=true)
     Set top-level entry with name "name" value to "value", type to "n" and if "write" immediate write to file. Add new entry if there is no suitable exists.
     
    +void setValue (const PIString &name, const uint value, bool write=true)
     Set top-level entry with name "name" value to "value", type to "n" and if "write" immediate write to file. Add new entry if there is no suitable exists.
     
    +void setValue (const PIString &name, const ulong value, bool write=true)
     Set top-level entry with name "name" value to "value", type to "n" and if "write" immediate write to file. Add new entry if there is no suitable exists.
     
    +void setValue (const PIString &name, const float value, bool write=true)
     Set top-level entry with name "name" value to "value", type to "f" and if "write" immediate write to file. Add new entry if there is no suitable exists.
     
    +void setValue (const PIString &name, const double value, bool write=true)
     Set top-level entry with name "name" value to "value", type to "f" and if "write" immediate write to file. Add new entry if there is no suitable exists.
     
    +EntryrootEntry ()
     Returns root entry.
     
    +int entriesCount () const
     Returns top-level entries count.
     
    +bool isEntryExists (const PIString &name) const
     Returns if top-level entry with name "name" exists.
     
    +Branch allTree ()
     Returns all top-level entries.
     
    +Branch allLeaves ()
     Returns all entries without children.
     
    +void clear ()
     Remove all tree and file content.
     
    +void readAll ()
     Parse file and build internal tree.
     
    +void writeAll ()
     Write all internal tree to file.
     
    +const PIStringdelimiter () const
     Returns current tree delimiter, default ".".
     
    +void setDelimiter (const PIString &d)
     Set current tree delimiter.
     
    - Public Member Functions inherited from PIThread
    PIThread (void *data, ThreadFunc func, bool startNow=false, int loop_delay=-1)
     Contructs thread with custom data "data", external function "func" and main loop delay "loop_delay".
     
    PIThread (bool startNow=false, int loop_delay=-1)
     Contructs thread with main loop delay "loop_delay".
     
    +void setData (void *d)
     Set common data passed to external function.
     
    +void setSlot (ThreadFunc func)
     Set external function that will be executed after every run()
     
    +void setPriority (PIThread::Priority prior)
     Set priority of thread.
     
    +void * data () const
     Returns common data passed to external function.
     
    +PIThread::Priority priority () const
     Return priority of thread.
     
    +bool isRunning () const
     Return true if thread is running.
     
    +void needLockRun (bool need)
     Set necessity of lock every run with internal mutex.
     
    +PIMutexmutex ()
     Return internal mutex.
     
    bool start (int timer_delay)
     Start thread. More...
     
    bool start (ThreadFunc func, int timer_delay)
     Start thread. More...
     
    bool startOnce ()
     Start thread without internal loop. More...
     
    bool startOnce (ThreadFunc func)
     Start thread without internal loop. More...
     
    void stop (bool wait)
     Stop thread. More...
     
    void terminate ()
     Strongly stop thread. More...
     
    bool waitForStart (int timeout_msecs)
     Wait for thread start. More...
     
    bool waitForFinish (int timeout_msecs)
     Wait for thread finish. More...
     
    +void lock ()
     Lock internal mutex.
     
    +void unlock ()
     Unlock internal mutex.
     
    +void started ()
     Raise on thread start.
     
    +void stopped ()
     Raise on thread stop.
     
    - Public Member Functions inherited from PIObject
    PIObject (const PIString &name=PIString())
     Contructs PIObject with name "name".
     
    +PIString name () const
     Returns object name.
     
    +virtual const char * className () const
     Returns object class name.
     
    +virtual const char * superClassName () const
     Returns object superclass name.
     
    +bool debug () const
     Return if debug of this object is active.
     
    +void setName (const PIString &name)
     Set object name.
     
    +void setDebug (bool debug)
     Set object debug active.
     
    +const PIMap< PIString,
    +PIVariant > & 
    properties () const
     Returns properties of the object.
     
    +int propertiesCount () const
     Returns properties count of the object.
     
    +PIVariant property (const PIString &name) const
     Returns property with name "name".
     
    +void setProperty (const PIString &name, const PIVariant &value)
     Set property with name "name" to "value". If there is no such property in object it will be added.
     
    +bool isPropertyExists (const PIString &name) const
     Returns if property with name "name" exists.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Additional Inherited Members

    - Public Types inherited from PIThread
    enum  Priority {
    +  piLowerst, +piLow, +piNormal, +piHigh, +
    +  piHighest +
    + }
     Priority of thread. More...
     
    - Static Public Member Functions inherited from PIObject
    +static void piDisconnect (PIObject *src, const PIString &sig)
     Disconnect object "src" from all connections with event name "sig".
     
    +static void piDisconnect (PIObject *src)
     Disconnect object "src" from all connections, i.e. all connections where object "src" is emitter.
     
    +static PIObjectfindByName (const PIString &name)
     Returns PIObject* with name "name" or 0, if there is no object found.
     
    - Protected Member Functions inherited from PIFile
    +PIString fullPathPrefix () const
     Reimplement to construct full unambiguous string prefix. Creating devices by unambiguous string.
     
    +void configureFromFullPath (const PIString &full_path)
     Reimplement to configure your device with parameters of full unambiguous string. Default implementation does nothing.
     
    +bool openDevice ()
     Reimplement to open device, return value will be set to "opened_" variable.
     
    +bool closeDevice ()
     Reimplement to close device, inverse return value will be set to "opened_" variable.
     
    - Protected Member Functions inherited from PIIODevice
    +virtual bool init ()
     Function executed before first openDevice() or from constructor.
     
    +virtual bool configureDevice (const void *e_main, const void *e_parent=0)
     Reimplement to configure device from entries "e_main" and "e_parent", cast arguments to PIConfig::Entry*.
     
    +virtual bool threadedRead (uchar *readed, int size)
     Function executed when thread read some data, default implementation execute external slot "ret_func_".
     
    - Protected Member Functions inherited from PIObject
    +PIObjectemitter () const
     Returns PIObject* which has raised an event. This value is correct only in definition of some event handler.
     
    +virtual void propertyChanged (const PIString &name)
     Virtual function executes after property with name "name" has been changed.
     
    +

    Detailed Description

    +

    Configuration file.

    +

    This class provide handle access to configuration file.

    +

    +Synopsis

    +

    PIConfig reads configuration file and create internal dendritic representation of all entries of this file. You can easily read some values and write new.

    +piconfig.png +
    +

    PIConfig supports also INI-style files with sections "[section]". In this case line with section name interpret as prefix to the next lines. For example, these configs are equal:

    ser.device = /dev/ttyS0
    +
    ser.speed = 115200
    +
    debug = true
    +
    [ser]
    +
    device = /dev/ttyS0
    +
    speed = 115200
    +
    []
    +
    debug = true
    +

    +Concepts

    +

    Each node of internal tree has type PIConfig::Entry. PIConfig has one root element rootEntry(). Any entry of configuration file is a child of this element.

    +
    +
    + + + + diff --git a/pip/doc/html/class_p_i_config.js b/pip/doc/html/class_p_i_config.js new file mode 100644 index 0000000..4391a4f --- /dev/null +++ b/pip/doc/html/class_p_i_config.js @@ -0,0 +1,43 @@ +var class_p_i_config = +[ + [ "Branch", "class_p_i_config_1_1_branch.html", null ], + [ "Entry", "class_p_i_config_1_1_entry.html", "class_p_i_config_1_1_entry" ], + [ "PIConfig", "class_p_i_config.html#a283394a8822215eaf98a828df32ae72d", null ], + [ "getValue", "class_p_i_config.html#afa9ff95ee07a0426a06196cdb0674bb1", null ], + [ "getValue", "class_p_i_config.html#aa58ad8481d1f0280a3bd4c92f47f516f", null ], + [ "getValue", "class_p_i_config.html#a59ee8d190f4a82e2fbe4e0320877e0a7", null ], + [ "getValue", "class_p_i_config.html#a5f44b199f4679ee58df0b7e1db44b4f1", null ], + [ "getValue", "class_p_i_config.html#ac2fa98010be70e9d7fda3baa56804ad0", null ], + [ "getValue", "class_p_i_config.html#aa7750ea22e6d133d80070f9ff9328bd7", null ], + [ "getValue", "class_p_i_config.html#a073bd20b948c3f68b7eb846f4d080006", null ], + [ "getValue", "class_p_i_config.html#a04ff1fa7aea07e52f1f9b743a7236e0c", null ], + [ "getValue", "class_p_i_config.html#ae359d44525852377fe944f34f3a3aadf", null ], + [ "getValue", "class_p_i_config.html#ab37b341b3468d25beae61112ec0da134", null ], + [ "getValue", "class_p_i_config.html#a081565174316b60dc5a6f27ffb0c3118", null ], + [ "getValue", "class_p_i_config.html#a9fc2514ae2881bd0cace552b179e58f7", null ], + [ "getValue", "class_p_i_config.html#a81a5f8e644ef77db5b85b3d0a1169940", null ], + [ "getValues", "class_p_i_config.html#a56e9e758d994f2bd5bb0ddbf93b187e0", null ], + [ "setValue", "class_p_i_config.html#a21a16d4652c57e310f9e4eb4e40dea39", null ], + [ "setValue", "class_p_i_config.html#ab0fd0d0f7932d805655908447dddf4ea", null ], + [ "setValue", "class_p_i_config.html#ab321f10c0a70bb1e357a09879431b08c", null ], + [ "setValue", "class_p_i_config.html#a47fd7b93880a60ceabaa95401fc006c9", null ], + [ "setValue", "class_p_i_config.html#a05152c400b1bcc94154ce54050dfbdd8", null ], + [ "setValue", "class_p_i_config.html#a11affac002d95972f7023bb02a580d2c", null ], + [ "setValue", "class_p_i_config.html#acdac45e85e5a9e48301bb66f5e596237", null ], + [ "setValue", "class_p_i_config.html#aa92620b2af384471e86ed5095643d10a", null ], + [ "setValue", "class_p_i_config.html#a2252cdecef6f23dd22f68482ad2f3aa8", null ], + [ "setValue", "class_p_i_config.html#a727a3a4efbd6d4bd10592acb2e94b35c", null ], + [ "setValue", "class_p_i_config.html#ad94dcedcb0e7e08e68729cba293342ff", null ], + [ "setValue", "class_p_i_config.html#ac99bcbe1e6656c15481d2b4e7a6aacae", null ], + [ "setValue", "class_p_i_config.html#aa45477274950fc3b50f5e6ece6299c7a", null ], + [ "rootEntry", "class_p_i_config.html#ab3b501c744eec9526b06509e14e868ec", null ], + [ "entriesCount", "class_p_i_config.html#a8ec38c6e59b7d57677ae410ea74d6121", null ], + [ "isEntryExists", "class_p_i_config.html#acf088b2430b92387205df5d67b6ca83d", null ], + [ "allTree", "class_p_i_config.html#a16f81586debe78f0ad886aac2c5d20f0", null ], + [ "allLeaves", "class_p_i_config.html#a52ba17ebcb28248b1ec4fcedd9deba4b", null ], + [ "clear", "class_p_i_config.html#a5183a5859cd1006d4e93bf007b28fd2b", null ], + [ "readAll", "class_p_i_config.html#ab2bb45897ec17ef66c729dfe7d43a135", null ], + [ "writeAll", "class_p_i_config.html#a7d228b9feed1e5a301da526ea4cd4d01", null ], + [ "delimiter", "class_p_i_config.html#a3a2943350a0b2304ab8fee406ade16b9", null ], + [ "setDelimiter", "class_p_i_config.html#ae196cc6e271aa930c7c0849150df868c", null ] +]; \ No newline at end of file diff --git a/pip/doc/html/class_p_i_config_1_1_branch-members.html b/pip/doc/html/class_p_i_config_1_1_branch-members.html new file mode 100644 index 0000000..b33130c --- /dev/null +++ b/pip/doc/html/class_p_i_config_1_1_branch-members.html @@ -0,0 +1,155 @@ + + + + + + +PIP: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    PIConfig::Branch Member List
    +
    +
    + +

    This is the complete list of members for PIConfig::Branch, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    back()PIVector< Entry * >inline
    back() constPIVector< Entry * >inline
    clear()PIVector< Entry * >inline
    compare_func(const Entry **t0, const Entry **t1)PIVector< Entry * >inlinestatic
    contains(const Entry *&v) constPIVector< Entry * >inline
    enlarge(llong piv_size)PIVector< Entry * >inline
    etries(const Entry *&v) constPIVector< Entry * >inline
    fill(const Entry *&f=Entry *())PIVector< Entry * >inline
    front()PIVector< Entry * >inline
    front() constPIVector< Entry * >inline
    isEmpty() constPIVector< Entry * >inline
    operator!=(const PIVector< Entry * > &t) constPIVector< Entry * >inline
    PIVector< Entry * >::operator<<(const PIVector< Entry * > &other)PIVector< Entry * >inline
    operator==(const PIVector< Entry * > &t) constPIVector< Entry * >inline
    PIVector()PIVector< Entry * >inline
    pop_back()PIVector< Entry * >inline
    pop_front()PIVector< Entry * >inline
    push_back(const Entry *&v)PIVector< Entry * >inline
    push_front(const Entry *&v)PIVector< Entry * >inline
    remove(size_t index, size_t count=1)PIVector< Entry * >inline
    removeAll(const Entry *&v)PIVector< Entry * >inline
    removeOne(const Entry *&v)PIVector< Entry * >inline
    resize(size_t new_size, const Entry *&f=Entry *())PIVector< Entry * >inline
    size() constPIVector< Entry * >inline
    size_s() constPIVector< Entry * >inline
    sort(CompareFunc compare=compare_func)PIVector< Entry * >inline
    take_back()PIVector< Entry * >inline
    take_front()PIVector< Entry * >inline
    +
    + + + + diff --git a/pip/doc/html/class_p_i_config_1_1_branch.html b/pip/doc/html/class_p_i_config_1_1_branch.html new file mode 100644 index 0000000..51f32d4 --- /dev/null +++ b/pip/doc/html/class_p_i_config_1_1_branch.html @@ -0,0 +1,140 @@ + + + + + + +PIP: PIConfig::Branch Class Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    + +
    +
    PIConfig::Branch Class Reference
    +
    +
    + +

    Branch is a list of entries of configuration file + More...

    +
    + + Inheritance diagram for PIConfig::Branch:
    +
    +
    + +

    Detailed Description

    +

    Branch is a list of entries of configuration file

    +

    Branch provides some features to get entries lists.

    +
    + + + + diff --git a/pip/doc/html/class_p_i_config_1_1_branch__inherit__graph.map b/pip/doc/html/class_p_i_config_1_1_branch__inherit__graph.map new file mode 100644 index 0000000..a56c7cd --- /dev/null +++ b/pip/doc/html/class_p_i_config_1_1_branch__inherit__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/class_p_i_config_1_1_branch__inherit__graph.md5 b/pip/doc/html/class_p_i_config_1_1_branch__inherit__graph.md5 new file mode 100644 index 0000000..67d484e --- /dev/null +++ b/pip/doc/html/class_p_i_config_1_1_branch__inherit__graph.md5 @@ -0,0 +1 @@ +f08133386b6806cfb7f82c456c9ab7f2 \ No newline at end of file diff --git a/pip/doc/html/class_p_i_config_1_1_branch__inherit__graph.svg b/pip/doc/html/class_p_i_config_1_1_branch__inherit__graph.svg new file mode 100644 index 0000000..0699925 --- /dev/null +++ b/pip/doc/html/class_p_i_config_1_1_branch__inherit__graph.svg @@ -0,0 +1,31 @@ + + + + + + +PIConfig::Branch + + +Node1 + +PIConfig::Branch + + +Node2 + + +PIVector< Entry * > + + + + +Node2->Node1 + + + + + diff --git a/pip/doc/html/class_p_i_config_1_1_entry-members.html b/pip/doc/html/class_p_i_config_1_1_entry-members.html new file mode 100644 index 0000000..28d7be5 --- /dev/null +++ b/pip/doc/html/class_p_i_config_1_1_entry-members.html @@ -0,0 +1,184 @@ + + + + + + +PIP: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    PIConfig::Entry Member List
    +
    +
    + +

    This is the complete list of members for PIConfig::Entry, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    child(const int index) const PIConfig::Entryinline
    childCount() const PIConfig::Entryinline
    children() const PIConfig::Entryinline
    comment() const PIConfig::Entryinline
    findChild(const PIString &name)PIConfig::Entryinline
    findChild(const PIString &name) const PIConfig::Entryinline
    fullName() const PIConfig::Entryinline
    getValue(const PIString &vname, const PIString &def=PIString(), bool *exists=0)PIConfig::Entry
    getValue(const PIString &vname, const char *def, bool *exists=0)PIConfig::Entryinline
    getValue(const PIString &vname, const PIStringList &def, bool *exists=0)PIConfig::Entryinline
    getValue(const PIString &vname, const bool def, bool *exists=0)PIConfig::Entryinline
    getValue(const PIString &vname, const short def, bool *exists=0)PIConfig::Entryinline
    getValue(const PIString &vname, const int def, bool *exists=0)PIConfig::Entryinline
    getValue(const PIString &vname, const long def, bool *exists=0)PIConfig::Entryinline
    getValue(const PIString &vname, const uchar def, bool *exists=0)PIConfig::Entryinline
    getValue(const PIString &vname, const ushort def, bool *exists=0)PIConfig::Entryinline
    getValue(const PIString &vname, const uint def, bool *exists=0)PIConfig::Entryinline
    getValue(const PIString &vname, const ulong def, bool *exists=0)PIConfig::Entryinline
    getValue(const PIString &vname, const float def, bool *exists=0)PIConfig::Entryinline
    getValue(const PIString &vname, const double def, bool *exists=0)PIConfig::Entryinline
    getValues(const PIString &vname)PIConfig::Entry
    isEntryExists(const PIString &name) const PIConfig::Entryinline
    isLeaf() const PIConfig::Entryinline
    name() const PIConfig::Entryinline
    operator bool()PIConfig::Entryinline
    operator char()PIConfig::Entryinline
    operator double()PIConfig::Entryinline
    operator float()PIConfig::Entryinline
    operator int()PIConfig::Entryinline
    operator long()PIConfig::Entryinline
    operator PIString()PIConfig::Entryinline
    operator PIStringList()PIConfig::Entryinline
    operator short()PIConfig::Entryinline
    operator uchar()PIConfig::Entryinline
    operator uint()PIConfig::Entryinline
    operator ulong()PIConfig::Entryinline
    operator ushort()PIConfig::Entryinline
    parent() const PIConfig::Entryinline
    setComment(const PIString &value)PIConfig::Entryinline
    setName(const PIString &value)PIConfig::Entryinline
    setType(const PIString &value)PIConfig::Entryinline
    setValue(const PIString &value)PIConfig::Entryinline
    setValue(const PIStringList &value)PIConfig::Entryinline
    setValue(const char *value)PIConfig::Entryinline
    setValue(const bool value)PIConfig::Entryinline
    setValue(const char value)PIConfig::Entryinline
    setValue(const short value)PIConfig::Entryinline
    setValue(const int value)PIConfig::Entryinline
    setValue(const long value)PIConfig::Entryinline
    setValue(const uchar value)PIConfig::Entryinline
    setValue(const ushort value)PIConfig::Entryinline
    setValue(const uint value)PIConfig::Entryinline
    setValue(const ulong value)PIConfig::Entryinline
    setValue(const float value)PIConfig::Entryinline
    setValue(const double value)PIConfig::Entryinline
    type() const PIConfig::Entryinline
    value() const PIConfig::Entryinline
    +
    + + + + diff --git a/pip/doc/html/class_p_i_config_1_1_entry.html b/pip/doc/html/class_p_i_config_1_1_entry.html new file mode 100644 index 0000000..02e664a --- /dev/null +++ b/pip/doc/html/class_p_i_config_1_1_entry.html @@ -0,0 +1,451 @@ + + + + + + +PIP: PIConfig::Entry Class Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    + +
    +
    PIConfig::Entry Class Reference
    +
    +
    + +

    Entry of configuration file + More...

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    +Entryparent () const
     Returns parent entry, or 0 if there is no parent (root of default value)
     
    +int childCount () const
     Returns children count.
     
    +Branchchildren () const
     Returns children as PIConfig::Branch.
     
    +Entrychild (const int index) const
     Returns child at index "index".
     
    +EntryfindChild (const PIString &name)
     Returns first child with name "name".
     
    +const EntryfindChild (const PIString &name) const
     Returns first child with name "name".
     
    +bool isLeaf () const
     Returns true if there is no children.
     
    +const PIStringname () const
     Returns name.
     
    +const PIStringvalue () const
     Returns value.
     
    +const PIStringtype () const
     Returns type.
     
    +const PIStringcomment () const
     Returns comment.
     
    const PIStringfullName () const
     Returns full name, i.e. name as it looks in file. More...
     
    +EntrysetName (const PIString &value)
     Set name to "value" and returns this.
     
    +EntrysetType (const PIString &value)
     Set type to "value" and returns this.
     
    +EntrysetComment (const PIString &value)
     Set comment to "value" and returns this.
     
    +EntrysetValue (const PIString &value)
     Set value to "value" and returns this.
     
    +EntrysetValue (const PIStringList &value)
     Set value to "value" and returns this. Type is set to "l".
     
    +EntrysetValue (const char *value)
     Set value to "value" and returns this. Type is set to "s".
     
    +EntrysetValue (const bool value)
     Set value to "value" and returns this. Type is set to "b".
     
    +EntrysetValue (const char value)
     Set value to "value" and returns this. Type is set to "s".
     
    +EntrysetValue (const short value)
     Set value to "value" and returns this. Type is set to "n".
     
    +EntrysetValue (const int value)
     Set value to "value" and returns this. Type is set to "n".
     
    +EntrysetValue (const long value)
     Set value to "value" and returns this. Type is set to "n".
     
    +EntrysetValue (const uchar value)
     Set value to "value" and returns this. Type is set to "n".
     
    +EntrysetValue (const ushort value)
     Set value to "value" and returns this. Type is set to "n".
     
    +EntrysetValue (const uint value)
     Set value to "value" and returns this. Type is set to "n".
     
    +EntrysetValue (const ulong value)
     Set value to "value" and returns this. Type is set to "n".
     
    +EntrysetValue (const float value)
     Set value to "value" and returns this. Type is set to "f".
     
    +EntrysetValue (const double value)
     Set value to "value" and returns this. Type is set to "f".
     
    EntrygetValue (const PIString &vname, const PIString &def=PIString(), bool *exists=0)
     Returns entry with name "vname" and default value "def". More...
     
    +EntrygetValue (const PIString &vname, const char *def, bool *exists=0)
     Returns entry with name "vname" and default value "def".
     
    +EntrygetValue (const PIString &vname, const PIStringList &def, bool *exists=0)
     Returns entry with name "vname" and default value "def".
     
    +EntrygetValue (const PIString &vname, const bool def, bool *exists=0)
     Returns entry with name "vname" and default value "def".
     
    +EntrygetValue (const PIString &vname, const short def, bool *exists=0)
     Returns entry with name "vname" and default value "def".
     
    +EntrygetValue (const PIString &vname, const int def, bool *exists=0)
     Returns entry with name "vname" and default value "def".
     
    +EntrygetValue (const PIString &vname, const long def, bool *exists=0)
     Returns entry with name "vname" and default value "def".
     
    +EntrygetValue (const PIString &vname, const uchar def, bool *exists=0)
     Returns entry with name "vname" and default value "def".
     
    +EntrygetValue (const PIString &vname, const ushort def, bool *exists=0)
     Returns entry with name "vname" and default value "def".
     
    +EntrygetValue (const PIString &vname, const uint def, bool *exists=0)
     Returns entry with name "vname" and default value "def".
     
    +EntrygetValue (const PIString &vname, const ulong def, bool *exists=0)
     Returns entry with name "vname" and default value "def".
     
    +EntrygetValue (const PIString &vname, const float def, bool *exists=0)
     Returns entry with name "vname" and default value "def".
     
    +EntrygetValue (const PIString &vname, const double def, bool *exists=0)
     Returns entry with name "vname" and default value "def".
     
    +Branch getValues (const PIString &vname)
     Find all entries with names with substrings "vname" and returns them as PIConfig::Branch.
     
    +bool isEntryExists (const PIString &name) const
     If there is no children returns if name == "name". Else returns if any child has name == "name".
     
    operator bool ()
     Convertion to boolean.
     
    operator char ()
     Convertion to char.
     
    operator short ()
     Convertion to short.
     
    operator int ()
     Convertion to int.
     
    operator long ()
     Convertion to long.
     
    operator uchar ()
     Convertion to uchar.
     
    operator ushort ()
     Convertion to ushort.
     
    operator uint ()
     Convertion to uint.
     
    operator ulong ()
     Convertion to ulong.
     
    operator float ()
     Convertion to float.
     
    operator double ()
     Convertion to double.
     
    operator PIString ()
     Convertion to PIString.
     
    operator PIStringList ()
     Convertion to PIStringList.
     
    +

    Detailed Description

    +

    Entry of configuration file

    +

    This class is node of internal PIConfig tree. Entry provide access to elements of PIConfig. Each entry has children or next properties:

      +
    • name
    • +
    • value
    • +
    • type
    • +
    • comment
    • +
    +

    Each property is a PIString. These properties forms from text line with format:

    <name> = <value> #<type> <comment>
    +

    Type and comment are optional fields. Type is a single letter immediately after comment symbol "#".
    +
    +Entry has many implicit convertions to common types: boolean, integers, float, double, PIString, PIStringList.
    +
    +Generally there is no need to create instance of PIConfig::Entry manually, it returns by functions getValue() of PIConfig, PIConfig::Entry or PIConfig::Branch. If there is no suitable entry to return, reference to internal instance of PIConfig::Entry with "default" value will be returned.

    /* "example.conf"
    +
    a = 1
    +
    s0.a = A
    +
    s0.b = B
    +
    */
    +
    PIConfig conf("example.conf", PIIODevice::ReadOnly);
    +
    PIConfig::Entry ce = conf.getValue("a");
    +
    int a = ce; // a = 1
    +
    PIString A = ce; // A = "1"
    +
    ce = conf.getValue("s0");
    +
    piCout << ce.childCount(); // 2
    +
    A = ce.getValue("b"); // A = "B"
    +
    A = conf.getValue("s0.a"); // A = "A"
    +

    Member Function Documentation

    + +
    +
    + + + + + +
    + + + + + + + +
    const PIString& PIConfig::Entry::fullName () const
    +
    +inline
    +
    + +

    Returns full name, i.e. name as it looks in file.

    +

    In case of default entry full name always is empty

    PIConfig conf("example.conf", PIIODevice::ReadOnly);
    +
    piCout << conf.getValue("a.b.c").name(); // "c"
    +
    piCout << conf.getValue("a.b.c").fullName(); // "a.b.c"
    +
    +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    PIConfig::Entry & PIConfig::Entry::getValue (const PIStringvname,
    const PIStringdef = PIString(),
    bool * exists = 0 
    )
    +
    + +

    Returns entry with name "vname" and default value "def".

    +

    If there is no suitable entry found, reference to default internal entry with value = "def" will be returned, and if "exists" not null it will be set to false

    + +
    +
    +
    +
    + + + + diff --git a/pip/doc/html/class_p_i_config_1_1_entry.js b/pip/doc/html/class_p_i_config_1_1_entry.js new file mode 100644 index 0000000..1105858 --- /dev/null +++ b/pip/doc/html/class_p_i_config_1_1_entry.js @@ -0,0 +1,60 @@ +var class_p_i_config_1_1_entry = +[ + [ "parent", "class_p_i_config_1_1_entry.html#a4127afcde1fe791a46bbd31ec111b86d", null ], + [ "childCount", "class_p_i_config_1_1_entry.html#a153b89897dc1f13847f7c2932a68bf9d", null ], + [ "children", "class_p_i_config_1_1_entry.html#ab3009e4da745a3657a0e21f1b37b617d", null ], + [ "child", "class_p_i_config_1_1_entry.html#a873896bbb710a12d14f0164bb31abc56", null ], + [ "findChild", "class_p_i_config_1_1_entry.html#aa3b36dd3fbf8af0f7bc2cb0e683a0ef1", null ], + [ "findChild", "class_p_i_config_1_1_entry.html#a63c45328044a43fb9ab7269a08eb0df0", null ], + [ "isLeaf", "class_p_i_config_1_1_entry.html#ac5a30b29cfcdde2513719b954a935220", null ], + [ "name", "class_p_i_config_1_1_entry.html#a17018e3886c186689c50b5b1523cfe9e", null ], + [ "value", "class_p_i_config_1_1_entry.html#a247679755f333bfd4398088122940ba3", null ], + [ "type", "class_p_i_config_1_1_entry.html#af1fcf69cc6be42f06468f59aa2614fb8", null ], + [ "comment", "class_p_i_config_1_1_entry.html#ae80c7013f86ad0be64811faa74a88a67", null ], + [ "fullName", "class_p_i_config_1_1_entry.html#a07d301e63f496b64dd18ab697ab1ed8f", null ], + [ "setName", "class_p_i_config_1_1_entry.html#a46ddf99ee1a724a9fb28d0947a4baf84", null ], + [ "setType", "class_p_i_config_1_1_entry.html#a8d18745edbfecaf560ee5d7b65dd8aa8", null ], + [ "setComment", "class_p_i_config_1_1_entry.html#a18f083b2d0fdff86e717938718c8be2b", null ], + [ "setValue", "class_p_i_config_1_1_entry.html#ab853f549061be73216c6cf9a3b35eb2e", null ], + [ "setValue", "class_p_i_config_1_1_entry.html#aaa54ae0f45ed6a9a831859bc2f23d19b", null ], + [ "setValue", "class_p_i_config_1_1_entry.html#a6b61be4474ee644b3481c5990ef6f6a9", null ], + [ "setValue", "class_p_i_config_1_1_entry.html#a25ef9be02eebed805878cfa0e8e8d1f0", null ], + [ "setValue", "class_p_i_config_1_1_entry.html#af7b9092abef7e1817620d87ab77990fc", null ], + [ "setValue", "class_p_i_config_1_1_entry.html#aa40ae09f7d30dcc31233d0a9a8311fe7", null ], + [ "setValue", "class_p_i_config_1_1_entry.html#a163fe43914c955a72141519d4b7a456a", null ], + [ "setValue", "class_p_i_config_1_1_entry.html#a9c4b2139fbf28d9950781a52e1c97bc0", null ], + [ "setValue", "class_p_i_config_1_1_entry.html#a1fa1e3d6caff65808f19b9ee95950154", null ], + [ "setValue", "class_p_i_config_1_1_entry.html#a7258173c103a96454f171177692d8d28", null ], + [ "setValue", "class_p_i_config_1_1_entry.html#a37ae1f65fcf05808e1327b8ccba1ca38", null ], + [ "setValue", "class_p_i_config_1_1_entry.html#a34288a020a8a8eac9ec8d96be22d4456", null ], + [ "setValue", "class_p_i_config_1_1_entry.html#a4c2e5bcbae8fc94d6a02099019dea723", null ], + [ "setValue", "class_p_i_config_1_1_entry.html#a1fb68e7559ea156c0ad3a1477713d901", null ], + [ "getValue", "class_p_i_config_1_1_entry.html#af2e42a391ca7eb215de51af19985de7a", null ], + [ "getValue", "class_p_i_config_1_1_entry.html#a05bbbeed3dadb60e6bea03c749bfd6e4", null ], + [ "getValue", "class_p_i_config_1_1_entry.html#ae50da453abb433db637f727dc18fd2ea", null ], + [ "getValue", "class_p_i_config_1_1_entry.html#aa0e0499b5fc68a1d12259da24c7a3c2a", null ], + [ "getValue", "class_p_i_config_1_1_entry.html#a5a6ac80cb3daf664987b8b07f29a85e3", null ], + [ "getValue", "class_p_i_config_1_1_entry.html#a819012c8ada9a1d829fa076eed212d07", null ], + [ "getValue", "class_p_i_config_1_1_entry.html#a513d067edac5971ac9cb5546cc8ed9b0", null ], + [ "getValue", "class_p_i_config_1_1_entry.html#ad92d8722f1390a0d46b194f6557edf02", null ], + [ "getValue", "class_p_i_config_1_1_entry.html#ae0560a9ee49304088c0192b26e4fbbf5", null ], + [ "getValue", "class_p_i_config_1_1_entry.html#ab75c9b8261196d24f8eee1183251474f", null ], + [ "getValue", "class_p_i_config_1_1_entry.html#aa373eef636c8a372366bab7ca968a6ae", null ], + [ "getValue", "class_p_i_config_1_1_entry.html#a7868346fb50b9dc21d950c69e6a96657", null ], + [ "getValue", "class_p_i_config_1_1_entry.html#a6fd5ddc7b21c3d0cca6a2e885e8c29bd", null ], + [ "getValues", "class_p_i_config_1_1_entry.html#a42a7e4e6ccf80f82b2e35de26fcc6274", null ], + [ "isEntryExists", "class_p_i_config_1_1_entry.html#a2a45332b92375f45af0466487d9f9480", null ], + [ "operator bool", "class_p_i_config_1_1_entry.html#aed73af24f8cde6f1b57234a9ce97a920", null ], + [ "operator char", "class_p_i_config_1_1_entry.html#a4b29ac07d6a8c0e67eb6e4b6c345d157", null ], + [ "operator short", "class_p_i_config_1_1_entry.html#abd30994ea9658c723bfe53ad27cdd612", null ], + [ "operator int", "class_p_i_config_1_1_entry.html#a325a3c6c64f72cc129d95b56f0d0e2b9", null ], + [ "operator long", "class_p_i_config_1_1_entry.html#a60c00d0029ca1ecc9fc8c709db1e7c7b", null ], + [ "operator uchar", "class_p_i_config_1_1_entry.html#aabe52ad80e9051d30b40ab30297165cb", null ], + [ "operator ushort", "class_p_i_config_1_1_entry.html#a80bfe47eb1cf861ea9655d1dc9be7052", null ], + [ "operator uint", "class_p_i_config_1_1_entry.html#aac49561de0e3e8c1a6207b7395aad13b", null ], + [ "operator ulong", "class_p_i_config_1_1_entry.html#aedd0654a624229b0a9eac9fc47ecd162", null ], + [ "operator float", "class_p_i_config_1_1_entry.html#a5b301d721e422fc57ebd73f2ecc17187", null ], + [ "operator double", "class_p_i_config_1_1_entry.html#a2cf9ea4e32c819b2b725560a9ca49171", null ], + [ "operator PIString", "class_p_i_config_1_1_entry.html#ae2e947832d8a7116cf304a2db130da38", null ], + [ "operator PIStringList", "class_p_i_config_1_1_entry.html#a1154d48f87cef1df3bd02cce06006215", null ] +]; \ No newline at end of file diff --git a/pip/doc/html/class_p_i_config__inherit__graph.map b/pip/doc/html/class_p_i_config__inherit__graph.map new file mode 100644 index 0000000..e715116 --- /dev/null +++ b/pip/doc/html/class_p_i_config__inherit__graph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/pip/doc/html/class_p_i_config__inherit__graph.md5 b/pip/doc/html/class_p_i_config__inherit__graph.md5 new file mode 100644 index 0000000..5a60714 --- /dev/null +++ b/pip/doc/html/class_p_i_config__inherit__graph.md5 @@ -0,0 +1 @@ +75ecf2961ec623305d3ee2a6d8abf2ed \ No newline at end of file diff --git a/pip/doc/html/class_p_i_config__inherit__graph.svg b/pip/doc/html/class_p_i_config__inherit__graph.svg new file mode 100644 index 0000000..7eaf125 --- /dev/null +++ b/pip/doc/html/class_p_i_config__inherit__graph.svg @@ -0,0 +1,70 @@ + + + + + + +PIConfig + + +Node1 + +PIConfig + + +Node2 + + +PIFile + + + + +Node2->Node1 + + + + +Node3 + + +PIIODevice + + + + +Node3->Node2 + + + + +Node4 + + +PIThread + + + + +Node4->Node3 + + + + +Node5 + + +PIObject + + + + +Node5->Node4 + + + + + diff --git a/pip/doc/html/class_p_i_connection-members.html b/pip/doc/html/class_p_i_connection-members.html new file mode 100644 index 0000000..3eb6bb1 --- /dev/null +++ b/pip/doc/html/class_p_i_connection-members.html @@ -0,0 +1,254 @@ + + + + + + +PIP: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    PIConnection Member List
    +
    +
    + +

    This is the complete list of members for PIConnection, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    addChannel(const PIString &name_from, const PIString &name_to)PIConnection
    addChannel(const PIString &name_from, const PIIODevice *dev_to)PIConnectioninline
    addChannel(const PIIODevice *dev_from, const PIString &name_to)PIConnectioninline
    addChannel(const PIIODevice *dev_from, const PIIODevice *dev_to)PIConnectioninline
    addDevice(const PIString &full_path, PIIODevice::DeviceMode mode=PIIODevice::ReadWrite, bool start=false)PIConnection
    addFilter(const PIString &name, const PIString &full_path_name, PIPacketExtractor::SplitMode mode=PIPacketExtractor::None)PIConnection
    addFilter(const PIString &name, const PIIODevice *dev, PIPacketExtractor::SplitMode mode=PIPacketExtractor::None)PIConnectioninline
    addSender(const PIString &name, const PIString &full_path, float frequency, bool start=false)PIConnection
    addSender(const PIString &name, const PIIODevice *dev, float frequency, bool start=false)PIConnectioninline
    allConnections()PIConnectionstatic
    allDevices()PIConnectionstatic
    boundedDevices() const PIConnection
    channels() const PIConnection
    className() const PIObjectinlinevirtual
    clearSenderFixedData(const PIString &name)PIConnection
    configureFromConfig(const PIString &config, const PIString &name)PIConnection
    CONNECTPIObjectrelated
    CONNECT0PIObjectrelated
    CONNECT1PIObjectrelated
    CONNECT2PIObjectrelated
    CONNECT3PIObjectrelated
    CONNECT4PIObjectrelated
    CONNECTUPIObjectrelated
    dataReceived(const PIString &from, const PIByteArray &data)PIConnectioninlineprotectedvirtual
    dataReceivedEvent(const PIString &from, const PIByteArray &data)PIConnection
    debug() const PIObjectinline
    device(const PIString &full_path) const PIConnection
    diagnostic(const PIString &full_path_name) const PIConnection
    diagnostic(const PIIODevice *dev) const PIConnectioninline
    DISCONNECTPIObjectrelated
    DISCONNECT0PIObjectrelated
    DISCONNECT1PIObjectrelated
    DISCONNECT2PIObjectrelated
    DISCONNECT3PIObjectrelated
    DISCONNECT4PIObjectrelated
    emitter() const PIObjectinlineprotected
    EVENTPIObjectrelated
    EVENT0PIObjectrelated
    EVENT1PIObjectrelated
    EVENT2PIObjectrelated
    EVENT3PIObjectrelated
    EVENT4PIObjectrelated
    EVENT_HANDLERPIObjectrelated
    EVENT_HANDLER0PIObjectrelated
    EVENT_HANDLER1PIObjectrelated
    EVENT_HANDLER2PIObjectrelated
    EVENT_HANDLER3PIObjectrelated
    EVENT_HANDLER4PIObjectrelated
    EVENT_VHANDLERPIObjectrelated
    EVENT_VHANDLER0PIObjectrelated
    EVENT_VHANDLER1PIObjectrelated
    EVENT_VHANDLER2PIObjectrelated
    EVENT_VHANDLER3PIObjectrelated
    EVENT_VHANDLER4PIObjectrelated
    filter(const PIString &name) const PIConnection
    filterBoundedDevices(const PIString &name) const PIConnection
    filterNames() const PIConnection
    filters() const PIConnection
    filterValidateFooter(const PIString &filter_name, uchar *src, uchar *rec, int size)PIConnectionprotectedvirtual
    filterValidateHeader(const PIString &filter_name, uchar *src, uchar *rec, int size)PIConnectionprotectedvirtual
    filterValidatePayload(const PIString &filter_name, uchar *rec, int size)PIConnectionprotectedvirtual
    findByName(const PIString &name)PIObjectinlinestatic
    HANDLERPIObjectrelated
    isEmpty() const PIConnectioninline
    isPropertyExists(const PIString &name) const PIObjectinline
    makeConfig() const PIConnection
    name() const PIObjectinline
    packetReceived(const PIString &from, const PIByteArray &data)PIConnectioninlineprotectedvirtual
    packetReceivedEvent(const PIString &from, const PIByteArray &data)PIConnection
    PIConnection()PIConnection
    PIConnection(const PIString &name)PIConnection
    PIConnection(const PIString &config, const PIString &name)PIConnection
    piCoutObjPIObjectrelated
    piDisconnect(PIObject *src, const PIString &sig)PIObjectstatic
    piDisconnect(PIObject *src)PIObjectstatic
    PIOBJECTPIObjectrelated
    PIObject(const PIString &name=PIString())PIObject
    PIOBJECT_PARENTPIObjectrelated
    properties() const PIObjectinline
    propertiesCount() const PIObjectinline
    property(const PIString &name) const PIObjectinline
    propertyChanged(const PIString &name)PIObjectinlineprotectedvirtual
    removeAllChannels()PIConnection
    removeAllDevices()PIConnection
    removeAllFilters()PIConnection
    removeAllSenders()PIConnection
    removeChannel(const PIString &name_from, const PIString &name_to)PIConnection
    removeChannel(const PIString &name_from, const PIIODevice *dev_to)PIConnectioninline
    removeChannel(const PIIODevice *dev_from, const PIString &name_to)PIConnectioninline
    removeChannel(const PIIODevice *dev_from, const PIIODevice *dev_to)PIConnectioninline
    removeChannel(const PIString &name_from)PIConnection
    removeChannel(const PIIODevice *dev_from)PIConnectioninline
    removeDevice(const PIString &full_path)PIConnection
    removeFilter(const PIString &name, const PIString &full_path_name)PIConnection
    removeFilter(const PIString &name, const PIIODevice *dev)PIConnection
    removeFilter(const PIString &name)PIConnection
    removeSender(const PIString &name, const PIString &full_path)PIConnection
    removeSender(const PIString &name, const PIIODevice *dev)PIConnectioninline
    removeSender(const PIString &name)PIConnection
    senderData(const PIString &sender_name)PIConnectionprotectedvirtual
    senderFixedData(const PIString &name) const PIConnection
    senderFrequency(const PIString &name) const PIConnection
    setDebug(bool debug)PIObjectinline
    setName(const PIString &name)PIObjectinline
    setProperty(const PIString &name, const PIVariant &value)PIObjectinline
    setSenderFixedData(const PIString &name, const PIByteArray &data)PIConnection
    start()PIConnectioninline
    startAllSenders()PIConnection
    startAllThreadedReads()PIConnection
    startSender(const PIString &name)PIConnection
    startThreadedRead(const PIString &full_path)PIConnection
    startThreadedRead(const PIIODevice *dev)PIConnectioninline
    stop()PIConnectioninline
    stopAllSenders()PIConnection
    stopAllThreadedReads()PIConnection
    stopSender(const PIString &name)PIConnection
    stopThreadedRead(const PIString &full_path)PIConnection
    stopThreadedRead(const PIIODevice *dev)PIConnectioninline
    superClassName() const PIObjectinlinevirtual
    WEAK_CONNECTPIObjectrelated
    WEAK_CONNECT0PIObjectrelated
    WEAK_CONNECT1PIObjectrelated
    WEAK_CONNECT2PIObjectrelated
    WEAK_CONNECT3PIObjectrelated
    WEAK_CONNECT4PIObjectrelated
    write(const PIString &full_path, const PIByteArray &data)PIConnection
    write(const PIIODevice *dev, const PIByteArray &data)PIConnectioninline
    +
    + + + + diff --git a/pip/doc/html/class_p_i_connection.html b/pip/doc/html/class_p_i_connection.html new file mode 100644 index 0000000..60362ab --- /dev/null +++ b/pip/doc/html/class_p_i_connection.html @@ -0,0 +1,1004 @@ + + + + + + +PIP: PIConnection Class Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + + +
    + +

    Complex Input/Output point. + More...

    +
    + + Inheritance diagram for PIConnection:
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    PIConnection ()
     Constructs an empty connection.
     
    PIConnection (const PIString &name)
     Constructs connection with name "name".
     
    PIConnection (const PIString &config, const PIString &name)
     Constructs connection and configure it from config file "config" from section "name".
     
    bool configureFromConfig (const PIString &config, const PIString &name)
     Configure connection from config file "config" from section "name". Returns if configuration was successful. More...
     
    +PIString makeConfig () const
     Returns config file section of current connection configuration.
     
    PIIODeviceaddDevice (const PIString &full_path, PIIODevice::DeviceMode mode=PIIODevice::ReadWrite, bool start=false)
     Add device with full path "full_path", open mode "mode" to Device pool and connection. More...
     
    bool removeDevice (const PIString &full_path)
     Remove device with full path "full_path" from connection. More...
     
    void removeAllDevices ()
     Remove all device from connection. More...
     
    +PIIODevicedevice (const PIString &full_path) const
     Returns device with full path "full_path" or null if there is no such device.
     
    +PIVector< PIIODevice * > boundedDevices () const
     Returns all devices bounded to this connection.
     
    PIPacketExtractoraddFilter (const PIString &name, const PIString &full_path_name, PIPacketExtractor::SplitMode mode=PIPacketExtractor::None)
     Add filter with name "name" to device with full path "full_path_name" or filter "full_path_name". More...
     
    +PIPacketExtractoraddFilter (const PIString &name, const PIIODevice *dev, PIPacketExtractor::SplitMode mode=PIPacketExtractor::None)
     Add filter with name "name" to device "dev".
     
    bool removeFilter (const PIString &name, const PIString &full_path_name)
     Remove from filter with name "name" device with full path "full_path_name" or filter "full_path_name". More...
     
    +bool removeFilter (const PIString &name, const PIIODevice *dev)
     Remove from filter with name "name" device or filter "dev".
     
    +bool removeFilter (const PIString &name)
     Remove filter with name "name". Returns if filter was removed.
     
    +void removeAllFilters ()
     Remove all filters from connection.
     
    +PIVector< PIPacketExtractor * > filters () const
     Returns all filters of connection.
     
    +PIStringList filterNames () const
     Returns all filter names of connection.
     
    +PIPacketExtractorfilter (const PIString &name) const
     Returns PIPacketExtractor * assosiated with filter "name" or null if there is no such filter.
     
    +PIVector< PIIODevice * > filterBoundedDevices (const PIString &name) const
     Returns all devices bounded to filter "name".
     
    bool addChannel (const PIString &name_from, const PIString &name_to)
     Add to connection channel from "name_from" to "name_to". More...
     
    +bool addChannel (const PIString &name_from, const PIIODevice *dev_to)
     Add to connection channel from "name_from" to "dev_to".
     
    +bool addChannel (const PIIODevice *dev_from, const PIString &name_to)
     Add to connection channel from "dev_from" to "name_to".
     
    +bool addChannel (const PIIODevice *dev_from, const PIIODevice *dev_to)
     Add to connection channel from "dev_from" to "dev_to".
     
    bool removeChannel (const PIString &name_from, const PIString &name_to)
     Remove from connection channel from "name_from" to "name_to". More...
     
    +bool removeChannel (const PIString &name_from, const PIIODevice *dev_to)
     Remove from connection channel from "name_from" to "dev_to".
     
    +bool removeChannel (const PIIODevice *dev_from, const PIString &name_to)
     Remove from connection channel from "dev_from" to "name_to".
     
    +bool removeChannel (const PIIODevice *dev_from, const PIIODevice *dev_to)
     Remove from connection channel from "dev_from" to "dev_to".
     
    bool removeChannel (const PIString &name_from)
     Remove from connection all channels from "name_from". More...
     
    +bool removeChannel (const PIIODevice *dev_from)
     Remove from connection all channels from "dev_from".
     
    +void removeAllChannels ()
     Remove from connection all channels.
     
    +PIVector< PIPair< PIString,
    +PIString > > 
    channels () const
     Returns all channels of this connection as full pathes or filter names pair array (from, to)
     
    void addSender (const PIString &name, const PIString &full_path, float frequency, bool start=false)
     Add to connection sender with name "name" device with full path "full_path". More...
     
    +void addSender (const PIString &name, const PIIODevice *dev, float frequency, bool start=false)
     Add to connection sender with name "name" device "dev".
     
    bool removeSender (const PIString &name, const PIString &full_path)
     Remove from sender with name "name" device with full path "full_path_name". More...
     
    +bool removeSender (const PIString &name, const PIIODevice *dev)
     Remove from sender with name "name" device "dev".
     
    +bool removeSender (const PIString &name)
     Remove sender with name "name", returns if sender was removed.
     
    +bool setSenderFixedData (const PIString &name, const PIByteArray &data)
     Set sender "name" fixed send data "data", returns if sender exists.
     
    +bool clearSenderFixedData (const PIString &name)
     Remove sender "name" fixed send data, returns if sender exists.
     
    +PIByteArray senderFixedData (const PIString &name) const
     Returns sender "name" fixed send data.
     
    +float senderFrequency (const PIString &name) const
     Returns sender "name" timer frequency, -1 if there is no such sender, or 0 if sender is not started yet.
     
    +void removeAllSenders ()
     Remove from connection all senders.
     
    +void startThreadedRead (const PIString &full_path)
     Start read thread of device with full path "full_path".
     
    +void startThreadedRead (const PIIODevice *dev)
     Start read thread of device "dev".
     
    +void startAllThreadedReads ()
     Start read threads of all Device pool device.
     
    +void startSender (const PIString &name)
     Start sender "name" timer.
     
    +void startAllSenders ()
     Start all senders timers.
     
    +void start ()
     Start all read threads and senders.
     
    +void stopThreadedRead (const PIString &full_path)
     Stop read thread of device with full path "full_path".
     
    +void stopThreadedRead (const PIIODevice *dev)
     Stop read thread of device "dev".
     
    +void stopAllThreadedReads ()
     Stop read threads of all Device pool device.
     
    +void stopSender (const PIString &name)
     Stop sender "name" timer.
     
    +void stopAllSenders ()
     Stop all senders timers.
     
    +void stop ()
     Stop all read threads and senders.
     
    +bool isEmpty () const
     Returns if there are no devices in this connection.
     
    +PIDiagnosticsdiagnostic (const PIString &full_path_name) const
     Returns PIDiagnostics * assosiated with device with full path "full_path_name" or filter "full_path_name".
     
    +PIDiagnosticsdiagnostic (const PIIODevice *dev) const
     Returns PIDiagnostics * assosiated with device or filter "dev".
     
    +int write (const PIString &full_path, const PIByteArray &data)
     Write data "data" to device with full path "full_path" and returns result of write() function of device.
     
    +int write (const PIIODevice *dev, const PIByteArray &data)
     Write data "data" to device "dev" and returns result of write() function of device.
     
    - Public Member Functions inherited from PIObject
    PIObject (const PIString &name=PIString())
     Contructs PIObject with name "name".
     
    +PIString name () const
     Returns object name.
     
    +virtual const char * className () const
     Returns object class name.
     
    +virtual const char * superClassName () const
     Returns object superclass name.
     
    +bool debug () const
     Return if debug of this object is active.
     
    +void setName (const PIString &name)
     Set object name.
     
    +void setDebug (bool debug)
     Set object debug active.
     
    +const PIMap< PIString,
    +PIVariant > & 
    properties () const
     Returns properties of the object.
     
    +int propertiesCount () const
     Returns properties count of the object.
     
    +PIVariant property (const PIString &name) const
     Returns property with name "name".
     
    +void setProperty (const PIString &name, const PIVariant &value)
     Set property with name "name" to "value". If there is no such property in object it will be added.
     
    +bool isPropertyExists (const PIString &name) const
     Returns if property with name "name" exists.
     
    + + + + + + + + + + + + + + + + + +

    +Static Public Member Functions

    +static PIVector< PIConnection * > allConnections ()
     Returns all connections in application.
     
    +static PIVector< PIIODevice * > allDevices ()
     Returns all devices in Device pool.
     
    - Static Public Member Functions inherited from PIObject
    +static void piDisconnect (PIObject *src, const PIString &sig)
     Disconnect object "src" from all connections with event name "sig".
     
    +static void piDisconnect (PIObject *src)
     Disconnect object "src" from all connections, i.e. all connections where object "src" is emitter.
     
    +static PIObjectfindByName (const PIString &name)
     Returns PIObject* with name "name" or 0, if there is no object found.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Protected Member Functions

    +virtual void dataReceived (const PIString &from, const PIByteArray &data)
     Executes on data received from device with full path "from".
     
    +virtual void packetReceived (const PIString &from, const PIByteArray &data)
     Executes on packet received from filter with name "from".
     
    +virtual bool filterValidateHeader (const PIString &filter_name, uchar *src, uchar *rec, int size)
     Validate header "rec" with source header "src" and size "size", executes from filter "filter_name".
     
    +virtual bool filterValidateFooter (const PIString &filter_name, uchar *src, uchar *rec, int size)
     Validate footer "rec" with source footer "src" and size "size", executes from filter "filter_name".
     
    +virtual bool filterValidatePayload (const PIString &filter_name, uchar *rec, int size)
     Validate payload "rec" with size "size", executes from filter "filter_name".
     
    +virtual PIByteArray senderData (const PIString &sender_name)
     You should returns data for sender "sender_name".
     
    - Protected Member Functions inherited from PIObject
    +PIObjectemitter () const
     Returns PIObject* which has raised an event. This value is correct only in definition of some event handler.
     
    +virtual void propertyChanged (const PIString &name)
     Virtual function executes after property with name "name" has been changed.
     
    + + + + + + + +

    +Events

    +void dataReceivedEvent (const PIString &from, const PIByteArray &data)
     Raise on data received from device with full path "from".
     
    +void packetReceivedEvent (const PIString &from, const PIByteArray &data)
     Raise on packet received from filter with name "from".
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Additional Inherited Members

    +

    Detailed Description

    +

    Complex Input/Output point.

    +

    +Synopsis

    +

    PIConnection provides abstract layer over physical devices, filtering and connecting data streams. Each PIConnection works through Device Pool, so several PIConnections can read from single physical device. General scheme:

    +piconnection.png +
    +

    +Device pool concept

    +

    Device pool is static object, single for each application, which contains unique devices. Each PIConnection works with real devices through Device pool. Each device has assosiated thread for read and it can be started or stopped with PIConnection functions startThreadedRead() and stopThreadedRead().

    +

    +Filters

    +

    PIConnection filter is a PIPacketExtractor and assosiated array of devices or other filters. When read thread is successfully read from device this data can be passed to one or more filters. Each filter has name and filter names should be unique. You can use this name for access to PIPacketExtractor* with function filter(), or get array of assosiated devices and filters with function filterBoundedDevices(). One filter can receive data from several sources, and can be bounded to several filters.

    +piconnection_filters.png +
    +

    +Diagnostics

    +

    PIConnection create PIDiagnostics for each device or filter. You can access to these objects with functions diagnostic().

    +

    +Senders

    +

    PIConnection can send data to devices with named timers ("senders"). You can create sender or add device to sender with function addSender(). Each sender has internal timer and every tick execute virtual function senderData(). Returns value of this function sended to bounded devices. You can assign fixed send data to sender with function setSenderFixedData(). In this case sender will NOT execute senderData(), but send assigned data.

    +piconnection_senders.png +
    +

    +Configuration

    +

    You can create PIConnection from config file section or configure it later with function configureFromConfig(). Devices describes with its full pathes, for details see Creating devices by unambiguous string. Example:

    +piconnection_conf.png +
    +

    Also PIConnection can create PIString with its configuration with function makeConfig(). This string can be directly inserted into the config file.

    +

    Member Function Documentation

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool PIConnection::configureFromConfig (const PIStringconfig,
    const PIStringname 
    )
    +
    + +

    Configure connection from config file "config" from section "name". Returns if configuration was successful.

    +

    Warning: all devices, filters and channels removed before configure!

    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    PIIODevice * PIConnection::addDevice (const PIStringfull_path,
    PIIODevice::DeviceMode mode = PIIODevice::ReadWrite,
    bool start = false 
    )
    +
    + +

    Add device with full path "full_path", open mode "mode" to Device pool and connection.

    +

    Returns pointer to device or null if device can not be created. If "start" is true, read thread is started immediately. Else, you can start read thread with functions startThreadedRead() or startAllThreadedReads(). By default, read thread doesn`t start

    + +
    +
    + +
    +
    + + + + + + + + +
    bool PIConnection::removeDevice (const PIStringfull_path)
    +
    + +

    Remove device with full path "full_path" from connection.

    +

    Returns if device was removed. If there is no connection bounded to this device, it will be removed from Device pool

    + +
    +
    + +
    +
    + + + + + + + +
    void PIConnection::removeAllDevices ()
    +
    + +

    Remove all device from connection.

    +

    If there is no connection bounded to there devices, they removed from Device pool

    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    PIPacketExtractor * PIConnection::addFilter (const PIStringname,
    const PIStringfull_path_name,
    PIPacketExtractor::SplitMode mode = PIPacketExtractor::None 
    )
    +
    + +

    Add filter with name "name" to device with full path "full_path_name" or filter "full_path_name".

    +

    If there is no filter with name "name", connection create new with split mode "mode" and bound to it device "full_path_name" or filter "full_path_name". If filter with name "name" already exists, device "full_path_name" or filter "full_path_name" add to this filter. This function returns PIPacketExtractor * assosiated with this filter
    + Attention! "mode" is altual olny if new filter was created!

    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool PIConnection::removeFilter (const PIStringname,
    const PIStringfull_path_name 
    )
    +
    + +

    Remove from filter with name "name" device with full path "full_path_name" or filter "full_path_name".

    +

    If there is no devices bounded to this filter, it will be removed. Returns if device was removed

    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool PIConnection::addChannel (const PIStringname_from,
    const PIStringname_to 
    )
    +
    + +

    Add to connection channel from "name_from" to "name_to".

    +

    "name_from" and "name_to" can be full pathes of devices or filter names. Returns false if there if no such device or filter, else create channel and returns true

    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool PIConnection::removeChannel (const PIStringname_from,
    const PIStringname_to 
    )
    +
    + +

    Remove from connection channel from "name_from" to "name_to".

    +

    "name_from" and "name_to" can be full pathes of devices or filter names. Returns false if there if no such device or filter, else remove channel and returns true

    + +
    +
    + +
    +
    + + + + + + + + +
    bool PIConnection::removeChannel (const PIStringname_from)
    +
    + +

    Remove from connection all channels from "name_from".

    +

    "name_from" can be full path of device or filter name. Returns false if there if no such device or filter, else remove channels and returns true

    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void PIConnection::addSender (const PIStringname,
    const PIStringfull_path,
    float frequency,
    bool start = false 
    )
    +
    + +

    Add to connection sender with name "name" device with full path "full_path".

    +

    If there is no sender with name "name", connection create new, bound to it device "full_path_name" and start sender timer with frequency "frequency". If sender with name "name" already exists, device "full_path_name" add to this sender If "start" is true, sender is started immediately. Else, you can start sender with functions startSender()
    + Attention! "frequency" is altual olny if new sender was created!

    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool PIConnection::removeSender (const PIStringname,
    const PIStringfull_path 
    )
    +
    + +

    Remove from sender with name "name" device with full path "full_path_name".

    +

    If there is no devices bounded to this sender, it will be removed. Returns if sender was removed

    + +
    +
    +
    +
    + + + + diff --git a/pip/doc/html/class_p_i_connection.js b/pip/doc/html/class_p_i_connection.js new file mode 100644 index 0000000..400db58 --- /dev/null +++ b/pip/doc/html/class_p_i_connection.js @@ -0,0 +1,70 @@ +var class_p_i_connection = +[ + [ "PIConnection", "class_p_i_connection.html#a73a93e8330a2852cf1c76c0fa33b8eff", null ], + [ "PIConnection", "class_p_i_connection.html#ad9bf5c0c48488d2576b6545ecb75e22a", null ], + [ "PIConnection", "class_p_i_connection.html#a245a605ddceaf33c0b2a9e66378c0c98", null ], + [ "configureFromConfig", "class_p_i_connection.html#a78a788e328f8ec243c8cd6f93aca47bd", null ], + [ "makeConfig", "class_p_i_connection.html#aa7333225423095feac73e903dfef3e32", null ], + [ "addDevice", "class_p_i_connection.html#abef3fbce379e0f8cf01b3c12c1e6b297", null ], + [ "removeDevice", "class_p_i_connection.html#ab6579532c7de05b4ac379a9ca2ea8ec9", null ], + [ "removeAllDevices", "class_p_i_connection.html#a01600f5a22b49eb796fbf245a0853b6d", null ], + [ "device", "class_p_i_connection.html#a4bf1efff7318d598d0c47bb474869fe6", null ], + [ "boundedDevices", "class_p_i_connection.html#a6efb56a368a5498f63b5c6e15dfebcf9", null ], + [ "addFilter", "class_p_i_connection.html#a1105a544b2018fbee5ccf8bf026991c1", null ], + [ "addFilter", "class_p_i_connection.html#aee76c16fda7f9e6f09748caa1e512487", null ], + [ "removeFilter", "class_p_i_connection.html#a82a9d3c484bbc073ef7d9196343e1368", null ], + [ "removeFilter", "class_p_i_connection.html#a870f2081626fa2aa352069a19b1c52ff", null ], + [ "removeFilter", "class_p_i_connection.html#a1d486b41013a8cc455a5a07529d2eea3", null ], + [ "removeAllFilters", "class_p_i_connection.html#a762b4641d14843628d7af4af8212bbf9", null ], + [ "filters", "class_p_i_connection.html#a3960ea85b7a1fad838fa84772ecf9695", null ], + [ "filterNames", "class_p_i_connection.html#aa6a4ea015798acdb8b5c0fd52156cd7f", null ], + [ "filter", "class_p_i_connection.html#a556da00110cff970ed19d850b708cf29", null ], + [ "filterBoundedDevices", "class_p_i_connection.html#a7f1910e132f8e9991f89444d0c3ec764", null ], + [ "addChannel", "class_p_i_connection.html#ac633cbd86559b6c5f39c2de7d02d3c6f", null ], + [ "addChannel", "class_p_i_connection.html#a0345dc20954d0cde05504e23b5db9e94", null ], + [ "addChannel", "class_p_i_connection.html#aeee8312bb71cd0417e7079f67f2849e8", null ], + [ "addChannel", "class_p_i_connection.html#a72e9bed935739be4aff88c08df5af73e", null ], + [ "removeChannel", "class_p_i_connection.html#ab512962f328b702d416a13d577937524", null ], + [ "removeChannel", "class_p_i_connection.html#af4e276c0cf30890cb7e599ffdbe0b9e8", null ], + [ "removeChannel", "class_p_i_connection.html#acf9fb8b023f09c12b64809928951dfd1", null ], + [ "removeChannel", "class_p_i_connection.html#aa3d4e83032706f342f70f25928a87bfa", null ], + [ "removeChannel", "class_p_i_connection.html#a95bcc784d1436285666d141955468227", null ], + [ "removeChannel", "class_p_i_connection.html#ace1bad69c9498f390fd324f5ec11683c", null ], + [ "removeAllChannels", "class_p_i_connection.html#a2ef0febef147d0314b8ec312e81d535a", null ], + [ "channels", "class_p_i_connection.html#a9b6d693bd94c74a09b3374cbc9bbf65c", null ], + [ "addSender", "class_p_i_connection.html#a51c44629c4a2eb7194bfabf16e8c1f5a", null ], + [ "addSender", "class_p_i_connection.html#adbfdd3671eb66e4967312b411a757697", null ], + [ "removeSender", "class_p_i_connection.html#a0f502ebce46f41bf58975652bac7346c", null ], + [ "removeSender", "class_p_i_connection.html#a6e94e0174cecb9a57571be67ead71381", null ], + [ "removeSender", "class_p_i_connection.html#a34af1d09b375682bdcd25590153530d1", null ], + [ "setSenderFixedData", "class_p_i_connection.html#aa547b4a4e64e9adf0c7c45171160bded", null ], + [ "clearSenderFixedData", "class_p_i_connection.html#aea2898a9729c594ab7bd174425ae8dcf", null ], + [ "senderFixedData", "class_p_i_connection.html#a94acbae950358c2d47b6f71048d4ce4a", null ], + [ "senderFrequency", "class_p_i_connection.html#afc32d50f589771ab51d90df92960a9af", null ], + [ "removeAllSenders", "class_p_i_connection.html#a0c7c309e54c2c09a779c25843dd13efd", null ], + [ "startThreadedRead", "class_p_i_connection.html#a0172eca55562a296daa6e971d879443d", null ], + [ "startThreadedRead", "class_p_i_connection.html#acb0bfcc3c1e36d1d9881e31a331e2d59", null ], + [ "startAllThreadedReads", "class_p_i_connection.html#aa0319a04d2b0a72809347b556fbde478", null ], + [ "startSender", "class_p_i_connection.html#ae21103d16eb22cefe68cf5f237f2052a", null ], + [ "startAllSenders", "class_p_i_connection.html#ab4cb20685c610275c31c4c1a4e4de9c6", null ], + [ "start", "class_p_i_connection.html#a296ce68f2f85085bf4ecfb71580587c4", null ], + [ "stopThreadedRead", "class_p_i_connection.html#a57f58250839c50d221d32f8d1fb62737", null ], + [ "stopThreadedRead", "class_p_i_connection.html#a5ca12246273a1871fe6c53d535f7ab7f", null ], + [ "stopAllThreadedReads", "class_p_i_connection.html#a48c592b6ce3b7d629a379d3858d3fcfa", null ], + [ "stopSender", "class_p_i_connection.html#ab2021a8aadf16591b52196a368700ba6", null ], + [ "stopAllSenders", "class_p_i_connection.html#a96a185e9d93134b8d092265c230158a3", null ], + [ "stop", "class_p_i_connection.html#afd9148e6424e609eff5e42e456788533", null ], + [ "isEmpty", "class_p_i_connection.html#a3a3c31ebf6f1613ae421483ea360d7b2", null ], + [ "diagnostic", "class_p_i_connection.html#a8331d46bea526c5f74958315d725e14b", null ], + [ "diagnostic", "class_p_i_connection.html#a864db6b1ef3905ae761d249f69cbb12b", null ], + [ "write", "class_p_i_connection.html#a37960527c1357e6e2e58e2656c21719b", null ], + [ "write", "class_p_i_connection.html#ad659e36901a3b7c1724325c74473157f", null ], + [ "dataReceivedEvent", "class_p_i_connection.html#afdec29f2680315ace29a8b8f1c445e00", null ], + [ "packetReceivedEvent", "class_p_i_connection.html#a0f25a2e5625a1c33a3cd4d494ea3b9da", null ], + [ "dataReceived", "class_p_i_connection.html#a0646157ff90676be46c8e96a9dfce78f", null ], + [ "packetReceived", "class_p_i_connection.html#a3883e8b65fccb1b85c810c690bb820c6", null ], + [ "filterValidateHeader", "class_p_i_connection.html#a6f8f899f40de092639f1e0cefe95c968", null ], + [ "filterValidateFooter", "class_p_i_connection.html#a2691ceec3dea8c0588f8afd74359277e", null ], + [ "filterValidatePayload", "class_p_i_connection.html#ad883e4b2174fc086da98b1dbcad69aaf", null ], + [ "senderData", "class_p_i_connection.html#a023551841a2209d5ada16c376feb91f9", null ] +]; \ No newline at end of file diff --git a/pip/doc/html/class_p_i_connection__inherit__graph.map b/pip/doc/html/class_p_i_connection__inherit__graph.map new file mode 100644 index 0000000..eac7403 --- /dev/null +++ b/pip/doc/html/class_p_i_connection__inherit__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/class_p_i_connection__inherit__graph.md5 b/pip/doc/html/class_p_i_connection__inherit__graph.md5 new file mode 100644 index 0000000..da832d7 --- /dev/null +++ b/pip/doc/html/class_p_i_connection__inherit__graph.md5 @@ -0,0 +1 @@ +ec9e1967648638ed4186f0d20c63e3ca \ No newline at end of file diff --git a/pip/doc/html/class_p_i_connection__inherit__graph.svg b/pip/doc/html/class_p_i_connection__inherit__graph.svg new file mode 100644 index 0000000..c2e0a17 --- /dev/null +++ b/pip/doc/html/class_p_i_connection__inherit__graph.svg @@ -0,0 +1,31 @@ + + + + + + +PIConnection + + +Node1 + +PIConnection + + +Node2 + + +PIObject + + + + +Node2->Node1 + + + + + diff --git a/pip/doc/html/class_p_i_console-members.html b/pip/doc/html/class_p_i_console-members.html new file mode 100644 index 0000000..c27ad47 --- /dev/null +++ b/pip/doc/html/class_p_i_console-members.html @@ -0,0 +1,292 @@ + + + + + + +PIP: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    PIConsole Member List
    +
    +
    + +

    This is the complete list of members for PIConsole, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    addBitVariable(const PIString &name, const void *ptr, int fromBit, int bitsCount, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)PIConsole
    addCustomStatus(const PIString &str)PIConsoleinline
    addEmptyLine(int column=1, uint count=1)PIConsole
    addString(const PIString &name, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)PIConsole
    addTab(const PIString &name, char bind_key=0)PIConsole
    addVariable(const PIString &name, const PIString *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)PIConsole
    addVariable(const PIString &name, const char *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)PIConsole
    addVariable(const PIString &name, const bool *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)PIConsole
    addVariable(const PIString &name, const short *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)PIConsole
    addVariable(const PIString &name, const int *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)PIConsole
    addVariable(const PIString &name, const long *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)PIConsole
    addVariable(const PIString &name, const llong *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)PIConsole
    addVariable(const PIString &name, const uchar *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)PIConsole
    addVariable(const PIString &name, const ushort *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)PIConsole
    addVariable(const PIString &name, const uint *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)PIConsole
    addVariable(const PIString &name, const ulong *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)PIConsole
    addVariable(const PIString &name, const ullong *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)PIConsole
    addVariable(const PIString &name, const float *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)PIConsole
    addVariable(const PIString &name, const double *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)PIConsole
    addVariable(const PIString &name, const PISystemTime *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)PIConsole
    addVariable(const PIString &name, const PIProtocol *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)PIConsole
    addVariable(const PIString &name, const PIDiagnostics *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)PIConsole
    Alignment enum namePIConsole
    BackBlack enum valuePIConsole
    BackBlue enum valuePIConsole
    BackCyan enum valuePIConsole
    BackGreen enum valuePIConsole
    BackMagenta enum valuePIConsole
    BackRed enum valuePIConsole
    BackWhite enum valuePIConsole
    BackYellow enum valuePIConsole
    Bin enum valuePIConsole
    Black enum valuePIConsole
    Blink enum valuePIConsole
    Blue enum valuePIConsole
    Bold enum valuePIConsole
    className() const PIObjectinlinevirtual
    clearCustomStatus()PIConsoleinline
    clearTabs(bool clearScreen=true)PIConsoleinline
    clearVariables(bool clearScreen)PIConsoleinline
    CONNECTPIObjectrelated
    CONNECT0PIObjectrelated
    CONNECT1PIObjectrelated
    CONNECT2PIObjectrelated
    CONNECT3PIObjectrelated
    CONNECT4PIObjectrelated
    CONNECTUPIObjectrelated
    currentTab() const PIConsoleinline
    Cyan enum valuePIConsole
    data() const PIThreadinline
    debug() const PIObjectinline
    Dec enum valuePIConsole
    defaultAlignment() const PIConsoleinline
    disableExitCapture()PIConsoleinline
    DISCONNECTPIObjectrelated
    DISCONNECT0PIObjectrelated
    DISCONNECT1PIObjectrelated
    DISCONNECT2PIObjectrelated
    DISCONNECT3PIObjectrelated
    DISCONNECT4PIObjectrelated
    emitter() const PIObjectinlineprotected
    enableExitCapture(char key= 'Q')PIConsoleinline
    end()PIThreadinlineprotectedvirtual
    EVENTPIObjectrelated
    EVENT0PIObjectrelated
    EVENT1PIObjectrelated
    EVENT2PIObjectrelated
    EVENT3PIObjectrelated
    EVENT4PIObjectrelated
    EVENT_HANDLERPIObjectrelated
    EVENT_HANDLER0PIObjectrelated
    EVENT_HANDLER1PIObjectrelated
    EVENT_HANDLER2PIObjectrelated
    EVENT_HANDLER3PIObjectrelated
    EVENT_HANDLER4PIObjectrelated
    EVENT_VHANDLERPIObjectrelated
    EVENT_VHANDLER0PIObjectrelated
    EVENT_VHANDLER1PIObjectrelated
    EVENT_VHANDLER2PIObjectrelated
    EVENT_VHANDLER3PIObjectrelated
    EVENT_VHANDLER4PIObjectrelated
    exitCaptured() const PIConsoleinline
    exitKey() const PIConsoleinline
    findByName(const PIString &name)PIObjectinlinestatic
    Format enum namePIConsole
    Green enum valuePIConsole
    HANDLERPIObjectrelated
    Hex enum valuePIConsole
    Inverse enum valuePIConsole
    isPropertyExists(const PIString &name) const PIObjectinline
    isRunning() const PIThreadinline
    keyPressed(char key, void *data)PIConsole
    Left enum valuePIConsole
    lock()PIThreadinline
    Magenta enum valuePIConsole
    mutex()PIThreadinline
    name() const PIObjectinline
    needLockRun(bool need)PIThreadinline
    Normal enum valuePIConsole
    Nothing enum valuePIConsole
    Oct enum valuePIConsole
    PIConsole(bool startNow=true, KBFunc slot=0)PIConsole
    piCoutObjPIObjectrelated
    piDisconnect(PIObject *src, const PIString &sig)PIObjectstatic
    piDisconnect(PIObject *src)PIObjectstatic
    piHigh enum valuePIThread
    piHighest enum valuePIThread
    piLow enum valuePIThread
    piLowerst enum valuePIThread
    piNormal enum valuePIThread
    PIObject(const PIString &name=PIString())PIObject
    PIOBJECTPIObjectrelated
    PIOBJECT_PARENTPIObjectrelated
    PIThread(void *data, ThreadFunc func, bool startNow=false, int loop_delay=-1)PIThread
    PIThread(bool startNow=false, int loop_delay=-1)PIThread
    priority() const PIThreadinline
    Priority enum namePIThread
    properties() const PIObjectinline
    propertiesCount() const PIObjectinline
    property(const PIString &name) const PIObjectinline
    propertyChanged(const PIString &name)PIObjectinlineprotectedvirtual
    Red enum valuePIConsole
    removeTab(uint index)PIConsole
    removeTab(const PIString &name)PIConsole
    Right enum valuePIConsole
    Scientific enum valuePIConsole
    setColumnAlignment(int col, Alignment align)PIConsoleinline
    setColumnAlignmentToAll(Alignment align)PIConsoleinline
    setData(void *d)PIThreadinline
    setDebug(bool debug)PIObjectinline
    setDefaultAlignment(Alignment align)PIConsoleinline
    setName(const PIString &name)PIObjectinline
    setPriority(PIThread::Priority prior)PIThread
    setProperty(const PIString &name, const PIVariant &value)PIObjectinline
    setSlot(ThreadFunc func)PIThreadinline
    setTab(uint index)PIConsole
    setTab(const PIString &name)PIConsole
    setTabBindKey(uint index, char bind_key)PIConsole
    setTabBindKey(const PIString &name, char bind_key)PIConsole
    start(bool wait)PIConsoleinline
    PIThread::start(int timer_delay)PIThread
    PIThread::start(ThreadFunc func, int timer_delay)PIThreadinline
    started()PIThread
    startOnce()PIThread
    startOnce(ThreadFunc func)PIThreadinline
    stop(bool clear)PIConsole
    stopped()PIThread
    superClassName() const PIObjectinlinevirtual
    SystemTimeSeconds enum valuePIConsole
    SystemTimeSplit enum valuePIConsole
    tabsCount() const PIConsoleinline
    terminate()PIThread
    Underline enum valuePIConsole
    unlock()PIThreadinline
    waitForFinish()PIConsoleinline
    PIThread::waitForFinish(int timeout_msecs)PIThread
    waitForStart(int timeout_msecs)PIThread
    WEAK_CONNECTPIObjectrelated
    WEAK_CONNECT0PIObjectrelated
    WEAK_CONNECT1PIObjectrelated
    WEAK_CONNECT2PIObjectrelated
    WEAK_CONNECT3PIObjectrelated
    WEAK_CONNECT4PIObjectrelated
    White enum valuePIConsole
    Yellow enum valuePIConsole
    +
    + + + + diff --git a/pip/doc/html/class_p_i_console.html b/pip/doc/html/class_p_i_console.html new file mode 100644 index 0000000..0315882 --- /dev/null +++ b/pip/doc/html/class_p_i_console.html @@ -0,0 +1,966 @@ + + + + + + +PIP: PIConsole Class Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    + +
    +
    PIConsole Class Reference
    +
    +
    + +

    Console output class. + More...

    +
    + + Inheritance diagram for PIConsole:
    +
    +
    + + + + + + + + + + + + + +

    +Public Types

    enum  Format {
    +  Normal = 0x01, +Bold = 0x02 +, Underline = 0x10, +Blink = 0x20, +
    +  Inverse = 0x40, +Black = 0x100, +Red = 0x200, +Green = 0x400, +
    +  Yellow = 0x800, +Blue = 0x1000, +Magenta = 0x2000, +Cyan = 0x4000, +
    +  White = 0x8000, +BackBlack = 0x10000, +BackRed = 0x20000, +BackGreen = 0x40000, +
    +  BackYellow = 0x80000, +BackBlue = 0x100000, +BackMagenta = 0x200000, +BackCyan = 0x400000, +
    +  BackWhite = 0x800000, +Dec = 0x1000000, +Hex = 0x2000000, +Oct = 0x4000000, +
    +  Bin = 0x8000000, +Scientific = 0x10000000, +SystemTimeSplit = 0x20000000, +SystemTimeSeconds = 0x40000000 +
    + }
     Variables output format. More...
     
    enum  Alignment { Nothing, +Left, +Right + }
     Column labels alignment. More...
     
    - Public Types inherited from PIThread
    enum  Priority {
    +  piLowerst, +piLow, +piNormal, +piHigh, +
    +  piHighest +
    + }
     Priority of thread. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    PIConsole (bool startNow=true, KBFunc slot=0)
     Constructs PIConsole with key handler "slot" and if "startNow" start it.
     
    +void addString (const PIString &name, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)
     Add to current tab to column "column" string "name" with format "format".
     
    +void addVariable (const PIString &name, const PIString *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)
     Add to current tab to column "column" variable with label "name", pointer "ptr" and format "format".
     
    +void addVariable (const PIString &name, const char *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)
     Add to current tab to column "column" variable with label "name", pointer "ptr" and format "format".
     
    +void addVariable (const PIString &name, const bool *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)
     Add to current tab to column "column" variable with label "name", pointer "ptr" and format "format".
     
    +void addVariable (const PIString &name, const short *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)
     Add to current tab to column "column" variable with label "name", pointer "ptr" and format "format".
     
    +void addVariable (const PIString &name, const int *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)
     Add to current tab to column "column" variable with label "name", pointer "ptr" and format "format".
     
    +void addVariable (const PIString &name, const long *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)
     Add to current tab to column "column" variable with label "name", pointer "ptr" and format "format".
     
    +void addVariable (const PIString &name, const llong *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)
     Add to current tab to column "column" variable with label "name", pointer "ptr" and format "format".
     
    +void addVariable (const PIString &name, const uchar *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)
     Add to current tab to column "column" variable with label "name", pointer "ptr" and format "format".
     
    +void addVariable (const PIString &name, const ushort *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)
     Add to current tab to column "column" variable with label "name", pointer "ptr" and format "format".
     
    +void addVariable (const PIString &name, const uint *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)
     Add to current tab to column "column" variable with label "name", pointer "ptr" and format "format".
     
    +void addVariable (const PIString &name, const ulong *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)
     Add to current tab to column "column" variable with label "name", pointer "ptr" and format "format".
     
    +void addVariable (const PIString &name, const ullong *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)
     Add to current tab to column "column" variable with label "name", pointer "ptr" and format "format".
     
    +void addVariable (const PIString &name, const float *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)
     Add to current tab to column "column" variable with label "name", pointer "ptr" and format "format".
     
    +void addVariable (const PIString &name, const double *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)
     Add to current tab to column "column" variable with label "name", pointer "ptr" and format "format".
     
    +void addVariable (const PIString &name, const PISystemTime *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)
     Add to current tab to column "column" variable with label "name", pointer "ptr" and format "format".
     
    void addVariable (const PIString &name, const PIProtocol *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)
     Add to current tab to column "column" variable with label "name", pointer "ptr" and format "format". More...
     
    void addVariable (const PIString &name, const PIDiagnostics *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)
     Add to current tab to column "column" variable with label "name", pointer "ptr" and format "format". More...
     
    +void addBitVariable (const PIString &name, const void *ptr, int fromBit, int bitsCount, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)
     Add to current tab to column "column" bits field with label "name", pointer "ptr" and format "format".
     
    +void addEmptyLine (int column=1, uint count=1)
     Add to current tab to column "column" "count" empty lines.
     
    +uint tabsCount () const
     Returns tabs count.
     
    +PIString currentTab () const
     Returns current tab name.
     
    +int addTab (const PIString &name, char bind_key=0)
     Add new tab with name "name", bind key "bind_key" and returns this tab index.
     
    +void removeTab (uint index)
     Remove tab with index "index".
     
    +void removeTab (const PIString &name)
     Remove tab with name "name".
     
    +bool setTab (uint index)
     Set current tab to tab with index "index", returns if tab exists.
     
    +bool setTab (const PIString &name)
     Set current tab to tab with name "name", returns if tab exists.
     
    +bool setTabBindKey (uint index, char bind_key)
     Set tab with index "index" bind key to "bind_key", returns if tab exists.
     
    +bool setTabBindKey (const PIString &name, char bind_key)
     Set tab with name "name" bind key to "bind_key", returns if tab exists.
     
    +void clearTabs (bool clearScreen=true)
     Remove all tabs and if "clearScreen" clear the screen.
     
    +void addCustomStatus (const PIString &str)
     Set custom status text of current tab to "str".
     
    +void clearCustomStatus ()
     Clear custom status text of current tab.
     
    +Alignment defaultAlignment () const
     Returns default alignment.
     
    +void setDefaultAlignment (Alignment align)
     Set default alignment to "align".
     
    +void setColumnAlignment (int col, Alignment align)
     Set column "col" alignment to "align".
     
    +void setColumnAlignmentToAll (Alignment align)
     Set all columns of all tabs alignment to "align".
     
    +void enableExitCapture (char key= 'Q')
     Directly call function from PIKbdListener.
     
    +void disableExitCapture ()
     Directly call function from PIKbdListener.
     
    +bool exitCaptured () const
     Directly call function from PIKbdListener.
     
    +char exitKey () const
     Directly call function from PIKbdListener.
     
    - Public Member Functions inherited from PIThread
    PIThread (void *data, ThreadFunc func, bool startNow=false, int loop_delay=-1)
     Contructs thread with custom data "data", external function "func" and main loop delay "loop_delay".
     
    PIThread (bool startNow=false, int loop_delay=-1)
     Contructs thread with main loop delay "loop_delay".
     
    +void setData (void *d)
     Set common data passed to external function.
     
    +void setSlot (ThreadFunc func)
     Set external function that will be executed after every run()
     
    +void setPriority (PIThread::Priority prior)
     Set priority of thread.
     
    +void * data () const
     Returns common data passed to external function.
     
    +PIThread::Priority priority () const
     Return priority of thread.
     
    +bool isRunning () const
     Return true if thread is running.
     
    +void needLockRun (bool need)
     Set necessity of lock every run with internal mutex.
     
    +PIMutexmutex ()
     Return internal mutex.
     
    bool start (int timer_delay)
     Start thread. More...
     
    bool start (ThreadFunc func, int timer_delay)
     Start thread. More...
     
    bool startOnce ()
     Start thread without internal loop. More...
     
    bool startOnce (ThreadFunc func)
     Start thread without internal loop. More...
     
    void stop (bool wait)
     Stop thread. More...
     
    void terminate ()
     Strongly stop thread. More...
     
    bool waitForStart (int timeout_msecs)
     Wait for thread start. More...
     
    bool waitForFinish (int timeout_msecs)
     Wait for thread finish. More...
     
    +void lock ()
     Lock internal mutex.
     
    +void unlock ()
     Unlock internal mutex.
     
    +void started ()
     Raise on thread start.
     
    +void stopped ()
     Raise on thread stop.
     
    - Public Member Functions inherited from PIObject
    PIObject (const PIString &name=PIString())
     Contructs PIObject with name "name".
     
    +PIString name () const
     Returns object name.
     
    +virtual const char * className () const
     Returns object class name.
     
    +virtual const char * superClassName () const
     Returns object superclass name.
     
    +bool debug () const
     Return if debug of this object is active.
     
    +void setName (const PIString &name)
     Set object name.
     
    +void setDebug (bool debug)
     Set object debug active.
     
    +const PIMap< PIString,
    +PIVariant > & 
    properties () const
     Returns properties of the object.
     
    +int propertiesCount () const
     Returns properties count of the object.
     
    +PIVariant property (const PIString &name) const
     Returns property with name "name".
     
    +void setProperty (const PIString &name, const PIVariant &value)
     Set property with name "name" to "value". If there is no such property in object it will be added.
     
    +bool isPropertyExists (const PIString &name) const
     Returns if property with name "name" exists.
     
    + + + + + + + + + + + + + +

    +Handlers

    +void clearVariables (bool clearScreen)
     Remove all columns at current tab and if "clearScreen" clear the screen.
     
    +void waitForFinish ()
     block until finished (exit key will be pressed)
     
    +void start (bool wait)
     Start console output and if "wait" block until finished (exit key will be pressed)
     
    +void stop (bool clear)
     Stop console output and if "clear" clear the screen.
     
    + + + + +

    +Events

    +void keyPressed (char key, void *data)
     Raise on key "key" pressed, "data" is pointer to PIConsole object.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Additional Inherited Members

    - Static Public Member Functions inherited from PIObject
    +static void piDisconnect (PIObject *src, const PIString &sig)
     Disconnect object "src" from all connections with event name "sig".
     
    +static void piDisconnect (PIObject *src)
     Disconnect object "src" from all connections, i.e. all connections where object "src" is emitter.
     
    +static PIObjectfindByName (const PIString &name)
     Returns PIObject* with name "name" or 0, if there is no object found.
     
    - Protected Member Functions inherited from PIThread
    +virtual void end ()
     Function executed once at the end of thread.
     
    - Protected Member Functions inherited from PIObject
    +PIObjectemitter () const
     Returns PIObject* which has raised an event. This value is correct only in definition of some event handler.
     
    +virtual void propertyChanged (const PIString &name)
     Virtual function executes after property with name "name" has been changed.
     
    +

    Detailed Description

    +

    Console output class.

    +

    +Synopsis

    +

    This class provides output to console with automatic alignment and update. It supports tabs, keyboard listening, formats and colors.

    +

    +Layout

    +

    PIConsole works with variable pointers. You should add your variables with functions addVariable() which receives label name, pointer to variable and optional column and format. Columns count is dynamically increased if new column used. E.g. if you add variable to empty tab to column 3, columns count will be increased to 3, but two firsts columns will be empty. Each column filled from top to bottom, but you can add just string with function addString() or add empty line with function addEmptyLine(). Layout scheme:

    +piconsole_layout.png +
    +

    +Keyboard usage

    +

    PIConsole should to be single in application. PIConsole aggregate PIKbdListener which grab keyboard and automatic switch tabs by theirs bind keys. If there is no tab binded to pressed key external function "slot" will be called

    +

    Member Enumeration Documentation

    + +
    +
    + + + + +
    enum PIConsole::Format
    +
    + +

    Variables output format.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Enumerator
    Normal  +

    Default console format

    +
    Bold  +

    Bold text

    +
    Underline  +

    Underlined text

    +
    Blink  +

    Blinked text

    +
    Inverse  +

    Swap text and background colors

    +
    Black  +

    Black text

    +
    Red  +

    Red text

    +
    Green  +

    Green text

    +
    Yellow  +

    Yellow text

    +
    Blue  +

    Blue text

    +
    Magenta  +

    Magenta text

    +
    Cyan  +

    Cyan text

    +
    White  +

    White text

    +
    BackBlack  +

    Black background

    +
    BackRed  +

    Red background

    +
    BackGreen  +

    Green background

    +
    BackYellow  +

    Yellow background

    +
    BackBlue  +

    Blue background

    +
    BackMagenta  +

    Magenta background

    +
    BackCyan  +

    Cyan background

    +
    BackWhite  +

    White background

    +
    Dec  +

    Decimal base for integers

    +
    Hex  +

    Hexadecimal base for integers

    +
    Oct  +

    Octal base for integers

    +
    Bin  +

    Binary base for integers

    +
    Scientific  +

    Scientific representation of floats

    +
    SystemTimeSplit  +

    PISystemTime split representation (* s, * ns)

    +
    SystemTimeSeconds  +

    PISystemTime seconds representation (*.* s)

    +
    + +
    +
    + +
    +
    + + + + +
    enum PIConsole::Alignment
    +
    + +

    Column labels alignment.

    + + + + +
    Enumerator
    Nothing  +

    No alignment

    +
    Left  +

    Labels align left and variables align left

    +
    Right  +

    Labels align right and variables align left

    +
    + +
    +
    +

    Member Function Documentation

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void PIConsole::addVariable (const PIStringname,
    const PIProtocolptr,
    int col = 1,
    PIFlags< PIConsole::Formatformat = PIConsole::Normal 
    )
    +
    + +

    Add to current tab to column "column" variable with label "name", pointer "ptr" and format "format".

    +

    This function add to column "column" next lines:

      +
    • "protocol <name>"
    • +
    • "Rec - receiverDeviceName": PIProtocol::receiverDeviceState
    • +
    • "Send - senderDeviceName": PIProtocol::senderDeviceState
    • +
    • "Received count": PIProtocol::receiveCount
    • +
    • "Invalid count": PIProtocol::wrongCount
    • +
    • "Missed count": PIProtocol::missedCount
    • +
    • "Sended count": PIProtocol::sendCount
    • +
    • "Immediate Frequency, Hz": PIProtocol::immediateFrequency
    • +
    • "Integral Frequency, Hz": PIProtocol::integralFrequency
    • +
    • "Receive speed": PIProtocol::receiveSpeed
    • +
    • "Send speed": PIProtocol::sendSpeed
    • +
    • "Receiver history size": PIProtocol::receiverHistorySize
    • +
    • "Sender history size": PIProtocol::senderHistorySize
    • +
    • "Disconnect Timeout, s": PIProtocol::disconnectTimeout
    • +
    • "Quality": PIProtocol::quality
    • +
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void PIConsole::addVariable (const PIStringname,
    const PIDiagnosticsptr,
    int col = 1,
    PIFlags< PIConsole::Formatformat = PIConsole::Normal 
    )
    +
    + +

    Add to current tab to column "column" variable with label "name", pointer "ptr" and format "format".

    +

    This function add to column "column" next lines:

    + +
    +
    +
    +
    + + + + diff --git a/pip/doc/html/class_p_i_console.js b/pip/doc/html/class_p_i_console.js new file mode 100644 index 0000000..917077d --- /dev/null +++ b/pip/doc/html/class_p_i_console.js @@ -0,0 +1,84 @@ +var class_p_i_console = +[ + [ "Format", "class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579", [ + [ "Normal", "class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579a045a7b958509dd5c127a6f8abbbe9128", null ], + [ "Bold", "class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579a78328fa8e10b199523d20b782d6fbc5b", null ], + [ "Underline", "class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579a46936e800bd76246b08d3093cd7b31c9", null ], + [ "Blink", "class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579a91eace12e9f59cb0ad6a6b90adb0aac6", null ], + [ "Inverse", "class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579a0f6700676e0545499b1c669052c07031", null ], + [ "Black", "class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579a3328cd4af8268e8b4ebf26ce8c230862", null ], + [ "Red", "class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579aa9e6d56193eac85df4a54bf3ef53b7b7", null ], + [ "Green", "class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579ae959969cfc547e2f48dbe3b51056d931", null ], + [ "Yellow", "class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579a8fcb095f1009154392e0f0c966d838f6", null ], + [ "Blue", "class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579a4bba54e63c8d31705a555f43c931bb98", null ], + [ "Magenta", "class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579a839902f788d727e5bfbd56c961cb7504", null ], + [ "Cyan", "class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579afad1b218983aa1f775655a30175333af", null ], + [ "White", "class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579a754394a1f1591ca656e42292e2e6ccc9", null ], + [ "BackBlack", "class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579a92a8473a8b9197c3a1c13900cc9711b2", null ], + [ "BackRed", "class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579aa2c0f1e23fb2d5e39f38f768a73c8522", null ], + [ "BackGreen", "class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579a2aca7018a5a425d1a51981e6753d2b9c", null ], + [ "BackYellow", "class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579a8bbeb50121d330e27b27f7a94731a3b5", null ], + [ "BackBlue", "class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579a0b579bc45bf31df6bad7baa3b0e1ce75", null ], + [ "BackMagenta", "class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579af98223da559470901eee2a9721647846", null ], + [ "BackCyan", "class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579ab34059af712560e14f4720fb33b1ef07", null ], + [ "BackWhite", "class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579ab70bbc35133c405030513695fda472bb", null ], + [ "Dec", "class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579a1a14373d10e03ed37c42f17558d6e412", null ], + [ "Hex", "class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579aec17c3cf86a35f0a78c1add7ddd4ce3c", null ], + [ "Oct", "class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579a6c18590e7ad6b405aee530a187231c77", null ], + [ "Bin", "class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579a35a7fc42f3436533338bd2bfa096afdb", null ], + [ "Scientific", "class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579a138319e4d812b10ef0e49f4c1464dde4", null ], + [ "SystemTimeSplit", "class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579a4d54e68db54f775ca7e17b307c4f7787", null ], + [ "SystemTimeSeconds", "class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579a412b529aeecff9f150ee7d42c32006f2", null ] + ] ], + [ "Alignment", "class_p_i_console.html#a9185c02e667ead89d506730e6fdc1f5d", [ + [ "Nothing", "class_p_i_console.html#a9185c02e667ead89d506730e6fdc1f5da83cb297e42b088515171ecb83f904bb5", null ], + [ "Left", "class_p_i_console.html#a9185c02e667ead89d506730e6fdc1f5da8f1af835c1d302642a0f5d288e7ce6a2", null ], + [ "Right", "class_p_i_console.html#a9185c02e667ead89d506730e6fdc1f5da5ba51ab04a9644828f79a9e95dfe4382", null ] + ] ], + [ "PIConsole", "class_p_i_console.html#ab37989414cad3b54ddd8ab8d2879e386", null ], + [ "addString", "class_p_i_console.html#a8274edea626b4281fe7de309ee8d1b38", null ], + [ "addVariable", "class_p_i_console.html#a9ae57b8ab5c4f8538633bf8dc8a15e67", null ], + [ "addVariable", "class_p_i_console.html#a6389f65b8835a38a60bf5ee2f2a43712", null ], + [ "addVariable", "class_p_i_console.html#a3b06530b893c79d11cf875419a834cd0", null ], + [ "addVariable", "class_p_i_console.html#ac53481fa1109e55fc1a6b00c9d963f90", null ], + [ "addVariable", "class_p_i_console.html#aee3ced19ce3abda81a1afd1164a1561d", null ], + [ "addVariable", "class_p_i_console.html#a27b939e27bc97c10eab59411de9fb526", null ], + [ "addVariable", "class_p_i_console.html#a7d7ff34b90be97a0b9cab63419ee26c2", null ], + [ "addVariable", "class_p_i_console.html#afa2c5fbf172ba93197b9b2f5c6653d71", null ], + [ "addVariable", "class_p_i_console.html#a2326d0f1a333927d2754830cea35a4ac", null ], + [ "addVariable", "class_p_i_console.html#a5206ecd0cb4d5c17d2f8cece88cbee4e", null ], + [ "addVariable", "class_p_i_console.html#aed85986ef4d195ec22641fc723bc7422", null ], + [ "addVariable", "class_p_i_console.html#a4a5ef27f2e7dbc0b3a657f543e21e580", null ], + [ "addVariable", "class_p_i_console.html#aac91f944400e09e1d07c5d6862691078", null ], + [ "addVariable", "class_p_i_console.html#ac92363d6e3aff60b8b27215fce4f7cbb", null ], + [ "addVariable", "class_p_i_console.html#acf8668140c47e5ee0ac2fc100ebcaf46", null ], + [ "addVariable", "class_p_i_console.html#a8a71fccd3ad2e19b13045ef6e90d9546", null ], + [ "addVariable", "class_p_i_console.html#a36d5583199e73951f650f58dfc9bc0f3", null ], + [ "addBitVariable", "class_p_i_console.html#afafc641d9512134155c491145e8db6dd", null ], + [ "addEmptyLine", "class_p_i_console.html#affc3de9ad31867e4e8002e77c96e8553", null ], + [ "tabsCount", "class_p_i_console.html#a6e1080918dd4d36347fe8e47318a5761", null ], + [ "currentTab", "class_p_i_console.html#a3261d123b00905e06226b828d7920001", null ], + [ "addTab", "class_p_i_console.html#a119860d9253d00a3fe815bc124076577", null ], + [ "removeTab", "class_p_i_console.html#aa3766f5453f3bb6a90e3e890133b0549", null ], + [ "removeTab", "class_p_i_console.html#a09b921eabc7dfb78527916927d67caf4", null ], + [ "setTab", "class_p_i_console.html#afbe2d5ae830d8096e8506114221789f0", null ], + [ "setTab", "class_p_i_console.html#ae4214666e5ae3752189a61d76c73b7ab", null ], + [ "setTabBindKey", "class_p_i_console.html#ae2abf8fd9b17252e057852fa912565e9", null ], + [ "setTabBindKey", "class_p_i_console.html#ad0826c4d2e8a1e4a1ddff1ad4df355b6", null ], + [ "clearTabs", "class_p_i_console.html#aa098e8d9cdc197ce608ff8cd617bab63", null ], + [ "addCustomStatus", "class_p_i_console.html#adec15a8f25d9236622f8868980cd0772", null ], + [ "clearCustomStatus", "class_p_i_console.html#ac2fa6d3e2f715e709c24c557847d0a1c", null ], + [ "defaultAlignment", "class_p_i_console.html#a4e399e64818521932243ee8be392c649", null ], + [ "setDefaultAlignment", "class_p_i_console.html#ad5bdaa30246c6165fe87bdc3539937f0", null ], + [ "setColumnAlignment", "class_p_i_console.html#a44b8aeea4216e6b514d468f3fcc7e19b", null ], + [ "setColumnAlignmentToAll", "class_p_i_console.html#a6c0653f78a4c22a7de20656c150d4d7d", null ], + [ "enableExitCapture", "class_p_i_console.html#a54455e3349316eb52679b8d1f9b85f78", null ], + [ "disableExitCapture", "class_p_i_console.html#af7d77f3929c0c0394b76274472141080", null ], + [ "exitCaptured", "class_p_i_console.html#af31cb35a92c0758c33c73a227a096d04", null ], + [ "exitKey", "class_p_i_console.html#a9c5a216c60e5b9c1bdf5eda25a346594", null ], + [ "clearVariables", "class_p_i_console.html#aec823e3d7ef7045298efbab12489b239", null ], + [ "waitForFinish", "class_p_i_console.html#ad0a588d352faf1bb39cba0bea8b8d0c0", null ], + [ "start", "class_p_i_console.html#a3d5a998c901b37e73c105754135de73f", null ], + [ "stop", "class_p_i_console.html#afd53d4f09d0bad958f0d2073f56d47c5", null ], + [ "keyPressed", "class_p_i_console.html#acb4dd34fc69180a9ba8bca4816bca130", null ] +]; \ No newline at end of file diff --git a/pip/doc/html/class_p_i_console__inherit__graph.map b/pip/doc/html/class_p_i_console__inherit__graph.map new file mode 100644 index 0000000..4473084 --- /dev/null +++ b/pip/doc/html/class_p_i_console__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/pip/doc/html/class_p_i_console__inherit__graph.md5 b/pip/doc/html/class_p_i_console__inherit__graph.md5 new file mode 100644 index 0000000..146bf05 --- /dev/null +++ b/pip/doc/html/class_p_i_console__inherit__graph.md5 @@ -0,0 +1 @@ +95bfee6ef9d573f96786bedc5b496865 \ No newline at end of file diff --git a/pip/doc/html/class_p_i_console__inherit__graph.svg b/pip/doc/html/class_p_i_console__inherit__graph.svg new file mode 100644 index 0000000..5bed2e5 --- /dev/null +++ b/pip/doc/html/class_p_i_console__inherit__graph.svg @@ -0,0 +1,44 @@ + + + + + + +PIConsole + + +Node1 + +PIConsole + + +Node2 + + +PIThread + + + + +Node2->Node1 + + + + +Node3 + + +PIObject + + + + +Node3->Node2 + + + + + diff --git a/pip/doc/html/class_p_i_cout-members.html b/pip/doc/html/class_p_i_cout-members.html new file mode 100644 index 0000000..7faca5e --- /dev/null +++ b/pip/doc/html/class_p_i_cout-members.html @@ -0,0 +1,158 @@ + + + + + + +PIP: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    PICout Member List
    +
    +
    + +

    This is the complete list of members for PICout, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    newLine()PICout
    operator<<(const char *v)PICout
    operator<<(const string &v)PICout
    operator<<(const bool v)PICout
    operator<<(const char v)PICout
    operator<<(const uchar v)PICout
    operator<<(const short v)PICout
    operator<<(const ushort v)PICout
    operator<<(const int v)PICout
    operator<<(const uint v)PICout
    operator<<(const long v)PICout
    operator<<(const ulong v)PICout
    operator<<(const llong v)PICout
    operator<<(const ullong v)PICout
    operator<<(const float v)PICout
    operator<<(const double v)PICout
    operator<<(const void *v)PICout
    operator<<(const PIObject *v)PICout
    operator<<(const PICoutSpecialChar v)PICout
    operator<<(const PIFlags< PICoutFormat > v)PICoutinline
    operator<<(const PICoutFormat v)PICoutinline
    operator<<(const PICoutAction v)PICout
    operator<<(PICout s, const PIString &v)PICoutrelated
    operator<<(PICout s, const PIStringList &v)PICoutrelated
    PICout(PIFlags< PICoutControl > controls=AddSpaces|AddNewLine)PICout
    quote()PICout
    restoreControl()PICoutinline
    saveControl()PICoutinline
    setControl(PICoutControl c, bool on=true)PICoutinline
    setControl(PICoutControls c, bool save=false)PICoutinline
    space()PICout
    +
    + + + + diff --git a/pip/doc/html/class_p_i_cout.html b/pip/doc/html/class_p_i_cout.html new file mode 100644 index 0000000..370b4ab --- /dev/null +++ b/pip/doc/html/class_p_i_cout.html @@ -0,0 +1,426 @@ + + + + + + +PIP: PICout Class Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    + +
    +
    PICout Class Reference
    +
    +
    + +

    Class for formatted output similar std::cout. + More...

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    PICout (PIFlags< PICoutControl > controls=AddSpaces|AddNewLine)
     Default constructor with default features (AddSpaces and AddNewLine)
     
    +PICout operator<< (const char *v)
     Output operator for strings with "const char * " type.
     
    +PICout operator<< (const string &v)
     Output operator for strings with "std::string" type.
     
    +PICout operator<< (const bool v)
     Output operator for boolean values.
     
    +PICout operator<< (const char v)
     Output operator for "char" values.
     
    +PICout operator<< (const uchar v)
     Output operator for "unsigned char" values.
     
    +PICout operator<< (const short v)
     Output operator for "short" values.
     
    +PICout operator<< (const ushort v)
     Output operator for "unsigned short" values.
     
    +PICout operator<< (const int v)
     Output operator for "int" values.
     
    +PICout operator<< (const uint v)
     Output operator for "unsigned int" values.
     
    +PICout operator<< (const long v)
     Output operator for "long" values.
     
    +PICout operator<< (const ulong v)
     Output operator for "unsigned long" values.
     
    +PICout operator<< (const llong v)
     Output operator for "long long" values.
     
    +PICout operator<< (const ullong v)
     Output operator for "unsigned long long" values.
     
    +PICout operator<< (const float v)
     Output operator for "float" values.
     
    +PICout operator<< (const double v)
     Output operator for "double" values.
     
    +PICout operator<< (const void *v)
     Output operator for pointers.
     
    +PICout operator<< (const PIObject *v)
     Output operator for PIObject and ancestors.
     
    +PICout operator<< (const PICoutSpecialChar v)
     Output operator for PICoutSpecialChar values.
     
    +PICout operator<< (const PIFlags< PICoutFormat > v)
     Output operator for PIFlags<PICoutFormat> values.
     
    +PICout operator<< (const PICoutFormat v)
     Output operator for PICoutFormat values.
     
    PICout operator<< (const PICoutAction v)
     Do some action. More...
     
    +PICoutsetControl (PICoutControl c, bool on=true)
     Set control flag "c" is "on" state.
     
    +PICoutsetControl (PICoutControls c, bool save=false)
     Set control flags "c" and if "save" exec saveControl()
     
    PICoutsaveControl ()
     Save control flags to internal stack. More...
     
    PICoutrestoreControl ()
     Restore control flags from internal stack. More...
     
    PICoutspace ()
     Conditional put space character to output. More...
     
    PICoutquote ()
     Conditional put quote character to output. More...
     
    PICoutnewLine ()
     Conditional put new line character to output. More...
     
    + + + + + + + + +

    +Related Functions

    (Note that these are not member functions.)

    +
    +PICout operator<< (PICout s, const PIString &v)
     Output operator to PICout.
     
    +PICout operator<< (PICout s, const PIStringList &v)
     Output operator to PICout.
     
    +

    Detailed Description

    +

    Class for formatted output similar std::cout.

    +

    +Synopsis

    +

    This class provide many stream operators for output with some features. Output to PICout is thread-sequential, i.e. doesn`t mixed from parallel threads.

    +

    +Features

    +
      +
    • insertion spaces between entries
    • +
    • insertion new line at the end of output
    • +
    • strings are quoted
    • +
    • custom output operator can be easily written
    • +
    +

    +Usage

    +
    int a = 10, b = 32, c = 11;
    +
    piCout << a << Hex << b << Bin << c;
    +
    // 10 20 1011
    +
    +
    piCout << "this" << "is" << Green << "green" << Default << "word";
    +
    // this is green word
    +
    +
    PICout(AddSpaces | AddNewLine | AddQuotes) << Tab << "tab and" << "quotes";
    +
    // "tab and" "quotes"
    +

    +Writing your own output operator

    +
    inline PICout operator <<(PICout s, const PIByteArray & ba) {
    +
    s.space(); // insert space after previous output
    +
    s.quote(); // ONLY if you want to quoted your type
    +
    s.setControl(0, true); // clear all features and
    +
    // save them to stack,
    +
    // now it`s behavior similar to std::cout
    +
    +
    // your output
    +
    for (uint i = 0; i < ba.size(); ++i)
    +
    s << ba[i];
    +
    +
    s.restoreControl(); // restore features from stack
    +
    s.quote(); // ONLY if you want to quoted your type
    +
    return s;
    +
    }
    +

    Member Function Documentation

    + +
    +
    + + + + + + + + +
    PICout PICout::operator<< (const PICoutAction v)
    +
    + +

    Do some action.

    +

    TODO !!!

    + +
    +
    + +
    +
    + + + + + +
    + + + + + + + +
    PICout& PICout::saveControl ()
    +
    +inline
    +
    + +

    Save control flags to internal stack.

    +
    See also
    restoreControl()
    + +
    +
    + +
    +
    + + + + + +
    + + + + + + + +
    PICout& PICout::restoreControl ()
    +
    +inline
    +
    + +

    Restore control flags from internal stack.

    +
    See also
    saveControl()
    + +
    +
    + +
    +
    + + + + + + + +
    PICout & PICout::space ()
    +
    + +

    Conditional put space character to output.

    +

    If it is not a first output and control AddSpaces is set space character is put

    See also
    quote(), newLine()
    + +
    +
    + +
    +
    + + + + + + + +
    PICout & PICout::quote ()
    +
    + +

    Conditional put quote character to output.

    +

    If control AddQuotes is set quote character is put

    See also
    space(), newLine()
    + +
    +
    + +
    +
    + + + + + + + +
    PICout & PICout::newLine ()
    +
    + +

    Conditional put new line character to output.

    +

    If control AddNewLine is set new line character is put

    See also
    space(), quote()
    + +
    +
    +
    +
    + + + + diff --git a/pip/doc/html/class_p_i_cout.js b/pip/doc/html/class_p_i_cout.js new file mode 100644 index 0000000..93603e7 --- /dev/null +++ b/pip/doc/html/class_p_i_cout.js @@ -0,0 +1,34 @@ +var class_p_i_cout = +[ + [ "PICout", "class_p_i_cout.html#afa5f5b5b95a383a52f286fa80173a77c", null ], + [ "operator<<", "class_p_i_cout.html#ae9dacedd8cc32af047fe2cc7dab95e62", null ], + [ "operator<<", "class_p_i_cout.html#ac260e89c51ed7c18c73f11d08b6d1207", null ], + [ "operator<<", "class_p_i_cout.html#a5aee745aa969f71e82c72dc41dae2b27", null ], + [ "operator<<", "class_p_i_cout.html#a0dbe790c14f97691466e81116cce00bf", null ], + [ "operator<<", "class_p_i_cout.html#ae6cb3028a7d26e39b64fb4e628eb39d9", null ], + [ "operator<<", "class_p_i_cout.html#a4675a5d48fea56b778dac463d86cd7ac", null ], + [ "operator<<", "class_p_i_cout.html#a5a4a6c12e79d161a4e44b774ce5e66f5", null ], + [ "operator<<", "class_p_i_cout.html#a013582c7c4e95714fb10daccf43f5ca3", null ], + [ "operator<<", "class_p_i_cout.html#ac8aa9b0501f6e9c9053ec3af22834fad", null ], + [ "operator<<", "class_p_i_cout.html#ae4a6ca6b6c5df3862517b5a2a7e33b55", null ], + [ "operator<<", "class_p_i_cout.html#ae93cccac30d14ba6102c3f0a1e024f7c", null ], + [ "operator<<", "class_p_i_cout.html#af7a07e6abeacd3482d7195d86791465e", null ], + [ "operator<<", "class_p_i_cout.html#a5d9d1a68372dbafd71e388353df51dec", null ], + [ "operator<<", "class_p_i_cout.html#aab536506458cbb6310588c4f80863756", null ], + [ "operator<<", "class_p_i_cout.html#a31664b00b01429c5f58328d5040954d2", null ], + [ "operator<<", "class_p_i_cout.html#a92a5a13c4cb2ed1b5a72d06c59b266c7", null ], + [ "operator<<", "class_p_i_cout.html#a1394f484e833da6ccb460b58914edfd0", null ], + [ "operator<<", "class_p_i_cout.html#ae658e35cc785d1d3ddc17d1b10e7283a", null ], + [ "operator<<", "class_p_i_cout.html#a356e3ae514df581ddb87bb5f10291f53", null ], + [ "operator<<", "class_p_i_cout.html#a295b2d98053cf976d5c828fd04cee60c", null ], + [ "operator<<", "class_p_i_cout.html#a5dfbca3eb4f732919abc24f1d45987da", null ], + [ "setControl", "class_p_i_cout.html#a5b6614dddc73b36883222e31fda93bf2", null ], + [ "setControl", "class_p_i_cout.html#a39ac735489b5deed01f0d71bfc3a6506", null ], + [ "saveControl", "class_p_i_cout.html#afb789d3710c4bbb56a92e4815bb8fa2b", null ], + [ "restoreControl", "class_p_i_cout.html#a6d6689f35644fba314420d1c218982f1", null ], + [ "space", "class_p_i_cout.html#a3ca9fbac2890b6385fa47dc8c6ab189b", null ], + [ "quote", "class_p_i_cout.html#a95965e197340e6ebe30b84a89ccc4a71", null ], + [ "newLine", "class_p_i_cout.html#a50a7d52c6670f5e693cffd30d565c1af", null ], + [ "operator<<", "class_p_i_cout.html#ab789440b8ebd894dfd628161254f057a", null ], + [ "operator<<", "class_p_i_cout.html#a169bfa237f50a26895592fe63e2bccf1", null ] +]; \ No newline at end of file diff --git a/pip/doc/html/class_p_i_diagnostics-members.html b/pip/doc/html/class_p_i_diagnostics-members.html new file mode 100644 index 0000000..1d5c41c --- /dev/null +++ b/pip/doc/html/class_p_i_diagnostics-members.html @@ -0,0 +1,246 @@ + + + + + + +PIP: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    PIDiagnostics Member List
    +
    +
    + +

    This is the complete list of members for PIDiagnostics, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    addDelimiter(int delim, TimerEvent slot=0)PITimerinlineprivate
    Average enum valuePIDiagnostics
    Bad enum valuePIDiagnostics
    className() const PIObjectinlineprivatevirtual
    clearDelimiters()PITimerinlineprivate
    CONNECTPIObjectrelated
    CONNECT0PIObjectrelated
    CONNECT1PIObjectrelated
    CONNECT2PIObjectrelated
    CONNECT3PIObjectrelated
    CONNECT4PIObjectrelated
    CONNECTUPIObjectrelated
    data() const PITimerinlineprivate
    debug() const PIObjectinlineprivate
    DISCONNECTPIObjectrelated
    DISCONNECT0PIObjectrelated
    DISCONNECT1PIObjectrelated
    DISCONNECT2PIObjectrelated
    DISCONNECT3PIObjectrelated
    DISCONNECT4PIObjectrelated
    disconnectTimeout() const PIDiagnosticsinline
    emitter() const PIObjectinlineprivate
    EVENTPIObjectrelated
    EVENT0PIObjectrelated
    EVENT1PIObjectrelated
    EVENT2PIObjectrelated
    EVENT3PIObjectrelated
    EVENT4PIObjectrelated
    EVENT_HANDLERPIObjectrelated
    EVENT_HANDLER0PIObjectrelated
    EVENT_HANDLER1PIObjectrelated
    EVENT_HANDLER2PIObjectrelated
    EVENT_HANDLER3PIObjectrelated
    EVENT_HANDLER4PIObjectrelated
    EVENT_VHANDLERPIObjectrelated
    EVENT_VHANDLER0PIObjectrelated
    EVENT_VHANDLER1PIObjectrelated
    EVENT_VHANDLER2PIObjectrelated
    EVENT_VHANDLER3PIObjectrelated
    EVENT_VHANDLER4PIObjectrelated
    Failure enum valuePIDiagnostics
    findByName(const PIString &name)PIObjectinlineprivatestatic
    Good enum valuePIDiagnostics
    HANDLERPIObjectrelated
    immediateFrequency() const PIDiagnosticsinline
    immediateFrequency_ptr() const PIDiagnosticsinline
    implementation() const PITimerinlineprivate
    integralFrequency() const PIDiagnosticsinline
    integralFrequency_ptr() const PIDiagnosticsinline
    interval() const PITimerinlineprivate
    isPropertyExists(const PIString &name) const PIObjectinlineprivate
    isRunning() const PITimerinlineprivate
    isStopped() const PITimerinlineprivate
    name() const PIObjectinlineprivate
    piCoutObjPIObjectrelated
    PIDiagnostics(bool start_=true)PIDiagnostics
    piDisconnect(PIObject *src, const PIString &sig)PIObjectprivatestatic
    piDisconnect(PIObject *src)PIObjectprivatestatic
    PIOBJECTPIObjectrelated
    PIObject(const PIString &name=PIString())PIObjectprivate
    PIOBJECT_PARENTPIObjectrelated
    PITimer()PITimerexplicitprivate
    PITimer(TimerImplementation ti)PITimerexplicitprivate
    PITimer(TimerEvent slot, void *data=0, TimerImplementation ti=Thread)PITimerexplicitprivate
    Pool enum valuePITimerprivate
    properties() const PIObjectinlineprivate
    propertiesCount() const PIObjectinlineprivate
    property(const PIString &name) const PIObjectinlineprivate
    quality() const PIDiagnosticsinline
    Quality enum namePIDiagnostics
    quality_ptr() const PIDiagnosticsinline
    qualityChanged(PIDiagnostics::Quality new_quality, PIDiagnostics::Quality old_quality)PIDiagnostics
    receiveBytesPerSec() const PIDiagnosticsinline
    receiveBytesPerSec_ptr() const PIDiagnosticsinline
    receiveCount() const PIDiagnosticsinline
    receiveCount_ptr() const PIDiagnosticsinline
    receiveCountPerSec() const PIDiagnosticsinline
    receiveCountPerSec_ptr() const PIDiagnosticsinline
    received(int size, bool correct)PIDiagnostics
    receiveSpeed() const PIDiagnosticsinline
    receiveSpeed_ptr() const PIDiagnosticsinline
    removeDelimiter(int delim)PITimerinlineprivate
    removeDelimiter(TimerEvent slot)PITimerinlineprivate
    removeDelimiter(int delim, TimerEvent slot)PITimerinlineprivate
    reset()PIDiagnostics
    restart()PITimerinlineprivate
    sendBytesPerSec() const PIDiagnosticsinline
    sendBytesPerSec_ptr() const PIDiagnosticsinline
    sendCount() const PIDiagnosticsinline
    sendCount_ptr() const PIDiagnosticsinline
    sendCountPerSec() const PIDiagnosticsinline
    sendCountPerSec_ptr() const PIDiagnosticsinline
    sended(int size)PIDiagnostics
    sendSpeed() const PIDiagnosticsinline
    sendSpeed_ptr() const PIDiagnosticsinline
    setData(void *data_)PITimerinlineprivate
    setDebug(bool debug)PIObjectinlineprivate
    setDisconnectTimeout(float s)PIDiagnosticsinline
    setInterval(double ms)PITimerinlineprivate
    setName(const PIString &name)PIObjectinlineprivate
    setProperty(const PIString &name, const PIVariant &value)PIObjectinlineprivate
    setSlot(TimerEvent slot)PITimerinlineprivate
    start(double msecs)PIDiagnosticsinline
    PITimer::start(int interval_ms_i)PITimerinlineprivate
    stop()PITimerinlineprivate
    superClassName() const PIObjectinlineprivatevirtual
    Thread enum valuePITimerprivate
    ThreadRT enum valuePITimerprivate
    tickEvent(void *data_, int delimiter)PITimerprivate
    TimerImplementation enum namePITimerprivate
    Unknown enum valuePIDiagnostics
    WEAK_CONNECTPIObjectrelated
    WEAK_CONNECT0PIObjectrelated
    WEAK_CONNECT1PIObjectrelated
    WEAK_CONNECT2PIObjectrelated
    WEAK_CONNECT3PIObjectrelated
    WEAK_CONNECT4PIObjectrelated
    wrongCount() const PIDiagnosticsinline
    wrongCount_ptr() const PIDiagnosticsinline
    +
    + + + + diff --git a/pip/doc/html/class_p_i_diagnostics.html b/pip/doc/html/class_p_i_diagnostics.html new file mode 100644 index 0000000..ad1b459 --- /dev/null +++ b/pip/doc/html/class_p_i_diagnostics.html @@ -0,0 +1,497 @@ + + + + + + +PIP: PIDiagnostics Class Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    + +
    +
    PIDiagnostics Class Reference
    +
    +
    + +

    Connection quality diagnostics. + More...

    +
    + + Inheritance diagram for PIDiagnostics:
    +
    +
    + + + + + + +

    +Public Types

    enum  Quality {
    +  Unknown = 1, +Failure = 2, +Bad = 3, +Average = 4, +
    +  Good = 5 +
    + }
     Connection quality. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    PIDiagnostics (bool start_=true)
     Constructs an empty diagnostics and if "strat_" start it.
     
    +float disconnectTimeout () const
     Returns period of full disconnect in seconds and period of averaging frequency.
     
    +void setDisconnectTimeout (float s)
     Returns period of full disconnect in seconds and period of averaging frequency.
     
    +float immediateFrequency () const
     Returns immediate receive frequency, packets/s.
     
    +float integralFrequency () const
     Returns integral receive frequency for disconnectTimeout() seconds, packets/s.
     
    +ullong receiveCountPerSec () const
     Returns correct received packets per second.
     
    +ullong sendCountPerSec () const
     Returns sended packets per second.
     
    +ullong receiveBytesPerSec () const
     Returns correct received bytes per second.
     
    +ullong sendBytesPerSec () const
     Returns sended bytes per second.
     
    +ullong receiveCount () const
     Returns overall correct received packets count.
     
    +ullong wrongCount () const
     Returns overall wrong received packets count.
     
    +ullong sendCount () const
     Returns overall sended packets count.
     
    +PIDiagnostics::Quality quality () const
     Returns connection quality.
     
    +PIString receiveSpeed () const
     Returns receive speed in format "n {B|kB|MB|GB|TB}/s".
     
    +PIString sendSpeed () const
     Returns send speed in format "n {B|kB|MB|GB|TB}/s".
     
    +const float * immediateFrequency_ptr () const
     Returns immediate receive frequency pointer, packets/s. Useful for output to PIConsole.
     
    +const float * integralFrequency_ptr () const
     Returns integral receive frequency pointer for period, packets/s. Useful for output to PIConsole.
     
    +const ullong * receiveCountPerSec_ptr () const
     Returns correct received packets per second pointer. Useful for output to PIConsole.
     
    +const ullong * sendCountPerSec_ptr () const
     Returns sended packets per second pointer. Useful for output to PIConsole.
     
    +const ullong * receiveBytesPerSec_ptr () const
     Returns correct received bytes per second pointer. Useful for output to PIConsole.
     
    +const ullong * sendBytesPerSec_ptr () const
     Returns sended bytes per second pointer. Useful for output to PIConsole.
     
    +const ullong * receiveCount_ptr () const
     Returns overall correct received packets count pointer. Useful for output to PIConsole.
     
    +const ullong * wrongCount_ptr () const
     Returns overall wrong received packets count pointer. Useful for output to PIConsole.
     
    +const ullong * sendCount_ptr () const
     Returns overall sended packets count pointer. Useful for output to PIConsole.
     
    +const int * quality_ptr () const
     Returns connection quality pointer. Useful for output to PIConsole.
     
    +const PIStringreceiveSpeed_ptr () const
     Returns receive speed pointer in format "n {B|kB|MB|GB|TB}/s". Useful for output to PIConsole.
     
    +const PIStringsendSpeed_ptr () const
     Returns send speed pointer in format "n {B|kB|MB|GB|TB}/s". Useful for output to PIConsole.
     
    + + + + + + + + + + + + + +

    +Handlers

    +void start (double msecs)
     Start diagnostics evaluations with period "msecs" milliseconds.
     
    +void reset ()
     Reset diagnostics counters.
     
    +void received (int size, bool correct)
     Notify diagnostics about "correct" corected received packet.
     
    +void sended (int size)
     Notify diagnostics about sended packet.
     
    + + + + +

    +Events

    +void qualityChanged (PIDiagnostics::Quality new_quality, PIDiagnostics::Quality old_quality)
     Raise on change receive quality from "old_quality" to "new_quality".
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Additional Inherited Members

    +

    Detailed Description

    +

    Connection quality diagnostics.

    +

    +Synopsis

    +

    This class provide abstract connection quality diagnostics and counting. You should create instance of PIDiagnostics and on packet receive call function received(), on packet send call function sended(). PIDiagnostics calculates correct, wrong and sended counters, packets per second, bytes per seconds, immediate and integral receive frequencies and receive/send speeds in human readable representation. There statistics are calculates one time per period, by default 1 second. To calculate them you should start PIDiagnostics with function start() or pass true to constructor.

    +

    Member Enumeration Documentation

    + +
    +
    + + + + +
    enum PIDiagnostics::Quality
    +
    + +

    Connection quality.

    + + + + + + +
    Enumerator
    Unknown  +

    Unknown, no one packet received yet

    +
    Failure  +

    No connection, no one correct packet received for last period

    +
    Bad  +

    Bad connection, correct packets received <= 20%

    +
    Average  +

    Average connection, correct packets received > 20% and <= 80%

    +
    Good  +

    Good connection, correct packets received > 80%

    +
    + +
    +
    +
    +
    + + + + diff --git a/pip/doc/html/class_p_i_diagnostics.js b/pip/doc/html/class_p_i_diagnostics.js new file mode 100644 index 0000000..424531e --- /dev/null +++ b/pip/doc/html/class_p_i_diagnostics.js @@ -0,0 +1,42 @@ +var class_p_i_diagnostics = +[ + [ "Quality", "class_p_i_diagnostics.html#aabf8f59b49ab62435e220106f204712f", [ + [ "Unknown", "class_p_i_diagnostics.html#aabf8f59b49ab62435e220106f204712fab50c35309ba981ccc60aa55f4b391976", null ], + [ "Failure", "class_p_i_diagnostics.html#aabf8f59b49ab62435e220106f204712fa7851c3092d436b72bc66b752f73b1d80", null ], + [ "Bad", "class_p_i_diagnostics.html#aabf8f59b49ab62435e220106f204712fac8268eaf57232ad3cf9b2a91ead6748b", null ], + [ "Average", "class_p_i_diagnostics.html#aabf8f59b49ab62435e220106f204712fa72a5c3ff8a8ae3e43f818db82d730b55", null ], + [ "Good", "class_p_i_diagnostics.html#aabf8f59b49ab62435e220106f204712fa65f12843d70ab8f9bc9f711e2776c169", null ] + ] ], + [ "PIDiagnostics", "class_p_i_diagnostics.html#a0ecb4332d5583be9a0c626c6ad8fc92a", null ], + [ "disconnectTimeout", "class_p_i_diagnostics.html#a58a112660b5a7545c6bb0bb1bf621822", null ], + [ "setDisconnectTimeout", "class_p_i_diagnostics.html#a54f87c6f4fc670cbc5c15129bebb3394", null ], + [ "immediateFrequency", "class_p_i_diagnostics.html#afc88d4112178d144a4e2bf116809a586", null ], + [ "integralFrequency", "class_p_i_diagnostics.html#af2bca72346e1440af8e9a225bfd2ad72", null ], + [ "receiveCountPerSec", "class_p_i_diagnostics.html#a81fa49a759f97f23b0e13992c2decd11", null ], + [ "sendCountPerSec", "class_p_i_diagnostics.html#a42f008c143eb3aeaa34350b41b471bd9", null ], + [ "receiveBytesPerSec", "class_p_i_diagnostics.html#a412a3c850f35ae690bf2ee212bace700", null ], + [ "sendBytesPerSec", "class_p_i_diagnostics.html#ad24cb17710950995f1be0cf48c150a5e", null ], + [ "receiveCount", "class_p_i_diagnostics.html#a894cb3cd2ec9a395ee217fe0573bfa74", null ], + [ "wrongCount", "class_p_i_diagnostics.html#a92a18a79947e0322f67d74c045c71682", null ], + [ "sendCount", "class_p_i_diagnostics.html#a896f8406b97fb4eee8fa5fbcd0f4cb18", null ], + [ "quality", "class_p_i_diagnostics.html#ab4b373f4d0dfaad6e25cf1d376b2d754", null ], + [ "receiveSpeed", "class_p_i_diagnostics.html#a01bf2ddc5c60e8156c8c78b49978810d", null ], + [ "sendSpeed", "class_p_i_diagnostics.html#a8fa858dfeda458616b1f5ecbab3baead", null ], + [ "immediateFrequency_ptr", "class_p_i_diagnostics.html#ae84c320f15128154968da64a185534f6", null ], + [ "integralFrequency_ptr", "class_p_i_diagnostics.html#acb226efc57b90723c6acd5f07f0e8a1c", null ], + [ "receiveCountPerSec_ptr", "class_p_i_diagnostics.html#a364f03141facee8162a66de048005807", null ], + [ "sendCountPerSec_ptr", "class_p_i_diagnostics.html#a34f3d9d9b0560da37f4e3258a2408c6c", null ], + [ "receiveBytesPerSec_ptr", "class_p_i_diagnostics.html#a3dae97db20de5a1a82559eaf872004ea", null ], + [ "sendBytesPerSec_ptr", "class_p_i_diagnostics.html#a5565c0c6c31f39144ce80c4a68dad08d", null ], + [ "receiveCount_ptr", "class_p_i_diagnostics.html#afe4a920694b84936c0fa7d07b14d1dd7", null ], + [ "wrongCount_ptr", "class_p_i_diagnostics.html#adbacd5ebed2dabee1c44f5c2cd8ce48d", null ], + [ "sendCount_ptr", "class_p_i_diagnostics.html#a6c331ad75d8802175b73c2e0f84e2368", null ], + [ "quality_ptr", "class_p_i_diagnostics.html#a4ce10a350d75352320212784193db4fb", null ], + [ "receiveSpeed_ptr", "class_p_i_diagnostics.html#aa7a24231b0008a27405a92f8f7094277", null ], + [ "sendSpeed_ptr", "class_p_i_diagnostics.html#a36ac4c15726cab43cb1a46ddfd1fc87c", null ], + [ "start", "class_p_i_diagnostics.html#a1773afb624fe79976ad9385705f24d02", null ], + [ "reset", "class_p_i_diagnostics.html#a0771a5343fcebfe427876adddae14c34", null ], + [ "received", "class_p_i_diagnostics.html#a0cedccc3d6d8dba5238ee3a0f42a74c6", null ], + [ "sended", "class_p_i_diagnostics.html#a40db151966a7c48357df5e19de20116f", null ], + [ "qualityChanged", "class_p_i_diagnostics.html#a6e0a2d483282afab237e4b1ab9f0b4a4", null ] +]; \ No newline at end of file diff --git a/pip/doc/html/class_p_i_diagnostics__inherit__graph.map b/pip/doc/html/class_p_i_diagnostics__inherit__graph.map new file mode 100644 index 0000000..819e3f0 --- /dev/null +++ b/pip/doc/html/class_p_i_diagnostics__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/pip/doc/html/class_p_i_diagnostics__inherit__graph.md5 b/pip/doc/html/class_p_i_diagnostics__inherit__graph.md5 new file mode 100644 index 0000000..111cbf4 --- /dev/null +++ b/pip/doc/html/class_p_i_diagnostics__inherit__graph.md5 @@ -0,0 +1 @@ +93d322e14a520049ba4cb515e7be2944 \ No newline at end of file diff --git a/pip/doc/html/class_p_i_diagnostics__inherit__graph.svg b/pip/doc/html/class_p_i_diagnostics__inherit__graph.svg new file mode 100644 index 0000000..95fec3f --- /dev/null +++ b/pip/doc/html/class_p_i_diagnostics__inherit__graph.svg @@ -0,0 +1,44 @@ + + + + + + +PIDiagnostics + + +Node1 + +PIDiagnostics + + +Node2 + + +PITimer + + + + +Node2->Node1 + + + + +Node3 + + +PIObject + + + + +Node3->Node2 + + + + + diff --git a/pip/doc/html/class_p_i_ethernet-members.html b/pip/doc/html/class_p_i_ethernet-members.html new file mode 100644 index 0000000..31e075d --- /dev/null +++ b/pip/doc/html/class_p_i_ethernet-members.html @@ -0,0 +1,289 @@ + + + + + + +PIP: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    PIEthernet Member List
    +
    +
    + +

    This is the complete list of members for PIEthernet, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    allAddresses()PIEthernetstatic
    Broadcast enum valuePIEthernet
    broadcastPIEthernet
    className() const PIObjectinlinevirtual
    closeDevice()PIEthernetprotectedvirtual
    configureDevice(const void *e_main, const void *e_parent=0)PIEthernetprotectedvirtual
    configureFromFullPath(const PIString &full_path)PIEthernetprotectedvirtual
    connect()PIEthernet
    connect(const PIString &ip, int port)PIEthernetinline
    connect(const PIString &ip_port)PIEthernetinline
    CONNECTPIObjectrelated
    CONNECT0PIObjectrelated
    CONNECT1PIObjectrelated
    CONNECT2PIObjectrelated
    CONNECT3PIObjectrelated
    CONNECT4PIObjectrelated
    connected()PIEthernet
    CONNECTUPIObjectrelated
    constructFullPath() const PIEthernetvirtual
    data() const PIThreadinline
    debug() const PIObjectinline
    DISCONNECTPIObjectrelated
    DISCONNECT0PIObjectrelated
    DISCONNECT1PIObjectrelated
    DISCONNECT2PIObjectrelated
    DISCONNECT3PIObjectrelated
    DISCONNECT4PIObjectrelated
    disconnected(bool withError)PIEthernet
    emitter() const PIObjectinlineprotected
    EVENTPIObjectrelated
    EVENT0PIObjectrelated
    EVENT1PIObjectrelated
    EVENT2PIObjectrelated
    EVENT3PIObjectrelated
    EVENT4PIObjectrelated
    EVENT_HANDLERPIObjectrelated
    EVENT_HANDLER0PIObjectrelated
    EVENT_HANDLER1PIObjectrelated
    EVENT_HANDLER2PIObjectrelated
    EVENT_HANDLER3PIObjectrelated
    EVENT_HANDLER4PIObjectrelated
    EVENT_VHANDLERPIObjectrelated
    EVENT_VHANDLER0PIObjectrelated
    EVENT_VHANDLER1PIObjectrelated
    EVENT_VHANDLER2PIObjectrelated
    EVENT_VHANDLER3PIObjectrelated
    EVENT_VHANDLER4PIObjectrelated
    findByName(const PIString &name)PIObjectinlinestatic
    fullPathPrefix() const PIEthernetinlineprotectedvirtual
    HANDLERPIObjectrelated
    ifActive enum valuePIEthernet
    ifBroadcast enum valuePIEthernet
    ifLoopback enum valuePIEthernet
    ifMulticast enum valuePIEthernet
    ifPTP enum valuePIEthernet
    ifRunning enum valuePIEthernet
    init()PIEthernetprotectedvirtual
    InterfaceFlag enum namePIEthernet
    InterfaceFlags typedefPIEthernet
    interfaces()PIEthernetstatic
    ipPIEthernet
    isConnected() const PIEthernetinline
    isParameterSet(PIEthernet::Parameters parameter) const PIEthernetinline
    isPropertyExists(const PIString &name) const PIObjectinline
    isRunning() const PIThreadinline
    joinMulticastGroup(const PIString &group)PIEthernet
    leaveMulticastGroup(const PIString &group)PIEthernet
    listen(bool threaded=false)PIEthernet
    listen(const PIString &ip, int port, bool threaded=false)PIEthernetinline
    listen(const PIString &ip_port, bool threaded=false)PIEthernetinline
    lock()PIThreadinline
    multicastGroups() const PIEthernetinline
    mutex()PIThreadinline
    name() const PIObjectinline
    needLockRun(bool need)PIThreadinline
    newConnection(PIEthernet *client)PIEthernet
    openDevice()PIEthernetprotectedvirtual
    parameters() const PIEthernetinline
    Parameters enum namePIEthernet
    piCoutObjPIObjectrelated
    piDisconnect(PIObject *src, const PIString &sig)PIObjectstatic
    piDisconnect(PIObject *src)PIObjectstatic
    PIEthernet()PIEthernet
    PIEthernet(Type type, const PIString &ip_port=PIString(), const PIFlags< Parameters > params=0)PIEthernet
    piHigh enum valuePIThread
    piHighest enum valuePIThread
    PIIODEVICEPIIODevicerelated
    piLow enum valuePIThread
    piLowerst enum valuePIThread
    piNormal enum valuePIThread
    PIOBJECTPIObjectrelated
    PIObject(const PIString &name=PIString())PIObject
    PIOBJECT_PARENTPIObjectrelated
    PIThread(void *data, ThreadFunc func, bool startNow=false, int loop_delay=-1)PIThread
    PIThread(bool startNow=false, int loop_delay=-1)PIThread
    portPIEthernet
    Priority enum namePIThread
    priority() const PIThreadinline
    properties() const PIObjectinline
    propertiesCount() const PIObjectinline
    property(const PIString &name) const PIObjectinline
    propertyChanged(const PIString &name)PIEthernetprotectedvirtual
    read(void *read_to, int max_size)PIEthernetvirtual
    readAddress() const PIEthernetinline
    readDeviceSetting(const PIString &name, const T &def, const PIConfig::Entry *em, const PIConfig::Entry *ep)PIIODevicerelated
    readIP() const PIEthernetinline
    readPort() const PIEthernetinline
    readTimeout() const PIEthernetinline
    received(const void *data, int size)PIEthernetinlineprotectedvirtual
    REGISTER_DEVICEPIIODevicerelated
    ReuseAddress enum valuePIEthernet
    reuseAddressPIEthernet
    send(const PIString &ip, int port, const void *data, int size, bool threaded=false)PIEthernetinline
    send(const PIString &ip_port, const void *data, int size, bool threaded=false)PIEthernetinline
    send(const void *data, int size, bool threaded=false)PIEthernetinline
    send(const PIByteArray &data, bool threaded=false)PIEthernetinline
    sendAddress() const PIEthernetinline
    sendIP() const PIEthernetinline
    sendPort() const PIEthernetinline
    setData(void *d)PIThreadinline
    setDebug(bool debug)PIObjectinline
    setName(const PIString &name)PIObjectinline
    setParameter(PIEthernet::Parameters parameter, bool on=true)PIEthernet
    setParameters(PIFlags< PIEthernet::Parameters > parameters_)PIEthernetinline
    setPriority(PIThread::Priority prior)PIThread
    setProperty(const PIString &name, const PIVariant &value)PIObjectinline
    setReadAddress(const PIString &ip, int port)PIEthernetinline
    setReadAddress(const PIString &ip_port)PIEthernetinline
    setReadIP(const PIString &ip)PIEthernetinline
    setReadPort(int port)PIEthernetinline
    setReadTimeout(double ms)PIEthernetinline
    setSendAddress(const PIString &ip, int port)PIEthernetinline
    setSendAddress(const PIString &ip_port)PIEthernetinline
    setSendIP(const PIString &ip)PIEthernetinline
    setSendPort(int port)PIEthernetinline
    setSlot(ThreadFunc func)PIThreadinline
    setWriteTimeout(double ms)PIEthernetinline
    PIThread::start(int timer_delay)PIThread
    PIThread::start(ThreadFunc func, int timer_delay)PIThreadinline
    started()PIThread
    startOnce()PIThread
    startOnce(ThreadFunc func)PIThreadinline
    stopped()PIThread
    superClassName() const PIObjectinlinevirtual
    TCP_Client enum valuePIEthernet
    TCP_Server enum valuePIEthernet
    threadedRead(uchar *readed, int size)PIIODeviceinlineprotectedvirtual
    type() const PIEthernetinline
    Type enum namePIEthernet
    UDP enum valuePIEthernet
    unlock()PIThreadinline
    waitForFinish(int timeout_msecs)PIThread
    waitForStart(int timeout_msecs)PIThread
    WEAK_CONNECTPIObjectrelated
    WEAK_CONNECT0PIObjectrelated
    WEAK_CONNECT1PIObjectrelated
    WEAK_CONNECT2PIObjectrelated
    WEAK_CONNECT3PIObjectrelated
    WEAK_CONNECT4PIObjectrelated
    write(const void *data, int max_size)PIEthernetvirtual
    write(const PIByteArray &data)PIEthernetinline
    writeTimeout() const PIEthernetinline
    +
    + + + + diff --git a/pip/doc/html/class_p_i_ethernet.html b/pip/doc/html/class_p_i_ethernet.html new file mode 100644 index 0000000..5317015 --- /dev/null +++ b/pip/doc/html/class_p_i_ethernet.html @@ -0,0 +1,880 @@ + + + + + + +PIP: PIEthernet Class Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + + +
    + +

    Ethernet device. + More...

    +
    + + Inheritance diagram for PIEthernet:
    +
    +
    + + + + + + + + + +

    +Classes

    struct  Interface
     Network interface descriptor. More...
     
    class  InterfaceList
     Array of Interface with some features. More...
     
    + + + + + + + + + + + + + + + + + +

    +Public Types

    enum  Type { UDP, +TCP_Client, +TCP_Server + }
     Type of PIEthernet. More...
     
    enum  Parameters { ReuseAddress = 0x1, +Broadcast = 0x2 + }
     Parameters of PIEthernet. More...
     
    enum  InterfaceFlag {
    +  ifActive = 0x1, +ifRunning = 0x2, +ifBroadcast = 0x4, +ifMulticast = 0x8, +
    +  ifLoopback = 0x10, +ifPTP = 0x20 +
    + }
     Flags of network interface. More...
     
    +typedef PIFlags< InterfaceFlagInterfaceFlags
     PIFlags of network interface flags
     
    - Public Types inherited from PIThread
    enum  Priority {
    +  piLowerst, +piLow, +piNormal, +piHigh, +
    +  piHighest +
    + }
     Priority of thread. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    PIEthernet ()
     Contructs UDP PIEthernet with empty read address.
     
    PIEthernet (Type type, const PIString &ip_port=PIString(), const PIFlags< Parameters > params=0)
     Contructs PIEthernet with type "type", read address "ip_port" and parameters "params".
     
    +void setReadAddress (const PIString &ip, int port)
     Set read address.
     
    +void setReadAddress (const PIString &ip_port)
     Set read address in format "i.i.i.i:p".
     
    +void setReadIP (const PIString &ip)
     Set read IP.
     
    +void setReadPort (int port)
     Set read port.
     
    +void setSendAddress (const PIString &ip, int port)
     Set send address.
     
    +void setSendAddress (const PIString &ip_port)
     Set send address in format "i.i.i.i:p".
     
    +void setSendIP (const PIString &ip)
     Set send IP.
     
    +void setSendPort (int port)
     Set send port.
     
    +PIString readAddress () const
     Returns read address in format "i.i.i.i:p".
     
    +PIString readIP () const
     Returns read IP.
     
    +int readPort () const
     Returns read port.
     
    +PIString sendAddress () const
     Returns send address in format "i.i.i.i:p".
     
    +PIString sendIP () const
     Returns send IP.
     
    +int sendPort () const
     Returns send port.
     
    +void setParameters (PIFlags< PIEthernet::Parameters > parameters_)
     Set parameters to "parameters_". You should to reopen PIEthernet to apply them.
     
    +void setParameter (PIEthernet::Parameters parameter, bool on=true)
     Set parameter "parameter" to state "on". You should to reopen PIEthernet to apply this.
     
    +bool isParameterSet (PIEthernet::Parameters parameter) const
     Returns if parameter "parameter" is set.
     
    +PIFlags< PIEthernet::Parametersparameters () const
     Returns parameters.
     
    +Type type () const
     Returns PIEthernet type.
     
    +double readTimeout () const
     Returns read timeout.
     
    +double writeTimeout () const
     Returns write timeout.
     
    +void setReadTimeout (double ms)
     Set timeout for read.
     
    +void setWriteTimeout (double ms)
     Set timeout for write.
     
    +bool joinMulticastGroup (const PIString &group)
     Join to multicast group with address "group". Use only for UDP.
     
    +bool leaveMulticastGroup (const PIString &group)
     Leave multicast group with address "group". Use only for UDP.
     
    +const PIStringListmulticastGroups () const
     Returns joined multicast groups. Use only for UDP.
     
    +bool connect ()
     Connect to TCP server with address readAddress(). Use only for TCP_Client.
     
    +bool connect (const PIString &ip, int port)
     Connect to TCP server with address "ip":"port". Use only for TCP_Client.
     
    +bool connect (const PIString &ip_port)
     Connect to TCP server with address "ip_port". Use only for TCP_Client.
     
    +bool isConnected () const
     Returns if PIEthernet connected to TCP server. Use only for TCP_Client.
     
    +bool listen (bool threaded=false)
     Start listen for incoming TCP connections on address readAddress(). Use only for TCP_Server.
     
    +bool listen (const PIString &ip, int port, bool threaded=false)
     Start listen for incoming TCP connections on address "ip":"port". Use only for TCP_Server.
     
    +bool listen (const PIString &ip_port, bool threaded=false)
     Start listen for incoming TCP connections on address "ip_port". Use only for TCP_Server.
     
    +bool send (const PIString &ip, int port, const void *data, int size, bool threaded=false)
     Send data "data" with size "size" to address "ip":"port".
     
    +bool send (const PIString &ip_port, const void *data, int size, bool threaded=false)
     Send data "data" with size "size" to address "ip_port".
     
    +bool send (const void *data, int size, bool threaded=false)
     Send data "data" with size "size" to address sendAddress() for UDP or readAddress() for TCP_Client.
     
    +bool send (const PIByteArray &data, bool threaded=false)
     Send data "data" to address sendAddress() for UDP or readAddress() for TCP_Client.
     
    +int read (void *read_to, int max_size)
     Wait for some data and read it to "read_to".
     
    +int write (const void *data, int max_size)
     Send data "read_to" with size "max_size" to address sendAddress() for UDP or readAddress() for TCP_Client.
     
    +int write (const PIByteArray &data)
     Send data "data" to address sendAddress() for UDP or readAddress() for TCP_Client.
     
    +PIString constructFullPath () const
     Reimplement to construct full unambiguous string, describes this device, default returns fullPathPrefix() + "://" + path()
     
    - Public Member Functions inherited from PIThread
    PIThread (void *data, ThreadFunc func, bool startNow=false, int loop_delay=-1)
     Contructs thread with custom data "data", external function "func" and main loop delay "loop_delay".
     
    PIThread (bool startNow=false, int loop_delay=-1)
     Contructs thread with main loop delay "loop_delay".
     
    +void setData (void *d)
     Set common data passed to external function.
     
    +void setSlot (ThreadFunc func)
     Set external function that will be executed after every run()
     
    +void setPriority (PIThread::Priority prior)
     Set priority of thread.
     
    +void * data () const
     Returns common data passed to external function.
     
    +PIThread::Priority priority () const
     Return priority of thread.
     
    +bool isRunning () const
     Return true if thread is running.
     
    +void needLockRun (bool need)
     Set necessity of lock every run with internal mutex.
     
    +PIMutexmutex ()
     Return internal mutex.
     
    bool start (int timer_delay)
     Start thread. More...
     
    bool start (ThreadFunc func, int timer_delay)
     Start thread. More...
     
    bool startOnce ()
     Start thread without internal loop. More...
     
    bool startOnce (ThreadFunc func)
     Start thread without internal loop. More...
     
    void stop (bool wait)
     Stop thread. More...
     
    void terminate ()
     Strongly stop thread. More...
     
    bool waitForStart (int timeout_msecs)
     Wait for thread start. More...
     
    bool waitForFinish (int timeout_msecs)
     Wait for thread finish. More...
     
    +void lock ()
     Lock internal mutex.
     
    +void unlock ()
     Unlock internal mutex.
     
    +void started ()
     Raise on thread start.
     
    +void stopped ()
     Raise on thread stop.
     
    - Public Member Functions inherited from PIObject
    PIObject (const PIString &name=PIString())
     Contructs PIObject with name "name".
     
    +PIString name () const
     Returns object name.
     
    +virtual const char * className () const
     Returns object class name.
     
    +virtual const char * superClassName () const
     Returns object superclass name.
     
    +bool debug () const
     Return if debug of this object is active.
     
    +void setName (const PIString &name)
     Set object name.
     
    +void setDebug (bool debug)
     Set object debug active.
     
    +const PIMap< PIString,
    +PIVariant > & 
    properties () const
     Returns properties of the object.
     
    +int propertiesCount () const
     Returns properties count of the object.
     
    +PIVariant property (const PIString &name) const
     Returns property with name "name".
     
    +void setProperty (const PIString &name, const PIVariant &value)
     Set property with name "name" to "value". If there is no such property in object it will be added.
     
    +bool isPropertyExists (const PIString &name) const
     Returns if property with name "name" exists.
     
    + + + + + + + + + + + + + + + + + +

    +Static Public Member Functions

    +static InterfaceList interfaces ()
     Returns all system network interfaces.
     
    +static PIStringList allAddresses ()
     Returns all system network IP addresses.
     
    - Static Public Member Functions inherited from PIObject
    +static void piDisconnect (PIObject *src, const PIString &sig)
     Disconnect object "src" from all connections with event name "sig".
     
    +static void piDisconnect (PIObject *src)
     Disconnect object "src" from all connections, i.e. all connections where object "src" is emitter.
     
    +static PIObjectfindByName (const PIString &name)
     Returns PIObject* with name "name" or 0, if there is no object found.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Protected Member Functions

    +void propertyChanged (const PIString &name)
     Virtual function executes after property with name "name" has been changed.
     
    +PIString fullPathPrefix () const
     Reimplement to construct full unambiguous string prefix. Creating devices by unambiguous string.
     
    +void configureFromFullPath (const PIString &full_path)
     Reimplement to configure your device with parameters of full unambiguous string. Default implementation does nothing.
     
    +bool configureDevice (const void *e_main, const void *e_parent=0)
     Reimplement to configure device from entries "e_main" and "e_parent", cast arguments to PIConfig::Entry*.
     
    +virtual void received (const void *data, int size)
     Executes when any read function was successful. Default implementation does nothing.
     
    +bool init ()
     Function executed before first openDevice() or from constructor.
     
    +bool openDevice ()
     Reimplement to open device, return value will be set to "opened_" variable.
     
    +bool closeDevice ()
     Reimplement to close device, inverse return value will be set to "opened_" variable.
     
    - Protected Member Functions inherited from PIIODevice
    +virtual bool threadedRead (uchar *readed, int size)
     Function executed when thread read some data, default implementation execute external slot "ret_func_".
     
    - Protected Member Functions inherited from PIObject
    +PIObjectemitter () const
     Returns PIObject* which has raised an event. This value is correct only in definition of some event handler.
     
    + + + + + + + + + + +

    +Events

    +void newConnection (PIEthernet *client)
     Raise on new TCP connection received.
     
    +void connected ()
     Raise if succesfull TCP connection.
     
    +void disconnected (bool withError)
     Raise if TCP connection was closed.
     
    + + + + + + + + + + + + + +

    +Configurable parameters

    +string ip
     read ip, default ""
     
    +int port
     read port, default 0
     
    +bool broadcast
     Broadcast parameter, default false.
     
    +bool reuseAddress
     ReuseAddress parameter, default false.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Additional Inherited Members

    +

    Detailed Description

    +

    Ethernet device.

    +

    +Synopsis

    +

    PIEthernet designed to work with IPv4 network by two protocols: UDP and TCP. This class allow you send and receive packets to/from another computer through network.

    +

    +IPv4

    +

    +UDP

    +

    User Datagram Protocol

    +

    +TCP

    +

    Transmission Control Protocol

    +

    Member Enumeration Documentation

    + +
    +
    + + + + +
    enum PIEthernet::Type
    +
    + +

    Type of PIEthernet.

    + + + + +
    Enumerator
    UDP  +

    UDP - User Datagram Protocol

    +
    TCP_Client  +

    TCP client - allow connection to TCP server

    +
    TCP_Server  +

    TCP server - receive connections from TCP clients

    +
    + +
    +
    + +
    +
    + + + + +
    enum PIEthernet::Parameters
    +
    + +

    Parameters of PIEthernet.

    + + + +
    Enumerator
    ReuseAddress  +

    Rebind address if there is already binded

    +
    Broadcast  +

    Broadcast send

    +
    + +
    +
    + +
    +
    + + + + +
    enum PIEthernet::InterfaceFlag
    +
    + +

    Flags of network interface.

    + + + + + + + +
    Enumerator
    ifActive  +

    Is active

    +
    ifRunning  +

    Is running

    +
    ifBroadcast  +

    Support broadcast

    +
    ifMulticast  +

    Support multicast

    +
    ifLoopback  +

    Is loopback

    +
    ifPTP  +

    Is point-to-point

    +
    + +
    +
    +
    +
    + + + + diff --git a/pip/doc/html/class_p_i_ethernet.js b/pip/doc/html/class_p_i_ethernet.js new file mode 100644 index 0000000..3face8f --- /dev/null +++ b/pip/doc/html/class_p_i_ethernet.js @@ -0,0 +1,81 @@ +var class_p_i_ethernet = +[ + [ "Interface", "struct_p_i_ethernet_1_1_interface.html", "struct_p_i_ethernet_1_1_interface" ], + [ "InterfaceList", "class_p_i_ethernet_1_1_interface_list.html", "class_p_i_ethernet_1_1_interface_list" ], + [ "InterfaceFlags", "class_p_i_ethernet.html#a26d086cc06bc533006ac4fca2c3bab33", null ], + [ "Type", "class_p_i_ethernet.html#a7abf73f51652b00af7a6198be2fa0f5c", [ + [ "UDP", "class_p_i_ethernet.html#a7abf73f51652b00af7a6198be2fa0f5ca17c6e599807b02ebaf8ab6decbd17c7b", null ], + [ "TCP_Client", "class_p_i_ethernet.html#a7abf73f51652b00af7a6198be2fa0f5ca468f2c843283f472aa48487bebc38416", null ], + [ "TCP_Server", "class_p_i_ethernet.html#a7abf73f51652b00af7a6198be2fa0f5caf2c9526cd4b694f14a0d8a4693a5b76c", null ] + ] ], + [ "Parameters", "class_p_i_ethernet.html#ae03a64ce3d7d8a1e95b2212ab2497f55", [ + [ "ReuseAddress", "class_p_i_ethernet.html#ae03a64ce3d7d8a1e95b2212ab2497f55a880142bb3993c7839af6d847beee1b34", null ], + [ "Broadcast", "class_p_i_ethernet.html#ae03a64ce3d7d8a1e95b2212ab2497f55af792cda5436050309ee9368d6ac5e6f7", null ] + ] ], + [ "InterfaceFlag", "class_p_i_ethernet.html#a2e219801b3a6c451c4aca63ad99b6374", [ + [ "ifActive", "class_p_i_ethernet.html#a2e219801b3a6c451c4aca63ad99b6374af0267ac1003b142861da4f3b13cd8eec", null ], + [ "ifRunning", "class_p_i_ethernet.html#a2e219801b3a6c451c4aca63ad99b6374a1ee5d68a37246b49b542d4e7a35129a5", null ], + [ "ifBroadcast", "class_p_i_ethernet.html#a2e219801b3a6c451c4aca63ad99b6374a968abc4436cda4f3a7d6f9d5b73a5161", null ], + [ "ifMulticast", "class_p_i_ethernet.html#a2e219801b3a6c451c4aca63ad99b6374a221bac530c63ca6256286ae46d4cf2da", null ], + [ "ifLoopback", "class_p_i_ethernet.html#a2e219801b3a6c451c4aca63ad99b6374ae5762f8e14d0d44e59d98d40a5e61d47", null ], + [ "ifPTP", "class_p_i_ethernet.html#a2e219801b3a6c451c4aca63ad99b6374a57217604fea835e4aaec5ad6f16101a5", null ] + ] ], + [ "PIEthernet", "class_p_i_ethernet.html#a6a5a47b716613af3c224d1a6909f0751", null ], + [ "PIEthernet", "class_p_i_ethernet.html#aa47c8e516e88c2cb479bd62934bf2660", null ], + [ "setReadAddress", "class_p_i_ethernet.html#a4da57633bb41886a07a0a01139022ce9", null ], + [ "setReadAddress", "class_p_i_ethernet.html#a76652ae5f391e8957c864be224d46937", null ], + [ "setReadIP", "class_p_i_ethernet.html#a281ffec154f8a604da5f8e8494740b63", null ], + [ "setReadPort", "class_p_i_ethernet.html#a13f17f1b0022b15d05879c0228bd4bba", null ], + [ "setSendAddress", "class_p_i_ethernet.html#afa66a8ec37d66b17e0d1cf52dc3f9f00", null ], + [ "setSendAddress", "class_p_i_ethernet.html#aa2f490fa2749860c2d8c58dd691e4663", null ], + [ "setSendIP", "class_p_i_ethernet.html#a5f90001f1f3b49da411421fc15256a5c", null ], + [ "setSendPort", "class_p_i_ethernet.html#a0866eb6385dda7b6988b29fedc45fc48", null ], + [ "readAddress", "class_p_i_ethernet.html#a53052c78cb24aca1e1a65d8c14e1dd7c", null ], + [ "readIP", "class_p_i_ethernet.html#aa04de0ef1cab98a7bc80cc43ca550f18", null ], + [ "readPort", "class_p_i_ethernet.html#ac93db4b6831c0304955c74c666d716f4", null ], + [ "sendAddress", "class_p_i_ethernet.html#a9f1c3496e88242f1637666a9a0ac9c86", null ], + [ "sendIP", "class_p_i_ethernet.html#aaa134cd7aecf18f151a09c497b19e0fa", null ], + [ "sendPort", "class_p_i_ethernet.html#a428a2e1cdf265f4b363240b4f8f40183", null ], + [ "setParameters", "class_p_i_ethernet.html#aa2edcd2272537c2250b4542c09e7f5d2", null ], + [ "setParameter", "class_p_i_ethernet.html#a158851a3cde91615d8feaac4edb805fb", null ], + [ "isParameterSet", "class_p_i_ethernet.html#a2131c00ba019a17cbf68c2b90fc8ec0f", null ], + [ "parameters", "class_p_i_ethernet.html#a69d52300d09db298d90ebcf02b1006d9", null ], + [ "type", "class_p_i_ethernet.html#af42a7ca0266f28bc9a389aca1618f43f", null ], + [ "readTimeout", "class_p_i_ethernet.html#a6e2bd7559bfb46784bda61f88ad055b4", null ], + [ "writeTimeout", "class_p_i_ethernet.html#a377813eb8c2b6c223a543ce8a001ef99", null ], + [ "setReadTimeout", "class_p_i_ethernet.html#a414c18f256488c471093178137526776", null ], + [ "setWriteTimeout", "class_p_i_ethernet.html#ae15ac03c2fdcab779650759b932c4660", null ], + [ "joinMulticastGroup", "class_p_i_ethernet.html#a99df6e4eccbecb0b704678b8df273dec", null ], + [ "leaveMulticastGroup", "class_p_i_ethernet.html#ac0213b620b1b79ee14dd6756bb11175c", null ], + [ "multicastGroups", "class_p_i_ethernet.html#aa7091f6fbba9f955eaba767e5a254f2e", null ], + [ "connect", "class_p_i_ethernet.html#ac09a74cc735c5e80e79b3f771a2a289c", null ], + [ "connect", "class_p_i_ethernet.html#a59b3f77ff2b8d62dacd6366a4d0879d3", null ], + [ "connect", "class_p_i_ethernet.html#a262d31ac59d8a3539899be651a6e56e7", null ], + [ "isConnected", "class_p_i_ethernet.html#a6917b5530a9b4daa4030e49892db3887", null ], + [ "listen", "class_p_i_ethernet.html#a8b756229579e309044186b776989db16", null ], + [ "listen", "class_p_i_ethernet.html#ac01db2157f9518237e915fabb360e40c", null ], + [ "listen", "class_p_i_ethernet.html#a606a5cac3eca4126a5fd6ad2f29763ab", null ], + [ "send", "class_p_i_ethernet.html#af01b2a4c78bce376ba6cfcf4dd2907c1", null ], + [ "send", "class_p_i_ethernet.html#ae8c88ae9984347a23e2d5743dec5739e", null ], + [ "send", "class_p_i_ethernet.html#a77b555fc82243b3e998cf2b008008f0f", null ], + [ "send", "class_p_i_ethernet.html#a8b42711033d1c21ea978b4c3deed0962", null ], + [ "read", "class_p_i_ethernet.html#a28595d8f88cdedf9e5572068ab116fa8", null ], + [ "write", "class_p_i_ethernet.html#a06c2ca73668cbdefc9fad4749b465ff0", null ], + [ "write", "class_p_i_ethernet.html#a9dbe618372c2ad3f5a5e02b638b2aaf1", null ], + [ "constructFullPath", "class_p_i_ethernet.html#ac4bac35deda7848e7c16e770c64b08ee", null ], + [ "newConnection", "class_p_i_ethernet.html#aae2f98a5e99d82d5520e352bb2c87a76", null ], + [ "connected", "class_p_i_ethernet.html#a80df2b0b931858d93065fa32e1682bc7", null ], + [ "disconnected", "class_p_i_ethernet.html#a0e7319514519c950760c760f605f330f", null ], + [ "propertyChanged", "class_p_i_ethernet.html#aeab32d357e600e3428a3c40db782df1e", null ], + [ "fullPathPrefix", "class_p_i_ethernet.html#ae80b62a0c52c5e0985e4fa3f39aadfea", null ], + [ "configureFromFullPath", "class_p_i_ethernet.html#a884e1f63790d644916fb54da4603ba2d", null ], + [ "configureDevice", "class_p_i_ethernet.html#af6a952895c0e75d5420b5671c929721a", null ], + [ "received", "class_p_i_ethernet.html#a2adc07e00ede7ca18bfa93e94290a9f9", null ], + [ "init", "class_p_i_ethernet.html#a9c9a8d104603bcb93b7b5f096b3105bb", null ], + [ "openDevice", "class_p_i_ethernet.html#a6168aeef5b82bb0f8befa17366f1b116", null ], + [ "closeDevice", "class_p_i_ethernet.html#a5229b3d4d175a6144a189a7204e02204", null ], + [ "ip", "class_p_i_ethernet.html#ae49bc185dedf39646ea445fd57e21283", null ], + [ "port", "class_p_i_ethernet.html#ad6b354929e62f909918d73633ea49135", null ], + [ "broadcast", "class_p_i_ethernet.html#abd3b6f9ba04b899316f8bd7067ec03e7", null ], + [ "reuseAddress", "class_p_i_ethernet.html#a079e3664394cae2bd1a7981bbfd580ee", null ] +]; \ No newline at end of file diff --git a/pip/doc/html/class_p_i_ethernet_1_1_interface_list-members.html b/pip/doc/html/class_p_i_ethernet_1_1_interface_list-members.html new file mode 100644 index 0000000..fcac3f0 --- /dev/null +++ b/pip/doc/html/class_p_i_ethernet_1_1_interface_list-members.html @@ -0,0 +1,159 @@ + + + + + + +PIP: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    PIEthernet::InterfaceList Member List
    +
    +
    + +

    This is the complete list of members for PIEthernet::InterfaceList, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    back()PIVector< PIEthernet::Interface >inline
    back() constPIVector< PIEthernet::Interface >inline
    clear()PIVector< PIEthernet::Interface >inline
    compare_func(const PIEthernet::Interface *t0, const PIEthernet::Interface *t1)PIVector< PIEthernet::Interface >inlinestatic
    contains(const PIEthernet::Interface &v) constPIVector< PIEthernet::Interface >inline
    enlarge(llong piv_size)PIVector< PIEthernet::Interface >inline
    etries(const PIEthernet::Interface &v) constPIVector< PIEthernet::Interface >inline
    fill(const PIEthernet::Interface &f=PIEthernet::Interface())PIVector< PIEthernet::Interface >inline
    front()PIVector< PIEthernet::Interface >inline
    front() constPIVector< PIEthernet::Interface >inline
    getByAddress(const PIString &address) const PIEthernet::InterfaceListinline
    getByIndex(int index) const PIEthernet::InterfaceListinline
    getByName(const PIString &name) const PIEthernet::InterfaceListinline
    getLoopback() const PIEthernet::InterfaceListinline
    isEmpty() constPIVector< PIEthernet::Interface >inline
    operator!=(const PIVector< PIEthernet::Interface > &t) constPIVector< PIEthernet::Interface >inline
    operator<<(const PIVector< PIEthernet::Interface > &other)PIVector< PIEthernet::Interface >inline
    operator==(const PIVector< PIEthernet::Interface > &t) constPIVector< PIEthernet::Interface >inline
    PIVector()PIVector< PIEthernet::Interface >inline
    pop_back()PIVector< PIEthernet::Interface >inline
    pop_front()PIVector< PIEthernet::Interface >inline
    push_back(const PIEthernet::Interface &v)PIVector< PIEthernet::Interface >inline
    push_front(const PIEthernet::Interface &v)PIVector< PIEthernet::Interface >inline
    remove(size_t index, size_t count=1)PIVector< PIEthernet::Interface >inline
    removeAll(const PIEthernet::Interface &v)PIVector< PIEthernet::Interface >inline
    removeOne(const PIEthernet::Interface &v)PIVector< PIEthernet::Interface >inline
    resize(size_t new_size, const PIEthernet::Interface &f=PIEthernet::Interface())PIVector< PIEthernet::Interface >inline
    size() constPIVector< PIEthernet::Interface >inline
    size_s() constPIVector< PIEthernet::Interface >inline
    sort(CompareFunc compare=compare_func)PIVector< PIEthernet::Interface >inline
    take_back()PIVector< PIEthernet::Interface >inline
    take_front()PIVector< PIEthernet::Interface >inline
    +
    + + + + diff --git a/pip/doc/html/class_p_i_ethernet_1_1_interface_list.html b/pip/doc/html/class_p_i_ethernet_1_1_interface_list.html new file mode 100644 index 0000000..ea6cf09 --- /dev/null +++ b/pip/doc/html/class_p_i_ethernet_1_1_interface_list.html @@ -0,0 +1,161 @@ + + + + + + +PIP: PIEthernet::InterfaceList Class Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    + +
    +
    PIEthernet::InterfaceList Class Reference
    +
    +
    + +

    Array of Interface with some features. + More...

    +
    + + Inheritance diagram for PIEthernet::InterfaceList:
    +
    +
    + + + + + + + + + + + + + + + +

    +Public Member Functions

    +const InterfacegetByIndex (int index) const
     Get interface with system index "index" or 0 if there is no one.
     
    +const InterfacegetByName (const PIString &name) const
     Get interface with system name "name" or 0 if there is no one.
     
    +const InterfacegetByAddress (const PIString &address) const
     Get interface with IP address "address" or 0 if there is no one.
     
    +const InterfacegetLoopback () const
     Get loopback interface or 0 if there is no one.
     
    +

    Detailed Description

    +

    Array of Interface with some features.

    +
    +
    + + + + diff --git a/pip/doc/html/class_p_i_ethernet_1_1_interface_list.js b/pip/doc/html/class_p_i_ethernet_1_1_interface_list.js new file mode 100644 index 0000000..41ccf28 --- /dev/null +++ b/pip/doc/html/class_p_i_ethernet_1_1_interface_list.js @@ -0,0 +1,7 @@ +var class_p_i_ethernet_1_1_interface_list = +[ + [ "getByIndex", "class_p_i_ethernet_1_1_interface_list.html#a2b206fa34041a17fd220dedb8f7f5b23", null ], + [ "getByName", "class_p_i_ethernet_1_1_interface_list.html#a370ca35bd198f7b5299a8a397648ee98", null ], + [ "getByAddress", "class_p_i_ethernet_1_1_interface_list.html#a310d9bbcbce604c11e3c3a016f1e449d", null ], + [ "getLoopback", "class_p_i_ethernet_1_1_interface_list.html#aa7d664f29056fba64f8e58f547c739f0", null ] +]; \ No newline at end of file diff --git a/pip/doc/html/class_p_i_ethernet_1_1_interface_list__inherit__graph.map b/pip/doc/html/class_p_i_ethernet_1_1_interface_list__inherit__graph.map new file mode 100644 index 0000000..fdae41c --- /dev/null +++ b/pip/doc/html/class_p_i_ethernet_1_1_interface_list__inherit__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/class_p_i_ethernet_1_1_interface_list__inherit__graph.md5 b/pip/doc/html/class_p_i_ethernet_1_1_interface_list__inherit__graph.md5 new file mode 100644 index 0000000..dde396d --- /dev/null +++ b/pip/doc/html/class_p_i_ethernet_1_1_interface_list__inherit__graph.md5 @@ -0,0 +1 @@ +c62d3f4ecc47b4ce2ac9e4e77f00b771 \ No newline at end of file diff --git a/pip/doc/html/class_p_i_ethernet_1_1_interface_list__inherit__graph.svg b/pip/doc/html/class_p_i_ethernet_1_1_interface_list__inherit__graph.svg new file mode 100644 index 0000000..6d0f3c4 --- /dev/null +++ b/pip/doc/html/class_p_i_ethernet_1_1_interface_list__inherit__graph.svg @@ -0,0 +1,32 @@ + + + + + + +PIEthernet::InterfaceList + + +Node1 + +PIEthernet::InterfaceList + + +Node2 + + +PIVector< PIEthernet +::Interface > + + + + +Node2->Node1 + + + + + diff --git a/pip/doc/html/class_p_i_ethernet__inherit__graph.map b/pip/doc/html/class_p_i_ethernet__inherit__graph.map new file mode 100644 index 0000000..cfd36b8 --- /dev/null +++ b/pip/doc/html/class_p_i_ethernet__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/pip/doc/html/class_p_i_ethernet__inherit__graph.md5 b/pip/doc/html/class_p_i_ethernet__inherit__graph.md5 new file mode 100644 index 0000000..647f414 --- /dev/null +++ b/pip/doc/html/class_p_i_ethernet__inherit__graph.md5 @@ -0,0 +1 @@ +d6973a100e3a536bb39f655ef2739b0d \ No newline at end of file diff --git a/pip/doc/html/class_p_i_ethernet__inherit__graph.svg b/pip/doc/html/class_p_i_ethernet__inherit__graph.svg new file mode 100644 index 0000000..caab32e --- /dev/null +++ b/pip/doc/html/class_p_i_ethernet__inherit__graph.svg @@ -0,0 +1,57 @@ + + + + + + +PIEthernet + + +Node1 + +PIEthernet + + +Node2 + + +PIIODevice + + + + +Node2->Node1 + + + + +Node3 + + +PIThread + + + + +Node3->Node2 + + + + +Node4 + + +PIObject + + + + +Node4->Node3 + + + + + diff --git a/pip/doc/html/class_p_i_evaluator-members.html b/pip/doc/html/class_p_i_evaluator-members.html new file mode 100644 index 0000000..8159fd9 --- /dev/null +++ b/pip/doc/html/class_p_i_evaluator-members.html @@ -0,0 +1,142 @@ + + + + + + +PIP: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    PIEvaluator Member List
    +
    +
    + +

    This is the complete list of members for PIEvaluator, including all inherited members.

    + + + + + + + + + + + + + + + + +
    check(const PIString &string)PIEvaluator
    clearCustomVariables()PIEvaluatorinline
    data()PIEvaluatorinline
    error() const PIEvaluatorinline
    evaluate()PIEvaluator
    expression() const PIEvaluatorinline
    isCorrect() const PIEvaluatorinline
    lastResult() const PIEvaluatorinline
    PIEvaluator()PIEvaluatorinline
    removeVariable(const PIString &name)PIEvaluatorinline
    setData(void *_data)PIEvaluatorinline
    setVariable(const PIString &name, complexd value=0.)PIEvaluatorinline
    setVariable(int index, complexd value=0.)PIEvaluatorinline
    unknownVariables() const PIEvaluatorinline
    variableIndex(const PIString &name) const PIEvaluatorinline
    +
    + + + + diff --git a/pip/doc/html/class_p_i_evaluator.html b/pip/doc/html/class_p_i_evaluator.html new file mode 100644 index 0000000..3d5d116 --- /dev/null +++ b/pip/doc/html/class_p_i_evaluator.html @@ -0,0 +1,299 @@ + + + + + + +PIP: PIEvaluator Class Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    + +
    +
    PIEvaluator Class Reference
    +
    +
    + +

    This class provide mathematical evaluations of custom expression. + More...

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    PIEvaluator ()
     Constructs an empty evaluator.
     
    +void * data ()
     Returns custom data.
     
    +void setData (void *_data)
     Set custom data to "_data".
     
    +bool check (const PIString &string)
     Check mathematical expression and parse it to list of instructions.
     
    +bool isCorrect () const
     Returns true if expression was checked succesfully.
     
    +int setVariable (const PIString &name, complexd value=0.)
     Set variable value with name "name" to value "value". Add variable if it doesn`t exists.
     
    +void setVariable (int index, complexd value=0.)
     Set variable value with index "index" to value "value". Dont add variable if it doesnt exists.
     
    +complexd evaluate ()
     Evaluate last successfully checked with function check() expression and returns result.
     
    +void removeVariable (const PIString &name)
     Remove variable with name "name".
     
    +void clearCustomVariables ()
     Remove all manually added variables.
     
    +int variableIndex (const PIString &name) const
     Returns index of variable with name "name".
     
    +const PIStringListunknownVariables () const
     Returns all unknown variables founded in last expression passed to check() function.
     
    +const PIStringexpression () const
     Returns processed last expression passed to check() function.
     
    +const PIStringerror () const
     Returns last error description occured in check() function.
     
    +const complexd & lastResult () const
     Returns last result of evaluate()
     
    +

    Detailed Description

    +

    This class provide mathematical evaluations of custom expression.

    +

    +Synopsis

    +

    PIEvaluator developed for stream evaluations of once set expression. It`s create internal list of instructions on function check() and executes very fast on function evaluate(). Once given expression can be evaluated any times with different variable values. Evaluator supports many common mathematic functions described below. Also it`s automatic puts unnecessarily signs and bracets. Processed expression can be obtains with function expression(). If there is an error in expression you can get it with function error(). Last evaluated result you can get with function lastResult().

    +

    +Using

    +

    First you should set your variables with function setVariable(). Next give your expression with function check() and check for error with functions isCorrect() and error(). If expression is correct you can get processed expression with function expression() and evaluate it with function evaluate(). You can change variable values without rechecking expression.

    +

    +Functions

    +

    PIEvaluator supports arithmetical operations with complex numbers, this is their list in priority order:

      +
    • ^ (power)
    • +
    • * (multiply)
    • +
    • / (divide)
    • +
    • % (residue)
    • +
    • + (add)
    • +
    • - (subtract)
    • +
    +

    In addition there are compare and logical operations:

      +
    • == (equal)
    • +
    • != (not equal)
    • +
    • > (greater)
    • +
    • < (smaller)
    • +
    • >= (greater or equal)
    • +
    • <= (smaller or equal)
    • +
    • && (and)
    • +
    • || (or)
    • +
    +

    Compare and logical functions works with real operators part and returns 0 or 1.

    +

    Mathematical functions:

      +
    • sin(x) - sine
    • +
    • cos(x) - cosine
    • +
    • tg(x) - tangent
    • +
    • ctg(x) - cotangent
    • +
    • arcsin(x) - arcsine
    • +
    • arccos(x) - arccosine
    • +
    • arctg(x) -arccotangent
    • +
    • arcctg(x) - arctangent
    • +
    • sh(x) - hyperbolical sine
    • +
    • ch(x) - hyperbolical cosine
    • +
    • th(x) - hyperbolical tangent
    • +
    • cth(x) - hyperbolical cotangent
    • +
    • sqr(x) - square
    • +
    • sqrt(x) - square root
    • +
    • abs(x) - absolute value
    • +
    • sign(x) - sign of real part (-1 or 1)
    • +
    • exp(x) - exponent
    • +
    • pow(x, p) - x in power p
    • +
    • ln(x) - natural logarithm
    • +
    • lg(x) - decimal logarithm
    • +
    • log(x, b) - logarithm of x with base b
    • +
    • im(x) - imaginary part of complex number
    • +
    • re(x) - real part of complex number
    • +
    • arg(x) - argument of complex number
    • +
    • len(x) - length of complex number
    • +
    • conj(x) - length of complex number
    • +
    • rad(x) - convert degrees to radians
    • +
    • deg(x) - convert radians to degrees
    • +
    • j0(x) - Bessel function first kind order 0
    • +
    • j1(x) - Bessel function first kind order 1
    • +
    • jn(x, n) - Bessel function first kind order n
    • +
    • y0(x) - Bessel function second kind order 0
    • +
    • y1(x) - Bessel function second kind order 1
    • +
    • yn(x, n) - Bessel function second kind order n
    • +
    • random(s, f) - regular random number in range [s, f]
    • +
    • min(x0, x1, ...) - minimum of x0, x1, ...
    • +
    • max(x0, x1, ...) - maximum of x0, x1, ...
    • +
    • clamp(x, a, b) - trim x on range [a, b]
    • +
    • step(x, s) - 0 if x < s, else 1
    • +
    • mix(x, a, b) - interpolate between a and b linear for x (a * (1 - x) + b * x)
    • +
    +

    There are some built-in constans:

      +
    • i (imaginary 1)
    • +
    • e
    • +
    • pi
    • +
    +

    All trigonometric functions takes angle in radians.

    +

    +Example

    +
    +
    +
    eval.check("e2eelge");
    +
    +
    piCout << eval.expression() << "=" << eval.evaluate();
    +
    // e*2*e*e*lg(e) = (17.4461; 0)
    +
    +
    eval.check("10x");
    +
    +
    piCout << eval.error() << eval.unknownVariables();
    +
    // Unknown variables: "x" {"x"}
    +
    +
    eval.setVariable("x", complexd(1, 2));
    +
    eval.check("10x");
    +
    +
    piCout << eval.error() << eval.unknownVariables();
    +
    // Correct {}
    +
    +
    piCout << eval.expression() << "=" << eval.evaluate();
    +
    // 10*x = (10; 20)
    +
    +
    eval.setVariable("x", complexd(-2, 0));
    +
    +
    piCout << eval.expression() << "=" << eval.evaluate();
    +
    // 10*x = (-20; 0)
    +
    +
    + + + + diff --git a/pip/doc/html/class_p_i_evaluator.js b/pip/doc/html/class_p_i_evaluator.js new file mode 100644 index 0000000..887bd20 --- /dev/null +++ b/pip/doc/html/class_p_i_evaluator.js @@ -0,0 +1,18 @@ +var class_p_i_evaluator = +[ + [ "PIEvaluator", "class_p_i_evaluator.html#a4fe9e776a1db6cc5b55665304764cf20", null ], + [ "data", "class_p_i_evaluator.html#ac5d8118fce80c08a8ae3ad2215625839", null ], + [ "setData", "class_p_i_evaluator.html#a56921d7e9aac1543eeee4d52b220f8ac", null ], + [ "check", "class_p_i_evaluator.html#a1eae7848dc5d9d740a18acf4538ec34f", null ], + [ "isCorrect", "class_p_i_evaluator.html#ac9a77afecf7a5ca245c920a491f4386f", null ], + [ "setVariable", "class_p_i_evaluator.html#a066713e986ccf0abbdffc1dd4ab8a487", null ], + [ "setVariable", "class_p_i_evaluator.html#ad83802b50958b28193a523144b7e8d55", null ], + [ "evaluate", "class_p_i_evaluator.html#abc6012ab974a16f99b08cc2773142b79", null ], + [ "removeVariable", "class_p_i_evaluator.html#a10a2ad62c7636b8c343ca0a60afcb9d0", null ], + [ "clearCustomVariables", "class_p_i_evaluator.html#aa96ba5c4174592341d65eaebffd7fece", null ], + [ "variableIndex", "class_p_i_evaluator.html#ac20bb44234749ce227df1b95fcc319ae", null ], + [ "unknownVariables", "class_p_i_evaluator.html#a7d1a1ce4eea722fde90e487f397cd25c", null ], + [ "expression", "class_p_i_evaluator.html#ac9a0a4fd65af2518d8efdaa9c5298991", null ], + [ "error", "class_p_i_evaluator.html#ac3e87ff15b4b04240b133affaf09e72b", null ], + [ "lastResult", "class_p_i_evaluator.html#a50b2b35e52268072b8b2080f9dcf1d2c", null ] +]; \ No newline at end of file diff --git a/pip/doc/html/class_p_i_file-members.html b/pip/doc/html/class_p_i_file-members.html new file mode 100644 index 0000000..afd36d5 --- /dev/null +++ b/pip/doc/html/class_p_i_file-members.html @@ -0,0 +1,221 @@ + + + + + + +PIP: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    PIFile Member List
    +
    +
    + +

    This is the complete list of members for PIFile, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    className() const PIObjectinlinevirtual
    closeDevice()PIFileprotectedvirtual
    configureDevice(const void *e_main, const void *e_parent=0)PIIODeviceinlineprotectedvirtual
    configureFromFullPath(const PIString &full_path)PIFileprotectedvirtual
    CONNECTPIObjectrelated
    CONNECT0PIObjectrelated
    CONNECT1PIObjectrelated
    CONNECT2PIObjectrelated
    CONNECT3PIObjectrelated
    CONNECT4PIObjectrelated
    CONNECTUPIObjectrelated
    data() const PIThreadinline
    debug() const PIObjectinline
    DISCONNECTPIObjectrelated
    DISCONNECT0PIObjectrelated
    DISCONNECT1PIObjectrelated
    DISCONNECT2PIObjectrelated
    DISCONNECT3PIObjectrelated
    DISCONNECT4PIObjectrelated
    emitter() const PIObjectinlineprotected
    EVENTPIObjectrelated
    EVENT0PIObjectrelated
    EVENT1PIObjectrelated
    EVENT2PIObjectrelated
    EVENT3PIObjectrelated
    EVENT4PIObjectrelated
    EVENT_HANDLERPIObjectrelated
    EVENT_HANDLER0PIObjectrelated
    EVENT_HANDLER1PIObjectrelated
    EVENT_HANDLER2PIObjectrelated
    EVENT_HANDLER3PIObjectrelated
    EVENT_HANDLER4PIObjectrelated
    EVENT_VHANDLERPIObjectrelated
    EVENT_VHANDLER0PIObjectrelated
    EVENT_VHANDLER1PIObjectrelated
    EVENT_VHANDLER2PIObjectrelated
    EVENT_VHANDLER3PIObjectrelated
    EVENT_VHANDLER4PIObjectrelated
    findByName(const PIString &name)PIObjectinlinestatic
    fullPathPrefix() const PIFileinlineprotectedvirtual
    HANDLERPIObjectrelated
    init()PIIODeviceinlineprotectedvirtual
    isPropertyExists(const PIString &name) const PIObjectinline
    isRunning() const PIThreadinline
    lock()PIThreadinline
    mutex()PIThreadinline
    name() const PIObjectinline
    needLockRun(bool need)PIThreadinline
    openDevice()PIFileprotectedvirtual
    piCoutObjPIObjectrelated
    piDisconnect(PIObject *src, const PIString &sig)PIObjectstatic
    piDisconnect(PIObject *src)PIObjectstatic
    piHigh enum valuePIThread
    piHighest enum valuePIThread
    PIIODEVICEPIIODevicerelated
    piLow enum valuePIThread
    piLowerst enum valuePIThread
    piNormal enum valuePIThread
    PIObject(const PIString &name=PIString())PIObject
    PIOBJECTPIObjectrelated
    PIOBJECT_PARENTPIObjectrelated
    PIThread(void *data, ThreadFunc func, bool startNow=false, int loop_delay=-1)PIThread
    PIThread(bool startNow=false, int loop_delay=-1)PIThread
    priority() const PIThreadinline
    Priority enum namePIThread
    properties() const PIObjectinline
    propertiesCount() const PIObjectinline
    property(const PIString &name) const PIObjectinline
    propertyChanged(const PIString &name)PIObjectinlineprotectedvirtual
    readDeviceSetting(const PIString &name, const T &def, const PIConfig::Entry *em, const PIConfig::Entry *ep)PIIODevicerelated
    REGISTER_DEVICEPIIODevicerelated
    setData(void *d)PIThreadinline
    setDebug(bool debug)PIObjectinline
    setName(const PIString &name)PIObjectinline
    setPriority(PIThread::Priority prior)PIThread
    setProperty(const PIString &name, const PIVariant &value)PIObjectinline
    setSlot(ThreadFunc func)PIThreadinline
    PIThread::start(int timer_delay)PIThread
    PIThread::start(ThreadFunc func, int timer_delay)PIThreadinline
    started()PIThread
    startOnce()PIThread
    startOnce(ThreadFunc func)PIThreadinline
    stopped()PIThread
    superClassName() const PIObjectinlinevirtual
    threadedRead(uchar *readed, int size)PIIODeviceinlineprotectedvirtual
    unlock()PIThreadinline
    waitForFinish(int timeout_msecs)PIThread
    waitForStart(int timeout_msecs)PIThread
    WEAK_CONNECTPIObjectrelated
    WEAK_CONNECT0PIObjectrelated
    WEAK_CONNECT1PIObjectrelated
    WEAK_CONNECT2PIObjectrelated
    WEAK_CONNECT3PIObjectrelated
    WEAK_CONNECT4PIObjectrelated
    +
    + + + + diff --git a/pip/doc/html/class_p_i_file.html b/pip/doc/html/class_p_i_file.html new file mode 100644 index 0000000..16a140f --- /dev/null +++ b/pip/doc/html/class_p_i_file.html @@ -0,0 +1,526 @@ + + + + + + +PIP: PIFile Class Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    + +
    +
    PIFile Class Reference
    +
    +
    + +

    Local file. + More...

    +
    + + Inheritance diagram for PIFile:
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Protected Member Functions

    +PIString fullPathPrefix () const
     Reimplement to construct full unambiguous string prefix. Creating devices by unambiguous string.
     
    +void configureFromFullPath (const PIString &full_path)
     Reimplement to configure your device with parameters of full unambiguous string. Default implementation does nothing.
     
    +bool openDevice ()
     Reimplement to open device, return value will be set to "opened_" variable.
     
    +bool closeDevice ()
     Reimplement to close device, inverse return value will be set to "opened_" variable.
     
    - Protected Member Functions inherited from PIIODevice
    +virtual bool init ()
     Function executed before first openDevice() or from constructor.
     
    +virtual bool configureDevice (const void *e_main, const void *e_parent=0)
     Reimplement to configure device from entries "e_main" and "e_parent", cast arguments to PIConfig::Entry*.
     
    +virtual bool threadedRead (uchar *readed, int size)
     Function executed when thread read some data, default implementation execute external slot "ret_func_".
     
    - Protected Member Functions inherited from PIObject
    +PIObjectemitter () const
     Returns PIObject* which has raised an event. This value is correct only in definition of some event handler.
     
    +virtual void propertyChanged (const PIString &name)
     Virtual function executes after property with name "name" has been changed.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Additional Inherited Members

    - Public Types inherited from PIThread
    enum  Priority {
    +  piLowerst, +piLow, +piNormal, +piHigh, +
    +  piHighest +
    + }
     Priority of thread. More...
     
    - Public Member Functions inherited from PIThread
    PIThread (void *data, ThreadFunc func, bool startNow=false, int loop_delay=-1)
     Contructs thread with custom data "data", external function "func" and main loop delay "loop_delay".
     
    PIThread (bool startNow=false, int loop_delay=-1)
     Contructs thread with main loop delay "loop_delay".
     
    +void setData (void *d)
     Set common data passed to external function.
     
    +void setSlot (ThreadFunc func)
     Set external function that will be executed after every run()
     
    +void setPriority (PIThread::Priority prior)
     Set priority of thread.
     
    +void * data () const
     Returns common data passed to external function.
     
    +PIThread::Priority priority () const
     Return priority of thread.
     
    +bool isRunning () const
     Return true if thread is running.
     
    +void needLockRun (bool need)
     Set necessity of lock every run with internal mutex.
     
    +PIMutexmutex ()
     Return internal mutex.
     
    bool start (int timer_delay)
     Start thread. More...
     
    bool start (ThreadFunc func, int timer_delay)
     Start thread. More...
     
    bool startOnce ()
     Start thread without internal loop. More...
     
    bool startOnce (ThreadFunc func)
     Start thread without internal loop. More...
     
    void stop (bool wait)
     Stop thread. More...
     
    void terminate ()
     Strongly stop thread. More...
     
    bool waitForStart (int timeout_msecs)
     Wait for thread start. More...
     
    bool waitForFinish (int timeout_msecs)
     Wait for thread finish. More...
     
    +void lock ()
     Lock internal mutex.
     
    +void unlock ()
     Unlock internal mutex.
     
    +void started ()
     Raise on thread start.
     
    +void stopped ()
     Raise on thread stop.
     
    - Public Member Functions inherited from PIObject
    PIObject (const PIString &name=PIString())
     Contructs PIObject with name "name".
     
    +PIString name () const
     Returns object name.
     
    +virtual const char * className () const
     Returns object class name.
     
    +virtual const char * superClassName () const
     Returns object superclass name.
     
    +bool debug () const
     Return if debug of this object is active.
     
    +void setName (const PIString &name)
     Set object name.
     
    +void setDebug (bool debug)
     Set object debug active.
     
    +const PIMap< PIString,
    +PIVariant > & 
    properties () const
     Returns properties of the object.
     
    +int propertiesCount () const
     Returns properties count of the object.
     
    +PIVariant property (const PIString &name) const
     Returns property with name "name".
     
    +void setProperty (const PIString &name, const PIVariant &value)
     Set property with name "name" to "value". If there is no such property in object it will be added.
     
    +bool isPropertyExists (const PIString &name) const
     Returns if property with name "name" exists.
     
    - Static Public Member Functions inherited from PIObject
    +static void piDisconnect (PIObject *src, const PIString &sig)
     Disconnect object "src" from all connections with event name "sig".
     
    +static void piDisconnect (PIObject *src)
     Disconnect object "src" from all connections, i.e. all connections where object "src" is emitter.
     
    +static PIObjectfindByName (const PIString &name)
     Returns PIObject* with name "name" or 0, if there is no object found.
     
    +

    Detailed Description

    +

    Local file.

    +

    +Synopsis

    +

    This class provide access to local file. You can manipulate binary content or use this class as text stream. To binary access there are function read(), write(), and many writeBinary() functions. For write variables to file in their text representation threr are many "<<" operators.

    +

    +Position

    +

    Each opened file has a read/write position - logical position in the file content you read from or you write to. You can find out current position with function pos(). Function seek(llong position) move position to position "position", seekToBegin() move position to the begin of file, seekToEnd() move position to the end of file.

    +
    +
    + + + + diff --git a/pip/doc/html/class_p_i_file.js b/pip/doc/html/class_p_i_file.js new file mode 100644 index 0000000..265478d --- /dev/null +++ b/pip/doc/html/class_p_i_file.js @@ -0,0 +1,7 @@ +var class_p_i_file = +[ + [ "fullPathPrefix", "class_p_i_file.html#a68c53a59d5afef2a7c363f987b1a5e1a", null ], + [ "configureFromFullPath", "class_p_i_file.html#a8f98ce9e7a6896b7c1dd0ca49a8eb49a", null ], + [ "openDevice", "class_p_i_file.html#aeb972f021b5ef835566764f8bb000976", null ], + [ "closeDevice", "class_p_i_file.html#ad3d944f75bbda0f14f2d9549d92ca614", null ] +]; \ No newline at end of file diff --git a/pip/doc/html/class_p_i_file__inherit__graph.map b/pip/doc/html/class_p_i_file__inherit__graph.map new file mode 100644 index 0000000..05ca891 --- /dev/null +++ b/pip/doc/html/class_p_i_file__inherit__graph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/pip/doc/html/class_p_i_file__inherit__graph.md5 b/pip/doc/html/class_p_i_file__inherit__graph.md5 new file mode 100644 index 0000000..19f4ca7 --- /dev/null +++ b/pip/doc/html/class_p_i_file__inherit__graph.md5 @@ -0,0 +1 @@ +6c5612232cfc6995ecd599ca417f588c \ No newline at end of file diff --git a/pip/doc/html/class_p_i_file__inherit__graph.svg b/pip/doc/html/class_p_i_file__inherit__graph.svg new file mode 100644 index 0000000..fe7a0be --- /dev/null +++ b/pip/doc/html/class_p_i_file__inherit__graph.svg @@ -0,0 +1,70 @@ + + + + + + +PIFile + + +Node1 + +PIFile + + +Node5 + + +PIConfig + + + + +Node1->Node5 + + + + +Node2 + + +PIIODevice + + + + +Node2->Node1 + + + + +Node3 + + +PIThread + + + + +Node3->Node2 + + + + +Node4 + + +PIObject + + + + +Node4->Node3 + + + + + diff --git a/pip/doc/html/class_p_i_flags-members.html b/pip/doc/html/class_p_i_flags-members.html new file mode 100644 index 0000000..103e430 --- /dev/null +++ b/pip/doc/html/class_p_i_flags-members.html @@ -0,0 +1,175 @@ + + + + + + +PIP: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    PIFlags< Enum > Member List
    +
    +
    + +

    This is the complete list of members for PIFlags< Enum >, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    operator int() const PIFlags< Enum >inline
    operator!=(const PIFlags &f)PIFlags< Enum >inline
    operator!=(const Enum &e)PIFlags< Enum >inline
    operator!=(const int i)PIFlags< Enum >inline
    operator&(PIFlags f) const PIFlags< Enum >inline
    operator&(Enum e) const PIFlags< Enum >inline
    operator&(int i) const PIFlags< Enum >inline
    operator&=(const PIFlags &f)PIFlags< Enum >inline
    operator&=(const Enum &e)PIFlags< Enum >inline
    operator&=(const int i)PIFlags< Enum >inline
    operator<(const PIFlags &f)PIFlags< Enum >inline
    operator<(const Enum &e)PIFlags< Enum >inline
    operator<(const int i)PIFlags< Enum >inline
    operator<=(const PIFlags &f)PIFlags< Enum >inline
    operator<=(const Enum &e)PIFlags< Enum >inline
    operator<=(const int i)PIFlags< Enum >inline
    operator=(const PIFlags &f)PIFlags< Enum >inline
    operator=(const Enum &e)PIFlags< Enum >inline
    operator=(const int &i)PIFlags< Enum >inline
    operator==(const PIFlags &f)PIFlags< Enum >inline
    operator==(const Enum &e)PIFlags< Enum >inline
    operator==(const int i)PIFlags< Enum >inline
    operator>(const PIFlags &f)PIFlags< Enum >inline
    operator>(const Enum &e)PIFlags< Enum >inline
    operator>(const int i)PIFlags< Enum >inline
    operator>=(const PIFlags &f)PIFlags< Enum >inline
    operator>=(const Enum &e)PIFlags< Enum >inline
    operator>=(const int i)PIFlags< Enum >inline
    operator[](Enum e) const PIFlags< Enum >inline
    operator^(PIFlags f) const PIFlags< Enum >inline
    operator^(Enum e) const PIFlags< Enum >inline
    operator^(int i) const PIFlags< Enum >inline
    operator^=(const PIFlags &f)PIFlags< Enum >inline
    operator^=(const Enum &e)PIFlags< Enum >inline
    operator^=(const int i)PIFlags< Enum >inline
    operator|(PIFlags f) const PIFlags< Enum >inline
    operator|(Enum e) const PIFlags< Enum >inline
    operator|(int i) const PIFlags< Enum >inline
    operator|=(const PIFlags &f)PIFlags< Enum >inline
    operator|=(const Enum &e)PIFlags< Enum >inline
    operator|=(const int i)PIFlags< Enum >inline
    PIFlags()PIFlags< Enum >inline
    PIFlags(Enum e)PIFlags< Enum >inline
    PIFlags(const PIFlags &f)PIFlags< Enum >inline
    PIFlags(const int i)PIFlags< Enum >inline
    setFlag(const PIFlags &f, bool on=true)PIFlags< Enum >inline
    setFlag(const Enum &e, bool on=true)PIFlags< Enum >inline
    setFlag(const int &i, bool on=true)PIFlags< Enum >inline
    +
    + + + + diff --git a/pip/doc/html/class_p_i_flags.html b/pip/doc/html/class_p_i_flags.html new file mode 100644 index 0000000..d530310 --- /dev/null +++ b/pip/doc/html/class_p_i_flags.html @@ -0,0 +1,338 @@ + + + + + + +PIP: PIFlags< Enum > Class Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    + +
    +
    PIFlags< Enum > Class Template Reference
    +
    +
    + +

    This class used as container for bit flags. + More...

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    PIFlags ()
     Constructor with flags = 0.
     
    PIFlags (Enum e)
     Constructor with flags = Enum "e".
     
    PIFlags (const PIFlags &f)
     Constructor with flags = PIFlags "f".
     
    PIFlags (const int i)
     Constructor with flags = int "i".
     
    +PIFlagssetFlag (const PIFlags &f, bool on=true)
     Set flags "f" to value "on".
     
    +PIFlagssetFlag (const Enum &e, bool on=true)
     Set flag "e" to value "on".
     
    +PIFlagssetFlag (const int &i, bool on=true)
     Set flag "i" to value "on".
     
    +void operator= (const PIFlags &f)
     copy operator
     
    +void operator= (const Enum &e)
     copy operator
     
    +void operator= (const int &i)
     copy operator
     
    +bool operator== (const PIFlags &f)
     compare operator
     
    +bool operator== (const Enum &e)
     compare operator
     
    +bool operator== (const int i)
     compare operator
     
    +bool operator!= (const PIFlags &f)
     compare operator
     
    +bool operator!= (const Enum &e)
     compare operator
     
    +bool operator!= (const int i)
     compare operator
     
    +bool operator> (const PIFlags &f)
     compare operator
     
    +bool operator> (const Enum &e)
     compare operator
     
    +bool operator> (const int i)
     compare operator
     
    +bool operator< (const PIFlags &f)
     compare operator
     
    +bool operator< (const Enum &e)
     compare operator
     
    +bool operator< (const int i)
     compare operator
     
    +bool operator>= (const PIFlags &f)
     compare operator
     
    +bool operator>= (const Enum &e)
     compare operator
     
    +bool operator>= (const int i)
     compare operator
     
    +bool operator<= (const PIFlags &f)
     compare operator
     
    +bool operator<= (const Enum &e)
     compare operator
     
    +bool operator<= (const int i)
     compare operator
     
    +void operator&= (const PIFlags &f)
     Bit-wise AND operator.
     
    +void operator&= (const Enum &e)
     Bit-wise AND operator.
     
    +void operator&= (const int i)
     Bit-wise AND operator.
     
    +void operator|= (const PIFlags &f)
     Bit-wise OR operator.
     
    +void operator|= (const Enum &e)
     Bit-wise OR operator.
     
    +void operator|= (const int i)
     Bit-wise OR operator.
     
    +void operator^= (const PIFlags &f)
     Bit-wise XOR operator.
     
    +void operator^= (const Enum &e)
     Bit-wise XOR operator.
     
    +void operator^= (const int i)
     Bit-wise XOR operator.
     
    +PIFlags operator& (PIFlags f) const
     Bit-wise AND operator.
     
    +PIFlags operator& (Enum e) const
     Bit-wise AND operator.
     
    +PIFlags operator& (int i) const
     Bit-wise AND operator.
     
    +PIFlags operator| (PIFlags f) const
     Bit-wise OR operator.
     
    +PIFlags operator| (Enum e) const
     Bit-wise OR operator.
     
    +PIFlags operator| (int i) const
     Bit-wise OR operator.
     
    +PIFlags operator^ (PIFlags f) const
     Bit-wise XOR operator.
     
    +PIFlags operator^ (Enum e) const
     Bit-wise XOR operator.
     
    +PIFlags operator^ (int i) const
     Bit-wise XOR operator.
     
    +bool operator[] (Enum e) const
     Test flag operator.
     
    operator int () const
     Implicity conversion to int.
     
    +

    Detailed Description

    +

    template<typename Enum>
    +class PIFlags< Enum >

    + +

    This class used as container for bit flags.

    +

    PIFlags is wrapper around "int". There are many bit-wise operators, native conversion to int and function to test flag.
    + Example:

    enum TestEnum {First = 0x1, Second = 0x2, Third = 0x4};
    +
    PIFlags<TestEnum> testFlags(First);
    +
    testFlags |= Third;
    +
    piCout << testFlags[First] << testFlags[Second] << testFlags[Third]; // 1 0 1
    +
    piCout << (int)testFlags; // 5
    +
    +
    + + + + diff --git a/pip/doc/html/class_p_i_flags.js b/pip/doc/html/class_p_i_flags.js new file mode 100644 index 0000000..5bf9474 --- /dev/null +++ b/pip/doc/html/class_p_i_flags.js @@ -0,0 +1,51 @@ +var class_p_i_flags = +[ + [ "PIFlags", "class_p_i_flags.html#a99d2dd72580b4c93b2bd6754cfc5e1b8", null ], + [ "PIFlags", "class_p_i_flags.html#a657c6082214f45ae26436517bb12168e", null ], + [ "PIFlags", "class_p_i_flags.html#a815969c121235a5a1fbfa6cb3d9cc2f4", null ], + [ "PIFlags", "class_p_i_flags.html#a3307667726be788df2ddca22e00c590d", null ], + [ "setFlag", "class_p_i_flags.html#a6673f1d35533de415c32585fa07acc4c", null ], + [ "setFlag", "class_p_i_flags.html#af5e4ff71a745cd3480652f9d8073e0c6", null ], + [ "setFlag", "class_p_i_flags.html#ac3698f718594f1937e2c3b75173c0ccc", null ], + [ "operator=", "class_p_i_flags.html#aa564e466b29c503ffe5fb333477b57e9", null ], + [ "operator=", "class_p_i_flags.html#a770bd137d48fc87414d211136e497264", null ], + [ "operator=", "class_p_i_flags.html#a1bd66aa9dcb533ff06872cb60c280bf2", null ], + [ "operator==", "class_p_i_flags.html#a92c3b13d611c323253155df10ddb0589", null ], + [ "operator==", "class_p_i_flags.html#a81d595884d3625e3f8339515da5142df", null ], + [ "operator==", "class_p_i_flags.html#a7d12ce96db356cf939007094fa8d18ac", null ], + [ "operator!=", "class_p_i_flags.html#a59ae898edaae7ee779cf47985ba97b05", null ], + [ "operator!=", "class_p_i_flags.html#a78ba48024fea46cc2d57172bf997e870", null ], + [ "operator!=", "class_p_i_flags.html#aa589988a996ab33adc81f906c7beff11", null ], + [ "operator>", "class_p_i_flags.html#a7e2e36f073adce8652f8c2bba54c4726", null ], + [ "operator>", "class_p_i_flags.html#ab15468c584d812993908f25e082a8a46", null ], + [ "operator>", "class_p_i_flags.html#a465dcf5ad5a0f3ce635a1cc58582ae73", null ], + [ "operator<", "class_p_i_flags.html#a5bedc9803db598b1fe87bd815f1f50c3", null ], + [ "operator<", "class_p_i_flags.html#af8ad4abecf7a29b4f33a4cdba0d53a91", null ], + [ "operator<", "class_p_i_flags.html#aea03b049361f891ac03d791d8f889016", null ], + [ "operator>=", "class_p_i_flags.html#a7492424bc2aa14d9acc89ed804b43429", null ], + [ "operator>=", "class_p_i_flags.html#adbbd42330d0112e0a3027a4fecae5d0d", null ], + [ "operator>=", "class_p_i_flags.html#a9da15d887157a646afd68d397dfe1834", null ], + [ "operator<=", "class_p_i_flags.html#a8c58b248b368645075bfe17ca3d89dae", null ], + [ "operator<=", "class_p_i_flags.html#ad6db41bdb39487a6527ec61c38731e5f", null ], + [ "operator<=", "class_p_i_flags.html#a846954cedb1fcc2c013c19b97015d673", null ], + [ "operator&=", "class_p_i_flags.html#abddc6b15602a50cb8a43935d32b57cfc", null ], + [ "operator&=", "class_p_i_flags.html#a69759343b60a2ded01f9eb603a4ab471", null ], + [ "operator&=", "class_p_i_flags.html#afc767b6874e64209d8d4d204f98b98b6", null ], + [ "operator|=", "class_p_i_flags.html#ad75fb5da994327ba3d7c3fc6ec6618a8", null ], + [ "operator|=", "class_p_i_flags.html#a875de3331e28f62926b93434d97f0e95", null ], + [ "operator|=", "class_p_i_flags.html#aa2c5fcf51605331ef710d5fa9f9f85dc", null ], + [ "operator^=", "class_p_i_flags.html#a52cc502ff50daa80c835b830f887e123", null ], + [ "operator^=", "class_p_i_flags.html#a786e69005ae156211ea3fbfcfb442c5a", null ], + [ "operator^=", "class_p_i_flags.html#a53d822bbb7e7b3ed6aed90d6b07d96cf", null ], + [ "operator&", "class_p_i_flags.html#a8794228e06813b904f387d831ff0e9b0", null ], + [ "operator&", "class_p_i_flags.html#a4159b4116bded6b35ddeec688999b4bc", null ], + [ "operator&", "class_p_i_flags.html#a4ab2f09fb40fa0988b968ccb957d7ba1", null ], + [ "operator|", "class_p_i_flags.html#a9b502fbd3bb299efac66cbeb364b3480", null ], + [ "operator|", "class_p_i_flags.html#a0cfb21b9520162fc35a4e9b55dade176", null ], + [ "operator|", "class_p_i_flags.html#a9f7a72e1d42087971ebc2368f2a4819d", null ], + [ "operator^", "class_p_i_flags.html#a6ba52142f66b679d36c16f7954c87296", null ], + [ "operator^", "class_p_i_flags.html#ac0526e886b96e22c4e3433eecd7e8682", null ], + [ "operator^", "class_p_i_flags.html#a34b1ab652fa134e129c55502c577f10e", null ], + [ "operator[]", "class_p_i_flags.html#a8db0289c6a2d99736f2ad8cf8ab48aea", null ], + [ "operator int", "class_p_i_flags.html#a3338b89805f5035e609939c798e6f7a1", null ] +]; \ No newline at end of file diff --git a/pip/doc/html/class_p_i_i_o_device-members.html b/pip/doc/html/class_p_i_i_o_device-members.html new file mode 100644 index 0000000..4d4a4cd --- /dev/null +++ b/pip/doc/html/class_p_i_i_o_device-members.html @@ -0,0 +1,221 @@ + + + + + + +PIP: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    PIIODevice Member List
    +
    +
    + +

    This is the complete list of members for PIIODevice, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    className() const PIObjectinlinevirtual
    closeDevice()PIIODeviceinlineprotectedvirtual
    configureDevice(const void *e_main, const void *e_parent=0)PIIODeviceinlineprotectedvirtual
    configureFromFullPath(const PIString &full_path)PIIODeviceinlineprotectedvirtual
    CONNECTPIObjectrelated
    CONNECT0PIObjectrelated
    CONNECT1PIObjectrelated
    CONNECT2PIObjectrelated
    CONNECT3PIObjectrelated
    CONNECT4PIObjectrelated
    CONNECTUPIObjectrelated
    data() const PIThreadinline
    debug() const PIObjectinline
    DISCONNECTPIObjectrelated
    DISCONNECT0PIObjectrelated
    DISCONNECT1PIObjectrelated
    DISCONNECT2PIObjectrelated
    DISCONNECT3PIObjectrelated
    DISCONNECT4PIObjectrelated
    emitter() const PIObjectinlineprotected
    EVENTPIObjectrelated
    EVENT0PIObjectrelated
    EVENT1PIObjectrelated
    EVENT2PIObjectrelated
    EVENT3PIObjectrelated
    EVENT4PIObjectrelated
    EVENT_HANDLERPIObjectrelated
    EVENT_HANDLER0PIObjectrelated
    EVENT_HANDLER1PIObjectrelated
    EVENT_HANDLER2PIObjectrelated
    EVENT_HANDLER3PIObjectrelated
    EVENT_HANDLER4PIObjectrelated
    EVENT_VHANDLERPIObjectrelated
    EVENT_VHANDLER0PIObjectrelated
    EVENT_VHANDLER1PIObjectrelated
    EVENT_VHANDLER2PIObjectrelated
    EVENT_VHANDLER3PIObjectrelated
    EVENT_VHANDLER4PIObjectrelated
    findByName(const PIString &name)PIObjectinlinestatic
    fullPathPrefix() const PIIODeviceinlineprotectedvirtual
    HANDLERPIObjectrelated
    init()PIIODeviceinlineprotectedvirtual
    isPropertyExists(const PIString &name) const PIObjectinline
    isRunning() const PIThreadinline
    lock()PIThreadinline
    mutex()PIThreadinline
    name() const PIObjectinline
    needLockRun(bool need)PIThreadinline
    openDevice()=0PIIODeviceprotectedpure virtual
    piCoutObjPIObjectrelated
    piDisconnect(PIObject *src, const PIString &sig)PIObjectstatic
    piDisconnect(PIObject *src)PIObjectstatic
    piHigh enum valuePIThread
    piHighest enum valuePIThread
    PIIODEVICEPIIODevicerelated
    piLow enum valuePIThread
    piLowerst enum valuePIThread
    piNormal enum valuePIThread
    PIObject(const PIString &name=PIString())PIObject
    PIOBJECTPIObjectrelated
    PIOBJECT_PARENTPIObjectrelated
    PIThread(void *data, ThreadFunc func, bool startNow=false, int loop_delay=-1)PIThread
    PIThread(bool startNow=false, int loop_delay=-1)PIThread
    Priority enum namePIThread
    priority() const PIThreadinline
    properties() const PIObjectinline
    propertiesCount() const PIObjectinline
    property(const PIString &name) const PIObjectinline
    propertyChanged(const PIString &name)PIObjectinlineprotectedvirtual
    readDeviceSetting(const PIString &name, const T &def, const PIConfig::Entry *em, const PIConfig::Entry *ep)PIIODevicerelated
    REGISTER_DEVICEPIIODevicerelated
    setData(void *d)PIThreadinline
    setDebug(bool debug)PIObjectinline
    setName(const PIString &name)PIObjectinline
    setPriority(PIThread::Priority prior)PIThread
    setProperty(const PIString &name, const PIVariant &value)PIObjectinline
    setSlot(ThreadFunc func)PIThreadinline
    PIThread::start(int timer_delay)PIThread
    PIThread::start(ThreadFunc func, int timer_delay)PIThreadinline
    started()PIThread
    startOnce()PIThread
    startOnce(ThreadFunc func)PIThreadinline
    stopped()PIThread
    superClassName() const PIObjectinlinevirtual
    threadedRead(uchar *readed, int size)PIIODeviceinlineprotectedvirtual
    unlock()PIThreadinline
    waitForFinish(int timeout_msecs)PIThread
    waitForStart(int timeout_msecs)PIThread
    WEAK_CONNECTPIObjectrelated
    WEAK_CONNECT0PIObjectrelated
    WEAK_CONNECT1PIObjectrelated
    WEAK_CONNECT2PIObjectrelated
    WEAK_CONNECT3PIObjectrelated
    WEAK_CONNECT4PIObjectrelated
    +
    + + + + diff --git a/pip/doc/html/class_p_i_i_o_device.html b/pip/doc/html/class_p_i_i_o_device.html new file mode 100644 index 0000000..8eda8cf --- /dev/null +++ b/pip/doc/html/class_p_i_i_o_device.html @@ -0,0 +1,678 @@ + + + + + + +PIP: PIIODevice Class Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    + +
    +
    PIIODevice Class Referenceabstract
    +
    +
    + +

    Base class for input/output classes. + More...

    +
    + + Inheritance diagram for PIIODevice:
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Protected Member Functions

    +virtual bool init ()
     Function executed before first openDevice() or from constructor.
     
    +virtual bool configureDevice (const void *e_main, const void *e_parent=0)
     Reimplement to configure device from entries "e_main" and "e_parent", cast arguments to PIConfig::Entry*.
     
    +virtual bool openDevice ()=0
     Reimplement to open device, return value will be set to "opened_" variable.
     
    +virtual bool closeDevice ()
     Reimplement to close device, inverse return value will be set to "opened_" variable.
     
    +virtual bool threadedRead (uchar *readed, int size)
     Function executed when thread read some data, default implementation execute external slot "ret_func_".
     
    +virtual PIString fullPathPrefix () const
     Reimplement to construct full unambiguous string prefix. Creating devices by unambiguous string.
     
    +virtual void configureFromFullPath (const PIString &full_path)
     Reimplement to configure your device with parameters of full unambiguous string. Default implementation does nothing.
     
    - Protected Member Functions inherited from PIObject
    +PIObjectemitter () const
     Returns PIObject* which has raised an event. This value is correct only in definition of some event handler.
     
    +virtual void propertyChanged (const PIString &name)
     Virtual function executes after property with name "name" has been changed.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Related Functions

    (Note that these are not member functions.)

    +
    template<typename T >
    readDeviceSetting (const PIString &name, const T &def, const PIConfig::Entry *em, const PIConfig::Entry *ep)
     Service function. useful for configuring devices. More...
     
    +#define REGISTER_DEVICE(class)
     Use this macro to enable automatic creation instances of your class with createFromFullPath() function.
     
    +#define PIIODEVICE(class)
     Use this macro instead of PIOBJECT when describe your own PIIODevice.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Additional Inherited Members

    - Public Types inherited from PIThread
    enum  Priority {
    +  piLowerst, +piLow, +piNormal, +piHigh, +
    +  piHighest +
    + }
     Priority of thread. More...
     
    - Public Member Functions inherited from PIThread
    PIThread (void *data, ThreadFunc func, bool startNow=false, int loop_delay=-1)
     Contructs thread with custom data "data", external function "func" and main loop delay "loop_delay".
     
    PIThread (bool startNow=false, int loop_delay=-1)
     Contructs thread with main loop delay "loop_delay".
     
    +void setData (void *d)
     Set common data passed to external function.
     
    +void setSlot (ThreadFunc func)
     Set external function that will be executed after every run()
     
    +void setPriority (PIThread::Priority prior)
     Set priority of thread.
     
    +void * data () const
     Returns common data passed to external function.
     
    +PIThread::Priority priority () const
     Return priority of thread.
     
    +bool isRunning () const
     Return true if thread is running.
     
    +void needLockRun (bool need)
     Set necessity of lock every run with internal mutex.
     
    +PIMutexmutex ()
     Return internal mutex.
     
    bool start (int timer_delay)
     Start thread. More...
     
    bool start (ThreadFunc func, int timer_delay)
     Start thread. More...
     
    bool startOnce ()
     Start thread without internal loop. More...
     
    bool startOnce (ThreadFunc func)
     Start thread without internal loop. More...
     
    void stop (bool wait)
     Stop thread. More...
     
    void terminate ()
     Strongly stop thread. More...
     
    bool waitForStart (int timeout_msecs)
     Wait for thread start. More...
     
    bool waitForFinish (int timeout_msecs)
     Wait for thread finish. More...
     
    +void lock ()
     Lock internal mutex.
     
    +void unlock ()
     Unlock internal mutex.
     
    +void started ()
     Raise on thread start.
     
    +void stopped ()
     Raise on thread stop.
     
    - Public Member Functions inherited from PIObject
    PIObject (const PIString &name=PIString())
     Contructs PIObject with name "name".
     
    +PIString name () const
     Returns object name.
     
    +virtual const char * className () const
     Returns object class name.
     
    +virtual const char * superClassName () const
     Returns object superclass name.
     
    +bool debug () const
     Return if debug of this object is active.
     
    +void setName (const PIString &name)
     Set object name.
     
    +void setDebug (bool debug)
     Set object debug active.
     
    +const PIMap< PIString,
    +PIVariant > & 
    properties () const
     Returns properties of the object.
     
    +int propertiesCount () const
     Returns properties count of the object.
     
    +PIVariant property (const PIString &name) const
     Returns property with name "name".
     
    +void setProperty (const PIString &name, const PIVariant &value)
     Set property with name "name" to "value". If there is no such property in object it will be added.
     
    +bool isPropertyExists (const PIString &name) const
     Returns if property with name "name" exists.
     
    - Static Public Member Functions inherited from PIObject
    +static void piDisconnect (PIObject *src, const PIString &sig)
     Disconnect object "src" from all connections with event name "sig".
     
    +static void piDisconnect (PIObject *src)
     Disconnect object "src" from all connections, i.e. all connections where object "src" is emitter.
     
    +static PIObjectfindByName (const PIString &name)
     Returns PIObject* with name "name" or 0, if there is no object found.
     
    +

    Detailed Description

    +

    Base class for input/output classes.

    +

    +Synopsis

    +

    This class provide open/close logic, threaded read/write and virtual input/output functions read() and write(). You should implement pure virtual function openDevice() in your subclass.

    +

    +Open and close

    +

    PIIODevice have boolean variable indicated open status. Returns of functions openDevice() and closeDevice() change this variable.

    +

    +Threaded read

    +

    PIIODevice based on PIThread, so it`s overload run() to exec read() in background thread. If read is successful virtual function threadedRead() is executed. Default implementation of this function execute external static function set by setThreadedReadSlot() with data set by setThreadedReadData(). Extrenal static function should have format
    +bool func_name(void * Threaded_read_data, uchar * readed_data, int readed_size)
    +Threaded read starts with function startThreadedRead().

    +

    +Threaded write

    +

    PIIODevice aggregate another PIThread to perform a threaded write by function writeThreaded(). This function add task to internal queue and return queue entry ID. You should start write thread by function startThreadedWrite. On successful write event threadedWriteEvent is raised with two arguments - task ID and written bytes count.

    +

    +Internal buffer

    +

    PIIODevice have internal buffer for threaded read, and threadedRead() function receive pointer to this buffer in first argument. You can adjust size of this buffer by function setThreadedReadBufferSize()
    +Default size of this buffer is 4096 bytes.

    +

    +Reopen

    +

    When threaded read is begin its call open() if device is closed. While threaded read running PIIODevice check if device opened every read and if not call open() every reopen timeout if reopen enabled. Reopen timeout is set by setReopenTimeout(), reopen enable is set by setReopenEnabled().

    +

    +Configuration

    +

    This is virtual function configureDevice() which executes when configure() executes. This function takes two arguments: "e_main" and "e_parent" as void*. There are pointers to PIConfig::Entry entries of section "section" and their parent. If there is no parent "e_parent" = 0. Function configure() set three parameters of device: "reopenEnabled", "reopenTimeout" and "threadedReadBufferSize", then execute function configureDevice().
    + Each ancestor of PIIODevice reimlements configureDevice() function to be able to be confured from configuration file. This parameters described at section "Configurable parameters" in the class reference.
    + Usage example:

    // file example.conf
    +
    dev.reopenEnabled = false
    +
    dev.device = /dev/ttyS0
    +
    dev.speed = 9600
    +
    // end example.conf
    +
    // code
    + +
    ser.configure("example.conf", "dev");
    +

    Implementation example:

    class SomeIO: public PIIODevice {
    +
    ...
    +
    bool configureDevice(const void * e_main, const void * e_parent) {
    +
    PIConfig::Entry * em = (PIConfig::Entry * )e_main;
    +
    PIConfig::Entry * ep = (PIConfig::Entry * )e_parent;
    +
    setStringParam(readDeviceSetting<PIString>("stringParam", stringParam(), em, ep));
    +
    setIntParam(readDeviceSetting<int>("intParam", intParam(), em, ep));
    +
    return true;
    +
    }
    +
    ...
    +
    };
    +

    +Creating devices by unambiguous string

    +

    There are some virtual functions to describe child class without its declaration.
    + fullPathPrefix() should returns unique prefix of device
    + constructFullPath() should returns full unambiguous string, contains prefix and all device parameters
    + configureFromFullPath() provide configuring device from full unambiguous string without prefix and "://"
    + Macro PIIODEVICE should be used instead of PIOBJECT
    + Macro REGISTER_DEVICE should be used after definition of class, i.e. at the last line of *.cpp file
    +
    + If custom I/O device corresponds there rules, it can be returned by function createFromFullPath().
    + Each PIP I/O device has custom unambiguous string description:

      +
    • PIFile: "file://<path>"
    • +
    • PIBinaryLog: "binlog://<logDir>[:<filePrefix>][:<defaultID>]"
    • +
    • PISerial: "ser://<device>:<speed(50|...|115200)>[:<dataBitsCount(6|7|8)>][:<parity(N|E|O)>][:<stopBits(1|2)>]"
    • +
    • PIEthernet: "eth://<type(UDP|TCP)>:<readIP>:<readPort>[:<multicast(mcast:<ip>)>]"
    • +
    • PIUSB: "usb://<vid>:<pid>[:<deviceNumber>][:<readEndpointNumber>][:<writeEndpointNumber>]"
      +
      + Examples:
    • +
    • PIFile: "file://../text.txt"
    • +
    • PIBinaryLog: "binlog://../logs/:mylog_:1"
    • +
    • PISerial: "ser:///dev/ttyUSB0:9600:8:N:1", equivalent "ser:///dev/ttyUSB0:9600"
    • +
    • PIEthernet: "eth://TCP:127.0.0.1:16666", "eth://UDP:192.168.0.5:16666:mcast:234.0.2.1:mcast:234.0.2.2"
    • +
    • PIUSB: "usb://0bb4:0c86:1:1:2"
      +
      +So, custom I/O device can be created with next call:
      // creatring devices
      +
      PISerial * ser = (PISerial * )PIIODevice::createFromFullPath("ser://COM1:115200");
      +
      PIEthernet * eth = (PIEthernet * )PIIODevice::createFromFullPath("eth://UDP:127.0.0.1:4001");
      +
      // examine devices
      +
      piCout << ser << ser->properties();
      +
      piCout << eth << eth->properties();
      +
    • +
    +

    +Example

    +
    class SomeIO: public PIIODevice {
    +
    PIIODEVICE(SomeIO)
    +
    public:
    +
    SomeIO(): PIIODevice() {}
    +
    protected:
    +
    bool openDevice() {
    +
    // open your device here
    +
    return if_success;
    +
    }
    +
    int read(void * read_to, int max_size) {
    +
    // read from your device here
    +
    return readed_bytes;
    +
    }
    +
    int write(const void * data, int max_size) {
    +
    // write to your device here
    +
    return written_bytes;
    +
    }
    +
    PIString fullPathPrefix() const {return "myio";}
    +
    void configureFromFullPath(const PIString & full_path) {
    +
    // parse full_path and configure device there
    +
    }
    +
    };
    + +

    Friends And Related Function Documentation

    + +
    +
    +
    +template<typename T >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    T readDeviceSetting (const PIStringname,
    const T & def,
    const PIConfig::Entryem,
    const PIConfig::Entryep 
    )
    +
    +related
    +
    + +

    Service function. useful for configuring devices.

    +

    Function takes entry name "name", default value "def" and two PIConfig::Entry sections: "em" and their parent "ep". If there is no parent ep = 0. If "ep" is not null and entry "name" exists in "ep" function returns this value. Else returns value of entry "name" in section "em" or "def" if entry doesn`t exists.
    + This function useful to read settings from configuration file in implementation PIIODevice::configureDevice() function

    + +
    +
    +
    +
    + + + + diff --git a/pip/doc/html/class_p_i_i_o_device.js b/pip/doc/html/class_p_i_i_o_device.js new file mode 100644 index 0000000..3ec55de --- /dev/null +++ b/pip/doc/html/class_p_i_i_o_device.js @@ -0,0 +1,13 @@ +var class_p_i_i_o_device = +[ + [ "init", "class_p_i_i_o_device.html#a587c32639f2732920338a363ad163d81", null ], + [ "configureDevice", "class_p_i_i_o_device.html#ae7c5a2d7b6ea2409df4e200c8e4b8e32", null ], + [ "openDevice", "class_p_i_i_o_device.html#ae62b3035a9f884d345fd5d071c8089c8", null ], + [ "closeDevice", "class_p_i_i_o_device.html#aaf041ac27ee2b9af4828fbe2f4b5b1e2", null ], + [ "threadedRead", "class_p_i_i_o_device.html#a3c744704af365358af074e1089e20068", null ], + [ "fullPathPrefix", "class_p_i_i_o_device.html#a568194e78dc8aac94ed6c1d17809a71e", null ], + [ "configureFromFullPath", "class_p_i_i_o_device.html#aeb3edefa3b78b06e0f293936c15a74ab", null ], + [ "readDeviceSetting", "class_p_i_i_o_device.html#add5b851e98d22dd4d7482a8e509113dc", null ], + [ "REGISTER_DEVICE", "class_p_i_i_o_device.html#a672a05d4391737b8fecd4524f1a47bda", null ], + [ "PIIODEVICE", "class_p_i_i_o_device.html#a5adabd429443716b75771317ec43301b", null ] +]; \ No newline at end of file diff --git a/pip/doc/html/class_p_i_i_o_device__inherit__graph.map b/pip/doc/html/class_p_i_i_o_device__inherit__graph.map new file mode 100644 index 0000000..8fd5c25 --- /dev/null +++ b/pip/doc/html/class_p_i_i_o_device__inherit__graph.map @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/pip/doc/html/class_p_i_i_o_device__inherit__graph.md5 b/pip/doc/html/class_p_i_i_o_device__inherit__graph.md5 new file mode 100644 index 0000000..aefffef --- /dev/null +++ b/pip/doc/html/class_p_i_i_o_device__inherit__graph.md5 @@ -0,0 +1 @@ +40b53cd9ae00e0b4624f13ce84484389 \ No newline at end of file diff --git a/pip/doc/html/class_p_i_i_o_device__inherit__graph.svg b/pip/doc/html/class_p_i_i_o_device__inherit__graph.svg new file mode 100644 index 0000000..f3cdbd0 --- /dev/null +++ b/pip/doc/html/class_p_i_i_o_device__inherit__graph.svg @@ -0,0 +1,122 @@ + + + + + + +PIIODevice + + +Node1 + +PIIODevice + + +Node4 + + +PIBinaryLog + + + + +Node1->Node4 + + + + +Node5 + + +PIEthernet + + + + +Node1->Node5 + + + + +Node6 + + +PIFile + + + + +Node1->Node6 + + + + +Node8 + + +PIPacketExtractor + + + + +Node1->Node8 + + + + +Node9 + + +PISerial + + + + +Node1->Node9 + + + + +Node2 + + +PIThread + + + + +Node2->Node1 + + + + +Node3 + + +PIObject + + + + +Node3->Node2 + + + + +Node7 + + +PIConfig + + + + +Node6->Node7 + + + + + diff --git a/pip/doc/html/class_p_i_kbd_listener-members.html b/pip/doc/html/class_p_i_kbd_listener-members.html new file mode 100644 index 0000000..8c489df --- /dev/null +++ b/pip/doc/html/class_p_i_kbd_listener-members.html @@ -0,0 +1,232 @@ + + + + + + +PIP: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    PIKbdListener Member List
    +
    +
    + +

    This is the complete list of members for PIKbdListener, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    className() const PIObjectinlinevirtual
    CONNECTPIObjectrelated
    CONNECT0PIObjectrelated
    CONNECT1PIObjectrelated
    CONNECT2PIObjectrelated
    CONNECT3PIObjectrelated
    CONNECT4PIObjectrelated
    CONNECTUPIObjectrelated
    CtrlDownArrow enum valuePIKbdListener
    CtrlLeftArrow enum valuePIKbdListener
    CtrlRightArrow enum valuePIKbdListener
    CtrlUpArrow enum valuePIKbdListener
    data()PIKbdListenerinline
    PIThread::data() const PIThreadinline
    debug() const PIObjectinline
    disableExitCapture()PIKbdListenerinline
    DISCONNECTPIObjectrelated
    DISCONNECT0PIObjectrelated
    DISCONNECT1PIObjectrelated
    DISCONNECT2PIObjectrelated
    DISCONNECT3PIObjectrelated
    DISCONNECT4PIObjectrelated
    DownArrow enum valuePIKbdListener
    emitter() const PIObjectinlineprotected
    enableExitCapture(char key)PIKbdListenerinline
    EVENTPIObjectrelated
    EVENT0PIObjectrelated
    EVENT1PIObjectrelated
    EVENT2PIObjectrelated
    EVENT3PIObjectrelated
    EVENT4PIObjectrelated
    EVENT_HANDLERPIObjectrelated
    EVENT_HANDLER0PIObjectrelated
    EVENT_HANDLER1PIObjectrelated
    EVENT_HANDLER2PIObjectrelated
    EVENT_HANDLER3PIObjectrelated
    EVENT_HANDLER4PIObjectrelated
    EVENT_VHANDLERPIObjectrelated
    EVENT_VHANDLER0PIObjectrelated
    EVENT_VHANDLER1PIObjectrelated
    EVENT_VHANDLER2PIObjectrelated
    EVENT_VHANDLER3PIObjectrelated
    EVENT_VHANDLER4PIObjectrelated
    exitCaptured() const PIKbdListenerinline
    exitKey() const PIKbdListenerinline
    findByName(const PIString &name)PIObjectinlinestatic
    HANDLERPIObjectrelated
    isActive()PIKbdListenerinline
    isPropertyExists(const PIString &name) const PIObjectinline
    isRunning() const PIThreadinline
    keyPressed(char key, void *data)PIKbdListener
    LeftArrow enum valuePIKbdListener
    lock()PIThreadinline
    mutex()PIThreadinline
    name() const PIObjectinline
    needLockRun(bool need)PIThreadinline
    piCoutObjPIObjectrelated
    piDisconnect(PIObject *src, const PIString &sig)PIObjectstatic
    piDisconnect(PIObject *src)PIObjectstatic
    piHigh enum valuePIThread
    piHighest enum valuePIThread
    PIKbdListener(KBFunc slot=0, void *data=0)PIKbdListener
    piLow enum valuePIThread
    piLowerst enum valuePIThread
    piNormal enum valuePIThread
    PIOBJECTPIObjectrelated
    PIObject(const PIString &name=PIString())PIObject
    PIOBJECT_PARENTPIObjectrelated
    PIThread(void *data, ThreadFunc func, bool startNow=false, int loop_delay=-1)PIThread
    PIThread(bool startNow=false, int loop_delay=-1)PIThread
    Priority enum namePIThread
    priority() const PIThreadinline
    properties() const PIObjectinline
    propertiesCount() const PIObjectinline
    property(const PIString &name) const PIObjectinline
    propertyChanged(const PIString &name)PIObjectinlineprotectedvirtual
    RightArrow enum valuePIKbdListener
    setActive(bool yes)PIKbdListener
    setData(void *_data)PIKbdListenerinline
    setDebug(bool debug)PIObjectinline
    setName(const PIString &name)PIObjectinline
    setPriority(PIThread::Priority prior)PIThread
    setProperty(const PIString &name, const PIVariant &value)PIObjectinline
    setSlot(KBFunc slot)PIKbdListenerinline
    PIThread::setSlot(ThreadFunc func)PIThreadinline
    SpecialSymbol enum namePIKbdListener
    start(int timer_delay)PIThread
    start(ThreadFunc func, int timer_delay)PIThreadinline
    started()PIThread
    startOnce()PIThread
    startOnce(ThreadFunc func)PIThreadinline
    stop(bool wait)PIThreadinline
    stopped()PIThread
    superClassName() const PIObjectinlinevirtual
    terminate()PIThread
    unlock()PIThreadinline
    UpArrow enum valuePIKbdListener
    waitForFinish(int timeout_msecs)PIThread
    waitForStart(int timeout_msecs)PIThread
    WEAK_CONNECTPIObjectrelated
    WEAK_CONNECT0PIObjectrelated
    WEAK_CONNECT1PIObjectrelated
    WEAK_CONNECT2PIObjectrelated
    WEAK_CONNECT3PIObjectrelated
    WEAK_CONNECT4PIObjectrelated
    +
    + + + + diff --git a/pip/doc/html/class_p_i_kbd_listener.html b/pip/doc/html/class_p_i_kbd_listener.html new file mode 100644 index 0000000..c2875b0 --- /dev/null +++ b/pip/doc/html/class_p_i_kbd_listener.html @@ -0,0 +1,601 @@ + + + + + + +PIP: PIKbdListener Class Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    + +
    +
    PIKbdListener Class Reference
    +
    +
    + +

    Keyboard console input listener. + More...

    +
    + + Inheritance diagram for PIKbdListener:
    +
    +
    + + + + + + + + + + +

    +Public Types

    enum  SpecialSymbol {
    +  UpArrow = -1, +DownArrow = -2, +RightArrow = -3, +LeftArrow = -4, +
    +  CtrlUpArrow = -5, +CtrlDownArrow = -6, +CtrlRightArrow = -7, +CtrlLeftArrow = -8 +
    + }
     Special keyboard keys. More...
     
    - Public Types inherited from PIThread
    enum  Priority {
    +  piLowerst, +piLow, +piNormal, +piHigh, +
    +  piHighest +
    + }
     Priority of thread. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    PIKbdListener (KBFunc slot=0, void *data=0)
     Constructs keyboard listener with external function "slot" and custom data "data".
     
    +void * data ()
     Returns custom data.
     
    +void setData (void *_data)
     Set custom data to "_data".
     
    +void setSlot (KBFunc slot)
     Set external function to "slot".
     
    +bool exitCaptured () const
     Returns if exit key if awaiting.
     
    +char exitKey () const
     Returns exit key, default 'Q'.
     
    +bool isActive ()
     Returns if keyboard listening is active (not running!)
     
    - Public Member Functions inherited from PIThread
    PIThread (void *data, ThreadFunc func, bool startNow=false, int loop_delay=-1)
     Contructs thread with custom data "data", external function "func" and main loop delay "loop_delay".
     
    PIThread (bool startNow=false, int loop_delay=-1)
     Contructs thread with main loop delay "loop_delay".
     
    +void setData (void *d)
     Set common data passed to external function.
     
    +void setSlot (ThreadFunc func)
     Set external function that will be executed after every run()
     
    +void setPriority (PIThread::Priority prior)
     Set priority of thread.
     
    +void * data () const
     Returns common data passed to external function.
     
    +PIThread::Priority priority () const
     Return priority of thread.
     
    +bool isRunning () const
     Return true if thread is running.
     
    +void needLockRun (bool need)
     Set necessity of lock every run with internal mutex.
     
    +PIMutexmutex ()
     Return internal mutex.
     
    bool start (int timer_delay)
     Start thread. More...
     
    bool start (ThreadFunc func, int timer_delay)
     Start thread. More...
     
    bool startOnce ()
     Start thread without internal loop. More...
     
    bool startOnce (ThreadFunc func)
     Start thread without internal loop. More...
     
    void stop (bool wait)
     Stop thread. More...
     
    void terminate ()
     Strongly stop thread. More...
     
    bool waitForStart (int timeout_msecs)
     Wait for thread start. More...
     
    bool waitForFinish (int timeout_msecs)
     Wait for thread finish. More...
     
    +void lock ()
     Lock internal mutex.
     
    +void unlock ()
     Unlock internal mutex.
     
    +void started ()
     Raise on thread start.
     
    +void stopped ()
     Raise on thread stop.
     
    - Public Member Functions inherited from PIObject
    PIObject (const PIString &name=PIString())
     Contructs PIObject with name "name".
     
    +PIString name () const
     Returns object name.
     
    +virtual const char * className () const
     Returns object class name.
     
    +virtual const char * superClassName () const
     Returns object superclass name.
     
    +bool debug () const
     Return if debug of this object is active.
     
    +void setName (const PIString &name)
     Set object name.
     
    +void setDebug (bool debug)
     Set object debug active.
     
    +const PIMap< PIString,
    +PIVariant > & 
    properties () const
     Returns properties of the object.
     
    +int propertiesCount () const
     Returns properties count of the object.
     
    +PIVariant property (const PIString &name) const
     Returns property with name "name".
     
    +void setProperty (const PIString &name, const PIVariant &value)
     Set property with name "name" to "value". If there is no such property in object it will be added.
     
    +bool isPropertyExists (const PIString &name) const
     Returns if property with name "name" exists.
     
    + + + + + + + + + + +

    +Handlers

    +void enableExitCapture (char key)
     Enable exit key "key" awaiting.
     
    +void disableExitCapture ()
     Disable exit key awaiting.
     
    +void setActive (bool yes)
     Set keyboard listening is active or not.
     
    + + + + +

    +Events

    +void keyPressed (char key, void *data)
     Raise on key "key" pressed, "data" is custom data.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Additional Inherited Members

    - Static Public Member Functions inherited from PIObject
    +static void piDisconnect (PIObject *src, const PIString &sig)
     Disconnect object "src" from all connections with event name "sig".
     
    +static void piDisconnect (PIObject *src)
     Disconnect object "src" from all connections, i.e. all connections where object "src" is emitter.
     
    +static PIObjectfindByName (const PIString &name)
     Returns PIObject* with name "name" or 0, if there is no object found.
     
    - Protected Member Functions inherited from PIObject
    +PIObjectemitter () const
     Returns PIObject* which has raised an event. This value is correct only in definition of some event handler.
     
    +virtual void propertyChanged (const PIString &name)
     Virtual function executes after property with name "name" has been changed.
     
    +

    Detailed Description

    +

    Keyboard console input listener.

    +

    This class provide listening of console keyboard input. There is two ways to receive pressed key:

      +
    • external static function with format "void func(char key, void * data_)"
    • +
    • event keyPressed()
    • +
    +

    Also there is static variable exiting which by default is set to false. If enableExitCapture() was called and listener was started with function start(), this variable will be set to true if exit key will be pressed. By default exit key is 'Q' = shift + 'q'. To wait for this variable changes to true there is WAIT_FOR_EXIT macro

    void key_event(char key, void * ) {
    +
    piCout << "key" << key << "pressed";
    +
    }
    +
    int main(int argc, char ** argv) {
    + +
    kbd.enableExitCapture();
    +
    kbd.start();
    +
    WAIT_FOR_EXIT
    +
    return 0;
    +
    }
    +

    Member Enumeration Documentation

    + +
    +
    + +

    Special keyboard keys.

    + + + + + + + + + +
    Enumerator
    UpArrow  +

    Up arrow key

    +
    DownArrow  +

    Down arrow key

    +
    RightArrow  +

    Right arrow key

    +
    LeftArrow  +

    Left arrow key

    +
    CtrlUpArrow  +

    Ctrl + Up arrow key

    +
    CtrlDownArrow  +

    Ctrl + Down arrow key

    +
    CtrlRightArrow  +

    Ctrl + Right arrow key

    +
    CtrlLeftArrow  +

    Ctrl + Left arrow key

    +
    + +
    +
    +
    +
    + + + + diff --git a/pip/doc/html/class_p_i_kbd_listener.js b/pip/doc/html/class_p_i_kbd_listener.js new file mode 100644 index 0000000..51568c0 --- /dev/null +++ b/pip/doc/html/class_p_i_kbd_listener.js @@ -0,0 +1,24 @@ +var class_p_i_kbd_listener = +[ + [ "SpecialSymbol", "class_p_i_kbd_listener.html#a3e1b468bee20e5a4155f7d99d19eb716", [ + [ "UpArrow", "class_p_i_kbd_listener.html#a3e1b468bee20e5a4155f7d99d19eb716ae4af7e9101a6ebcca1a0b94f5d389297", null ], + [ "DownArrow", "class_p_i_kbd_listener.html#a3e1b468bee20e5a4155f7d99d19eb716a2cc10cee6bd5ded7573f4ba9730cde6d", null ], + [ "RightArrow", "class_p_i_kbd_listener.html#a3e1b468bee20e5a4155f7d99d19eb716a8931e408583ed3ce190e26e4adf523eb", null ], + [ "LeftArrow", "class_p_i_kbd_listener.html#a3e1b468bee20e5a4155f7d99d19eb716a4e2a34c99dbe919ec3405fc629ac228b", null ], + [ "CtrlUpArrow", "class_p_i_kbd_listener.html#a3e1b468bee20e5a4155f7d99d19eb716a27096906a3e1a35ff46cbeae0412ed8a", null ], + [ "CtrlDownArrow", "class_p_i_kbd_listener.html#a3e1b468bee20e5a4155f7d99d19eb716a06471072c3855f97036cfaceec75ecd7", null ], + [ "CtrlRightArrow", "class_p_i_kbd_listener.html#a3e1b468bee20e5a4155f7d99d19eb716af997647f0bac2cfe113f58458a71c7ce", null ], + [ "CtrlLeftArrow", "class_p_i_kbd_listener.html#a3e1b468bee20e5a4155f7d99d19eb716a9d6d02f0615594d1fbceadb7d68ebc83", null ] + ] ], + [ "PIKbdListener", "class_p_i_kbd_listener.html#a2baa588cd4ae95363c980804b47ed461", null ], + [ "data", "class_p_i_kbd_listener.html#a1b5584b91e3280213b61b31508127598", null ], + [ "setData", "class_p_i_kbd_listener.html#a0e0b57b7012db4134a0f72c9cbfa1d07", null ], + [ "setSlot", "class_p_i_kbd_listener.html#a5e8285dbb2c1b04fffff36c6d7db1d84", null ], + [ "exitCaptured", "class_p_i_kbd_listener.html#a333aaeadb6ca6bfee5aea3378ce7e1f4", null ], + [ "exitKey", "class_p_i_kbd_listener.html#a99de0ef4e19dc43b66c3ee42cfb3b5ab", null ], + [ "isActive", "class_p_i_kbd_listener.html#ac5e65b971731b969f162f0daf332280a", null ], + [ "enableExitCapture", "class_p_i_kbd_listener.html#a15702f6822a016c0c44c3217ba1a27f8", null ], + [ "disableExitCapture", "class_p_i_kbd_listener.html#acd5b37d732168274a30c678e8373d0dd", null ], + [ "setActive", "class_p_i_kbd_listener.html#a13b9bca3e1c73dcdbbd8ea813e7893f4", null ], + [ "keyPressed", "class_p_i_kbd_listener.html#a46a45b9ee857b0cdc782ce977471c286", null ] +]; \ No newline at end of file diff --git a/pip/doc/html/class_p_i_kbd_listener__inherit__graph.map b/pip/doc/html/class_p_i_kbd_listener__inherit__graph.map new file mode 100644 index 0000000..edc4c5d --- /dev/null +++ b/pip/doc/html/class_p_i_kbd_listener__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/pip/doc/html/class_p_i_kbd_listener__inherit__graph.md5 b/pip/doc/html/class_p_i_kbd_listener__inherit__graph.md5 new file mode 100644 index 0000000..57914bc --- /dev/null +++ b/pip/doc/html/class_p_i_kbd_listener__inherit__graph.md5 @@ -0,0 +1 @@ +a7fa6a269423d7a28436ecae56935811 \ No newline at end of file diff --git a/pip/doc/html/class_p_i_kbd_listener__inherit__graph.svg b/pip/doc/html/class_p_i_kbd_listener__inherit__graph.svg new file mode 100644 index 0000000..355a04d --- /dev/null +++ b/pip/doc/html/class_p_i_kbd_listener__inherit__graph.svg @@ -0,0 +1,44 @@ + + + + + + +PIKbdListener + + +Node1 + +PIKbdListener + + +Node2 + + +PIThread + + + + +Node2->Node1 + + + + +Node3 + + +PIObject + + + + +Node3->Node2 + + + + + diff --git a/pip/doc/html/class_p_i_mutex-members.html b/pip/doc/html/class_p_i_mutex-members.html new file mode 100644 index 0000000..b70c380 --- /dev/null +++ b/pip/doc/html/class_p_i_mutex-members.html @@ -0,0 +1,131 @@ + + + + + + +PIP: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    PIMutex Member List
    +
    +
    + +

    This is the complete list of members for PIMutex, including all inherited members.

    + + + + + +
    lock()PIMutexinline
    PIMutex()PIMutex
    tryLock()PIMutexinline
    unlock()PIMutexinline
    +
    + + + + diff --git a/pip/doc/html/class_p_i_mutex.html b/pip/doc/html/class_p_i_mutex.html new file mode 100644 index 0000000..368814e --- /dev/null +++ b/pip/doc/html/class_p_i_mutex.html @@ -0,0 +1,238 @@ + + + + + + +PIP: PIMutex Class Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    + +
    +
    PIMutex Class Reference
    +
    +
    + +

    Mutex. + More...

    + + + + + + + + + + + + + + +

    +Public Member Functions

    PIMutex ()
     Constructs unlocked mutex.
     
    void lock ()
     Lock mutex. More...
     
    void unlock ()
     Unlock mutex. More...
     
    bool tryLock ()
     Try to lock mutex. More...
     
    +

    Detailed Description

    +

    Mutex.

    +

    +Synopsis

    +

    PIMutex provides synchronization blocks between several threads. Using mutex guarantees execution of some code only one of threads. Mutex contains logic state and functions to change it: lock(), unlock() and tryLock().

    +

    +Usage

    +

    Block of code that should to be executed only one thread simultaniously should to be started with lock() and ended with unlock().

    mutex.lock();
    +
    // ... your code here
    +
    mutex.unlock();
    +

    "mutex" in this example is one for all threads.

    +

    Member Function Documentation

    + +
    +
    + + + + + +
    + + + + + + + +
    void PIMutex::lock ()
    +
    +inline
    +
    + +

    Lock mutex.

    +

    If mutex is unlocked it set to locked state and returns immediate. If mutex is already locked function blocks until mutex will be unlocked

    + +
    +
    + +
    +
    + + + + + +
    + + + + + + + +
    void PIMutex::unlock ()
    +
    +inline
    +
    + +

    Unlock mutex.

    +

    In any case this function returns immediate

    + +
    +
    + +
    +
    + + + + + +
    + + + + + + + +
    bool PIMutex::tryLock ()
    +
    +inline
    +
    + +

    Try to lock mutex.

    +

    If mutex is unlocked it set to locked state and returns "true" immediate. If mutex is already locked function returns immediate an returns "false"

    + +
    +
    +
    +
    + + + + diff --git a/pip/doc/html/class_p_i_mutex.js b/pip/doc/html/class_p_i_mutex.js new file mode 100644 index 0000000..6779ed0 --- /dev/null +++ b/pip/doc/html/class_p_i_mutex.js @@ -0,0 +1,7 @@ +var class_p_i_mutex = +[ + [ "PIMutex", "class_p_i_mutex.html#ac4d6be4bdac6af45f1db56c4d1a0d971", null ], + [ "lock", "class_p_i_mutex.html#aa571ad61ee7bd5fcf60f6f5032a16441", null ], + [ "unlock", "class_p_i_mutex.html#aae483d17150e38436ca25a1bd26b04c2", null ], + [ "tryLock", "class_p_i_mutex.html#a5c4ed063c5c7d7ee94ff3402d320851a", null ] +]; \ No newline at end of file diff --git a/pip/doc/html/class_p_i_object-members.html b/pip/doc/html/class_p_i_object-members.html new file mode 100644 index 0000000..9b60818 --- /dev/null +++ b/pip/doc/html/class_p_i_object-members.html @@ -0,0 +1,185 @@ + + + + + + +PIP: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    PIObject Member List
    +
    +
    + +

    This is the complete list of members for PIObject, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    className() const PIObjectinlinevirtual
    CONNECTPIObjectrelated
    CONNECT0PIObjectrelated
    CONNECT1PIObjectrelated
    CONNECT2PIObjectrelated
    CONNECT3PIObjectrelated
    CONNECT4PIObjectrelated
    CONNECTUPIObjectrelated
    debug() const PIObjectinline
    DISCONNECTPIObjectrelated
    DISCONNECT0PIObjectrelated
    DISCONNECT1PIObjectrelated
    DISCONNECT2PIObjectrelated
    DISCONNECT3PIObjectrelated
    DISCONNECT4PIObjectrelated
    emitter() const PIObjectinlineprotected
    EVENTPIObjectrelated
    EVENT0PIObjectrelated
    EVENT1PIObjectrelated
    EVENT2PIObjectrelated
    EVENT3PIObjectrelated
    EVENT4PIObjectrelated
    EVENT_HANDLERPIObjectrelated
    EVENT_HANDLER0PIObjectrelated
    EVENT_HANDLER1PIObjectrelated
    EVENT_HANDLER2PIObjectrelated
    EVENT_HANDLER3PIObjectrelated
    EVENT_HANDLER4PIObjectrelated
    EVENT_VHANDLERPIObjectrelated
    EVENT_VHANDLER0PIObjectrelated
    EVENT_VHANDLER1PIObjectrelated
    EVENT_VHANDLER2PIObjectrelated
    EVENT_VHANDLER3PIObjectrelated
    EVENT_VHANDLER4PIObjectrelated
    findByName(const PIString &name)PIObjectinlinestatic
    HANDLERPIObjectrelated
    isPropertyExists(const PIString &name) const PIObjectinline
    name() const PIObjectinline
    piCoutObjPIObjectrelated
    piDisconnect(PIObject *src, const PIString &sig)PIObjectstatic
    piDisconnect(PIObject *src)PIObjectstatic
    PIObject(const PIString &name=PIString())PIObject
    PIOBJECTPIObjectrelated
    PIOBJECT_PARENTPIObjectrelated
    properties() const PIObjectinline
    propertiesCount() const PIObjectinline
    property(const PIString &name) const PIObjectinline
    propertyChanged(const PIString &name)PIObjectinlineprotectedvirtual
    setDebug(bool debug)PIObjectinline
    setName(const PIString &name)PIObjectinline
    setProperty(const PIString &name, const PIVariant &value)PIObjectinline
    superClassName() const PIObjectinlinevirtual
    WEAK_CONNECTPIObjectrelated
    WEAK_CONNECT0PIObjectrelated
    WEAK_CONNECT1PIObjectrelated
    WEAK_CONNECT2PIObjectrelated
    WEAK_CONNECT3PIObjectrelated
    WEAK_CONNECT4PIObjectrelated
    +
    + + + + diff --git a/pip/doc/html/class_p_i_object.html b/pip/doc/html/class_p_i_object.html new file mode 100644 index 0000000..c153376 --- /dev/null +++ b/pip/doc/html/class_p_i_object.html @@ -0,0 +1,432 @@ + + + + + + +PIP: PIObject Class Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + + +
    + +

    This is base class for any classes which use events -> handlers mechanism. + More...

    +
    + + Inheritance diagram for PIObject:
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    PIObject (const PIString &name=PIString())
     Contructs PIObject with name "name".
     
    +PIString name () const
     Returns object name.
     
    +virtual const char * className () const
     Returns object class name.
     
    +virtual const char * superClassName () const
     Returns object superclass name.
     
    +bool debug () const
     Return if debug of this object is active.
     
    +void setName (const PIString &name)
     Set object name.
     
    +void setDebug (bool debug)
     Set object debug active.
     
    +const PIMap< PIString,
    +PIVariant > & 
    properties () const
     Returns properties of the object.
     
    +int propertiesCount () const
     Returns properties count of the object.
     
    +PIVariant property (const PIString &name) const
     Returns property with name "name".
     
    +void setProperty (const PIString &name, const PIVariant &value)
     Set property with name "name" to "value". If there is no such property in object it will be added.
     
    +bool isPropertyExists (const PIString &name) const
     Returns if property with name "name" exists.
     
    + + + + + + + + + + +

    +Static Public Member Functions

    +static void piDisconnect (PIObject *src, const PIString &sig)
     Disconnect object "src" from all connections with event name "sig".
     
    +static void piDisconnect (PIObject *src)
     Disconnect object "src" from all connections, i.e. all connections where object "src" is emitter.
     
    +static PIObjectfindByName (const PIString &name)
     Returns PIObject* with name "name" or 0, if there is no object found.
     
    + + + + + + + +

    +Protected Member Functions

    +PIObjectemitter () const
     Returns PIObject* which has raised an event. This value is correct only in definition of some event handler.
     
    +virtual void propertyChanged (const PIString &name)
     Virtual function executes after property with name "name" has been changed.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Related Functions

    (Note that these are not member functions.)

    +
    +#define piCoutObj
     Macro used for conditional (piDebug and PIObject::debug()) output to PICout for subclasses of PIObject.
     
    +#define PIOBJECT(name)
     you should use this macro after class declaration to use EVENT and EVENT_HANDLER and correct piCoutObj output
     
    +#define PIOBJECT_PARENT(name)
     you should use this macro after class declaration to use EVENT and EVENT_HANDLER of parent class
     
    +#define EVENT_HANDLER0(ret, name)   ret name()
     declare event handler "event" with name "name" and return type "ret", ret name()
     
    +#define EVENT_HANDLER1(ret, name, type0, var0)   ret name(type0 var0)
     declare event handler "event" with name "name" and return type "ret", ret name(type0 var0)
     
    +#define EVENT_HANDLER2(ret, name, type0, var0, type1, var1)   ret name(type0 var0, type1 var1)
     declare event handler "event" with name "name" and return type "ret", ret name(type0 var0, type1 var1)
     
    +#define EVENT_HANDLER3(ret, name, type0, var0, type1, var1, type2, var2)   ret name(type0 var0, type1 var1, type2 var2)
     declare event handler "event" with name "name" and return type "ret", ret name(type0 var0, type1 var1, type2 var2)
     
    +#define EVENT_HANDLER4(ret, name, type0, var0, type1, var1, type2, var2, type3, var3)   ret name(type0 var0, type1 var1, type2 var2, type3 var3)
     declare event handler "event" with name "name" and return type "ret", ret name(type0 var0, type1 var1, type2 var2, type3 var3)
     
    +#define EVENT_HANDLER   EVENT_HANDLER0
     EVENT_HANDLER is synonym of EVENT_HANDLER0.
     
    +#define EVENT_VHANDLER0(ret, name)   virtual ret name()
     declare virtual event handler "event" with name "name" and return type "ret", virtual ret name()
     
    +#define EVENT_VHANDLER1(ret, name, type0, var0)   virtual ret name(type0 var0)
     declare virtual event handler "event" with name "name" and return type "ret", virtual ret name(type0 var0)
     
    +#define EVENT_VHANDLER2(ret, name, type0, var0, type1, var1)   virtual ret name(type0 var0, type1 var1)
     declare virtual event handler "event" with name "name" and return type "ret", virtual ret name(type0 var0, type1 var1)
     
    +#define EVENT_VHANDLER3(ret, name, type0, var0, type1, var1, type2, var2)   virtual ret name(type0 var0, type1 var1, type2 var2)
     declare virtual event handler "event" with name "name" and return type "ret", virtual ret name(type0 var0, type1 var1, type2 var2)
     
    +#define EVENT_VHANDLER4(ret, name, type0, var0, type1, var1, type2, var2, type3, var3)   virtual ret name(type0 var0, type1 var1, type2 var2, type3 var3)
     declare virtual event handler "event" with name "name" and return type "ret", virtual ret name(type0 var0, type1 var1, type2 var2, type3 var3)
     
    +#define EVENT_VHANDLER   EVENT_VHANDLER0
     EVENT_VHANDLER is synonym of EVENT_VHANDLER0.
     
    +#define EVENT0(name)   void name();
     declare event "event" with name "name", void name();
     
    +#define EVENT1(name, type0, var0)   void name(type0 var0);
     declare event "event" with name "name", void name(type0 var0);
     
    +#define EVENT2(name, type0, var0, type1, var1)   void name(type0 var0, type1 var1);
     declare event "event" with name "name", void name(type0 var0, type1 var1);
     
    +#define EVENT3(name, type0, var0, type1, var1, type2, var2)   void name(type0 var0, type1 var1, type2 var2);
     declare event "event" with name "name", void name(type0 var0, type1 var1, type2 var2);
     
    +#define EVENT4(name, type0, var0, type1, var1, type2, var2, type3, var3)   void name(type0 var0, type1 var1, type2 var2, type3 var3);
     declare event "event" with name "name", void name(type0 var0, type1 var1, type2 var2, type3 var3);
     
    +#define EVENT   EVENT0
     EVENT is synonym of EVENT0.
     
    +#define CONNECTU(src, event, dest, handler)
     connect event "event" from object "src" to event handler "handler". "Event" and "handler" must has equal argument lists.
     
    +#define CONNECT0(ret, src, event, dest, handler)
     connect event "event" from object "src" to event handler "handler" with return type "ret" from object "dest" with check of event and handler exists
     
    +#define CONNECT1(ret, type0, src, event, dest, handler)
     connect event "event" from object "src" to event handler "handler" with return type "ret" from object "dest" with check of event and handler exists
     
    +#define CONNECT2(ret, type0, type1, src, event, dest, handler)
     connect event "event" from object "src" to event handler "handler" with return type "ret" from object "dest" with check of event and handler exists
     
    +#define CONNECT3(ret, type0, type1, type2, src, event, dest, handler)
     connect event "event" from object "src" to event handler "handler" with return type "ret" from object "dest" with check of event and handler exists
     
    +#define CONNECT4(ret, type0, type1, type2, type3, src, event, dest, handler)
     connect event "event" from object "src" to event handler "handler" with return type "ret" from object "dest" with check of event and handler exists
     
    +#define CONNECT   CONNECT0
     CONNECT is synonym of CONNECT0.
     
    +#define WEAK_CONNECT0(ret, src, event, dest, handler)
     connect event "event" from object "src" to event handler "handler" with return type "ret" from object "dest" without check of event exists
     
    +#define WEAK_CONNECT1(ret, type0, src, event, dest, handler)
     connect event "event" from object "src" to event handler "handler" with return type "ret" from object "dest" without check of event exists
     
    +#define WEAK_CONNECT2(ret, type0, type1, src, event, dest, handler)
     connect event "event" from object "src" to event handler "handler" with return type "ret" from object "dest" without check of event exists
     
    +#define WEAK_CONNECT3(ret, type0, type1, type2, src, event, dest, handler)
     connect event "event" from object "src" to event handler "handler" with return type "ret" from object "dest" without check of event exists
     
    +#define WEAK_CONNECT4(ret, type0, type1, type2, type3, src, event, dest, handler)
     connect event "event" from object "src" to event handler "handler" with return type "ret" from object "dest" without check of event exists
     
    +#define WEAK_CONNECT   WEAK_CONNECT0
     WEAK_CONNECT is synonym of WEAK_CONNECT0.
     
    +#define DISCONNECT0(ret, src, event, dest, handler)
     piDisconnect event "event" from object "src" from event handler "handler" with return type "ret" from object "dest"
     
    +#define DISCONNECT1(ret, type0, src, event, dest, handler)
     piDisconnect event "event" from object "src" from event handler "handler" with return type "ret" from object "dest"
     
    +#define DISCONNECT2(ret, type0, type1, src, event, dest, handler)
     piDisconnect event "event" from object "src" from event handler "handler" with return type "ret" from object "dest"
     
    +#define DISCONNECT3(ret, type0, type1, type2, src, event, dest, handler)
     piDisconnect event "event" from object "src" from event handler "handler" with return type "ret" from object "dest"
     
    +#define DISCONNECT4(ret, type0, type1, type2, type3, src, event, dest, handler)
     piDisconnect event "event" from object "src" from event handler "handler" with return type "ret" from object "dest"
     
    +#define DISCONNECT   DISCONNECT0
     DISCONNECT is synonym of DISCONNECT0.
     
    +#define HANDLER(handler)
     Returns pointer to events handler "handler".
     
    +

    Detailed Description

    +

    This is base class for any classes which use events -> handlers mechanism.

    +

    +Events and Event handlers

    +

    PIObject provide notification mechanism similar Qt but implemented on language capabilities without any special preprocessors or compilers. Any class inherits PIObject should use macro PIOBJECT() immediate after declaration to proper compile.

    +

    Event is a some abstract event that can be raised at any time. Event is a function but declared with special macro EVENT(). To raise event simply execute event function.

    +

    Event handler is a function but declared with special macro EVENT_HANDLER(). You can use event handlers as ordinary functions.

    +

    Main goal of this mechanism is perform abstract connections between various objects. This functionality provide macro CONNECT() which connect some event of first object to some event handler or event of second object. Each event can be connected any times to any event handlers.

    +
    +events_handlers.png +
    +

    Example:

    class ObjectA: public PIObject {
    +
    PIOBJECT(ObjectA)
    +
    public:
    +
    EVENT_HANDLER1(void, handlerA, const PIString & , str) {piCoutObj << "handler A:" << str;}
    +
    EVENT2(eventA2, int, i, float, f);
    +
    EVENT1(eventA1, const PIString & , str);
    +
    };
    +
    +
    class ObjectB: public PIObject {
    +
    PIOBJECT(ObjectB)
    +
    public:
    +
    EVENT_HANDLER2(void, handlerB, int, i, float, f) {piCoutObj << "handler B:" << i << "," << f;}
    +
    EVENT1(eventB, PIString, str);
    +
    };
    +
    +
    int main(int argc, char * argv[]) {
    +
    ObjectA obj_a;
    +
    ObjectB obj_b;
    +
    +
    CONNECT2(void, int, float, &obj_a, eventA2, &obj_b, handlerB);
    +
    obj_a.eventA2(2, 0.5);
    +
    +
    CONNECT1(void, PIString, &obj_b, eventB, &obj_a, handlerA);
    +
    obj_b.eventB("event to handler");
    +
    +
    CONNECT1(void, PIString, &obj_a, eventA1, &obj_b, eventB);
    +
    obj_a.eventA1("event to event");
    +
    };
    +

    Result:

    handler B: 2 , 0.5
    +
    handler A: event to handler
    +
    handler A: event to event
    +
    +
    + + + + diff --git a/pip/doc/html/class_p_i_object.js b/pip/doc/html/class_p_i_object.js new file mode 100644 index 0000000..81c969a --- /dev/null +++ b/pip/doc/html/class_p_i_object.js @@ -0,0 +1,58 @@ +var class_p_i_object = +[ + [ "PIObject", "class_p_i_object.html#a779d66bab882a51ef6389d2e212f2bd6", null ], + [ "name", "class_p_i_object.html#aee2242a0210f2a009d63764e01a37338", null ], + [ "className", "class_p_i_object.html#a5da8208d12e37e5277db308939208150", null ], + [ "superClassName", "class_p_i_object.html#a41060ba64a882ef4c3b24dc868c5635c", null ], + [ "debug", "class_p_i_object.html#a286d39fdf2dacf8bc1f26c8744d8bf18", null ], + [ "setName", "class_p_i_object.html#a8eb211f42dfcf7b7a1f32acabbfd6ada", null ], + [ "setDebug", "class_p_i_object.html#a9a0ec972d4864287fae4d1a0edcd9dc5", null ], + [ "properties", "class_p_i_object.html#aeb8178ed4012f204d2c89a8413bbcd2d", null ], + [ "propertiesCount", "class_p_i_object.html#a68dbd55885a081be717ff818dcb31bcc", null ], + [ "property", "class_p_i_object.html#ad0cadfad8b61e8c994abde7d2d4853ac", null ], + [ "setProperty", "class_p_i_object.html#a647e2f79b975cf88d636a2ca2dadfb9c", null ], + [ "isPropertyExists", "class_p_i_object.html#a8d6bd4c57aa01dc41e1b28720f9604a7", null ], + [ "emitter", "class_p_i_object.html#a2f43644909496ba11ca294a67ed18deb", null ], + [ "propertyChanged", "class_p_i_object.html#a2f98c7c43b93f9d636e9119f0a577715", null ], + [ "piCoutObj", "class_p_i_object.html#a722b67a967e55918f6921de66ecffce9", null ], + [ "PIOBJECT", "class_p_i_object.html#affa62b02040517a34b3f173d804e487f", null ], + [ "PIOBJECT_PARENT", "class_p_i_object.html#a4ce1840f79eac65344a4c5823f5034d4", null ], + [ "EVENT_HANDLER0", "class_p_i_object.html#ab605cf0454d34cc72c65bfed2abd696a", null ], + [ "EVENT_HANDLER1", "class_p_i_object.html#a56defa004e9b7efb2db50b3a43ca7225", null ], + [ "EVENT_HANDLER2", "class_p_i_object.html#abb64b696544ee4ee8715add9747c1293", null ], + [ "EVENT_HANDLER3", "class_p_i_object.html#af90eced49fbdb43f5fc631fa7e7a44fb", null ], + [ "EVENT_HANDLER4", "class_p_i_object.html#ae8a8499ba07a4cc16c0b15c51b197d9f", null ], + [ "EVENT_HANDLER", "class_p_i_object.html#ae92ae8e64fbb4c6fa7d87cc1e93d55c0", null ], + [ "EVENT_VHANDLER0", "class_p_i_object.html#a338377c8ec10707dd26a168b8aef5c31", null ], + [ "EVENT_VHANDLER1", "class_p_i_object.html#abf138848427466a7ae91ada5876f926d", null ], + [ "EVENT_VHANDLER2", "class_p_i_object.html#ad0ba4a14c77b8d968dc13918f9b2d384", null ], + [ "EVENT_VHANDLER3", "class_p_i_object.html#a4f47b429ac594cebdca1567e1b9a1021", null ], + [ "EVENT_VHANDLER4", "class_p_i_object.html#a96b2461314db11f3b68942bcd4b9d13d", null ], + [ "EVENT_VHANDLER", "class_p_i_object.html#a26a0e3181ebb2a90c11e9a7eb906a99e", null ], + [ "EVENT0", "class_p_i_object.html#a4fa760299649bc8aeaa0dcf4d605be70", null ], + [ "EVENT1", "class_p_i_object.html#a7083e0b630c70def2ce05d60d70a45b9", null ], + [ "EVENT2", "class_p_i_object.html#a91d380b7235ad11b4830c4c2e8860618", null ], + [ "EVENT3", "class_p_i_object.html#a685a85b0791e73158dc0173b4e18dd00", null ], + [ "EVENT4", "class_p_i_object.html#a59032ae5e0b94cdfb52be1f24d5e8252", null ], + [ "EVENT", "class_p_i_object.html#a7877e997621e1161f058fce90febd464", null ], + [ "CONNECTU", "class_p_i_object.html#ac86f9567fcbe10d7e49685e0a01b8427", null ], + [ "CONNECT0", "class_p_i_object.html#a38e74a7ce99df00a10517f5ce4aa66c5", null ], + [ "CONNECT1", "class_p_i_object.html#a36132851189bb01db4957595111a28db", null ], + [ "CONNECT2", "class_p_i_object.html#a850bbf4e8361a106c99da4c46f684247", null ], + [ "CONNECT3", "class_p_i_object.html#ab45dbd69bde3cde22d4aba27ed585407", null ], + [ "CONNECT4", "class_p_i_object.html#a34e41d730c07354e07333def3d854019", null ], + [ "CONNECT", "class_p_i_object.html#a65528c74adc6691eac2c7a2f39328064", null ], + [ "WEAK_CONNECT0", "class_p_i_object.html#aaaba5b68617a43903056bc175b8cd162", null ], + [ "WEAK_CONNECT1", "class_p_i_object.html#a37d80492e781bf82b9c22c56977da81e", null ], + [ "WEAK_CONNECT2", "class_p_i_object.html#a34134cc70172ef5a8d38ba8eb0db327d", null ], + [ "WEAK_CONNECT3", "class_p_i_object.html#a601eb7e6e4c3c1a2ba741abbaf271fed", null ], + [ "WEAK_CONNECT4", "class_p_i_object.html#a483ad0828f2c221308d95fd07ba1ee6e", null ], + [ "WEAK_CONNECT", "class_p_i_object.html#a52fc22658e025b4c15c8a2454d81b289", null ], + [ "DISCONNECT0", "class_p_i_object.html#aed7fd8edaccbbca33c51417ca43ac32a", null ], + [ "DISCONNECT1", "class_p_i_object.html#ae030e8deb226c636d2df22076391f12c", null ], + [ "DISCONNECT2", "class_p_i_object.html#a8f0609bfd7dfcd4512d76480bc114dab", null ], + [ "DISCONNECT3", "class_p_i_object.html#af2789f99d1916f231fc579f00370fa6f", null ], + [ "DISCONNECT4", "class_p_i_object.html#aedf429d3192da764163c1377cad310e3", null ], + [ "DISCONNECT", "class_p_i_object.html#a587604e6f3570c0fc32794384d4d0d1f", null ], + [ "HANDLER", "class_p_i_object.html#a3f7b0da6b28ced23e1deee48dde17c98", null ] +]; \ No newline at end of file diff --git a/pip/doc/html/class_p_i_object__inherit__graph.map b/pip/doc/html/class_p_i_object__inherit__graph.map new file mode 100644 index 0000000..467455b --- /dev/null +++ b/pip/doc/html/class_p_i_object__inherit__graph.map @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/pip/doc/html/class_p_i_object__inherit__graph.md5 b/pip/doc/html/class_p_i_object__inherit__graph.md5 new file mode 100644 index 0000000..316bc54 --- /dev/null +++ b/pip/doc/html/class_p_i_object__inherit__graph.md5 @@ -0,0 +1 @@ +03543378d017772e3db551d54fff8d9e \ No newline at end of file diff --git a/pip/doc/html/class_p_i_object__inherit__graph.svg b/pip/doc/html/class_p_i_object__inherit__graph.svg new file mode 100644 index 0000000..5a7f3a0 --- /dev/null +++ b/pip/doc/html/class_p_i_object__inherit__graph.svg @@ -0,0 +1,327 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +PIObject + + +Node1 + +PIObject + + +Node2 + + +PICLI + + + + +Node1->Node2 + + + + +Node3 + + +PIConnection + + + + +Node1->Node3 + + + + +Node4 + + +PIProtocol + + + + +Node1->Node4 + + + + +Node5 + + +PIStateMachine< Type > + + + + +Node1->Node5 + + + + +Node6 + + +PIThread + + + + +Node1->Node6 + + + + +Node17 + + +PITimer + + + + +Node1->Node17 + + + + +Node7 + + +PIConsole + + + + +Node6->Node7 + + + + +Node8 + + +PIIODevice + + + + +Node6->Node8 + + + + +Node15 + + +PIKbdListener + + + + +Node6->Node15 + + + + +Node16 + + +PIProcess + + + + +Node6->Node16 + + + + +Node9 + + +PIBinaryLog + + + + +Node8->Node9 + + + + +Node10 + + +PIEthernet + + + + +Node8->Node10 + + + + +Node11 + + +PIFile + + + + +Node8->Node11 + + + + +Node13 + + +PIPacketExtractor + + + + +Node8->Node13 + + + + +Node14 + + +PISerial + + + + +Node8->Node14 + + + + +Node12 + + +PIConfig + + + + +Node11->Node12 + + + + +Node18 + + +PIDiagnostics + + + + +Node17->Node18 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pip/doc/html/class_p_i_object__inherit__graph_org.svg b/pip/doc/html/class_p_i_object__inherit__graph_org.svg new file mode 100644 index 0000000..c81aba4 --- /dev/null +++ b/pip/doc/html/class_p_i_object__inherit__graph_org.svg @@ -0,0 +1,239 @@ + + + + + + +PIObject + + +Node1 + +PIObject + + +Node2 + + +PICLI + + + + +Node1->Node2 + + + + +Node3 + + +PIConnection + + + + +Node1->Node3 + + + + +Node4 + + +PIProtocol + + + + +Node1->Node4 + + + + +Node5 + + +PIStateMachine< Type > + + + + +Node1->Node5 + + + + +Node6 + + +PIThread + + + + +Node1->Node6 + + + + +Node17 + + +PITimer + + + + +Node1->Node17 + + + + +Node7 + + +PIConsole + + + + +Node6->Node7 + + + + +Node8 + + +PIIODevice + + + + +Node6->Node8 + + + + +Node15 + + +PIKbdListener + + + + +Node6->Node15 + + + + +Node16 + + +PIProcess + + + + +Node6->Node16 + + + + +Node9 + + +PIBinaryLog + + + + +Node8->Node9 + + + + +Node10 + + +PIEthernet + + + + +Node8->Node10 + + + + +Node11 + + +PIFile + + + + +Node8->Node11 + + + + +Node13 + + +PIPacketExtractor + + + + +Node8->Node13 + + + + +Node14 + + +PISerial + + + + +Node8->Node14 + + + + +Node12 + + +PIConfig + + + + +Node11->Node12 + + + + +Node18 + + +PIDiagnostics + + + + +Node17->Node18 + + + + + diff --git a/pip/doc/html/class_p_i_packet_extractor-members.html b/pip/doc/html/class_p_i_packet_extractor-members.html new file mode 100644 index 0000000..f8529fb --- /dev/null +++ b/pip/doc/html/class_p_i_packet_extractor-members.html @@ -0,0 +1,250 @@ + + + + + + +PIP: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    PIPacketExtractor Member List
    +
    +
    + +

    This is the complete list of members for PIPacketExtractor, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    bufferSize() const PIPacketExtractorinline
    className() const PIObjectinlinevirtual
    closeDevice()PIIODeviceinlineprotectedvirtual
    configureDevice(const void *e_main, const void *e_parent=0)PIIODeviceinlineprotectedvirtual
    configureFromFullPath(const PIString &full_path)PIIODeviceinlineprotectedvirtual
    CONNECTPIObjectrelated
    CONNECT0PIObjectrelated
    CONNECT1PIObjectrelated
    CONNECT2PIObjectrelated
    CONNECT3PIObjectrelated
    CONNECT4PIObjectrelated
    CONNECTUPIObjectrelated
    constructFullPath() const PIPacketExtractorvirtual
    PIIODevice::data() const PIThreadinline
    debug() const PIObjectinline
    device()PIPacketExtractorinline
    DISCONNECTPIObjectrelated
    DISCONNECT0PIObjectrelated
    DISCONNECT1PIObjectrelated
    DISCONNECT2PIObjectrelated
    DISCONNECT3PIObjectrelated
    DISCONNECT4PIObjectrelated
    emitter() const PIObjectinlineprotected
    EVENTPIObjectrelated
    EVENT0PIObjectrelated
    EVENT1PIObjectrelated
    EVENT2PIObjectrelated
    EVENT3PIObjectrelated
    EVENT4PIObjectrelated
    EVENT_HANDLERPIObjectrelated
    EVENT_HANDLER0PIObjectrelated
    EVENT_HANDLER1PIObjectrelated
    EVENT_HANDLER2PIObjectrelated
    EVENT_HANDLER3PIObjectrelated
    EVENT_HANDLER4PIObjectrelated
    EVENT_VHANDLERPIObjectrelated
    EVENT_VHANDLER0PIObjectrelated
    EVENT_VHANDLER1PIObjectrelated
    EVENT_VHANDLER2PIObjectrelated
    EVENT_VHANDLER3PIObjectrelated
    EVENT_VHANDLER4PIObjectrelated
    findByName(const PIString &name)PIObjectinlinestatic
    Footer enum valuePIPacketExtractor
    footer() const PIPacketExtractorinline
    HANDLERPIObjectrelated
    header() const PIPacketExtractorinline
    Header enum valuePIPacketExtractor
    HeaderAndFooter enum valuePIPacketExtractor
    init()PIIODeviceinlineprotectedvirtual
    isPropertyExists(const PIString &name) const PIObjectinline
    isRunning() const PIThreadinline
    lock()PIThreadinline
    missedBytes() const PIPacketExtractorinline
    missedBytes_ptr() const PIPacketExtractorinline
    mutex()PIThreadinline
    name() const PIObjectinline
    needLockRun(bool need)PIThreadinline
    None enum valuePIPacketExtractor
    packetReceived(uchar *data, int size)PIPacketExtractor
    packetSize() const PIPacketExtractorinline
    payloadSize() const PIPacketExtractorinline
    piCoutObjPIObjectrelated
    piDisconnect(PIObject *src, const PIString &sig)PIObjectstatic
    piDisconnect(PIObject *src)PIObjectstatic
    piHigh enum valuePIThread
    piHighest enum valuePIThread
    PIIODEVICEPIIODevicerelated
    piLow enum valuePIThread
    piLowerst enum valuePIThread
    piNormal enum valuePIThread
    PIOBJECTPIObjectrelated
    PIObject(const PIString &name=PIString())PIObject
    PIOBJECT_PARENTPIObjectrelated
    PIPacketExtractor(PIIODevice *device_=0, SplitMode mode=None)PIPacketExtractor
    PIThread(void *data, ThreadFunc func, bool startNow=false, int loop_delay=-1)PIThread
    PIThread(bool startNow=false, int loop_delay=-1)PIThread
    Priority enum namePIThread
    priority() const PIThreadinline
    properties() const PIObjectinline
    propertiesCount() const PIObjectinline
    property(const PIString &name) const PIObjectinline
    read(void *read_to, int max_size)PIPacketExtractorinlinevirtual
    readDeviceSetting(const PIString &name, const T &def, const PIConfig::Entry *em, const PIConfig::Entry *ep)PIIODevicerelated
    REGISTER_DEVICEPIIODevicerelated
    setBufferSize(int new_size)PIPacketExtractorinline
    setData(void *d)PIThreadinline
    setDebug(bool debug)PIObjectinline
    setDevice(PIIODevice *device_)PIPacketExtractor
    setFooter(const PIByteArray &data)PIPacketExtractor
    setHeader(const PIByteArray &data)PIPacketExtractor
    setName(const PIString &name)PIObjectinline
    setPacketSize(int size)PIPacketExtractorinline
    setPayloadSize(int size)PIPacketExtractor
    setPriority(PIThread::Priority prior)PIThread
    setProperty(const PIString &name, const PIVariant &value)PIObjectinline
    setSlot(ThreadFunc func)PIThreadinline
    setSplitMode(SplitMode mode)PIPacketExtractorinline
    setTimeout(double msecs)PIPacketExtractorinline
    Size enum valuePIPacketExtractor
    SplitMode enum namePIPacketExtractor
    splitMode() const PIPacketExtractorinline
    PIThread::start(int timer_delay)PIThread
    PIThread::start(ThreadFunc func, int timer_delay)PIThreadinline
    started()PIThread
    startOnce()PIThread
    startOnce(ThreadFunc func)PIThreadinline
    stopped()PIThread
    superClassName() const PIObjectinlinevirtual
    Timeout enum valuePIPacketExtractor
    timeout() const PIPacketExtractorinline
    unlock()PIThreadinline
    validateFooter(uchar *src, uchar *rec, int size)PIPacketExtractorinlineprotectedvirtual
    validateHeader(uchar *src, uchar *rec, int size)PIPacketExtractorinlineprotectedvirtual
    validatePayload(uchar *rec, int size)PIPacketExtractorinlineprotectedvirtual
    waitForFinish(int timeout_msecs)PIThread
    waitForStart(int timeout_msecs)PIThread
    WEAK_CONNECTPIObjectrelated
    WEAK_CONNECT0PIObjectrelated
    WEAK_CONNECT1PIObjectrelated
    WEAK_CONNECT2PIObjectrelated
    WEAK_CONNECT3PIObjectrelated
    WEAK_CONNECT4PIObjectrelated
    write(const void *data, int max_size)PIPacketExtractorinlinevirtual
    +
    + + + + diff --git a/pip/doc/html/class_p_i_packet_extractor.html b/pip/doc/html/class_p_i_packet_extractor.html new file mode 100644 index 0000000..24f24fc --- /dev/null +++ b/pip/doc/html/class_p_i_packet_extractor.html @@ -0,0 +1,854 @@ + + + + + + +PIP: PIPacketExtractor Class Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    + +
    +
    PIPacketExtractor Class Reference
    +
    +
    + +

    Packets extractor. + More...

    +
    + + Inheritance diagram for PIPacketExtractor:
    +
    +
    + + + + + + + + + + +

    +Public Types

    enum  SplitMode {
    +  None, +Header, +Footer, +HeaderAndFooter, +
    +  Size, +Timeout +
    + }
     Extract algorithms. More...
     
    - Public Types inherited from PIThread
    enum  Priority {
    +  piLowerst, +piLow, +piNormal, +piHigh, +
    +  piHighest +
    + }
     Priority of thread. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    PIPacketExtractor (PIIODevice *device_=0, SplitMode mode=None)
     Contructs extractor with child device "device_" and extract algorithm "mode".
     
    +PIIODevicedevice ()
     Returns child device.
     
    +void setDevice (PIIODevice *device_)
     Set child device to "device_".
     
    +int bufferSize () const
     Returns buffer size.
     
    +void setBufferSize (int new_size)
     Set buffer size to "new_size" bytes, should be at least greater than whole packet size.
     
    +void setSplitMode (SplitMode mode)
     Set extract algorithm.
     
    +void setPayloadSize (int size)
     Set payload size, used for PIPacketExtractor::Header and PIPacketExtractor::Footer algorithms.
     
    +void setHeader (const PIByteArray &data)
     Set header data, used for PIPacketExtractor::Header and PIPacketExtractor::HeaderAndFooter algorithms.
     
    +void setFooter (const PIByteArray &data)
     Set footer data, used for PIPacketExtractor::Footer and PIPacketExtractor::HeaderAndFooter algorithms.
     
    +void setPacketSize (int size)
     Set packet size, used for PIPacketExtractor::Size algorithm.
     
    +void setTimeout (double msecs)
     Set timeout in milliseconds, used for PIPacketExtractor::Timeout algorithm.
     
    +SplitMode splitMode () const
     Returns current extract algorithm.
     
    +int payloadSize () const
     Returns current payload size, used for PIPacketExtractor::Header and PIPacketExtractor::Footer algorithms.
     
    +PIByteArray header () const
     Returns current header data, used for PIPacketExtractor::Header and PIPacketExtractor::HeaderAndFooter algorithms.
     
    +PIByteArray footer () const
     Returns current footer data, used for PIPacketExtractor::Footer and PIPacketExtractor::HeaderAndFooter algorithms.
     
    +int packetSize () const
     Returns current packet size, used for PIPacketExtractor::Size algorithm.
     
    +double timeout () const
     Returns current timeout in milliseconds, used for PIPacketExtractor::Timeout algorithm.
     
    +ullong missedBytes () const
     Returns missed by validating functions bytes count.
     
    +const ullong * missedBytes_ptr () const
     Returns pointer to missedBytes() count. Useful for output to PIConsole.
     
    +int read (void *read_to, int max_size)
     Directly call read() function of child device.
     
    +int write (const void *data, int max_size)
     Directly call write() function of child device.
     
    +PIString constructFullPath () const
     Reimplement to construct full unambiguous string, describes this device, default returns fullPathPrefix() + "://" + path()
     
    - Public Member Functions inherited from PIThread
    PIThread (void *data, ThreadFunc func, bool startNow=false, int loop_delay=-1)
     Contructs thread with custom data "data", external function "func" and main loop delay "loop_delay".
     
    PIThread (bool startNow=false, int loop_delay=-1)
     Contructs thread with main loop delay "loop_delay".
     
    +void setData (void *d)
     Set common data passed to external function.
     
    +void setSlot (ThreadFunc func)
     Set external function that will be executed after every run()
     
    +void setPriority (PIThread::Priority prior)
     Set priority of thread.
     
    +void * data () const
     Returns common data passed to external function.
     
    +PIThread::Priority priority () const
     Return priority of thread.
     
    +bool isRunning () const
     Return true if thread is running.
     
    +void needLockRun (bool need)
     Set necessity of lock every run with internal mutex.
     
    +PIMutexmutex ()
     Return internal mutex.
     
    bool start (int timer_delay)
     Start thread. More...
     
    bool start (ThreadFunc func, int timer_delay)
     Start thread. More...
     
    bool startOnce ()
     Start thread without internal loop. More...
     
    bool startOnce (ThreadFunc func)
     Start thread without internal loop. More...
     
    void stop (bool wait)
     Stop thread. More...
     
    void terminate ()
     Strongly stop thread. More...
     
    bool waitForStart (int timeout_msecs)
     Wait for thread start. More...
     
    bool waitForFinish (int timeout_msecs)
     Wait for thread finish. More...
     
    +void lock ()
     Lock internal mutex.
     
    +void unlock ()
     Unlock internal mutex.
     
    +void started ()
     Raise on thread start.
     
    +void stopped ()
     Raise on thread stop.
     
    - Public Member Functions inherited from PIObject
    PIObject (const PIString &name=PIString())
     Contructs PIObject with name "name".
     
    +PIString name () const
     Returns object name.
     
    +virtual const char * className () const
     Returns object class name.
     
    +virtual const char * superClassName () const
     Returns object superclass name.
     
    +bool debug () const
     Return if debug of this object is active.
     
    +void setName (const PIString &name)
     Set object name.
     
    +void setDebug (bool debug)
     Set object debug active.
     
    +const PIMap< PIString,
    +PIVariant > & 
    properties () const
     Returns properties of the object.
     
    +int propertiesCount () const
     Returns properties count of the object.
     
    +PIVariant property (const PIString &name) const
     Returns property with name "name".
     
    +void setProperty (const PIString &name, const PIVariant &value)
     Set property with name "name" to "value". If there is no such property in object it will be added.
     
    +bool isPropertyExists (const PIString &name) const
     Returns if property with name "name" exists.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Protected Member Functions

    virtual bool validateHeader (uchar *src, uchar *rec, int size)
     Function to validate header. More...
     
    virtual bool validateFooter (uchar *src, uchar *rec, int size)
     Function to validate footer. More...
     
    virtual bool validatePayload (uchar *rec, int size)
     Function to validate payload. More...
     
    - Protected Member Functions inherited from PIIODevice
    +virtual bool init ()
     Function executed before first openDevice() or from constructor.
     
    +virtual bool configureDevice (const void *e_main, const void *e_parent=0)
     Reimplement to configure device from entries "e_main" and "e_parent", cast arguments to PIConfig::Entry*.
     
    +virtual bool closeDevice ()
     Reimplement to close device, inverse return value will be set to "opened_" variable.
     
    +virtual void configureFromFullPath (const PIString &full_path)
     Reimplement to configure your device with parameters of full unambiguous string. Default implementation does nothing.
     
    - Protected Member Functions inherited from PIObject
    +PIObjectemitter () const
     Returns PIObject* which has raised an event. This value is correct only in definition of some event handler.
     
    + + + + +

    +Events

    +void packetReceived (uchar *data, int size)
     Raise on successfull packetValidate() function.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Additional Inherited Members

    - Static Public Member Functions inherited from PIObject
    +static void piDisconnect (PIObject *src, const PIString &sig)
     Disconnect object "src" from all connections with event name "sig".
     
    +static void piDisconnect (PIObject *src)
     Disconnect object "src" from all connections, i.e. all connections where object "src" is emitter.
     
    +static PIObjectfindByName (const PIString &name)
     Returns PIObject* with name "name" or 0, if there is no object found.
     
    +

    Detailed Description

    +

    Packets extractor.

    +

    +Synopsis

    +

    This class implements packet recognition by various algorithms and custom validating from data stream. Stream is formed from child PIIODevice passed from contructor or with function setDevice().

    +

    +Principle of work

    +

    PIPacketExtractor works with child PIIODevice. read and write functions directly call child device functions. You should start threaded read of extractor (not child device) to proper work. Extractor read data from child device, try to detect packet from readed data and raise packetReceived() event on success.

    +

    +Algorithms

    +

    There are 6 algorithms:
    +

    +

    +Control validating

    +

    There are three parameters:

      +
    • header content
    • +
    • header size
    • +
    • payload size
    • +
    +

    Extractor can detect packet with compare your header with readed data. It is default implementation of function packetHeaderValidate(). If header validating passed, function packetValidate() will be called. If either of this function return false extractor shifts by one byte and takes next header. If both functions returns true extractor shifts by whole packet size.

    +packet_detection.png +
    +

    Member Enumeration Documentation

    + +
    +
    + +

    Extract algorithms.

    + + + + + + + +
    Enumerator
    None  +

    No data processing

    +
    Header  +

    Detect packets with header() and following payloadSize()

    +
    Footer  +

    Detect packets with footer() and leading payloadSize()

    +
    HeaderAndFooter  +

    Detect packets with header() and footer() without payloadSize()

    +
    Size  +

    Detect packets with packetSize()

    +
    Timeout  +

    Wait for first read, then read for timeout() milliseconds

    +
    + +
    +
    +

    Member Function Documentation

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    virtual bool PIPacketExtractor::validateHeader (uchar * src,
    uchar * rec,
    int size 
    )
    +
    +inlineprotectedvirtual
    +
    + +

    Function to validate header.

    +
    Parameters
    + + + + +
    srcYour header content
    recReceived header
    sizeHeader size
    +
    +
    +

    Default implementation returns by-byte "src" with "rec" compare result

    + +
    +
    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    virtual bool PIPacketExtractor::validateFooter (uchar * src,
    uchar * rec,
    int size 
    )
    +
    +inlineprotectedvirtual
    +
    + +

    Function to validate footer.

    +
    Parameters
    + + + + +
    srcYour footer content
    recReceived footer
    sizeFooter size
    +
    +
    +

    Default implementation returns by-byte "src" with "rec" compare result

    + +
    +
    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    virtual bool PIPacketExtractor::validatePayload (uchar * rec,
    int size 
    )
    +
    +inlineprotectedvirtual
    +
    + +

    Function to validate payload.

    +
    Parameters
    + + + +
    recReceived payload
    sizepayload size
    +
    +
    +

    Default implementation returns true

    + +
    +
    +
    +
    + + + + diff --git a/pip/doc/html/class_p_i_packet_extractor.js b/pip/doc/html/class_p_i_packet_extractor.js new file mode 100644 index 0000000..aa015a6 --- /dev/null +++ b/pip/doc/html/class_p_i_packet_extractor.js @@ -0,0 +1,37 @@ +var class_p_i_packet_extractor = +[ + [ "SplitMode", "class_p_i_packet_extractor.html#aab7f856e1fd64e7bdb2507badae99bb6", [ + [ "None", "class_p_i_packet_extractor.html#aab7f856e1fd64e7bdb2507badae99bb6aab134660d4356d548ad2c7e9bb3ecae0", null ], + [ "Header", "class_p_i_packet_extractor.html#aab7f856e1fd64e7bdb2507badae99bb6a29b623cae95dfd777979c401d881c57f", null ], + [ "Footer", "class_p_i_packet_extractor.html#aab7f856e1fd64e7bdb2507badae99bb6a48ccac0df6bcb7bccaa01eb3df28f096", null ], + [ "HeaderAndFooter", "class_p_i_packet_extractor.html#aab7f856e1fd64e7bdb2507badae99bb6aa588a5c0306511f74b66e60a24373f01", null ], + [ "Size", "class_p_i_packet_extractor.html#aab7f856e1fd64e7bdb2507badae99bb6a169d7eb9668b7d6077f6c00c558b12eb", null ], + [ "Timeout", "class_p_i_packet_extractor.html#aab7f856e1fd64e7bdb2507badae99bb6a4ea0db7f406eaa97adbacd580b919903", null ] + ] ], + [ "PIPacketExtractor", "class_p_i_packet_extractor.html#aa79460b536202e7c877f5eca4f5be089", null ], + [ "device", "class_p_i_packet_extractor.html#a8e926713a3505dd109176b2c572274c9", null ], + [ "setDevice", "class_p_i_packet_extractor.html#a82db047d7e3e58f8026028857b6b69c4", null ], + [ "bufferSize", "class_p_i_packet_extractor.html#ab9598fdc2e3a641a4d1b4a5c7b62313f", null ], + [ "setBufferSize", "class_p_i_packet_extractor.html#aa6f77a5a0acf43e7b69354e59c89523a", null ], + [ "setSplitMode", "class_p_i_packet_extractor.html#aaa8b6f0d301cd7b73fc6e9570462b6a1", null ], + [ "setPayloadSize", "class_p_i_packet_extractor.html#a0c0de7854ff8187b3cd280467a321ea5", null ], + [ "setHeader", "class_p_i_packet_extractor.html#ab35777c26316da887e36b0eeb56ef239", null ], + [ "setFooter", "class_p_i_packet_extractor.html#aaf0e85876d15690e47bced1da78efa65", null ], + [ "setPacketSize", "class_p_i_packet_extractor.html#a9c0b73a88a7ae8f4c724a4d99e34a783", null ], + [ "setTimeout", "class_p_i_packet_extractor.html#ade4301e8cad37f9a2c887913a3b1a69e", null ], + [ "splitMode", "class_p_i_packet_extractor.html#aea556fb1df7074461b7df1e3afa347b9", null ], + [ "payloadSize", "class_p_i_packet_extractor.html#af22580e67cd2601575a7834a4c9b414c", null ], + [ "header", "class_p_i_packet_extractor.html#a8e6ff4a862b5fc4826ceae42d630174c", null ], + [ "footer", "class_p_i_packet_extractor.html#a6382b9238ce84d3c93044dc96748d42a", null ], + [ "packetSize", "class_p_i_packet_extractor.html#a033ac83733f23c61a65ad9c810123219", null ], + [ "timeout", "class_p_i_packet_extractor.html#a369b3bfd48065cf9da70788015d6d020", null ], + [ "missedBytes", "class_p_i_packet_extractor.html#ac5a810fc6551422b92ace27652c24813", null ], + [ "missedBytes_ptr", "class_p_i_packet_extractor.html#ad8cbbb5d99d89629975913b134ad68a8", null ], + [ "read", "class_p_i_packet_extractor.html#aa41b9b23ba7a074398687edf82331b40", null ], + [ "write", "class_p_i_packet_extractor.html#aa3348c0df86c7de38ab6cfc02f3cfa2b", null ], + [ "constructFullPath", "class_p_i_packet_extractor.html#acbeb7fa7bdb01b164ce81df601bcee23", null ], + [ "packetReceived", "class_p_i_packet_extractor.html#a008181ba36bc58a7dcc137f49fcad261", null ], + [ "validateHeader", "class_p_i_packet_extractor.html#a96d2078759a69327089faeb37e09bf69", null ], + [ "validateFooter", "class_p_i_packet_extractor.html#ad52e9d11097e5b1d846787fcd1acb5ed", null ], + [ "validatePayload", "class_p_i_packet_extractor.html#ab1b8d323e26be97a126f3950e37ba647", null ] +]; \ No newline at end of file diff --git a/pip/doc/html/class_p_i_packet_extractor__inherit__graph.map b/pip/doc/html/class_p_i_packet_extractor__inherit__graph.map new file mode 100644 index 0000000..a369c7a --- /dev/null +++ b/pip/doc/html/class_p_i_packet_extractor__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/pip/doc/html/class_p_i_packet_extractor__inherit__graph.md5 b/pip/doc/html/class_p_i_packet_extractor__inherit__graph.md5 new file mode 100644 index 0000000..c6be3fd --- /dev/null +++ b/pip/doc/html/class_p_i_packet_extractor__inherit__graph.md5 @@ -0,0 +1 @@ +c87daf468ecf9b3f492dee9268bfd2f6 \ No newline at end of file diff --git a/pip/doc/html/class_p_i_packet_extractor__inherit__graph.svg b/pip/doc/html/class_p_i_packet_extractor__inherit__graph.svg new file mode 100644 index 0000000..f77196b --- /dev/null +++ b/pip/doc/html/class_p_i_packet_extractor__inherit__graph.svg @@ -0,0 +1,57 @@ + + + + + + +PIPacketExtractor + + +Node1 + +PIPacketExtractor + + +Node2 + + +PIIODevice + + + + +Node2->Node1 + + + + +Node3 + + +PIThread + + + + +Node3->Node2 + + + + +Node4 + + +PIObject + + + + +Node4->Node3 + + + + + diff --git a/pip/doc/html/class_p_i_process-members.html b/pip/doc/html/class_p_i_process-members.html new file mode 100644 index 0000000..3a96aed --- /dev/null +++ b/pip/doc/html/class_p_i_process-members.html @@ -0,0 +1,213 @@ + + + + + + +PIP: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    PIProcess Member List
    +
    +
    + +

    This is the complete list of members for PIProcess, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    begin()PIThreadinlineprivatevirtual
    className() const PIObjectinlineprivatevirtual
    CONNECTPIObjectrelated
    CONNECT0PIObjectrelated
    CONNECT1PIObjectrelated
    CONNECT2PIObjectrelated
    CONNECT3PIObjectrelated
    CONNECT4PIObjectrelated
    CONNECTUPIObjectrelated
    data() const PIThreadinlineprivate
    debug() const PIObjectinlineprivate
    DISCONNECTPIObjectrelated
    DISCONNECT0PIObjectrelated
    DISCONNECT1PIObjectrelated
    DISCONNECT2PIObjectrelated
    DISCONNECT3PIObjectrelated
    DISCONNECT4PIObjectrelated
    emitter() const PIObjectinlineprivate
    end()PIThreadinlineprivatevirtual
    EVENTPIObjectrelated
    EVENT0PIObjectrelated
    EVENT1PIObjectrelated
    EVENT2PIObjectrelated
    EVENT3PIObjectrelated
    EVENT4PIObjectrelated
    EVENT_HANDLERPIObjectrelated
    EVENT_HANDLER0PIObjectrelated
    EVENT_HANDLER1PIObjectrelated
    EVENT_HANDLER2PIObjectrelated
    EVENT_HANDLER3PIObjectrelated
    EVENT_HANDLER4PIObjectrelated
    EVENT_VHANDLERPIObjectrelated
    EVENT_VHANDLER0PIObjectrelated
    EVENT_VHANDLER1PIObjectrelated
    EVENT_VHANDLER2PIObjectrelated
    EVENT_VHANDLER3PIObjectrelated
    EVENT_VHANDLER4PIObjectrelated
    findByName(const PIString &name)PIObjectinlineprivatestatic
    HANDLERPIObjectrelated
    isPropertyExists(const PIString &name) const PIObjectinlineprivate
    isRunning() const PIThreadinlineprivate
    lock()PIThreadinlineprivate
    mutex()PIThreadinlineprivate
    name() const PIObjectinlineprivate
    needLockRun(bool need)PIThreadinlineprivate
    piCoutObjPIObjectrelated
    piDisconnect(PIObject *src, const PIString &sig)PIObjectprivatestatic
    piDisconnect(PIObject *src)PIObjectprivatestatic
    piHigh enum valuePIThreadprivate
    piHighest enum valuePIThreadprivate
    piLow enum valuePIThreadprivate
    piLowerst enum valuePIThreadprivate
    piNormal enum valuePIThreadprivate
    PIOBJECTPIObjectrelated
    PIObject(const PIString &name=PIString())PIObjectprivate
    PIOBJECT_PARENTPIObjectrelated
    PIThread(void *data, ThreadFunc func, bool startNow=false, int loop_delay=-1)PIThreadprivate
    PIThread(bool startNow=false, int loop_delay=-1)PIThreadprivate
    priority() const PIThreadinlineprivate
    Priority enum namePIThreadprivate
    properties() const PIObjectinlineprivate
    propertiesCount() const PIObjectinlineprivate
    property(const PIString &name) const PIObjectinlineprivate
    propertyChanged(const PIString &name)PIObjectinlineprivatevirtual
    setData(void *d)PIThreadinlineprivate
    setDebug(bool debug)PIObjectinlineprivate
    setName(const PIString &name)PIObjectinlineprivate
    setPriority(PIThread::Priority prior)PIThreadprivate
    setProperty(const PIString &name, const PIVariant &value)PIObjectinlineprivate
    setSlot(ThreadFunc func)PIThreadinlineprivate
    start(int timer_delay)PIThreadprivate
    start(ThreadFunc func, int timer_delay)PIThreadinlineprivate
    started()PIThreadprivate
    startOnce()PIThreadprivate
    startOnce(ThreadFunc func)PIThreadinlineprivate
    stop(bool wait)PIThreadinlineprivate
    stopped()PIThreadprivate
    superClassName() const PIObjectinlineprivatevirtual
    unlock()PIThreadinlineprivate
    waitForStart(int timeout_msecs)PIThreadprivate
    WEAK_CONNECTPIObjectrelated
    WEAK_CONNECT0PIObjectrelated
    WEAK_CONNECT1PIObjectrelated
    WEAK_CONNECT2PIObjectrelated
    WEAK_CONNECT3PIObjectrelated
    WEAK_CONNECT4PIObjectrelated
    +
    + + + + diff --git a/pip/doc/html/class_p_i_process.html b/pip/doc/html/class_p_i_process.html new file mode 100644 index 0000000..b51ee07 --- /dev/null +++ b/pip/doc/html/class_p_i_process.html @@ -0,0 +1,307 @@ + + + + + + +PIP: PIProcess Class Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    + +
    +
    PIProcess Class Reference
    +
    +
    +
    + + Inheritance diagram for PIProcess:
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Additional Inherited Members

    +

    Detailed Description

    +

    events: execStarted(PIString program) execFinished(PIString program, int exit_code)

    +

    handlers: bool exec(const PIString & program) bool exec(const PIString & program, const PIString & arg1) bool exec(const PIString & program, const PIString & arg1, const PIString & arg2) bool exec(const PIString & program, const PIString & arg1, const PIString & arg2, const PIString & arg3) bool exec(const PIString & program, const PIStringList & args) void terminate() bool waitForFinish(int timeout_msecs = 60000)

    +
    +
    + + + + diff --git a/pip/doc/html/class_p_i_process__inherit__graph.map b/pip/doc/html/class_p_i_process__inherit__graph.map new file mode 100644 index 0000000..9e6cbc1 --- /dev/null +++ b/pip/doc/html/class_p_i_process__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/pip/doc/html/class_p_i_process__inherit__graph.md5 b/pip/doc/html/class_p_i_process__inherit__graph.md5 new file mode 100644 index 0000000..f502927 --- /dev/null +++ b/pip/doc/html/class_p_i_process__inherit__graph.md5 @@ -0,0 +1 @@ +a692025996259e3de2ebb0ef02b62c8d \ No newline at end of file diff --git a/pip/doc/html/class_p_i_process__inherit__graph.svg b/pip/doc/html/class_p_i_process__inherit__graph.svg new file mode 100644 index 0000000..81f1aba --- /dev/null +++ b/pip/doc/html/class_p_i_process__inherit__graph.svg @@ -0,0 +1,44 @@ + + + + + + +PIProcess + + +Node1 + +PIProcess + + +Node2 + + +PIThread + + + + +Node2->Node1 + + + + +Node3 + + +PIObject + + + + +Node3->Node2 + + + + + diff --git a/pip/doc/html/class_p_i_protocol-members.html b/pip/doc/html/class_p_i_protocol-members.html new file mode 100644 index 0000000..2782d13 --- /dev/null +++ b/pip/doc/html/class_p_i_protocol-members.html @@ -0,0 +1,191 @@ + + + + + + +PIP: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    PIProtocol Member List
    +
    +
    + +

    This is the complete list of members for PIProtocol, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Average enum valuePIProtocol
    Bad enum valuePIProtocol
    className() const PIObjectinlinevirtual
    CONNECTPIObjectrelated
    CONNECT0PIObjectrelated
    CONNECT1PIObjectrelated
    CONNECT2PIObjectrelated
    CONNECT3PIObjectrelated
    CONNECT4PIObjectrelated
    CONNECTUPIObjectrelated
    debug() const PIObjectinline
    DISCONNECTPIObjectrelated
    DISCONNECT0PIObjectrelated
    DISCONNECT1PIObjectrelated
    DISCONNECT2PIObjectrelated
    DISCONNECT3PIObjectrelated
    DISCONNECT4PIObjectrelated
    emitter() const PIObjectinlineprotected
    EVENTPIObjectrelated
    EVENT0PIObjectrelated
    EVENT1PIObjectrelated
    EVENT2PIObjectrelated
    EVENT3PIObjectrelated
    EVENT4PIObjectrelated
    EVENT_HANDLERPIObjectrelated
    EVENT_HANDLER0PIObjectrelated
    EVENT_HANDLER1PIObjectrelated
    EVENT_HANDLER2PIObjectrelated
    EVENT_HANDLER3PIObjectrelated
    EVENT_HANDLER4PIObjectrelated
    EVENT_VHANDLERPIObjectrelated
    EVENT_VHANDLER0PIObjectrelated
    EVENT_VHANDLER1PIObjectrelated
    EVENT_VHANDLER2PIObjectrelated
    EVENT_VHANDLER3PIObjectrelated
    EVENT_VHANDLER4PIObjectrelated
    Failure enum valuePIProtocol
    findByName(const PIString &name)PIObjectinlinestatic
    Good enum valuePIProtocol
    HANDLERPIObjectrelated
    isPropertyExists(const PIString &name) const PIObjectinline
    piCoutObjPIObjectrelated
    piDisconnect(PIObject *src, const PIString &sig)PIObjectstatic
    piDisconnect(PIObject *src)PIObjectstatic
    PIObject(const PIString &name=PIString())PIObject
    PIOBJECTPIObjectrelated
    PIOBJECT_PARENTPIObjectrelated
    PIProtocol()PIProtocolinline
    PIProtocol(const PIString &config, const PIString &name, void *recHeaderPtr=0, int recHeaderSize=0, void *recDataPtr=0, int recDataSize=0, void *sendDataPtr=0, int sendDataSize=0)PIProtocol
    properties() const PIObjectinline
    propertiesCount() const PIObjectinline
    property(const PIString &name) const PIObjectinline
    propertyChanged(const PIString &name)PIObjectinlineprotectedvirtual
    Quality enum namePIProtocol
    setDebug(bool debug)PIObjectinline
    setProperty(const PIString &name, const PIVariant &value)PIObjectinline
    superClassName() const PIObjectinlinevirtual
    Unknown enum valuePIProtocol
    WEAK_CONNECTPIObjectrelated
    WEAK_CONNECT0PIObjectrelated
    WEAK_CONNECT1PIObjectrelated
    WEAK_CONNECT2PIObjectrelated
    WEAK_CONNECT3PIObjectrelated
    WEAK_CONNECT4PIObjectrelated
    +
    + + + + diff --git a/pip/doc/html/class_p_i_protocol.html b/pip/doc/html/class_p_i_protocol.html new file mode 100644 index 0000000..99b057f --- /dev/null +++ b/pip/doc/html/class_p_i_protocol.html @@ -0,0 +1,440 @@ + + + + + + +PIP: PIProtocol Class Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    + +
    +
    PIProtocol Class Reference
    +
    +
    +
    + + Inheritance diagram for PIProtocol:
    +
    +
    + + + + + + +

    +Public Types

    enum  Quality {
    +  Unknown = 1, +Failure = 2, +Bad = 3, +Average = 4, +
    +  Good = 5 +
    + }
     Connection quality. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    PIProtocol ()
     Contructs an empty unconfigured protocol.
     
    PIProtocol (const PIString &config, const PIString &name, void *recHeaderPtr=0, int recHeaderSize=0, void *recDataPtr=0, int recDataSize=0, void *sendDataPtr=0, int sendDataSize=0)
     Contructs protocol configured from file "config", config file section "name".
     
    - Public Member Functions inherited from PIObject
    PIObject (const PIString &name=PIString())
     Contructs PIObject with name "name".
     
    +PIString name () const
     Returns object name.
     
    +virtual const char * className () const
     Returns object class name.
     
    +virtual const char * superClassName () const
     Returns object superclass name.
     
    +bool debug () const
     Return if debug of this object is active.
     
    +void setName (const PIString &name)
     Set object name.
     
    +void setDebug (bool debug)
     Set object debug active.
     
    +const PIMap< PIString,
    +PIVariant > & 
    properties () const
     Returns properties of the object.
     
    +int propertiesCount () const
     Returns properties count of the object.
     
    +PIVariant property (const PIString &name) const
     Returns property with name "name".
     
    +void setProperty (const PIString &name, const PIVariant &value)
     Set property with name "name" to "value". If there is no such property in object it will be added.
     
    +bool isPropertyExists (const PIString &name) const
     Returns if property with name "name" exists.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Additional Inherited Members

    - Static Public Member Functions inherited from PIObject
    +static void piDisconnect (PIObject *src, const PIString &sig)
     Disconnect object "src" from all connections with event name "sig".
     
    +static void piDisconnect (PIObject *src)
     Disconnect object "src" from all connections, i.e. all connections where object "src" is emitter.
     
    +static PIObjectfindByName (const PIString &name)
     Returns PIObject* with name "name" or 0, if there is no object found.
     
    - Protected Member Functions inherited from PIObject
    +PIObjectemitter () const
     Returns PIObject* which has raised an event. This value is correct only in definition of some event handler.
     
    +virtual void propertyChanged (const PIString &name)
     Virtual function executes after property with name "name" has been changed.
     
    +

    Detailed Description

    +

    events: void receiverStarted() void receiverStopped() void senderStarted() void senderStopped() void received(bool validate_is_ok) void qualityChanged(PIProtocol::Quality old_quality, PIProtocol::Quality new_quality)

    +

    handlers: void startReceive(float exp_frequency = -1.f) void stopReceive() void startSend(float frequency = -1.f) void stopSend() void start() void stop() void send() void send(const void * data, int size, bool direct = false)

    +

    +Synopsis

    +

    Member Enumeration Documentation

    + +
    +
    + + + + +
    enum PIProtocol::Quality
    +
    + +

    Connection quality.

    + + + + + + +
    Enumerator
    Unknown  +

    Unknown, no one packet received yet

    +
    Failure  +

    No connection, no one correct packet received for last period

    +
    Bad  +

    Bad connection, correct packets received <= 20%

    +
    Average  +

    Average connection, correct packets received > 20% and <= 80%

    +
    Good  +

    Good connection, correct packets received > 80%

    +
    + +
    +
    +
    +
    + + + + diff --git a/pip/doc/html/class_p_i_protocol.js b/pip/doc/html/class_p_i_protocol.js new file mode 100644 index 0000000..a27c46b --- /dev/null +++ b/pip/doc/html/class_p_i_protocol.js @@ -0,0 +1,12 @@ +var class_p_i_protocol = +[ + [ "Quality", "class_p_i_protocol.html#aef1f5fa8173bcc220b07f084155ec868", [ + [ "Unknown", "class_p_i_protocol.html#aef1f5fa8173bcc220b07f084155ec868a53df11ad71f5084b02a504df41fd977a", null ], + [ "Failure", "class_p_i_protocol.html#aef1f5fa8173bcc220b07f084155ec868aedb67e105ac421f87d7c086213041812", null ], + [ "Bad", "class_p_i_protocol.html#aef1f5fa8173bcc220b07f084155ec868aab6ef6da8e37ad2a78028a631bc1bd26", null ], + [ "Average", "class_p_i_protocol.html#aef1f5fa8173bcc220b07f084155ec868a0f731aa8807989815ed9936e1bb35147", null ], + [ "Good", "class_p_i_protocol.html#aef1f5fa8173bcc220b07f084155ec868a79077b969773754677c555ec35c32d9b", null ] + ] ], + [ "PIProtocol", "class_p_i_protocol.html#ac5aa3e1546b771f82658bdcacb856898", null ], + [ "PIProtocol", "class_p_i_protocol.html#a5d4ccd507627a058c67ceec1d9774247", null ] +]; \ No newline at end of file diff --git a/pip/doc/html/class_p_i_protocol__inherit__graph.map b/pip/doc/html/class_p_i_protocol__inherit__graph.map new file mode 100644 index 0000000..402713a --- /dev/null +++ b/pip/doc/html/class_p_i_protocol__inherit__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/class_p_i_protocol__inherit__graph.md5 b/pip/doc/html/class_p_i_protocol__inherit__graph.md5 new file mode 100644 index 0000000..9a371de --- /dev/null +++ b/pip/doc/html/class_p_i_protocol__inherit__graph.md5 @@ -0,0 +1 @@ +e32bf6ef4c4b746416327d7bc08ee766 \ No newline at end of file diff --git a/pip/doc/html/class_p_i_protocol__inherit__graph.svg b/pip/doc/html/class_p_i_protocol__inherit__graph.svg new file mode 100644 index 0000000..941752e --- /dev/null +++ b/pip/doc/html/class_p_i_protocol__inherit__graph.svg @@ -0,0 +1,31 @@ + + + + + + +PIProtocol + + +Node1 + +PIProtocol + + +Node2 + + +PIObject + + + + +Node2->Node1 + + + + + diff --git a/pip/doc/html/class_p_i_serial-members.html b/pip/doc/html/class_p_i_serial-members.html new file mode 100644 index 0000000..a005841 --- /dev/null +++ b/pip/doc/html/class_p_i_serial-members.html @@ -0,0 +1,223 @@ + + + + + + +PIP: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    PISerial Member List
    +
    +
    + +

    This is the complete list of members for PISerial, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    className() const PIObjectinlinevirtual
    closeDevice()PISerialprotectedvirtual
    configureDevice(const void *e_main, const void *e_parent=0)PISerialprotectedvirtual
    configureFromFullPath(const PIString &full_path)PISerialprotectedvirtual
    CONNECTPIObjectrelated
    CONNECT0PIObjectrelated
    CONNECT1PIObjectrelated
    CONNECT2PIObjectrelated
    CONNECT3PIObjectrelated
    CONNECT4PIObjectrelated
    CONNECTUPIObjectrelated
    data() const PIThreadinline
    debug() const PIObjectinline
    DISCONNECTPIObjectrelated
    DISCONNECT0PIObjectrelated
    DISCONNECT1PIObjectrelated
    DISCONNECT2PIObjectrelated
    DISCONNECT3PIObjectrelated
    DISCONNECT4PIObjectrelated
    emitter() const PIObjectinlineprotected
    EVENTPIObjectrelated
    EVENT0PIObjectrelated
    EVENT1PIObjectrelated
    EVENT2PIObjectrelated
    EVENT3PIObjectrelated
    EVENT4PIObjectrelated
    EVENT_HANDLERPIObjectrelated
    EVENT_HANDLER0PIObjectrelated
    EVENT_HANDLER1PIObjectrelated
    EVENT_HANDLER2PIObjectrelated
    EVENT_HANDLER3PIObjectrelated
    EVENT_HANDLER4PIObjectrelated
    EVENT_VHANDLERPIObjectrelated
    EVENT_VHANDLER0PIObjectrelated
    EVENT_VHANDLER1PIObjectrelated
    EVENT_VHANDLER2PIObjectrelated
    EVENT_VHANDLER3PIObjectrelated
    EVENT_VHANDLER4PIObjectrelated
    findByName(const PIString &name)PIObjectinlinestatic
    fullPathPrefix() const PISerialinlineprotectedvirtual
    HANDLERPIObjectrelated
    init()PIIODeviceinlineprotectedvirtual
    isPropertyExists(const PIString &name) const PIObjectinline
    isRunning() const PIThreadinline
    lock()PIThreadinline
    mutex()PIThreadinline
    name() const PIObjectinline
    needLockRun(bool need)PIThreadinline
    openDevice()PISerialprotectedvirtual
    piCoutObjPIObjectrelated
    piDisconnect(PIObject *src, const PIString &sig)PIObjectstatic
    piDisconnect(PIObject *src)PIObjectstatic
    piHigh enum valuePIThread
    piHighest enum valuePIThread
    PIIODEVICEPIIODevicerelated
    piLow enum valuePIThread
    piLowerst enum valuePIThread
    piNormal enum valuePIThread
    PIOBJECTPIObjectrelated
    PIObject(const PIString &name=PIString())PIObject
    PIOBJECT_PARENTPIObjectrelated
    PIThread(void *data, ThreadFunc func, bool startNow=false, int loop_delay=-1)PIThread
    PIThread(bool startNow=false, int loop_delay=-1)PIThread
    Priority enum namePIThread
    priority() const PIThreadinline
    properties() const PIObjectinline
    propertiesCount() const PIObjectinline
    property(const PIString &name) const PIObjectinline
    propertyChanged(const PIString &name)PIObjectinlineprotectedvirtual
    readDeviceSetting(const PIString &name, const T &def, const PIConfig::Entry *em, const PIConfig::Entry *ep)PIIODevicerelated
    received(const void *data, int size)PISerialinlineprotectedvirtual
    REGISTER_DEVICEPIIODevicerelated
    setData(void *d)PIThreadinline
    setDebug(bool debug)PIObjectinline
    setName(const PIString &name)PIObjectinline
    setPriority(PIThread::Priority prior)PIThread
    setProperty(const PIString &name, const PIVariant &value)PIObjectinline
    setSlot(ThreadFunc func)PIThreadinline
    PIThread::start(int timer_delay)PIThread
    PIThread::start(ThreadFunc func, int timer_delay)PIThreadinline
    started()PIThread
    startOnce()PIThread
    startOnce(ThreadFunc func)PIThreadinline
    stopped()PIThread
    superClassName() const PIObjectinlinevirtual
    threadedRead(uchar *readed, int size)PIIODeviceinlineprotectedvirtual
    unlock()PIThreadinline
    waitForFinish(int timeout_msecs)PIThread
    waitForStart(int timeout_msecs)PIThread
    WEAK_CONNECTPIObjectrelated
    WEAK_CONNECT0PIObjectrelated
    WEAK_CONNECT1PIObjectrelated
    WEAK_CONNECT2PIObjectrelated
    WEAK_CONNECT3PIObjectrelated
    WEAK_CONNECT4PIObjectrelated
    write(const void *data, int max_size)PISerialinlineprotectedvirtual
    +
    + + + + diff --git a/pip/doc/html/class_p_i_serial.html b/pip/doc/html/class_p_i_serial.html new file mode 100644 index 0000000..a4abb71 --- /dev/null +++ b/pip/doc/html/class_p_i_serial.html @@ -0,0 +1,531 @@ + + + + + + +PIP: PISerial Class Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    + +
    +
    PISerial Class Reference
    +
    +
    + +

    Serial device. + More...

    +
    + + Inheritance diagram for PISerial:
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Protected Member Functions

    +PIString fullPathPrefix () const
     Reimplement to construct full unambiguous string prefix. Creating devices by unambiguous string.
     
    +void configureFromFullPath (const PIString &full_path)
     Reimplement to configure your device with parameters of full unambiguous string. Default implementation does nothing.
     
    +bool configureDevice (const void *e_main, const void *e_parent=0)
     Reimplement to configure device from entries "e_main" and "e_parent", cast arguments to PIConfig::Entry*.
     
    +int write (const void *data, int max_size)
     Reimplement this function to write to your device.
     
    +virtual void received (const void *data, int size)
     Executes when any read function was successful. Default implementation does nothing.
     
    +bool openDevice ()
     Reimplement to open device, return value will be set to "opened_" variable.
     
    +bool closeDevice ()
     Reimplement to close device, inverse return value will be set to "opened_" variable.
     
    - Protected Member Functions inherited from PIIODevice
    +virtual bool init ()
     Function executed before first openDevice() or from constructor.
     
    +virtual bool threadedRead (uchar *readed, int size)
     Function executed when thread read some data, default implementation execute external slot "ret_func_".
     
    - Protected Member Functions inherited from PIObject
    +PIObjectemitter () const
     Returns PIObject* which has raised an event. This value is correct only in definition of some event handler.
     
    +virtual void propertyChanged (const PIString &name)
     Virtual function executes after property with name "name" has been changed.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Additional Inherited Members

    - Public Types inherited from PIThread
    enum  Priority {
    +  piLowerst, +piLow, +piNormal, +piHigh, +
    +  piHighest +
    + }
     Priority of thread. More...
     
    - Public Member Functions inherited from PIThread
    PIThread (void *data, ThreadFunc func, bool startNow=false, int loop_delay=-1)
     Contructs thread with custom data "data", external function "func" and main loop delay "loop_delay".
     
    PIThread (bool startNow=false, int loop_delay=-1)
     Contructs thread with main loop delay "loop_delay".
     
    +void setData (void *d)
     Set common data passed to external function.
     
    +void setSlot (ThreadFunc func)
     Set external function that will be executed after every run()
     
    +void setPriority (PIThread::Priority prior)
     Set priority of thread.
     
    +void * data () const
     Returns common data passed to external function.
     
    +PIThread::Priority priority () const
     Return priority of thread.
     
    +bool isRunning () const
     Return true if thread is running.
     
    +void needLockRun (bool need)
     Set necessity of lock every run with internal mutex.
     
    +PIMutexmutex ()
     Return internal mutex.
     
    bool start (int timer_delay)
     Start thread. More...
     
    bool start (ThreadFunc func, int timer_delay)
     Start thread. More...
     
    bool startOnce ()
     Start thread without internal loop. More...
     
    bool startOnce (ThreadFunc func)
     Start thread without internal loop. More...
     
    void stop (bool wait)
     Stop thread. More...
     
    void terminate ()
     Strongly stop thread. More...
     
    bool waitForStart (int timeout_msecs)
     Wait for thread start. More...
     
    bool waitForFinish (int timeout_msecs)
     Wait for thread finish. More...
     
    +void lock ()
     Lock internal mutex.
     
    +void unlock ()
     Unlock internal mutex.
     
    +void started ()
     Raise on thread start.
     
    +void stopped ()
     Raise on thread stop.
     
    - Public Member Functions inherited from PIObject
    PIObject (const PIString &name=PIString())
     Contructs PIObject with name "name".
     
    +PIString name () const
     Returns object name.
     
    +virtual const char * className () const
     Returns object class name.
     
    +virtual const char * superClassName () const
     Returns object superclass name.
     
    +bool debug () const
     Return if debug of this object is active.
     
    +void setName (const PIString &name)
     Set object name.
     
    +void setDebug (bool debug)
     Set object debug active.
     
    +const PIMap< PIString,
    +PIVariant > & 
    properties () const
     Returns properties of the object.
     
    +int propertiesCount () const
     Returns properties count of the object.
     
    +PIVariant property (const PIString &name) const
     Returns property with name "name".
     
    +void setProperty (const PIString &name, const PIVariant &value)
     Set property with name "name" to "value". If there is no such property in object it will be added.
     
    +bool isPropertyExists (const PIString &name) const
     Returns if property with name "name" exists.
     
    - Static Public Member Functions inherited from PIObject
    +static void piDisconnect (PIObject *src, const PIString &sig)
     Disconnect object "src" from all connections with event name "sig".
     
    +static void piDisconnect (PIObject *src)
     Disconnect object "src" from all connections, i.e. all connections where object "src" is emitter.
     
    +static PIObjectfindByName (const PIString &name)
     Returns PIObject* with name "name" or 0, if there is no object found.
     
    +

    Detailed Description

    +

    Serial device.

    +

    +Synopsis

    +

    This class provide access to serial device, e.g. COM port. It can read, write, wait for write. There are several read and write functions.

    +
    +
    + + + + diff --git a/pip/doc/html/class_p_i_serial.js b/pip/doc/html/class_p_i_serial.js new file mode 100644 index 0000000..441f462 --- /dev/null +++ b/pip/doc/html/class_p_i_serial.js @@ -0,0 +1,10 @@ +var class_p_i_serial = +[ + [ "fullPathPrefix", "class_p_i_serial.html#a618759d595670e96afa8103102e98ec7", null ], + [ "configureFromFullPath", "class_p_i_serial.html#a5c31bf29e311d1ea5e188adab37703e6", null ], + [ "configureDevice", "class_p_i_serial.html#a6fa0f2c099da80fe406cd38b7e552d5b", null ], + [ "write", "class_p_i_serial.html#a544a191409e7088b1c7e6a35844c8f7b", null ], + [ "received", "class_p_i_serial.html#aafc6d34cbbdef49fed9454403056a948", null ], + [ "openDevice", "class_p_i_serial.html#a4341607c7ecd49b68b368a9cbc49207a", null ], + [ "closeDevice", "class_p_i_serial.html#aa8f0b19f15100b7bc01c6f87b1eaa587", null ] +]; \ No newline at end of file diff --git a/pip/doc/html/class_p_i_serial__inherit__graph.map b/pip/doc/html/class_p_i_serial__inherit__graph.map new file mode 100644 index 0000000..d3594de --- /dev/null +++ b/pip/doc/html/class_p_i_serial__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/pip/doc/html/class_p_i_serial__inherit__graph.md5 b/pip/doc/html/class_p_i_serial__inherit__graph.md5 new file mode 100644 index 0000000..d6a88ea --- /dev/null +++ b/pip/doc/html/class_p_i_serial__inherit__graph.md5 @@ -0,0 +1 @@ +6b0aa238526ec689ba5f1659df485a78 \ No newline at end of file diff --git a/pip/doc/html/class_p_i_serial__inherit__graph.svg b/pip/doc/html/class_p_i_serial__inherit__graph.svg new file mode 100644 index 0000000..a5e158e --- /dev/null +++ b/pip/doc/html/class_p_i_serial__inherit__graph.svg @@ -0,0 +1,57 @@ + + + + + + +PISerial + + +Node1 + +PISerial + + +Node2 + + +PIIODevice + + + + +Node2->Node1 + + + + +Node3 + + +PIThread + + + + +Node3->Node2 + + + + +Node4 + + +PIObject + + + + +Node4->Node3 + + + + + diff --git a/pip/doc/html/class_p_i_set-members.html b/pip/doc/html/class_p_i_set-members.html new file mode 100644 index 0000000..09f0dfa --- /dev/null +++ b/pip/doc/html/class_p_i_set-members.html @@ -0,0 +1,135 @@ + + + + + + +PIP: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    PISet< T > Member List
    +
    +
    + +

    This is the complete list of members for PISet< T >, including all inherited members.

    + + + + + + + + + +
    operator[](const T &t) const PISet< T >inline
    PISet()PISet< T >inline
    PISet(const T &value)PISet< T >inline
    PISet(const T &v0, const T &v1)PISet< T >inline
    PISet(const T &v0, const T &v1, const T &v2)PISet< T >inline
    PISet(const T &v0, const T &v1, const T &v2, const T &v3)PISet< T >inline
    remove(const T &t)PISet< T >inline
    toVector() const PISet< T >inline
    +
    + + + + diff --git a/pip/doc/html/class_p_i_set.html b/pip/doc/html/class_p_i_set.html new file mode 100644 index 0000000..403bd9e --- /dev/null +++ b/pip/doc/html/class_p_i_set.html @@ -0,0 +1,175 @@ + + + + + + +PIP: PISet< T > Class Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    + +
    +
    PISet< T > Class Template Reference
    +
    +
    + +

    Set of any type. + More...

    + +

    Inherits PIMap< Key, T >.

    + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    PISet ()
     Contructs an empty set.
     
    PISet (const T &value)
     Contructs set with one element "value".
     
    PISet (const T &v0, const T &v1)
     Contructs set with elements "v0" and "v1".
     
    PISet (const T &v0, const T &v1, const T &v2)
     Contructs set with elements "v0", "v1" and "v2".
     
    PISet (const T &v0, const T &v1, const T &v2, const T &v3)
     Contructs set with elements "v0", "v1", "v2" and "v3".
     
    +bool operator[] (const T &t) const
     Returns if element "t" exists in this set.
     
    +PISet< T > & remove (const T &t)
     Returns if element "t" exists in this set.
     
    +PIVector< T > toVector () const
     Returns content of set as PIVector.
     
    +

    Detailed Description

    +

    template<typename T>
    +class PISet< T >

    + +

    Set of any type.

    +

    This class used to store collection of unique elements of any type. You can only add values to set with operator<< or with function insert(). You can discover if value already in set with operator[] or with function find(). These function has logarithmic complexity.

    +
    +
    + + + + diff --git a/pip/doc/html/class_p_i_set.js b/pip/doc/html/class_p_i_set.js new file mode 100644 index 0000000..f216a62 --- /dev/null +++ b/pip/doc/html/class_p_i_set.js @@ -0,0 +1,11 @@ +var class_p_i_set = +[ + [ "PISet", "class_p_i_set.html#a0611208edb84f2529cb2e2782c3239fd", null ], + [ "PISet", "class_p_i_set.html#ab2a248ae703457ca45cfa55972e1252a", null ], + [ "PISet", "class_p_i_set.html#aebcd07da3920c925af21ad1634dde44b", null ], + [ "PISet", "class_p_i_set.html#a0da9d93a30b419270d6389433266b376", null ], + [ "PISet", "class_p_i_set.html#a5170af33fced202a149267f84baaa65c", null ], + [ "operator[]", "class_p_i_set.html#ab4b957ab5ad99589a07cea34cce4b4ca", null ], + [ "remove", "class_p_i_set.html#aeb31ad164a71727de75ee18f7767d07c", null ], + [ "toVector", "class_p_i_set.html#aa922f639869b9556b0ade5a4099fe0de", null ] +]; \ No newline at end of file diff --git a/pip/doc/html/class_p_i_state_machine-members.html b/pip/doc/html/class_p_i_state_machine-members.html new file mode 100644 index 0000000..05d06d4 --- /dev/null +++ b/pip/doc/html/class_p_i_state_machine-members.html @@ -0,0 +1,209 @@ + + + + + + +PIP: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    PIStateMachine< Type > Member List
    +
    +
    + +

    This is the complete list of members for PIStateMachine< Type >, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    addRule(Type from, Type to, const PIString &condition, Handler handler=0, bool autoTransition=false, bool resetAllConditions=false)PIStateMachine< Type >inline
    addRule(Type from, Type to, Handler handler, bool autoTransition=false, bool resetAllConditions=false)PIStateMachine< Type >inline
    addRule(Type from, Type to, const PIStringList &conditions=PIStringList(), Handler handler=0, bool autoTransition=false, bool resetAllConditions=false)PIStateMachine< Type >inline
    addRule(const Rule &rule)PIStateMachine< Type >inline
    addState(Type value, const PIString &name="", Handler handler=0)PIStateMachine< Type >inline
    className() const PIObjectinlinevirtual
    clearRules()PIStateMachine< Type >inline
    clearStates()PIStateMachine< Type >inline
    Condition typedefPIStateMachine< Type >
    CONNECTPIObjectrelated
    CONNECT0PIObjectrelated
    CONNECT1PIObjectrelated
    CONNECT2PIObjectrelated
    CONNECT3PIObjectrelated
    CONNECT4PIObjectrelated
    CONNECTUPIObjectrelated
    currentConditions() const PIStateMachine< Type >inline
    currentState() const PIStateMachine< Type >inline
    debug() const PIObjectinline
    DISCONNECTPIObjectrelated
    DISCONNECT0PIObjectrelated
    DISCONNECT1PIObjectrelated
    DISCONNECT2PIObjectrelated
    DISCONNECT3PIObjectrelated
    DISCONNECT4PIObjectrelated
    emitter() const PIObjectinlineprotected
    EVENTPIObjectrelated
    EVENT0PIObjectrelated
    EVENT1PIObjectrelated
    EVENT2PIObjectrelated
    EVENT3PIObjectrelated
    EVENT4PIObjectrelated
    EVENT_HANDLERPIObjectrelated
    EVENT_HANDLER0PIObjectrelated
    EVENT_HANDLER1PIObjectrelated
    EVENT_HANDLER2PIObjectrelated
    EVENT_HANDLER3PIObjectrelated
    EVENT_HANDLER4PIObjectrelated
    EVENT_VHANDLERPIObjectrelated
    EVENT_VHANDLER0PIObjectrelated
    EVENT_VHANDLER1PIObjectrelated
    EVENT_VHANDLER2PIObjectrelated
    EVENT_VHANDLER3PIObjectrelated
    EVENT_VHANDLER4PIObjectrelated
    execution(const State &state)PIStateMachine< Type >inlineprotectedvirtual
    findByName(const PIString &name)PIObjectinlinestatic
    HANDLERPIObjectrelated
    isPropertyExists(const PIString &name) const PIObjectinline
    name() const PIObjectinline
    performCondition(const PIString &name, int times=1)PIStateMachine< Type >inline
    performConditions(const PIStringList &names)PIStateMachine< Type >inline
    piCoutObjPIObjectrelated
    piDisconnect(PIObject *src, const PIString &sig)PIObjectstatic
    piDisconnect(PIObject *src)PIObjectstatic
    PIOBJECTPIObjectrelated
    PIObject(const PIString &name=PIString())PIObject
    PIOBJECT_PARENTPIObjectrelated
    PIStateMachine(void *_parent=0)PIStateMachine< Type >inline
    properties() const PIObjectinline
    propertiesCount() const PIObjectinline
    property(const PIString &name) const PIObjectinline
    propertyChanged(const PIString &name)PIObjectinlineprotectedvirtual
    reset()PIStateMachine< Type >inline
    resetCondition(const PIString &name)PIStateMachine< Type >inline
    resetConditions()PIStateMachine< Type >inline
    rulesCount() const PIStateMachine< Type >inline
    setDebug(bool debug)PIObjectinline
    setInitialState(Type value)PIStateMachine< Type >inline
    setName(const PIString &name)PIObjectinline
    setProperty(const PIString &name, const PIVariant &value)PIObjectinline
    statesCount() const PIStateMachine< Type >inline
    superClassName() const PIObjectinlinevirtual
    switchToState(Type to)PIStateMachine< Type >inline
    tick()PIStateMachine< Type >inline
    tick(void *data, int delim)PIStateMachine< Type >inline
    transition(const State &from, const State &to)PIStateMachine< Type >inlineprotectedvirtual
    WEAK_CONNECTPIObjectrelated
    WEAK_CONNECT0PIObjectrelated
    WEAK_CONNECT1PIObjectrelated
    WEAK_CONNECT2PIObjectrelated
    WEAK_CONNECT3PIObjectrelated
    WEAK_CONNECT4PIObjectrelated
    +
    + + + + diff --git a/pip/doc/html/class_p_i_state_machine.html b/pip/doc/html/class_p_i_state_machine.html new file mode 100644 index 0000000..ddfddfb --- /dev/null +++ b/pip/doc/html/class_p_i_state_machine.html @@ -0,0 +1,626 @@ + + + + + + +PIP: PIStateMachine< Type > Class Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    + +
    +
    PIStateMachine< Type > Class Template Reference
    +
    +
    + +

    Base class for custom state machine. + More...

    +
    + + Inheritance diagram for PIStateMachine< Type >:
    +
    +
    + + + + + + + + + +

    +Classes

    struct  Rule
     Rule of transition between states of machine More...
     
    struct  State
     State of machine More...
     
    + + + + +

    +Public Types

    +typedef PIPair< PIString, int > Condition
     Condition is a pair (string, number)
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    PIStateMachine (void *_parent=0)
     Constructs an empty state machine.
     
    +void addState (Type value, const PIString &name="", Handler handler=0)
     Add state of machine.
     
    +int statesCount () const
     States count.
     
    +void clearStates ()
     Remove all states.
     
    +void addRule (Type from, Type to, const PIString &condition, Handler handler=0, bool autoTransition=false, bool resetAllConditions=false)
     Add rule of transition.
     
    +void addRule (Type from, Type to, Handler handler, bool autoTransition=false, bool resetAllConditions=false)
     Add rule of transition.
     
    +void addRule (Type from, Type to, const PIStringList &conditions=PIStringList(), Handler handler=0, bool autoTransition=false, bool resetAllConditions=false)
     Add rule of transition.
     
    +void addRule (const Rule &rule)
     Add rule of transition.
     
    +int rulesCount () const
     Rules count.
     
    +void clearRules ()
     Remove all rules.
     
    +void setInitialState (Type value)
     Setup initial state. reset() will set machine state to "value".
     
    bool switchToState (Type to)
     Try to switch machine state to state "to". More...
     
    +void reset ()
     Reset machine state to initial and clear all conditions.
     
    +const StatecurrentState () const
     Returns current state of machine.
     
    +void resetConditions ()
     Reset all performed conditions.
     
    +void resetCondition (const PIString &name)
     Reset performed condition with name "name".
     
    +void performCondition (const PIString &name, int times=1)
     Perform condition with name "name" "times" times.
     
    +void performConditions (const PIStringList &names)
     Perform every condition with name from "names" one time.
     
    +const PIVector< Condition > & currentConditions () const
     Returns all current performed conditions.
     
    - Public Member Functions inherited from PIObject
    PIObject (const PIString &name=PIString())
     Contructs PIObject with name "name".
     
    +PIString name () const
     Returns object name.
     
    +virtual const char * className () const
     Returns object class name.
     
    +virtual const char * superClassName () const
     Returns object superclass name.
     
    +bool debug () const
     Return if debug of this object is active.
     
    +void setName (const PIString &name)
     Set object name.
     
    +void setDebug (bool debug)
     Set object debug active.
     
    +const PIMap< PIString,
    +PIVariant > & 
    properties () const
     Returns properties of the object.
     
    +int propertiesCount () const
     Returns properties count of the object.
     
    +PIVariant property (const PIString &name) const
     Returns property with name "name".
     
    +void setProperty (const PIString &name, const PIVariant &value)
     Set property with name "name" to "value". If there is no such property in object it will be added.
     
    +bool isPropertyExists (const PIString &name) const
     Returns if property with name "name" exists.
     
    + + + + + + + + + + + + + + +

    +Protected Member Functions

    +virtual void execution (const State &state)
     Reimplement this function to process current state of machine.
     
    +virtual void transition (const State &from, const State &to)
     Reimplement this function to process switching current state of machine.
     
    - Protected Member Functions inherited from PIObject
    +PIObjectemitter () const
     Returns PIObject* which has raised an event. This value is correct only in definition of some event handler.
     
    +virtual void propertyChanged (const PIString &name)
     Virtual function executes after property with name "name" has been changed.
     
    + + + + + + + +

    +Handlers

    +void tick ()
     Main function of machine. Execute execution() and check if need to switch state.
     
    +void tick (void *data, int delim)
     Main function of machine. Execute execution() and check if need to switch state.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Additional Inherited Members

    - Static Public Member Functions inherited from PIObject
    +static void piDisconnect (PIObject *src, const PIString &sig)
     Disconnect object "src" from all connections with event name "sig".
     
    +static void piDisconnect (PIObject *src)
     Disconnect object "src" from all connections, i.e. all connections where object "src" is emitter.
     
    +static PIObjectfindByName (const PIString &name)
     Returns PIObject* with name "name" or 0, if there is no object found.
     
    +

    Detailed Description

    +

    template<typename Type = int>
    +class PIStateMachine< Type >

    + +

    Base class for custom state machine.

    +

    +Synopsis

    +

    This class provide functionality of state machine. You should inherit from this class, implement execution() and transition() functions, set rules and periodically call tick() function to proper work of machine.

    +

    +Prepare for work

    +

    State machine operates with "state", "rule" and "condition".

      +
    • "State" is some class (by default int), associated name and optional "handler" - pointer to function executed on every tick();
    • +
    • "Rule" define rule of transition from one machine state to other. It is also has optional "handler";
    • +
    • "Condition" is a part of rule and define possibility of transition.
    • +
    +

    First of all you should define states of your machine by function addState(). Then you should define transition rules for machine by function addRule(). Finally you can set initial state by function setInitialState() and provide periodically execution of function tick().

    +

    +Principle of work

    +

    At any time the state machine is in some state. You can ask machine to enter in new state by function switchToState(). If all conditions done machine switch it state immediately, else machine remember request and will be try switch to the new state every tick. Successfull state switching execute function transition(), every tick execute function execution() with current state. On successfull transition if rule "handler" is not null it execute. Every tick() if current state "handler" is not null it execute.

    +

    +Conditions

    +

    Each rule has transition condition. Condition is array of pairs (string, number). It means that every condition by name "string" should be performed as least "number" times. Empty condition always permits transition.

    +

    State machine have current performed conditions. You can read this conditions by function currentConditions() and perform new conditions by functions performCondition() and performConditions(). Currend conditions can de erased by function resetConditions().

    +

    +Example

    +

    This is simple example demonstrates all features:

    #include "pip.h"
    +
    +
    enum Mode {Start, Manual, Auto, Finish, End};
    +
    +
    class Machine: public PIStateMachine<Mode> {
    +
    PIOBJECT(Machine)
    +
    public:
    +
    Machine() {
    +
    addState(Start, "start", HANDLER(startFunc));
    +
    addState(Manual, "manual", HANDLER(manualFunc));
    +
    addState(Auto, "auto", HANDLER(autoFunc));
    +
    addState(Finish, "finish", HANDLER(finishFunc));
    +
    addState(End, "end", HANDLER(endFunc));
    +
    +
    addRule(Start, Manual, "init_ok", HANDLER(beginManualFunc));
    +
    addRule(Start, Auto, "init_ok", HANDLER(beginAutoFunc));
    +
    addRule(Manual, Auto, HANDLER(manualToAutoFunc));
    +
    addRule(Auto, Manual, HANDLER(autoToManualFunc));
    +
    addRule(Manual, Finish);
    +
    addRule(Auto, Finish);
    +
    Rule r(Finish, End);
    +
    r.addCondition("finish_0_ok");
    +
    r.addCondition("finish_1_ok", 2);
    +
    addRule(r);
    +
    + +
    +
    CONNECT2(void, void*, int, &timer, timeout, this, tick);
    +
    timer.start(500);
    +
    }
    +
    virtual void execution(const State & state) {
    +
    piCout << "performed conditions:" << currentConditions();
    +
    }
    +
    virtual void transition(const State & from, const State & to) {
    +
    piCout << "switch from" << from.name << "to" << to.name << "state";
    +
    }
    +
    +
    EVENT_HANDLER(void, startFunc) {piCout << "start function";}
    +
    EVENT_HANDLER(void, manualFunc) {piCout << "manual function";}
    +
    EVENT_HANDLER(void, autoFunc) {piCout << "auto function";}
    +
    EVENT_HANDLER(void, finishFunc) {piCout << "finish function";}
    +
    EVENT_HANDLER(void, endFunc) {piCout << "end function";}
    +
    EVENT_HANDLER(void, beginManualFunc) {piCout << "begin manual function";}
    +
    EVENT_HANDLER(void, beginAutoFunc) {piCout << "begin auto function";}
    +
    EVENT_HANDLER(void, autoToManualFunc) {piCout << "switch from auto to manual function";}
    +
    EVENT_HANDLER(void, manualToAutoFunc) {piCout << "switch from manual to auto function";}
    +
    +
    PITimer timer;
    +
    };
    +
    +
    Machine machine;
    +
    +
    void key_event(char key, void*) {
    +
    switch (key) {
    +
    case 's': machine.switchToState(Start); break;
    +
    case 'm': machine.switchToState(Manual); break;
    +
    case 'a': machine.switchToState(Auto); break;
    +
    case 'f': machine.switchToState(Finish); break;
    +
    case 'e': machine.switchToState(End); break;
    +
    case '1': machine.performCondition("init_ok"); break;
    +
    case '2': machine.performCondition("finish_0_ok"); break;
    +
    case '3': machine.performCondition("finish_1_ok"); break;
    +
    case 'r': machine.resetConditions(); break;
    +
    case 'R': machine.reset(); break;
    +
    }
    +
    }
    +
    +
    int main(int argc, char * argv[]) {
    +
    PIKbdListener kbd(key_event);
    +
    kbd.enableExitCapture();
    +
    WAIT_FOR_EXIT
    +
    };
    +

    Member Function Documentation

    + +
    +
    +
    +template<typename Type = int>
    + + + + + +
    + + + + + + + + +
    bool PIStateMachine< Type >::switchToState (Type to)
    +
    +inline
    +
    + +

    Try to switch machine state to state "to".

    +

    If there is rule of transition exists and this rule conditions is performed then machine switched to new state immediately. Otherwise machine will be try to enter to new state every tick().

    Returns
    true if state switched immediately, otherwise false
    + +
    +
    +
    +
    + + + + diff --git a/pip/doc/html/class_p_i_state_machine.js b/pip/doc/html/class_p_i_state_machine.js new file mode 100644 index 0000000..10c59e0 --- /dev/null +++ b/pip/doc/html/class_p_i_state_machine.js @@ -0,0 +1,29 @@ +var class_p_i_state_machine = +[ + [ "Rule", "struct_p_i_state_machine_1_1_rule.html", "struct_p_i_state_machine_1_1_rule" ], + [ "State", "struct_p_i_state_machine_1_1_state.html", "struct_p_i_state_machine_1_1_state" ], + [ "Condition", "class_p_i_state_machine.html#abc7ad84744d038a0eb598e82ac536ed7", null ], + [ "PIStateMachine", "class_p_i_state_machine.html#a5a9c75f183207bc366b2f0531473b905", null ], + [ "addState", "class_p_i_state_machine.html#ac26f6300f7545b0182e3a52805b04cd6", null ], + [ "statesCount", "class_p_i_state_machine.html#ab0e424ab27e2edca90cdf1c368f4686f", null ], + [ "clearStates", "class_p_i_state_machine.html#a18bceb62d18013df1459c3bb442eb7e8", null ], + [ "addRule", "class_p_i_state_machine.html#aee180e7f75ece9aef1c3d8a94095ed21", null ], + [ "addRule", "class_p_i_state_machine.html#a52703fc2cac4578a7a70b57aeb8742fc", null ], + [ "addRule", "class_p_i_state_machine.html#a2bda5abc394ca0d479faf01050c5b843", null ], + [ "addRule", "class_p_i_state_machine.html#a60f175d31774c0a01689ebe4a463dd85", null ], + [ "rulesCount", "class_p_i_state_machine.html#af5c2a2973b22c37217a1d74c60aab909", null ], + [ "clearRules", "class_p_i_state_machine.html#a1e44d3e3cacd745413e84272993a6407", null ], + [ "setInitialState", "class_p_i_state_machine.html#a42b22e027a498659282a4838d576eb80", null ], + [ "switchToState", "class_p_i_state_machine.html#af4aa7b86c70425bfc9690e4c27ab6cf7", null ], + [ "reset", "class_p_i_state_machine.html#a2dbebcfe51dfd85c568bcc5eab3a4d40", null ], + [ "currentState", "class_p_i_state_machine.html#a2335fae60078ae68750df3ca50d95850", null ], + [ "resetConditions", "class_p_i_state_machine.html#aa932844b2866a28e24028020c33fe23a", null ], + [ "resetCondition", "class_p_i_state_machine.html#a8c62341c659ed29e4ba25672162aafc0", null ], + [ "performCondition", "class_p_i_state_machine.html#a0c51b3d6ffd0a96ae5b24a2c06ae20e3", null ], + [ "performConditions", "class_p_i_state_machine.html#a0c2a680c0a10c9440bbe89dccc55ee0c", null ], + [ "currentConditions", "class_p_i_state_machine.html#ab49ff1a9fc9b2a354cd5493a5fd3859a", null ], + [ "tick", "class_p_i_state_machine.html#a37e8b9df953d6948e84d061bc02e5903", null ], + [ "tick", "class_p_i_state_machine.html#a6a262d1d71be95b5b5d4f5d7b276c8f7", null ], + [ "execution", "class_p_i_state_machine.html#a59c79d761ab1c4b64a655e55c6a93904", null ], + [ "transition", "class_p_i_state_machine.html#ad848623075776b802de3fc22b4a08cea", null ] +]; \ No newline at end of file diff --git a/pip/doc/html/class_p_i_state_machine__inherit__graph.map b/pip/doc/html/class_p_i_state_machine__inherit__graph.map new file mode 100644 index 0000000..45fc754 --- /dev/null +++ b/pip/doc/html/class_p_i_state_machine__inherit__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/class_p_i_state_machine__inherit__graph.md5 b/pip/doc/html/class_p_i_state_machine__inherit__graph.md5 new file mode 100644 index 0000000..67dc31e --- /dev/null +++ b/pip/doc/html/class_p_i_state_machine__inherit__graph.md5 @@ -0,0 +1 @@ +5a04af85317b4c40db5345fba502dd89 \ No newline at end of file diff --git a/pip/doc/html/class_p_i_state_machine__inherit__graph.svg b/pip/doc/html/class_p_i_state_machine__inherit__graph.svg new file mode 100644 index 0000000..1a4a2ba --- /dev/null +++ b/pip/doc/html/class_p_i_state_machine__inherit__graph.svg @@ -0,0 +1,31 @@ + + + + + + +PIStateMachine< Type > + + +Node1 + +PIStateMachine< Type > + + +Node2 + + +PIObject + + + + +Node2->Node1 + + + + + diff --git a/pip/doc/html/class_p_i_string-members.html b/pip/doc/html/class_p_i_string-members.html new file mode 100644 index 0000000..c4d1ae4 --- /dev/null +++ b/pip/doc/html/class_p_i_string-members.html @@ -0,0 +1,275 @@ + + + + + + +PIP: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    PIString Member List
    +
    +
    + +

    This is the complete list of members for PIString, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    append(const PIString &str)PIStringinline
    cutLeft(const int len)PIStringinline
    cutMid(const int start, const int len)PIString
    cutRight(const int len)PIStringinline
    data() const PIString
    endsWith(const PIString &str) const PIString
    expandLeftTo(const int len, const PIChar &c)PIStringinline
    expandRightTo(const int len, const PIChar &c)PIStringinline
    find(const char str, const int start=0) const PIString
    find(const PIString str, const int start=0) const PIString
    find(const char *str, const int start=0) const PIStringinline
    find(const string str, const int start=0) const PIStringinline
    findCWord(const PIString &word, const int start=0) const PIString
    findLast(const char str, const int start=0) const PIString
    findLast(const PIString str, const int start=0) const PIString
    findLast(const char *str, const int start=0) const PIStringinline
    findLast(const string str, const int start=0) const PIStringinline
    findWord(const PIString &word, const int start=0) const PIString
    fromBool(const bool value)PIStringinlinestatic
    fromNumber(const short value, int base=10, bool *ok=0)PIStringinlinestatic
    fromNumber(const ushort value, int base=10, bool *ok=0)PIStringinlinestatic
    fromNumber(const int value, int base=10, bool *ok=0)PIStringinlinestatic
    fromNumber(const uint value, int base=10, bool *ok=0)PIStringinlinestatic
    fromNumber(const long value, int base=10, bool *ok=0)PIStringinlinestatic
    fromNumber(const ulong value, int base=10, bool *ok=0)PIStringinlinestatic
    fromNumber(const llong &value, int base=10, bool *ok=0)PIStringinlinestatic
    fromNumber(const ullong &value, int base=10, bool *ok=0)PIStringinlinestatic
    fromNumber(const float value)PIStringinlinestatic
    fromNumber(const double &value)PIStringinlinestatic
    fromNumber(const ldouble &value)PIStringinlinestatic
    insert(const int index, const PIChar &c)PIStringinline
    insert(const int index, const char &c)PIStringinline
    insert(const int index, const PIString &str)PIString
    insert(const int index, const char *c)PIStringinline
    isEmpty() const PIStringinline
    left(const int len) const PIStringinline
    length() const PIStringinline
    lengthAscii() const PIString
    mid(const int start, const int len=-1) const PIString
    operator const char *()PIStringinline
    operator const string()PIStringinline
    operator!=(const PIString &str) const PIString
    operator!=(const PIChar c) const PIStringinline
    operator!=(const char *str) const PIStringinline
    operator!=(const string &str) const PIStringinline
    operator+(const PIString &str, const PIString &f)PIStringrelated
    operator+(const PIString &f, const char *str)PIStringrelated
    operator+(const PIString &f, const string &str)PIStringrelated
    operator+(const char *str, const PIString &f)PIStringrelated
    operator+(const string &str, const PIString &f)PIStringrelated
    operator<(const PIString &str) const PIString
    operator<(const PIChar c) const PIStringinline
    operator<(const char *str) const PIStringinline
    operator<(const string &str) const PIStringinline
    operator<<(const PIString &str)PIStringinline
    operator<<(const PIChar &c)PIStringinline
    operator<<(const char *str)PIStringinline
    operator<<(const wchar_t *str)PIStringinline
    operator<<(const string &str)PIStringinline
    operator<<(const int &num)PIStringinline
    operator<<(const short &num)PIStringinline
    operator<<(const long &num)PIStringinline
    operator<<(const float &num)PIStringinline
    operator<<(const double &num)PIStringinline
    operator<<(std::ostream &s, const PIString &v)PIStringrelated
    operator<=(const PIString &str) const PIStringinline
    operator<=(const PIChar c) const PIStringinline
    operator<=(const char *str) const PIStringinline
    operator<=(const string &str) const PIStringinline
    operator==(const PIString &str) const PIString
    operator==(const PIChar c) const PIStringinline
    operator==(const char *str) const PIStringinline
    operator==(const string &str) const PIStringinline
    operator>(const PIString &str) const PIString
    operator>(const PIChar c) const PIStringinline
    operator>(const char *str) const PIStringinline
    operator>(const string &str) const PIStringinline
    operator>=(const PIString &str) const PIStringinline
    operator>=(const PIChar c) const PIStringinline
    operator>=(const char *str) const PIStringinline
    operator>=(const string &str) const PIStringinline
    operator>>(std::istream &s, PIString &v)PIStringrelated
    operator[](const int pos) const PIStringinline
    operator[](const int pos)PIStringinline
    PIString()PIStringinline
    PIString(const PIChar &c)PIStringinline
    PIString(const char *str)PIStringinline
    PIString(const wchar_t *str)PIStringinline
    PIString(const string &str)PIStringinline
    PIString(const PIByteArray &ba)PIStringinline
    PIString(const PIChar *str, const int len)PIStringinline
    PIString(const char *str, const int len)PIStringinline
    PIString(const int len, const char c)PIStringinline
    PIString(const int len, const PIChar &c)PIStringinline
    prepend(const PIString &str)PIStringinline
    readableSize(llong bytes)PIStringinlinestatic
    repeat(int times)PIStringinline
    repeated(int times) const PIStringinline
    replace(const int from, const int count, const PIString &with)PIString
    replace(const PIString &what, const PIString &with, bool *ok=0)PIString
    replaceAll(const PIString &what, const PIString &with)PIString
    replaced(const int from, const int count, const PIString &with) const PIStringinline
    replaced(const PIString &what, const PIString &with, bool *ok=0) const PIStringinline
    reverse()PIStringinline
    reversed() const PIStringinline
    right(const int len) const PIStringinline
    setNumber(const short value, int base=10, bool *ok=0)PIStringinline
    setNumber(const ushort value, int base=10, bool *ok=0)PIStringinline
    setNumber(const int value, int base=10, bool *ok=0)PIStringinline
    setNumber(const uint value, int base=10, bool *ok=0)PIStringinline
    setNumber(const long value, int base=10, bool *ok=0)PIStringinline
    setNumber(const ulong value, int base=10, bool *ok=0)PIStringinline
    setNumber(const llong &value, int base=10, bool *ok=0)PIStringinline
    setNumber(const ullong &value, int base=10, bool *ok=0)PIStringinline
    setNumber(const float value)PIStringinline
    setNumber(const double &value)PIStringinline
    setNumber(const ldouble &value)PIStringinline
    setReadableSize(llong bytes)PIString
    split(const PIString &delim) const PIString
    startsWith(const PIString &str) const PIString
    stdString() const PIStringinline
    takeCWord()PIString
    takeLeft(const int len)PIStringinline
    takeLine()PIString
    takeMid(const int start, const int len=-1)PIStringinline
    takeNumber()PIString
    takeRange(const PIChar &start, const PIChar &end, const PIChar &shield= '\\')PIString
    takeRight(const int len)PIStringinline
    takeSymbol()PIString
    takeWord()PIString
    toBool() const PIStringinline
    toByteArray() const PIStringinline
    toChar() const PIString
    toDouble() const PIStringinline
    toFloat() const PIStringinline
    toInt(int base=-1, bool *ok=0) const PIStringinline
    toLDouble() const PIStringinline
    toLLong(int base=-1, bool *ok=0) const PIStringinline
    toLong(int base=-1, bool *ok=0) const PIStringinline
    toLowerCase() const PIString
    toShort(int base=-1, bool *ok=0) const PIStringinline
    toUInt(int base=-1, bool *ok=0) const PIStringinline
    toULLong(int base=-1, bool *ok=0) const PIStringinline
    toULong(int base=-1, bool *ok=0) const PIStringinline
    toUpperCase() const PIString
    toUShort(int base=-1, bool *ok=0) const PIStringinline
    trim()PIString
    trimmed() const PIString
    +
    + + + + diff --git a/pip/doc/html/class_p_i_string.html b/pip/doc/html/class_p_i_string.html new file mode 100644 index 0000000..6c74d13 --- /dev/null +++ b/pip/doc/html/class_p_i_string.html @@ -0,0 +1,3942 @@ + + + + + + +PIP: PIString Class Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + + +
    + +

    String class. + More...

    + +

    Inherits PIDeque< T >.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    PIString ()
     Contructs an empty string.
     
    PIString (const PIChar &c)
     Contructs string with single symbol "c".
     
     PIString (const char *str)
     Contructs string from c-string "str". More...
     
     PIString (const wchar_t *str)
     Contructs string from wchar_t c-string "str". More...
     
    PIString (const string &str)
     Contructs string from std::string "str".
     
    PIString (const PIByteArray &ba)
     Contructs string from byte array "ba".
     
    PIString (const PIChar *str, const int len)
     Contructs string from "len" characters of buffer "str".
     
     PIString (const char *str, const int len)
     Contructs string from "len" characters of buffer "str". More...
     
     PIString (const int len, const char c)
     Contructs string as sequence of characters "c" of buffer with length "len". More...
     
     PIString (const int len, const PIChar &c)
     Contructs string as sequence of symbols "c" of buffer with length "len". More...
     
     operator const char * ()
     Return c-string representation of string. More...
     
    operator const string ()
     Return std::string representation of string.
     
    +PIChar operator[] (const int pos) const
     Return symbol at index "pos".
     
    +PICharoperator[] (const int pos)
     Return reference to symbol at index "pos".
     
    +bool operator== (const PIString &str) const
     Compare operator.
     
    +bool operator== (const PIChar c) const
     Compare operator.
     
    +bool operator== (const char *str) const
     Compare operator.
     
    +bool operator== (const string &str) const
     Compare operator.
     
    +bool operator!= (const PIString &str) const
     Compare operator.
     
    +bool operator!= (const PIChar c) const
     Compare operator.
     
    +bool operator!= (const char *str) const
     Compare operator.
     
    +bool operator!= (const string &str) const
     Compare operator.
     
    +bool operator< (const PIString &str) const
     Compare operator.
     
    +bool operator< (const PIChar c) const
     Compare operator.
     
    +bool operator< (const char *str) const
     Compare operator.
     
    +bool operator< (const string &str) const
     Compare operator.
     
    +bool operator> (const PIString &str) const
     Compare operator.
     
    +bool operator> (const PIChar c) const
     Compare operator.
     
    +bool operator> (const char *str) const
     Compare operator.
     
    +bool operator> (const string &str) const
     Compare operator.
     
    +bool operator<= (const PIString &str) const
     Compare operator.
     
    +bool operator<= (const PIChar c) const
     Compare operator.
     
    +bool operator<= (const char *str) const
     Compare operator.
     
    +bool operator<= (const string &str) const
     Compare operator.
     
    +bool operator>= (const PIString &str) const
     Compare operator.
     
    +bool operator>= (const PIChar c) const
     Compare operator.
     
    +bool operator>= (const char *str) const
     Compare operator.
     
    +bool operator>= (const string &str) const
     Compare operator.
     
    PIStringoperator<< (const PIString &str)
     Append string "str" at the end of string. More...
     
    PIStringoperator<< (const PIChar &c)
     Append symbol "c" at the end of string. More...
     
    PIStringoperator<< (const char *str)
     Append c-string "str" at the end of string. More...
     
    PIStringoperator<< (const wchar_t *str)
     Append wchar_t c-string "str" at the end of string. More...
     
    +PIStringoperator<< (const string &str)
     Append std::string "str" at the end of string.
     
    PIStringoperator<< (const int &num)
     Append string representation of "num" at the end of string. More...
     
    PIStringoperator<< (const short &num)
     Append string representation of "num" at the end of string. More...
     
    PIStringoperator<< (const long &num)
     Append string representation of "num" at the end of string. More...
     
    PIStringoperator<< (const float &num)
     Append string representation of "num" at the end of string. More...
     
    PIStringoperator<< (const double &num)
     Append string representation of "num" at the end of string. More...
     
    +PIStringprepend (const PIString &str)
     Insert string "str" at the begin of string.
     
    +PIStringappend (const PIString &str)
     Insert string "str" at the end of string.
     
    PIString mid (const int start, const int len=-1) const
     Return part of string from symbol at index "start" and maximum length "len". More...
     
    PIString left (const int len) const
     Return part of string from left and maximum length "len". More...
     
    PIString right (const int len) const
     Return part of string from right and maximum length "len". More...
     
    PIStringcutMid (const int start, const int len)
     Remove part of string from symbol as index "start" and maximum length "len" and return this string. More...
     
    PIStringcutLeft (const int len)
     Remove part of string from left and maximum length "len" and return this string. More...
     
    PIStringcutRight (const int len)
     Remove part of string from right and maximum length "len" and return this string. More...
     
    PIStringtrim ()
     Remove spaces at the start and at the end of string and return this string. More...
     
    PIString trimmed () const
     Return copy of this string without spaces at the start and at the end. More...
     
    PIStringreplace (const int from, const int count, const PIString &with)
     Replace part of string from index "from" and maximum length "len" with string "with" and return this string. More...
     
    PIString replaced (const int from, const int count, const PIString &with) const
     Replace part copy of this string from index "from" and maximum length "len" with string "with" and return copied string. More...
     
    PIStringreplace (const PIString &what, const PIString &with, bool *ok=0)
     Replace first founded substring "what" with string "with" and return this string. More...
     
    PIString replaced (const PIString &what, const PIString &with, bool *ok=0) const
     Replace first founded substring "what" with string "with" and return copied string. More...
     
    PIStringreplaceAll (const PIString &what, const PIString &with)
     Replace all founded substrings "what" with strings "with" and return this string. More...
     
    PIStringrepeat (int times)
     Repeat content of string "times" times and return this string. More...
     
    PIString repeated (int times) const
     Returns repeated "times" times string. More...
     
    PIStringinsert (const int index, const PIChar &c)
     Insert symbol "c" after index "index" and return this string. More...
     
    PIStringinsert (const int index, const char &c)
     Insert symbol "c" after index "index" and return this string. More...
     
    PIStringinsert (const int index, const PIString &str)
     Insert string "str" after index "index" and return this string. More...
     
    PIStringinsert (const int index, const char *c)
     Insert string "str" after index "index" and return this string. More...
     
    PIStringexpandRightTo (const int len, const PIChar &c)
     Enlarge string to length "len" by addition sequence of symbols "c" at the end of string, and return this string. More...
     
    PIStringexpandLeftTo (const int len, const PIChar &c)
     Enlarge string to length "len" by addition sequence of symbols "c" at the beginning of string, and return this string. More...
     
    PIStringreverse ()
     Reverse string and return this string. More...
     
    PIString reversed () const
     Reverse copy of this string and return it. More...
     
    PIString takeMid (const int start, const int len=-1)
     Take a part of string from symbol at index "start" and maximum length "len" and return it. More...
     
    PIString takeLeft (const int len)
     Take a part from the begin of string with maximum length "len" and return it. More...
     
    PIString takeRight (const int len)
     Take a part from the end of string with maximum length "len" and return it. More...
     
    PIString takeSymbol ()
     Take a symbol from the begin of this string and return it. More...
     
    PIString takeWord ()
     Take a word from the begin of this string and return it. More...
     
    PIString takeCWord ()
     Take a word with letters, numbers and '_' symbols from the begin of this string and return it. More...
     
    PIString takeLine ()
     Take a line from the begin of this string and return it. More...
     
    PIString takeNumber ()
     Take a number with C-format from the begin of this string and return it. More...
     
    PIString takeRange (const PIChar &start, const PIChar &end, const PIChar &shield= '\\')
     Take a range between "start" and "end" symbols from the begin of this string and return it. More...
     
    int lengthAscii () const
     Return real bytes count of this string. More...
     
    const char * data () const
     Return char * representation of this string. More...
     
    +std::string stdString () const
     Return std::string representation of this string.
     
    +PIByteArray toByteArray () const
     Return PIByteArray contains data() of this string.
     
    PIStringList split (const PIString &delim) const
     Split string with delimiter "delim" to PIStringList and return it. More...
     
    +PIString toUpperCase () const
     Convert each symbol in copyed string to upper case and return it.
     
    +PIString toLowerCase () const
     Convert each symbol in copyed string to lower case and return it.
     
    int find (const char str, const int start=0) const
     Search substring "str" from symbol at index "start" and return first occur position. More...
     
    int find (const PIString str, const int start=0) const
     Search substring "str" from symbol at index "start" and return first occur position. More...
     
    int find (const char *str, const int start=0) const
     Search substring "str" from symbol at index "start" and return first occur position. More...
     
    int find (const string str, const int start=0) const
     Search substring "str" from symbol at index "start" and return first occur position. More...
     
    int findLast (const char str, const int start=0) const
     Search substring "str" from symbol at index "start" and return last occur position. More...
     
    int findLast (const PIString str, const int start=0) const
     Search substring "str" from symbol at index "start" and return last occur position. More...
     
    int findLast (const char *str, const int start=0) const
     Search substring "str" from symbol at index "start" and return last occur position. More...
     
    int findLast (const string str, const int start=0) const
     Search substring "str" from symbol at index "start" and return last occur position. More...
     
    int findWord (const PIString &word, const int start=0) const
     Search word "word" from symbol at index "start" and return first occur position. More...
     
    int findCWord (const PIString &word, const int start=0) const
     Search C-style word "word" from symbol at index "start" and return first occur position. More...
     
    +bool startsWith (const PIString &str) const
     Return if string starts with "str".
     
    +bool endsWith (const PIString &str) const
     Return if string ends with "str".
     
    +int length () const
     Return symbols length of string.
     
    +bool isEmpty () const
     Return true if string is empty, i.e. length = 0.
     
    +bool toBool () const
     Return true if string equal "true", "yes", "on" or positive not null numeric value.
     
    +char toChar () const
     Return char numeric value of string.
     
    short toShort (int base=-1, bool *ok=0) const
     Return short numeric value of string in base "base". More...
     
    ushort toUShort (int base=-1, bool *ok=0) const
     Return ushort numeric value of string in base "base". More...
     
    int toInt (int base=-1, bool *ok=0) const
     Return int numeric value of string in base "base". More...
     
    uint toUInt (int base=-1, bool *ok=0) const
     Return uint numeric value of string in base "base". More...
     
    long toLong (int base=-1, bool *ok=0) const
     Return long numeric value of string in base "base". More...
     
    ulong toULong (int base=-1, bool *ok=0) const
     Return ulong numeric value of string in base "base". More...
     
    llong toLLong (int base=-1, bool *ok=0) const
     Return llong numeric value of string in base "base". More...
     
    ullong toULLong (int base=-1, bool *ok=0) const
     Return ullong numeric value of string in base "base". More...
     
    float toFloat () const
     Return float numeric value of string. More...
     
    double toDouble () const
     Return double numeric value of string. More...
     
    ldouble toLDouble () const
     Return ldouble numeric value of string. More...
     
    PIStringsetNumber (const short value, int base=10, bool *ok=0)
     Set string content to numeric representation of "value" in base "base". More...
     
    PIStringsetNumber (const ushort value, int base=10, bool *ok=0)
     Set string content to numeric representation of "value" in base "base". More...
     
    PIStringsetNumber (const int value, int base=10, bool *ok=0)
     Set string content to numeric representation of "value" in base "base". More...
     
    PIStringsetNumber (const uint value, int base=10, bool *ok=0)
     Set string content to numeric representation of "value" in base "base". More...
     
    PIStringsetNumber (const long value, int base=10, bool *ok=0)
     Set string content to numeric representation of "value" in base "base". More...
     
    PIStringsetNumber (const ulong value, int base=10, bool *ok=0)
     Set string content to numeric representation of "value" in base "base". More...
     
    PIStringsetNumber (const llong &value, int base=10, bool *ok=0)
     Set string content to numeric representation of "value" in base "base". More...
     
    PIStringsetNumber (const ullong &value, int base=10, bool *ok=0)
     Set string content to numeric representation of "value" in base "base". More...
     
    PIStringsetNumber (const float value)
     Set string content to numeric representation of "value". More...
     
    PIStringsetNumber (const double &value)
     Set string content to numeric representation of "value". More...
     
    PIStringsetNumber (const ldouble &value)
     Set string content to numeric representation of "value". More...
     
    PIStringsetReadableSize (llong bytes)
     Set string content to human readable size in B/kB/MB/GB/TB. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Static Public Member Functions

    static PIString fromNumber (const short value, int base=10, bool *ok=0)
     Return string contains numeric representation of "value" in base "base". More...
     
    static PIString fromNumber (const ushort value, int base=10, bool *ok=0)
     Return string contains numeric representation of "value" in base "base". More...
     
    static PIString fromNumber (const int value, int base=10, bool *ok=0)
     Return string contains numeric representation of "value" in base "base". More...
     
    static PIString fromNumber (const uint value, int base=10, bool *ok=0)
     Return string contains numeric representation of "value" in base "base". More...
     
    static PIString fromNumber (const long value, int base=10, bool *ok=0)
     Return string contains numeric representation of "value" in base "base". More...
     
    static PIString fromNumber (const ulong value, int base=10, bool *ok=0)
     Return string contains numeric representation of "value" in base "base". More...
     
    static PIString fromNumber (const llong &value, int base=10, bool *ok=0)
     Return string contains numeric representation of "value" in base "base". More...
     
    static PIString fromNumber (const ullong &value, int base=10, bool *ok=0)
     Return string contains numeric representation of "value" in base "base". More...
     
    static PIString fromNumber (const float value)
     Return string contains numeric representation of "value". More...
     
    static PIString fromNumber (const double &value)
     Return string contains numeric representation of "value". More...
     
    static PIString fromNumber (const ldouble &value)
     Return string contains numeric representation of "value". More...
     
    +static PIString fromBool (const bool value)
     Return "true" or "false".
     
    static PIString readableSize (llong bytes)
     Return string contains human readable size in B/kB/MB/GB/TB. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + +

    +Related Functions

    (Note that these are not member functions.)

    +
    +std::ostream & operator<< (std::ostream &s, const PIString &v)
     Output operator to std::ostream (cout)
     
    +std::istream & operator>> (std::istream &s, PIString &v)
     Input operator from std::istream (cin)
     
    +PIString operator+ (const PIString &str, const PIString &f)
     Return concatenated string.
     
    +PIString operator+ (const PIString &f, const char *str)
     Return concatenated string.
     
    +PIString operator+ (const PIString &f, const string &str)
     Return concatenated string.
     
    +PIString operator+ (const char *str, const PIString &f)
     Return concatenated string.
     
    +PIString operator+ (const string &str, const PIString &f)
     Return concatenated string.
     
    +

    Detailed Description

    +

    String class.

    +

    PIP use this class for use string information.

    +

    +Synopsis

    +

    This class based on PIVector to store information. String is a sequence of PIChar and can contain multibyte symbols. Therefore real memory size of string is symbols count * 4. String can be constucted from many types of data and can be converted to many types. There are man operators and handly functions to use string as you wish.

    +

    +To/from data convertions

    +

    Most common constructor is PIString(const char * str), where "str" is null-terminated string, e.g. "string". This is 7 chars with last char = 0. Also you can constructs PIString from single PIChar, PIByteArray, other PIString or sequency of the same characters with custom length.
    +
    +This class has implicit conversions to const char * and std::string. Also there are functions to make same convertions:

    +

    +Numeric operations

    +

    You can get symbolic representation of any numeric value with function setNumber(any integer value, int base = 10, bool * ok = 0). Default arguments are set for decimal base system, but you can choose any system from 2 to 40. There are the same static functions fromNumber(), that returns PIString.
    +Also there is function setReadableSize() which is set human-readable size in bytes, Kb, Mb, Gb or Pb. Static analog is readableSize().

    +

    Constructor & Destructor Documentation

    + +
    +
    + + + + + +
    + + + + + + + + +
    PIString::PIString (const char * str)
    +
    +inline
    +
    + +

    Contructs string from c-string "str".

    +

    "str" should be null-terminated
    +Example:

    PIString s("string");
    +
    +
    +
    + +
    +
    + + + + + +
    + + + + + + + + +
    PIString::PIString (const wchar_t * str)
    +
    +inline
    +
    + +

    Contructs string from wchar_t c-string "str".

    +

    "str" should be null-terminated
    +Example:

    PIString s(L"string");
    +
    +
    +
    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    PIString::PIString (const char * str,
    const int len 
    )
    +
    +inline
    +
    + +

    Contructs string from "len" characters of buffer "str".

    +

    Example:

    PIString s("string", 3); // s = "str"
    +
    +
    +
    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    PIString::PIString (const int len,
    const char c 
    )
    +
    +inline
    +
    + +

    Contructs string as sequence of characters "c" of buffer with length "len".

    +

    Example:

    PIString s(5, 'p'); // s = "ppppp"
    +
    +
    +
    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    PIString::PIString (const int len,
    const PICharc 
    )
    +
    +inline
    +
    + +

    Contructs string as sequence of symbols "c" of buffer with length "len".

    +

    Example:

    PIString s(5, "â„–"); // s = "â„–â„–â„–â„–â„–"
    +
    +
    +
    +

    Member Function Documentation

    + +
    +
    + + + + + +
    + + + + + + + +
    PIString::operator const char * ()
    +
    +inline
    +
    + +

    Return c-string representation of string.

    +

    Converts content of string to c-string and return pointer to first char. This buffer is valid until new convertion or execution data() or toByteArray().
    +Example:

    PIString s("pip");
    +
    cout << (char*)s << endl; // pip
    +
    +
    +
    + +
    +
    + + + + + +
    + + + + + + + + +
    PIString& PIString::operator<< (const PIStringstr)
    +
    +inline
    +
    + +

    Append string "str" at the end of string.

    +

    Example:

    PIString s("this"), s1(" is"), s2(" string");
    +
    s << s1 << s2; // s = "this is string"
    +
    +
    +
    + +
    +
    + + + + + +
    + + + + + + + + +
    PIString& PIString::operator<< (const PICharc)
    +
    +inline
    +
    + +

    Append symbol "c" at the end of string.

    +

    Example:

    PIString s("stri");
    +
    s << PIChar('n') << PIChar('g'); // s = "string"
    +
    +
    +
    + +
    +
    + + + + + +
    + + + + + + + + +
    PIString& PIString::operator<< (const char * str)
    +
    +inline
    +
    + +

    Append c-string "str" at the end of string.

    +

    Example:

    PIString s("this");
    +
    s << " is" << " string"; // s = "this is string"
    +
    +
    +
    + +
    +
    + + + + + +
    + + + + + + + + +
    PIString& PIString::operator<< (const wchar_t * str)
    +
    +inline
    +
    + +

    Append wchar_t c-string "str" at the end of string.

    +

    Example:

    +
    s << L"â„– -" << " number"; // s = "â„– - number"
    +
    +
    +
    + +
    +
    + + + + + +
    + + + + + + + + +
    PIString& PIString::operator<< (const int & num)
    +
    +inline
    +
    + +

    Append string representation of "num" at the end of string.

    +

    Example:

    PIString s("ten - ");
    +
    s << 10; // s = "ten - 10"
    +
    +
    +
    + +
    +
    + + + + + +
    + + + + + + + + +
    PIString& PIString::operator<< (const short & num)
    +
    +inline
    +
    + +

    Append string representation of "num" at the end of string.

    +

    Example:

    PIString s("ten - ");
    +
    s << 10; // s = "ten - 10"
    +
    +
    +
    + +
    +
    + + + + + +
    + + + + + + + + +
    PIString& PIString::operator<< (const long & num)
    +
    +inline
    +
    + +

    Append string representation of "num" at the end of string.

    +

    Example:

    PIString s("ten - ");
    +
    s << 10; // s = "ten - 10"
    +
    +
    +
    + +
    +
    + + + + + +
    + + + + + + + + +
    PIString& PIString::operator<< (const float & num)
    +
    +inline
    +
    + +

    Append string representation of "num" at the end of string.

    +

    Example:

    PIString s("ten - ");
    +
    s << 10; // s = "ten - 10"
    +
    +
    +
    + +
    +
    + + + + + +
    + + + + + + + + +
    PIString& PIString::operator<< (const double & num)
    +
    +inline
    +
    + +

    Append string representation of "num" at the end of string.

    +

    Example:

    PIString s("ten - ");
    +
    s << 10; // s = "ten - 10"
    +
    +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + +
    PIString PIString::mid (const int start,
    const int len = -1 
    ) const
    +
    + +

    Return part of string from symbol at index "start" and maximum length "len".

    +

    All variants demonstrated in example:

    PIString s("0123456789");
    +
    piCout << s.mid(-2, -1); // s = "0123456789"
    +
    piCout << s.mid(-2, 4); // s = "01"
    +
    piCout << s.mid(3, -1); // s = "3456789"
    +
    piCout << s.mid(3, 4); // s = "3456"
    +
    See also
    left(), right()
    + +
    +
    + +
    +
    + + + + + +
    + + + + + + + + +
    PIString PIString::left (const int len) const
    +
    +inline
    +
    + +

    Return part of string from left and maximum length "len".

    +

    Example:

    PIString s("0123456789");
    +
    piCout << s.left(-1); // s = ""
    +
    piCout << s.left(1); // s = "0"
    +
    piCout << s.left(5); // s = "01234"
    +
    piCout << s.left(15); // s = "0123456789"
    +
    See also
    mid(), right()
    + +
    +
    + +
    +
    + + + + + +
    + + + + + + + + +
    PIString PIString::right (const int len) const
    +
    +inline
    +
    + +

    Return part of string from right and maximum length "len".

    +

    Example:

    PIString s("0123456789");
    +
    piCout << s.right(-1); // s = ""
    +
    piCout << s.right(1); // s = "9"
    +
    piCout << s.right(5); // s = "56789"
    +
    piCout << s.right(15); // s = "0123456789"
    +
    See also
    mid(), left()
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + +
    PIString & PIString::cutMid (const int start,
    const int len 
    )
    +
    + +

    Remove part of string from symbol as index "start" and maximum length "len" and return this string.

    +

    All variants demonstrated in example:

    PIString s("0123456789");
    +
    s.cutMid(1, 3);
    +
    piCout << s; // s = "0456789"
    +
    s.cutMid(-1, 3);
    +
    piCout << s; // s = "56789"
    +
    s.cutMid(3, -1);
    +
    piCout << s; // s = "567"
    +
    See also
    cutLeft(), cutRight()
    + +
    +
    + +
    +
    + + + + + +
    + + + + + + + + +
    PIString& PIString::cutLeft (const int len)
    +
    +inline
    +
    + +

    Remove part of string from left and maximum length "len" and return this string.

    +

    Example:

    PIString s("0123456789");
    +
    s.cutLeft(1);
    +
    piCout << s; // s = "123456789"
    +
    s.cutLeft(3);
    +
    piCout << s; // s = "456789"
    +
    s.cutLeft(30);
    +
    piCout << s; // s = ""
    +
    See also
    cutMid(), cutRight()
    + +
    +
    + +
    +
    + + + + + +
    + + + + + + + + +
    PIString& PIString::cutRight (const int len)
    +
    +inline
    +
    + +

    Remove part of string from right and maximum length "len" and return this string.

    +

    Example:

    PIString s("0123456789");
    +
    s.cutRight(1);
    +
    piCout << s; // s = "012345678"
    +
    s.cutRight(3);
    +
    piCout << s; // s = "012345"
    +
    s.cutRight(30);
    +
    piCout << s; // s = ""
    +
    See also
    cutMid(), cutLeft()
    + +
    +
    + +
    +
    + + + + + + + +
    PIString & PIString::trim ()
    +
    + +

    Remove spaces at the start and at the end of string and return this string.

    +

    Example:

    PIString s(" string ");
    +
    s.trim();
    +
    piCout << s; // s = "string"
    +
    See also
    trimmed()
    + +
    +
    + +
    +
    + + + + + + + +
    PIString PIString::trimmed () const
    +
    + +

    Return copy of this string without spaces at the start and at the end.

    +

    Example:

    PIString s(" string ");
    +
    piCout << s.trimmed(); // s = "string"
    +
    piCout << s; // s = " string "
    +
    See also
    trim()
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    PIString & PIString::replace (const int from,
    const int count,
    const PIStringwith 
    )
    +
    + +

    Replace part of string from index "from" and maximum length "len" with string "with" and return this string.

    +

    Example:

    PIString s("0123456789");
    +
    s.replace(2, 3, "_cut_");
    +
    piCout << s; // s = "01_cut_56789"
    +
    s.replace(0, 1, "one_");
    +
    piCout << s; // s = "one_1_cut_56789"
    +
    See also
    replaced(), replaceAll()
    + +
    +
    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    PIString PIString::replaced (const int from,
    const int count,
    const PIStringwith 
    ) const
    +
    +inline
    +
    + +

    Replace part copy of this string from index "from" and maximum length "len" with string "with" and return copied string.

    +

    Example:

    PIString s("0123456789");
    +
    piCout << s.replaced(2, 3, "_cut_"); // s = "01_cut_56789"
    +
    piCout << s.replaced(0, 1, "one_"); // s = "one_123456789"
    +
    See also
    replace(), replaceAll()
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    PIString & PIString::replace (const PIStringwhat,
    const PIStringwith,
    bool * ok = 0 
    )
    +
    + +

    Replace first founded substring "what" with string "with" and return this string.

    +

    If "ok" is not null, it set to "true" if something was replaced
    +Example:

    PIString s("pip string");
    +
    bool ok;
    +
    s.replace("string", "conf", &ok);
    +
    piCout << s << ok; // s = "pip conf", true
    +
    s.replace("PIP", "PlInPr", &ok);
    +
    piCout << s << ok; // s = "pip conf", false
    +
    See also
    replaced(), replaceAll()
    + +
    +
    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    PIString PIString::replaced (const PIStringwhat,
    const PIStringwith,
    bool * ok = 0 
    ) const
    +
    +inline
    +
    + +

    Replace first founded substring "what" with string "with" and return copied string.

    +

    If "ok" is not null, it set to "true" if something was replaced
    +Example:

    PIString s("pip string");
    +
    bool ok;
    +
    piCout << s.replace("string", "conf", &ok); // s = "pip conf", true
    +
    piCout << s.replace("PIP", "PlInPr", &ok); // s = "pip string", false
    +
    See also
    replaced(), replaceAll()
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + +
    PIString & PIString::replaceAll (const PIStringwhat,
    const PIStringwith 
    )
    +
    + +

    Replace all founded substrings "what" with strings "with" and return this string.

    +

    Example:

    PIString s("substrings");
    +
    s.replaceAll("s", "_");
    +
    piCout << s; // s = "_ub_tring_"
    +
    See also
    replace(), replaced()
    + +
    +
    + +
    +
    + + + + + +
    + + + + + + + + +
    PIString& PIString::repeat (int times)
    +
    +inline
    +
    + +

    Repeat content of string "times" times and return this string.

    +

    Example:

    PIString s(" :-) ");
    +
    s.repeat(3);
    +
    piCout << s; // :-) :-) :-)
    +
    +
    +
    + +
    +
    + + + + + +
    + + + + + + + + +
    PIString PIString::repeated (int times) const
    +
    +inline
    +
    + +

    Returns repeated "times" times string.

    +

    Example:

    PIString s(" :-) ");
    +
    piCout << s.repeated(3); // :-) :-) :-)
    +
    piCout << s; // :-)
    +
    +
    +
    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    PIString& PIString::insert (const int index,
    const PICharc 
    )
    +
    +inline
    +
    + +

    Insert symbol "c" after index "index" and return this string.

    +

    Example:

    PIString s("pp");
    +
    s.insert(1, "i");
    +
    piCout << s; // s = "pip"
    +
    +
    +
    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    PIString& PIString::insert (const int index,
    const char & c 
    )
    +
    +inline
    +
    + +

    Insert symbol "c" after index "index" and return this string.

    +

    Example:

    PIString s("pp");
    +
    s.insert(1, 'i');
    +
    piCout << s; // s = "pip"
    +
    +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + +
    PIString & PIString::insert (const int index,
    const PIStringstr 
    )
    +
    + +

    Insert string "str" after index "index" and return this string.

    +

    Example:

    PIString s("stg");
    +
    s.insert(2, "rin");
    +
    piCout << s; // s = "string"
    +
    +
    +
    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    PIString& PIString::insert (const int index,
    const char * c 
    )
    +
    +inline
    +
    + +

    Insert string "str" after index "index" and return this string.

    +

    Example:

    PIString s("stg");
    +
    s.insert(2, "rin");
    +
    piCout << s; // s = "string"
    +
    +
    +
    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    PIString& PIString::expandRightTo (const int len,
    const PICharc 
    )
    +
    +inline
    +
    + +

    Enlarge string to length "len" by addition sequence of symbols "c" at the end of string, and return this string.

    +

    Example:

    PIString s("str");
    +
    s.expandRightTo(2, "_");
    +
    piCout << s; // s = "str"
    +
    s.expandRightTo(6, "_");
    +
    piCout << s; // s = "str___"
    +
    See also
    expandLeftTo()
    + +
    +
    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    PIString& PIString::expandLeftTo (const int len,
    const PICharc 
    )
    +
    +inline
    +
    + +

    Enlarge string to length "len" by addition sequence of symbols "c" at the beginning of string, and return this string.

    +

    Example:

    PIString s("str");
    +
    s.expandLeftTo(2, "_");
    +
    piCout << s; // s = "str"
    +
    s.expandLeftTo(6, "_");
    +
    piCout << s; // s = "___str"
    +
    See also
    expandRightTo()
    + +
    +
    + +
    +
    + + + + + +
    + + + + + + + +
    PIString& PIString::reverse ()
    +
    +inline
    +
    + +

    Reverse string and return this string.

    +

    Example:

    PIString s("0123456789");
    +
    s.reverse();
    +
    piCout << s; // s = "9876543210"
    +
    See also
    reversed()
    + +
    +
    + +
    +
    + + + + + +
    + + + + + + + +
    PIString PIString::reversed () const
    +
    +inline
    +
    + +

    Reverse copy of this string and return it.

    +

    Example:

    PIString s("0123456789");
    +
    piCout << s.reversed(); // s = "9876543210"
    +
    piCout << s; // s = "0123456789"
    +
    See also
    reverse()
    + +
    +
    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    PIString PIString::takeMid (const int start,
    const int len = -1 
    )
    +
    +inline
    +
    + +

    Take a part of string from symbol at index "start" and maximum length "len" and return it.

    +

    Example:

    See also
    takeLeft, takeRight()
    + +
    +
    + +
    +
    + + + + + +
    + + + + + + + + +
    PIString PIString::takeLeft (const int len)
    +
    +inline
    +
    + +

    Take a part from the begin of string with maximum length "len" and return it.

    +

    Example:

    See also
    takeMid(), takeRight()
    + +
    +
    + +
    +
    + + + + + +
    + + + + + + + + +
    PIString PIString::takeRight (const int len)
    +
    +inline
    +
    + +

    Take a part from the end of string with maximum length "len" and return it.

    +

    Example:

    See also
    takeMid(), takeLeft()
    + +
    +
    + +
    +
    + + + + + + + +
    PIString PIString::takeSymbol ()
    +
    + +

    Take a symbol from the begin of this string and return it.

    +

    Example:

    PIString s("\t ! word");
    +
    piCout << s.takeSymbol(); // "!"
    +
    piCout << s.takeSymbol(); // "w"
    +
    piCout << s.takeSymbol(); // "o"
    +
    piCout << s; // "rd"
    +
    See also
    takeWord(), takeCWord(), takeLine(), takeNumber(), takeRange()
    + +
    +
    + +
    +
    + + + + + + + +
    PIString PIString::takeWord ()
    +
    + +

    Take a word from the begin of this string and return it.

    +

    Example:

    PIString s("some words\nnew line ");
    +
    piCout << s.takeWord(); // "some"
    +
    piCout << s.takeWord(); // "words"
    +
    piCout << s.takeWord(); // "new"
    +
    piCout << s; // " line "
    +
    See also
    takeSymbol(), takeCWord(), takeLine(), takeNumber(), takeRange()
    + +
    +
    + +
    +
    + + + + + + + +
    PIString PIString::takeCWord ()
    +
    + +

    Take a word with letters, numbers and '_' symbols from the begin of this string and return it.

    +

    Example:

    See also
    takeSymbol(), takeWord(), takeLine(), takeNumber(), takeRange()
    + +
    +
    + +
    +
    + + + + + + + +
    PIString PIString::takeLine ()
    +
    + +

    Take a line from the begin of this string and return it.

    +

    Example:

    PIString s("some words\nnew line \n\nend");
    +
    piCout << s.takeLine(); // "some words"
    +
    piCout << s.takeLine(); // "new line "
    +
    piCout << s.takeLine(); // ""
    +
    piCout << s; // "end"
    +
    See also
    takeSymbol(), takeWord(), takeCWord(), takeNumber(), takeRange()
    + +
    +
    + +
    +
    + + + + + + + +
    PIString PIString::takeNumber ()
    +
    + +

    Take a number with C-format from the begin of this string and return it.

    +

    Example:

    PIString s(" 0xFF -99 1.2E+5f 1000L");
    +
    piCout << s.takeNumber(); // "0xFF"
    +
    piCout << s.takeNumber(); // "-99"
    +
    piCout << s.takeNumber(); // "1.2E+5f"
    +
    piCout << s.takeNumber(); // "1000L"
    +
    piCout << s; // ""
    +
    See also
    takeSymbol(), takeWord(), takeCWord(), takeLine(), takeRange()
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    PIString PIString::takeRange (const PICharstart,
    const PICharend,
    const PICharshield = '\\' 
    )
    +
    + +

    Take a range between "start" and "end" symbols from the begin of this string and return it.

    +

    "Shield" symbol prevent analysis of the next symbol. Example:

    PIString s(" {figures{inside}}");
    +
    piCout << s.takeRange('{', '}'); // "figures{inside}"
    +
    piCout << s; // ""
    +
    s = "\"text\\\"shielded\" next";
    +
    piCout << s.takeRange('"', '"'); // "text\"shielded"
    +
    piCout << s; // " next"
    +
    See also
    takeSymbol(), takeWord(), takeLine(), takeNumber()
    + +
    +
    + +
    +
    + + + + + + + +
    int PIString::lengthAscii () const
    +
    + +

    Return real bytes count of this string.

    +

    It`s equivalent length of char sequence returned by function data()
    +Example:

    piCout << PIString("0123456789").lengthAscii(); // 10
    +
    piCout << PIString("â„–1").lengthAscii(); // 3
    +
    See also
    data()
    + +
    +
    + +
    +
    + + + + + + + +
    const char * PIString::data () const
    +
    + +

    Return char * representation of this string.

    +

    This function fill buffer by sequence of chars. Minimum length of this buffer is count of symbols. Returned char * is valid until next execution of this function.
    +Example:

    piCout << PIString("0123456789").data(); // 0123456789
    +
    piCout << PIString("â„–1").data(); // â„–1
    +
    See also
    lengthAscii()
    + +
    +
    + +
    +
    + + + + + + + + +
    PIStringList PIString::split (const PIStringdelim) const
    +
    + +

    Split string with delimiter "delim" to PIStringList and return it.

    +

    Example:

    PIString s("1 2 3");
    +
    piCout << s.split(" "); // {"1", "2", "3"}
    +
    +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int PIString::find (const char str,
    const int start = 0 
    ) const
    +
    + +

    Search substring "str" from symbol at index "start" and return first occur position.

    +

    Example:

    PIString s("012345012345");
    +
    piCout << s.find("-"); // -1
    +
    piCout << s.find("3"); // 3
    +
    piCout << s.find("3", 4); // 9
    +
    piCout << s.find("3", 10); // -1
    +
    +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int PIString::find (const PIString str,
    const int start = 0 
    ) const
    +
    + +

    Search substring "str" from symbol at index "start" and return first occur position.

    +

    Example:

    PIString s("012345012345");
    +
    piCout << s.find("-"); // -1
    +
    piCout << s.find("3"); // 3
    +
    piCout << s.find("3", 4); // 9
    +
    piCout << s.find("3", 10); // -1
    +
    +
    +
    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    int PIString::find (const char * str,
    const int start = 0 
    ) const
    +
    +inline
    +
    + +

    Search substring "str" from symbol at index "start" and return first occur position.

    +

    Example:

    PIString s("012345012345");
    +
    piCout << s.find("-"); // -1
    +
    piCout << s.find("3"); // 3
    +
    piCout << s.find("3", 4); // 9
    +
    piCout << s.find("3", 10); // -1
    +
    +
    +
    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    int PIString::find (const string str,
    const int start = 0 
    ) const
    +
    +inline
    +
    + +

    Search substring "str" from symbol at index "start" and return first occur position.

    +

    Example:

    PIString s("012345012345");
    +
    piCout << s.find("-"); // -1
    +
    piCout << s.find("3"); // 3
    +
    piCout << s.find("3", 4); // 9
    +
    piCout << s.find("3", 10); // -1
    +
    +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int PIString::findLast (const char str,
    const int start = 0 
    ) const
    +
    + +

    Search substring "str" from symbol at index "start" and return last occur position.

    +

    Example:

    PIString s("012345012345");
    +
    piCout << s.find("-"); // -1
    +
    piCout << s.find("3"); // 9
    +
    piCout << s.find("3", 4); // 9
    +
    piCout << s.find("3", 10); // -1
    +
    +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int PIString::findLast (const PIString str,
    const int start = 0 
    ) const
    +
    + +

    Search substring "str" from symbol at index "start" and return last occur position.

    +

    Example:

    PIString s("012345012345");
    +
    piCout << s.find("-"); // -1
    +
    piCout << s.find("3"); // 9
    +
    piCout << s.find("3", 4); // 9
    +
    piCout << s.find("3", 10); // -1
    +
    +
    +
    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    int PIString::findLast (const char * str,
    const int start = 0 
    ) const
    +
    +inline
    +
    + +

    Search substring "str" from symbol at index "start" and return last occur position.

    +

    Example:

    PIString s("012345012345");
    +
    piCout << s.find("-"); // -1
    +
    piCout << s.find("3"); // 9
    +
    piCout << s.find("3", 4); // 9
    +
    piCout << s.find("3", 10); // -1
    +
    +
    +
    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    int PIString::findLast (const string str,
    const int start = 0 
    ) const
    +
    +inline
    +
    + +

    Search substring "str" from symbol at index "start" and return last occur position.

    +

    Example:

    PIString s("012345012345");
    +
    piCout << s.find("-"); // -1
    +
    piCout << s.find("3"); // 9
    +
    piCout << s.find("3", 4); // 9
    +
    piCout << s.find("3", 10); // -1
    +
    +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int PIString::findWord (const PIStringword,
    const int start = 0 
    ) const
    +
    + +

    Search word "word" from symbol at index "start" and return first occur position.

    +

    Example:

    PIString s("this is <PIP>");
    +
    piCout << s.find("this"); // 0
    +
    piCout << s.find("is"); // 5
    +
    piCout << s.find("PIP", 4); // -1
    +
    piCout << s.find("<PIP>", 10); // 8
    +
    +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int PIString::findCWord (const PIStringword,
    const int start = 0 
    ) const
    +
    + +

    Search C-style word "word" from symbol at index "start" and return first occur position.

    +

    Example:

    PIString s("this::is <PIP>");
    +
    piCout << s.find("this"); // 0
    +
    piCout << s.find("is"); // 6
    +
    piCout << s.find("PIP", 4); // 10
    +
    piCout << s.find("<PIP>", 10); // 9
    +
    +
    +
    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    short PIString::toShort (int base = -1,
    bool * ok = 0 
    ) const
    +
    +inline
    +
    + +

    Return short numeric value of string in base "base".

    +

    Example:

    piCout << PIString("123").toInt(); // 123
    +
    piCout << PIString("123").toInt(16); // 291
    +
    piCout << PIString("0x123").toInt(); // 291
    +
    piCout << PIString("1001").toInt(2); // 9
    +
    +
    +
    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    ushort PIString::toUShort (int base = -1,
    bool * ok = 0 
    ) const
    +
    +inline
    +
    + +

    Return ushort numeric value of string in base "base".

    +

    Example:

    piCout << PIString("123").toInt(); // 123
    +
    piCout << PIString("123").toInt(16); // 291
    +
    piCout << PIString("0x123").toInt(); // 291
    +
    piCout << PIString("1001").toInt(2); // 9
    +
    +
    +
    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    int PIString::toInt (int base = -1,
    bool * ok = 0 
    ) const
    +
    +inline
    +
    + +

    Return int numeric value of string in base "base".

    +

    Example:

    piCout << PIString("123").toInt(); // 123
    +
    piCout << PIString("123").toInt(16); // 291
    +
    piCout << PIString("0x123").toInt(); // 291
    +
    piCout << PIString("1001").toInt(2); // 9
    +
    +
    +
    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    uint PIString::toUInt (int base = -1,
    bool * ok = 0 
    ) const
    +
    +inline
    +
    + +

    Return uint numeric value of string in base "base".

    +

    Example:

    piCout << PIString("123").toInt(); // 123
    +
    piCout << PIString("123").toInt(16); // 291
    +
    piCout << PIString("0x123").toInt(); // 291
    +
    piCout << PIString("1001").toInt(2); // 9
    +
    +
    +
    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    long PIString::toLong (int base = -1,
    bool * ok = 0 
    ) const
    +
    +inline
    +
    + +

    Return long numeric value of string in base "base".

    +

    Example:

    piCout << PIString("123").toInt(); // 123
    +
    piCout << PIString("123").toInt(16); // 291
    +
    piCout << PIString("0x123").toInt(); // 291
    +
    piCout << PIString("1001").toInt(2); // 9
    +
    +
    +
    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    ulong PIString::toULong (int base = -1,
    bool * ok = 0 
    ) const
    +
    +inline
    +
    + +

    Return ulong numeric value of string in base "base".

    +

    Example:

    piCout << PIString("123").toInt(); // 123
    +
    piCout << PIString("123").toInt(16); // 291
    +
    piCout << PIString("0x123").toInt(); // 291
    +
    piCout << PIString("1001").toInt(2); // 9
    +
    +
    +
    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    llong PIString::toLLong (int base = -1,
    bool * ok = 0 
    ) const
    +
    +inline
    +
    + +

    Return llong numeric value of string in base "base".

    +

    Example:

    piCout << PIString("123").toInt(); // 123
    +
    piCout << PIString("123").toInt(16); // 291
    +
    piCout << PIString("0x123").toInt(); // 291
    +
    piCout << PIString("1001").toInt(2); // 9
    +
    +
    +
    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    ullong PIString::toULLong (int base = -1,
    bool * ok = 0 
    ) const
    +
    +inline
    +
    + +

    Return ullong numeric value of string in base "base".

    +

    Example:

    piCout << PIString("123").toInt(); // 123
    +
    piCout << PIString("123").toInt(16); // 291
    +
    piCout << PIString("0x123").toInt(); // 291
    +
    piCout << PIString("1001").toInt(2); // 9
    +
    +
    +
    + +
    +
    + + + + + +
    + + + + + + + +
    float PIString::toFloat () const
    +
    +inline
    +
    + +

    Return float numeric value of string.

    +

    Example:

    piCout << PIString("123").toFloat(); // 123
    +
    piCout << PIString("1.2E+2").toFloat(); // 120
    +
    piCout << PIString("0.01").toFloat(); // 0.01
    +
    +
    +
    + +
    +
    + + + + + +
    + + + + + + + +
    double PIString::toDouble () const
    +
    +inline
    +
    + +

    Return double numeric value of string.

    +

    Example:

    piCout << PIString("123").toFloat(); // 123
    +
    piCout << PIString("1.2E+2").toFloat(); // 120
    +
    piCout << PIString("0.01").toFloat(); // 0.01
    +
    +
    +
    + +
    +
    + + + + + +
    + + + + + + + +
    ldouble PIString::toLDouble () const
    +
    +inline
    +
    + +

    Return ldouble numeric value of string.

    +

    Example:

    piCout << PIString("123").toFloat(); // 123
    +
    piCout << PIString("1.2E+2").toFloat(); // 120
    +
    piCout << PIString("0.01").toFloat(); // 0.01
    +
    +
    +
    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    PIString& PIString::setNumber (const short value,
    int base = 10,
    bool * ok = 0 
    )
    +
    +inline
    +
    + +

    Set string content to numeric representation of "value" in base "base".

    +

    Example:

    +
    s.setNumber(123);
    +
    piCout << s; // 123
    +
    s.setNumber(123, 16);
    +
    piCout << s; // 7B
    +
    +
    +
    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    PIString& PIString::setNumber (const ushort value,
    int base = 10,
    bool * ok = 0 
    )
    +
    +inline
    +
    + +

    Set string content to numeric representation of "value" in base "base".

    +

    Example:

    +
    s.setNumber(123);
    +
    piCout << s; // 123
    +
    s.setNumber(123, 16);
    +
    piCout << s; // 7B
    +
    +
    +
    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    PIString& PIString::setNumber (const int value,
    int base = 10,
    bool * ok = 0 
    )
    +
    +inline
    +
    + +

    Set string content to numeric representation of "value" in base "base".

    +

    Example:

    +
    s.setNumber(123);
    +
    piCout << s; // 123
    +
    s.setNumber(123, 16);
    +
    piCout << s; // 7B
    +
    +
    +
    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    PIString& PIString::setNumber (const uint value,
    int base = 10,
    bool * ok = 0 
    )
    +
    +inline
    +
    + +

    Set string content to numeric representation of "value" in base "base".

    +

    Example:

    +
    s.setNumber(123);
    +
    piCout << s; // 123
    +
    s.setNumber(123, 16);
    +
    piCout << s; // 7B
    +
    +
    +
    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    PIString& PIString::setNumber (const long value,
    int base = 10,
    bool * ok = 0 
    )
    +
    +inline
    +
    + +

    Set string content to numeric representation of "value" in base "base".

    +

    Example:

    +
    s.setNumber(123);
    +
    piCout << s; // 123
    +
    s.setNumber(123, 16);
    +
    piCout << s; // 7B
    +
    +
    +
    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    PIString& PIString::setNumber (const ulong value,
    int base = 10,
    bool * ok = 0 
    )
    +
    +inline
    +
    + +

    Set string content to numeric representation of "value" in base "base".

    +

    Example:

    +
    s.setNumber(123);
    +
    piCout << s; // 123
    +
    s.setNumber(123, 16);
    +
    piCout << s; // 7B
    +
    +
    +
    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    PIString& PIString::setNumber (const llong & value,
    int base = 10,
    bool * ok = 0 
    )
    +
    +inline
    +
    + +

    Set string content to numeric representation of "value" in base "base".

    +

    Example:

    +
    s.setNumber(123);
    +
    piCout << s; // 123
    +
    s.setNumber(123, 16);
    +
    piCout << s; // 7B
    +
    +
    +
    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    PIString& PIString::setNumber (const ullong & value,
    int base = 10,
    bool * ok = 0 
    )
    +
    +inline
    +
    + +

    Set string content to numeric representation of "value" in base "base".

    +

    Example:

    +
    s.setNumber(123);
    +
    piCout << s; // 123
    +
    s.setNumber(123, 16);
    +
    piCout << s; // 7B
    +
    +
    +
    + +
    +
    + + + + + +
    + + + + + + + + +
    PIString& PIString::setNumber (const float value)
    +
    +inline
    +
    + +

    Set string content to numeric representation of "value".

    +

    Example:

    +
    s.setNumber(12.3);
    +
    piCout << s; // 12.3
    +
    +
    +
    + +
    +
    + + + + + +
    + + + + + + + + +
    PIString& PIString::setNumber (const double & value)
    +
    +inline
    +
    + +

    Set string content to numeric representation of "value".

    +

    Example:

    +
    s.setNumber(12.3);
    +
    piCout << s; // 12.3
    +
    +
    +
    + +
    +
    + + + + + +
    + + + + + + + + +
    PIString& PIString::setNumber (const ldouble & value)
    +
    +inline
    +
    + +

    Set string content to numeric representation of "value".

    +

    Example:

    +
    s.setNumber(12.3);
    +
    piCout << s; // 12.3
    +
    +
    +
    + +
    +
    + + + + + + + + +
    PIString & PIString::setReadableSize (llong bytes)
    +
    + +

    Set string content to human readable size in B/kB/MB/GB/TB.

    +

    Example:

    + +
    piCout << s; // 512 B
    + +
    piCout << s; // 5.0 kB
    +
    s.setReadableSize(512000);
    +
    piCout << s; // 500.0 kB
    +
    s.setReadableSize(5120000);
    +
    piCout << s; // 4.8 MB
    +
    s.setReadableSize(512000000);
    +
    piCout << s; // 488.2 MB
    +
    s.setReadableSize(51200000000);
    +
    piCout << s; // 47.6 GB
    +
    +
    +
    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static PIString PIString::fromNumber (const short value,
    int base = 10,
    bool * ok = 0 
    )
    +
    +inlinestatic
    +
    + +

    Return string contains numeric representation of "value" in base "base".

    +

    Example:

    +
    piCout << PIString::fromNumber(123, 16); // 7B
    +
    +
    +
    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static PIString PIString::fromNumber (const ushort value,
    int base = 10,
    bool * ok = 0 
    )
    +
    +inlinestatic
    +
    + +

    Return string contains numeric representation of "value" in base "base".

    +

    Example:

    +
    piCout << PIString::fromNumber(123, 16); // 7B
    +
    +
    +
    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static PIString PIString::fromNumber (const int value,
    int base = 10,
    bool * ok = 0 
    )
    +
    +inlinestatic
    +
    + +

    Return string contains numeric representation of "value" in base "base".

    +

    Example:

    +
    piCout << PIString::fromNumber(123, 16); // 7B
    +
    +
    +
    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static PIString PIString::fromNumber (const uint value,
    int base = 10,
    bool * ok = 0 
    )
    +
    +inlinestatic
    +
    + +

    Return string contains numeric representation of "value" in base "base".

    +

    Example:

    +
    piCout << PIString::fromNumber(123, 16); // 7B
    +
    +
    +
    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static PIString PIString::fromNumber (const long value,
    int base = 10,
    bool * ok = 0 
    )
    +
    +inlinestatic
    +
    + +

    Return string contains numeric representation of "value" in base "base".

    +

    Example:

    +
    piCout << PIString::fromNumber(123, 16); // 7B
    +
    +
    +
    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static PIString PIString::fromNumber (const ulong value,
    int base = 10,
    bool * ok = 0 
    )
    +
    +inlinestatic
    +
    + +

    Return string contains numeric representation of "value" in base "base".

    +

    Example:

    +
    piCout << PIString::fromNumber(123, 16); // 7B
    +
    +
    +
    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static PIString PIString::fromNumber (const llong & value,
    int base = 10,
    bool * ok = 0 
    )
    +
    +inlinestatic
    +
    + +

    Return string contains numeric representation of "value" in base "base".

    +

    Example:

    +
    piCout << PIString::fromNumber(123, 16); // 7B
    +
    +
    +
    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static PIString PIString::fromNumber (const ullong & value,
    int base = 10,
    bool * ok = 0 
    )
    +
    +inlinestatic
    +
    + +

    Return string contains numeric representation of "value" in base "base".

    +

    Example:

    +
    piCout << PIString::fromNumber(123, 16); // 7B
    +
    +
    +
    + +
    +
    + + + + + +
    + + + + + + + + +
    static PIString PIString::fromNumber (const float value)
    +
    +inlinestatic
    +
    + +

    Return string contains numeric representation of "value".

    +

    Example:

    piCout << PIString::fromNumber(12.3); // 12.3
    +
    +
    +
    + +
    +
    + + + + + +
    + + + + + + + + +
    static PIString PIString::fromNumber (const double & value)
    +
    +inlinestatic
    +
    + +

    Return string contains numeric representation of "value".

    +

    Example:

    piCout << PIString::fromNumber(12.3); // 12.3
    +
    +
    +
    + +
    +
    + + + + + +
    + + + + + + + + +
    static PIString PIString::fromNumber (const ldouble & value)
    +
    +inlinestatic
    +
    + +

    Return string contains numeric representation of "value".

    +

    Example:

    piCout << PIString::fromNumber(12.3); // 12.3
    +
    +
    +
    + +
    +
    + + + + + +
    + + + + + + + + +
    static PIString PIString::readableSize (llong bytes)
    +
    +inlinestatic
    +
    + +

    Return string contains human readable size in B/kB/MB/GB/TB.

    +

    Example:

    piCout << PIString::readableSize(512); // 512 B
    +
    piCout << PIString::readableSize(5120); // 5.0 kB
    +
    piCout << PIString::readableSize(512000); // 500.0 kB
    +
    piCout << PIString::readableSize(5120000); // 4.8 MB
    +
    piCout << PIString::readableSize(512000000); // 488.2 MB
    +
    piCout << PIString::readableSize(51200000000); // 47.6 GB
    +
    +
    +
    +
    +
    + + + + diff --git a/pip/doc/html/class_p_i_string.js b/pip/doc/html/class_p_i_string.js new file mode 100644 index 0000000..fc49a26 --- /dev/null +++ b/pip/doc/html/class_p_i_string.js @@ -0,0 +1,138 @@ +var class_p_i_string = +[ + [ "PIString", "class_p_i_string.html#a5671ba063015ac95a0fc582776424629", null ], + [ "PIString", "class_p_i_string.html#a0a7dbce851e0654c1f46239c60b215d7", null ], + [ "PIString", "class_p_i_string.html#a83698956091624f377f9bb7f9f3a6afc", null ], + [ "PIString", "class_p_i_string.html#a1c7edbae1d5dd3d123c3f19679c8a105", null ], + [ "PIString", "class_p_i_string.html#adba42068e854520b6fa4e3665055ab90", null ], + [ "PIString", "class_p_i_string.html#a09e89cd86ab4b41a6d4f68a4c04ade71", null ], + [ "PIString", "class_p_i_string.html#add45a4c9d96be4a7ff91e69b37f7e7f7", null ], + [ "PIString", "class_p_i_string.html#a6c15cfb2ef6a0898ac99a602a4910c92", null ], + [ "PIString", "class_p_i_string.html#a571606d1afac0afb1850f314e5a7f582", null ], + [ "PIString", "class_p_i_string.html#ac977eece58d4b01775cb5ec1aa9c0172", null ], + [ "operator const char *", "class_p_i_string.html#a3eec9656b507d8d71ab2f58c551a03ff", null ], + [ "operator const string", "class_p_i_string.html#ab90b8d26f08ff17f5f2302bbd9f3b66a", null ], + [ "operator[]", "class_p_i_string.html#aa367374496df45efba10fd44e52a6777", null ], + [ "operator[]", "class_p_i_string.html#a192df04225c734474a74ed92a3be92e4", null ], + [ "operator==", "class_p_i_string.html#a4bccf4bb40ab454e0acbb72c370f74df", null ], + [ "operator==", "class_p_i_string.html#a15a2d2e8205de172d5a1ba9c4e1300b5", null ], + [ "operator==", "class_p_i_string.html#ae56247a537ddd4742a5f8830446396fb", null ], + [ "operator==", "class_p_i_string.html#abcb1247b51cb9fb935fe4b7583004d2e", null ], + [ "operator!=", "class_p_i_string.html#ae1fde0664048d052d23e40c111ebe2d3", null ], + [ "operator!=", "class_p_i_string.html#aec766e4f39ef4c581026e932a2e0c60e", null ], + [ "operator!=", "class_p_i_string.html#a5410e68d9c7d22527767ea28891c2c69", null ], + [ "operator!=", "class_p_i_string.html#a05f9cb6d8d4540a62daa0bc682c914b1", null ], + [ "operator<", "class_p_i_string.html#a4b29c79b0cfd8eeea23977cd72f24768", null ], + [ "operator<", "class_p_i_string.html#a4b40e4567d6c5b9afabfda25efeb975a", null ], + [ "operator<", "class_p_i_string.html#a793f8bb4b64903f9016bfac27b4e21aa", null ], + [ "operator<", "class_p_i_string.html#a2ed901b6668a596013959d9433461b3a", null ], + [ "operator>", "class_p_i_string.html#a559e23e281ff040dc447a47aead1556f", null ], + [ "operator>", "class_p_i_string.html#a17725b847ca400d0817f4a89887658d6", null ], + [ "operator>", "class_p_i_string.html#a19f4fa9c8c691030543627ba3b04c7fb", null ], + [ "operator>", "class_p_i_string.html#a8f752b9a951be56a6e4bbf15d9683605", null ], + [ "operator<=", "class_p_i_string.html#a0bb50e3024c857df57446970f06215f2", null ], + [ "operator<=", "class_p_i_string.html#a1caa9a22c08bf1403d7f02ee25391a6a", null ], + [ "operator<=", "class_p_i_string.html#ae3636333daa1c30be2e59046234549db", null ], + [ "operator<=", "class_p_i_string.html#a7b8acb21a78caa79efaf202e7e701587", null ], + [ "operator>=", "class_p_i_string.html#a1da2d74fa84f2da3d1632e20d834f0fa", null ], + [ "operator>=", "class_p_i_string.html#ae4c9edd7b999ec3b755f584cbd730d93", null ], + [ "operator>=", "class_p_i_string.html#a4b9695c703cb3055d9b395a84bbc091c", null ], + [ "operator>=", "class_p_i_string.html#a0368a200e908bee57dabdfb5f8cf8563", null ], + [ "operator<<", "class_p_i_string.html#aa9503e3cf1a769ff9969811e794848c9", null ], + [ "operator<<", "class_p_i_string.html#ae1a767e64e5cd7e8b0bf8f30261e7b51", null ], + [ "operator<<", "class_p_i_string.html#ae913da2112cec3234ab25d5998058061", null ], + [ "operator<<", "class_p_i_string.html#a637ba3d798aef6d9b0ec1c94bd009eba", null ], + [ "operator<<", "class_p_i_string.html#a37ac4141ad06bace00f45f4199577e43", null ], + [ "operator<<", "class_p_i_string.html#a32f84a7c388aa230b00389625b957f3e", null ], + [ "operator<<", "class_p_i_string.html#a6fa1fe095dcdf2401fd6aeeeff95bcab", null ], + [ "operator<<", "class_p_i_string.html#a2716ff6ff64666a4234b95858705c9a2", null ], + [ "operator<<", "class_p_i_string.html#accecec313ba77318942690e11f745ed7", null ], + [ "operator<<", "class_p_i_string.html#af585e41702ae09d013b19477c7e1f4ef", null ], + [ "prepend", "class_p_i_string.html#aa21143de8258bbc8698e46a9216c5a26", null ], + [ "append", "class_p_i_string.html#afbccf232307f332e25c7ce577ce58146", null ], + [ "mid", "class_p_i_string.html#afdeb3714be4ad6a1bf8f2478f657f510", null ], + [ "left", "class_p_i_string.html#aa6614f666f502b2d759bb37c046f6181", null ], + [ "right", "class_p_i_string.html#a84b4d361d9c7bf1d9c467e4a90d0d06b", null ], + [ "cutMid", "class_p_i_string.html#a1329bf4f870ef9417f30baf23a0589f9", null ], + [ "cutLeft", "class_p_i_string.html#a5e6ebd047f481f11bfc7aa5a599f84d9", null ], + [ "cutRight", "class_p_i_string.html#a3f1dea63c0baead80b3700129c2837e3", null ], + [ "trim", "class_p_i_string.html#a83a888181b131ccff5854c080ef706ba", null ], + [ "trimmed", "class_p_i_string.html#ab1050c0603206d40ec0a1a315cc87ca6", null ], + [ "replace", "class_p_i_string.html#a5409e1aecee919acb3995fe2d98396d2", null ], + [ "replaced", "class_p_i_string.html#abdde92d6e5efa3a0f6a53e7a6cb27b64", null ], + [ "replace", "class_p_i_string.html#a1fb70092a8723959b7f0718676dea6ed", null ], + [ "replaced", "class_p_i_string.html#a4e91d076a5c2488986f5e9860e65d8c7", null ], + [ "replaceAll", "class_p_i_string.html#a02fd96dd8a55a990602ecdbf21a120e0", null ], + [ "repeat", "class_p_i_string.html#a95bc5ca2e401747051eb019101036838", null ], + [ "repeated", "class_p_i_string.html#a8cdd3ad7481f765352ff371705e29ff6", null ], + [ "insert", "class_p_i_string.html#a73eb6e5b422f635f67e7db616639dd26", null ], + [ "insert", "class_p_i_string.html#aa48ee0a414ad57dd9c8db645808f1dd1", null ], + [ "insert", "class_p_i_string.html#aa71f46f0fecf56aef8501c88d41ecd35", null ], + [ "insert", "class_p_i_string.html#a8c20b60718cd3ba095012f29ef2af0c7", null ], + [ "expandRightTo", "class_p_i_string.html#ad17b4d47401a31557a06490efd9e40e5", null ], + [ "expandLeftTo", "class_p_i_string.html#aeecafb43528159d4d65dc9a5e2ca26e4", null ], + [ "reverse", "class_p_i_string.html#a57ef668d89de132b1fd27342365c7ac1", null ], + [ "reversed", "class_p_i_string.html#ab4e184e66ced5c40307797708a7fa747", null ], + [ "takeMid", "class_p_i_string.html#a923862dee9a73d4fe229f9c7106dd2c3", null ], + [ "takeLeft", "class_p_i_string.html#abe1d54c60781701c390712193e775129", null ], + [ "takeRight", "class_p_i_string.html#ab06270cc3639a716d77747f6e0e65a73", null ], + [ "takeSymbol", "class_p_i_string.html#a2717788f206607e15afa2eaa2466f2fb", null ], + [ "takeWord", "class_p_i_string.html#a66dfa56b97db69f1b3046bfed79d8dd9", null ], + [ "takeCWord", "class_p_i_string.html#a15391624f236a1c0bf2b1f6c90a42027", null ], + [ "takeLine", "class_p_i_string.html#a32449c92418db399e96faeb0e67ce6b8", null ], + [ "takeNumber", "class_p_i_string.html#a39c2f4b34d43c3f2dd2c85eb37959cba", null ], + [ "takeRange", "class_p_i_string.html#ada971d7b12743e827811e124c7bb2809", null ], + [ "lengthAscii", "class_p_i_string.html#a512a49d09681e5ecc87fb5c2b51c7bba", null ], + [ "data", "class_p_i_string.html#ac1f4d3aad27aa25a5e92f092d2890188", null ], + [ "stdString", "class_p_i_string.html#a16e633f140ce9fd27fdddd2369261721", null ], + [ "toByteArray", "class_p_i_string.html#a6438ae63b451975a06699c2c6c02221a", null ], + [ "split", "class_p_i_string.html#a2befe83e46b8e3764236445132ec023a", null ], + [ "toUpperCase", "class_p_i_string.html#a54e5e2c6fcf1869228b3fb48a9a8bae1", null ], + [ "toLowerCase", "class_p_i_string.html#a658e07bdbf43996c39f545218122989b", null ], + [ "find", "class_p_i_string.html#a99fbf95d65c51cce60c27d18c4cd5531", null ], + [ "find", "class_p_i_string.html#a1a237a5d7836ba1fcaa37087039e7d04", null ], + [ "find", "class_p_i_string.html#a4590628a19e551470960e7b350f0ff5f", null ], + [ "find", "class_p_i_string.html#a60a4b7cd4bce3f6c8208a713164f1479", null ], + [ "findLast", "class_p_i_string.html#ae19031ecb5e129e2cbc830694b2fe20f", null ], + [ "findLast", "class_p_i_string.html#a43c55edb22d030aee0c04dae4c03fa2a", null ], + [ "findLast", "class_p_i_string.html#a5b846d7fb50ccd548f640681aca4fbf4", null ], + [ "findLast", "class_p_i_string.html#a103ad13acbd263ced666ec07b4e6228d", null ], + [ "findWord", "class_p_i_string.html#a434cb662bfa4af1ccdfd0ed5188d6020", null ], + [ "findCWord", "class_p_i_string.html#aebd028e4a34e907fb891944b1de4f555", null ], + [ "startsWith", "class_p_i_string.html#a273612208fcf37a4075e517eba410920", null ], + [ "endsWith", "class_p_i_string.html#a9e58076006c085e76b7a139f2b830a7a", null ], + [ "length", "class_p_i_string.html#a61133c9da8ce47fced3d5f5e26cc0f6d", null ], + [ "isEmpty", "class_p_i_string.html#abc0709f3722cd63230b81f613c0a999e", null ], + [ "toBool", "class_p_i_string.html#ab347fe3a167a3a101e5028cc76826353", null ], + [ "toChar", "class_p_i_string.html#a33520b70a2236d83f50d5b028497db65", null ], + [ "toShort", "class_p_i_string.html#a03aa66b2e10d725f8c5310bdec3a9b76", null ], + [ "toUShort", "class_p_i_string.html#a6ab34efa2cf190bfa8309d140308e8eb", null ], + [ "toInt", "class_p_i_string.html#aebe1038b3abcbf976dbffc3f3b0de826", null ], + [ "toUInt", "class_p_i_string.html#aa243f8732d1ce3187329642025c49623", null ], + [ "toLong", "class_p_i_string.html#a32e0cd5008be019860da2be3c136f9ce", null ], + [ "toULong", "class_p_i_string.html#a75630ad632c3887e0ec7daf850a4281a", null ], + [ "toLLong", "class_p_i_string.html#a18023a92bd2ba5a90dc014cbfd77bc9c", null ], + [ "toULLong", "class_p_i_string.html#a15475a9e2b65a70208534431ee28f75a", null ], + [ "toFloat", "class_p_i_string.html#a4525841adcb8929e486e61d499430559", null ], + [ "toDouble", "class_p_i_string.html#a8a9720daaf84455e7a839a5b8bcf6fa7", null ], + [ "toLDouble", "class_p_i_string.html#af2739348013dfcd75ce88acafafcce73", null ], + [ "setNumber", "class_p_i_string.html#a03446a900bdce8a41f5be7eee2c732d5", null ], + [ "setNumber", "class_p_i_string.html#a70bda23c245790c6a3b50f31a3200aa9", null ], + [ "setNumber", "class_p_i_string.html#a102c2fcdc4bb92141c01f2108e142991", null ], + [ "setNumber", "class_p_i_string.html#aaac03b6d596d958a8e256ccb0eb40f22", null ], + [ "setNumber", "class_p_i_string.html#ad880c23247e4d79d44d215c883fcd766", null ], + [ "setNumber", "class_p_i_string.html#ada1c713c5622284efcc3ac1d89977161", null ], + [ "setNumber", "class_p_i_string.html#a2f54ca3f0ef9dde8df3fb488cbe33f7b", null ], + [ "setNumber", "class_p_i_string.html#aff868564bdb9e93d028bbe4b034ef74e", null ], + [ "setNumber", "class_p_i_string.html#a8ee00154fbc549bd4d0035270001580a", null ], + [ "setNumber", "class_p_i_string.html#a6fb55d9c34c56a3528303eb9f7419671", null ], + [ "setNumber", "class_p_i_string.html#a26f131487f10ee8a13769ae833f81fcb", null ], + [ "setReadableSize", "class_p_i_string.html#a08dad783a704578ab82b816f2cd02829", null ], + [ "operator<<", "class_p_i_string.html#af86ed54c2bd0e7590db4ca3b6845f50f", null ], + [ "operator>>", "class_p_i_string.html#a92a7c6060c9a5cea05fc97d6faea53a2", null ], + [ "operator+", "class_p_i_string.html#ab542a906081915a23c5e71e4d272be61", null ], + [ "operator+", "class_p_i_string.html#a3c9fd9112bf9bf8add42aa4a1232f02c", null ], + [ "operator+", "class_p_i_string.html#a7feead55bd8c6f9c91da7575870bbb4a", null ], + [ "operator+", "class_p_i_string.html#ac6c5f17dfacd8deb8db814c69390667e", null ], + [ "operator+", "class_p_i_string.html#acb64f0a2a7b71219db76b5d5f498515c", null ] +]; \ No newline at end of file diff --git a/pip/doc/html/class_p_i_string_list-members.html b/pip/doc/html/class_p_i_string_list-members.html new file mode 100644 index 0000000..bfe0883 --- /dev/null +++ b/pip/doc/html/class_p_i_string_list-members.html @@ -0,0 +1,140 @@ + + + + + + +PIP: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    PIStringList Member List
    +
    +
    + +

    This is the complete list of members for PIStringList, including all inherited members.

    + + + + + + + + + + + + + + +
    contentSize()PIStringListinline
    join(const PIString &delim) const PIStringListinline
    operator!=(const PIStringList &o) const PIStringListinline
    operator<<(std::ostream &s, const PIStringList &v)PIStringListrelated
    operator==(const PIStringList &o) const PIStringListinline
    PIStringList()PIStringListinline
    PIStringList(const PIString &str)PIStringListinline
    PIStringList(const PIString &s0, const PIString &s1)PIStringListinline
    PIStringList(const PIString &s0, const PIString &s1, const PIString &s2)PIStringListinline
    PIStringList(const PIString &s0, const PIString &s1, const PIString &s2, const PIString &s3)PIStringListinline
    removeDuplicates()PIStringList
    removeStrings(const PIString &value)PIStringListinline
    trim()PIStringListinline
    +
    + + + + diff --git a/pip/doc/html/class_p_i_string_list.html b/pip/doc/html/class_p_i_string_list.html new file mode 100644 index 0000000..ee5d91f --- /dev/null +++ b/pip/doc/html/class_p_i_string_list.html @@ -0,0 +1,300 @@ + + + + + + +PIP: PIStringList Class Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    + +
    +
    PIStringList Class Reference
    +
    +
    + +

    Strings array class. + More...

    + +

    Inherits PIDeque< T >.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    PIStringList ()
     Contructs empty strings list.
     
    PIStringList (const PIString &str)
     Contructs strings list with one string "str".
     
    PIStringList (const PIString &s0, const PIString &s1)
     Contructs empty strings list with strings "s0" and "s1".
     
    PIStringList (const PIString &s0, const PIString &s1, const PIString &s2)
     Contructs empty strings list with strings "s0", "s1" and "s2".
     
    PIStringList (const PIString &s0, const PIString &s1, const PIString &s2, const PIString &s3)
     Contructs empty strings list with strings "s0", "s1", "s2" and "s3".
     
    PIString join (const PIString &delim) const
     Join all strings in one with delimiter "delim" and return it. More...
     
    PIStringListremoveStrings (const PIString &value)
     Remove all strings equal "value" and return this. More...
     
    PIStringListremoveDuplicates ()
     Remove duplicated strings and return this. More...
     
    PIStringListtrim ()
     Trim all strings. More...
     
    +uint contentSize ()
     Return sum of lengths of all strings.
     
    +bool operator== (const PIStringList &o) const
     Compare operator.
     
    +bool operator!= (const PIStringList &o) const
     Compare operator.
     
    + + + + + +

    +Related Functions

    (Note that these are not member functions.)

    +
    +std::ostream & operator<< (std::ostream &s, const PIStringList &v)
     Output operator to std::ostream (cout)
     
    +

    Detailed Description

    +

    Strings array class.

    +

    This class is based on PIDeque<PIString> and expand it functionality.

    +

    Member Function Documentation

    + +
    +
    + + + + + +
    + + + + + + + + +
    PIString PIStringList::join (const PIStringdelim) const
    +
    +inline
    +
    + +

    Join all strings in one with delimiter "delim" and return it.

    +

    Example:

    PIStringList sl("1", "2");
    +
    sl << "3";
    +
    piCout << sl.join(" < "); // 1 < 2 < 3
    +
    +
    +
    + +
    +
    + + + + + +
    + + + + + + + + +
    PIStringList& PIStringList::removeStrings (const PIStringvalue)
    +
    +inline
    +
    + +

    Remove all strings equal "value" and return this.

    +

    Example:

    PIStringList sl("1", "2");
    +
    sl << "1" << "2" << "3";
    +
    piCout << sl; // {"1", "2", "1", "2", "3"}
    +
    piCout << sl.removeStrings("1"); // {"2", "2", "3"}
    +
    +
    +
    + +
    +
    + + + + + + + +
    PIStringList & PIStringList::removeDuplicates ()
    +
    + +

    Remove duplicated strings and return this.

    +

    Example:

    PIStringList sl("1", "2");
    +
    sl << "1" << "2" << "3";
    +
    piCout << sl; // {"1", "2", "1", "2", "3"}
    +
    piCout << sl.removeDuplicates(); // {"1", "2", "3"}
    +
    +
    +
    + +
    +
    + + + + + +
    + + + + + + + +
    PIStringList& PIStringList::trim ()
    +
    +inline
    +
    + +

    Trim all strings.

    +

    Example:

    +
    +
    +
    +
    + + + + diff --git a/pip/doc/html/class_p_i_string_list.js b/pip/doc/html/class_p_i_string_list.js new file mode 100644 index 0000000..9b1fbd0 --- /dev/null +++ b/pip/doc/html/class_p_i_string_list.js @@ -0,0 +1,16 @@ +var class_p_i_string_list = +[ + [ "PIStringList", "class_p_i_string_list.html#a2e303b0d998cc4a3d1801a4ae58a095d", null ], + [ "PIStringList", "class_p_i_string_list.html#a637847edb01e44dbd98fd636e870d8da", null ], + [ "PIStringList", "class_p_i_string_list.html#a619a3fadd772a3ceb4f7433aaaa707d5", null ], + [ "PIStringList", "class_p_i_string_list.html#a204dafd0021fb841cdb52cf2a01a0ef5", null ], + [ "PIStringList", "class_p_i_string_list.html#a79c640961baae9bbf10935245eaf3339", null ], + [ "join", "class_p_i_string_list.html#a05ae2b8fc9909e4c20a1852ee680c381", null ], + [ "removeStrings", "class_p_i_string_list.html#a7b3c809c1c93ddab639d2163da783043", null ], + [ "removeDuplicates", "class_p_i_string_list.html#af7e798057ddb99a7cca519ccf3aaba8d", null ], + [ "trim", "class_p_i_string_list.html#aebcbef8d88b0081f7081a23331f66364", null ], + [ "contentSize", "class_p_i_string_list.html#ab1d6f27922acdb2de9e8b37cd20ccd50", null ], + [ "operator==", "class_p_i_string_list.html#a5933d3895fdf319f7077c7c078a0971e", null ], + [ "operator!=", "class_p_i_string_list.html#a15888f52377f7f88aca65a66a511d3e8", null ], + [ "operator<<", "class_p_i_string_list.html#ab2ace08e93a4de6b184b29bf3d690467", null ] +]; \ No newline at end of file diff --git a/pip/doc/html/class_p_i_system_time-members.html b/pip/doc/html/class_p_i_system_time-members.html new file mode 100644 index 0000000..c0eb4b2 --- /dev/null +++ b/pip/doc/html/class_p_i_system_time-members.html @@ -0,0 +1,161 @@ + + + + + + +PIP: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    PISystemTime Member List
    +
    +
    + +

    This is the complete list of members for PISystemTime, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    abs() const PISystemTime
    addMicroseconds(double v)PISystemTimeinline
    addMilliseconds(double v)PISystemTimeinline
    addNanoseconds(double v)PISystemTimeinline
    addSeconds(double v)PISystemTimeinline
    current(bool precise_but_not_system=false)PISystemTimestatic
    fromMicroseconds(double v)PISystemTimeinlinestatic
    fromMilliseconds(double v)PISystemTimeinlinestatic
    fromNanoseconds(double v)PISystemTimeinlinestatic
    fromSeconds(double v)PISystemTimeinlinestatic
    nanosecondsPISystemTime
    operator!=(const PISystemTime &t) const PISystemTimeinline
    operator*(const double &v) const PISystemTimeinline
    operator*=(const double &v)PISystemTimeinline
    operator+(const PISystemTime &t) const PISystemTimeinline
    operator+=(const PISystemTime &t)PISystemTimeinline
    operator-(const PISystemTime &t) const PISystemTimeinline
    operator-=(const PISystemTime &t)PISystemTimeinline
    operator/(const double &v) const PISystemTimeinline
    operator/=(const double &v)PISystemTimeinline
    operator<(const PISystemTime &t) const PISystemTimeinline
    operator<=(const PISystemTime &t) const PISystemTimeinline
    operator==(const PISystemTime &t) const PISystemTimeinline
    operator>(const PISystemTime &t) const PISystemTimeinline
    operator>=(const PISystemTime &t) const PISystemTimeinline
    PISystemTime()PISystemTimeinline
    PISystemTime(long s, long ns)PISystemTimeinline
    PISystemTime(const PISystemTime &t)PISystemTimeinline
    secondsPISystemTime
    sleep()PISystemTimeinline
    toMicroseconds() const PISystemTimeinline
    toMilliseconds() const PISystemTimeinline
    toNanoseconds() const PISystemTimeinline
    toSeconds() const PISystemTimeinline
    +
    + + + + diff --git a/pip/doc/html/class_p_i_system_time.html b/pip/doc/html/class_p_i_system_time.html new file mode 100644 index 0000000..c3f6207 --- /dev/null +++ b/pip/doc/html/class_p_i_system_time.html @@ -0,0 +1,322 @@ + + + + + + +PIP: PISystemTime Class Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + + +
    + +

    System time. + More...

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    PISystemTime ()
     Contructs system time with s = ns = 0.
     
    PISystemTime (long s, long ns)
     Contructs system time with s = "s" and ns = "ns".
     
    PISystemTime (const PISystemTime &t)
     Contructs system time from another.
     
    +double toSeconds () const
     Returns stored system time value in seconds.
     
    +double toMilliseconds () const
     Returns stored system time value in milliseconds.
     
    +double toMicroseconds () const
     Returns stored system time value in microseconds.
     
    +double toNanoseconds () const
     Returns stored system time value in nanoseconds.
     
    +PISystemTimeaddSeconds (double v)
     Add to stored system time "v" seconds.
     
    +PISystemTimeaddMilliseconds (double v)
     Add to stored system time "v" milliseconds.
     
    +PISystemTimeaddMicroseconds (double v)
     Add to stored system time "v" microseconds.
     
    +PISystemTimeaddNanoseconds (double v)
     Add to stored system time "v" nanoseconds.
     
    void sleep ()
     
    +PISystemTime abs () const
     Returns copy of this system time with absolutely values of s and ns.
     
    +PISystemTime operator+ (const PISystemTime &t) const
     Returns sum of this system time with "t".
     
    +PISystemTime operator- (const PISystemTime &t) const
     Returns difference between this system time and "t".
     
    +PISystemTime operator* (const double &v) const
     Returns multiplication between this system time and "t".
     
    +PISystemTime operator/ (const double &v) const
     Returns division between this system time and "t".
     
    +PISystemTimeoperator+= (const PISystemTime &t)
     Add to stored value system time "t".
     
    +PISystemTimeoperator-= (const PISystemTime &t)
     Subtract from stored value system time "t".
     
    +PISystemTimeoperator*= (const double &v)
     Multiply stored value system time by "v".
     
    +PISystemTimeoperator/= (const double &v)
     Divide stored value system time by "v".
     
    +bool operator== (const PISystemTime &t) const
     Compare system times.
     
    +bool operator!= (const PISystemTime &t) const
     Compare system times.
     
    +bool operator> (const PISystemTime &t) const
     Compare system times.
     
    +bool operator< (const PISystemTime &t) const
     Compare system times.
     
    +bool operator>= (const PISystemTime &t) const
     Compare system times.
     
    +bool operator<= (const PISystemTime &t) const
     Compare system times.
     
    + + + + + + + + + + + + + + + + +

    +Static Public Member Functions

    +static PISystemTime fromSeconds (double v)
     Contructs system time from seconds "v".
     
    +static PISystemTime fromMilliseconds (double v)
     Contructs system time from milliseconds "v".
     
    +static PISystemTime fromMicroseconds (double v)
     Contructs system time from microseconds "v".
     
    +static PISystemTime fromNanoseconds (double v)
     Contructs system time from nanoseconds "v".
     
    +static PISystemTime current (bool precise_but_not_system=false)
     Returns current system time.
     
    + + + + + + + +

    +Public Attributes

    +long seconds
     Seconds of stored system time.
     
    +long nanoseconds
     Nanoseconds of stored system time.
     
    +

    Detailed Description

    +

    System time.

    +

    +Synopsis

    +

    This class provide arithmetic functions for POSIX system time. This time represents as seconds and nanosecons in integer formats. You can take current system time with function PISystemTime::current(), compare times, sum or subtract two times, convert time to/from seconds, milliseconds, microseconds or nanoseconds.

    +

    +Example

    +
    int main() {
    +
    PISystemTime t0; // s = ns = 0
    +
    t0.addMilliseconds(200); // s = 0, ns = 200000000
    +
    t0.addMilliseconds(900); // s = 1, ns = 100000000
    +
    t0 -= PISystemTime::fromSeconds(0.1); // s = 1, ns = 0
    +
    t0.sleep(); // sleep for 1 second
    + + +
    piMSleep(500);
    + +
    (t1 - t0).sleep(); // sleep for 500 milliseconds
    +
    return 0;
    +
    };
    +

    Member Function Documentation

    + +
    +
    + + + + + +
    + + + + + + + +
    void PISystemTime::sleep ()
    +
    +inline
    +
    +

    Sleep for stored value.

    Warning
    Use this function to sleep for difference of system times or constructs system time. If you call this function on system time returned with PISystemTime::current() thread will be sleep almost forever.
    + +
    +
    +
    +
    + + + + diff --git a/pip/doc/html/class_p_i_system_time.js b/pip/doc/html/class_p_i_system_time.js new file mode 100644 index 0000000..26a294e --- /dev/null +++ b/pip/doc/html/class_p_i_system_time.js @@ -0,0 +1,32 @@ +var class_p_i_system_time = +[ + [ "PISystemTime", "class_p_i_system_time.html#a1953b9b01b46f81c9abdda056b586baf", null ], + [ "PISystemTime", "class_p_i_system_time.html#ae21e04bfdf6534b05d0037ed14ee59bc", null ], + [ "PISystemTime", "class_p_i_system_time.html#acf262a7f3ab39b197bae61c942989271", null ], + [ "toSeconds", "class_p_i_system_time.html#a296f501657919b2d66747abb82f606cb", null ], + [ "toMilliseconds", "class_p_i_system_time.html#aff38007b354d3420f25a5d37640e1bf5", null ], + [ "toMicroseconds", "class_p_i_system_time.html#a0cb8a1a609186771ad619620d01c0544", null ], + [ "toNanoseconds", "class_p_i_system_time.html#a7732f3585eab387d80eaa3d68b620bc4", null ], + [ "addSeconds", "class_p_i_system_time.html#a5e98e183f16631bdec2c019356b2679b", null ], + [ "addMilliseconds", "class_p_i_system_time.html#acd6dbda302fd70a2d27e2bd3af7ae29c", null ], + [ "addMicroseconds", "class_p_i_system_time.html#ab7241ee8399e898db3912b6525128ff9", null ], + [ "addNanoseconds", "class_p_i_system_time.html#a8b53a1bf0e40a595b26115369bfb374d", null ], + [ "sleep", "class_p_i_system_time.html#ad290b000832a523754c315404b36ce9b", null ], + [ "abs", "class_p_i_system_time.html#a6408d67d0ebe7fc41d8d91f8b886eef6", null ], + [ "operator+", "class_p_i_system_time.html#a415080b1306b98576a2bd6c38b8de78d", null ], + [ "operator-", "class_p_i_system_time.html#a4401fa2920eb43cfb89019ef6fc5be6a", null ], + [ "operator*", "class_p_i_system_time.html#a951c593d9a3d7f68edee3499886ab06e", null ], + [ "operator/", "class_p_i_system_time.html#a59e752e61f73f625cc46c4613a921ee6", null ], + [ "operator+=", "class_p_i_system_time.html#aa2e044663f23a4456aeac7b472d56d2f", null ], + [ "operator-=", "class_p_i_system_time.html#a9615d99f50b56aaf6a8b10ac96d47422", null ], + [ "operator*=", "class_p_i_system_time.html#af24dc2012c4ba4885975bbc4a14c12f0", null ], + [ "operator/=", "class_p_i_system_time.html#a4bb8e7ee161308b4f7ac23fb547fc5c1", null ], + [ "operator==", "class_p_i_system_time.html#a1f0ca869016e7504ef2ef0d39fb24286", null ], + [ "operator!=", "class_p_i_system_time.html#afa5fd1abc702111b388dd20d8069902a", null ], + [ "operator>", "class_p_i_system_time.html#a2bbab7edaddad2d31f9782aaf8441023", null ], + [ "operator<", "class_p_i_system_time.html#a9f3ebf927584b6577139ebfb6008e8ab", null ], + [ "operator>=", "class_p_i_system_time.html#ab6e479036d86834fbdc3eb39ae17f062", null ], + [ "operator<=", "class_p_i_system_time.html#a5acdaaac43720151791fea0244fee00c", null ], + [ "seconds", "class_p_i_system_time.html#a04b205ecf95921596a68c442b49b34b0", null ], + [ "nanoseconds", "class_p_i_system_time.html#a44d03ab983c54f3edfe3f5e57e08b15a", null ] +]; \ No newline at end of file diff --git a/pip/doc/html/class_p_i_thread-members.html b/pip/doc/html/class_p_i_thread-members.html new file mode 100644 index 0000000..d45ab50 --- /dev/null +++ b/pip/doc/html/class_p_i_thread-members.html @@ -0,0 +1,216 @@ + + + + + + +PIP: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    PIThread Member List
    +
    +
    + +

    This is the complete list of members for PIThread, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    begin()PIThreadinlineprotectedvirtual
    className() const PIObjectinlinevirtual
    CONNECTPIObjectrelated
    CONNECT0PIObjectrelated
    CONNECT1PIObjectrelated
    CONNECT2PIObjectrelated
    CONNECT3PIObjectrelated
    CONNECT4PIObjectrelated
    CONNECTUPIObjectrelated
    data() const PIThreadinline
    debug() const PIObjectinline
    DISCONNECTPIObjectrelated
    DISCONNECT0PIObjectrelated
    DISCONNECT1PIObjectrelated
    DISCONNECT2PIObjectrelated
    DISCONNECT3PIObjectrelated
    DISCONNECT4PIObjectrelated
    emitter() const PIObjectinlineprotected
    end()PIThreadinlineprotectedvirtual
    EVENTPIObjectrelated
    EVENT0PIObjectrelated
    EVENT1PIObjectrelated
    EVENT2PIObjectrelated
    EVENT3PIObjectrelated
    EVENT4PIObjectrelated
    EVENT_HANDLERPIObjectrelated
    EVENT_HANDLER0PIObjectrelated
    EVENT_HANDLER1PIObjectrelated
    EVENT_HANDLER2PIObjectrelated
    EVENT_HANDLER3PIObjectrelated
    EVENT_HANDLER4PIObjectrelated
    EVENT_VHANDLERPIObjectrelated
    EVENT_VHANDLER0PIObjectrelated
    EVENT_VHANDLER1PIObjectrelated
    EVENT_VHANDLER2PIObjectrelated
    EVENT_VHANDLER3PIObjectrelated
    EVENT_VHANDLER4PIObjectrelated
    findByName(const PIString &name)PIObjectinlinestatic
    HANDLERPIObjectrelated
    isPropertyExists(const PIString &name) const PIObjectinline
    isRunning() const PIThreadinline
    lock()PIThreadinline
    mutex()PIThreadinline
    name() const PIObjectinline
    needLockRun(bool need)PIThreadinline
    piCoutObjPIObjectrelated
    piDisconnect(PIObject *src, const PIString &sig)PIObjectstatic
    piDisconnect(PIObject *src)PIObjectstatic
    piHigh enum valuePIThread
    piHighest enum valuePIThread
    piLow enum valuePIThread
    piLowerst enum valuePIThread
    piNormal enum valuePIThread
    PIOBJECTPIObjectrelated
    PIObject(const PIString &name=PIString())PIObject
    PIOBJECT_PARENTPIObjectrelated
    PIThread(void *data, ThreadFunc func, bool startNow=false, int loop_delay=-1)PIThread
    PIThread(bool startNow=false, int loop_delay=-1)PIThread
    Priority enum namePIThread
    priority() const PIThreadinline
    properties() const PIObjectinline
    propertiesCount() const PIObjectinline
    property(const PIString &name) const PIObjectinline
    propertyChanged(const PIString &name)PIObjectinlineprotectedvirtual
    run()PIThreadinlineprotectedvirtual
    setData(void *d)PIThreadinline
    setDebug(bool debug)PIObjectinline
    setName(const PIString &name)PIObjectinline
    setPriority(PIThread::Priority prior)PIThread
    setProperty(const PIString &name, const PIVariant &value)PIObjectinline
    setSlot(ThreadFunc func)PIThreadinline
    start(int timer_delay)PIThread
    start(ThreadFunc func, int timer_delay)PIThreadinline
    started()PIThread
    startOnce()PIThread
    startOnce(ThreadFunc func)PIThreadinline
    stop(bool wait)PIThreadinline
    stopped()PIThread
    superClassName() const PIObjectinlinevirtual
    terminate()PIThread
    unlock()PIThreadinline
    waitForFinish(int timeout_msecs)PIThread
    waitForStart(int timeout_msecs)PIThread
    WEAK_CONNECTPIObjectrelated
    WEAK_CONNECT0PIObjectrelated
    WEAK_CONNECT1PIObjectrelated
    WEAK_CONNECT2PIObjectrelated
    WEAK_CONNECT3PIObjectrelated
    WEAK_CONNECT4PIObjectrelated
    +
    + + + + diff --git a/pip/doc/html/class_p_i_thread.html b/pip/doc/html/class_p_i_thread.html new file mode 100644 index 0000000..3545d55 --- /dev/null +++ b/pip/doc/html/class_p_i_thread.html @@ -0,0 +1,746 @@ + + + + + + +PIP: PIThread Class Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + + +
    + +

    Thread class. + More...

    +
    + + Inheritance diagram for PIThread:
    +
    +
    + + + + + + +

    +Public Types

    enum  Priority {
    +  piLowerst, +piLow, +piNormal, +piHigh, +
    +  piHighest +
    + }
     Priority of thread. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    PIThread (void *data, ThreadFunc func, bool startNow=false, int loop_delay=-1)
     Contructs thread with custom data "data", external function "func" and main loop delay "loop_delay".
     
    PIThread (bool startNow=false, int loop_delay=-1)
     Contructs thread with main loop delay "loop_delay".
     
    +void setData (void *d)
     Set common data passed to external function.
     
    +void setSlot (ThreadFunc func)
     Set external function that will be executed after every run()
     
    +void setPriority (PIThread::Priority prior)
     Set priority of thread.
     
    +void * data () const
     Returns common data passed to external function.
     
    +PIThread::Priority priority () const
     Return priority of thread.
     
    +bool isRunning () const
     Return true if thread is running.
     
    +void needLockRun (bool need)
     Set necessity of lock every run with internal mutex.
     
    +PIMutexmutex ()
     Return internal mutex.
     
    - Public Member Functions inherited from PIObject
    PIObject (const PIString &name=PIString())
     Contructs PIObject with name "name".
     
    +PIString name () const
     Returns object name.
     
    +virtual const char * className () const
     Returns object class name.
     
    +virtual const char * superClassName () const
     Returns object superclass name.
     
    +bool debug () const
     Return if debug of this object is active.
     
    +void setName (const PIString &name)
     Set object name.
     
    +void setDebug (bool debug)
     Set object debug active.
     
    +const PIMap< PIString,
    +PIVariant > & 
    properties () const
     Returns properties of the object.
     
    +int propertiesCount () const
     Returns properties count of the object.
     
    +PIVariant property (const PIString &name) const
     Returns property with name "name".
     
    +void setProperty (const PIString &name, const PIVariant &value)
     Set property with name "name" to "value". If there is no such property in object it will be added.
     
    +bool isPropertyExists (const PIString &name) const
     Returns if property with name "name" exists.
     
    + + + + + + + + + + + + + + + + + +

    +Protected Member Functions

    +virtual void begin ()
     Function executed once at the start of thread.
     
    +virtual void run ()
     Function executed at every "timer_delay" msecs until thread was stopped.
     
    +virtual void end ()
     Function executed once at the end of thread.
     
    - Protected Member Functions inherited from PIObject
    +PIObjectemitter () const
     Returns PIObject* which has raised an event. This value is correct only in definition of some event handler.
     
    +virtual void propertyChanged (const PIString &name)
     Virtual function executes after property with name "name" has been changed.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Handlers

    bool start (int timer_delay)
     Start thread. More...
     
    bool start (ThreadFunc func, int timer_delay)
     Start thread. More...
     
    bool startOnce ()
     Start thread without internal loop. More...
     
    bool startOnce (ThreadFunc func)
     Start thread without internal loop. More...
     
    void stop (bool wait)
     Stop thread. More...
     
    void terminate ()
     Strongly stop thread. More...
     
    bool waitForStart (int timeout_msecs)
     Wait for thread start. More...
     
    bool waitForFinish (int timeout_msecs)
     Wait for thread finish. More...
     
    +void lock ()
     Lock internal mutex.
     
    +void unlock ()
     Unlock internal mutex.
     
    + + + + + + + +

    +Events

    +void started ()
     Raise on thread start.
     
    +void stopped ()
     Raise on thread stop.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Additional Inherited Members

    - Static Public Member Functions inherited from PIObject
    +static void piDisconnect (PIObject *src, const PIString &sig)
     Disconnect object "src" from all connections with event name "sig".
     
    +static void piDisconnect (PIObject *src)
     Disconnect object "src" from all connections, i.e. all connections where object "src" is emitter.
     
    +static PIObjectfindByName (const PIString &name)
     Returns PIObject* with name "name" or 0, if there is no object found.
     
    +

    Detailed Description

    +

    Thread class.

    +

    This class allow you exec your code in separate thread.

    +

    +Synopsis

    +

    Multithreading allow you to write program which will be executed in several threads simultaneously. This trend allow you to use all cores of modern processors, but there are many dangers.

    +

    This class provide virtual functions begin(), run() and end(), which describes start, execution and finish work of some process. These functions executes in separate thread. When you execute start(), PIThread create separate system thread and sequentially executes function begin(), run() and end(). You can reimplement each function and write your own code to execute. Scheme of functions executing:

    +
    event started();
    +
    while (isRunning()) {
    +
    run();
    +
    ThreadFunc();
    +
    msleep(timer_delay);
    +
    }
    +
    event stopped();
    +
    end();
    +

    Unlike from directly using "pthread" or some similar you doesn`t need to write your own main thread cycle and sleep at every cycle end. PIThread make it for you, and your job is to set sleep value from contructor or when starting thread, and reimplement begin(), run() and end() functions.

    +

    +Using without subclassing

    +

    You can use PIThread without subclassing by using "ThreadFunc" pointer that can be set from constructor or by overloaded function start(ThreadFunc func, int timer_delay). If "func" if not null this function will be executed as run(). ThreadFunc is any static function with format void func(void * data). "Data" is custom data set from constructor or with function setData().
    + Also you can connect to event started(), but in this case you should to white your thread main cycle, because this event raised only one time.

    +

    +Locking

    +

    PIThread has inrternal mutex that can be locked and unlocked every run() if you set this flag with function needLockRun(bool). Also you can access to this mutex by functions lock(), unlock() and mutex(). Using this functions together with needLockRun(true) can guarantee one-thread access to some data.

    +

    Member Enumeration Documentation

    + +
    +
    + + + + +
    enum PIThread::Priority
    +
    + +

    Priority of thread.

    + + + + + + +
    Enumerator
    piLowerst  +

    Lowest

    +
    piLow  +

    Low

    +
    piNormal  +

    Normal, this is default priority of threads and timers

    +
    piHigh  +

    High

    +
    piHighest  +

    Highest

    +
    + +
    +
    +

    Member Function Documentation

    + +
    +
    + + + + + + + + +
    bool PIThread::start (int timer_delay = -1)
    +
    + +

    Start thread.

    +

    Start execution of run() in internal loop with "timer_delay" delay in milliseconds. If "timer_delay" <= 0 there is no delay in loop. Thread also exec external function set by setSlot() if it`s not null

    +
    Returns
    false if thread already started or can`t start thread
    + +
    +
    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool PIThread::start (ThreadFunc func,
    int timer_delay = -1 
    )
    +
    +inline
    +
    + +

    Start thread.

    +

    Overloaded function. Set external function "func" before start

    +
    Returns
    false if thread already started or can`t start thread
    + +
    +
    + +
    +
    + + + + + + + +
    bool PIThread::startOnce ()
    +
    + +

    Start thread without internal loop.

    +

    Start execution of run() once. Thread also exec external function set by setSlot() if it`s not null

    +
    Returns
    false if thread already started or can`t start thread
    + +
    +
    + +
    +
    + + + + + +
    + + + + + + + + +
    bool PIThread::startOnce (ThreadFunc func)
    +
    +inline
    +
    + +

    Start thread without internal loop.

    +

    Overloaded function. Set external function "func" before start

    +
    Returns
    false if thread already started or can`t start thread
    + +
    +
    + +
    +
    + + + + + +
    + + + + + + + + +
    void PIThread::stop (bool wait = false)
    +
    +inline
    +
    + +

    Stop thread.

    +

    Stop execution of thread and wait for it finish if "wait" is true. This function can block for infinite time if "wait" is true and any of thread function is busy forever

    + +
    +
    + +
    +
    + + + + + + + +
    void PIThread::terminate ()
    +
    + +

    Strongly stop thread.

    +

    Stop execution of thread immediately

    + +
    +
    + +
    +
    + + + + + + + + +
    bool PIThread::waitForStart (int timeout_msecs = -1)
    +
    + +

    Wait for thread start.

    +

    This function block until thread finish for "timeout_msecs" or forever if "timeout_msecs" < 0

    +
    Returns
    false if timeout is exceeded
    + +
    +
    + +
    +
    + + + + + + + + +
    bool PIThread::waitForFinish (int timeout_msecs = -1)
    +
    + +

    Wait for thread finish.

    +

    This function block until thread start for "timeout_msecs" or forever if "timeout_msecs" < 0

    +
    Returns
    false if timeout is exceeded
    + +
    +
    +
    +
    + + + + diff --git a/pip/doc/html/class_p_i_thread.js b/pip/doc/html/class_p_i_thread.js new file mode 100644 index 0000000..72ed2d3 --- /dev/null +++ b/pip/doc/html/class_p_i_thread.js @@ -0,0 +1,35 @@ +var class_p_i_thread = +[ + [ "Priority", "class_p_i_thread.html#a3ddcafb0b09d3ed258a519882986a77b", [ + [ "piLowerst", "class_p_i_thread.html#a3ddcafb0b09d3ed258a519882986a77ba4dbd54fc5158a029c682b718f48312d4", null ], + [ "piLow", "class_p_i_thread.html#a3ddcafb0b09d3ed258a519882986a77ba46703d0258b11d41c52a266b2b10b6d9", null ], + [ "piNormal", "class_p_i_thread.html#a3ddcafb0b09d3ed258a519882986a77babd362bfacabbd61d69793cceb449425c", null ], + [ "piHigh", "class_p_i_thread.html#a3ddcafb0b09d3ed258a519882986a77ba0e6861fee3e57cf6ba026a7553e69576", null ], + [ "piHighest", "class_p_i_thread.html#a3ddcafb0b09d3ed258a519882986a77ba18babfebe41163fbb810eb41357a6347", null ] + ] ], + [ "PIThread", "class_p_i_thread.html#adaa3b942365cb17b3e985648128e5f7e", null ], + [ "PIThread", "class_p_i_thread.html#a538752277df4d58134b05ef080ed6b04", null ], + [ "start", "class_p_i_thread.html#a5fb7161b42840be7fb2f738046887b39", null ], + [ "start", "class_p_i_thread.html#a38785bbce4ef9afb7116cea78beffa08", null ], + [ "startOnce", "class_p_i_thread.html#a44a9fe015ea8288a0a336b614ff2962b", null ], + [ "startOnce", "class_p_i_thread.html#ad50035fe7d3a2557178b6b46f6fa4861", null ], + [ "stop", "class_p_i_thread.html#a37e179466edd8011aca3a07e10153e62", null ], + [ "terminate", "class_p_i_thread.html#a2004de7b6aa59ecb50321571b932ec20", null ], + [ "setData", "class_p_i_thread.html#a221e15d1a4093b7db6cc579fc8be69b6", null ], + [ "setSlot", "class_p_i_thread.html#a85c22bf31dae02180827f2952e3594ee", null ], + [ "setPriority", "class_p_i_thread.html#ade6ddabe46917c5cef2f5da1dd613a69", null ], + [ "data", "class_p_i_thread.html#aa3c4138dc000e34fb74140d0a5be3afe", null ], + [ "priority", "class_p_i_thread.html#adcc0d49a7914cba2b3edc86c454ee3a6", null ], + [ "isRunning", "class_p_i_thread.html#a46720d79609ec893d9eb5eaa2354c414", null ], + [ "waitForStart", "class_p_i_thread.html#a8bcffcc0d12bdd6d8ddd455a15241313", null ], + [ "waitForFinish", "class_p_i_thread.html#ae325266c7f3484ad52c0a5c690cc222c", null ], + [ "needLockRun", "class_p_i_thread.html#a87a8b9315e3e2c0eb8bfeb864474da57", null ], + [ "lock", "class_p_i_thread.html#a221de2cf94a569a223bfc4456c0f4fed", null ], + [ "unlock", "class_p_i_thread.html#a82baf1fe4608234ba76b68540100ee73", null ], + [ "mutex", "class_p_i_thread.html#aeaff22c99b5f5ba444671d658eba2f14", null ], + [ "started", "class_p_i_thread.html#a6b91eb8632e75e0f00a625f28a0bedd1", null ], + [ "stopped", "class_p_i_thread.html#aa6350430814f777fdce81f99cbba4c1a", null ], + [ "begin", "class_p_i_thread.html#a70d5c858e8b7144280b8b216304ce1d0", null ], + [ "run", "class_p_i_thread.html#a8c9cacfd381e0e02eb6e52810d48ce2e", null ], + [ "end", "class_p_i_thread.html#af6dacd35973ff834f007d0f6a40f6e9c", null ] +]; \ No newline at end of file diff --git a/pip/doc/html/class_p_i_thread__inherit__graph.map b/pip/doc/html/class_p_i_thread__inherit__graph.map new file mode 100644 index 0000000..735c8db --- /dev/null +++ b/pip/doc/html/class_p_i_thread__inherit__graph.map @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/pip/doc/html/class_p_i_thread__inherit__graph.md5 b/pip/doc/html/class_p_i_thread__inherit__graph.md5 new file mode 100644 index 0000000..9847b4b --- /dev/null +++ b/pip/doc/html/class_p_i_thread__inherit__graph.md5 @@ -0,0 +1 @@ +3dfb852148bc0b73929c253a6df76762 \ No newline at end of file diff --git a/pip/doc/html/class_p_i_thread__inherit__graph.svg b/pip/doc/html/class_p_i_thread__inherit__graph.svg new file mode 100644 index 0000000..a50d508 --- /dev/null +++ b/pip/doc/html/class_p_i_thread__inherit__graph.svg @@ -0,0 +1,161 @@ + + + + + + +PIThread + + +Node1 + +PIThread + + +Node3 + + +PIConsole + + + + +Node1->Node3 + + + + +Node4 + + +PIIODevice + + + + +Node1->Node4 + + + + +Node11 + + +PIKbdListener + + + + +Node1->Node11 + + + + +Node12 + + +PIProcess + + + + +Node1->Node12 + + + + +Node2 + + +PIObject + + + + +Node2->Node1 + + + + +Node5 + + +PIBinaryLog + + + + +Node4->Node5 + + + + +Node6 + + +PIEthernet + + + + +Node4->Node6 + + + + +Node7 + + +PIFile + + + + +Node4->Node7 + + + + +Node9 + + +PIPacketExtractor + + + + +Node4->Node9 + + + + +Node10 + + +PISerial + + + + +Node4->Node10 + + + + +Node8 + + +PIConfig + + + + +Node7->Node8 + + + + + diff --git a/pip/doc/html/class_p_i_time_measurer-members.html b/pip/doc/html/class_p_i_time_measurer-members.html new file mode 100644 index 0000000..60a5872 --- /dev/null +++ b/pip/doc/html/class_p_i_time_measurer-members.html @@ -0,0 +1,139 @@ + + + + + + +PIP: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + + + + + + diff --git a/pip/doc/html/class_p_i_time_measurer.html b/pip/doc/html/class_p_i_time_measurer.html new file mode 100644 index 0000000..33dcecb --- /dev/null +++ b/pip/doc/html/class_p_i_time_measurer.html @@ -0,0 +1,218 @@ + + + + + + +PIP: PITimeMeasurer Class Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    + +
    +
    PITimeMeasurer Class Reference
    +
    +
    + +

    Time measurements. + More...

    + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    void reset ()
     Set internal time mark to current system time. More...
     
    +double elapsed_n ()
     Returns nanoseconds elapsed from last reset() execution or from timer measurer creation.
     
    +double elapsed_u ()
     Returns microseconds elapsed from last reset() execution or from timer measurer creation.
     
    +double elapsed_m ()
     Returns milliseconds elapsed from last reset() execution or from timer measurer creation.
     
    +double elapsed_s ()
     Returns seconds elapsed from last reset() execution or from timer measurer creation.
     
    +PISystemTime elapsed ()
     Returns PISystemTime elapsed from last reset() execution or from timer measurer creation.
     
    +PISystemTime reset_time ()
     Returns time mark of last reset() execution or timer measurer creation.
     
    + + + + + + + + + + + + + + + + +

    +Static Public Member Functions

    +static double elapsed_system_n ()
     Returns nanoseconds representation of current system time.
     
    +static double elapsed_system_u ()
     Returns microseconds representation of current system time.
     
    +static double elapsed_system_m ()
     Returns milliseconds representation of current system time.
     
    +static double elapsed_system_s ()
     Returns seconds representation of current system time.
     
    +static PISystemTime elapsed_system ()
     Returns time mark of current system time.
     
    +

    Detailed Description

    +

    Time measurements.

    +

    +Synopsis

    +

    Function reset() set time mark to current system time, then functions double elapsed_*() returns time elapsed from this mark. These functions can returns nano-, micro-, milli- and seconds with suffixes "n", "u", "m" and "s"

    +

    Member Function Documentation

    + +
    +
    + + + + + +
    + + + + + + + +
    void PITimeMeasurer::reset ()
    +
    +inline
    +
    + +

    Set internal time mark to current system time.

    +

    This function used for set start time mark. Later you can find out elapsed time from this time mark to any moment of time with elapsed_s(), elapsed_m(), elapsed_u() or elapsed_n() functions.

    See also
    elapsed_s(), elapsed_m(), elapsed_u(), elapsed_n()
    + +
    +
    +
    +
    + + + + diff --git a/pip/doc/html/class_p_i_time_measurer.js b/pip/doc/html/class_p_i_time_measurer.js new file mode 100644 index 0000000..24aa08a --- /dev/null +++ b/pip/doc/html/class_p_i_time_measurer.js @@ -0,0 +1,10 @@ +var class_p_i_time_measurer = +[ + [ "reset", "class_p_i_time_measurer.html#a9b9d77de23a343ccabc56d6658f9d874", null ], + [ "elapsed_n", "class_p_i_time_measurer.html#a7f0832742601a1c6c13e87aca6c9bdc0", null ], + [ "elapsed_u", "class_p_i_time_measurer.html#aa00150de5e04b3c7256e620498182380", null ], + [ "elapsed_m", "class_p_i_time_measurer.html#a2421e0d7f623a3181683ad50957d72fe", null ], + [ "elapsed_s", "class_p_i_time_measurer.html#a49b04aae807b3d09dc25485f4e47da75", null ], + [ "elapsed", "class_p_i_time_measurer.html#a9af8e8ee2231a6b62eea549c8d01d1d2", null ], + [ "reset_time", "class_p_i_time_measurer.html#a1d469ce161b772ce6fffc04e53cea18f", null ] +]; \ No newline at end of file diff --git a/pip/doc/html/class_p_i_timer-members.html b/pip/doc/html/class_p_i_timer-members.html new file mode 100644 index 0000000..12a9b24 --- /dev/null +++ b/pip/doc/html/class_p_i_timer-members.html @@ -0,0 +1,212 @@ + + + + + + +PIP: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    PITimer Member List
    +
    +
    + +

    This is the complete list of members for PITimer, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    addDelimiter(int delim, TimerEvent slot=0)PITimerinline
    className() const PIObjectinlinevirtual
    clearDelimiters()PITimerinline
    CONNECTPIObjectrelated
    CONNECT0PIObjectrelated
    CONNECT1PIObjectrelated
    CONNECT2PIObjectrelated
    CONNECT3PIObjectrelated
    CONNECT4PIObjectrelated
    CONNECTUPIObjectrelated
    data() const PITimerinline
    debug() const PIObjectinline
    DISCONNECTPIObjectrelated
    DISCONNECT0PIObjectrelated
    DISCONNECT1PIObjectrelated
    DISCONNECT2PIObjectrelated
    DISCONNECT3PIObjectrelated
    DISCONNECT4PIObjectrelated
    emitter() const PIObjectinlineprotected
    EVENTPIObjectrelated
    EVENT0PIObjectrelated
    EVENT1PIObjectrelated
    EVENT2PIObjectrelated
    EVENT3PIObjectrelated
    EVENT4PIObjectrelated
    EVENT_HANDLERPIObjectrelated
    EVENT_HANDLER0PIObjectrelated
    EVENT_HANDLER1PIObjectrelated
    EVENT_HANDLER2PIObjectrelated
    EVENT_HANDLER3PIObjectrelated
    EVENT_HANDLER4PIObjectrelated
    EVENT_VHANDLERPIObjectrelated
    EVENT_VHANDLER0PIObjectrelated
    EVENT_VHANDLER1PIObjectrelated
    EVENT_VHANDLER2PIObjectrelated
    EVENT_VHANDLER3PIObjectrelated
    EVENT_VHANDLER4PIObjectrelated
    findByName(const PIString &name)PIObjectinlinestatic
    HANDLERPIObjectrelated
    implementation() const PITimerinline
    interval() const PITimerinline
    isPropertyExists(const PIString &name) const PIObjectinline
    isRunning() const PITimerinline
    isStopped() const PITimerinline
    name() const PIObjectinline
    piCoutObjPIObjectrelated
    piDisconnect(PIObject *src, const PIString &sig)PIObjectstatic
    piDisconnect(PIObject *src)PIObjectstatic
    PIOBJECTPIObjectrelated
    PIObject(const PIString &name=PIString())PIObject
    PIOBJECT_PARENTPIObjectrelated
    PITimer()PITimerexplicit
    PITimer(TimerImplementation ti)PITimerexplicit
    PITimer(TimerEvent slot, void *data=0, TimerImplementation ti=Thread)PITimerexplicit
    Pool enum valuePITimer
    properties() const PIObjectinline
    propertiesCount() const PIObjectinline
    property(const PIString &name) const PIObjectinline
    propertyChanged(const PIString &name)PIObjectinlineprotectedvirtual
    removeDelimiter(int delim)PITimerinline
    removeDelimiter(TimerEvent slot)PITimerinline
    removeDelimiter(int delim, TimerEvent slot)PITimerinline
    restart()PITimerinline
    setData(void *data_)PITimerinline
    setDebug(bool debug)PIObjectinline
    setInterval(double ms)PITimerinline
    setName(const PIString &name)PIObjectinline
    setProperty(const PIString &name, const PIVariant &value)PIObjectinline
    setSlot(TimerEvent slot)PITimerinline
    start()PITimerinline
    start(int interval_ms_i)PITimerinline
    start(double interval_ms_d)PITimerinline
    stop()PITimerinline
    superClassName() const PIObjectinlinevirtual
    Thread enum valuePITimer
    ThreadRT enum valuePITimer
    tick(void *data_, int delimiter)PITimerinlineprotectedvirtual
    tickEvent(void *data_, int delimiter)PITimer
    TimerImplementation enum namePITimer
    WEAK_CONNECTPIObjectrelated
    WEAK_CONNECT0PIObjectrelated
    WEAK_CONNECT1PIObjectrelated
    WEAK_CONNECT2PIObjectrelated
    WEAK_CONNECT3PIObjectrelated
    WEAK_CONNECT4PIObjectrelated
    +
    + + + + diff --git a/pip/doc/html/class_p_i_timer.html b/pip/doc/html/class_p_i_timer.html new file mode 100644 index 0000000..ceaa0a3 --- /dev/null +++ b/pip/doc/html/class_p_i_timer.html @@ -0,0 +1,718 @@ + + + + + + +PIP: PITimer Class Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + + +
    + +

    Timer. + More...

    +
    + + Inheritance diagram for PITimer:
    +
    +
    + + + + + + +

    +Public Types

    enum  TimerImplementation { Thread = 0x01, +ThreadRT = 0x02, +Pool = 0x04 + }
     Timer implementations. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    PITimer ()
     Constructs timer with PITimer::Thread implementation.
     
    PITimer (TimerImplementation ti)
     Constructs timer with "ti" implementation.
     
    PITimer (TimerEvent slot, void *data=0, TimerImplementation ti=Thread)
     Constructs timer with "slot" slot, "data" data and "ti" implementation.
     
    +PITimer::TimerImplementation implementation () const
     Returns timer implementation.
     
    +double interval () const
     Returns timer loop delay in milliseconds.
     
    +void setInterval (double ms)
     Set timer loop delay in milliseconds.
     
    +bool isRunning () const
     Returns if timer is started.
     
    +bool isStopped () const
     Returns if timer is not started.
     
    +void setData (void *data_)
     Set custom data.
     
    +void setSlot (TimerEvent slot)
     Set timer tick function.
     
    +void * data () const
     Returns common data passed to tick functions.
     
    +void addDelimiter (int delim, TimerEvent slot=0)
     Add frequency delimiter delim with optional delimiter slot slot.
     
    +void removeDelimiter (int delim)
     Remove all frequency delimiters delim.
     
    +void removeDelimiter (TimerEvent slot)
     Remove all frequency delimiters with slot slot.
     
    +void removeDelimiter (int delim, TimerEvent slot)
     Remove all frequency delimiters delim with slot slot.
     
    - Public Member Functions inherited from PIObject
    PIObject (const PIString &name=PIString())
     Contructs PIObject with name "name".
     
    +PIString name () const
     Returns object name.
     
    +virtual const char * className () const
     Returns object class name.
     
    +virtual const char * superClassName () const
     Returns object superclass name.
     
    +bool debug () const
     Return if debug of this object is active.
     
    +void setName (const PIString &name)
     Set object name.
     
    +void setDebug (bool debug)
     Set object debug active.
     
    +const PIMap< PIString,
    +PIVariant > & 
    properties () const
     Returns properties of the object.
     
    +int propertiesCount () const
     Returns properties count of the object.
     
    +PIVariant property (const PIString &name) const
     Returns property with name "name".
     
    +void setProperty (const PIString &name, const PIVariant &value)
     Set property with name "name" to "value". If there is no such property in object it will be added.
     
    +bool isPropertyExists (const PIString &name) const
     Returns if property with name "name" exists.
     
    + + + + + + + + + + +

    +Protected Member Functions

    virtual void tick (void *data_, int delimiter)
     
    - Protected Member Functions inherited from PIObject
    +PIObjectemitter () const
     Returns PIObject* which has raised an event. This value is correct only in definition of some event handler.
     
    +virtual void propertyChanged (const PIString &name)
     Virtual function executes after property with name "name" has been changed.
     
    + + + + + + + + + + + + + + + + + + + +

    +Handlers

    bool start ()
     Start timer with interval() loop delay. More...
     
    bool start (int interval_ms_i)
     Start timer with msecs loop delay. More...
     
    bool start (double interval_ms_d)
     Start timer with msecs loop delay. More...
     
    +bool restart ()
     Stop and start timer with interval() loop delay.
     
    +bool stop ()
     Stop timer.
     
    +void clearDelimiters ()
     Remove all frequency delimiters.
     
    + + + + +

    +Events

    void tickEvent (void *data_, int delimiter)
     Raise on timer tick. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Additional Inherited Members

    - Static Public Member Functions inherited from PIObject
    +static void piDisconnect (PIObject *src, const PIString &sig)
     Disconnect object "src" from all connections with event name "sig".
     
    +static void piDisconnect (PIObject *src)
     Disconnect object "src" from all connections, i.e. all connections where object "src" is emitter.
     
    +static PIObjectfindByName (const PIString &name)
     Returns PIObject* with name "name" or 0, if there is no object found.
     
    +

    Detailed Description

    +

    Timer.

    +

    +Synopsis

    +

    This class implements timer function. PIP timers supports 3 way to tick notify, frequency delimiters and time measurements.

    +

    +Notify variants

    +

    Notify variants:

      +
    • "slot" - static function with format void func(void * data, int delimiter);
    • +
    • event - tickEvent();
    • +
    • virtual function - tick().
    • +
    +

    All these variants are equivalent, use most applicable.

    +

    +Frequency delimiters

    +

    Frequency delimiter is an integer number and "slot" function. If "slot" function is null timer main "slot" will be used. Each delimiter numbers tick timer will be execute delimiters or timer main "slot" function with delimiter value = delimiter number. Example:

    void tfunc(void * , int delim) {
    +
    piCout << "tick with delimiter" << delim;
    +
    };
    +
    void tfunc4(void * , int delim) {
    +
    piCout << "tick4 with delimiter" << delim;
    +
    };
    +
    int main() {
    +
    PITimer timer(tfunc);
    +
    timer.addDelimiter(2);
    +
    timer.addDelimiter(4, tfunc4);
    +
    timer.start(50);
    +
    piMSleep(200);
    +
    timer.stop();
    +
    timer.waitForFinish();
    +
    return 0;
    +
    };
    +
    /* Result:
    +
    tick with delimiter 1
    +
    tick with delimiter 1
    +
    tick with delimiter 2
    +
    tick with delimiter 1
    +
    tick with delimiter 1
    +
    tick with delimiter 2
    +
    tick4 with delimiter 4
    +
    */
    +

    +Synopsis

    +

    PITimer can be used as time measurer. Function reset() set time mark to current system time, then functions double elapsed_*() returns time elapsed from this mark. These functions can returns nano-, micro-, milli- and seconds with suffixes "n", "u", "m" and "s" Example:

    int main() {
    +
    PITimer timer;
    +
    piMSleep(100);
    +
    piCout << "elapsed" << timer.elapsed_m() << "ms";
    +
    piMSleep(100);
    +
    piCout << "elapsed" << timer.elapsed_m() << "ms";
    +
    timer.reset();
    +
    piMSleep(150);
    +
    piCout << "elapsed" << timer.elapsed_s() << "s";
    +
    return 0;
    +
    };
    +
    /* Result:
    +
    elapsed 100 ms
    +
    elapsed 200 ms
    +
    elapsed 0.15 s
    +
    */
    +

    Member Enumeration Documentation

    + +
    +
    + +

    Timer implementations.

    + + + + +
    Enumerator
    Thread  +

    Timer works in his own thread. Intervals are measured by the system time

    +
    ThreadRT  +

    Using POSIX timer with SIGEV_THREAD notification.

    Attention
    Doesn`t support on Windows and Mac OS!
    +
    Pool  +

    Using single TimerPool for all timers with this implementation. TimerPool works as Thread implementation and sequentially executes all timers.

    Attention
    Use this implementation with care!
    +
    + +
    +
    +

    Member Function Documentation

    + +
    +
    + + + + + +
    + + + + + + + +
    bool PITimer::start ()
    +
    +inline
    +
    + +

    Start timer with interval() loop delay.

    +

    Start execution of timer functions with frequency = 1 / msecs Hz.

    + +
    +
    + +
    +
    + + + + + +
    + + + + + + + + +
    bool PITimer::start (int msecs)
    +
    +inline
    +
    + +

    Start timer with msecs loop delay.

    +

    Start execution of timer functions with frequency = 1 / msecs Hz.

    + +
    +
    + +
    +
    + + + + + +
    + + + + + + + + +
    bool PITimer::start (double msecs)
    +
    +inline
    +
    + +

    Start timer with msecs loop delay.

    +

    Start execution of timer functions with frequency = 1. / msecs Hz. Instead of start(int msecs) function this variant allow start timer with frequencies more than 1 kHz

    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void PITimer::tickEvent (void * data,
    int delimiter 
    )
    +
    + +

    Raise on timer tick.

    +

    Data can be set with function setData(void * data) or from constructor. Delimiter if frequency delimiter, 1 for main loop.

    + +
    +
    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    virtual void PITimer::tick (void * data_,
    int delimiter 
    )
    +
    +inlineprotectedvirtual
    +
    +

    Virtual timer execution function, similar to "slot" or event void timeout(void * data, int delimiter). By default is empty.

    + +
    +
    +
    +
    + + + + diff --git a/pip/doc/html/class_p_i_timer.js b/pip/doc/html/class_p_i_timer.js new file mode 100644 index 0000000..6428690 --- /dev/null +++ b/pip/doc/html/class_p_i_timer.js @@ -0,0 +1,31 @@ +var class_p_i_timer = +[ + [ "TimerImplementation", "class_p_i_timer.html#a02b36fbf7ae0839eb72c95cde343b719", [ + [ "Thread", "class_p_i_timer.html#a02b36fbf7ae0839eb72c95cde343b719aee4dbda7d96c1ec6bc4a88310e7d4e51", null ], + [ "ThreadRT", "class_p_i_timer.html#a02b36fbf7ae0839eb72c95cde343b719a80970cf7914f7a34ad94fa6620b1f66b", null ], + [ "Pool", "class_p_i_timer.html#a02b36fbf7ae0839eb72c95cde343b719afc1ce0b87bd597621116ec5de765b6db", null ] + ] ], + [ "PITimer", "class_p_i_timer.html#a3cc1d86602eb8d2abd8e0c9a9931cd70", null ], + [ "PITimer", "class_p_i_timer.html#a0cbb0321a650e4dd4acd046e58a67095", null ], + [ "PITimer", "class_p_i_timer.html#a6d3067f66c06ddd21982251f4ed6ec50", null ], + [ "implementation", "class_p_i_timer.html#a5a0616e0a3db99893098b644cdd58288", null ], + [ "interval", "class_p_i_timer.html#a632ce2869f478d0752b0b48cfa399fec", null ], + [ "setInterval", "class_p_i_timer.html#aceedb334c02e3ad05ec9215aa956b780", null ], + [ "isRunning", "class_p_i_timer.html#a5ccbe3dd36ecde88f01b6534659a08d0", null ], + [ "isStopped", "class_p_i_timer.html#a88a8d0df214cb441321e6884342183e3", null ], + [ "start", "class_p_i_timer.html#afbe09c4d09f0dc897045037c1042cd70", null ], + [ "start", "class_p_i_timer.html#a9e4971a2f541ebac94057a61046667ce", null ], + [ "start", "class_p_i_timer.html#a65431888fc569599e6b3ff27c1617e00", null ], + [ "restart", "class_p_i_timer.html#ae899576c5a8b605a749f9c6f09773087", null ], + [ "stop", "class_p_i_timer.html#ae43b33b748524fbef3ec5ad705977737", null ], + [ "setData", "class_p_i_timer.html#aa166b87d70f34ca63b9c39f8f03daea4", null ], + [ "setSlot", "class_p_i_timer.html#ae55067d29d1491c6e583ca8db45fd0ba", null ], + [ "data", "class_p_i_timer.html#abbe9a559d65b0be6980e77218a05cfe3", null ], + [ "addDelimiter", "class_p_i_timer.html#ace072dbf3b4ddbd609b6acf4e058d291", null ], + [ "removeDelimiter", "class_p_i_timer.html#ab02f5a19cb71a4be4965a1d670c7ff72", null ], + [ "removeDelimiter", "class_p_i_timer.html#a2809e63e8678dc914a9b521fa0de7a09", null ], + [ "removeDelimiter", "class_p_i_timer.html#a093ee618f2beac2794a469c76f8064f1", null ], + [ "clearDelimiters", "class_p_i_timer.html#a2968d6a3aefc4c609cbeaf9f301a41f9", null ], + [ "tickEvent", "class_p_i_timer.html#a707cb908c36f42dab13338c42ede4a81", null ], + [ "tick", "class_p_i_timer.html#af94038669f0798c21cc2208da9945406", null ] +]; \ No newline at end of file diff --git a/pip/doc/html/class_p_i_timer__inherit__graph.map b/pip/doc/html/class_p_i_timer__inherit__graph.map new file mode 100644 index 0000000..a88ec6b --- /dev/null +++ b/pip/doc/html/class_p_i_timer__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/pip/doc/html/class_p_i_timer__inherit__graph.md5 b/pip/doc/html/class_p_i_timer__inherit__graph.md5 new file mode 100644 index 0000000..a7e088b --- /dev/null +++ b/pip/doc/html/class_p_i_timer__inherit__graph.md5 @@ -0,0 +1 @@ +195c165790aab704adc9a416814f1c4f \ No newline at end of file diff --git a/pip/doc/html/class_p_i_timer__inherit__graph.svg b/pip/doc/html/class_p_i_timer__inherit__graph.svg new file mode 100644 index 0000000..13a3dcf --- /dev/null +++ b/pip/doc/html/class_p_i_timer__inherit__graph.svg @@ -0,0 +1,44 @@ + + + + + + +PITimer + + +Node1 + +PITimer + + +Node3 + + +PIDiagnostics + + + + +Node1->Node3 + + + + +Node2 + + +PIObject + + + + +Node2->Node1 + + + + + diff --git a/pip/doc/html/class_p_i_variant-members.html b/pip/doc/html/class_p_i_variant-members.html new file mode 100644 index 0000000..967155e --- /dev/null +++ b/pip/doc/html/class_p_i_variant-members.html @@ -0,0 +1,256 @@ + + + + + + +PIP: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    PIVariant Member List
    +
    +
    + +

    This is the complete list of members for PIVariant, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    BitArray enum valuePIVariant
    Bool enum valuePIVariant
    ByteArray enum valuePIVariant
    Char enum valuePIVariant
    Complexd enum valuePIVariant
    Complexld enum valuePIVariant
    Custom enum valuePIVariant
    Date enum valuePIVariant
    DateTime enum valuePIVariant
    Double enum valuePIVariant
    Float enum valuePIVariant
    fromValue(const T &v)PIVariantinlinestatic
    Int enum valuePIVariant
    Invalid enum valuePIVariant
    isValid() const PIVariantinline
    LDouble enum valuePIVariant
    LLong enum valuePIVariant
    Long enum valuePIVariant
    operator!=(const PIVariant &v) const PIVariantinline
    operator=(const PIVariant &v)PIVariant
    operator=(const char *v)PIVariantinline
    operator=(const bool v)PIVariantinline
    operator=(const char v)PIVariantinline
    operator=(const uchar v)PIVariantinline
    operator=(const short v)PIVariantinline
    operator=(const ushort v)PIVariantinline
    operator=(const int &v)PIVariantinline
    operator=(const uint &v)PIVariantinline
    operator=(const long &v)PIVariantinline
    operator=(const ulong &v)PIVariantinline
    operator=(const llong &v)PIVariantinline
    operator=(const ullong &v)PIVariantinline
    operator=(const float &v)PIVariantinline
    operator=(const double &v)PIVariantinline
    operator=(const ldouble &v)PIVariantinline
    operator=(const complexd &v)PIVariantinline
    operator=(const complexld &v)PIVariantinline
    operator=(const PIBitArray &v)PIVariantinline
    operator=(const PIByteArray &v)PIVariantinline
    operator=(const PIString &v)PIVariantinline
    operator=(const PIStringList &v)PIVariantinline
    operator=(const PITime &v)PIVariantinline
    operator=(const PIDate &v)PIVariantinline
    operator=(const PIDateTime &v)PIVariantinline
    operator=(const PISystemTime &v)PIVariantinline
    operator==(const PIVariant &v) const PIVariant
    PIVariant()PIVariant
    PIVariant(const char *v)PIVariantinline
    PIVariant(const bool v)PIVariantinline
    PIVariant(const char v)PIVariantinline
    PIVariant(const uchar v)PIVariantinline
    PIVariant(const short v)PIVariantinline
    PIVariant(const ushort v)PIVariantinline
    PIVariant(const int &v)PIVariantinline
    PIVariant(const uint &v)PIVariantinline
    PIVariant(const long &v)PIVariantinline
    PIVariant(const ulong &v)PIVariantinline
    PIVariant(const llong &v)PIVariantinline
    PIVariant(const ullong &v)PIVariantinline
    PIVariant(const float &v)PIVariantinline
    PIVariant(const double &v)PIVariantinline
    PIVariant(const ldouble &v)PIVariantinline
    PIVariant(const complexd &v)PIVariantinline
    PIVariant(const complexld &v)PIVariantinline
    PIVariant(const PIBitArray &v)PIVariantinline
    PIVariant(const PIByteArray &v)PIVariantinline
    PIVariant(const PIString &v)PIVariantinline
    PIVariant(const PIStringList &v)PIVariantinline
    PIVariant(const PITime &v)PIVariantinline
    PIVariant(const PIDate &v)PIVariantinline
    PIVariant(const PIDateTime &v)PIVariantinline
    PIVariant(const PISystemTime &v)PIVariantinline
    setValue(const char *v)PIVariantinline
    setValue(const bool v)PIVariantinline
    setValue(const char v)PIVariantinline
    setValue(const uchar v)PIVariantinline
    setValue(const short v)PIVariantinline
    setValue(const ushort v)PIVariantinline
    setValue(const int &v)PIVariantinline
    setValue(const uint &v)PIVariantinline
    setValue(const long &v)PIVariantinline
    setValue(const ulong &v)PIVariantinline
    setValue(const llong &v)PIVariantinline
    setValue(const ullong &v)PIVariantinline
    setValue(const float &v)PIVariantinline
    setValue(const double &v)PIVariantinline
    setValue(const ldouble &v)PIVariantinline
    setValue(const complexd &v)PIVariantinline
    setValue(const complexld &v)PIVariantinline
    setValue(const PIBitArray &v)PIVariantinline
    setValue(const PIByteArray &v)PIVariantinline
    setValue(const PIString &v)PIVariantinline
    setValue(const PIStringList &v)PIVariantinline
    setValue(const PITime &v)PIVariantinline
    setValue(const PIDate &v)PIVariantinline
    setValue(const PIDateTime &v)PIVariantinline
    setValue(const PISystemTime &v)PIVariantinline
    Short enum valuePIVariant
    String enum valuePIVariant
    StringList enum valuePIVariant
    SystemTime enum valuePIVariant
    Time enum valuePIVariant
    toBitArray() const PIVariant
    toBool() const PIVariant
    toByteArray() const PIVariant
    toComplexd() const PIVariant
    toComplexld() const PIVariant
    toDate() const PIVariant
    toDateTime() const PIVariant
    toDouble() const PIVariant
    toFloat() const PIVariant
    toInt() const PIVariant
    toLDouble() const PIVariant
    toLLong() const PIVariant
    toString() const PIVariant
    toStringList() const PIVariant
    toSystemTime() const PIVariant
    toTime() const PIVariant
    toValue() const PIVariantinline
    Type enum namePIVariant
    type() const PIVariantinline
    typeFromName(const PIString &tname)PIVariantstatic
    typeName() const PIVariantinline
    typeName(PIVariant::Type type)PIVariantstatic
    UChar enum valuePIVariant
    UInt enum valuePIVariant
    ULLong enum valuePIVariant
    ULong enum valuePIVariant
    UShort enum valuePIVariant
    +
    + + + + diff --git a/pip/doc/html/class_p_i_variant.html b/pip/doc/html/class_p_i_variant.html new file mode 100644 index 0000000..def04a6 --- /dev/null +++ b/pip/doc/html/class_p_i_variant.html @@ -0,0 +1,1073 @@ + + + + + + +PIP: PIVariant Class Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + + +
    + +

    Variant type. + More...

    + + + + + +

    +Public Types

    enum  Type {
    +  Invalid = 0, +Bool, +Char, +UChar, +
    +  Short, +UShort, +Int, +UInt, +
    +  Long, +ULong, +LLong, +ULLong, +
    +  Float, +Double, +LDouble, +Complexd, +
    +  Complexld, +BitArray, +ByteArray, +String, +
    +  StringList, +Time, +Date, +DateTime, +
    +  SystemTime, +Custom = 0xFF +
    + }
     Type of PIVariant content. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    PIVariant ()
     Empty constructor, type() will be set to Invalid.
     
    PIVariant (const char *v)
     Constructs variant from string.
     
    PIVariant (const bool v)
     Constructs variant from boolean.
     
    PIVariant (const char v)
     Constructs variant from char.
     
    PIVariant (const uchar v)
     Constructs variant from integer.
     
    PIVariant (const short v)
     Constructs variant from integer.
     
    PIVariant (const ushort v)
     Constructs variant from integer.
     
    PIVariant (const int &v)
     Constructs variant from integer.
     
    PIVariant (const uint &v)
     Constructs variant from integer.
     
    PIVariant (const long &v)
     Constructs variant from integer.
     
    PIVariant (const ulong &v)
     Constructs variant from integer.
     
    PIVariant (const llong &v)
     Constructs variant from integer.
     
    PIVariant (const ullong &v)
     Constructs variant from integer.
     
    PIVariant (const float &v)
     Constructs variant from float.
     
    PIVariant (const double &v)
     Constructs variant from double.
     
    PIVariant (const ldouble &v)
     Constructs variant from long double.
     
    PIVariant (const complexd &v)
     Constructs variant from complex.
     
    PIVariant (const complexld &v)
     Constructs variant from complex.
     
    PIVariant (const PIBitArray &v)
     Constructs variant from bit array.
     
    PIVariant (const PIByteArray &v)
     Constructs variant from byte array.
     
    PIVariant (const PIString &v)
     Constructs variant from string.
     
    PIVariant (const PIStringList &v)
     Constructs variant from strings list.
     
    PIVariant (const PITime &v)
     Constructs variant from time.
     
    PIVariant (const PIDate &v)
     Constructs variant from date.
     
    PIVariant (const PIDateTime &v)
     Constructs variant from date and time.
     
    PIVariant (const PISystemTime &v)
     Constructs variant from system time.
     
    +void setValue (const char *v)
     Set variant content and type to string.
     
    +void setValue (const bool v)
     Set variant content and type to boolean.
     
    +void setValue (const char v)
     Set variant content and type to char.
     
    +void setValue (const uchar v)
     Set variant content and type to integer.
     
    +void setValue (const short v)
     Set variant content and type to integer.
     
    +void setValue (const ushort v)
     Set variant content and type to integer.
     
    +void setValue (const int &v)
     Set variant content and type to integer.
     
    +void setValue (const uint &v)
     Set variant content and type to integer.
     
    +void setValue (const long &v)
     Set variant content and type to integer.
     
    +void setValue (const ulong &v)
     Set variant content and type to integer.
     
    +void setValue (const llong &v)
     Set variant content and type to integer.
     
    +void setValue (const ullong &v)
     Set variant content and type to integer.
     
    +void setValue (const float &v)
     Set variant content and type to float.
     
    +void setValue (const double &v)
     Set variant content and type to double.
     
    +void setValue (const ldouble &v)
     Set variant content and type to long double.
     
    +void setValue (const complexd &v)
     Set variant content and type to complex.
     
    +void setValue (const complexld &v)
     Set variant content and type to complex.
     
    +void setValue (const PIBitArray &v)
     Set variant content and type to bit array.
     
    +void setValue (const PIByteArray &v)
     Set variant content and type to byte array.
     
    +void setValue (const PIString &v)
     Set variant content and type to string.
     
    +void setValue (const PIStringList &v)
     Set variant content and type to strings list.
     
    +void setValue (const PITime &v)
     Set variant content and type to time.
     
    +void setValue (const PIDate &v)
     Set variant content and type to date.
     
    +void setValue (const PIDateTime &v)
     Set variant content and type to date and time.
     
    +void setValue (const PISystemTime &v)
     Set variant content and type to system time.
     
    bool toBool () const
     Returns variant content as boolean. More...
     
    int toInt () const
     Returns variant content as int. More...
     
    llong toLLong () const
     Returns variant content as long long. More...
     
    float toFloat () const
     Returns variant content as float. More...
     
    double toDouble () const
     Returns variant content as double. More...
     
    ldouble toLDouble () const
     Returns variant content as long double. More...
     
    complexd toComplexd () const
     Returns variant content as complex. More...
     
    complexld toComplexld () const
     Returns variant content as long complex. More...
     
    PITime toTime () const
     Returns variant content as time. More...
     
    PIDate toDate () const
     Returns variant content as date. More...
     
    PIDateTime toDateTime () const
     Returns variant content as date and time. More...
     
    PISystemTime toSystemTime () const
     Returns variant content as system time. More...
     
    PIString toString () const
     Returns variant content as string. More...
     
    PIStringList toStringList () const
     Returns variant content as strings list. More...
     
    PIBitArray toBitArray () const
     Returns variant content as bit array. More...
     
    PIByteArray toByteArray () const
     Returns variant content as byte array. More...
     
    template<typename T >
    toValue () const
     Returns variant content as custom type. More...
     
    +PIVariantoperator= (const PIVariant &v)
     Assign operator.
     
    +PIVariantoperator= (const char *v)
     Assign operator.
     
    +PIVariantoperator= (const bool v)
     Assign operator.
     
    +PIVariantoperator= (const char v)
     Assign operator.
     
    +PIVariantoperator= (const uchar v)
     Assign operator.
     
    +PIVariantoperator= (const short v)
     Assign operator.
     
    +PIVariantoperator= (const ushort v)
     Assign operator.
     
    +PIVariantoperator= (const int &v)
     Assign operator.
     
    +PIVariantoperator= (const uint &v)
     Assign operator.
     
    +PIVariantoperator= (const long &v)
     Assign operator.
     
    +PIVariantoperator= (const ulong &v)
     Assign operator.
     
    +PIVariantoperator= (const llong &v)
     Assign operator.
     
    +PIVariantoperator= (const ullong &v)
     Assign operator.
     
    +PIVariantoperator= (const float &v)
     Assign operator.
     
    +PIVariantoperator= (const double &v)
     Assign operator.
     
    +PIVariantoperator= (const ldouble &v)
     Assign operator.
     
    +PIVariantoperator= (const complexd &v)
     Assign operator.
     
    +PIVariantoperator= (const complexld &v)
     Assign operator.
     
    +PIVariantoperator= (const PIBitArray &v)
     Assign operator.
     
    +PIVariantoperator= (const PIByteArray &v)
     Assign operator.
     
    +PIVariantoperator= (const PIString &v)
     Assign operator.
     
    +PIVariantoperator= (const PIStringList &v)
     Assign operator.
     
    +PIVariantoperator= (const PITime &v)
     Assign operator.
     
    +PIVariantoperator= (const PIDate &v)
     Assign operator.
     
    +PIVariantoperator= (const PIDateTime &v)
     Assign operator.
     
    +PIVariantoperator= (const PISystemTime &v)
     Assign operator.
     
    +bool operator== (const PIVariant &v) const
     Compare operator.
     
    +bool operator!= (const PIVariant &v) const
     Compare operator.
     
    +PIVariant::Type type () const
     Returns type of variant content.
     
    +PIString typeName () const
     Returns type name of variant content.
     
    +bool isValid () const
     Returns true if type is not Invalid.
     
    + + + + + + + + + + + +

    +Static Public Member Functions

    template<typename T >
    static PIVariant fromValue (const T &v)
     Returns new variant from custom type. More...
     
    +static PIVariant::Type typeFromName (const PIString &tname)
     Returns type from name.
     
    +static PIString typeName (PIVariant::Type type)
     Returns type name.
     
    +

    Detailed Description

    +

    Variant type.

    +

    +Synopsis

    +

    This class provides general type that can contains all standard types, some PIP types or custom type. In case of standard types this class also provides convertions between them.

    +

    +Usage

    +

    PIVariant useful if you want pass many variables with different types in single array, e.g.:

    +
    array << PIVariant(10) << PIVariant(1.61) << PIVariant(true) << PIVariant("0xFF");
    +
    piCout << array;
    +
    piForeachC (PIVariant & i, array)
    +
    piCout << i.toInt();
    +

    Result:

    {PIVariant(Int, 10), PIVariant(Double, 1,61), PIVariant(Bool, true), PIVariant(String, 0xFF)}
    +
    10
    +
    1
    +
    1
    +
    255
    +

    Member Enumeration Documentation

    + +
    +
    + + + + +
    enum PIVariant::Type
    +
    + +

    Type of PIVariant content.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Enumerator
    Invalid  +

    Invalid type , default type of empty contructor

    +
    Bool  +

    bool

    +
    Char  +

    char

    +
    UChar  +

    uchar

    +
    Short  +

    short

    +
    UShort  +

    ushort

    +
    Int  +

    int

    +
    UInt  +

    uint

    +
    Long  +

    long

    +
    ULong  +

    ulong

    +
    LLong  +

    llong

    +
    ULLong  +

    ullong

    +
    Float  +

    float

    +
    Double  +

    double

    +
    LDouble  +

    ldouble

    +
    Complexd  +

    complexd

    +
    Complexld  +

    complexld

    +
    BitArray  +

    PIBitArray

    +
    ByteArray  +

    PIByteArray

    +
    String  +

    PIString

    +
    StringList  +

    PIStringList

    +
    Time  +

    PITime

    +
    Date  +

    PIDate

    +
    DateTime  +

    PIDateTime

    +
    SystemTime  +

    PISystemTime

    +
    Custom  +

    Custom

    +
    + +
    +
    +

    Member Function Documentation

    + +
    +
    + + + + + + + +
    bool PIVariant::toBool () const
    +
    + +

    Returns variant content as boolean.

    +

    In case of numeric types returns true if value != 0.
    +In case of String type returns PIString::toBool().
    +In case of StringList type returns false if string list is empty, otherwise returns PIString::toBool() of first string.
    +In case of other types returns false.

    + +
    +
    + +
    +
    + + + + + + + +
    int PIVariant::toInt () const
    +
    + +

    Returns variant content as int.

    +

    In case of numeric types returns integer value.
    +In case of String type returns PIString::toInt().
    +In case of StringList type returns 0 if string list is empty, otherwise returns PIString::toInt() of first string.
    +In case of other types returns 0.

    + +
    +
    + +
    +
    + + + + + + + +
    llong PIVariant::toLLong () const
    +
    + +

    Returns variant content as long long.

    +

    In case of numeric types returns integer value.
    +In case of String type returns PIString::toLLong().
    +In case of StringList type returns 0L if string list is empty, otherwise returns PIString::toLLong() of first string.
    +In case of other types returns 0L.

    + +
    +
    + +
    +
    + + + + + + + +
    float PIVariant::toFloat () const
    +
    + +

    Returns variant content as float.

    +

    In case of numeric types returns float value.
    +In case of String type returns PIString::toFloat().
    +In case of StringList type returns 0.f if string list is empty, otherwise returns PIString::toFloat() of first string.
    +In case of other types returns 0.f.

    + +
    +
    + +
    +
    + + + + + + + +
    double PIVariant::toDouble () const
    +
    + +

    Returns variant content as double.

    +

    In case of numeric types returns double value.
    +In case of String type returns PIString::toDouble().
    +In case of StringList type returns 0. if string list is empty, otherwise returns PIString::toDouble() of first string.
    +In case of other types returns 0..

    + +
    +
    + +
    +
    + + + + + + + +
    ldouble PIVariant::toLDouble () const
    +
    + +

    Returns variant content as long double.

    +

    In case of numeric types returns long double value.
    +In case of String type returns PIString::toLDouble().
    +In case of StringList type returns 0. if string list is empty, otherwise returns PIString::toLDouble() of first string.
    +In case of other types returns 0..

    + +
    +
    + +
    +
    + + + + + + + +
    complexd PIVariant::toComplexd () const
    +
    + +

    Returns variant content as complex.

    +

    In case of numeric types returns complex value.
    +In case of String type returns PIString::toDouble().
    +In case of StringList type returns 0. if string list is empty, otherwise returns PIString::toDouble() of first string.
    +In case of other types returns 0..

    + +
    +
    + +
    +
    + + + + + + + +
    complexld PIVariant::toComplexld () const
    +
    + +

    Returns variant content as long complex.

    +

    In case of numeric types returns long complex value.
    +In case of String type returns PIString::toLDouble().
    +In case of StringList type returns 0. if string list is empty, otherwise returns PIString::toLDouble() of first string.
    +In case of other types returns 0..

    + +
    +
    + +
    +
    + + + + + + + +
    PITime PIVariant::toTime () const
    +
    + +

    Returns variant content as time.

    +

    In case of Time type returns time value.
    +In case of DateTime type returns time part of value.
    +In case of other types returns PITime().

    + +
    +
    + +
    +
    + + + + + + + +
    PIDate PIVariant::toDate () const
    +
    + +

    Returns variant content as date.

    +

    In case of Date type returns date value.
    +In case of DateTime type returns date part of value.
    +In case of other types returns PIDate().

    + +
    +
    + +
    +
    + + + + + + + +
    PIDateTime PIVariant::toDateTime () const
    +
    + +

    Returns variant content as date and time.

    +

    In case of Time type returns time value with null date.
    +In case of Date type returns date value with null time.
    +In case of DateTime type returns date and time.
    +In case of other types returns PIDateTime().

    + +
    +
    + +
    +
    + + + + + + + +
    PISystemTime PIVariant::toSystemTime () const
    +
    + +

    Returns variant content as system time.

    +

    In case of SystemTime type returns system time.
    +In case of other types returns PISystemTime::fromSeconds() from double value of variant content.

    + +
    +
    + +
    +
    + + + + + + + +
    PIString PIVariant::toString () const
    +
    + +

    Returns variant content as string.

    +

    In case of numeric types returns PIString::fromNumber().
    +In case of String type returns string value.
    +In case of StringList type returns joined string ("(" + PIStringList::join("; ") + ")").
    +In case of BitArray or ByteArray types returns number of bits/bytes.
    +In case of Time, Date or DateTime types returns toString() of this values.
    +In case of SystemTime types returns second and nanoseconds of time ("(PISystemTime::seconds s, PISystemTime::nanoseconds ns)").
    +In case of other types returns "".

    + +
    +
    + +
    +
    + + + + + + + +
    PIStringList PIVariant::toStringList () const
    +
    + +

    Returns variant content as strings list.

    +

    In case of StringList type returns strings list value.
    +In case of other types returns PIStringList with one string value of variant content.

    + +
    +
    + +
    +
    + + + + + + + +
    PIBitArray PIVariant::toBitArray () const
    +
    + +

    Returns variant content as bit array.

    +

    In case of BitArray type returns bit array value.
    +In case of other types returns PIBitArray from toLLong() value.

    + +
    +
    + +
    +
    + + + + + + + +
    PIByteArray PIVariant::toByteArray () const
    +
    + +

    Returns variant content as byte array.

    +

    In case of ByteArray type returns byte array value.
    +In case of other types returns empty PIByteArray.

    + +
    +
    + +
    +
    +
    +template<typename T >
    + + + + + +
    + + + + + + + +
    T PIVariant::toValue () const
    +
    +inline
    +
    + +

    Returns variant content as custom type.

    +

    In case of known types this function equivalent to<Type> function.
    +Otherwise returns content as type T.

    + +
    +
    + +
    +
    +
    +template<typename T >
    + + + + + +
    + + + + + + + + +
    static PIVariant PIVariant::fromValue (const T & v)
    +
    +inlinestatic
    +
    + +

    Returns new variant from custom type.

    +

    In case of known types this function equivalent PIVariant(T) constructors.
    +Otherwise returns variant with content v and type Custom.

    + +
    +
    +
    +
    + + + + diff --git a/pip/doc/html/class_p_i_variant.js b/pip/doc/html/class_p_i_variant.js new file mode 100644 index 0000000..ba508d2 --- /dev/null +++ b/pip/doc/html/class_p_i_variant.js @@ -0,0 +1,130 @@ +var class_p_i_variant = +[ + [ "Type", "class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdf", [ + [ "Invalid", "class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfa45bf798ad32851c9044a3a5755856c5a", null ], + [ "Bool", "class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfaa3e49597dd8751e48ca20b830d7408bb", null ], + [ "Char", "class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfa45c5f8b793d601954d4a9489370abe64", null ], + [ "UChar", "class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfa513ed493f1e7b30342987c3516f81730", null ], + [ "Short", "class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfa49c4522357ebcea946d477fd78eccd1c", null ], + [ "UShort", "class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfa5d69d3e100a348885d1e8c2e70617b79", null ], + [ "Int", "class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfa2eb3acbd36c03ef70cb7d1faa797e50f", null ], + [ "UInt", "class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfa75efd8b4f684b3e23fdca5a3c9ce7616", null ], + [ "Long", "class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfada92306e4b6207dd807fea3db9569756", null ], + [ "ULong", "class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfaff5169e651a3109ba5ac4de618343fe5", null ], + [ "LLong", "class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfa493d57852c824d39bdcaee57c9bfff92", null ], + [ "ULLong", "class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfae5edbc0259b17315545edd0949e8a2a8", null ], + [ "Float", "class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfa802d8727c57bf77c21aaefb910cddf50", null ], + [ "Double", "class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfafee752a615286794d4468c72e886ab38", null ], + [ "LDouble", "class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfa7f382b7fd8d07426b696d69ee7247876", null ], + [ "Complexd", "class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfaf163970dcba9d2f587327e38e5e38098", null ], + [ "Complexld", "class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfad1548d6221af498427f428a93d0af57f", null ], + [ "BitArray", "class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfa150c2f8336b8aa55ba766aeae271a9ef", null ], + [ "ByteArray", "class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfaaf9c597dd4d7b17fe96746c96252a16f", null ], + [ "String", "class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfa96a611933bbf5065a29e72e06196f547", null ], + [ "StringList", "class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfae25be87d1c676373a0356aeedf0e6914", null ], + [ "Time", "class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfa0114b5413f8a42bb71769a22e306e4a1", null ], + [ "Date", "class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfaf14a1f410b3c192878fc246b45f45124", null ], + [ "DateTime", "class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfa265d67fff2b590fb6765b3838a011c34", null ], + [ "SystemTime", "class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfa4fc51ffc735800b30adbc4176e3f29e4", null ], + [ "Custom", "class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfad85616b3a0febed1905a631cfbc9782e", null ] + ] ], + [ "PIVariant", "class_p_i_variant.html#a83432da0a545ad6dd30429c0e1a583da", null ], + [ "PIVariant", "class_p_i_variant.html#aad0458975016273ccd939c7aec69b057", null ], + [ "PIVariant", "class_p_i_variant.html#a14d9afdc7c44865b982f673fa45b83e6", null ], + [ "PIVariant", "class_p_i_variant.html#ad8e268c9cb15c248e914068417e04ccc", null ], + [ "PIVariant", "class_p_i_variant.html#a0f5a040f137b2e048f75b2e18521eb17", null ], + [ "PIVariant", "class_p_i_variant.html#a11042a1ccf1c759055fb604cae320be0", null ], + [ "PIVariant", "class_p_i_variant.html#af7bf9ae6815e438a01b10b2aa546e8c4", null ], + [ "PIVariant", "class_p_i_variant.html#aee8eeff2d7a3ff2a478b428b9b2badd8", null ], + [ "PIVariant", "class_p_i_variant.html#aa670291ca1ec856cdc1887e594b1546f", null ], + [ "PIVariant", "class_p_i_variant.html#a1fe8d4126aaf5bdbbd61ef178df488cc", null ], + [ "PIVariant", "class_p_i_variant.html#a20a6fd9ce7d7de2e20440f722f28f379", null ], + [ "PIVariant", "class_p_i_variant.html#a7ce8905e74c36806ca004e845b67743b", null ], + [ "PIVariant", "class_p_i_variant.html#a0a1355062b5b8df0c88542c782a985d8", null ], + [ "PIVariant", "class_p_i_variant.html#a91dc6be82349d2d24cc642abf9c39e2e", null ], + [ "PIVariant", "class_p_i_variant.html#a4dcc306bce5d0601e9cea679e623d8bd", null ], + [ "PIVariant", "class_p_i_variant.html#a5a03fdaf8ee128358c289ada2c72686d", null ], + [ "PIVariant", "class_p_i_variant.html#adb79886a19bb0efb6e9c221eae8fb236", null ], + [ "PIVariant", "class_p_i_variant.html#a7b33912daf30f5e7cc7c333e4c7400c6", null ], + [ "PIVariant", "class_p_i_variant.html#a8882d5bfc67b3ff89e8ee9835cac3693", null ], + [ "PIVariant", "class_p_i_variant.html#aba63a29878c14870b7a045799452d93c", null ], + [ "PIVariant", "class_p_i_variant.html#ac48a86c19a56cd03f1432596d29204d2", null ], + [ "PIVariant", "class_p_i_variant.html#afccb4ddebcf51eb0241cc99ad46fa6e3", null ], + [ "PIVariant", "class_p_i_variant.html#a3dd80bbfa434bfa4b470192d728be08e", null ], + [ "PIVariant", "class_p_i_variant.html#a3d14c3eec0653cd7a2a1e2988e805499", null ], + [ "PIVariant", "class_p_i_variant.html#a1e71b4d50d2054edb27c23cbfc3416c3", null ], + [ "PIVariant", "class_p_i_variant.html#a1fc8d7e876930686d216924473da466e", null ], + [ "setValue", "class_p_i_variant.html#aa22bd1cc0c6999120bb3820407a8856d", null ], + [ "setValue", "class_p_i_variant.html#a7b5d811efd852064247c7f3b98589481", null ], + [ "setValue", "class_p_i_variant.html#a79fff573e5cc711dfd406cc1b669d6b8", null ], + [ "setValue", "class_p_i_variant.html#a5a8568a8de98e912570d98ebdff9152a", null ], + [ "setValue", "class_p_i_variant.html#abe151f6ec7620f2222690c3c1af39f5b", null ], + [ "setValue", "class_p_i_variant.html#a49a9d2ccbb6a1b37ba985ef490f2b7d6", null ], + [ "setValue", "class_p_i_variant.html#a5eedf14579aa37e4bd2ab018234569c5", null ], + [ "setValue", "class_p_i_variant.html#a2a7a792167f163f11c516a39ff91e6ff", null ], + [ "setValue", "class_p_i_variant.html#ab8cf4fe353f70dd45489ad9b1c50f9d4", null ], + [ "setValue", "class_p_i_variant.html#a4255c426d7e88890c8e57794ff0abd09", null ], + [ "setValue", "class_p_i_variant.html#ab517be43715e8ae0f7dcbd17f16c95bc", null ], + [ "setValue", "class_p_i_variant.html#abd64b1243486bf3ff8878652b9505d4f", null ], + [ "setValue", "class_p_i_variant.html#a13630b2d2dfdc27107bf357b251e0c80", null ], + [ "setValue", "class_p_i_variant.html#ab86b97b9877912321941535949a15598", null ], + [ "setValue", "class_p_i_variant.html#af319e808795d029290f1f687d5d6627d", null ], + [ "setValue", "class_p_i_variant.html#ad5831d2dd7d2c7d4f570396acbef007b", null ], + [ "setValue", "class_p_i_variant.html#a8ab2f1166f8db46e6e68e141ee8d4063", null ], + [ "setValue", "class_p_i_variant.html#aa29e76a4b699e244e3a6679b180c30e3", null ], + [ "setValue", "class_p_i_variant.html#a6c3abdf7e5d0eebe4506c8430f509ad8", null ], + [ "setValue", "class_p_i_variant.html#adb68d9f360dc5f60e4e9442da7c983ef", null ], + [ "setValue", "class_p_i_variant.html#a8b664f935ad023991ee626df2abac13e", null ], + [ "setValue", "class_p_i_variant.html#a09c393e5e299848c8e1d06c0497bce44", null ], + [ "setValue", "class_p_i_variant.html#a9dbf3e639c99af1780f9c753822d5034", null ], + [ "setValue", "class_p_i_variant.html#a39d61e31968269464f6023ecd1645241", null ], + [ "setValue", "class_p_i_variant.html#a0f176cc2e51a5ab7e8a275a71f5166c3", null ], + [ "toBool", "class_p_i_variant.html#a9adb44018cf731bad2b7dcce2dde3684", null ], + [ "toInt", "class_p_i_variant.html#aef7526f9ffb911ac818c13a4fa8de923", null ], + [ "toLLong", "class_p_i_variant.html#ad6f468658cc0803d7ec532c8ebaf394e", null ], + [ "toFloat", "class_p_i_variant.html#a7765fde4363c83ef630ca53ea23b447f", null ], + [ "toDouble", "class_p_i_variant.html#a3f92e859630f5c853c644b494a194798", null ], + [ "toLDouble", "class_p_i_variant.html#aa101193f0a15d6232a8ab6ed39dfcd66", null ], + [ "toComplexd", "class_p_i_variant.html#a95a6405618b51ea226fc1aa788ad2a90", null ], + [ "toComplexld", "class_p_i_variant.html#a02ed61b14e6a9c71510d5c4f05d218c4", null ], + [ "toTime", "class_p_i_variant.html#a5b25bc3f783d63dad8ee68720dbfa9ed", null ], + [ "toDate", "class_p_i_variant.html#af533ce32863a9954e7d761ef56ab582b", null ], + [ "toDateTime", "class_p_i_variant.html#a99afae3218f68cc74bda4af6baa467d4", null ], + [ "toSystemTime", "class_p_i_variant.html#af353cc0fba770fceb61a0dfa4d87eba7", null ], + [ "toString", "class_p_i_variant.html#ae9b75422814a712a2c52ecfe19ca13ba", null ], + [ "toStringList", "class_p_i_variant.html#a734a89a0951763bbdeae2cf16004684d", null ], + [ "toBitArray", "class_p_i_variant.html#a0b4708bac5608fa3676bf409b76b5d23", null ], + [ "toByteArray", "class_p_i_variant.html#acadd0aee889bc4bd59fdd8bae13410df", null ], + [ "toValue", "class_p_i_variant.html#a5b1b4af9ab4bdd8c5bda7a8223a6b6f5", null ], + [ "operator=", "class_p_i_variant.html#a8348e3800d46b52e3afae8b8be493692", null ], + [ "operator=", "class_p_i_variant.html#aae3e2a836db1066ec9a988de171db5bd", null ], + [ "operator=", "class_p_i_variant.html#a95188408fc11d25360d120e9b974a965", null ], + [ "operator=", "class_p_i_variant.html#ad8d679e9c3e4ddce28dcbd2191c4a248", null ], + [ "operator=", "class_p_i_variant.html#aaa33f033d5da8c323690347a2138e984", null ], + [ "operator=", "class_p_i_variant.html#a6d134cec08d18e014457361bc176362e", null ], + [ "operator=", "class_p_i_variant.html#a9f86b544ed5147ec28ea560a6482c598", null ], + [ "operator=", "class_p_i_variant.html#ae45947d53b31848e58df19625738be28", null ], + [ "operator=", "class_p_i_variant.html#adb43e3361dd35d92587d9a039a907551", null ], + [ "operator=", "class_p_i_variant.html#a699e80ad6decf492aff5dd100086484a", null ], + [ "operator=", "class_p_i_variant.html#a45470050a51f8f5ef7da6a48a3c415f1", null ], + [ "operator=", "class_p_i_variant.html#a586b73957d9bf2c9bc241425fea49fb3", null ], + [ "operator=", "class_p_i_variant.html#a4ed52cb18d70695c2c19fa0ace6a37fa", null ], + [ "operator=", "class_p_i_variant.html#af25ec28ea7753a63581a61ff8e3106f0", null ], + [ "operator=", "class_p_i_variant.html#a8c11a9a6c0d1b9a2898ae0fa5388dd8b", null ], + [ "operator=", "class_p_i_variant.html#a17757995e61037053092bdb8172de3b6", null ], + [ "operator=", "class_p_i_variant.html#acda1391727dae83b740e4ef1379af398", null ], + [ "operator=", "class_p_i_variant.html#a9e92c15a29b086618211a42dafc35e7e", null ], + [ "operator=", "class_p_i_variant.html#aea48e5b1ae0b1ab355cd8039241ca0d8", null ], + [ "operator=", "class_p_i_variant.html#affbe4aee3a0113e7a552731a282b18b0", null ], + [ "operator=", "class_p_i_variant.html#ab44d58a4818de512567826c59f7c6521", null ], + [ "operator=", "class_p_i_variant.html#a4f8012d64e5ff5272ec0904d6397ccaa", null ], + [ "operator=", "class_p_i_variant.html#a94878ddb843851c3f6b1f2250123584f", null ], + [ "operator=", "class_p_i_variant.html#a1a459fd1b2d325a785ef015ccc415e83", null ], + [ "operator=", "class_p_i_variant.html#a1a951922fc438f4011676edab67425e7", null ], + [ "operator=", "class_p_i_variant.html#ab0bf9ae63e3f3469a27066f958aa66a6", null ], + [ "operator==", "class_p_i_variant.html#ae6447e6fa8b7acc82abb30fd97a60a0e", null ], + [ "operator!=", "class_p_i_variant.html#a7e188a954fbc5d18bf3f3e825e463054", null ], + [ "type", "class_p_i_variant.html#abc974cec179287663d03da76fac7f928", null ], + [ "typeName", "class_p_i_variant.html#ad349e0701add42efffd83fb19dee1216", null ], + [ "isValid", "class_p_i_variant.html#a80e4379667f46e5a384144e77b9b1aa7", null ] +]; \ No newline at end of file diff --git a/pip/doc/html/class_p_i_vector-members.html b/pip/doc/html/class_p_i_vector-members.html new file mode 100644 index 0000000..69e0149 --- /dev/null +++ b/pip/doc/html/class_p_i_vector-members.html @@ -0,0 +1,155 @@ + + + + + + +PIP: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    PIVector< T > Member List
    +
    +
    + +

    This is the complete list of members for PIVector< T >, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    back()PIVector< T >inline
    back() const PIVector< T >inline
    clear()PIVector< T >inline
    compare_func(const T *t0, const T *t1)PIVector< T >inlinestatic
    contains(const T &v) const PIVector< T >inline
    enlarge(llong piv_size)PIVector< T >inline
    etries(const T &v) const PIVector< T >inline
    fill(const T &f=T())PIVector< T >inline
    front()PIVector< T >inline
    front() const PIVector< T >inline
    isEmpty() const PIVector< T >inline
    operator!=(const PIVector< T > &t) const PIVector< T >inline
    operator<<(const PIVector< T > &other)PIVector< T >inline
    operator==(const PIVector< T > &t) const PIVector< T >inline
    PIVector()PIVector< T >inline
    pop_back()PIVector< T >inline
    pop_front()PIVector< T >inline
    push_back(const T &v)PIVector< T >inline
    push_front(const T &v)PIVector< T >inline
    remove(size_t index, size_t count=1)PIVector< T >inline
    removeAll(const T &v)PIVector< T >inline
    removeOne(const T &v)PIVector< T >inline
    resize(size_t new_size, const T &f=T())PIVector< T >inline
    size() const PIVector< T >inline
    size_s() const PIVector< T >inline
    sort(CompareFunc compare=compare_func)PIVector< T >inline
    take_back()PIVector< T >inline
    take_front()PIVector< T >inline
    +
    + + + + diff --git a/pip/doc/html/class_p_i_vector.html b/pip/doc/html/class_p_i_vector.html new file mode 100644 index 0000000..42c0c33 --- /dev/null +++ b/pip/doc/html/class_p_i_vector.html @@ -0,0 +1,530 @@ + + + + + + +PIP: PIVector< T > Class Template Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    + +
    +
    PIVector< T > Class Template Reference
    +
    +
    + +

    Dynamic array of any type. + More...

    + +

    Inherited by PIQueue< T >, and PIStack< T >.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

     PIVector ()
     
    +size_t size () const
     Elements count.
     
    +ssize_t size_s () const
     Elements count.
     
    +bool isEmpty () const
     Return "true" if vector is empty, i.e. size = 0.
     
    +T & back ()
     Last element of the vector.
     
    +const T & back () const
     Last element of the vector.
     
    +T & front ()
     First element of the vector.
     
    +const T & front () const
     First element of the vector.
     
    +bool operator== (const PIVector< T > &t) const
     Compare with vector "t".
     
    +bool operator!= (const PIVector< T > &t) const
     Compare with vector "t".
     
    +bool contains (const T &v) const
     Return "true" if vector has at least one element equal "t".
     
    +int etries (const T &v) const
     Return how many times element "t" appears in vector.
     
    +PIVector< T > & clear ()
     Clear vector. Equivalent to call "resize(0)"
     
    PIVector< T > & fill (const T &f=T())
     Fill vector with elements "t" leave size is unchanged and return reference to vector. More...
     
    PIVector< T > & resize (size_t new_size, const T &f=T())
     Resize vector to size "size". More...
     
    PIVector< T > & remove (size_t index, size_t count=1)
     Remove one element by index "index" and return reference to vector. More...
     
    PIVector< T > & sort (CompareFunc compare=compare_func)
     Sort vector using quick sort algorithm and standard compare function. More...
     
    +PIVector< T > & enlarge (llong piv_size)
     Increase vector size with "size" elements.
     
    PIVector< T > & removeOne (const T &v)
     Remove no more than one element equal "v" and return reference to vector. More...
     
    PIVector< T > & removeAll (const T &v)
     Remove all elements equal "v" and return reference to vector. More...
     
    +PIVector< T > & push_back (const T &v)
     Add new element "t" at the end of vector and return reference to vector.
     
    +PIVector< T > & operator<< (const PIVector< T > &other)
     Add vector "t" at the end of vector and return reference to vector.
     
    +PIVector< T > & push_front (const T &v)
     Add new element "t" at the beginning of vector and return reference to vector.
     
    +PIVector< T > & pop_back ()
     Remove one element from the end of vector and return reference to vector.
     
    +PIVector< T > & pop_front ()
     Remove one element from the beginning of vector and return reference to vector.
     
    +T take_back ()
     Remove one element from the end of vector and return it.
     
    +T take_front ()
     Remove one element from the beginning of vector and return it.
     
    + + + + +

    +Static Public Member Functions

    +static int compare_func (const T *t0, const T *t1)
     Standard compare function for type "Type". Return 0 if t0 = t1, -1 if t0 < t1 and 1 if t0 > t1.
     
    +

    Detailed Description

    +

    template<typename T>
    +class PIVector< T >

    + +

    Dynamic array of any type.

    +

    This class used to store dynamic array of any type of data. In memory data stored linear. You can insert item in any place of remove some items from any place. For quick add elements this is stream operator <<.

    +

    Constructor & Destructor Documentation

    + +
    +
    +
    +template<typename T>
    + + + + + +
    + + + + + + + +
    PIVector< T >::PIVector ()
    +
    +inline
    +
    +

    Contructs an empty vector

    + +
    +
    +

    Member Function Documentation

    + +
    +
    +
    +template<typename T>
    + + + + + +
    + + + + + + + + +
    PIVector< T > & PIVector< T >::fill (const T & f = T())
    +
    +inline
    +
    + +

    Fill vector with elements "t" leave size is unchanged and return reference to vector.

    +

    Example:

    +
    vec << '1' << '2' << '3' << '4' << '5';
    +
    vec.fill('0');
    +
    piForeachC (char i, vec)
    +
    cout << i << ", ";
    +
    // 0, 0, 0, 0, 0,
    +
    +
    +
    + +
    +
    +
    +template<typename T>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void PIVector< T >::resize (size_t new_size,
    const T & f = T() 
    )
    +
    +inline
    +
    + +

    Resize vector to size "size".

    +

    Elements removed from end of vector if new size < old size, or added new elements = "new_type" if new size > old size.
    +Example:

    +
    vec << 1 << 2;
    +
    vec.resize(4);
    +
    piForeachC (int & i, vec)
    +
    cout << i << ", ";
    +
    // 1, 2, 0, 0,
    +
    vec.resize(3);
    +
    piForeachC (int & i, vec)
    +
    cout << i << ", ";
    +
    // 1, 2, 0,
    +
    See also
    size(), clear()
    + +
    +
    + +
    +
    +
    +template<typename T>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    PIVector< T > & PIVector< T >::remove (size_t index,
    size_t count = 1 
    )
    +
    +inline
    +
    + +

    Remove one element by index "index" and return reference to vector.

    +

    Remove "count" elements by first index "index" and return reference to vector.

    +

    Example:

    +
    vec << '1' << '2' << '3' << '4' << '5';
    +
    vec.remove(1);
    +
    piForeachC (char i, vec)
    +
    cout << i << ", ";
    +
    // 1, 3, 4, 5,
    +
    See also
    removeOne(), removeAll()
    +

    Example:

    +
    vec << '1' << '2' << '3' << '4' << '5';
    +
    vec.remove(2, 2);
    +
    piForeachC (char i, vec)
    +
    cout << i << ", ";
    +
    // 1, 2, 5,
    +
    See also
    removeOne(), removeAll()
    + +
    +
    + +
    +
    +
    +template<typename T>
    + + + + + +
    + + + + + + + + +
    PIVector< T > & PIVector< T >::sort (CompareFunc compare = compare_func)
    +
    +inline
    +
    + +

    Sort vector using quick sort algorithm and standard compare function.

    +

    Example:

    +
    vec << 3 << 2 << 5 << 1 << 4;
    +
    vec.sort();
    +
    piForeachC (int & i, vec)
    +
    cout << i << ", ";
    +
    // 1, 2, 3, 4, 5,
    +

    With custom compare function:

    static int mycomp(const int * v0, const int * v1) {
    +
    if (*v0 == *v1) return 0;
    +
    return *v0 < *v1 ? 1 : -1;
    +
    }
    + +
    vec << 3 << 2 << 5 << 1 << 4;
    +
    vec.sort(mycomp);
    +
    piForeachC (int & i, vec)
    +
    cout << i << ", ";
    +
    // 5, 4, 3, 2, 1,
    +
    +
    +
    + +
    +
    +
    +template<typename T>
    + + + + + +
    + + + + + + + + +
    PIVector< T > & PIVector< T >::removeOne (const T & v)
    +
    +inline
    +
    + +

    Remove no more than one element equal "v" and return reference to vector.

    +

    Example:

    +
    vec << '1' << '2' << '3' << '2' << '1';
    +
    vec.removeOne('2');
    +
    piForeachC (char i, vec)
    +
    cout << i << ", ";
    +
    // 1, 3, 2, 1,
    +
    See also
    remove(), removeAll()
    + +
    +
    + +
    +
    +
    +template<typename T>
    + + + + + +
    + + + + + + + + +
    PIVector< T > & PIVector< T >::removeAll (const T & v)
    +
    +inline
    +
    + +

    Remove all elements equal "v" and return reference to vector.

    +

    Example:

    +
    vec << '1' << '2' << '3' << '2' << '1';
    +
    vec.removeAll('2');
    +
    piForeachC (char i, vec)
    +
    cout << i << ", ";
    +
    // 1, 3, 1,
    +
    See also
    remove(), removeOne()
    + +
    +
    +
    +
    + + + + diff --git a/pip/doc/html/class_p_i_vector.js b/pip/doc/html/class_p_i_vector.js new file mode 100644 index 0000000..10a837d --- /dev/null +++ b/pip/doc/html/class_p_i_vector.js @@ -0,0 +1,30 @@ +var class_p_i_vector = +[ + [ "PIVector", "class_p_i_vector.html#a1c666fc2ba39eff314508f1420530875", null ], + [ "size", "class_p_i_vector.html#a5568ad6d26f2392f0a08b6c425774978", null ], + [ "size_s", "class_p_i_vector.html#a9c4a32a229a287b5c03b99e58cdb62ee", null ], + [ "isEmpty", "class_p_i_vector.html#a4b8a3f487b9d1d623133a4c9fea19734", null ], + [ "back", "class_p_i_vector.html#afb5b4f1521561b82ef18a740b89f3838", null ], + [ "back", "class_p_i_vector.html#ab6419acbdf9f34da326890b61a6b6888", null ], + [ "front", "class_p_i_vector.html#abf6923dacf515f1f433544717d615999", null ], + [ "front", "class_p_i_vector.html#a8a35924372d7c30bb030ad7baf7dc450", null ], + [ "operator==", "class_p_i_vector.html#a420281739970e13565154c788b60bf11", null ], + [ "operator!=", "class_p_i_vector.html#abb6e9b8e55b4dc6a4aa639c171f2c9d9", null ], + [ "contains", "class_p_i_vector.html#a569226732df6c45066820db07e09c87d", null ], + [ "etries", "class_p_i_vector.html#a6339bac7482c915be6ed983388cfc275", null ], + [ "clear", "class_p_i_vector.html#a1eac8cb055835b44a4d7b718e976fbc3", null ], + [ "fill", "class_p_i_vector.html#aa6b5cd062e622fa4e3460249c11a2eb2", null ], + [ "resize", "class_p_i_vector.html#af3dc895f63a2b64927918f1be97e8947", null ], + [ "remove", "class_p_i_vector.html#a0e43a8466d800cd8ac31f91dc8f6e6a3", null ], + [ "sort", "class_p_i_vector.html#ad05af044be450c64a351df48a96fea97", null ], + [ "enlarge", "class_p_i_vector.html#a834ee327d55d935cefe8358169bc4aee", null ], + [ "removeOne", "class_p_i_vector.html#a016a1c78ec7270e6edccc81d7c8075ef", null ], + [ "removeAll", "class_p_i_vector.html#a5c8b3839e69249aa672e76017af2be1f", null ], + [ "push_back", "class_p_i_vector.html#a6b0cf989ba342d06c8cf21a55d434a8e", null ], + [ "operator<<", "class_p_i_vector.html#a24a59359b4ddeadc529bf35a11f38f6f", null ], + [ "push_front", "class_p_i_vector.html#adadda79d8436c657fd6039e8e090da67", null ], + [ "pop_back", "class_p_i_vector.html#a8f5297d0ee721627ad8c545980756b68", null ], + [ "pop_front", "class_p_i_vector.html#a94b63d4c818f6e27415b8895f37805b9", null ], + [ "take_back", "class_p_i_vector.html#ae951eefed7d44357b714224d9f4558b1", null ], + [ "take_front", "class_p_i_vector.html#a69dbb89bfade5d2c6e4ad18c9a33f718", null ] +]; \ No newline at end of file diff --git a/pip/doc/html/classes.html b/pip/doc/html/classes.html new file mode 100644 index 0000000..153fffa --- /dev/null +++ b/pip/doc/html/classes.html @@ -0,0 +1,149 @@ + + + + + + +PIP: Class Index + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    Class Index
    +
    +
    +
    B | E | I | P | R | S | T
    + + + + + + + + + + + + + + + +
      B  
    +
    PIByteArray   PIFile   PIStateMachine   PIStateMachine::Rule   
    PIChar   PIFlags   PIString   
      S  
    +
    PIConfig::Branch   PICLI   PIIODevice   PIStringList   
      E  
    +
    PICollection   PIKbdListener   PISystemTime   PIStateMachine::State   
    PIConfig   PIMutex   PIThread   
      T  
    +
    PIConfig::Entry   PIConnection   PIObject   PITimeMeasurer   
      I  
    +
    PIConsole   PIPacketExtractor   PITimer   TransferFunction   
    PICout   PIProcess   PIVariant   
    PIEthernet::Interface   PIDiagnostics   PIProtocol   PIVector   
    PIEthernet::InterfaceList   PIEthernet   PISerial   
      R  
    +
      P  
    +
    PIEvaluator   PISet   
    PIByteArray::RawData   
    PIBinaryLog   
    +
    B | E | I | P | R | S | T
    +
    +
    + + + + diff --git a/pip/doc/html/closed.png b/pip/doc/html/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..5d349094df02ad4df9fcef96c56953f9c4ddf00a GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@1EvmP~>pExO(c% z$+I;R&Az3iOZoaVXoMtGX!Fk(VhFi)pM8NA^NolZ4530-*1!4xTIKeGMa<4y!gguw gdD);oDPb?C;c5|qzB?j`Kw}v^UHx3vIVCg!0Fw?YcK`qY literal 0 HcmV?d00001 diff --git a/pip/doc/html/deprecated.html b/pip/doc/html/deprecated.html new file mode 100644 index 0000000..6654d44 --- /dev/null +++ b/pip/doc/html/deprecated.html @@ -0,0 +1,124 @@ + + + + + + +PIP: Deprecated List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    Deprecated List
    +
    +
    +
    +
    Member currentSystemTime ()
    +
    Use PISystemTime::current() instead
    +
    Member letobe_i (uint v)
    +
    +
    Member letobe_s (ushort v)
    +
    +
    +
    +
    + + + + diff --git a/pip/doc/html/dir_000001_000006.html b/pip/doc/html/dir_000001_000006.html new file mode 100644 index 0000000..4c54ad6 --- /dev/null +++ b/pip/doc/html/dir_000001_000006.html @@ -0,0 +1,113 @@ + + + + + + +PIP: src/_unsused -> math Relation + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +

    _unsused → math Relation

    File in src/_unsusedIncludes file in src/math
    pigeometry.hpimath.h
    +
    + + + + diff --git a/pip/doc/html/dir_000002_000004.html b/pip/doc/html/dir_000002_000004.html new file mode 100644 index 0000000..75afb94 --- /dev/null +++ b/pip/doc/html/dir_000002_000004.html @@ -0,0 +1,113 @@ + + + + + + +PIP: src/code -> core Relation + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + +
    +
    + +
    +
    +
    + + + + + + diff --git a/pip/doc/html/dir_000002_000005.html b/pip/doc/html/dir_000002_000005.html new file mode 100644 index 0000000..0d4e5f0 --- /dev/null +++ b/pip/doc/html/dir_000002_000005.html @@ -0,0 +1,113 @@ + + + + + + +PIP: src/code -> io Relation + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + +
    +
    + +
    +
    +
    + + + + + + diff --git a/pip/doc/html/dir_000002_000006.html b/pip/doc/html/dir_000002_000006.html new file mode 100644 index 0000000..c268cdd --- /dev/null +++ b/pip/doc/html/dir_000002_000006.html @@ -0,0 +1,113 @@ + + + + + + +PIP: src/code -> math Relation + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + +
    +
    + +
    +
    +
    + + + + + + diff --git a/pip/doc/html/dir_000003_000004.html b/pip/doc/html/dir_000003_000004.html new file mode 100644 index 0000000..5da9f5f --- /dev/null +++ b/pip/doc/html/dir_000003_000004.html @@ -0,0 +1,113 @@ + + + + + + +PIP: src/containers -> core Relation + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + +
    +
    + +
    +
    +
    + + + + + + diff --git a/pip/doc/html/dir_000004_000003.html b/pip/doc/html/dir_000004_000003.html new file mode 100644 index 0000000..24e7381 --- /dev/null +++ b/pip/doc/html/dir_000004_000003.html @@ -0,0 +1,113 @@ + + + + + + +PIP: src/core -> containers Relation + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +

    core → containers Relation

    File in src/coreIncludes file in src/containers
    pibitarray.hpicontainers.h
    +
    + + + + diff --git a/pip/doc/html/dir_000004_000005.html b/pip/doc/html/dir_000004_000005.html new file mode 100644 index 0000000..6a756dd --- /dev/null +++ b/pip/doc/html/dir_000004_000005.html @@ -0,0 +1,113 @@ + + + + + + +PIP: src/core -> io Relation + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +

    core → io Relation

    File in src/coreIncludes file in src/io
    piobject.cpppifile.h
    +
    + + + + diff --git a/pip/doc/html/dir_000004_000006.html b/pip/doc/html/dir_000004_000006.html new file mode 100644 index 0000000..b0187c6 --- /dev/null +++ b/pip/doc/html/dir_000004_000006.html @@ -0,0 +1,113 @@ + + + + + + +PIP: src/core -> math Relation + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + +
    +
    + +
    +
    +
    + + + + + + diff --git a/pip/doc/html/dir_000004_000007.html b/pip/doc/html/dir_000004_000007.html new file mode 100644 index 0000000..fd7dec3 --- /dev/null +++ b/pip/doc/html/dir_000004_000007.html @@ -0,0 +1,113 @@ + + + + + + +PIP: src/core -> system Relation + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +

    core → system Relation

    File in src/coreIncludes file in src/system
    piincludes.cpppiconsole.h
    piinit.cpppiprocess.h
    piinit.cpppisignals.h
    +
    + + + + diff --git a/pip/doc/html/dir_000004_000008.html b/pip/doc/html/dir_000004_000008.html new file mode 100644 index 0000000..3dd8612 --- /dev/null +++ b/pip/doc/html/dir_000004_000008.html @@ -0,0 +1,113 @@ + + + + + + +PIP: src/core -> thread Relation + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +

    core → thread Relation

    File in src/coreIncludes file in src/thread
    piobject.hpimutex.h
    +
    + + + + diff --git a/pip/doc/html/dir_000005_000004.html b/pip/doc/html/dir_000005_000004.html new file mode 100644 index 0000000..8a9ccba --- /dev/null +++ b/pip/doc/html/dir_000005_000004.html @@ -0,0 +1,113 @@ + + + + + + +PIP: src/io -> core Relation + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + +
    +
    + +
    +
    +
    + + + + + + diff --git a/pip/doc/html/dir_000005_000007.html b/pip/doc/html/dir_000005_000007.html new file mode 100644 index 0000000..2393fac --- /dev/null +++ b/pip/doc/html/dir_000005_000007.html @@ -0,0 +1,113 @@ + + + + + + +PIP: src/io -> system Relation + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + +
    +
    + +
    +
    +
    + + + + + + diff --git a/pip/doc/html/dir_000005_000008.html b/pip/doc/html/dir_000005_000008.html new file mode 100644 index 0000000..fc2fe74 --- /dev/null +++ b/pip/doc/html/dir_000005_000008.html @@ -0,0 +1,113 @@ + + + + + + +PIP: src/io -> thread Relation + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + +
    +
    + +
    +
    +
    + + + + + + diff --git a/pip/doc/html/dir_000006_000004.html b/pip/doc/html/dir_000006_000004.html new file mode 100644 index 0000000..2a761fa --- /dev/null +++ b/pip/doc/html/dir_000006_000004.html @@ -0,0 +1,113 @@ + + + + + + +PIP: src/math -> core Relation + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + +
    +
    + +
    +
    +
    + + + + + + diff --git a/pip/doc/html/dir_000007_000003.html b/pip/doc/html/dir_000007_000003.html new file mode 100644 index 0000000..a9bc4e6 --- /dev/null +++ b/pip/doc/html/dir_000007_000003.html @@ -0,0 +1,113 @@ + + + + + + +PIP: src/system -> containers Relation + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +

    system → containers Relation

    File in src/systemIncludes file in src/containers
    pisignals.hpicontainers.h
    +
    + + + + diff --git a/pip/doc/html/dir_000007_000005.html b/pip/doc/html/dir_000007_000005.html new file mode 100644 index 0000000..2105e6d --- /dev/null +++ b/pip/doc/html/dir_000007_000005.html @@ -0,0 +1,113 @@ + + + + + + +PIP: src/system -> io Relation + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + +
    +
    + +
    +
    +
    + + + + + + diff --git a/pip/doc/html/dir_000007_000008.html b/pip/doc/html/dir_000007_000008.html new file mode 100644 index 0000000..75dfe83 --- /dev/null +++ b/pip/doc/html/dir_000007_000008.html @@ -0,0 +1,113 @@ + + + + + + +PIP: src/system -> thread Relation + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +

    system → thread Relation

    File in src/systemIncludes file in src/thread
    pikbdlistener.hpithread.h
    piprocess.hpithread.h
    pisystemmonitor.hpithread.h
    +
    + + + + diff --git a/pip/doc/html/dir_000008_000004.html b/pip/doc/html/dir_000008_000004.html new file mode 100644 index 0000000..120f414 --- /dev/null +++ b/pip/doc/html/dir_000008_000004.html @@ -0,0 +1,113 @@ + + + + + + +PIP: src/thread -> core Relation + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + +
    +
    + +
    +
    +
    + + + + + + diff --git a/pip/doc/html/dir_0b61c55142250c0cc363383afd8075a4.html b/pip/doc/html/dir_0b61c55142250c0cc363383afd8075a4.html new file mode 100644 index 0000000..37fe4eb --- /dev/null +++ b/pip/doc/html/dir_0b61c55142250c0cc363383afd8075a4.html @@ -0,0 +1,151 @@ + + + + + + +PIP: src/containers Directory Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    containers Directory Reference
    +
    +
    +
    + + Directory dependency graph for containers:
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Files

    file  picontainers.cpp
     
    file  picontainers.h
     Generic containers.
     
    file  pideque.h
     Dynamic array of any type.
     
    file  pimap.h
     Associative array with custom types of key and value.
     
    file  piqueue.h
     
    file  piset.h
     Set container.
     
    file  pistack.h
     Stack container.
     
    file  pivector.h
     Dynamic array of any type.
     
    +
    +
    + + + + diff --git a/pip/doc/html/dir_0b61c55142250c0cc363383afd8075a4.js b/pip/doc/html/dir_0b61c55142250c0cc363383afd8075a4.js new file mode 100644 index 0000000..086f3dc --- /dev/null +++ b/pip/doc/html/dir_0b61c55142250c0cc363383afd8075a4.js @@ -0,0 +1,11 @@ +var dir_0b61c55142250c0cc363383afd8075a4 = +[ + [ "picontainers.h", "picontainers_8h.html", "picontainers_8h" ], + [ "pideque.h", "pideque_8h.html", null ], + [ "pimap.h", "pimap_8h.html", null ], + [ "piset.h", "piset_8h.html", [ + [ "PISet", "class_p_i_set.html", "class_p_i_set" ] + ] ], + [ "pistack.h", "pistack_8h.html", null ], + [ "pivector.h", "pivector_8h.html", "pivector_8h" ] +]; \ No newline at end of file diff --git a/pip/doc/html/dir_0b61c55142250c0cc363383afd8075a4_dep.map b/pip/doc/html/dir_0b61c55142250c0cc363383afd8075a4_dep.map new file mode 100644 index 0000000..c894b58 --- /dev/null +++ b/pip/doc/html/dir_0b61c55142250c0cc363383afd8075a4_dep.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/pip/doc/html/dir_0b61c55142250c0cc363383afd8075a4_dep.md5 b/pip/doc/html/dir_0b61c55142250c0cc363383afd8075a4_dep.md5 new file mode 100644 index 0000000..79cf1c9 --- /dev/null +++ b/pip/doc/html/dir_0b61c55142250c0cc363383afd8075a4_dep.md5 @@ -0,0 +1 @@ +6c944e828e6629ff262ff3ad6728a073 \ No newline at end of file diff --git a/pip/doc/html/dir_0b61c55142250c0cc363383afd8075a4_dep.svg b/pip/doc/html/dir_0b61c55142250c0cc363383afd8075a4_dep.svg new file mode 100644 index 0000000..ef80a7a --- /dev/null +++ b/pip/doc/html/dir_0b61c55142250c0cc363383afd8075a4_dep.svg @@ -0,0 +1,54 @@ + + + + + + +src/containers + +clusterdir_68267d1309a1af8e8297ef4c3efbcdba + + +src + + + + +dir_0b61c55142250c0cc363383afd8075a4 + + +containers + + + + +dir_aebb8dcc11953d78e620bbef0b9e2183 + + +core + + + + +dir_0b61c55142250c0cc363383afd8075a4->dir_aebb8dcc11953d78e620bbef0b9e2183 + + + +3 + + + + +dir_aebb8dcc11953d78e620bbef0b9e2183->dir_0b61c55142250c0cc363383afd8075a4 + + + +1 + + + + + diff --git a/pip/doc/html/dir_3edb929655fe9d5ef5f6ec0f70ce278e.html b/pip/doc/html/dir_3edb929655fe9d5ef5f6ec0f70ce278e.html new file mode 100644 index 0000000..5bffa9b --- /dev/null +++ b/pip/doc/html/dir_3edb929655fe9d5ef5f6ec0f70ce278e.html @@ -0,0 +1,131 @@ + + + + + + +PIP: src/_unsused Directory Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    _unsused Directory Reference
    +
    +
    +
    + + Directory dependency graph for _unsused:
    +
    +
    + + + + + +

    +Files

    file  pigeometry.h
     
    +
    +
    + + + + diff --git a/pip/doc/html/dir_3edb929655fe9d5ef5f6ec0f70ce278e_dep.map b/pip/doc/html/dir_3edb929655fe9d5ef5f6ec0f70ce278e_dep.map new file mode 100644 index 0000000..a514c6f --- /dev/null +++ b/pip/doc/html/dir_3edb929655fe9d5ef5f6ec0f70ce278e_dep.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/pip/doc/html/dir_3edb929655fe9d5ef5f6ec0f70ce278e_dep.md5 b/pip/doc/html/dir_3edb929655fe9d5ef5f6ec0f70ce278e_dep.md5 new file mode 100644 index 0000000..055142a --- /dev/null +++ b/pip/doc/html/dir_3edb929655fe9d5ef5f6ec0f70ce278e_dep.md5 @@ -0,0 +1 @@ +6a30d074c1527d3b96f1b27a2fb420b7 \ No newline at end of file diff --git a/pip/doc/html/dir_3edb929655fe9d5ef5f6ec0f70ce278e_dep.svg b/pip/doc/html/dir_3edb929655fe9d5ef5f6ec0f70ce278e_dep.svg new file mode 100644 index 0000000..a351ae4 --- /dev/null +++ b/pip/doc/html/dir_3edb929655fe9d5ef5f6ec0f70ce278e_dep.svg @@ -0,0 +1,45 @@ + + + + + + +src/_unsused + +clusterdir_68267d1309a1af8e8297ef4c3efbcdba + + +src + + + + +dir_3edb929655fe9d5ef5f6ec0f70ce278e + + +_unsused + + + + +dir_ae9a93452e2a84339148a16bcf2eb561 + + +math + + + + +dir_3edb929655fe9d5ef5f6ec0f70ce278e->dir_ae9a93452e2a84339148a16bcf2eb561 + + + +1 + + + + + diff --git a/pip/doc/html/dir_3ef7287b8e7a9ed45eff58e9a3bb8bc1.html b/pip/doc/html/dir_3ef7287b8e7a9ed45eff58e9a3bb8bc1.html new file mode 100644 index 0000000..cd3ae03 --- /dev/null +++ b/pip/doc/html/dir_3ef7287b8e7a9ed45eff58e9a3bb8bc1.html @@ -0,0 +1,139 @@ + + + + + + +PIP: src/code Directory Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    code Directory Reference
    +
    +
    +
    + + Directory dependency graph for code:
    +
    +
    + + + + + + + + + + + + + +

    +Files

    file  picodeinfo.cpp
     
    file  picodeinfo.h
     C++ code info structs.
     
    file  picodeparser.cpp
     
    file  picodeparser.h
     C++ code parser.
     
    +
    +
    + + + + diff --git a/pip/doc/html/dir_3ef7287b8e7a9ed45eff58e9a3bb8bc1.js b/pip/doc/html/dir_3ef7287b8e7a9ed45eff58e9a3bb8bc1.js new file mode 100644 index 0000000..a45b0a6 --- /dev/null +++ b/pip/doc/html/dir_3ef7287b8e7a9ed45eff58e9a3bb8bc1.js @@ -0,0 +1,5 @@ +var dir_3ef7287b8e7a9ed45eff58e9a3bb8bc1 = +[ + [ "picodeinfo.h", "picodeinfo_8h.html", null ], + [ "picodeparser.h", "picodeparser_8h.html", null ] +]; \ No newline at end of file diff --git a/pip/doc/html/dir_3ef7287b8e7a9ed45eff58e9a3bb8bc1_dep.map b/pip/doc/html/dir_3ef7287b8e7a9ed45eff58e9a3bb8bc1_dep.map new file mode 100644 index 0000000..9fcb376 --- /dev/null +++ b/pip/doc/html/dir_3ef7287b8e7a9ed45eff58e9a3bb8bc1_dep.map @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/pip/doc/html/dir_3ef7287b8e7a9ed45eff58e9a3bb8bc1_dep.md5 b/pip/doc/html/dir_3ef7287b8e7a9ed45eff58e9a3bb8bc1_dep.md5 new file mode 100644 index 0000000..037e275 --- /dev/null +++ b/pip/doc/html/dir_3ef7287b8e7a9ed45eff58e9a3bb8bc1_dep.md5 @@ -0,0 +1 @@ +df357f4d6636ab3e8e24ba76102adaa6 \ No newline at end of file diff --git a/pip/doc/html/dir_3ef7287b8e7a9ed45eff58e9a3bb8bc1_dep.svg b/pip/doc/html/dir_3ef7287b8e7a9ed45eff58e9a3bb8bc1_dep.svg new file mode 100644 index 0000000..4fe4787 --- /dev/null +++ b/pip/doc/html/dir_3ef7287b8e7a9ed45eff58e9a3bb8bc1_dep.svg @@ -0,0 +1,115 @@ + + + + + + +src/code + +clusterdir_68267d1309a1af8e8297ef4c3efbcdba + + +src + + + + +dir_3ef7287b8e7a9ed45eff58e9a3bb8bc1 + + +code + + + + +dir_ae9a93452e2a84339148a16bcf2eb561 + + +math + + + + +dir_3ef7287b8e7a9ed45eff58e9a3bb8bc1->dir_ae9a93452e2a84339148a16bcf2eb561 + + + +1 + + + + +dir_c184e51c84f2c3f0345bbc8a0d75d3e1 + + +io + + + + +dir_3ef7287b8e7a9ed45eff58e9a3bb8bc1->dir_c184e51c84f2c3f0345bbc8a0d75d3e1 + + + +1 + + + + +dir_aebb8dcc11953d78e620bbef0b9e2183 + + +core + + + + +dir_3ef7287b8e7a9ed45eff58e9a3bb8bc1->dir_aebb8dcc11953d78e620bbef0b9e2183 + + + +1 + + + + +dir_ae9a93452e2a84339148a16bcf2eb561->dir_aebb8dcc11953d78e620bbef0b9e2183 + + + +3 + + + + +dir_c184e51c84f2c3f0345bbc8a0d75d3e1->dir_aebb8dcc11953d78e620bbef0b9e2183 + + + +3 + + + + +dir_aebb8dcc11953d78e620bbef0b9e2183->dir_ae9a93452e2a84339148a16bcf2eb561 + + + +1 + + + + +dir_aebb8dcc11953d78e620bbef0b9e2183->dir_c184e51c84f2c3f0345bbc8a0d75d3e1 + + + +1 + + + + + diff --git a/pip/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/pip/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html new file mode 100644 index 0000000..cc270c5 --- /dev/null +++ b/pip/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html @@ -0,0 +1,156 @@ + + + + + + +PIP: src Directory Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    src Directory Reference
    +
    +
    +
    + + Directory dependency graph for src:
    +
    +
    + + + + + + + + + + + + + + + + + + + +

    +Directories

    directory  _unsused
     
    directory  code
     
    directory  containers
     
    directory  core
     
    directory  io
     
    directory  math
     
    directory  system
     
    directory  thread
     
    + + + + + + + + + +

    +Files

    file  pip.h
     
    file  pip_export.h
     
    file  pip_version_str.h
     
    file  piversion.h
     
    +
    +
    + + + + diff --git a/pip/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba.js b/pip/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba.js new file mode 100644 index 0000000..25b553e --- /dev/null +++ b/pip/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba.js @@ -0,0 +1,10 @@ +var dir_68267d1309a1af8e8297ef4c3efbcdba = +[ + [ "code", "dir_3ef7287b8e7a9ed45eff58e9a3bb8bc1.html", "dir_3ef7287b8e7a9ed45eff58e9a3bb8bc1" ], + [ "containers", "dir_0b61c55142250c0cc363383afd8075a4.html", "dir_0b61c55142250c0cc363383afd8075a4" ], + [ "core", "dir_aebb8dcc11953d78e620bbef0b9e2183.html", "dir_aebb8dcc11953d78e620bbef0b9e2183" ], + [ "io", "dir_c184e51c84f2c3f0345bbc8a0d75d3e1.html", "dir_c184e51c84f2c3f0345bbc8a0d75d3e1" ], + [ "math", "dir_ae9a93452e2a84339148a16bcf2eb561.html", "dir_ae9a93452e2a84339148a16bcf2eb561" ], + [ "system", "dir_d501334aeb1b78ad67cd3c72c37b1e87.html", "dir_d501334aeb1b78ad67cd3c72c37b1e87" ], + [ "thread", "dir_bfedb72b9d87795234454f6223b9ab1e.html", "dir_bfedb72b9d87795234454f6223b9ab1e" ] +]; \ No newline at end of file diff --git a/pip/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.map b/pip/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.map new file mode 100644 index 0000000..c7806e4 --- /dev/null +++ b/pip/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.map @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pip/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.md5 b/pip/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.md5 new file mode 100644 index 0000000..e1792f3 --- /dev/null +++ b/pip/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.md5 @@ -0,0 +1 @@ +85aa1044293d8b9dc8c30197b927f9a6 \ No newline at end of file diff --git a/pip/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.svg b/pip/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.svg new file mode 100644 index 0000000..d8acf10 --- /dev/null +++ b/pip/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.svg @@ -0,0 +1,249 @@ + + + + + + +src + +clusterdir_68267d1309a1af8e8297ef4c3efbcdba + + + + + + +dir_68267d1309a1af8e8297ef4c3efbcdba +src + + +dir_3edb929655fe9d5ef5f6ec0f70ce278e + + +_unsused + + + + +dir_ae9a93452e2a84339148a16bcf2eb561 + + +math + + + + +dir_3edb929655fe9d5ef5f6ec0f70ce278e->dir_ae9a93452e2a84339148a16bcf2eb561 + + + +1 + + + + +dir_3ef7287b8e7a9ed45eff58e9a3bb8bc1 + + +code + + + + +dir_aebb8dcc11953d78e620bbef0b9e2183 + + +core + + + + +dir_3ef7287b8e7a9ed45eff58e9a3bb8bc1->dir_aebb8dcc11953d78e620bbef0b9e2183 + + + +1 + + + + +dir_c184e51c84f2c3f0345bbc8a0d75d3e1 + + +io + + + + +dir_3ef7287b8e7a9ed45eff58e9a3bb8bc1->dir_c184e51c84f2c3f0345bbc8a0d75d3e1 + + + +1 + + + + +dir_3ef7287b8e7a9ed45eff58e9a3bb8bc1->dir_ae9a93452e2a84339148a16bcf2eb561 + + + +1 + + + + +dir_0b61c55142250c0cc363383afd8075a4 + + +containers + + + + +dir_0b61c55142250c0cc363383afd8075a4->dir_aebb8dcc11953d78e620bbef0b9e2183 + + + +3 + + + + +dir_aebb8dcc11953d78e620bbef0b9e2183->dir_0b61c55142250c0cc363383afd8075a4 + + + +1 + + + + +dir_aebb8dcc11953d78e620bbef0b9e2183->dir_c184e51c84f2c3f0345bbc8a0d75d3e1 + + + +1 + + + + +dir_aebb8dcc11953d78e620bbef0b9e2183->dir_ae9a93452e2a84339148a16bcf2eb561 + + + +1 + + + + +dir_d501334aeb1b78ad67cd3c72c37b1e87 + + +system + + + + +dir_aebb8dcc11953d78e620bbef0b9e2183->dir_d501334aeb1b78ad67cd3c72c37b1e87 + + + +3 + + + + +dir_bfedb72b9d87795234454f6223b9ab1e + + +thread + + + + +dir_aebb8dcc11953d78e620bbef0b9e2183->dir_bfedb72b9d87795234454f6223b9ab1e + + + +1 + + + + +dir_c184e51c84f2c3f0345bbc8a0d75d3e1->dir_aebb8dcc11953d78e620bbef0b9e2183 + + + +3 + + + + +dir_c184e51c84f2c3f0345bbc8a0d75d3e1->dir_d501334aeb1b78ad67cd3c72c37b1e87 + + + +1 + + + + +dir_c184e51c84f2c3f0345bbc8a0d75d3e1->dir_bfedb72b9d87795234454f6223b9ab1e + + + +5 + + + + +dir_ae9a93452e2a84339148a16bcf2eb561->dir_aebb8dcc11953d78e620bbef0b9e2183 + + + +3 + + + + +dir_d501334aeb1b78ad67cd3c72c37b1e87->dir_0b61c55142250c0cc363383afd8075a4 + + + +1 + + + + +dir_d501334aeb1b78ad67cd3c72c37b1e87->dir_c184e51c84f2c3f0345bbc8a0d75d3e1 + + + +5 + + + + +dir_d501334aeb1b78ad67cd3c72c37b1e87->dir_bfedb72b9d87795234454f6223b9ab1e + + + +3 + + + + +dir_bfedb72b9d87795234454f6223b9ab1e->dir_aebb8dcc11953d78e620bbef0b9e2183 + + + +4 + + + + + diff --git a/pip/doc/html/dir_ae9a93452e2a84339148a16bcf2eb561.html b/pip/doc/html/dir_ae9a93452e2a84339148a16bcf2eb561.html new file mode 100644 index 0000000..ac1b719 --- /dev/null +++ b/pip/doc/html/dir_ae9a93452e2a84339148a16bcf2eb561.html @@ -0,0 +1,142 @@ + + + + + + +PIP: src/math Directory Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    math Directory Reference
    +
    +
    +
    + + Directory dependency graph for math:
    +
    +
    + + + + + + + + + + + + + + + + +

    +Files

    file  picrc.h
     CRC checksum calculator.
     
    file  pievaluator.cpp
     
    file  pievaluator.h
     Mathematic expressions calculator.
     
    file  pimath.cpp
     
    file  pimath.h
     Many mathematical functions and classes.
     
    +
    +
    + + + + diff --git a/pip/doc/html/dir_ae9a93452e2a84339148a16bcf2eb561.js b/pip/doc/html/dir_ae9a93452e2a84339148a16bcf2eb561.js new file mode 100644 index 0000000..71c7051 --- /dev/null +++ b/pip/doc/html/dir_ae9a93452e2a84339148a16bcf2eb561.js @@ -0,0 +1,6 @@ +var dir_ae9a93452e2a84339148a16bcf2eb561 = +[ + [ "picrc.h", "picrc_8h.html", null ], + [ "pievaluator.h", "pievaluator_8h.html", "pievaluator_8h" ], + [ "pimath.h", "pimath_8h.html", "pimath_8h" ] +]; \ No newline at end of file diff --git a/pip/doc/html/dir_ae9a93452e2a84339148a16bcf2eb561_dep.map b/pip/doc/html/dir_ae9a93452e2a84339148a16bcf2eb561_dep.map new file mode 100644 index 0000000..9a019e8 --- /dev/null +++ b/pip/doc/html/dir_ae9a93452e2a84339148a16bcf2eb561_dep.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/pip/doc/html/dir_ae9a93452e2a84339148a16bcf2eb561_dep.md5 b/pip/doc/html/dir_ae9a93452e2a84339148a16bcf2eb561_dep.md5 new file mode 100644 index 0000000..73edcd6 --- /dev/null +++ b/pip/doc/html/dir_ae9a93452e2a84339148a16bcf2eb561_dep.md5 @@ -0,0 +1 @@ +088d073675f5080b5b7de0d38b461cfc \ No newline at end of file diff --git a/pip/doc/html/dir_ae9a93452e2a84339148a16bcf2eb561_dep.svg b/pip/doc/html/dir_ae9a93452e2a84339148a16bcf2eb561_dep.svg new file mode 100644 index 0000000..2d540aa --- /dev/null +++ b/pip/doc/html/dir_ae9a93452e2a84339148a16bcf2eb561_dep.svg @@ -0,0 +1,54 @@ + + + + + + +src/math + +clusterdir_68267d1309a1af8e8297ef4c3efbcdba + + +src + + + + +dir_ae9a93452e2a84339148a16bcf2eb561 + + +math + + + + +dir_aebb8dcc11953d78e620bbef0b9e2183 + + +core + + + + +dir_ae9a93452e2a84339148a16bcf2eb561->dir_aebb8dcc11953d78e620bbef0b9e2183 + + + +3 + + + + +dir_aebb8dcc11953d78e620bbef0b9e2183->dir_ae9a93452e2a84339148a16bcf2eb561 + + + +1 + + + + + diff --git a/pip/doc/html/dir_aebb8dcc11953d78e620bbef0b9e2183.html b/pip/doc/html/dir_aebb8dcc11953d78e620bbef0b9e2183.html new file mode 100644 index 0000000..5d0299d --- /dev/null +++ b/pip/doc/html/dir_aebb8dcc11953d78e620bbef0b9e2183.html @@ -0,0 +1,182 @@ + + + + + + +PIP: src/core Directory Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    core Directory Reference
    +
    +
    +
    + + Directory dependency graph for core:
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Files

    file  pibitarray.h
     
    file  pibytearray.cpp
     
    file  pibytearray.h
     Byte array.
     
    file  pichar.h
     Unicode char.
     
    file  picli.cpp
     
    file  picli.h
     Command-Line parser.
     
    file  picollection.cpp
     
    file  picollection.h
     Custom elements collection.
     
    file  piincludes.cpp
     
    file  piincludes.h
     Global includes of PIP.
     
    file  piinit.cpp
     
    file  piinit.h
     Initialization.
     
    file  piobject.cpp
     
    file  piobject.h
     Base object.
     
    file  pistatemachine.h
     Base class for custom state machine.
     
    file  pistring.cpp
     
    file  pistring.h
     String.
     
    file  pitime.cpp
     
    file  pitime.h
     Time structs.
     
    file  pivariant.cpp
     
    file  pivariant.h
     Variant type.
     
    +
    +
    + + + + diff --git a/pip/doc/html/dir_aebb8dcc11953d78e620bbef0b9e2183.js b/pip/doc/html/dir_aebb8dcc11953d78e620bbef0b9e2183.js new file mode 100644 index 0000000..696a083 --- /dev/null +++ b/pip/doc/html/dir_aebb8dcc11953d78e620bbef0b9e2183.js @@ -0,0 +1,20 @@ +var dir_aebb8dcc11953d78e620bbef0b9e2183 = +[ + [ "pibytearray.h", "pibytearray_8h.html", "pibytearray_8h" ], + [ "pichar.h", "pichar_8h.html", "pichar_8h" ], + [ "picli.h", "picli_8h.html", [ + [ "PICLI", "class_p_i_c_l_i.html", "class_p_i_c_l_i" ] + ] ], + [ "picollection.h", "picollection_8h.html", "picollection_8h" ], + [ "piincludes.h", "piincludes_8h.html", "piincludes_8h" ], + [ "piinit.h", "piinit_8h.html", null ], + [ "piobject.h", "piobject_8h.html", "piobject_8h" ], + [ "pistatemachine.h", "pistatemachine_8h.html", [ + [ "PIStateMachine", "class_p_i_state_machine.html", "class_p_i_state_machine" ], + [ "Rule", "struct_p_i_state_machine_1_1_rule.html", "struct_p_i_state_machine_1_1_rule" ], + [ "State", "struct_p_i_state_machine_1_1_state.html", "struct_p_i_state_machine_1_1_state" ] + ] ], + [ "pistring.h", "pistring_8h.html", "pistring_8h" ], + [ "pitime.h", "pitime_8h.html", "pitime_8h" ], + [ "pivariant.h", "pivariant_8h.html", "pivariant_8h" ] +]; \ No newline at end of file diff --git a/pip/doc/html/dir_aebb8dcc11953d78e620bbef0b9e2183_dep.map b/pip/doc/html/dir_aebb8dcc11953d78e620bbef0b9e2183_dep.map new file mode 100644 index 0000000..0f4117d --- /dev/null +++ b/pip/doc/html/dir_aebb8dcc11953d78e620bbef0b9e2183_dep.map @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pip/doc/html/dir_aebb8dcc11953d78e620bbef0b9e2183_dep.md5 b/pip/doc/html/dir_aebb8dcc11953d78e620bbef0b9e2183_dep.md5 new file mode 100644 index 0000000..3f45b07 --- /dev/null +++ b/pip/doc/html/dir_aebb8dcc11953d78e620bbef0b9e2183_dep.md5 @@ -0,0 +1 @@ +d25cf8afa3006ecfc0f8ae147b5d078e \ No newline at end of file diff --git a/pip/doc/html/dir_aebb8dcc11953d78e620bbef0b9e2183_dep.svg b/pip/doc/html/dir_aebb8dcc11953d78e620bbef0b9e2183_dep.svg new file mode 100644 index 0000000..8a5edbe --- /dev/null +++ b/pip/doc/html/dir_aebb8dcc11953d78e620bbef0b9e2183_dep.svg @@ -0,0 +1,194 @@ + + + + + + +src/core + +clusterdir_68267d1309a1af8e8297ef4c3efbcdba + + +src + + + + +dir_aebb8dcc11953d78e620bbef0b9e2183 + + +core + + + + +dir_d501334aeb1b78ad67cd3c72c37b1e87 + + +system + + + + +dir_aebb8dcc11953d78e620bbef0b9e2183->dir_d501334aeb1b78ad67cd3c72c37b1e87 + + + +3 + + + + +dir_ae9a93452e2a84339148a16bcf2eb561 + + +math + + + + +dir_aebb8dcc11953d78e620bbef0b9e2183->dir_ae9a93452e2a84339148a16bcf2eb561 + + + +1 + + + + +dir_0b61c55142250c0cc363383afd8075a4 + + +containers + + + + +dir_aebb8dcc11953d78e620bbef0b9e2183->dir_0b61c55142250c0cc363383afd8075a4 + + + +1 + + + + +dir_bfedb72b9d87795234454f6223b9ab1e + + +thread + + + + +dir_aebb8dcc11953d78e620bbef0b9e2183->dir_bfedb72b9d87795234454f6223b9ab1e + + + +1 + + + + +dir_c184e51c84f2c3f0345bbc8a0d75d3e1 + + +io + + + + +dir_aebb8dcc11953d78e620bbef0b9e2183->dir_c184e51c84f2c3f0345bbc8a0d75d3e1 + + + +1 + + + + +dir_d501334aeb1b78ad67cd3c72c37b1e87->dir_0b61c55142250c0cc363383afd8075a4 + + + +1 + + + + +dir_d501334aeb1b78ad67cd3c72c37b1e87->dir_bfedb72b9d87795234454f6223b9ab1e + + + +3 + + + + +dir_d501334aeb1b78ad67cd3c72c37b1e87->dir_c184e51c84f2c3f0345bbc8a0d75d3e1 + + + +5 + + + + +dir_ae9a93452e2a84339148a16bcf2eb561->dir_aebb8dcc11953d78e620bbef0b9e2183 + + + +3 + + + + +dir_0b61c55142250c0cc363383afd8075a4->dir_aebb8dcc11953d78e620bbef0b9e2183 + + + +3 + + + + +dir_bfedb72b9d87795234454f6223b9ab1e->dir_aebb8dcc11953d78e620bbef0b9e2183 + + + +4 + + + + +dir_c184e51c84f2c3f0345bbc8a0d75d3e1->dir_aebb8dcc11953d78e620bbef0b9e2183 + + + +3 + + + + +dir_c184e51c84f2c3f0345bbc8a0d75d3e1->dir_d501334aeb1b78ad67cd3c72c37b1e87 + + + +1 + + + + +dir_c184e51c84f2c3f0345bbc8a0d75d3e1->dir_bfedb72b9d87795234454f6223b9ab1e + + + +5 + + + + + diff --git a/pip/doc/html/dir_bfedb72b9d87795234454f6223b9ab1e.html b/pip/doc/html/dir_bfedb72b9d87795234454f6223b9ab1e.html new file mode 100644 index 0000000..96a5d64 --- /dev/null +++ b/pip/doc/html/dir_bfedb72b9d87795234454f6223b9ab1e.html @@ -0,0 +1,144 @@ + + + + + + +PIP: src/thread Directory Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    thread Directory Reference
    +
    +
    +
    + + Directory dependency graph for thread:
    +
    +
    + + + + + + + + + + + + + + + + + + +

    +Files

    file  pimutex.cpp
     
    file  pimutex.h
     Mutex.
     
    file  pithread.cpp
     
    file  pithread.h
     Thread.
     
    file  pitimer.cpp
     
    file  pitimer.h
     Timer.
     
    +
    +
    + + + + diff --git a/pip/doc/html/dir_bfedb72b9d87795234454f6223b9ab1e.js b/pip/doc/html/dir_bfedb72b9d87795234454f6223b9ab1e.js new file mode 100644 index 0000000..a5c1e04 --- /dev/null +++ b/pip/doc/html/dir_bfedb72b9d87795234454f6223b9ab1e.js @@ -0,0 +1,8 @@ +var dir_bfedb72b9d87795234454f6223b9ab1e = +[ + [ "pimutex.h", "pimutex_8h.html", [ + [ "PIMutex", "class_p_i_mutex.html", "class_p_i_mutex" ] + ] ], + [ "pithread.h", "pithread_8h.html", "pithread_8h" ], + [ "pitimer.h", "pitimer_8h.html", "pitimer_8h" ] +]; \ No newline at end of file diff --git a/pip/doc/html/dir_bfedb72b9d87795234454f6223b9ab1e_dep.map b/pip/doc/html/dir_bfedb72b9d87795234454f6223b9ab1e_dep.map new file mode 100644 index 0000000..e972c6a --- /dev/null +++ b/pip/doc/html/dir_bfedb72b9d87795234454f6223b9ab1e_dep.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/pip/doc/html/dir_bfedb72b9d87795234454f6223b9ab1e_dep.md5 b/pip/doc/html/dir_bfedb72b9d87795234454f6223b9ab1e_dep.md5 new file mode 100644 index 0000000..cb4cc1b --- /dev/null +++ b/pip/doc/html/dir_bfedb72b9d87795234454f6223b9ab1e_dep.md5 @@ -0,0 +1 @@ +801623d2df11acc4320bd75f0be17fc6 \ No newline at end of file diff --git a/pip/doc/html/dir_bfedb72b9d87795234454f6223b9ab1e_dep.svg b/pip/doc/html/dir_bfedb72b9d87795234454f6223b9ab1e_dep.svg new file mode 100644 index 0000000..54125f8 --- /dev/null +++ b/pip/doc/html/dir_bfedb72b9d87795234454f6223b9ab1e_dep.svg @@ -0,0 +1,54 @@ + + + + + + +src/thread + +clusterdir_68267d1309a1af8e8297ef4c3efbcdba + + +src + + + + +dir_bfedb72b9d87795234454f6223b9ab1e + + +thread + + + + +dir_aebb8dcc11953d78e620bbef0b9e2183 + + +core + + + + +dir_bfedb72b9d87795234454f6223b9ab1e->dir_aebb8dcc11953d78e620bbef0b9e2183 + + + +4 + + + + +dir_aebb8dcc11953d78e620bbef0b9e2183->dir_bfedb72b9d87795234454f6223b9ab1e + + + +1 + + + + + diff --git a/pip/doc/html/dir_c184e51c84f2c3f0345bbc8a0d75d3e1.html b/pip/doc/html/dir_c184e51c84f2c3f0345bbc8a0d75d3e1.html new file mode 100644 index 0000000..0b9b22f --- /dev/null +++ b/pip/doc/html/dir_c184e51c84f2c3f0345bbc8a0d75d3e1.html @@ -0,0 +1,197 @@ + + + + + + +PIP: src/io Directory Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    io Directory Reference
    +
    +
    +
    + + Directory dependency graph for io:
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Files

    file  pibinarylog.cpp
     
    file  pibinarylog.h
     Binary log.
     
    file  piconfig.cpp
     
    file  piconfig.h
     Configuration file.
     
    file  piconnection.cpp
     
    file  piconnection.h
     Complex I/O point.
     
    file  pidiagnostics.cpp
     
    file  pidiagnostics.h
     Connection quality diagnostics.
     
    file  pidir.cpp
     
    file  pidir.h
     
    file  piethernet.cpp
     
    file  piethernet.h
     Ethernet device.
     
    file  pifile.cpp
     
    file  pifile.h
     Local file.
     
    file  piiodevice.cpp
     
    file  piiodevice.h
     Abstract input/output device.
     
    file  pimultiprotocol.cpp
     
    file  pimultiprotocol.h
     
    file  pipacketextractor.cpp
     
    file  pipacketextractor.h
     Packets extractor.
     
    file  pipeer.cpp
     
    file  pipeer.h
     Peering net node.
     
    file  piprotocol.cpp
     
    file  piprotocol.h
     Highly configurable from file I/O channel.
     
    file  piserial.cpp
     
    file  piserial.h
     Serial device.
     
    file  piusb.cpp
     
    file  piusb.h
     USB device.
     
    +
    +
    + + + + diff --git a/pip/doc/html/dir_c184e51c84f2c3f0345bbc8a0d75d3e1.js b/pip/doc/html/dir_c184e51c84f2c3f0345bbc8a0d75d3e1.js new file mode 100644 index 0000000..8ea540a --- /dev/null +++ b/pip/doc/html/dir_c184e51c84f2c3f0345bbc8a0d75d3e1.js @@ -0,0 +1,19 @@ +var dir_c184e51c84f2c3f0345bbc8a0d75d3e1 = +[ + [ "pibinarylog.h", "pibinarylog_8h.html", "pibinarylog_8h" ], + [ "piconfig.h", "piconfig_8h.html", "piconfig_8h" ], + [ "piconnection.h", "piconnection_8h.html", "piconnection_8h" ], + [ "pidiagnostics.h", "pidiagnostics_8h.html", [ + [ "PIDiagnostics", "class_p_i_diagnostics.html", "class_p_i_diagnostics" ] + ] ], + [ "piethernet.h", "piethernet_8h.html", "piethernet_8h" ], + [ "pifile.h", "pifile_8h.html", [ + [ "PIFile", "class_p_i_file.html", "class_p_i_file" ] + ] ], + [ "piiodevice.h", "piiodevice_8h.html", "piiodevice_8h" ], + [ "pipacketextractor.h", "pipacketextractor_8h.html", "pipacketextractor_8h" ], + [ "pipeer.h", "pipeer_8h.html", null ], + [ "piprotocol.h", "piprotocol_8h.html", "piprotocol_8h" ], + [ "piserial.h", "piserial_8h.html", "piserial_8h" ], + [ "piusb.h", "piusb_8h.html", null ] +]; \ No newline at end of file diff --git a/pip/doc/html/dir_c184e51c84f2c3f0345bbc8a0d75d3e1_dep.map b/pip/doc/html/dir_c184e51c84f2c3f0345bbc8a0d75d3e1_dep.map new file mode 100644 index 0000000..b3ea941 --- /dev/null +++ b/pip/doc/html/dir_c184e51c84f2c3f0345bbc8a0d75d3e1_dep.map @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/pip/doc/html/dir_c184e51c84f2c3f0345bbc8a0d75d3e1_dep.md5 b/pip/doc/html/dir_c184e51c84f2c3f0345bbc8a0d75d3e1_dep.md5 new file mode 100644 index 0000000..1c750ff --- /dev/null +++ b/pip/doc/html/dir_c184e51c84f2c3f0345bbc8a0d75d3e1_dep.md5 @@ -0,0 +1 @@ +2d80bead2b53cdd8c096995a032579cc \ No newline at end of file diff --git a/pip/doc/html/dir_c184e51c84f2c3f0345bbc8a0d75d3e1_dep.svg b/pip/doc/html/dir_c184e51c84f2c3f0345bbc8a0d75d3e1_dep.svg new file mode 100644 index 0000000..c1ae5c4 --- /dev/null +++ b/pip/doc/html/dir_c184e51c84f2c3f0345bbc8a0d75d3e1_dep.svg @@ -0,0 +1,133 @@ + + + + + + +src/io + +clusterdir_68267d1309a1af8e8297ef4c3efbcdba + + +src + + + + +dir_c184e51c84f2c3f0345bbc8a0d75d3e1 + + +io + + + + +dir_d501334aeb1b78ad67cd3c72c37b1e87 + + +system + + + + +dir_c184e51c84f2c3f0345bbc8a0d75d3e1->dir_d501334aeb1b78ad67cd3c72c37b1e87 + + + +1 + + + + +dir_bfedb72b9d87795234454f6223b9ab1e + + +thread + + + + +dir_c184e51c84f2c3f0345bbc8a0d75d3e1->dir_bfedb72b9d87795234454f6223b9ab1e + + + +5 + + + + +dir_aebb8dcc11953d78e620bbef0b9e2183 + + +core + + + + +dir_c184e51c84f2c3f0345bbc8a0d75d3e1->dir_aebb8dcc11953d78e620bbef0b9e2183 + + + +3 + + + + +dir_d501334aeb1b78ad67cd3c72c37b1e87->dir_c184e51c84f2c3f0345bbc8a0d75d3e1 + + + +5 + + + + +dir_d501334aeb1b78ad67cd3c72c37b1e87->dir_bfedb72b9d87795234454f6223b9ab1e + + + +3 + + + + +dir_bfedb72b9d87795234454f6223b9ab1e->dir_aebb8dcc11953d78e620bbef0b9e2183 + + + +4 + + + + +dir_aebb8dcc11953d78e620bbef0b9e2183->dir_c184e51c84f2c3f0345bbc8a0d75d3e1 + + + +1 + + + + +dir_aebb8dcc11953d78e620bbef0b9e2183->dir_d501334aeb1b78ad67cd3c72c37b1e87 + + + +3 + + + + +dir_aebb8dcc11953d78e620bbef0b9e2183->dir_bfedb72b9d87795234454f6223b9ab1e + + + +1 + + + + + diff --git a/pip/doc/html/dir_d501334aeb1b78ad67cd3c72c37b1e87.html b/pip/doc/html/dir_d501334aeb1b78ad67cd3c72c37b1e87.html new file mode 100644 index 0000000..548001a --- /dev/null +++ b/pip/doc/html/dir_d501334aeb1b78ad67cd3c72c37b1e87.html @@ -0,0 +1,165 @@ + + + + + + +PIP: src/system Directory Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    system Directory Reference
    +
    +
    +
    + + Directory dependency graph for system:
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Files

    file  picodec.cpp
     
    file  picodec.h
     
    file  piconsole.cpp
     
    file  piconsole.h
     Console output class.
     
    file  pikbdlistener.cpp
     
    file  pikbdlistener.h
     Keyboard console input listener.
     
    file  pimonitor.cpp
     
    file  pimonitor.h
     
    file  piprocess.cpp
     
    file  piprocess.h
     Process.
     
    file  pisignals.cpp
     
    file  pisignals.h
     System signals.
     
    file  pisystemmonitor.cpp
     
    file  pisystemmonitor.h
     
    file  pisystemtests.cpp
     
    file  pisystemtests.h
     
    +
    +
    + + + + diff --git a/pip/doc/html/dir_d501334aeb1b78ad67cd3c72c37b1e87.js b/pip/doc/html/dir_d501334aeb1b78ad67cd3c72c37b1e87.js new file mode 100644 index 0000000..b7e02d0 --- /dev/null +++ b/pip/doc/html/dir_d501334aeb1b78ad67cd3c72c37b1e87.js @@ -0,0 +1,9 @@ +var dir_d501334aeb1b78ad67cd3c72c37b1e87 = +[ + [ "piconsole.h", "piconsole_8h.html", "piconsole_8h" ], + [ "pikbdlistener.h", "pikbdlistener_8h.html", "pikbdlistener_8h" ], + [ "piprocess.h", "piprocess_8h.html", [ + [ "PIProcess", "class_p_i_process.html", null ] + ] ], + [ "pisignals.h", "pisignals_8h.html", null ] +]; \ No newline at end of file diff --git a/pip/doc/html/dir_d501334aeb1b78ad67cd3c72c37b1e87_dep.map b/pip/doc/html/dir_d501334aeb1b78ad67cd3c72c37b1e87_dep.map new file mode 100644 index 0000000..50cac61 --- /dev/null +++ b/pip/doc/html/dir_d501334aeb1b78ad67cd3c72c37b1e87_dep.map @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/pip/doc/html/dir_d501334aeb1b78ad67cd3c72c37b1e87_dep.md5 b/pip/doc/html/dir_d501334aeb1b78ad67cd3c72c37b1e87_dep.md5 new file mode 100644 index 0000000..6027df1 --- /dev/null +++ b/pip/doc/html/dir_d501334aeb1b78ad67cd3c72c37b1e87_dep.md5 @@ -0,0 +1 @@ +0497c31ad78dd66106d0ebfb6a6dec58 \ No newline at end of file diff --git a/pip/doc/html/dir_d501334aeb1b78ad67cd3c72c37b1e87_dep.svg b/pip/doc/html/dir_d501334aeb1b78ad67cd3c72c37b1e87_dep.svg new file mode 100644 index 0000000..6a2b22c --- /dev/null +++ b/pip/doc/html/dir_d501334aeb1b78ad67cd3c72c37b1e87_dep.svg @@ -0,0 +1,97 @@ + + + + + + +src/system + +clusterdir_68267d1309a1af8e8297ef4c3efbcdba + + +src + + + + +dir_d501334aeb1b78ad67cd3c72c37b1e87 + + +system + + + + +dir_0b61c55142250c0cc363383afd8075a4 + + +containers + + + + +dir_d501334aeb1b78ad67cd3c72c37b1e87->dir_0b61c55142250c0cc363383afd8075a4 + + + +1 + + + + +dir_bfedb72b9d87795234454f6223b9ab1e + + +thread + + + + +dir_d501334aeb1b78ad67cd3c72c37b1e87->dir_bfedb72b9d87795234454f6223b9ab1e + + + +3 + + + + +dir_c184e51c84f2c3f0345bbc8a0d75d3e1 + + +io + + + + +dir_d501334aeb1b78ad67cd3c72c37b1e87->dir_c184e51c84f2c3f0345bbc8a0d75d3e1 + + + +5 + + + + +dir_c184e51c84f2c3f0345bbc8a0d75d3e1->dir_d501334aeb1b78ad67cd3c72c37b1e87 + + + +1 + + + + +dir_c184e51c84f2c3f0345bbc8a0d75d3e1->dir_bfedb72b9d87795234454f6223b9ab1e + + + +5 + + + + + diff --git a/pip/doc/html/doxygen.css b/pip/doc/html/doxygen.css new file mode 100644 index 0000000..80c1a4f --- /dev/null +++ b/pip/doc/html/doxygen.css @@ -0,0 +1,1440 @@ +/* The standard CSS for doxygen 1.8.8 */ + +body, table, div, p, dl { + 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 #9994C6; + color: #47417B; + 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; +} + +div.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +/* @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: #EEEEF6; + border: 1px solid #B1ADD4; + text-align: center; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a { + color: #50498C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #5C54A0; +} + +a:hover { + text-decoration: underline; +} + +a.qindex { + font-weight: bold; +} + +a.qindexHL { + font-weight: bold; + background-color: #ABA7D0; + color: #ffffff; + border: 1px double #9893C6; +} + +.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; +} + +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: 4px 6px; + margin: 4px 8px 4px 2px; + background-color: #FCFCFD; + border: 1px solid #CDCBE3; +} + +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.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; +} + +div.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); +} + +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: #EEEEF6; + font-weight: bold; + border: 1px solid #CDCBE3; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EEEEF6; + border: 1px solid #CDCBE3; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #F0F0F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl { + 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: #F8F8FB; + border-left: 2px solid #ABA7D0; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @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 #B1ADD4; +} + +th.dirtab { + background: #EEEEF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #6058A7; +} + +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: #FAFAFC; + 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 { + width: 100%; +} + +.memTemplParams { + color: #5C54A0; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtemplate { + font-size: 80%; + color: #5C54A0; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EEEEF6; + border: 1px solid #B1ADD4; + 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: bold; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #B5B2D6; + border-left: 1px solid #B5B2D6; + border-right: 1px solid #B5B2D6; + padding: 6px 0px 6px 0px; + color: #322E57; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E7E6F1; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + border-top-left-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + -moz-border-radius-topleft: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + -webkit-border-top-left-radius: 4px; + +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #B5B2D6; + border-left: 1px solid #B5B2D6; + border-right: 1px solid #B5B2D6; + padding: 6px 10px 2px 10px; + background-color: #FCFCFD; + 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 { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .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: #8781BC; + border-top:1px solid #6C65AD; + border-left:1px solid #6C65AD; + border-right:1px solid #CDCBE3; + border-bottom:1px solid #CDCBE3; + 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 #ABA7D0; + border-bottom: 1px solid #ABA7D0; + 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: #F8F8FB; +} + +.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: #50498C; +} + +.arrow { + color: #ABA7D0; + -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: #8781BC; + 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('ftv2folderopen.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('ftv2folderclosed.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('ftv2doc.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: #393463; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #3C3769; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #494380; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + /*width: 100%;*/ + margin-bottom: 10px; + border: 1px solid #B5B2D6; + 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 #B5B2D6; + border-bottom: 1px solid #B5B2D6; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #B5B2D6; + /*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: #E7E6F1; + font-size: 90%; + color: #322E57; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + -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 #B5B2D6; +} + + +.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:#9B96C8; + border:solid 1px #CBC9E2; + 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:#47427D; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #36325F; + 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:#7E78B7; +} + +.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:#47427D; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +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: #FAFAFC; + margin: 0px; + border-bottom: 1px solid #CDCBE3; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +dl +{ + padding: 0 0 0 10px; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */ +dl.section +{ + margin-left: 0px; + padding-left: 0px; +} + +dl.note +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention +{ + margin-left:-7px; + padding-left: 3px; + border-left: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.deprecated +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #505050; +} + +dl.todo +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00C0E0; +} + +dl.test +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #3030E0; +} + +dl.bug +{ + margin-left:-7px; + padding-left: 3px; + border-left: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; +} + +#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 #6C65AD; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #A19CCB; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#443E76; + 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: #F6F6FA; + border: 1px solid #DEDDED; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 20px 10px 10px; + width: 200px; +} + +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; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #5C54A0; + 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; +} + +.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; + } +} + diff --git a/pip/doc/html/doxygen.png b/pip/doc/html/doxygen.png new file mode 100644 index 0000000000000000000000000000000000000000..4cfa4898ccbb20c79a6d4dc76d55316b3e3d9959 GIT binary patch literal 3839 zcmV+W%?H3in+KKr{o*K=R*``oAJe(vA%-1onA zDl01i;3WaT3rH3K@R9)F#iTl2It~MX=OHBk`OE=;mjnQRoQluy0e~8*E&x0S#rEhn z&R5PjRhXVgpMcsn0DzYS0Dp|07a-rQ88ZM#)1gy30~P=PF9`ttJ@mW);px+-08oW$ z;sd}-0)S_eg@pwG)JXpVK$QScg=*phz)J#vXHzZsR11(Lk(x+pSm*yM0Cn%?&bA67 zTLbG7`#4>wPd3xzeVhTv=SkALW2R?}!#LQV(Ra0W)%hlQPBn3|Z`Ng>8P)i{M0U&r z023m6m0=G)t8wrid{&daYKZAJ>E%0g8qP7WFW#5;N~XRpl`8H1HU*`Zdv`ow|_^%k!wWNK@ z?ArAMAkEUthgr{+bP5bUW4k-P$GuJ*<+n=EqFF}((lppvk=>n|e3RUr)N4p65;yAW%+p8wf5(y-szsms%v~NE!c>SiiXw59!e)dwb$(b>Gh_X+= zcA{?j)}B}q73xbq{n_WpVRL+!tsEiBf4NtI(Ie+z?uXtOHnOwG*J-QU3^87;Iv1jFJ7z&#u!RB)^3!gJ1ESVG&c|(6uE1 zm=OB`2GM@~RNBZW740{I&dMM;GdRhq(?#99!Ckq#t3iP{7IDr13-1;>N18u^@+x`YT=l+IW3G1_c{R7NWa{BgbyZ#;m7i#NxY^# z(=xNyn%D)*%tGFY4N>GX*xcugsT)vGloj>vUuFk~X@`sa@6MLP%WFpd(c?SaC@%f# z)oYZlZf!+*SjZmi-WTUjzfLoK7Wqz})f)h6rRbI4AZ>>(l>F+*uQ!1cpOE5j5)FzDSfy)UDZuZF%8{@(SNNal?}jdpEkxPTBUca<6p)jf zm+4ME!d;!cf}`Wcn(XW484m5rKoh%^#A8^WqD`dVrF@z897q5l&G$SO;-?$MjwCBG zmkl2>6TdttcWn8VLs4dSBmimd-&2AeX@`aX>Ap(H&k?ig8*Kl3bSTBDqgZoOQW6yM zm}XAfh%?1IxnJD2Z`WVBF3BH_W#CPjsKdp}hurA5$=eQN^a&fdI!c4jT732=;Wf(b zWHDPA0V+z{w!zk>we)(Hh3>_^uRe>SUw)$cZx3@>mBxU6+}9u+Iz4N-^h$ntgbAv- zxc}=-KVCO%&^&&7#u_wgBn2>T>>?qVaXcpP%=Q|%|v$f${hh5Dr4@{Z*tF``O)NcvOW)f zLCUV3-Sx5YUZUvu(W_VxqTxfi8(0tb=WGWc&7sN({0SZF@nM92P=ArXHu?~(v*KiM&20goHj?F0S5uA+0O@OrO#sNT)4Tdl*Gk4G zj$Or~(0L{R{bO$$0BMdGCiMBx(Ie+Z%ns})^5bF-W7n5!LP=jpKIv&{(=q7jmq)Bp z_UtVM$**VHR1GJ%GwEJ2+kfqxS&P*ks;(k0b>j(mdiNC9*%@cC?z4}R$=1I*{~!5p zLecr%?j+B7R-6owxh(+HMzTEWYRa(@pqgUi5=W1Tp5GJc`8|Cqy=}3?$>j1;Np(Oj zZ*1B2iH7(A0OT_#FZY6a*2t?V&gyJaH=X3T0N`1~;0Vp7wj7)LXMJOdvu)A5Q&CdN5&+U1 zGx`JmP+`YCenC5TZ3ZAsgWTPrBRx;u6p^2Q;u<&49MTtFAL*rPf|jWUzGElqEYN&` z;*ve?q?1GPF|>bL^y>L&*ib50@)5ph7fznp9!2^lWsYpiQnw^qR%dtr{v&w4uf9Vz zT;5n$<34;&gzucbRbn+H(s|N&jcW1~g(y#4cLe%9>-Yu1+_vocJ;V8K^ksH2 z)~9HbN#Ea~tE6-2&CkJm{ge6uH|PO_rAs8s0RxorR*LqQWY36*NK70*1M+xIpS*^M$c22_3?Swb09vHeCRk= zs*hM9y&&Uxi~xl$j8w{PLl=C3a~JlD068^pYJYS^)I3V2^b(|mKd!=`JZZWSptf{t z&V__5fPKei08k@cEV%`(b_KtL&U~rc+PG*}>ShCw=6p>Yu3S6rM?T}1M=nLnRt-g2 zO2RSh`|7jAt!XJ@KcYB_Vq#X?%Jn#2AD>xwNKYtlGF@-lGk!_9PqpXd_~d6W>=#OY zbY$C>SixQ&1gl4k>H+|@lF^<4>SRAeAHLjElojNcLA!F12vErURp|^f~U{yV-o!7{Oj0|vJo+B76Opw2cBvHpv|et{O{eMev|ldsu>tIl5-CL zrnL9Vb4brf!mkf+`_VFs^vgbuU;w1Dx-sb(_8&}0B%cA~Gq8wgCQUxFZq-IU*g1dJcDlBf^Dn~(47MGO^92fxkOe6}}^m&r7@R~Y92%hZK z_U-#qPpW6=9~HRx{UO}CU7E}`q+ejr4>b6cpOSqpCLN)Kkxp!N`;uIEK_s`O{fa(~ z4FMp{^J$ z(pUHDF=eflwIzy+&!FVeL4i*o!>Q{~$o=q`?KhuaycPN4GXOvpBA*KSG?C?_%B28+ zn#k3y9RSow0zma%Z=6d1()$B|7oX-ndUXG9^MjYQYj4+7WbVp1i@gVuP`7S9zLA57 z#KQmh@q?HFZqw&Xo}zda0G>rMKm1Zg5RC_bKasZNpV{GA*SPBD-~l`P769if76?czWSk&E5%XV}ovAh|__gC{)|MuH|yS@H;BbSPbdm{hU z*XnZ~sNq}U?!9Zl-0z7r0|CHG0)Q8UECApo0lR}l zDizgQdn&3mi5u7Bm9lhu1N^mKUry#M)hhAti{f~Hyh45byp|mm)#hEq*BYvju)TP3 zgZ%{s=?$HmXmX+=#SX){eS>avr&ly{ztM*2Q2c699O%KXkP*67H zGTJ~zb&%@9+0*Jb$Ui!r-Q+b_-;9g;?bbRkwdd&R%jT{3o&;|s?>zf+>hzO4=G8G? zU&!^c<9B2po@L7kXn7i+?Z>9kB;qfv&X%aV{SnL2qlaAkS61c(+-vx1c>TrQy3$*n z{X|U^YlUZP=ex!_Liasn^ZJdrm>1tZ8xS{6b@R?P;;&OuxD;GW)LP=Nog&1aRMZEE zKmYoP^Ml0yP#yjAX8!Icp46`)zC~HHTqSmln>*cEMa7S&al?zK`o=~M^N!ax^n8Cb z(9+Q{^!4{&=G{eglWch9$`b=a!>Md`%kyVdn&vO?1|QdsQsy_JqcS}&CMK4t6n64z zx%??LywinJk7dTP@^Zneg4n2`rI)JI;b#x;2#_`6j$=A?=BlCLGb1xIXAN3u>a0H+ zc8aWBdwah=1Jw&b0kejqH60yGiW;>_a}2+3$@ImaxAFh*uK#Xb{(c$%T9<$SkvD_x zNT?~>{rK@?XOrhe_JCsgo|Bt4Z)R{B?U=uFaHEu}s;Vb$C+r^Y>h2n6qZvQJk&CnA zNBqvOQ&UsRFsSg!_h(TM;dPt)X=L;`D#fOwz#+MNAkuS1%gwDQ5pNJF;hrh6x-`jb z*`6DqX{3`Qz(mFK!fLTQMT_rqW#zH%iVD`2ii!a>aq;5A`cynO_fkEnFRpK*d)=_7 z%QU%6BB^ubVRS-JU|`F5Q=*!IL4Z%UC8mi+?* zLQ2Jo&Znm<{aJltWPJ5_?E2;B7p8|bH{Uw=qdm`h<~ff+$y{F$>0D@NXt%4%Q~R6K zvBu?30s@RYhg(u54jnqAX5Ceke}s+g<9+wDTMn+La`4sWQaN;2>NANwAntr@18u&J z#1sE)G7Zblhi98JjjFq4d>NOuZrqs5O)pufQV1Hb?k-u*`u6^Q_sryEsEN7xLVZ)y zR8(YScTv=t`(4ZZq1F->rju)4%mfDqiw}N|shEw5iefr<_G~uu`t55Utf8XTz3sTV zvfOG?6OvPkcOT!jZ5y?9$$XqXUfs+dd_p1Oq)m_CwgVzzHrKD8ziwyet(&1=CiMI7 zzbnX5X!q<9>?&}ucpengI+UhcST1_<1X0!*$=`68pE&^PeC6{@p(A%>8X9OUui?dc`gdPmGHv$jYnp*xiWU zp`l|=_V)5OrkgeE=H}-Q6x;SyeXW{Ff7w)SqY@Y)?mFuE^XngqnypF^Vr?EDpB$1j zw_*~pA6)6J@GZR@Jl|j}fzWbM3KblQR}2>kx51nJoSJ$TDdJ%6m1Y;W;+j2Qj6hk? zzZuujp|e?q_TicjRQkvgt*_S3KiF}krFf!>gJ#?QlP5Tj9jkOL^V)4e!zjj7Z;XC3_?~mwzjsh{f_02_QkNuKi_UQ^Fyoq%aPShnS5WpT9h3FldL@|t&-xTo~bIF69Zx(ght z6L=>zKD&wC`1v9}FK?FK#AM(;LL%IDsDXJbn9t-~O^AR+Ltk~!{Xt$6N@?=<)gq29 z`lo6ts2sGkv}R1|A`S={lt1DY6Bk$ea}AXx&$CZ*g(8EI`so@{w6bRM%o_VY|7go% z9iFI-;Ia!04sI)O8tdvN6}#l*;SjgyTGrtreR5yDdad1Jmz@}sjHBva$l=)V@7U8xuUa>-HpB-tR zZF_rrLo7ae-^<}JjlMC~M~@z59_Qpt_ljn_I&?oSI{NS~B4bG1v*YKlINc;M&^x1qYEajO65%r$&dwuTdPSxe)$EW}lDO9= zkhWfsm8D-C$?G2dR9kCBY~L!8Z$41H@c636#c}A!ku!BIErN+6=B`8~CJvpkq^KW`ve>%IdEOT=!?QBz<)NIRr`}VmsH|tdg za;A&9FQ}&z_sDv_`LhqQBfF?*dz@C5u~So?iHS-3^Wfk_bNv!tUfwAkUES8e1;wWk zdXH=No!XL6viC(Aaf!&1#;=2ewH6T95@F(n3wE1ORe&UPQ%#ZADM-uV2M!!CNG7+8 zb{4iXiQTyF0JF%+sdsaq9J}o`Hh|czPhgexFCi-haGe3Md+lGYU8YygN z+=_c$Z>lB}R1zB>pI7QKo%HR=p)(SD)_v=JI)Z|5UP;N?8ekx+U_g+QbELT?RXeh| z!}#jeC{>zu>;bZ*Nzo^=t}+GLGpcH8qJq|4IvSC_-jtSH%l0MhJgfYY@p1+yexEEo zqUxnToX^b8RNz`%%b}tnRk5lt10=crzm63pPq7q#e0%DLs=+z#*5`G~E~$#jumChY#ydxkqGt9*woQ6q*$jE3W zxfplCta}~HL5B6cOqTHT=kuH?%n&cc4B?AcuuKZycp=N zqZ8(N>eL%4Ny*Zqe}b(h8n-GV=Gd1nr}T2no8wW8Gd&ij67?2mMm8INdT#TvyC&Ye_V(FXs)^SO&CQc+9UN-Hup)z4#GnMvcWr^3+B5g=-gPDw zI@Z*G`Em)LTeE4)7M*4QpZDa^BhwiH=ZYiJDx{?+qefWM0$SsDwx*Lj?Z$h`{-CC& zR#@#QZS$t%*6YZ%)OI%Nmkag4eLHU2x>eWq#}}T$?Ck7w$nfk!LV2v%v(=Ht_&TA2 z+P0y_c*%`hwuIf79o2OYkd1B3D38~P7AtV8>Z{(lmcMn6fq}v2wzm8?z{795yFDY$ z9#;8}+T-9>#Y}yGvQ@(8^|#8($_xbIq7p7^Ot*VcR_Z=Qe(=-BHFY@*mllyNe2(IB5dHbi2)Oe}P*1s@6-)Yep zr+{$w8~plJdCJ#w>BuxH>KLEsbTu+pS0u0nC)h{;08Q|YU!1Y%yCH9zY`%`wE?QdJ z;HOU;CTF`nt@#kYIjG{78BhSqw=^?(cz6t7v$SNYsHj*x!9aC0$nPwzgXbBw!+sBB zV>9Up{&<3yw+bn^h}|ptWpu$<@od+K!*ENn)wOG3Q6c*e*M0fbl|RNl$H>UwQi*SD zIzVOW_o;ZgMO*Us4I9Sn9UUd!JOT*@F*c<_;Xiqr#s5GE(uFUwRpiJ2`z^%?vHUmh z-}klyGs?LAe7hm$IaZC>_HjM(WfZ4eGcuYM&AP1go7S;KxmIq|KJT(M zR1SY|@7ZvZUO7N|_YZC=D)U|c%SbEAo?|SKeFZ?tHa7m0J8lH1qyzbdPDE6cNz-$Q z0P$|_?zek;dlyaH13_h^KMh7l+^6b#{Q!^ zppeICy{?A5)rnHx;x8MUSdh)U@z#^jP>!}Nle*~f-U?4u6;F0qTI61yy6Wm-@*itA zv>-wxUq^QnB#RkTP#Rb%^vm|!F4A^k&!5lvf+_TQN3#igt}J~7QyX#lT>hn=6NtBG zesaK5C*QWO0fomki>S2odw*u8j8J?{jEvgAE|Qhbpa0ktDr7whm_BjUa?Q`fUjwV@ zkNQ{EveSAghP3zDIZcb0OZx~DF+1}Z)oFw*z|GEXe$Hr-+wc4bGS~9rY+aJKK!WG$ik1UU*S$;TJ%YmvjBD91 zx94d2=jgWQm?g8c%rtz5r1c>B(ul=oLOHpalA4;HbFD3t?btE1OO?5}eCM_=Uudqh)^k6E|b|zKaIf(iOA){&9n5 zx}Li$(suRkP15a8o;=yg?C?z1DE%qN73Nj$5w9;mWU1*o`T9S4dNNzf%8bU4j2_$B z+8(#CRjj6X$9a_}j_gei6`V{@^*bWNs0&_Pi?^vQDJi+%l1?fW7ZY|$XFjP=G>6YRo=c`P9Y_6T73Ppyj+Vy7K^Oh;mi`v0dm?g z4vuO9N%rEHjo*!rH!*ie=Oo01HwmR230h6V7h)SWY`UwjTv@m2ZjU93`Gx>9x$W!T z*42$Q_VnmiLRJZEX}RS8^r?JjN5{6nnJ-Bi$r4Pc1vxiw-mG+VbflA4P+$T8K56(l zTAEl7aWzh5E72Q2uW(E|C3$;$Z>8CPvfli|gB_&d1|l<=M7lfH*VS1^q^6EY6Z-_{ zyJFK<72q8c6VpB{QZhF;mw}|`X+`Lb*RCyPyUvc*_4f3XH{b6~5vkB3EiwnlI!z5V znt-$4g0v$EpeO>5f(mnIoni)mVsfIl*!4(Rohx# z9#{YQGtb4K+;yk7uivuwm2Q?^q2q`mj%2A{TCaa~pA~QLk9%Z^LV_8${OuN-UtaK+ zVPRoWYFdr-_djxMU>)ZWvSy0z!S(7qf4|SOA@LGH7cN{dC|#au4{vL0dn{)=M>`FB?q4@iCMYBehE#hq}E<=9ddf*?$nWjYz==4y~+L>|8BR*nxC&; zz2YuiU0L+mA5Nu5>t=a+D<2=9YdsLd5(rN55wGYEZEeEcpFaIKtwHAJ=XVo?%<~*a z_4Q*W$&zww8iGuTyUo4w&&skhH}m})i@ez617WZgdXxo@wAFF1=q^CtYcxy}McKTT z8bMQ2Q!@xxf&GvnDsCNgO9@opI5adg!pX^LZA+`^gI|21nm8p_GMso8NH^fAQLJiP zTUC|UBbpC4*~@QE5RvuWt7WF(a(8tD5LzTi_6h%--`{Mut1Y8#62obF_Wb!?UwqLd zs=MTgkoQY^ESWr}7uZSclxM5d&+3b8wC`nIKfQl{WaOjY5w&cyc)%_b6xL0OkrLwb z2y%ajQlZ^Ab#^$Jbmisc`hatZtl~JepODBRO}qNRUth5D@bJViRPkKw+B@u3TqoZ5h25RF;*8+ZVED_R?2aN4<`{m! zUhF!nbNKM#Kxb#?@Rk%w$mW|rfBt+M2fTY`W=4V(kedxos=jyMzWEDiJlGst^NWY- zRY@%Bas?GWYtgfG6FBAIlaaPC*4Gyx26|YA2-hP-nZ(4zaL2K(VzHAaZ=Ba4KlbvX zeCzL@5#`wYV2y_NnmzRDy7x(Nx&@bR z&yV)MT9aQ{U7a;Z&KbUXdix!$Rk0D$PppMDQXF;2$R1#UK-t&|tW@jy$&3by1)ont zgnvXtR|!gRA+evS%L~)(3G+A1&CTQM>+6{-d=6yE$;nw58XL#i+S$4GjE${!gEzXx zXte^CTBy+8MYSw$CzN#u%jBYrfSE7I1>vefI2`UbFjB!mL7&O`uSD$Y819aux1rs~@a z!p9G9-W-$({W25%;ilKG42wT4$w{?2#o74+f`WU(!^1bbxw-9xs6LRmI%1`PRZs9@ zQ3!b%jDAF-Y!OS;?Tf$t_S;OPq-WPeebgB}mII5sY{VF*JuUpQJc3SWwrVi@)QCWxrP%KHN)vpnGA{(3G zy@!)LIn!=^|MTj-yBzjxb=59+w^1qQCG~DPK+>ifd{N@|ZLXT^3A(VvZIur?^FMFm z{VS&USDWu&wzK|;DdMy0U)0f3ovNAm`SWAo`J?)}OQQvI#gLoYSQW!g7}Tx(li=v- zG7CYZqm@>f;63U`MOBpYx^E|OssEo4SiJAQ;>`a=JM+ec!PYYFoL?lzhKRxK>!P4> z*bs$i5W=#~@;F)yTYgSYZ}su@9gDI2bqrIr^SF>O*KXai#nyhv*I2vYQC7-;sl>%g zm%hA4tzbokefsq2LQqS^#6r3{yKBIs_x1J4uQD^)M?om#($lS90xqyvF2)XfsHPL$ zJv%$Q49JmnU7oAUAJ?p1@1|8gSx}gtZ@HgG|E#&G>EKVYNPm*uYO^EB+`x)|*2!`v zBf6Ia(e&WKE1v4=>ec9Z%vxGna%Z~5aFO^vyb9vJr(1Nx<^wp@GE{k!*`;~A3(oGQ zY&N4t4;?7(iQbpu=S4#WELZ>*`WENrJ}k`5xh2KNYpOH(J`PeiBT-kMo=i%q`2#4Y z5mM!enkxy)Z1;fF)OAUZz!08_yUrY^M=4?5JsqD*v-07?2hVKi<0M+?N)REL8A`K7 z5ZAIMlMKP_Dtwvpl;q|27lBk!Z@T-={q3#acbS_@1~eVx;u4gXlN-Jc#=wJqLJ8y^ zD?$Aa4?HbeNFY-?H*B~cZB!koU^t&3*)*Gz%laV4d5Qa<`BsH8Nsk+Me&k*a+Kv&Z zx;bk%Y)csf#JTQlxpUxwL*H^&O3Lv?tn@UrrC=8n{{yE_pO)C#SCc{~%yaGIz`p5) zKsg|Yi&4t<4IPjoMRCIHtr0`Qc;840kUc@Rn5F~xR@>ltT61| z`~3@@H#)>$N?k`27!LhMta zOUDvL=8AeO&6yBdjntVlzS~zQwS;uE2`#uUz#h4{x>D&aNA5MB+tPT>*(QxeKU~lz zO`@W}t0#;rBdwq!!7`)yrqA<$y-LJ+P14P|C#8(mfUDL>dU?y=*R)sInTU|09{a z5Rx{skAXpQ`R99@UGLt%kDVSmP&-f;sg2`R_62k>-P^mm3mO!|02KO*nyY9s&fDqh zM@w7!41t+jlgZ>g7FNCw9}W$UjJT&|4{TwQSTa{vZ(^$%0iZfkTwI*~Y-wpYz0}7Y zqFvmheS9qapMv>Hz-GtY2g03tx}d?EJ$(2uMxZ-@eJnhYNUM8=tU3k&Z>bUPy=ZD7 zz=jz_feGlvo&OtpOPLPjCXE7>s$jfyTwf z)ivG5(b3}u4#hE$iHQg_m7373V$m&eb3SiY7c6K=)&#uFgEk$BETvT7zL*=HR^j;& z>eSKl41lwBb)Xf9`qYc`bQF!`n- znVFnFf8GRW?96a$dN+!&#LKi=z9jAN<*mBTS~&}+!Ht;MXuVD&cpooJhKJ>WLo=%X zqL%1P5W=>nAsP*GsNE;yxhk{{OGtQJ12~Cf*tgG!`qn}Fv94uj9i5KX5XaJ*Q?!Fu zw6(N4-InGu^b|%}K~Pm_rx_(ZeuO=F@)fuJ)Nc$#syia|*)zie;GEk=MK^OF?-#ah zZitnemRmXX`t|ECKhYpah4!i$)TE7E@E!gA59rrAUaiapw*1}L#3X$)4UMNYkx8=; zkRY2C(Llj^7D0ha5UK~5G}CnEJBVJ!i4#B5 zT{h4#+G~31p_5&ETr1P?G9Y^?4K?-W0wP5Ivx-n^^#?uLljo5pd!gUebpR17h1A(N zIh9J_yp^uch0No`Znw0W&$7QG+e~eYLZ(CK)ngcu(S>@_fa9Kr`X-wN+`i9`SKv6* z*#_6CL6t`2io%Vzz8>EA?yQA{g$B;C9ZXMYQ=^@WXOTOFv@TuhIDBu%dv=ER*(!Qr zM_QJ}CCqjWWSb=;M_8nAaMuPn9Csud=Cs8}dMxDS-rLHMTg-C1C>}~H?*D>%@g1bD6K+GQ?s=i*W{gi?WxQbS7C$a zf>qvj9|~31=PE!ueIe21{}dr!So>7Ovi6YPof5dx zzWcFxxlmTQor^VRozLke%!U(vDyMTwZ4c)~eKPSI^-Bo;F zZutFPXu=RRW?H*@KN@Bpfp^HkVR{vrWh6Bv#mgdT6>{}hKv-DEA~gA8aFp()9&c_R zsCFeXVBhksx#u43wK*mtvXI{H9~~WC1ntScY1q)n=mIpN@x1nc%emK_nfdtC;tdwS z{9KH3H2fDkekm(@k6=My51^z+-oAa?2||9BCi(2(=2BRzpjwL!IZ9wz5l_+(^c2%FznK~jweJHNB{ z+?HgvduD~_0_lLhrzLAOSXu&h4^%b&O{P*i6+1XIME%RC;kv}j$Co@6cU_~7k7CG0 zFU5*7r3$Z?81eN|b*PhKYPU2u9w}hnbbbl2a8)T~~`V&{) zG`x9p3hXQ|FW+Oi;2WAVWN6ygKBMw{M>l&Goq^5N;ahL#le-bt}}Y)Zf;w?UaF{rz;+O1Z5=q@zu)_FM}9}ML$y8Y@EVT4JBI_E-VK5 zo-2PjL7IbBzO=W~v9hwt;a(&?iexJs93oAg)GuFP@ehAm-8TX?RU2F=Q-sV9+d#0e zUEC7nnUuz{{wLLaTo5H^Rm+zOQ7sbXSE24Otd3VO=@J^e=l73(GA^^D?&&GMN@>T4 zBXn=ezGyhXmXv!x^jCo&xCYL4U>Qjde0&)9L)OiO*y3DM0Zd&Ye)Q;v>C)9@>+3K; zEfV@Dpj|Zpwl2TdlYU4QE!fAr@db+Hv>|Tg(O{C;%BeL;Z zsGZuW>gApCOc*)(!jt@I4NmaL|G>vd`z=|PxjGdi*cJvvUQW_Mb zIe|<_$4WSC;P8osKY|SQF@fTGNW&}-Xdo%{C2zOqA@sSD+;q&OMYXazv*HMg1T2NdX6)jkgZMtiZpOhK2-`J5K>wm{Nc&3Dbh} zLM3bD@t{gW4vrAdnhN`U1BBgE9vzHtITo#3&Z;c6Tkr}9AZybUSJcENL3+97hHocw7Gc8x?P5%tgtrT@;e^GvWdbA@zZ zU|#^y`r)^;n-tX$mQ3`&vyD3st+r**#ym0m!6!k4E^&skNVIdEU0v%!z@r{3NiN%q zxn|9L2aQA?n5z)#y3zX?yHo7oEv~^PX$grtXAJuk7l&*n{`3yQ0*RM!ZhAx?)f^*7Gn>J+S+bPp5Jwa`j%v>OHrJ zx4T77ZBR|*cLdsW?ebV0Ibj@g_1mTcRquC;+&o#a)VNykhBL_FRJ-KF_m{-P1N8x( zEmX>l)Zr412@JRPQ{CLVo+^R+uZe+wrH=lOrw9IDSa>`MPd)rw%hA74Z2!)~^!J+X z|M)Kdoy+OpeB^&26921@{NKvu|4Uu^|HViC^&WpWxAR}zeyO4TSVj1zy(-{yTtn>^JV=4{}F$`n{*Y`kpFQ8iZ?OCo%%R2O8>=D|5Xx$?$A# zp>!1&0u1>v`6Upsd#Z1+b&C7J{&PQmH)n9)zJ37s@>qb|7&1%azH8yI3V0oSf>c8eTq3y5P@}gr70O zcmw;Z?=~P8E5M5$u#d}HAV~n;W>mracY=+L?GSK*RI3ZY<1GLdWjQ#K^^sNsyuIaW zVTA}ZpP59nZ5iPAxxR^s<~2jZqv-mHj}?xUw5RCFz`Mq*IRH(D+*~lh*qE~lO6gqD z-oBWDVo(JqGn9n%FrfM6`^k53{cq$5osSa^m%GP~9n18hlzsTHj^Cn1J_ilgF_gbT zqI|a(IZt*O*MubY^!CQXYJ_4%22`{B^6C(l(A5gG`yx>8m~3pr4}yC?&CO19f?(s3 zo10rE7kK=k!i5WdMxY6p!Qt+xtxX$zcXzV~vt=g;6ESz=eKF;dO%HKjC|d`5dU_-l z1|(PKWz2f#R*$9L(5p(0S6GFpCj6zVtHcx=@fn}g2l8_OHrPF%F-xSOWr-0V^LEKi zccr3~*=RT2Rb7>Py!soUiH3(qiJ9~?2z($xyt4Xd;3SE8f1k!v=joFlpckRW;m{gO zd(nAKhEq+}Jeb^wx z0VV3m?yn1HnFm9a|VGpRnI=*=E`t>DM+iHF3Y4{Yq5e6GXg@q4jq)%dM z2s0^M17jWeG29z(U9qsxPC+w-P_j)d%Q^hcpS4_(NGoz7Pjy3bg^6~>64oaJiUU5L zufDQ!h;HQ^aWrm>H{XyN7#zHGG^lzJCY#H8dgAWx?&Ii})BqhvBw53RW?^M+9-?>Y z5?dl0HM_HXs0*x(`Z#2X?w=bQcga3IgUK2mIQ1L8d^s5-xU0a6v9Yz4E)wmSJdeJ< zJ^>*fo(rtM=KA#91XiLzc4rh|fSF89h`_O>_)4w}M&&O90;hw9BqSA*T3T9?Qc_X` zquFHn1lm&ivc8Wob2vob!ZXgiW=FW6@mAjELRvWx1#pqAdz&^M8rDY)+t@>~f zPliOa3c-N!4RO6zE;!v+I0fhYX3$y7rKqk7CQrAk;Mn_0R~CjBA?54=>>H86athpz-XJ=rAwx& z0W{KygBgT`ospBnsfT^^#R4&li!V2W%Z+8`=5pu4zDr_@e#I(1t5g8c}ADuy%v}G+;A&SZo915qypz7^FwyilKAfQ2*--#@QN-+J6;&625!$G7R1jv`O zlTObbX@!cw9G7m|zUoCjWAiPq@=F$axsDDF?gZy&0=qb^J5pT`;=Pb-T}4*PY4b&XV(IViXaDtE!{33V zM?$K(8na$PB)x=el5T6MjuC)qBw-u?c)YQV4TlQ~sJ6%}2 zcy=-aXIBI>cg7(w>y^W^;7>6pwd6S`DJ>_Cctl9JyF?HLlEJzNvU~M_xdiMtlY7vS zy1atI=z71E;a50$mJbI_pT$XMc>$5C4jO?1KhtKYuR0T}%yNMr0v$8=ZQuUW_4@T! zI_^3UmKVz2zKu$NTlIn#wXU>7cK8v?#q{Bh_}Ewn9)5mW-~GawFAuTOXmH{!lb{c_ z@ju%&aqoG3z%$8}xtRMzLndv8nOb-G0)aqk-6kqo2k@QV&BQXxCfg0xM;Sql=s}}L zbRy(e{pe#>94z-`@?3@DFxKxyAxIolr7VFw4qC4^97Sz+9irX}3JR7n2wr=@&VgFw zlWX_Va@8Sx5n4f{5wDh`nJ>m4kCkTULm9CXb)Y;;FByUC7l|3iACP5}>4mIPYynRs zh(l}aDJ$#jUT|Z)=LRH&3L;R5jDT)|t>@gg`wnnEJHVc5jY{1eAQXgTy4kb$v5+k) zggVkk64-6rDgezc46-OFDtc5`RLGc_nP~x>ymTRc5VJurmn~ihCCq-@IVJNF&qNdmX#LU{61jDE zGu=v(L@h;ULr$$#>75(P~LgqtJNCxw6h7xrM`4>n%{R zo1Wg~HGmN@1s4~~Y`?qtv!hS;NNJkg*vQE8AjGH+64`(NJg@~X2-J+AN&ambGC_F) zN&H$%O0YSxgao3JQ&1Sm#bGT516M1ns8DK+C83+_Q2}sd`s;@fV)Gc8adE@6(jwSw zQc|UX8M^+hH8nLF5JUH>w&;W)qX5-Ty=U@V`h4VXB?s0ET2hJIe0a!UBgpn*8@i?3 zTA4=$nVF?A+d1?K#pOEG@Mx$Xb3>Vt*_QB`d?tzwad-jS?o>_V(F1>a0qm+VZz3x% z@21HfV2oZS%f-G;orEwLP{af4R-~%tV&=;!N;8KEnn>LcPJ&yUg*GGB3nKt#-CA;Rs!!3znh0r zcu~oVe^izIxNI79enJ#)L4m)9e-9kfzBGR3Za zc{N3xBY{Y!ojYyq;du6S7-|LNVuI(Fj^t)j6z3BQUyTBO{o?%MVm$hX-%Yz1wHpQq zWEuO|2K9u-BASGeuA)NdEF^)vF#=~URHh0pUT7x{0qov6so7`SA@nM@-bu?Q3>)`bikDYgyNtOrR{~}Yg}2kcKw!*m=ONz)j+{q z+ha^qA3yp4NdqA*r8zq(5?QGsB7x|&1rVxK7;M*jv3I=) zWnI{+*x;Rkx#TlxabjkqeXZQECVEg_SPEjLiJ%CWaq=Zb7z%!{TDHSBuD<#+@~Nth z&b1fu@vKB>VUAP;7Q8D)zp?_i-hNHZMO9kq)3K^UXoZbdV8Eg8nN9}#F*E>E9y%z8 zIydK%$l02~t*Tn>4#Ion$oV*+FDCkr9z6JU7WRX1u6f~;Cok!>-0y?sP=p_aUwV5y zfz)Hy-~{XDH1u0%GQ1lS9EwHo zIO8OP1XBacp@ZyiRTjx{J4L4NOcBBT1EZ2Ys1)DP z%u=ig72@U^vO`nX&a&dt0cjGc^i!`MUw)FQq*;4l8k4PRFpabyl6HHJh32JS_kI<{ ztdvN=V>mM$79}nzS#FYDH)Da;cPwsVN)L4@w|)Vuq1p0Sde( zv?CKu`@6MZBInZTiEI=UbZwZ(JIR7O3y7+@m!7_*tpxFd8C~abG!gEbNvvYJDpWa$ zIz0D3!oNBrp@!@ac->bwR=-OT4hm30=it*nQd0qY z2~EJ#Du$jF7rxzRVzFp>h=Ik{#>Po0tr21qdqMAx5=nN4Mxt8t%5V~<>y>~NM@cQc zpv4tL8_o%c_yr=9%Y}f9`w9BiY6G}MzkBzz%`sAsL@63IO7=r_*dR6ZKL#wU5G7-4 zEht|GA%%CV;MEq6a@^t;J>M}nIGB$EJQu^VAb>Nxh=wsK zNukqg#-Gb_=p88gCs44oUOG>jY#hI|YWGAO6^ufQ*SoDCE3W7U4XZoMB=e>-BQ(aL zQ95b}@5!-2@e77W{l-zR=(EK)TwNt4U=7+*vw&J!{St`T_@_c971c)WvE3rD+=7J7 zy~89kuLoRIvy&4O#{qO3Jy9TAn--sA#mflRo}6An)|@Eo0o8b9fBpJgJDs-$!b6iZ zg1PBqT*I4m%^d85k611MBL&Uo{LakG&p-7Ftpcy~^s(Xw3B%J|L3Nz-&#Eyd$;BK= zg(<5jug8zW6Xi?~1dK#a}T20xsc|cQD=f|^e+dcnRK9G!>J%ASFP^U zomim71(fv4412h!sjy_ zjgCBt=|YPQcqocC<~}C+Z1X=)Uh^g|n9oo2X;2u?JP8YPyFA};ReEl5u{Y!Qjq85< z<5bZPIj+b7kGzscXdN8DjOsPa8N>kEB|yS*G&C_`HOfhJBm458nw6_%u2ba!+YNLh>I(E#hLX$rddIE`PtpOzcbTr zT5bxctgGwZxqW+mZJ+Hit{^!D3?wQzKi#G~db`(D*8bb%8 z3r`JUl#m>AzXl?FtgEX_b=&wfd0W9yh4wFBo^0N8{6_S`BT1It4==fNcNKt#rebcT z6B37cBD< z{`JCgWIf(D9X|TBUMwomJQ*$<31UTHhDoo#zYRXlvlB!>avnd<1_g_lhCP7xQ%AB6 z9=*|%imsRdh_NcBsGGp+JQGt=!eVspmFa&bRw`ItP-7+x<=i%oGOtrvaG zbwT<`8RpGNGWe}$6cG&v2ZukfQ%EJL&RPbssS4Z+?hC4(q#YaAS=WXLBv*EHgsJ9< zznS!_G+Yb(d<@`9wo_s?vm#5fT(dj(SYLNfgvW-(iL8Lz6}^5C_6AR4QfrU2%C){s zh_eEC^Q822nl}+xn9IeFHh2-C*U-?w3)O_u*wWIktgb#qV{L6c1V?NsrOrg~Lq!D% zvY#cIgJkxHXZ4x4Z(SW3Wb%_yXV&tsI!_L)UM# zsvB<_D0cnpsf$W9%|@#ChSt6b&Lsui$2gF1CdZ*e->T3@KAase;%m~pqu6b)_~#0m z3{Su5SqJR^11#|fM3wpUp2_u#)8E3kR16X(rjK=X>2}bR!!eYl)7{-W&zqOJvLvtD zKAA~QSP+Ke(GK?JszpBIPo{7obROt)z@#+s(1#!ICTF%ITSU>(>>&XqW7axDRafuw zW%>~WV<(AJ^zx-)YH6wGeR-DNq_lP@T*76gcng;c(~{aDaSxGhyOuGvz|FpDvRp<- zqCF`rTv=FHxMAj5y&1>*DXQCMi>|I;qZ3okAD!sGe$rk~ud79}an0Ot%SEJ!oV>jD zZ}(qWm$MOf4*qKGf#l*Mr0Tjb;jG(8ACDhDKJu#j z5Uw0pydWaFxVY1*{>5o^PxqCcGVfvNt=r5w=#Yu@baaXo9h_}!#tX22dB;{wI@{VR z(eF9}GlWxS{2fK@eQ_K1%C~pZQFm&R+#Li@oOqQQKMet&qS|Ugtf!=TQvz4nF#JrO z>(;N&g>%1RORMMXkF;wkXcvl5Xj1`S-d z4h|xw1_6Au4Gj#=(BlVy6EiW>lB}B8B&Dk>Uph8f4k8kJAJ2Y@OVxpj@D5L&peN22 z@*x(Ku%6DF^v#qG;;s*Y;L%>z*7k=XtO<|V5rO$2PodTF(FI-kiVLkgn>KDVb-#Zbg19Oz2%RG`FVMxVc$-`30+pbcro`SxBp(2c1iyc`Je*(dCvOW zNS-#2XTz8V*t=`rzGK<1UcI;>#+W#_R$D3Z2%;Uo+q6Q$`TyX9862kTuWk{Uu2_B$ zZY3H>KC5P)?j=~`l-yiFWo=m~-#H8zQShr3^z`)Qn2mcxOv%^~ zFM>N+*juVOJI{-PhD<=3JFx5F*)G7h={9J>4~YV|>|DuwdV4l-oEyB5tiu$_Zx}Ln z2Isyc0^3wBCZRhA>-gv)GJ3@3=L=86>l7SPMU34|!l&JuClyr>|D)@RQwKLbL}t{* ziP0csC&$J0Z*_HbwFSKoGPkf;t9|)$7#yw{t#99+CeBigJ%a(DK<@{`M=&_=$57HS zB#vf8BKYvgWL6Zp-2dQ4a#PbY5hMn}67PQYu%8n=9C6{{2ekC`RuoAi4DyQ_?T+Qy zT)Li{`5&`3j>zPv!FUk}w#Z25T^0ia0`JW7Yfw5F63n7a{V)+Q)> z+QS0_t%)wwuX0Vz&25E*gvR{&e!#vhfRXkUtxl#tXgB1^=kmlk42dYpmk+{HB?{x9 zHf{QCpaqN)7H3ITU`<7!!jn2B=yvQFf0;hBRX5jDp?zOtf&DUPJ%5CJ9#dZdEWKGw zIpLo*w~pO|OG?^wG0zv1Bv0LQtWOMSvi!r!0B29J_;*uhToS`m zPn?4AV7=pbY+os*3x2;ILw$XzZ&!XNaEgn6J)(dU;>0sgkc_rEyV9q*S(@_ifEc>y zf^={j=VMhj%gD&gqxZ7fs3z5_hOGMtN1jC82_2#?{ZfY1iyOsm^Akw~qdGtC^5*86 z>;l(UMEpfX9ZIzb$jn@DFYJ1C^-LR)L&4Sy ziTuD;`(WCr6#q5z+LMFnwMBcmeWDyt`9v|8ASY(1DduIv=oS}A8h_er=IH~2d3FJH z690%Dw?+4r%y6Dmxz_IA6sCDQkqs$B*PN6hiKoR(!<@u>)SkfD^^12#p+`qvx_nu+ z8-9?|sc+uE_sTbb@7I#66hinDi-`hCnSk=1ljI-Gmae3rAl~=&>%mt0Q_*Q#8rPnS z8yWMJ<1!0jNlHq(1=M-Wzw$L6@wHZ??xUH=nTpO~2alk@hU zXye?lVZ%J(R4+p*^5{;3NB6u#(77PWfBy14%2l`C%y85(2L=z{CfnI7wousoL> zVFrDrYgr&7q_!U89)8RD)+gF(pSQ#gTmKQ~5^N<|H>r*OlvTyI>!v!k53#)uy6(NL zzR{vvQsY;~!FWX=D-O}n?9oj1 zL|cj#4C=gs=hcgxG1Xf1EF)vyeD-8U?HB*2wQCQDGGY66tF7LxsKnY5mnI20HBu70 zN>PItITR|ToRx;0mEF~Wvd$sLoEbuhWU`uKgo+{LP>6=epcb3?e$Q0fUhlhmeb@V4 z-~6%Hc3lsinR%Z3zJG`N_gn;!P6|eU!m4l%H6g8+n2A;uTVCEJ<;o24!D?>{nCrQG z$9Tv@yjG9{{V)h?%8CTs3?_1X_dow&N2QuBjbkn|YQoQ7%8L!dR zHXZ*4a(ArNWn6sMOxDMZm=2a`-!}Z<$cX%*;uHEz!a0rIF$bfnw#~2*&DFXFyIwuUZB?S|Eh+nl%1|dS_-Y<*JW*^9c;kk3N<)(*YL+uG(BX*<=}D0nsjDQ86?UwoN{$`4>2S_xiw!@xhA_LgL_=@o=Zno>e(GD=H{h z?-81R_h?N}ky+u`RQZPj@19hKQuK@v((F7E6BE0jRnvC|U`(B_tvH(UlUC9{!)o7E zv(`zSyqx!&X1+a^EeNQdZ)#??+NHf{{lD%)b?*2s_1k2%pk?CTMp9vw;Q>Omb#>zu z)T*^uFsI&<@C%;%&72btboCZ8V&GNa>D}fGt4_j}fmgwImTrsr|M$rxCGgp`_63H2 zM(F=>#3!%S7YzSj9Pv>B|I@$sH^1W_k0@ANQ#B_b60GBR(6E_2+|-&aFA_Yr*&lgN zczHIgsL8Q50k6rW3gx@LM#aNRcPO!m6(zR-lUqqnJy-%q=*m;N;}tnMvP6E0 zHo(F6t5;JI@sI%5MW;!R8I`(ORa!cuwYvH|0aSS07=|vfueHC>x;Z_WHEb>~LieQq ze%5fzwx|mGYw8*rmd70(_YuDa1Wysx7IOhCL|C>U6yG;umRn5_1GuXAb36tro?++u zJpSpO`*}2dpPrr=)xyHw4|cH|m-!Q38ERK0tfdTOM76ZGRxKA2I^}^t7dDZ!n5#>2 zYp?V=bI{3YBm*8GyMf~hN=izE6Fn456>CT$!3ikYJR?(6(`)%}Qtji?xAtY=d{6e0 z=~N=eLk$Byg9aqF5hqrPXrx?-RJ)PGDzcHK;XNrsCXq<%$mCo7b022sAUoV3mbI@V z;L7!Jq^`{wB12rj^X^T%3fBn%D`_1dmrFgE0ThrhArG(rIk*+%C*WvVa6?8hvwjC{N0e=$ zInCR9CQK(-gej}YfUdqB7C3cTp+(Q2bHOGw1+F{WoZ;_x)2$rs_Byfk*<;eSg{QeNJ?p5|Aer8ci?@GD3Qr&@4*Gx1BvlvZ zF^QB@P)Ho$aJ)@>R#aqUNDHDhEM(Phylhk4KH?HivcMT2sG=WKaV8iWQQ4T>{QPAe zr%!ME;U)j`5%7+EynOzTl}O!m#<6I$H?p||H&{R5Rx+lnq$DZ4czJw7MrTJy9@vEV z$xSK8xUuLaH28rfI!X1L2leLOwM;HT!2E1`S@IXF8H z$o14`EYeXy4XW-N&q8evZTp?MbjhO2sn2riF*kS3-Vp?ZCRkFF7`TdB7RJl-FTf#N zZ8HEwh}z$CAz&NKL8QqfZP>ub)@axJb27<22^u`K8J;Y1)QgE}E{ny|qJ+Ca1Tt)i z8gwhaWg=VRE%reP_KXcgTTZL^54{9qB+ zzibPOHSajCYb&BklJ!@DZTpHSmeBJuu{}8NPDKSJ7gH(beHBb$k5fDkA2@K}CV`)^ z$uLM9atKfd%ANZZe1E@OR*~?Vd_pIfmaf~Uk7a{Q^2Y8a55}xeL2-4H{QQQ`!vyQN zii<0wIHPL6^?L$kL%}@0cP~p22zv~nD`Nh*ooHw`##Z9sNhz~pL~rKP+JAVxOefLe zw2c&GWphSr1hwSN{CF26{LR;ji(BP-Zo+45T44R**QUYxcBd`Qpd1v;Z}whtlhSP_ zgE7(uk;B0v52dKx2}ANB#2Y^$GiT6FyEi2Hy7@i3c~k|A%Y>(fiiSpIN?xARrHXzT zMMc+K0ROV{=f9$F%zip49xF}52L{v7CB%(5l2ujHBNNNY*!S+iXv8OPiF1{-iyNKQ zGwNlQ2k`uVN976KxYm{by$ckm&7+<7Cp;7#FhdBow6!hNC9UYbvRW;gZeI8@VD4QR zBVo_j$AfK%2@85fBh8BAyZOg>)4TWa&fJ`;#Rm4)lMcJWGS+8RXt1gBO203^mFm&-~}8OmwtJ4BnC$VRqBBxxeVBv2l2e+cYNARwUaoN1?0l)TdB(x+du|O%up`0lal-|?M z8Nf1ac%4Z7#Ku+Z0QK(_Y!!^-&ZC6#`6XY8J0}1g5s0fw8fk{Ee~e76oEw z^uuxB#{|%bNyp6iPfb9|ptjDQJp~q^alxs_6=GapL!`EdR!zT(=bZrnJ4>VImX^M| zg4Ky)sDoLAVeGJuR9HQ-Rh!{cRKrB31Epoxu3eT*wYBEyGu@DaqL99+HEb;UqtJb< zs#nFr+>#Dyj$-fPQrht7k>vps6Ed>;3w4cxGVG&YK8kE^`rPTaPdpzkvj+)>*z zGczSjH&FpUuEKOmY4e9(Xevr5OW++B4isT#h3#{0S%g2fIShUVAsJG4a=6Ch&q`9c zcl_W68Y)_KPW=K9Vs!eZY)3z|l{D~sMpg&WCwEuD&LFU3}7a(gbDlAO;9m6S& z9xS=2B0Iazs$_{?xD(uv6>5tUxQ_qMm9U0yTPmsMSVDJ(o4!F2XEQI z0@4N$Z!4~$R{PhLEXm>eRuP)P=5F&2g-UU9k%Zj4Lcu$2ZT9C#?m0;UqwMneL zZ(PQz^CXICNogsUU7{EE2&W-$e)GsI0QvQPw{2$95lfMYF+TwKpwpY$R^Qv#H-R}U zA;n>qGd%nuwvv&b?-Gd5_>$GfJ5SYMXhz$^ zl5S{fG6azw`u^?PUqNmqjOkld^nPr5PpAA)WuKu7o9J=l5SP(y%bkN>XpW2m=@AFw z9bp8u&cd+Yi;urgD$I_81imbE@sqyeOwnp6il;d&$G9t}!QBRzVn&i#zkYy*^FDI+ zY?(b8;#(9P6`1m$rC4r}l1kmWZrw4X-Mb&8B9%F~i7HBroLvy^W(VB1#pq4L^H2^< z9~zH4t{H8}PsghZ8d(7mAXq@*Z1bM9JA#ar1Nyc~^?d2=2gSRO^mI*bFgEDa{k_8Z zTX*9Fcv}9hsnx+Lw`F6D4|*&kJ$=3H(W5^SN@#aWdbT*H6%K7@EGmpa(%3&MZt^e) zMVq)gAiqS<|E*d@HwSG2$5n>K}+($G@F}1whw;`a=vi~n`&%a$;rLgDqV5@hkLkh?_{_jy!ttt!*QrVvgt1S96)!a*{* z1?t-uhLoj*+<1PpO-m)#DH(jfEySC;<3;CpL;($x^4xv=rOq8-kCBd!gFV=?Z$R7ausNv~2a&o~}LqaI{<7*ezymecl z9+zR!!E$ad8rW-QCVBw{9L0qQDE{L>{Y9qD7;M+iSq%+cA~=Dj{s|1%82CJ3@|nXe z=gP2|hUMfe5!4>BUuKOxLSF>e@dwI#mPtt|&|JA%9l2p0IcxWkvuPSnFdB#j>^ zd-C*YIKuo>F`-oO#*ys&9KG*J{QqAs&3W$6Oux$FwbDxSlar6Mz+q@$fE?T7M~}YH zb+@g8NyiFn9d9TR+X5vof+$qPYDPsQ|6kxR4H0;^djn%l#Up40Pk${HO0!u=S~g0aTNTe@OfWxByzlw5~-JJVsCW|AUa0T=9hBBP^sPfYuk6H@Y_03e7(guA5F zdr@F=tgj%Uv=AfyOZQ7L{y|VDWC4TwwFuGTEQ)OThikRp!>uvbi%H4e!C~*l#yN8f zivt+4ifHsPjCVV6WtZx?dm+Ik1~+z@^rFC1FhWCO9;*V`x0^Ww)zk?i%ZLYdszdoR z1pJ)GE;z(uMP(3Wagt-)itf=~U0rQ^8RA`a8Ehsev!hoAGr!pxw4^+>roG%5krbk+ zjO#hAfHadux}@*#9eHF<8J))my`EN;EkBRq;Sl?5B^h?hl8!*80>Jo6FTG zY(m%pQzS{kR51k?p(aVs%`WbQ9%;pJH$}Ml*)uyO{Fny&9h8}FFmtmzEMRP_ydD;| zJl8V;|Ai(y-P7HICsR%L3eIylB6&k5$E*+gB17r`fMcr)kip^s(f08huLqU@)!0pQ zsD;7N)aERInDnf+Zq2@jpxyu*dwV@UJT`>)^a3>kbVXXlK1~d-(L#4`=QVYACt^2A zJcn+H2}vpR;W}Ftu`)vZ1dnTBWwql#TLrnqs7u|s2dD1Eix%P~p~T&S%s={OeGJTA za$ZPiT5Bg;Ga0_`^OyVe6TuiuRG77xa=Yf*PbLlQ0=52{nXNZ(-fxc{jTCaY7`>gw z^!*TZHHC*3bY#%4Bjz*(AeyYDrG+Irt?rtdogD1#RjIkZ4y+$|3I%;Hz8D4riRm`% zlMfqEfC{s+hUN_v;UjLq?;mrRrND4<3Y_^ILA^hWV;qGmKRNO`~sl610sQ$*ZV^-o zYb}qFXNODtUcqZcMasY-M0XUcMs5E*M>tO%{kW7Xu*%QxU%&1z|JhKLPhD?S-59lZ z6DZgMM7^-k*&6`l00~r|gCXCPdZB*h;!VZ!uvh+_Z_16J2Ur6{(h?qdqKC|&{e<$Z z=Du9r+Km7|?5?i6omjztbM_RZ+w40b#$9=_Qen06AdzujcV=XV5AOLp_W#AFEx`DF#Af1!5iW$yQxOe;D#CG21Yx6aBUi`wRQ zUrjLy37)jK1o30NW?OeIEch8U;4IACa_)`Sw>dsR6hB^{=pO-V``i8eILXg@M1RAg zem?forqP!pK5eyr`ECEj5ucW7zxcBJ26^*VU8^u!d35n1;tch440h#f9|`;)b~Gwk literal 0 HcmV?d00001 diff --git a/pip/doc/html/files.html b/pip/doc/html/files.html new file mode 100644 index 0000000..b2a49db --- /dev/null +++ b/pip/doc/html/files.html @@ -0,0 +1,175 @@ + + + + + + +PIP: File List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    File List
    +
    +
    +
    Here is a list of all documented files with brief descriptions:
    +
    [detail level 123]
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      src
      code
     picodeinfo.hC++ code info structs
     picodeparser.hC++ code parser
      containers
     picontainers.hGeneric containers
     pideque.hDynamic array of any type
     pimap.hAssociative array with custom types of key and value
     piset.hSet container
     pistack.hStack container
     pivector.hDynamic array of any type
      core
     pibytearray.hByte array
     pichar.hUnicode char
     picli.hCommand-Line parser
     picollection.hCustom elements collection
     piincludes.hGlobal includes of PIP
     piinit.hInitialization
     piobject.hBase object
     pistatemachine.hBase class for custom state machine
     pistring.hString
     pitime.hTime structs
     pivariant.hVariant type
      io
     pibinarylog.hBinary log
     piconfig.hConfiguration file
     piconnection.hComplex I/O point
     pidiagnostics.hConnection quality diagnostics
     piethernet.hEthernet device
     pifile.hLocal file
     piiodevice.hAbstract input/output device
     pipacketextractor.hPackets extractor
     pipeer.hPeering net node
     piprotocol.hHighly configurable from file I/O channel
     piserial.hSerial device
     piusb.hUSB device
      math
     picrc.hCRC checksum calculator
     pievaluator.hMathematic expressions calculator
     pimath.hMany mathematical functions and classes
      system
     piconsole.hConsole output class
     pikbdlistener.hKeyboard console input listener
     piprocess.hProcess
     pisignals.hSystem signals
      thread
     pimutex.hMutex
     pithread.hThread
     pitimer.hTimer
    +
    +
    +
    + + + + diff --git a/pip/doc/html/files.js b/pip/doc/html/files.js new file mode 100644 index 0000000..04b0a8e --- /dev/null +++ b/pip/doc/html/files.js @@ -0,0 +1,4 @@ +var files = +[ + [ "src", "dir_68267d1309a1af8e8297ef4c3efbcdba.html", "dir_68267d1309a1af8e8297ef4c3efbcdba" ] +]; \ No newline at end of file diff --git a/pip/doc/html/ftv2blank.png b/pip/doc/html/ftv2blank.png new file mode 100644 index 0000000000000000000000000000000000000000..63c605bb4c3d941c921a4b6cfa74951e946bcb48 GIT binary patch literal 86 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRr!3HExu9B$%QnH>djv*C{Z|`mdau^P8_z}#X h?B8GEpdi4(BFDx$je&7RrDQEg&ePS;Wt~$(69Dh@6T1Ka literal 0 HcmV?d00001 diff --git a/pip/doc/html/ftv2doc.png b/pip/doc/html/ftv2doc.png new file mode 100644 index 0000000000000000000000000000000000000000..c53844829a2f69e7b776883fb817bdd2a8c30ced GIT binary patch literal 756 zcmV6k-I8pcoJ}F@9jw#EmXACPuezT#>k_OE<3ExbYv+ zg(j{@*ce6m&^IrFh?b8cE%XEGy|-e7&fvnZaB(wF<~F(aJm;L}Ii0OmE|&pz3=V*u z#EuiV0JdUcEL|>@)+rR$)bCPhjc-eNmY4IGrU%1tVfx)f>;2R>1T+9UI8&(= z5NL`-2Hx1a-A+X!+wmG;u-pe{A$C<@GY%Jx#oRHKUvr3LBy_ zC(X$kvLbuA^7)G6fK88Wi#B?H>_n>&vmTGfrS_)>_Hw8@PS=q*4Y2@$poiKzlVZ`D zz`guY6-KV}Bl^lUrHlBBmk$@xp| z9PMl7@|6zyj<;~Ws87fEDbi zf6Ri^Kvt1RhWRvAtwD!)1K8oWE|MAyTx_GK*IEOa#D*aNw!)HNUHD#JlHVdZ$+GYA zFTy9LxS=tiw2=cAiJCu?k#_*L!m>s3@R^f?OimBuaaV!>SRr4?lGuHS!F#s>s$fab m+ux!+eenR`kMZ|^GQR^5u)@d*WWK`y0000A!SW-Y&(8DnYx~};h7bY(=B5+?%u{m*WB?$lZ(o0j zAN@Z7CUviB;_&TD0{~`GB7n@x+gaT=3GvV~UK=d*&Rku<`w#WdNV?nY0+`eF&<kUJBC}@e*srSAFnP} RYQq2k002ovPDHLkV1m@22Lu2B literal 0 HcmV?d00001 diff --git a/pip/doc/html/ftv2folderopen.png b/pip/doc/html/ftv2folderopen.png new file mode 100644 index 0000000000000000000000000000000000000000..26ba14eb78a792a88d1f0f44d595f04d6eaef8da GIT binary patch literal 590 zcmV-U0Ni;7uDA)-$qNQMM;a9M-Fpa_$ZDQfauC#!geCq z7MHKI3j;fz=Kdh&fK@SeTXMLNuU`n*N`-7XeE~Xgd0&L#hQZhBk z%SpXxZ+;SBgo-~mAInqAHGgTPu5H#&w|u!HXUC40ACF`Z8D9tZTloKv c1~3x80AYU^VSj6@^8f$<07*qoM6N<$f+!Ri5C8xG literal 0 HcmV?d00001 diff --git a/pip/doc/html/ftv2lastnode.png b/pip/doc/html/ftv2lastnode.png new file mode 100644 index 0000000000000000000000000000000000000000..63c605bb4c3d941c921a4b6cfa74951e946bcb48 GIT binary patch literal 86 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRr!3HExu9B$%QnH>djv*C{Z|`mdau^P8_z}#X h?B8GEpdi4(BFDx$je&7RrDQEg&ePS;Wt~$(69Dh@6T1Ka literal 0 HcmV?d00001 diff --git a/pip/doc/html/ftv2link.png b/pip/doc/html/ftv2link.png new file mode 100644 index 0000000000000000000000000000000000000000..c53844829a2f69e7b776883fb817bdd2a8c30ced GIT binary patch literal 756 zcmV6k-I8pcoJ}F@9jw#EmXACPuezT#>k_OE<3ExbYv+ zg(j{@*ce6m&^IrFh?b8cE%XEGy|-e7&fvnZaB(wF<~F(aJm;L}Ii0OmE|&pz3=V*u z#EuiV0JdUcEL|>@)+rR$)bCPhjc-eNmY4IGrU%1tVfx)f>;2R>1T+9UI8&(= z5NL`-2Hx1a-A+X!+wmG;u-pe{A$C<@GY%Jx#oRHKUvr3LBy_ zC(X$kvLbuA^7)G6fK88Wi#B?H>_n>&vmTGfrS_)>_Hw8@PS=q*4Y2@$poiKzlVZ`D zz`guY6-KV}Bl^lUrHlBBmk$@xp| z9PMl7@|6zyj<;~Ws87fEDbi zf6Ri^Kvt1RhWRvAtwD!)1K8oWE|MAyTx_GK*IEOa#D*aNw!)HNUHD#JlHVdZ$+GYA zFTy9LxS=tiw2=cAiJCu?k#_*L!m>s3@R^f?OimBuaaV!>SRr4?lGuHS!F#s>s$fab m+ux!+eenR`kMZ|^GQR^5u)@d*WWK`y0000Kx0S{NX%maAh38eVK^j+DYO;v#1oU8 zKPR{CoHo53zcG#@{FzPo4|Bi@0=A~b<@v*FY#SOp?GL* znZHM&+8qqx9aFu91^nb!Kz4bKonfkzjDOt^6jZyA#iy~C@A5JA1=Q%Z@hE(R18C6< s$ga1sz4#JZbRSYazJVU|&$JE!pGDXq-|S>iYybcN07*qoM6N<$g57#vQ2+n{ literal 0 HcmV?d00001 diff --git a/pip/doc/html/ftv2mnode.png b/pip/doc/html/ftv2mnode.png new file mode 100644 index 0000000000000000000000000000000000000000..22d5cd562233479eca6e8ee8f9eb118354063d0a GIT binary patch literal 242 zcmVKx0S{NX%maAh38eVK^j+DYO;v#1oU8 zKPR{CoHo53zcG#@{FzPo4|Bi@0=A~b<@v*FY#SOp?GL* znZHM&+8qqx9aFu91^nb!Kz4bKonfkzjDOt^6jZyA#iy~C@A5JA1=Q%Z@hE(R18C6< s$ga1sz4#JZbRSYazJVU|&$JE!pGDXq-|S>iYybcN07*qoM6N<$g57#vQ2+n{ literal 0 HcmV?d00001 diff --git a/pip/doc/html/ftv2node.png b/pip/doc/html/ftv2node.png new file mode 100644 index 0000000000000000000000000000000000000000..63c605bb4c3d941c921a4b6cfa74951e946bcb48 GIT binary patch literal 86 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRr!3HExu9B$%QnH>djv*C{Z|`mdau^P8_z}#X h?B8GEpdi4(BFDx$je&7RrDQEg&ePS;Wt~$(69Dh@6T1Ka literal 0 HcmV?d00001 diff --git a/pip/doc/html/ftv2plastnode.png b/pip/doc/html/ftv2plastnode.png new file mode 100644 index 0000000000000000000000000000000000000000..49ad225c1a4b598b14fe471631d6f4118618566e GIT binary patch literal 232 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRr!3HExu9B$%QtLfk978G?-_G67dB{P+eZEiu zuP&?jh7H>%<|IhBnD9Mdx^>H%<|IhBnD9Mdx^>H-{AmhX=Jf(#6djGiuzAr*{o?{4%GOAu*z z_|9tq`@A7#0gEfIIfg*__t`e?-Zp1LZG?dho z6k7lPw{zd}qlbRY7SDdI?LXi4=Z}|PlXli``uOeY!}FJ?uReeN{5rXR*JbbCxwH1$ z>mQ%W{#pFEdr_%p5yxVULmFKMUBoe8*ni=FW^eQBgYcXvV3;s?y85}Sb4q9e0CYx% AyZ`_I literal 0 HcmV?d00001 diff --git a/pip/doc/html/ftv2vertline.png b/pip/doc/html/ftv2vertline.png new file mode 100644 index 0000000000000000000000000000000000000000..63c605bb4c3d941c921a4b6cfa74951e946bcb48 GIT binary patch literal 86 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRr!3HExu9B$%QnH>djv*C{Z|`mdau^P8_z}#X h?B8GEpdi4(BFDx$je&7RrDQEg&ePS;Wt~$(69Dh@6T1Ka literal 0 HcmV?d00001 diff --git a/pip/doc/html/functions.html b/pip/doc/html/functions.html new file mode 100644 index 0000000..4073161 --- /dev/null +++ b/pip/doc/html/functions.html @@ -0,0 +1,261 @@ + + + + + + +PIP: Class Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - a -

    +
    +
    + + + + diff --git a/pip/doc/html/functions_b.html b/pip/doc/html/functions_b.html new file mode 100644 index 0000000..6fe6070 --- /dev/null +++ b/pip/doc/html/functions_b.html @@ -0,0 +1,236 @@ + + + + + + +PIP: Class Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - b -

    +
    +
    + + + + diff --git a/pip/doc/html/functions_c.html b/pip/doc/html/functions_c.html new file mode 100644 index 0000000..e1d8863 --- /dev/null +++ b/pip/doc/html/functions_c.html @@ -0,0 +1,340 @@ + + + + + + +PIP: Class Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - c -

    +
    +
    + + + + diff --git a/pip/doc/html/functions_d.html b/pip/doc/html/functions_d.html new file mode 100644 index 0000000..6225c3d --- /dev/null +++ b/pip/doc/html/functions_d.html @@ -0,0 +1,235 @@ + + + + + + +PIP: Class Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - d -

    +
    +
    + + + + diff --git a/pip/doc/html/functions_dup.js b/pip/doc/html/functions_dup.js new file mode 100644 index 0000000..64a6e5b --- /dev/null +++ b/pip/doc/html/functions_dup.js @@ -0,0 +1,27 @@ +var functions_dup = +[ + [ "a", "functions.html", null ], + [ "b", "functions_b.html", null ], + [ "c", "functions_c.html", null ], + [ "d", "functions_d.html", null ], + [ "e", "functions_e.html", null ], + [ "f", "functions_f.html", null ], + [ "g", "functions_g.html", null ], + [ "h", "functions_h.html", null ], + [ "i", "functions_i.html", null ], + [ "j", "functions_j.html", null ], + [ "k", "functions_k.html", null ], + [ "l", "functions_l.html", null ], + [ "m", "functions_m.html", null ], + [ "n", "functions_n.html", null ], + [ "o", "functions_o.html", null ], + [ "p", "functions_p.html", null ], + [ "q", "functions_q.html", null ], + [ "r", "functions_r.html", null ], + [ "s", "functions_s.html", null ], + [ "t", "functions_t.html", null ], + [ "u", "functions_u.html", null ], + [ "v", "functions_v.html", null ], + [ "w", "functions_w.html", null ], + [ "y", "functions_y.html", null ] +]; \ No newline at end of file diff --git a/pip/doc/html/functions_e.html b/pip/doc/html/functions_e.html new file mode 100644 index 0000000..16d3847 --- /dev/null +++ b/pip/doc/html/functions_e.html @@ -0,0 +1,295 @@ + + + + + + +PIP: Class Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - e -

    +
    +
    + + + + diff --git a/pip/doc/html/functions_enum.html b/pip/doc/html/functions_enum.html new file mode 100644 index 0000000..24eb186 --- /dev/null +++ b/pip/doc/html/functions_enum.html @@ -0,0 +1,165 @@ + + + + + + +PIP: Class Members - Enumerations + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    + + + + diff --git a/pip/doc/html/functions_eval.html b/pip/doc/html/functions_eval.html new file mode 100644 index 0000000..c16f9d8 --- /dev/null +++ b/pip/doc/html/functions_eval.html @@ -0,0 +1,520 @@ + + + + + + +PIP: Class Members - Enumerator + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +  + +

    - a -

    + + +

    - b -

    + + +

    - c -

    + + +

    - d -

    + + +

    - f -

    + + +

    - g -

    + + +

    - h -

    + + +

    - i -

    + + +

    - l -

    + + +

    - m -

    + + +

    - n -

    + + +

    - o -

    + + +

    - p -

    + + +

    - r -

    + + +

    - s -

    + + +

    - t -

    + + +

    - u -

    + + +

    - w -

    + + +

    - y -

    +
    +
    + + + + diff --git a/pip/doc/html/functions_f.html b/pip/doc/html/functions_f.html new file mode 100644 index 0000000..ff47f2f --- /dev/null +++ b/pip/doc/html/functions_f.html @@ -0,0 +1,264 @@ + + + + + + +PIP: Class Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - f -

    +
    +
    + + + + diff --git a/pip/doc/html/functions_func.html b/pip/doc/html/functions_func.html new file mode 100644 index 0000000..59a670d --- /dev/null +++ b/pip/doc/html/functions_func.html @@ -0,0 +1,241 @@ + + + + + + +PIP: Class Members - Functions + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +  + +

    - a -

    +
    +
    + + + + diff --git a/pip/doc/html/functions_func.js b/pip/doc/html/functions_func.js new file mode 100644 index 0000000..e9685c0 --- /dev/null +++ b/pip/doc/html/functions_func.js @@ -0,0 +1,26 @@ +var functions_func = +[ + [ "a", "functions_func.html", null ], + [ "b", "functions_func_b.html", null ], + [ "c", "functions_func_c.html", null ], + [ "d", "functions_func_d.html", null ], + [ "e", "functions_func_e.html", null ], + [ "f", "functions_func_f.html", null ], + [ "g", "functions_func_g.html", null ], + [ "h", "functions_func_h.html", null ], + [ "i", "functions_func_i.html", null ], + [ "j", "functions_func_j.html", null ], + [ "k", "functions_func_k.html", null ], + [ "l", "functions_func_l.html", null ], + [ "m", "functions_func_m.html", null ], + [ "n", "functions_func_n.html", null ], + [ "o", "functions_func_o.html", null ], + [ "p", "functions_func_p.html", null ], + [ "q", "functions_func_q.html", null ], + [ "r", "functions_func_r.html", null ], + [ "s", "functions_func_s.html", null ], + [ "t", "functions_func_t.html", null ], + [ "u", "functions_func_u.html", null ], + [ "v", "functions_func_v.html", null ], + [ "w", "functions_func_w.html", null ] +]; \ No newline at end of file diff --git a/pip/doc/html/functions_func_b.html b/pip/doc/html/functions_func_b.html new file mode 100644 index 0000000..aeabb5f --- /dev/null +++ b/pip/doc/html/functions_func_b.html @@ -0,0 +1,174 @@ + + + + + + +PIP: Class Members - Functions + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +  + +

    - b -

    +
    +
    + + + + diff --git a/pip/doc/html/functions_func_c.html b/pip/doc/html/functions_func_c.html new file mode 100644 index 0000000..e96b2ed --- /dev/null +++ b/pip/doc/html/functions_func_c.html @@ -0,0 +1,285 @@ + + + + + + +PIP: Class Members - Functions + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +  + +

    - c -

    +
    +
    + + + + diff --git a/pip/doc/html/functions_func_d.html b/pip/doc/html/functions_func_d.html new file mode 100644 index 0000000..19e6e58 --- /dev/null +++ b/pip/doc/html/functions_func_d.html @@ -0,0 +1,201 @@ + + + + + + +PIP: Class Members - Functions + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +  + +

    - d -

    +
    +
    + + + + diff --git a/pip/doc/html/functions_func_e.html b/pip/doc/html/functions_func_e.html new file mode 100644 index 0000000..98862ff --- /dev/null +++ b/pip/doc/html/functions_func_e.html @@ -0,0 +1,240 @@ + + + + + + +PIP: Class Members - Functions + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +  + +

    - e -

    +
    +
    + + + + diff --git a/pip/doc/html/functions_func_f.html b/pip/doc/html/functions_func_f.html new file mode 100644 index 0000000..ae7c93a --- /dev/null +++ b/pip/doc/html/functions_func_f.html @@ -0,0 +1,244 @@ + + + + + + +PIP: Class Members - Functions + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +  + +

    - f -

    +
    +
    + + + + diff --git a/pip/doc/html/functions_func_g.html b/pip/doc/html/functions_func_g.html new file mode 100644 index 0000000..4191b8b --- /dev/null +++ b/pip/doc/html/functions_func_g.html @@ -0,0 +1,188 @@ + + + + + + +PIP: Class Members - Functions + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +  + +

    - g -

    +
    +
    + + + + diff --git a/pip/doc/html/functions_func_h.html b/pip/doc/html/functions_func_h.html new file mode 100644 index 0000000..d9b3b84 --- /dev/null +++ b/pip/doc/html/functions_func_h.html @@ -0,0 +1,165 @@ + + + + + + +PIP: Class Members - Functions + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + + + + + + diff --git a/pip/doc/html/functions_func_i.html b/pip/doc/html/functions_func_i.html new file mode 100644 index 0000000..0c2d131 --- /dev/null +++ b/pip/doc/html/functions_func_i.html @@ -0,0 +1,271 @@ + + + + + + +PIP: Class Members - Functions + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +  + +

    - i -

    +
    +
    + + + + diff --git a/pip/doc/html/functions_func_j.html b/pip/doc/html/functions_func_j.html new file mode 100644 index 0000000..e3b945f --- /dev/null +++ b/pip/doc/html/functions_func_j.html @@ -0,0 +1,168 @@ + + + + + + +PIP: Class Members - Functions + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + + + + + + diff --git a/pip/doc/html/functions_func_k.html b/pip/doc/html/functions_func_k.html new file mode 100644 index 0000000..1af6744 --- /dev/null +++ b/pip/doc/html/functions_func_k.html @@ -0,0 +1,166 @@ + + + + + + +PIP: Class Members - Functions + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + + + + + + diff --git a/pip/doc/html/functions_func_l.html b/pip/doc/html/functions_func_l.html new file mode 100644 index 0000000..8cd0e69 --- /dev/null +++ b/pip/doc/html/functions_func_l.html @@ -0,0 +1,184 @@ + + + + + + +PIP: Class Members - Functions + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +  + +

    - l -

    +
    +
    + + + + diff --git a/pip/doc/html/functions_func_m.html b/pip/doc/html/functions_func_m.html new file mode 100644 index 0000000..0e6bc82 --- /dev/null +++ b/pip/doc/html/functions_func_m.html @@ -0,0 +1,180 @@ + + + + + + +PIP: Class Members - Functions + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +  + +

    - m -

    +
    +
    + + + + diff --git a/pip/doc/html/functions_func_n.html b/pip/doc/html/functions_func_n.html new file mode 100644 index 0000000..5bd3c47 --- /dev/null +++ b/pip/doc/html/functions_func_n.html @@ -0,0 +1,175 @@ + + + + + + +PIP: Class Members - Functions + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +  + +

    - n -

    +
    +
    + + + + diff --git a/pip/doc/html/functions_func_o.html b/pip/doc/html/functions_func_o.html new file mode 100644 index 0000000..c0be8f2 --- /dev/null +++ b/pip/doc/html/functions_func_o.html @@ -0,0 +1,323 @@ + + + + + + +PIP: Class Members - Functions + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +  + +

    - o -

    +
    +
    + + + + diff --git a/pip/doc/html/functions_func_p.html b/pip/doc/html/functions_func_p.html new file mode 100644 index 0000000..e0720f8 --- /dev/null +++ b/pip/doc/html/functions_func_p.html @@ -0,0 +1,299 @@ + + + + + + +PIP: Class Members - Functions + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +  + +

    - p -

    +
    +
    + + + + diff --git a/pip/doc/html/functions_func_q.html b/pip/doc/html/functions_func_q.html new file mode 100644 index 0000000..bdb6ee0 --- /dev/null +++ b/pip/doc/html/functions_func_q.html @@ -0,0 +1,174 @@ + + + + + + +PIP: Class Members - Functions + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +  + +

    - q -

    +
    +
    + + + + diff --git a/pip/doc/html/functions_func_r.html b/pip/doc/html/functions_func_r.html new file mode 100644 index 0000000..d08d137 --- /dev/null +++ b/pip/doc/html/functions_func_r.html @@ -0,0 +1,336 @@ + + + + + + +PIP: Class Members - Functions + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +  + +

    - r -

    +
    +
    + + + + diff --git a/pip/doc/html/functions_func_s.html b/pip/doc/html/functions_func_s.html new file mode 100644 index 0000000..af6263d --- /dev/null +++ b/pip/doc/html/functions_func_s.html @@ -0,0 +1,435 @@ + + + + + + +PIP: Class Members - Functions + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +  + +

    - s -

    +
    +
    + + + + diff --git a/pip/doc/html/functions_func_t.html b/pip/doc/html/functions_func_t.html new file mode 100644 index 0000000..a54c506 --- /dev/null +++ b/pip/doc/html/functions_func_t.html @@ -0,0 +1,351 @@ + + + + + + +PIP: Class Members - Functions + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +  + +

    - t -

    +
    +
    + + + + diff --git a/pip/doc/html/functions_func_u.html b/pip/doc/html/functions_func_u.html new file mode 100644 index 0000000..ea446f4 --- /dev/null +++ b/pip/doc/html/functions_func_u.html @@ -0,0 +1,169 @@ + + + + + + +PIP: Class Members - Functions + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + + + + + + diff --git a/pip/doc/html/functions_func_v.html b/pip/doc/html/functions_func_v.html new file mode 100644 index 0000000..913d731 --- /dev/null +++ b/pip/doc/html/functions_func_v.html @@ -0,0 +1,177 @@ + + + + + + +PIP: Class Members - Functions + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +  + +

    - v -

    +
    +
    + + + + diff --git a/pip/doc/html/functions_func_w.html b/pip/doc/html/functions_func_w.html new file mode 100644 index 0000000..91bee8e --- /dev/null +++ b/pip/doc/html/functions_func_w.html @@ -0,0 +1,187 @@ + + + + + + +PIP: Class Members - Functions + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +  + +

    - w -

    +
    +
    + + + + diff --git a/pip/doc/html/functions_g.html b/pip/doc/html/functions_g.html new file mode 100644 index 0000000..e303fd1 --- /dev/null +++ b/pip/doc/html/functions_g.html @@ -0,0 +1,196 @@ + + + + + + +PIP: Class Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - g -

    +
    +
    + + + + diff --git a/pip/doc/html/functions_h.html b/pip/doc/html/functions_h.html new file mode 100644 index 0000000..90bbfa8 --- /dev/null +++ b/pip/doc/html/functions_h.html @@ -0,0 +1,182 @@ + + + + + + +PIP: Class Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - h -

    +
    +
    + + + + diff --git a/pip/doc/html/functions_i.html b/pip/doc/html/functions_i.html new file mode 100644 index 0000000..1fcabb2 --- /dev/null +++ b/pip/doc/html/functions_i.html @@ -0,0 +1,311 @@ + + + + + + +PIP: Class Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - i -

    +
    +
    + + + + diff --git a/pip/doc/html/functions_j.html b/pip/doc/html/functions_j.html new file mode 100644 index 0000000..21ae90a --- /dev/null +++ b/pip/doc/html/functions_j.html @@ -0,0 +1,169 @@ + + + + + + +PIP: Class Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - j -

    +
    +
    + + + + diff --git a/pip/doc/html/functions_k.html b/pip/doc/html/functions_k.html new file mode 100644 index 0000000..48dbb14 --- /dev/null +++ b/pip/doc/html/functions_k.html @@ -0,0 +1,167 @@ + + + + + + +PIP: Class Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - k -

    +
    +
    + + + + diff --git a/pip/doc/html/functions_l.html b/pip/doc/html/functions_l.html new file mode 100644 index 0000000..5c8b0f1 --- /dev/null +++ b/pip/doc/html/functions_l.html @@ -0,0 +1,200 @@ + + + + + + +PIP: Class Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - l -

    +
    +
    + + + + diff --git a/pip/doc/html/functions_m.html b/pip/doc/html/functions_m.html new file mode 100644 index 0000000..547c606 --- /dev/null +++ b/pip/doc/html/functions_m.html @@ -0,0 +1,187 @@ + + + + + + +PIP: Class Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - m -

    +
    +
    + + + + diff --git a/pip/doc/html/functions_n.html b/pip/doc/html/functions_n.html new file mode 100644 index 0000000..e3adc80 --- /dev/null +++ b/pip/doc/html/functions_n.html @@ -0,0 +1,193 @@ + + + + + + +PIP: Class Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - n -

    +
    +
    + + + + diff --git a/pip/doc/html/functions_o.html b/pip/doc/html/functions_o.html new file mode 100644 index 0000000..ec6e213 --- /dev/null +++ b/pip/doc/html/functions_o.html @@ -0,0 +1,331 @@ + + + + + + +PIP: Class Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - o -

    +
    +
    + + + + diff --git a/pip/doc/html/functions_p.html b/pip/doc/html/functions_p.html new file mode 100644 index 0000000..30bd6b4 --- /dev/null +++ b/pip/doc/html/functions_p.html @@ -0,0 +1,342 @@ + + + + + + +PIP: Class Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - p -

    +
    +
    + + + + diff --git a/pip/doc/html/functions_q.html b/pip/doc/html/functions_q.html new file mode 100644 index 0000000..b59c093 --- /dev/null +++ b/pip/doc/html/functions_q.html @@ -0,0 +1,181 @@ + + + + + + +PIP: Class Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - q -

    +
    +
    + + + + diff --git a/pip/doc/html/functions_r.html b/pip/doc/html/functions_r.html new file mode 100644 index 0000000..c936ced --- /dev/null +++ b/pip/doc/html/functions_r.html @@ -0,0 +1,358 @@ + + + + + + +PIP: Class Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - r -

    +
    +
    + + + + diff --git a/pip/doc/html/functions_rela.html b/pip/doc/html/functions_rela.html new file mode 100644 index 0000000..3e82a34 --- /dev/null +++ b/pip/doc/html/functions_rela.html @@ -0,0 +1,323 @@ + + + + + + +PIP: Class Members - Related Functions + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +  + +

    - a -

    + + +

    - c -

    + + +

    - d -

    + + +

    - e -

    + + +

    - h -

    + + +

    - o -

    + + +

    - p -

    + + +

    - r -

    + + +

    - w -

    +
    +
    + + + + diff --git a/pip/doc/html/functions_s.html b/pip/doc/html/functions_s.html new file mode 100644 index 0000000..11693a1 --- /dev/null +++ b/pip/doc/html/functions_s.html @@ -0,0 +1,469 @@ + + + + + + +PIP: Class Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - s -

    +
    +
    + + + + diff --git a/pip/doc/html/functions_t.html b/pip/doc/html/functions_t.html new file mode 100644 index 0000000..3b807ec --- /dev/null +++ b/pip/doc/html/functions_t.html @@ -0,0 +1,384 @@ + + + + + + +PIP: Class Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - t -

    +
    +
    + + + + diff --git a/pip/doc/html/functions_type.html b/pip/doc/html/functions_type.html new file mode 100644 index 0000000..90732e4 --- /dev/null +++ b/pip/doc/html/functions_type.html @@ -0,0 +1,139 @@ + + + + + + +PIP: Class Members - Typedefs + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + + + + + + diff --git a/pip/doc/html/functions_u.html b/pip/doc/html/functions_u.html new file mode 100644 index 0000000..887d997 --- /dev/null +++ b/pip/doc/html/functions_u.html @@ -0,0 +1,198 @@ + + + + + + +PIP: Class Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - u -

    +
    +
    + + + + diff --git a/pip/doc/html/functions_v.html b/pip/doc/html/functions_v.html new file mode 100644 index 0000000..924ceb0 --- /dev/null +++ b/pip/doc/html/functions_v.html @@ -0,0 +1,179 @@ + + + + + + +PIP: Class Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - v -

    +
    +
    + + + + diff --git a/pip/doc/html/functions_vars.html b/pip/doc/html/functions_vars.html new file mode 100644 index 0000000..1e491fa --- /dev/null +++ b/pip/doc/html/functions_vars.html @@ -0,0 +1,196 @@ + + + + + + +PIP: Class Members - Variables + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + + + + + + diff --git a/pip/doc/html/functions_w.html b/pip/doc/html/functions_w.html new file mode 100644 index 0000000..0e165fc --- /dev/null +++ b/pip/doc/html/functions_w.html @@ -0,0 +1,209 @@ + + + + + + +PIP: Class Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - w -

    +
    +
    + + + + diff --git a/pip/doc/html/functions_y.html b/pip/doc/html/functions_y.html new file mode 100644 index 0000000..6877f2b --- /dev/null +++ b/pip/doc/html/functions_y.html @@ -0,0 +1,166 @@ + + + + + + +PIP: Class Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - y -

    +
    +
    + + + + diff --git a/pip/doc/html/globals.html b/pip/doc/html/globals.html new file mode 100644 index 0000000..d91de52 --- /dev/null +++ b/pip/doc/html/globals.html @@ -0,0 +1,405 @@ + + + + + + +PIP: File Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    Here is a list of all documented file members with links to the documentation:
    + +

    - _ -

      +
    • __PICONTAINERS_SIMPLE_TYPE__() +: pichar.h +
    • +
    + + +

    - a -

    + + +

    - c -

    + + +

    - e -

    + + +

    - f -

    + + +

    - h -

    + + +

    - l -

    + + +

    - m -

    + + +

    - o -

    + + +

    - p -

    + + +

    - q -

    + + +

    - r -

    + + +

    - w -

    +
    +
    + + + + diff --git a/pip/doc/html/globals_defs.html b/pip/doc/html/globals_defs.html new file mode 100644 index 0000000..eb6f219 --- /dev/null +++ b/pip/doc/html/globals_defs.html @@ -0,0 +1,265 @@ + + + + + + +PIP: File Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +  + +

    - a -

    + + +

    - c -

    + + +

    - f -

    + + +

    - h -

    + + +

    - l -

    + + +

    - m -

    + + +

    - p -

    + + +

    - q -

    + + +

    - w -

    +
    +
    + + + + diff --git a/pip/doc/html/globals_func.html b/pip/doc/html/globals_func.html new file mode 100644 index 0000000..0b355ca --- /dev/null +++ b/pip/doc/html/globals_func.html @@ -0,0 +1,282 @@ + + + + + + +PIP: File Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +  + +

    - _ -

      +
    • __PICONTAINERS_SIMPLE_TYPE__() +: pichar.h +
    • +
    + + +

    - c -

    + + +

    - e -

    + + +

    - l -

    + + +

    - m -

    + + +

    - o -

    + + +

    - p -

    + + +

    - r -

    +
    +
    + + + + diff --git a/pip/doc/html/globals_vars.html b/pip/doc/html/globals_vars.html new file mode 100644 index 0000000..b01cc9f --- /dev/null +++ b/pip/doc/html/globals_vars.html @@ -0,0 +1,131 @@ + + + + + + +PIP: File Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + + + + + + diff --git a/pip/doc/html/graph_legend.html b/pip/doc/html/graph_legend.html new file mode 100644 index 0000000..a6f4b3c --- /dev/null +++ b/pip/doc/html/graph_legend.html @@ -0,0 +1,176 @@ + + + + + + +PIP: Graph Legend + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    Graph Legend
    +
    +
    +

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

    +

    Consider the following example:

    1 /*! Invisible class because of truncation */
    +
    2 class Invisible { };
    +
    3 
    +
    4 /*! Truncated class, inheritance relation is hidden */
    +
    5 class Truncated : public Invisible { };
    +
    6 
    +
    7 /* Class not documented with doxygen comments */
    +
    8 class Undocumented { };
    +
    9 
    +
    10 /*! Class that is inherited using public inheritance */
    +
    11 class PublicBase : public Truncated { };
    +
    12 
    +
    13 /*! A template class */
    +
    14 template<class T> class Templ { };
    +
    15 
    +
    16 /*! Class that is inherited using protected inheritance */
    +
    17 class ProtectedBase { };
    +
    18 
    +
    19 /*! Class that is inherited using private inheritance */
    +
    20 class PrivateBase { };
    +
    21 
    +
    22 /*! Class that is used by the Inherited class */
    +
    23 class Used { };
    +
    24 
    +
    25 /*! Super class that inherits a number of other classes */
    +
    26 class Inherited : public PublicBase,
    +
    27  protected ProtectedBase,
    +
    28  private PrivateBase,
    +
    29  public Undocumented,
    +
    30  public Templ<int>
    +
    31 {
    +
    32  private:
    +
    33  Used *m_usedClass;
    +
    34 };
    +

    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 grey 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 labeled 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 labeled with the template parameters of the instance.
    • +
    +
    +
    + + + + diff --git a/pip/doc/html/graph_legend.md5 b/pip/doc/html/graph_legend.md5 new file mode 100644 index 0000000..cd7e542 --- /dev/null +++ b/pip/doc/html/graph_legend.md5 @@ -0,0 +1 @@ +e96e874ee5620cee7603f05827c7643a \ No newline at end of file diff --git a/pip/doc/html/graph_legend.svg b/pip/doc/html/graph_legend.svg new file mode 100644 index 0000000..09d5d26 --- /dev/null +++ b/pip/doc/html/graph_legend.svg @@ -0,0 +1,121 @@ + + + + + + +Graph Legend + + +Node9 + +Inherited + + +Node10 + + +PublicBase + + + + +Node10->Node9 + + + + +Node11 + + +Truncated + + + + +Node11->Node10 + + + + +Node13 + + +ProtectedBase + + + + +Node13->Node9 + + + + +Node14 + + +PrivateBase + + + + +Node14->Node9 + + + + +Node15 + +Undocumented + + +Node15->Node9 + + + + +Node16 + + +Templ< int > + + + + +Node16->Node9 + + + + +Node17 + + +Templ< T > + + + + +Node17->Node16 + + +< int > + + +Node18 + + +Used + + + + +Node18->Node9 + + +m_usedClass + + + diff --git a/pip/doc/html/hierarchy.html b/pip/doc/html/hierarchy.html new file mode 100644 index 0000000..1b0dc07 --- /dev/null +++ b/pip/doc/html/hierarchy.html @@ -0,0 +1,240 @@ + + + + + + +PIP: Class Hierarchy + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    Class Hierarchy
    +
    +
    +
    +

    Go to the graphical class hierarchy

    +This inheritance list is sorted roughly, but not completely, alphabetically:
    +
    [detail level 12345]
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
     CPIConfig::EntryEntry of configuration file
     CPIEthernet::InterfaceNetwork interface descriptor
     CPIByteArrayByte array
     CPICharUnicode char
     CPICollectionInterface to discover element groups
     CPICoutClass for formatted output similar std::cout
     CPIEvaluatorThis class provide mathematical evaluations of custom expression
     CPIFlags< Enum >This class used as container for bit flags
     CPIFlags< Attribute >
     CPIFlags< InterfaceFlag >
     CPIFlags< PICodeInfo::TypeFlag >
     CPIFlags< PIConsole::Format >
     CPIFlags< PICoutControl >
     CPIMutexMutex
     CPIObjectThis is base class for any classes which use events -> handlers mechanism
     CPICLICommand-line arguments parser
     CPIConnectionComplex Input/Output point
     CPIProtocol
     CPIStateMachine< Type >Base class for custom state machine
     CPIThreadThread class
     CPITimerTimer
     CPISet< T >Set of any type
     CPISet< const void * >
     CPISet< PIObject * >
     CPISet< PIString >
     CPIStringString class
     CPIStringListStrings array class
     CPISystemTimeSystem time
     CPITimeMeasurerTime measurements
     CPIVariantVariant type
     CPIVector< T >Dynamic array of any type
     CPIVector< __EHData >
     CPIVector< __EHFunc >
     CPIVector< _PITimerImp_Pool * >
     CPIVector< Argument >
     CPIVector< Column >
     CPIVector< complexd >
     CPIVector< Condition >
     CPIVector< Connection >
     CPIVector< const PIObject * >
     CPIVector< Define >
     CPIVector< Delimiter >
     CPIVector< DeviceData * >
     CPIVector< double >
     CPIVector< Entity * >
     CPIVector< Entry * >
     CPIConfig::BranchBranch is a list of entries of configuration file
     CPIVector< Entry >
     CPIVector< Enum >
     CPIVector< Enumerator >
     CPIVector< Extractor * >
     CPIVector< Group >
     CPIVector< int >
     CPIVector< Macro >
     CPIVector< Member >
     CPIVector< node >
     CPIVector< PeerInfo >
     CPIVector< PICodeInfo::EnumeratorInfo >
     CPIVector< PICodeInfo::FunctionInfo >
     CPIVector< PICodeInfo::TypeInfo >
     CPIVector< PIConnection * >
     CPIVector< PIDiagnostics * >
     CPIVector< PIEthernet * >
     CPIVector< PIEthernet::Interface >
     CPIEthernet::InterfaceListArray of Interface with some features
     CPIVector< PIEvaluatorTypes::Element >
     CPIVector< PIEvaluatorTypes::Function >
     CPIVector< PIEvaluatorTypes::Instruction >
     CPIVector< PIEvaluatorTypes::Variable >
     CPIVector< PIIODevice * >
     CPIVector< PIIODevice::DeviceMode >
     CPIVector< PIMathVectord >
     CPIVector< PIObject * >
     CPIVector< PIPair< PIByteArray, ullong > >
     CPIVector< PIProtocol * >
     CPIVector< PIStateMachine::Rule >
     CPIVector< PIStateMachine::State >
     CPIVector< PIString >
     CPIVector< PIUSB::Configuration >
     CPIVector< PIUSB::Endpoint >
     CPIVector< PIUSB::Interface >
     CPIVector< PIVariant >
     CPIVector< PIVector< double > >
     CPIVector< PIVector< PeerInfo * > >
     CPIVector< PIVector< PIIODevice * > >
     CPIVector< PIVector< PIPacketExtractor * > >
     CPIVector< PIVector< Type > >
     CPIVector< RemoteClient >
     CPIVector< Sender * >
     CPIVector< SOCKET >
     CPIVector< Tab >
     CPIVector< Type >
     CPIVector< Typedef >
     CPIVector< uchar >
     CPIVector< Variable >
     CPIByteArray::RawDataHelp struct to store/restore custom blocks of data to/from PIByteArray
     CPIStateMachine< Type >::RuleRule of transition between states of machine
     CPIStateMachine< Type >::StateState of machine
     CTransferFunctionDifferential evaluations
    +
    +
    +
    + + + + diff --git a/pip/doc/html/hierarchy.js b/pip/doc/html/hierarchy.js new file mode 100644 index 0000000..6a865c8 --- /dev/null +++ b/pip/doc/html/hierarchy.js @@ -0,0 +1,120 @@ +var hierarchy = +[ + [ "PIConfig::Entry", "class_p_i_config_1_1_entry.html", null ], + [ "PIEthernet::Interface", "struct_p_i_ethernet_1_1_interface.html", null ], + [ "PIByteArray", "class_p_i_byte_array.html", null ], + [ "PIChar", "class_p_i_char.html", null ], + [ "PICollection", "class_p_i_collection.html", null ], + [ "PICout", "class_p_i_cout.html", null ], + [ "PIEvaluator", "class_p_i_evaluator.html", null ], + [ "PIFlags< Enum >", "class_p_i_flags.html", null ], + [ "PIFlags< Attribute >", "class_p_i_flags.html", null ], + [ "PIFlags< InterfaceFlag >", "class_p_i_flags.html", null ], + [ "PIFlags< PICodeInfo::TypeFlag >", "class_p_i_flags.html", null ], + [ "PIFlags< PIConsole::Format >", "class_p_i_flags.html", null ], + [ "PIFlags< PICoutControl >", "class_p_i_flags.html", null ], + [ "PIMutex", "class_p_i_mutex.html", null ], + [ "PIObject", "class_p_i_object.html", [ + [ "PICLI", "class_p_i_c_l_i.html", null ], + [ "PIConnection", "class_p_i_connection.html", null ], + [ "PIProtocol", "class_p_i_protocol.html", null ], + [ "PIStateMachine< Type >", "class_p_i_state_machine.html", null ], + [ "PIThread", "class_p_i_thread.html", [ + [ "PIConsole", "class_p_i_console.html", null ], + [ "PIIODevice", "class_p_i_i_o_device.html", [ + [ "PIBinaryLog", "class_p_i_binary_log.html", null ], + [ "PIEthernet", "class_p_i_ethernet.html", null ], + [ "PIFile", "class_p_i_file.html", [ + [ "PIConfig", "class_p_i_config.html", null ] + ] ], + [ "PIPacketExtractor", "class_p_i_packet_extractor.html", null ], + [ "PISerial", "class_p_i_serial.html", null ] + ] ], + [ "PIKbdListener", "class_p_i_kbd_listener.html", null ], + [ "PIProcess", "class_p_i_process.html", null ] + ] ], + [ "PITimer", "class_p_i_timer.html", [ + [ "PIDiagnostics", "class_p_i_diagnostics.html", null ] + ] ] + ] ], + [ "PISet< T >", "class_p_i_set.html", null ], + [ "PISet< const void * >", "class_p_i_set.html", null ], + [ "PISet< PIObject * >", "class_p_i_set.html", null ], + [ "PISet< PIString >", "class_p_i_set.html", null ], + [ "PIString", "class_p_i_string.html", null ], + [ "PIStringList", "class_p_i_string_list.html", null ], + [ "PISystemTime", "class_p_i_system_time.html", null ], + [ "PITimeMeasurer", "class_p_i_time_measurer.html", null ], + [ "PIVariant", "class_p_i_variant.html", null ], + [ "PIVector< T >", "class_p_i_vector.html", null ], + [ "PIVector< __EHData >", "class_p_i_vector.html", null ], + [ "PIVector< __EHFunc >", "class_p_i_vector.html", null ], + [ "PIVector< _PITimerImp_Pool * >", "class_p_i_vector.html", null ], + [ "PIVector< Argument >", "class_p_i_vector.html", null ], + [ "PIVector< Column >", "class_p_i_vector.html", null ], + [ "PIVector< complexd >", "class_p_i_vector.html", null ], + [ "PIVector< Condition >", "class_p_i_vector.html", null ], + [ "PIVector< Connection >", "class_p_i_vector.html", null ], + [ "PIVector< const PIObject * >", "class_p_i_vector.html", null ], + [ "PIVector< Define >", "class_p_i_vector.html", null ], + [ "PIVector< Delimiter >", "class_p_i_vector.html", null ], + [ "PIVector< DeviceData * >", "class_p_i_vector.html", null ], + [ "PIVector< double >", "class_p_i_vector.html", null ], + [ "PIVector< Entity * >", "class_p_i_vector.html", null ], + [ "PIVector< Entry * >", "class_p_i_vector.html", [ + [ "PIConfig::Branch", "class_p_i_config_1_1_branch.html", null ] + ] ], + [ "PIVector< Entry >", "class_p_i_vector.html", null ], + [ "PIVector< Enum >", "class_p_i_vector.html", null ], + [ "PIVector< Enumerator >", "class_p_i_vector.html", null ], + [ "PIVector< Extractor * >", "class_p_i_vector.html", null ], + [ "PIVector< Group >", "class_p_i_vector.html", null ], + [ "PIVector< int >", "class_p_i_vector.html", null ], + [ "PIVector< Macro >", "class_p_i_vector.html", null ], + [ "PIVector< Member >", "class_p_i_vector.html", null ], + [ "PIVector< node >", "class_p_i_vector.html", null ], + [ "PIVector< PeerInfo >", "class_p_i_vector.html", null ], + [ "PIVector< PICodeInfo::EnumeratorInfo >", "class_p_i_vector.html", null ], + [ "PIVector< PICodeInfo::FunctionInfo >", "class_p_i_vector.html", null ], + [ "PIVector< PICodeInfo::TypeInfo >", "class_p_i_vector.html", null ], + [ "PIVector< PIConnection * >", "class_p_i_vector.html", null ], + [ "PIVector< PIDiagnostics * >", "class_p_i_vector.html", null ], + [ "PIVector< PIEthernet * >", "class_p_i_vector.html", null ], + [ "PIVector< PIEthernet::Interface >", "class_p_i_vector.html", [ + [ "PIEthernet::InterfaceList", "class_p_i_ethernet_1_1_interface_list.html", null ] + ] ], + [ "PIVector< PIEvaluatorTypes::Element >", "class_p_i_vector.html", null ], + [ "PIVector< PIEvaluatorTypes::Function >", "class_p_i_vector.html", null ], + [ "PIVector< PIEvaluatorTypes::Instruction >", "class_p_i_vector.html", null ], + [ "PIVector< PIEvaluatorTypes::Variable >", "class_p_i_vector.html", null ], + [ "PIVector< PIIODevice * >", "class_p_i_vector.html", null ], + [ "PIVector< PIIODevice::DeviceMode >", "class_p_i_vector.html", null ], + [ "PIVector< PIMathVectord >", "class_p_i_vector.html", null ], + [ "PIVector< PIObject * >", "class_p_i_vector.html", null ], + [ "PIVector< PIPair< PIByteArray, ullong > >", "class_p_i_vector.html", null ], + [ "PIVector< PIProtocol * >", "class_p_i_vector.html", null ], + [ "PIVector< PIStateMachine::Rule >", "class_p_i_vector.html", null ], + [ "PIVector< PIStateMachine::State >", "class_p_i_vector.html", null ], + [ "PIVector< PIString >", "class_p_i_vector.html", null ], + [ "PIVector< PIUSB::Configuration >", "class_p_i_vector.html", null ], + [ "PIVector< PIUSB::Endpoint >", "class_p_i_vector.html", null ], + [ "PIVector< PIUSB::Interface >", "class_p_i_vector.html", null ], + [ "PIVector< PIVariant >", "class_p_i_vector.html", null ], + [ "PIVector< PIVector< double > >", "class_p_i_vector.html", null ], + [ "PIVector< PIVector< PeerInfo * > >", "class_p_i_vector.html", null ], + [ "PIVector< PIVector< PIIODevice * > >", "class_p_i_vector.html", null ], + [ "PIVector< PIVector< PIPacketExtractor * > >", "class_p_i_vector.html", null ], + [ "PIVector< PIVector< Type > >", "class_p_i_vector.html", null ], + [ "PIVector< RemoteClient >", "class_p_i_vector.html", null ], + [ "PIVector< Sender * >", "class_p_i_vector.html", null ], + [ "PIVector< SOCKET >", "class_p_i_vector.html", null ], + [ "PIVector< Tab >", "class_p_i_vector.html", null ], + [ "PIVector< Type >", "class_p_i_vector.html", null ], + [ "PIVector< Typedef >", "class_p_i_vector.html", null ], + [ "PIVector< uchar >", "class_p_i_vector.html", null ], + [ "PIVector< Variable >", "class_p_i_vector.html", null ], + [ "PIByteArray::RawData", "struct_p_i_byte_array_1_1_raw_data.html", null ], + [ "PIStateMachine< Type >::Rule", "struct_p_i_state_machine_1_1_rule.html", null ], + [ "PIStateMachine< Type >::State", "struct_p_i_state_machine_1_1_state.html", null ], + [ "TransferFunction", "struct_transfer_function.html", null ] +]; \ No newline at end of file diff --git a/pip/doc/html/index.html b/pip/doc/html/index.html new file mode 100644 index 0000000..ecc57d5 --- /dev/null +++ b/pip/doc/html/index.html @@ -0,0 +1,150 @@ + + + + + + +PIP: What is PIP + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    What is PIP
    +
    +
    +

    PIP - Platform-Independent Primitives - is crossplatform library for C++ developers. It is wrap around STL and pure C++. This library can help developers write non-GUI projects much more quickly, efficiently and customizable than on pure C++. Library contains many classes, some of them are pure abstract, some classes can be used as they are, some classes should be inherited to new classes. PIP provide classes:

    +
    +
    + + + + diff --git a/pip/doc/html/index.qhp b/pip/doc/html/index.qhp new file mode 100644 index 0000000..3842f8c --- /dev/null +++ b/pip/doc/html/index.qhp @@ -0,0 +1,6202 @@ + + + PIP + doc + + doxygen + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + tabs.css + tab_a.png + tab_b.png + tab_h.png + tab_s.png + nav_h.png + nav_f.png + bc_s.png + doxygen.png + closed.png + open.png + bdwn.png + sync_on.png + sync_off.png + ftv2blank.png + ftv2doc.png + ftv2folderclosed.png + ftv2folderopen.png + ftv2lastnode.png + ftv2link.png + ftv2mlastnode.png + ftv2mnode.png + ftv2node.png + ftv2plastnode.png + ftv2pnode.png + ftv2vertline.png + ftv2splitbar.png + doxygen.css + /search/mag_sel.png + /search/search_l.png + /search/search_m.png + /search/search_r.png + /search/close.png + search/search.css + search/search.js + picodeinfo_8h.html + picodeparser_8h.html + picontainers_8h.html + pideque_8h.html + pimap_8h.html + piset_8h.html + pistack_8h.html + pivector_8h.html + pibytearray_8h.html + pichar_8h.html + picli_8h.html + picollection_8h.html + piincludes_8h.html + piinit_8h.html + piobject_8h.html + pistatemachine_8h.html + pistring_8h.html + pitime_8h.html + pivariant_8h.html + pibinarylog_8h.html + piconfig_8h.html + piconnection_8h.html + pidiagnostics_8h.html + piethernet_8h.html + pifile_8h.html + piiodevice_8h.html + pipacketextractor_8h.html + pipeer_8h.html + piprotocol_8h.html + piserial_8h.html + piusb_8h.html + picrc_8h.html + pievaluator_8h.html + pimath_8h.html + piconsole_8h.html + pikbdlistener_8h.html + piprocess_8h.html + pisignals_8h.html + pimutex_8h.html + pithread_8h.html + pitimer_8h.html + using_basic.html + using_advanced.html + deprecated.html + class_p_i_binary_log.html + class_p_i_binary_log__inherit__graph.svg + class_p_i_binary_log-members.html + class_p_i_byte_array.html + class_p_i_byte_array-members.html + struct_p_i_byte_array_1_1_raw_data.html + struct_p_i_byte_array_1_1_raw_data-members.html + class_p_i_char.html + class_p_i_char-members.html + class_p_i_c_l_i.html + class_p_i_c_l_i__inherit__graph.svg + class_p_i_c_l_i-members.html + class_p_i_collection.html + class_p_i_collection-members.html + class_p_i_config.html + class_p_i_config__inherit__graph.svg + piconfig.png + class_p_i_config-members.html + class_p_i_config_1_1_branch.html + class_p_i_config_1_1_branch__inherit__graph.svg + class_p_i_config_1_1_branch-members.html + class_p_i_config_1_1_entry.html + class_p_i_config_1_1_entry-members.html + class_p_i_connection.html + class_p_i_connection__inherit__graph.svg + piconnection.png + piconnection_filters.png + piconnection_senders.png + piconnection_conf.png + class_p_i_connection-members.html + class_p_i_console.html + class_p_i_console__inherit__graph.svg + piconsole_layout.png + class_p_i_console-members.html + class_p_i_cout.html + class_p_i_cout-members.html + class_p_i_diagnostics.html + class_p_i_diagnostics__inherit__graph.svg + class_p_i_diagnostics-members.html + class_p_i_ethernet.html + class_p_i_ethernet__inherit__graph.svg + class_p_i_ethernet-members.html + struct_p_i_ethernet_1_1_interface.html + struct_p_i_ethernet_1_1_interface-members.html + class_p_i_ethernet_1_1_interface_list.html + class_p_i_ethernet_1_1_interface_list__inherit__graph.svg + class_p_i_ethernet_1_1_interface_list-members.html + class_p_i_evaluator.html + class_p_i_evaluator-members.html + class_p_i_file.html + class_p_i_file__inherit__graph.svg + class_p_i_file-members.html + class_p_i_flags.html + class_p_i_flags-members.html + class_p_i_i_o_device.html + class_p_i_i_o_device__inherit__graph.svg + class_p_i_i_o_device-members.html + class_p_i_kbd_listener.html + class_p_i_kbd_listener__inherit__graph.svg + class_p_i_kbd_listener-members.html + class_p_i_mutex.html + class_p_i_mutex-members.html + class_p_i_object.html + class_p_i_object__inherit__graph.svg + events_handlers.png + class_p_i_object-members.html + class_p_i_packet_extractor.html + class_p_i_packet_extractor__inherit__graph.svg + packet_detection.png + class_p_i_packet_extractor-members.html + class_p_i_process.html + class_p_i_process__inherit__graph.svg + class_p_i_process-members.html + class_p_i_protocol.html + class_p_i_protocol__inherit__graph.svg + class_p_i_protocol-members.html + class_p_i_serial.html + class_p_i_serial__inherit__graph.svg + class_p_i_serial-members.html + class_p_i_set.html + class_p_i_set-members.html + class_p_i_state_machine.html + class_p_i_state_machine__inherit__graph.svg + class_p_i_state_machine-members.html + struct_p_i_state_machine_1_1_rule.html + struct_p_i_state_machine_1_1_rule-members.html + struct_p_i_state_machine_1_1_state.html + struct_p_i_state_machine_1_1_state-members.html + class_p_i_string.html + class_p_i_string-members.html + class_p_i_string_list.html + class_p_i_string_list-members.html + class_p_i_system_time.html + class_p_i_system_time-members.html + class_p_i_thread.html + class_p_i_thread__inherit__graph.svg + class_p_i_thread-members.html + class_p_i_time_measurer.html + class_p_i_time_measurer-members.html + class_p_i_timer.html + class_p_i_timer__inherit__graph.svg + class_p_i_timer-members.html + class_p_i_variant.html + class_p_i_variant-members.html + class_p_i_vector.html + class_p_i_vector-members.html + struct_transfer_function.html + struct_transfer_function-members.html + namespace_p_i_cout_manipulators.html + graph_legend.svg + graph_legend.html + dir_3edb929655fe9d5ef5f6ec0f70ce278e.html + dir_3edb929655fe9d5ef5f6ec0f70ce278e_dep.svg + dir_3ef7287b8e7a9ed45eff58e9a3bb8bc1.html + dir_3ef7287b8e7a9ed45eff58e9a3bb8bc1_dep.svg + dir_0b61c55142250c0cc363383afd8075a4.html + dir_0b61c55142250c0cc363383afd8075a4_dep.svg + dir_aebb8dcc11953d78e620bbef0b9e2183.html + dir_aebb8dcc11953d78e620bbef0b9e2183_dep.svg + dir_c184e51c84f2c3f0345bbc8a0d75d3e1.html + dir_c184e51c84f2c3f0345bbc8a0d75d3e1_dep.svg + dir_ae9a93452e2a84339148a16bcf2eb561.html + dir_ae9a93452e2a84339148a16bcf2eb561_dep.svg + dir_68267d1309a1af8e8297ef4c3efbcdba.html + dir_68267d1309a1af8e8297ef4c3efbcdba_dep.svg + dir_d501334aeb1b78ad67cd3c72c37b1e87.html + dir_d501334aeb1b78ad67cd3c72c37b1e87_dep.svg + dir_bfedb72b9d87795234454f6223b9ab1e.html + dir_bfedb72b9d87795234454f6223b9ab1e_dep.svg + dir_000001_000006.html + dir_000002_000006.html + dir_000002_000005.html + dir_000002_000004.html + dir_000006_000004.html + dir_000005_000004.html + dir_000004_000006.html + dir_000004_000005.html + dir_000003_000004.html + dir_000004_000003.html + dir_000007_000003.html + dir_000007_000008.html + dir_000007_000005.html + dir_000008_000004.html + dir_000005_000007.html + dir_000005_000008.html + dir_000004_000007.html + dir_000004_000008.html + index.html + pages.html + namespaces.html + namespacemembers.html + namespacemembers.html + namespacemembers.html + namespacemembers.html + namespacemembers.html + namespacemembers.html + namespacemembers.html + namespacemembers.html + namespacemembers.html + namespacemembers.html + namespacemembers.html + namespacemembers.html + namespacemembers.html + namespacemembers.html + namespacemembers.html + namespacemembers.html + namespacemembers.html + namespacemembers.html + namespacemembers.html + namespacemembers_enum.html + namespacemembers_eval.html + namespacemembers_eval.html + namespacemembers_eval.html + namespacemembers_eval.html + namespacemembers_eval.html + namespacemembers_eval.html + namespacemembers_eval.html + namespacemembers_eval.html + namespacemembers_eval.html + namespacemembers_eval.html + namespacemembers_eval.html + namespacemembers_eval.html + namespacemembers_eval.html + namespacemembers_eval.html + namespacemembers_eval.html + namespacemembers_eval.html + namespacemembers_eval.html + namespacemembers_eval.html + annotated.html + classes.html + hierarchy.html + inherits.html + inherit_graph_0.svg + inherit_graph_1.svg + inherit_graph_2.svg + inherit_graph_3.svg + inherit_graph_4.svg + inherit_graph_5.svg + inherit_graph_6.svg + inherit_graph_7.svg + inherit_graph_8.svg + inherit_graph_9.svg + inherit_graph_10.svg + inherit_graph_11.svg + inherit_graph_12.svg + inherit_graph_13.svg + inherit_graph_14.svg + inherit_graph_15.svg + inherit_graph_16.svg + inherit_graph_17.svg + inherit_graph_18.svg + inherit_graph_19.svg + inherit_graph_20.svg + inherit_graph_21.svg + inherit_graph_22.svg + inherit_graph_23.svg + inherit_graph_24.svg + inherit_graph_25.svg + inherit_graph_26.svg + inherit_graph_27.svg + inherit_graph_28.svg + inherit_graph_29.svg + inherit_graph_30.svg + inherit_graph_31.svg + inherit_graph_32.svg + inherit_graph_33.svg + inherit_graph_34.svg + inherit_graph_35.svg + inherit_graph_36.svg + inherit_graph_37.svg + inherit_graph_38.svg + inherit_graph_39.svg + inherit_graph_40.svg + inherit_graph_41.svg + inherit_graph_42.svg + inherit_graph_43.svg + inherit_graph_44.svg + inherit_graph_45.svg + inherit_graph_46.svg + inherit_graph_47.svg + inherit_graph_48.svg + inherit_graph_49.svg + inherit_graph_50.svg + inherit_graph_51.svg + inherit_graph_52.svg + inherit_graph_53.svg + inherit_graph_54.svg + inherit_graph_55.svg + inherit_graph_56.svg + inherit_graph_57.svg + inherit_graph_58.svg + inherit_graph_59.svg + inherit_graph_60.svg + inherit_graph_61.svg + inherit_graph_62.svg + inherit_graph_63.svg + inherit_graph_64.svg + inherit_graph_65.svg + inherit_graph_66.svg + inherit_graph_67.svg + inherit_graph_68.svg + inherit_graph_69.svg + inherit_graph_70.svg + inherit_graph_71.svg + inherit_graph_72.svg + inherit_graph_73.svg + inherit_graph_74.svg + inherit_graph_75.svg + inherit_graph_76.svg + inherit_graph_77.svg + inherit_graph_78.svg + inherit_graph_79.svg + inherit_graph_80.svg + inherit_graph_81.svg + inherit_graph_82.svg + inherit_graph_83.svg + inherit_graph_84.svg + inherit_graph_85.svg + inherit_graph_86.svg + inherit_graph_87.svg + inherit_graph_88.svg + inherit_graph_89.svg + inherit_graph_90.svg + functions.html + functions_b.html + functions_c.html + functions_d.html + functions_e.html + functions_f.html + functions_g.html + functions_h.html + functions_i.html + functions_j.html + functions_k.html + functions_l.html + functions_m.html + functions_n.html + functions_o.html + functions_p.html + functions_q.html + functions_r.html + functions_s.html + functions_t.html + functions_u.html + functions_v.html + functions_w.html + functions_y.html + functions_func.html + functions_func_b.html + functions_func_c.html + functions_func_d.html + functions_func_e.html + functions_func_f.html + functions_func_g.html + functions_func_h.html + functions_func_i.html + functions_func_j.html + functions_func_k.html + functions_func_l.html + functions_func_m.html + functions_func_n.html + functions_func_o.html + functions_func_p.html + functions_func_q.html + functions_func_r.html + functions_func_s.html + functions_func_t.html + functions_func_u.html + functions_func_v.html + functions_func_w.html + functions_vars.html + functions_vars.html + functions_vars.html + functions_vars.html + functions_vars.html + functions_vars.html + functions_vars.html + functions_vars.html + functions_vars.html + functions_vars.html + functions_vars.html + functions_vars.html + functions_vars.html + functions_type.html + functions_type.html + functions_enum.html + functions_enum.html + functions_enum.html + functions_enum.html + functions_enum.html + functions_enum.html + functions_enum.html + functions_eval.html + functions_eval.html + functions_eval.html + functions_eval.html + functions_eval.html + functions_eval.html + functions_eval.html + functions_eval.html + functions_eval.html + functions_eval.html + functions_eval.html + functions_eval.html + functions_eval.html + functions_eval.html + functions_eval.html + functions_eval.html + functions_eval.html + functions_eval.html + functions_eval.html + functions_rela.html + functions_rela.html + functions_rela.html + functions_rela.html + functions_rela.html + functions_rela.html + functions_rela.html + functions_rela.html + functions_rela.html + files.html + globals.html + globals.html + globals.html + globals.html + globals.html + globals.html + globals.html + globals.html + globals.html + globals.html + globals.html + globals.html + globals.html + globals_func.html + globals_func.html + globals_func.html + globals_func.html + globals_func.html + globals_func.html + globals_func.html + globals_func.html + globals_vars.html + globals_defs.html + globals_defs.html + globals_defs.html + globals_defs.html + globals_defs.html + globals_defs.html + globals_defs.html + globals_defs.html + globals_defs.html + + + diff --git a/pip/doc/html/inherit_graph_0.map b/pip/doc/html/inherit_graph_0.map new file mode 100644 index 0000000..96bf26c --- /dev/null +++ b/pip/doc/html/inherit_graph_0.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_0.md5 b/pip/doc/html/inherit_graph_0.md5 new file mode 100644 index 0000000..cb4c7d2 --- /dev/null +++ b/pip/doc/html/inherit_graph_0.md5 @@ -0,0 +1 @@ +57ff830eb1ddb53ceb3146342813ca75 \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_0.svg b/pip/doc/html/inherit_graph_0.svg new file mode 100644 index 0000000..0fd8643 --- /dev/null +++ b/pip/doc/html/inherit_graph_0.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIByteArray + + + + + diff --git a/pip/doc/html/inherit_graph_1.map b/pip/doc/html/inherit_graph_1.map new file mode 100644 index 0000000..895a7b9 --- /dev/null +++ b/pip/doc/html/inherit_graph_1.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_1.md5 b/pip/doc/html/inherit_graph_1.md5 new file mode 100644 index 0000000..eb2e607 --- /dev/null +++ b/pip/doc/html/inherit_graph_1.md5 @@ -0,0 +1 @@ +2c83a509a543f3083e793db32376bd59 \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_1.svg b/pip/doc/html/inherit_graph_1.svg new file mode 100644 index 0000000..71f7831 --- /dev/null +++ b/pip/doc/html/inherit_graph_1.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIByteArray::RawData + + + + + diff --git a/pip/doc/html/inherit_graph_10.map b/pip/doc/html/inherit_graph_10.map new file mode 100644 index 0000000..b4772a3 --- /dev/null +++ b/pip/doc/html/inherit_graph_10.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_10.md5 b/pip/doc/html/inherit_graph_10.md5 new file mode 100644 index 0000000..7ac12a5 --- /dev/null +++ b/pip/doc/html/inherit_graph_10.md5 @@ -0,0 +1 @@ +8c0e0e9416849f66df2cb8ca235b3b33 \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_10.svg b/pip/doc/html/inherit_graph_10.svg new file mode 100644 index 0000000..c320fe6 --- /dev/null +++ b/pip/doc/html/inherit_graph_10.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIFlags< InterfaceFlag > + + + + + diff --git a/pip/doc/html/inherit_graph_11.map b/pip/doc/html/inherit_graph_11.map new file mode 100644 index 0000000..ca3d051 --- /dev/null +++ b/pip/doc/html/inherit_graph_11.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_11.md5 b/pip/doc/html/inherit_graph_11.md5 new file mode 100644 index 0000000..af555a9 --- /dev/null +++ b/pip/doc/html/inherit_graph_11.md5 @@ -0,0 +1 @@ +527cefb742f2a2ef03607dd6cd487f45 \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_11.svg b/pip/doc/html/inherit_graph_11.svg new file mode 100644 index 0000000..0adc38b --- /dev/null +++ b/pip/doc/html/inherit_graph_11.svg @@ -0,0 +1,22 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIFlags< PICodeInfo +::TypeFlag > + + + + + diff --git a/pip/doc/html/inherit_graph_12.map b/pip/doc/html/inherit_graph_12.map new file mode 100644 index 0000000..67ac0d6 --- /dev/null +++ b/pip/doc/html/inherit_graph_12.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_12.md5 b/pip/doc/html/inherit_graph_12.md5 new file mode 100644 index 0000000..1800226 --- /dev/null +++ b/pip/doc/html/inherit_graph_12.md5 @@ -0,0 +1 @@ +f33dfda47f29f2c55b569ba876160389 \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_12.svg b/pip/doc/html/inherit_graph_12.svg new file mode 100644 index 0000000..0d98b4a --- /dev/null +++ b/pip/doc/html/inherit_graph_12.svg @@ -0,0 +1,22 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIFlags< PIConsole +::Format > + + + + + diff --git a/pip/doc/html/inherit_graph_13.map b/pip/doc/html/inherit_graph_13.map new file mode 100644 index 0000000..f32790f --- /dev/null +++ b/pip/doc/html/inherit_graph_13.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_13.md5 b/pip/doc/html/inherit_graph_13.md5 new file mode 100644 index 0000000..44499ce --- /dev/null +++ b/pip/doc/html/inherit_graph_13.md5 @@ -0,0 +1 @@ +cd38e82dd9baba61e1dd7a91123b3b2b \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_13.svg b/pip/doc/html/inherit_graph_13.svg new file mode 100644 index 0000000..3b4a9a3 --- /dev/null +++ b/pip/doc/html/inherit_graph_13.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIFlags< PICoutControl > + + + + + diff --git a/pip/doc/html/inherit_graph_14.map b/pip/doc/html/inherit_graph_14.map new file mode 100644 index 0000000..c26dd21 --- /dev/null +++ b/pip/doc/html/inherit_graph_14.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_14.md5 b/pip/doc/html/inherit_graph_14.md5 new file mode 100644 index 0000000..9fdea49 --- /dev/null +++ b/pip/doc/html/inherit_graph_14.md5 @@ -0,0 +1 @@ +1278b4281a75e72befaaa2cb4d55206d \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_14.svg b/pip/doc/html/inherit_graph_14.svg new file mode 100644 index 0000000..8c18ae5 --- /dev/null +++ b/pip/doc/html/inherit_graph_14.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIMutex + + + + + diff --git a/pip/doc/html/inherit_graph_15.map b/pip/doc/html/inherit_graph_15.map new file mode 100644 index 0000000..62903c7 --- /dev/null +++ b/pip/doc/html/inherit_graph_15.map @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/pip/doc/html/inherit_graph_15.md5 b/pip/doc/html/inherit_graph_15.md5 new file mode 100644 index 0000000..807ddc4 --- /dev/null +++ b/pip/doc/html/inherit_graph_15.md5 @@ -0,0 +1 @@ +037a3c56dbdb397c1d969332abde6176 \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_15.svg b/pip/doc/html/inherit_graph_15.svg new file mode 100644 index 0000000..a71315b --- /dev/null +++ b/pip/doc/html/inherit_graph_15.svg @@ -0,0 +1,242 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIObject + + + + +Node2 + + +PICLI + + + + +Node1->Node2 + + + + +Node3 + + +PIConnection + + + + +Node1->Node3 + + + + +Node4 + + +PIProtocol + + + + +Node1->Node4 + + + + +Node5 + + +PIStateMachine< Type > + + + + +Node1->Node5 + + + + +Node6 + + +PIThread + + + + +Node1->Node6 + + + + +Node17 + + +PITimer + + + + +Node1->Node17 + + + + +Node7 + + +PIConsole + + + + +Node6->Node7 + + + + +Node8 + + +PIIODevice + + + + +Node6->Node8 + + + + +Node15 + + +PIKbdListener + + + + +Node6->Node15 + + + + +Node16 + + +PIProcess + + + + +Node6->Node16 + + + + +Node9 + + +PIBinaryLog + + + + +Node8->Node9 + + + + +Node10 + + +PIEthernet + + + + +Node8->Node10 + + + + +Node11 + + +PIFile + + + + +Node8->Node11 + + + + +Node13 + + +PIPacketExtractor + + + + +Node8->Node13 + + + + +Node14 + + +PISerial + + + + +Node8->Node14 + + + + +Node12 + + +PIConfig + + + + +Node11->Node12 + + + + +Node18 + + +PIDiagnostics + + + + +Node17->Node18 + + + + + diff --git a/pip/doc/html/inherit_graph_16.map b/pip/doc/html/inherit_graph_16.map new file mode 100644 index 0000000..92d71a7 --- /dev/null +++ b/pip/doc/html/inherit_graph_16.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_16.md5 b/pip/doc/html/inherit_graph_16.md5 new file mode 100644 index 0000000..9095d5a --- /dev/null +++ b/pip/doc/html/inherit_graph_16.md5 @@ -0,0 +1 @@ +7195474103cf1de3eb28a76869bb135c \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_16.svg b/pip/doc/html/inherit_graph_16.svg new file mode 100644 index 0000000..b523b89 --- /dev/null +++ b/pip/doc/html/inherit_graph_16.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PISet< const void * > + + + + + diff --git a/pip/doc/html/inherit_graph_17.map b/pip/doc/html/inherit_graph_17.map new file mode 100644 index 0000000..c9c170f --- /dev/null +++ b/pip/doc/html/inherit_graph_17.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_17.md5 b/pip/doc/html/inherit_graph_17.md5 new file mode 100644 index 0000000..e1eaffe --- /dev/null +++ b/pip/doc/html/inherit_graph_17.md5 @@ -0,0 +1 @@ +fe4ea4a2e083e8a3e79b6ac6dbd1e9c7 \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_17.svg b/pip/doc/html/inherit_graph_17.svg new file mode 100644 index 0000000..f0a9eeb --- /dev/null +++ b/pip/doc/html/inherit_graph_17.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PISet< PIObject * > + + + + + diff --git a/pip/doc/html/inherit_graph_18.map b/pip/doc/html/inherit_graph_18.map new file mode 100644 index 0000000..9125eb5 --- /dev/null +++ b/pip/doc/html/inherit_graph_18.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_18.md5 b/pip/doc/html/inherit_graph_18.md5 new file mode 100644 index 0000000..f6c56be --- /dev/null +++ b/pip/doc/html/inherit_graph_18.md5 @@ -0,0 +1 @@ +c5df9f2ebcab12959c4c3ba358c2dc88 \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_18.svg b/pip/doc/html/inherit_graph_18.svg new file mode 100644 index 0000000..2b201d7 --- /dev/null +++ b/pip/doc/html/inherit_graph_18.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PISet< PIString > + + + + + diff --git a/pip/doc/html/inherit_graph_19.map b/pip/doc/html/inherit_graph_19.map new file mode 100644 index 0000000..954f8f9 --- /dev/null +++ b/pip/doc/html/inherit_graph_19.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_19.md5 b/pip/doc/html/inherit_graph_19.md5 new file mode 100644 index 0000000..fe27e4c --- /dev/null +++ b/pip/doc/html/inherit_graph_19.md5 @@ -0,0 +1 @@ +d50056d80f8b73883e7d420861a95ae7 \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_19.svg b/pip/doc/html/inherit_graph_19.svg new file mode 100644 index 0000000..869cb6d --- /dev/null +++ b/pip/doc/html/inherit_graph_19.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PISet< T > + + + + + diff --git a/pip/doc/html/inherit_graph_2.map b/pip/doc/html/inherit_graph_2.map new file mode 100644 index 0000000..017ddc9 --- /dev/null +++ b/pip/doc/html/inherit_graph_2.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_2.md5 b/pip/doc/html/inherit_graph_2.md5 new file mode 100644 index 0000000..fa177a8 --- /dev/null +++ b/pip/doc/html/inherit_graph_2.md5 @@ -0,0 +1 @@ +d1d86bf63567029164749144f1ab5d29 \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_2.svg b/pip/doc/html/inherit_graph_2.svg new file mode 100644 index 0000000..d55c2ae --- /dev/null +++ b/pip/doc/html/inherit_graph_2.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIChar + + + + + diff --git a/pip/doc/html/inherit_graph_20.map b/pip/doc/html/inherit_graph_20.map new file mode 100644 index 0000000..d90991b --- /dev/null +++ b/pip/doc/html/inherit_graph_20.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_20.md5 b/pip/doc/html/inherit_graph_20.md5 new file mode 100644 index 0000000..2ee038b --- /dev/null +++ b/pip/doc/html/inherit_graph_20.md5 @@ -0,0 +1 @@ +d37e18fcc8099017fed410af1f0b3431 \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_20.svg b/pip/doc/html/inherit_graph_20.svg new file mode 100644 index 0000000..2efacf0 --- /dev/null +++ b/pip/doc/html/inherit_graph_20.svg @@ -0,0 +1,22 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIStateMachine< Type + >::Rule + + + + + diff --git a/pip/doc/html/inherit_graph_21.map b/pip/doc/html/inherit_graph_21.map new file mode 100644 index 0000000..a659aa2 --- /dev/null +++ b/pip/doc/html/inherit_graph_21.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_21.md5 b/pip/doc/html/inherit_graph_21.md5 new file mode 100644 index 0000000..c5fbaf5 --- /dev/null +++ b/pip/doc/html/inherit_graph_21.md5 @@ -0,0 +1 @@ +a27ba6a3bc85c845a22b3e3ced7ad324 \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_21.svg b/pip/doc/html/inherit_graph_21.svg new file mode 100644 index 0000000..121a902 --- /dev/null +++ b/pip/doc/html/inherit_graph_21.svg @@ -0,0 +1,22 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIStateMachine< Type + >::State + + + + + diff --git a/pip/doc/html/inherit_graph_22.map b/pip/doc/html/inherit_graph_22.map new file mode 100644 index 0000000..5549071 --- /dev/null +++ b/pip/doc/html/inherit_graph_22.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_22.md5 b/pip/doc/html/inherit_graph_22.md5 new file mode 100644 index 0000000..4f13633 --- /dev/null +++ b/pip/doc/html/inherit_graph_22.md5 @@ -0,0 +1 @@ +798aad3d3ac39f444ed62d179c881379 \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_22.svg b/pip/doc/html/inherit_graph_22.svg new file mode 100644 index 0000000..6ee0b91 --- /dev/null +++ b/pip/doc/html/inherit_graph_22.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIString + + + + + diff --git a/pip/doc/html/inherit_graph_23.map b/pip/doc/html/inherit_graph_23.map new file mode 100644 index 0000000..890e478 --- /dev/null +++ b/pip/doc/html/inherit_graph_23.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_23.md5 b/pip/doc/html/inherit_graph_23.md5 new file mode 100644 index 0000000..f41c4ed --- /dev/null +++ b/pip/doc/html/inherit_graph_23.md5 @@ -0,0 +1 @@ +d99351d87ed2e44ac957865b18142427 \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_23.svg b/pip/doc/html/inherit_graph_23.svg new file mode 100644 index 0000000..7ab8285 --- /dev/null +++ b/pip/doc/html/inherit_graph_23.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIStringList + + + + + diff --git a/pip/doc/html/inherit_graph_24.map b/pip/doc/html/inherit_graph_24.map new file mode 100644 index 0000000..ccd9f79 --- /dev/null +++ b/pip/doc/html/inherit_graph_24.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_24.md5 b/pip/doc/html/inherit_graph_24.md5 new file mode 100644 index 0000000..51dcb9c --- /dev/null +++ b/pip/doc/html/inherit_graph_24.md5 @@ -0,0 +1 @@ +f2b9d43f630e44ab8589acca9c7c5ede \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_24.svg b/pip/doc/html/inherit_graph_24.svg new file mode 100644 index 0000000..690f591 --- /dev/null +++ b/pip/doc/html/inherit_graph_24.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PISystemTime + + + + + diff --git a/pip/doc/html/inherit_graph_25.map b/pip/doc/html/inherit_graph_25.map new file mode 100644 index 0000000..116f5ea --- /dev/null +++ b/pip/doc/html/inherit_graph_25.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_25.md5 b/pip/doc/html/inherit_graph_25.md5 new file mode 100644 index 0000000..4bbbb45 --- /dev/null +++ b/pip/doc/html/inherit_graph_25.md5 @@ -0,0 +1 @@ +23ad4af016632152ceef0559489bcf2c \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_25.svg b/pip/doc/html/inherit_graph_25.svg new file mode 100644 index 0000000..3bcabfc --- /dev/null +++ b/pip/doc/html/inherit_graph_25.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PITimeMeasurer + + + + + diff --git a/pip/doc/html/inherit_graph_26.map b/pip/doc/html/inherit_graph_26.map new file mode 100644 index 0000000..0e630ef --- /dev/null +++ b/pip/doc/html/inherit_graph_26.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_26.md5 b/pip/doc/html/inherit_graph_26.md5 new file mode 100644 index 0000000..04dd0eb --- /dev/null +++ b/pip/doc/html/inherit_graph_26.md5 @@ -0,0 +1 @@ +8483d5cfbf7fc60050a6b05d354d9184 \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_26.svg b/pip/doc/html/inherit_graph_26.svg new file mode 100644 index 0000000..c3e8c03 --- /dev/null +++ b/pip/doc/html/inherit_graph_26.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIVariant + + + + + diff --git a/pip/doc/html/inherit_graph_27.map b/pip/doc/html/inherit_graph_27.map new file mode 100644 index 0000000..af23b56 --- /dev/null +++ b/pip/doc/html/inherit_graph_27.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_27.md5 b/pip/doc/html/inherit_graph_27.md5 new file mode 100644 index 0000000..f25d319 --- /dev/null +++ b/pip/doc/html/inherit_graph_27.md5 @@ -0,0 +1 @@ +92dd796f18575f821fc3a6edcb5eea17 \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_27.svg b/pip/doc/html/inherit_graph_27.svg new file mode 100644 index 0000000..848e10b --- /dev/null +++ b/pip/doc/html/inherit_graph_27.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIVector< __EHData > + + + + + diff --git a/pip/doc/html/inherit_graph_28.map b/pip/doc/html/inherit_graph_28.map new file mode 100644 index 0000000..bce802d --- /dev/null +++ b/pip/doc/html/inherit_graph_28.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_28.md5 b/pip/doc/html/inherit_graph_28.md5 new file mode 100644 index 0000000..84fc93c --- /dev/null +++ b/pip/doc/html/inherit_graph_28.md5 @@ -0,0 +1 @@ +ad5141053efb69ef193dceac3d3601a5 \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_28.svg b/pip/doc/html/inherit_graph_28.svg new file mode 100644 index 0000000..6ef6064 --- /dev/null +++ b/pip/doc/html/inherit_graph_28.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIVector< __EHFunc > + + + + + diff --git a/pip/doc/html/inherit_graph_29.map b/pip/doc/html/inherit_graph_29.map new file mode 100644 index 0000000..1402c46 --- /dev/null +++ b/pip/doc/html/inherit_graph_29.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_29.md5 b/pip/doc/html/inherit_graph_29.md5 new file mode 100644 index 0000000..c742f59 --- /dev/null +++ b/pip/doc/html/inherit_graph_29.md5 @@ -0,0 +1 @@ +c9267012e44443c0fad183fee3446eeb \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_29.svg b/pip/doc/html/inherit_graph_29.svg new file mode 100644 index 0000000..a32eaa0 --- /dev/null +++ b/pip/doc/html/inherit_graph_29.svg @@ -0,0 +1,22 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIVector< _PITimerImp +_Pool * > + + + + + diff --git a/pip/doc/html/inherit_graph_3.map b/pip/doc/html/inherit_graph_3.map new file mode 100644 index 0000000..356f20f --- /dev/null +++ b/pip/doc/html/inherit_graph_3.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_3.md5 b/pip/doc/html/inherit_graph_3.md5 new file mode 100644 index 0000000..74876a7 --- /dev/null +++ b/pip/doc/html/inherit_graph_3.md5 @@ -0,0 +1 @@ +e569003fb67f1e6db4662bdf9cef3682 \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_3.svg b/pip/doc/html/inherit_graph_3.svg new file mode 100644 index 0000000..bec1639 --- /dev/null +++ b/pip/doc/html/inherit_graph_3.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PICollection + + + + + diff --git a/pip/doc/html/inherit_graph_30.map b/pip/doc/html/inherit_graph_30.map new file mode 100644 index 0000000..4907f94 --- /dev/null +++ b/pip/doc/html/inherit_graph_30.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_30.md5 b/pip/doc/html/inherit_graph_30.md5 new file mode 100644 index 0000000..400427d --- /dev/null +++ b/pip/doc/html/inherit_graph_30.md5 @@ -0,0 +1 @@ +27601fdf83bb6db5a6ea98f6ec4ea6c3 \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_30.svg b/pip/doc/html/inherit_graph_30.svg new file mode 100644 index 0000000..cdbafd3 --- /dev/null +++ b/pip/doc/html/inherit_graph_30.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIVector< Argument > + + + + + diff --git a/pip/doc/html/inherit_graph_31.map b/pip/doc/html/inherit_graph_31.map new file mode 100644 index 0000000..5ba87ba --- /dev/null +++ b/pip/doc/html/inherit_graph_31.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_31.md5 b/pip/doc/html/inherit_graph_31.md5 new file mode 100644 index 0000000..3f1ee9f --- /dev/null +++ b/pip/doc/html/inherit_graph_31.md5 @@ -0,0 +1 @@ +4e5f4a37668849b97222f5a58fe604f4 \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_31.svg b/pip/doc/html/inherit_graph_31.svg new file mode 100644 index 0000000..ca22a7e --- /dev/null +++ b/pip/doc/html/inherit_graph_31.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIVector< Column > + + + + + diff --git a/pip/doc/html/inherit_graph_32.map b/pip/doc/html/inherit_graph_32.map new file mode 100644 index 0000000..1c72fb2 --- /dev/null +++ b/pip/doc/html/inherit_graph_32.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_32.md5 b/pip/doc/html/inherit_graph_32.md5 new file mode 100644 index 0000000..bd4561b --- /dev/null +++ b/pip/doc/html/inherit_graph_32.md5 @@ -0,0 +1 @@ +35b6716637dc5557ff0755af81c72166 \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_32.svg b/pip/doc/html/inherit_graph_32.svg new file mode 100644 index 0000000..d9addf3 --- /dev/null +++ b/pip/doc/html/inherit_graph_32.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIVector< complexd > + + + + + diff --git a/pip/doc/html/inherit_graph_33.map b/pip/doc/html/inherit_graph_33.map new file mode 100644 index 0000000..2671472 --- /dev/null +++ b/pip/doc/html/inherit_graph_33.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_33.md5 b/pip/doc/html/inherit_graph_33.md5 new file mode 100644 index 0000000..b868fd4 --- /dev/null +++ b/pip/doc/html/inherit_graph_33.md5 @@ -0,0 +1 @@ +b507ee15a025e0b43a88a7ed97415c6c \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_33.svg b/pip/doc/html/inherit_graph_33.svg new file mode 100644 index 0000000..c2a9b81 --- /dev/null +++ b/pip/doc/html/inherit_graph_33.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIVector< Condition > + + + + + diff --git a/pip/doc/html/inherit_graph_34.map b/pip/doc/html/inherit_graph_34.map new file mode 100644 index 0000000..fd9bd8f --- /dev/null +++ b/pip/doc/html/inherit_graph_34.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_34.md5 b/pip/doc/html/inherit_graph_34.md5 new file mode 100644 index 0000000..64b5158 --- /dev/null +++ b/pip/doc/html/inherit_graph_34.md5 @@ -0,0 +1 @@ +8c54ccfe0290635e5366df20e5906aa0 \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_34.svg b/pip/doc/html/inherit_graph_34.svg new file mode 100644 index 0000000..6b31e12 --- /dev/null +++ b/pip/doc/html/inherit_graph_34.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIVector< Connection > + + + + + diff --git a/pip/doc/html/inherit_graph_35.map b/pip/doc/html/inherit_graph_35.map new file mode 100644 index 0000000..3074e68 --- /dev/null +++ b/pip/doc/html/inherit_graph_35.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_35.md5 b/pip/doc/html/inherit_graph_35.md5 new file mode 100644 index 0000000..f7d78de --- /dev/null +++ b/pip/doc/html/inherit_graph_35.md5 @@ -0,0 +1 @@ +a3f8294986be699e66d14b237b7657a2 \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_35.svg b/pip/doc/html/inherit_graph_35.svg new file mode 100644 index 0000000..1ae2bfa --- /dev/null +++ b/pip/doc/html/inherit_graph_35.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIVector< const PIObject * > + + + + + diff --git a/pip/doc/html/inherit_graph_36.map b/pip/doc/html/inherit_graph_36.map new file mode 100644 index 0000000..c05de52 --- /dev/null +++ b/pip/doc/html/inherit_graph_36.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_36.md5 b/pip/doc/html/inherit_graph_36.md5 new file mode 100644 index 0000000..b7cd2aa --- /dev/null +++ b/pip/doc/html/inherit_graph_36.md5 @@ -0,0 +1 @@ +bf76c5cab26977759ff8bf45f6430d45 \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_36.svg b/pip/doc/html/inherit_graph_36.svg new file mode 100644 index 0000000..72d31e4 --- /dev/null +++ b/pip/doc/html/inherit_graph_36.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIVector< Define > + + + + + diff --git a/pip/doc/html/inherit_graph_37.map b/pip/doc/html/inherit_graph_37.map new file mode 100644 index 0000000..7ed52d5 --- /dev/null +++ b/pip/doc/html/inherit_graph_37.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_37.md5 b/pip/doc/html/inherit_graph_37.md5 new file mode 100644 index 0000000..cb309a6 --- /dev/null +++ b/pip/doc/html/inherit_graph_37.md5 @@ -0,0 +1 @@ +7957c4d92460ecfd875e5559af44e668 \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_37.svg b/pip/doc/html/inherit_graph_37.svg new file mode 100644 index 0000000..beda4c5 --- /dev/null +++ b/pip/doc/html/inherit_graph_37.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIVector< Delimiter > + + + + + diff --git a/pip/doc/html/inherit_graph_38.map b/pip/doc/html/inherit_graph_38.map new file mode 100644 index 0000000..022c007 --- /dev/null +++ b/pip/doc/html/inherit_graph_38.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_38.md5 b/pip/doc/html/inherit_graph_38.md5 new file mode 100644 index 0000000..bec1c45 --- /dev/null +++ b/pip/doc/html/inherit_graph_38.md5 @@ -0,0 +1 @@ +b6f7e35945b1a66b91ea979ba6cbbda9 \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_38.svg b/pip/doc/html/inherit_graph_38.svg new file mode 100644 index 0000000..41fbaa8 --- /dev/null +++ b/pip/doc/html/inherit_graph_38.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIVector< DeviceData * > + + + + + diff --git a/pip/doc/html/inherit_graph_39.map b/pip/doc/html/inherit_graph_39.map new file mode 100644 index 0000000..bcf091c --- /dev/null +++ b/pip/doc/html/inherit_graph_39.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_39.md5 b/pip/doc/html/inherit_graph_39.md5 new file mode 100644 index 0000000..1d43517 --- /dev/null +++ b/pip/doc/html/inherit_graph_39.md5 @@ -0,0 +1 @@ +4d0321ec927974df938b100b263b13c9 \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_39.svg b/pip/doc/html/inherit_graph_39.svg new file mode 100644 index 0000000..128c13d --- /dev/null +++ b/pip/doc/html/inherit_graph_39.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIVector< double > + + + + + diff --git a/pip/doc/html/inherit_graph_4.map b/pip/doc/html/inherit_graph_4.map new file mode 100644 index 0000000..def59c7 --- /dev/null +++ b/pip/doc/html/inherit_graph_4.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_4.md5 b/pip/doc/html/inherit_graph_4.md5 new file mode 100644 index 0000000..d675a5d --- /dev/null +++ b/pip/doc/html/inherit_graph_4.md5 @@ -0,0 +1 @@ +2e06246a1aed209250a05731f7d78778 \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_4.svg b/pip/doc/html/inherit_graph_4.svg new file mode 100644 index 0000000..9c8e57f --- /dev/null +++ b/pip/doc/html/inherit_graph_4.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIConfig::Entry + + + + + diff --git a/pip/doc/html/inherit_graph_40.map b/pip/doc/html/inherit_graph_40.map new file mode 100644 index 0000000..f157771 --- /dev/null +++ b/pip/doc/html/inherit_graph_40.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_40.md5 b/pip/doc/html/inherit_graph_40.md5 new file mode 100644 index 0000000..010cc6a --- /dev/null +++ b/pip/doc/html/inherit_graph_40.md5 @@ -0,0 +1 @@ +378da3dc0324958a5bbbac8cd502b1c2 \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_40.svg b/pip/doc/html/inherit_graph_40.svg new file mode 100644 index 0000000..acab0ac --- /dev/null +++ b/pip/doc/html/inherit_graph_40.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIVector< Entity * > + + + + + diff --git a/pip/doc/html/inherit_graph_41.map b/pip/doc/html/inherit_graph_41.map new file mode 100644 index 0000000..942f458 --- /dev/null +++ b/pip/doc/html/inherit_graph_41.map @@ -0,0 +1,4 @@ + + + + diff --git a/pip/doc/html/inherit_graph_41.md5 b/pip/doc/html/inherit_graph_41.md5 new file mode 100644 index 0000000..5cb553c --- /dev/null +++ b/pip/doc/html/inherit_graph_41.md5 @@ -0,0 +1 @@ +90ff0f26dea29117466679f011bd56e2 \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_41.svg b/pip/doc/html/inherit_graph_41.svg new file mode 100644 index 0000000..7fffbe7 --- /dev/null +++ b/pip/doc/html/inherit_graph_41.svg @@ -0,0 +1,34 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIVector< Entry * > + + + + +Node2 + + +PIConfig::Branch + + + + +Node1->Node2 + + + + + diff --git a/pip/doc/html/inherit_graph_42.map b/pip/doc/html/inherit_graph_42.map new file mode 100644 index 0000000..842f06b --- /dev/null +++ b/pip/doc/html/inherit_graph_42.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_42.md5 b/pip/doc/html/inherit_graph_42.md5 new file mode 100644 index 0000000..8ec9de0 --- /dev/null +++ b/pip/doc/html/inherit_graph_42.md5 @@ -0,0 +1 @@ +c31ba014022cec760a25a0541818573c \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_42.svg b/pip/doc/html/inherit_graph_42.svg new file mode 100644 index 0000000..4e9e135 --- /dev/null +++ b/pip/doc/html/inherit_graph_42.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIVector< Entry > + + + + + diff --git a/pip/doc/html/inherit_graph_43.map b/pip/doc/html/inherit_graph_43.map new file mode 100644 index 0000000..cba7f60 --- /dev/null +++ b/pip/doc/html/inherit_graph_43.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_43.md5 b/pip/doc/html/inherit_graph_43.md5 new file mode 100644 index 0000000..2bd57d9 --- /dev/null +++ b/pip/doc/html/inherit_graph_43.md5 @@ -0,0 +1 @@ +7b8d2389459aa9c2a1fd6f2f7a2a6e5e \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_43.svg b/pip/doc/html/inherit_graph_43.svg new file mode 100644 index 0000000..ffe630f --- /dev/null +++ b/pip/doc/html/inherit_graph_43.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIVector< Enum > + + + + + diff --git a/pip/doc/html/inherit_graph_44.map b/pip/doc/html/inherit_graph_44.map new file mode 100644 index 0000000..126d902 --- /dev/null +++ b/pip/doc/html/inherit_graph_44.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_44.md5 b/pip/doc/html/inherit_graph_44.md5 new file mode 100644 index 0000000..a3594c1 --- /dev/null +++ b/pip/doc/html/inherit_graph_44.md5 @@ -0,0 +1 @@ +61a8f76db5469ec03ee2cec14d071928 \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_44.svg b/pip/doc/html/inherit_graph_44.svg new file mode 100644 index 0000000..8ef252b --- /dev/null +++ b/pip/doc/html/inherit_graph_44.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIVector< Enumerator > + + + + + diff --git a/pip/doc/html/inherit_graph_45.map b/pip/doc/html/inherit_graph_45.map new file mode 100644 index 0000000..2764acb --- /dev/null +++ b/pip/doc/html/inherit_graph_45.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_45.md5 b/pip/doc/html/inherit_graph_45.md5 new file mode 100644 index 0000000..55ecd29 --- /dev/null +++ b/pip/doc/html/inherit_graph_45.md5 @@ -0,0 +1 @@ +802a6347391af83189159a2212a1ad8c \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_45.svg b/pip/doc/html/inherit_graph_45.svg new file mode 100644 index 0000000..c865f6e --- /dev/null +++ b/pip/doc/html/inherit_graph_45.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIVector< Extractor * > + + + + + diff --git a/pip/doc/html/inherit_graph_46.map b/pip/doc/html/inherit_graph_46.map new file mode 100644 index 0000000..4ee94ca --- /dev/null +++ b/pip/doc/html/inherit_graph_46.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_46.md5 b/pip/doc/html/inherit_graph_46.md5 new file mode 100644 index 0000000..b752a77 --- /dev/null +++ b/pip/doc/html/inherit_graph_46.md5 @@ -0,0 +1 @@ +a38c9fa50548e2741099d7dbb5cefa71 \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_46.svg b/pip/doc/html/inherit_graph_46.svg new file mode 100644 index 0000000..58603ae --- /dev/null +++ b/pip/doc/html/inherit_graph_46.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIVector< Group > + + + + + diff --git a/pip/doc/html/inherit_graph_47.map b/pip/doc/html/inherit_graph_47.map new file mode 100644 index 0000000..c654551 --- /dev/null +++ b/pip/doc/html/inherit_graph_47.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_47.md5 b/pip/doc/html/inherit_graph_47.md5 new file mode 100644 index 0000000..ef18795 --- /dev/null +++ b/pip/doc/html/inherit_graph_47.md5 @@ -0,0 +1 @@ +cec3dae7601d65bcffa5f3461953f03a \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_47.svg b/pip/doc/html/inherit_graph_47.svg new file mode 100644 index 0000000..98ab1b4 --- /dev/null +++ b/pip/doc/html/inherit_graph_47.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIVector< int > + + + + + diff --git a/pip/doc/html/inherit_graph_48.map b/pip/doc/html/inherit_graph_48.map new file mode 100644 index 0000000..8582872 --- /dev/null +++ b/pip/doc/html/inherit_graph_48.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_48.md5 b/pip/doc/html/inherit_graph_48.md5 new file mode 100644 index 0000000..8f4406f --- /dev/null +++ b/pip/doc/html/inherit_graph_48.md5 @@ -0,0 +1 @@ +51634f101ee75528eae56a9106d9c4ad \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_48.svg b/pip/doc/html/inherit_graph_48.svg new file mode 100644 index 0000000..069878c --- /dev/null +++ b/pip/doc/html/inherit_graph_48.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIVector< Macro > + + + + + diff --git a/pip/doc/html/inherit_graph_49.map b/pip/doc/html/inherit_graph_49.map new file mode 100644 index 0000000..4ade2b0 --- /dev/null +++ b/pip/doc/html/inherit_graph_49.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_49.md5 b/pip/doc/html/inherit_graph_49.md5 new file mode 100644 index 0000000..77bc2ef --- /dev/null +++ b/pip/doc/html/inherit_graph_49.md5 @@ -0,0 +1 @@ +85cb71fc7bb627aeff9678809e414c71 \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_49.svg b/pip/doc/html/inherit_graph_49.svg new file mode 100644 index 0000000..8594efd --- /dev/null +++ b/pip/doc/html/inherit_graph_49.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIVector< Member > + + + + + diff --git a/pip/doc/html/inherit_graph_5.map b/pip/doc/html/inherit_graph_5.map new file mode 100644 index 0000000..897f816 --- /dev/null +++ b/pip/doc/html/inherit_graph_5.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_5.md5 b/pip/doc/html/inherit_graph_5.md5 new file mode 100644 index 0000000..08eab0a --- /dev/null +++ b/pip/doc/html/inherit_graph_5.md5 @@ -0,0 +1 @@ +3adff8b82ea98b1463f4950609df8fd7 \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_5.svg b/pip/doc/html/inherit_graph_5.svg new file mode 100644 index 0000000..63d04b6 --- /dev/null +++ b/pip/doc/html/inherit_graph_5.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PICout + + + + + diff --git a/pip/doc/html/inherit_graph_50.map b/pip/doc/html/inherit_graph_50.map new file mode 100644 index 0000000..246f03e --- /dev/null +++ b/pip/doc/html/inherit_graph_50.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_50.md5 b/pip/doc/html/inherit_graph_50.md5 new file mode 100644 index 0000000..32a2e4e --- /dev/null +++ b/pip/doc/html/inherit_graph_50.md5 @@ -0,0 +1 @@ +6c705c14f628477de0be0383d19faf54 \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_50.svg b/pip/doc/html/inherit_graph_50.svg new file mode 100644 index 0000000..ecd19ba --- /dev/null +++ b/pip/doc/html/inherit_graph_50.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIVector< node > + + + + + diff --git a/pip/doc/html/inherit_graph_51.map b/pip/doc/html/inherit_graph_51.map new file mode 100644 index 0000000..c7ead78 --- /dev/null +++ b/pip/doc/html/inherit_graph_51.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_51.md5 b/pip/doc/html/inherit_graph_51.md5 new file mode 100644 index 0000000..8c922b3 --- /dev/null +++ b/pip/doc/html/inherit_graph_51.md5 @@ -0,0 +1 @@ +76f70cc6450c839938f753d98a9e75f2 \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_51.svg b/pip/doc/html/inherit_graph_51.svg new file mode 100644 index 0000000..2a96d66 --- /dev/null +++ b/pip/doc/html/inherit_graph_51.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIVector< PeerInfo > + + + + + diff --git a/pip/doc/html/inherit_graph_52.map b/pip/doc/html/inherit_graph_52.map new file mode 100644 index 0000000..0506390 --- /dev/null +++ b/pip/doc/html/inherit_graph_52.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_52.md5 b/pip/doc/html/inherit_graph_52.md5 new file mode 100644 index 0000000..730db10 --- /dev/null +++ b/pip/doc/html/inherit_graph_52.md5 @@ -0,0 +1 @@ +1ebfb695299fe487b307fc3bd6322d9a \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_52.svg b/pip/doc/html/inherit_graph_52.svg new file mode 100644 index 0000000..de33083 --- /dev/null +++ b/pip/doc/html/inherit_graph_52.svg @@ -0,0 +1,22 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIVector< PICodeInfo +::EnumeratorInfo > + + + + + diff --git a/pip/doc/html/inherit_graph_53.map b/pip/doc/html/inherit_graph_53.map new file mode 100644 index 0000000..6340091 --- /dev/null +++ b/pip/doc/html/inherit_graph_53.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_53.md5 b/pip/doc/html/inherit_graph_53.md5 new file mode 100644 index 0000000..d6730eb --- /dev/null +++ b/pip/doc/html/inherit_graph_53.md5 @@ -0,0 +1 @@ +a6201b158ea1548c7e7fec186ea51597 \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_53.svg b/pip/doc/html/inherit_graph_53.svg new file mode 100644 index 0000000..580b7b9 --- /dev/null +++ b/pip/doc/html/inherit_graph_53.svg @@ -0,0 +1,22 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIVector< PICodeInfo +::FunctionInfo > + + + + + diff --git a/pip/doc/html/inherit_graph_54.map b/pip/doc/html/inherit_graph_54.map new file mode 100644 index 0000000..a228d18 --- /dev/null +++ b/pip/doc/html/inherit_graph_54.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_54.md5 b/pip/doc/html/inherit_graph_54.md5 new file mode 100644 index 0000000..6cf469f --- /dev/null +++ b/pip/doc/html/inherit_graph_54.md5 @@ -0,0 +1 @@ +14802bb3defd0d40066b8590830e4378 \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_54.svg b/pip/doc/html/inherit_graph_54.svg new file mode 100644 index 0000000..ad01d75 --- /dev/null +++ b/pip/doc/html/inherit_graph_54.svg @@ -0,0 +1,22 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIVector< PICodeInfo +::TypeInfo > + + + + + diff --git a/pip/doc/html/inherit_graph_55.map b/pip/doc/html/inherit_graph_55.map new file mode 100644 index 0000000..aea0452 --- /dev/null +++ b/pip/doc/html/inherit_graph_55.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_55.md5 b/pip/doc/html/inherit_graph_55.md5 new file mode 100644 index 0000000..52bb15d --- /dev/null +++ b/pip/doc/html/inherit_graph_55.md5 @@ -0,0 +1 @@ +845b26be2a6a3eda2d69c84df2147cbb \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_55.svg b/pip/doc/html/inherit_graph_55.svg new file mode 100644 index 0000000..ba5517a --- /dev/null +++ b/pip/doc/html/inherit_graph_55.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIVector< PIConnection * > + + + + + diff --git a/pip/doc/html/inherit_graph_56.map b/pip/doc/html/inherit_graph_56.map new file mode 100644 index 0000000..ae1a0fa --- /dev/null +++ b/pip/doc/html/inherit_graph_56.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_56.md5 b/pip/doc/html/inherit_graph_56.md5 new file mode 100644 index 0000000..b30f451 --- /dev/null +++ b/pip/doc/html/inherit_graph_56.md5 @@ -0,0 +1 @@ +0a6c850a1fe4a010fed520bc87caeb02 \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_56.svg b/pip/doc/html/inherit_graph_56.svg new file mode 100644 index 0000000..5da75b7 --- /dev/null +++ b/pip/doc/html/inherit_graph_56.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIVector< PIDiagnostics * > + + + + + diff --git a/pip/doc/html/inherit_graph_57.map b/pip/doc/html/inherit_graph_57.map new file mode 100644 index 0000000..dda1771 --- /dev/null +++ b/pip/doc/html/inherit_graph_57.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_57.md5 b/pip/doc/html/inherit_graph_57.md5 new file mode 100644 index 0000000..172cf7b --- /dev/null +++ b/pip/doc/html/inherit_graph_57.md5 @@ -0,0 +1 @@ +54806d18231aacf3c21aa3e8f840a1f1 \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_57.svg b/pip/doc/html/inherit_graph_57.svg new file mode 100644 index 0000000..1d0a88b --- /dev/null +++ b/pip/doc/html/inherit_graph_57.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIVector< PIEthernet * > + + + + + diff --git a/pip/doc/html/inherit_graph_58.map b/pip/doc/html/inherit_graph_58.map new file mode 100644 index 0000000..f32d1b4 --- /dev/null +++ b/pip/doc/html/inherit_graph_58.map @@ -0,0 +1,4 @@ + + + + diff --git a/pip/doc/html/inherit_graph_58.md5 b/pip/doc/html/inherit_graph_58.md5 new file mode 100644 index 0000000..c4093bf --- /dev/null +++ b/pip/doc/html/inherit_graph_58.md5 @@ -0,0 +1 @@ +46f51a8b072d1b5be4198b980003289e \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_58.svg b/pip/doc/html/inherit_graph_58.svg new file mode 100644 index 0000000..e1674fd --- /dev/null +++ b/pip/doc/html/inherit_graph_58.svg @@ -0,0 +1,35 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIVector< PIEthernet +::Interface > + + + + +Node2 + + +PIEthernet::InterfaceList + + + + +Node1->Node2 + + + + + diff --git a/pip/doc/html/inherit_graph_59.map b/pip/doc/html/inherit_graph_59.map new file mode 100644 index 0000000..38b53f9 --- /dev/null +++ b/pip/doc/html/inherit_graph_59.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_59.md5 b/pip/doc/html/inherit_graph_59.md5 new file mode 100644 index 0000000..88e6ae9 --- /dev/null +++ b/pip/doc/html/inherit_graph_59.md5 @@ -0,0 +1 @@ +edc540fc90cbecbb72fe6d146611a2f4 \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_59.svg b/pip/doc/html/inherit_graph_59.svg new file mode 100644 index 0000000..4a7f62d --- /dev/null +++ b/pip/doc/html/inherit_graph_59.svg @@ -0,0 +1,22 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIVector< PIEvaluatorTypes +::Element > + + + + + diff --git a/pip/doc/html/inherit_graph_6.map b/pip/doc/html/inherit_graph_6.map new file mode 100644 index 0000000..71b5825 --- /dev/null +++ b/pip/doc/html/inherit_graph_6.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_6.md5 b/pip/doc/html/inherit_graph_6.md5 new file mode 100644 index 0000000..441889c --- /dev/null +++ b/pip/doc/html/inherit_graph_6.md5 @@ -0,0 +1 @@ +3cbd2d31444cf69f81dc8969a6372700 \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_6.svg b/pip/doc/html/inherit_graph_6.svg new file mode 100644 index 0000000..c89381e --- /dev/null +++ b/pip/doc/html/inherit_graph_6.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIEthernet::Interface + + + + + diff --git a/pip/doc/html/inherit_graph_60.map b/pip/doc/html/inherit_graph_60.map new file mode 100644 index 0000000..f1ef9bd --- /dev/null +++ b/pip/doc/html/inherit_graph_60.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_60.md5 b/pip/doc/html/inherit_graph_60.md5 new file mode 100644 index 0000000..b609cfa --- /dev/null +++ b/pip/doc/html/inherit_graph_60.md5 @@ -0,0 +1 @@ +008c3b6bb2d7a5dc24f0418e53005f8b \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_60.svg b/pip/doc/html/inherit_graph_60.svg new file mode 100644 index 0000000..a8efefa --- /dev/null +++ b/pip/doc/html/inherit_graph_60.svg @@ -0,0 +1,22 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIVector< PIEvaluatorTypes +::Function > + + + + + diff --git a/pip/doc/html/inherit_graph_61.map b/pip/doc/html/inherit_graph_61.map new file mode 100644 index 0000000..08b8839 --- /dev/null +++ b/pip/doc/html/inherit_graph_61.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_61.md5 b/pip/doc/html/inherit_graph_61.md5 new file mode 100644 index 0000000..fb76902 --- /dev/null +++ b/pip/doc/html/inherit_graph_61.md5 @@ -0,0 +1 @@ +981a44dc7391133c38c8ed51a4360298 \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_61.svg b/pip/doc/html/inherit_graph_61.svg new file mode 100644 index 0000000..b946af0 --- /dev/null +++ b/pip/doc/html/inherit_graph_61.svg @@ -0,0 +1,22 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIVector< PIEvaluatorTypes +::Instruction > + + + + + diff --git a/pip/doc/html/inherit_graph_62.map b/pip/doc/html/inherit_graph_62.map new file mode 100644 index 0000000..f317d7a --- /dev/null +++ b/pip/doc/html/inherit_graph_62.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_62.md5 b/pip/doc/html/inherit_graph_62.md5 new file mode 100644 index 0000000..6bd5829 --- /dev/null +++ b/pip/doc/html/inherit_graph_62.md5 @@ -0,0 +1 @@ +690a903dfa5fc35c7cea1d5ae001b21d \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_62.svg b/pip/doc/html/inherit_graph_62.svg new file mode 100644 index 0000000..120e858 --- /dev/null +++ b/pip/doc/html/inherit_graph_62.svg @@ -0,0 +1,22 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIVector< PIEvaluatorTypes +::Variable > + + + + + diff --git a/pip/doc/html/inherit_graph_63.map b/pip/doc/html/inherit_graph_63.map new file mode 100644 index 0000000..913b4d1 --- /dev/null +++ b/pip/doc/html/inherit_graph_63.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_63.md5 b/pip/doc/html/inherit_graph_63.md5 new file mode 100644 index 0000000..6036aca --- /dev/null +++ b/pip/doc/html/inherit_graph_63.md5 @@ -0,0 +1 @@ +5d3b2243a6553325d918a43974841d4c \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_63.svg b/pip/doc/html/inherit_graph_63.svg new file mode 100644 index 0000000..5bbe170 --- /dev/null +++ b/pip/doc/html/inherit_graph_63.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIVector< PIIODevice * > + + + + + diff --git a/pip/doc/html/inherit_graph_64.map b/pip/doc/html/inherit_graph_64.map new file mode 100644 index 0000000..1ddde37 --- /dev/null +++ b/pip/doc/html/inherit_graph_64.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_64.md5 b/pip/doc/html/inherit_graph_64.md5 new file mode 100644 index 0000000..0f1cda1 --- /dev/null +++ b/pip/doc/html/inherit_graph_64.md5 @@ -0,0 +1 @@ +6f9a39f1dd22bbb24641e98473e177d5 \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_64.svg b/pip/doc/html/inherit_graph_64.svg new file mode 100644 index 0000000..dd497a6 --- /dev/null +++ b/pip/doc/html/inherit_graph_64.svg @@ -0,0 +1,22 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIVector< PIIODevice +::DeviceMode > + + + + + diff --git a/pip/doc/html/inherit_graph_65.map b/pip/doc/html/inherit_graph_65.map new file mode 100644 index 0000000..d587ff7 --- /dev/null +++ b/pip/doc/html/inherit_graph_65.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_65.md5 b/pip/doc/html/inherit_graph_65.md5 new file mode 100644 index 0000000..2c498da --- /dev/null +++ b/pip/doc/html/inherit_graph_65.md5 @@ -0,0 +1 @@ +8319a8cbc6db0802281d0116c8b42af4 \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_65.svg b/pip/doc/html/inherit_graph_65.svg new file mode 100644 index 0000000..7917a8f --- /dev/null +++ b/pip/doc/html/inherit_graph_65.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIVector< PIMathVectord > + + + + + diff --git a/pip/doc/html/inherit_graph_66.map b/pip/doc/html/inherit_graph_66.map new file mode 100644 index 0000000..6af6261 --- /dev/null +++ b/pip/doc/html/inherit_graph_66.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_66.md5 b/pip/doc/html/inherit_graph_66.md5 new file mode 100644 index 0000000..6304017 --- /dev/null +++ b/pip/doc/html/inherit_graph_66.md5 @@ -0,0 +1 @@ +3f909d55cb4db7b044c43deb28a8314f \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_66.svg b/pip/doc/html/inherit_graph_66.svg new file mode 100644 index 0000000..4d8e8f1 --- /dev/null +++ b/pip/doc/html/inherit_graph_66.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIVector< PIObject * > + + + + + diff --git a/pip/doc/html/inherit_graph_67.map b/pip/doc/html/inherit_graph_67.map new file mode 100644 index 0000000..795d111 --- /dev/null +++ b/pip/doc/html/inherit_graph_67.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_67.md5 b/pip/doc/html/inherit_graph_67.md5 new file mode 100644 index 0000000..d4493a5 --- /dev/null +++ b/pip/doc/html/inherit_graph_67.md5 @@ -0,0 +1 @@ +16c037202ba42bf7deca7c3e0a6af005 \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_67.svg b/pip/doc/html/inherit_graph_67.svg new file mode 100644 index 0000000..a1674f6 --- /dev/null +++ b/pip/doc/html/inherit_graph_67.svg @@ -0,0 +1,22 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIVector< PIPair< PIByte +Array, ullong > > + + + + + diff --git a/pip/doc/html/inherit_graph_68.map b/pip/doc/html/inherit_graph_68.map new file mode 100644 index 0000000..35f7caa --- /dev/null +++ b/pip/doc/html/inherit_graph_68.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_68.md5 b/pip/doc/html/inherit_graph_68.md5 new file mode 100644 index 0000000..8456f77 --- /dev/null +++ b/pip/doc/html/inherit_graph_68.md5 @@ -0,0 +1 @@ +91a56056cec7bc83be1d925d475fc29e \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_68.svg b/pip/doc/html/inherit_graph_68.svg new file mode 100644 index 0000000..28c2ca5 --- /dev/null +++ b/pip/doc/html/inherit_graph_68.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIVector< PIProtocol * > + + + + + diff --git a/pip/doc/html/inherit_graph_69.map b/pip/doc/html/inherit_graph_69.map new file mode 100644 index 0000000..d9f920a --- /dev/null +++ b/pip/doc/html/inherit_graph_69.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_69.md5 b/pip/doc/html/inherit_graph_69.md5 new file mode 100644 index 0000000..e9230ad --- /dev/null +++ b/pip/doc/html/inherit_graph_69.md5 @@ -0,0 +1 @@ +3fa7c0e633e9de9955785c333859ea07 \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_69.svg b/pip/doc/html/inherit_graph_69.svg new file mode 100644 index 0000000..57f13ce --- /dev/null +++ b/pip/doc/html/inherit_graph_69.svg @@ -0,0 +1,22 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIVector< PIStateMachine +::Rule > + + + + + diff --git a/pip/doc/html/inherit_graph_7.map b/pip/doc/html/inherit_graph_7.map new file mode 100644 index 0000000..c2eb704 --- /dev/null +++ b/pip/doc/html/inherit_graph_7.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_7.md5 b/pip/doc/html/inherit_graph_7.md5 new file mode 100644 index 0000000..ae78527 --- /dev/null +++ b/pip/doc/html/inherit_graph_7.md5 @@ -0,0 +1 @@ +197985ed7d63011a36be70ef7ccb638e \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_7.svg b/pip/doc/html/inherit_graph_7.svg new file mode 100644 index 0000000..b00adc2 --- /dev/null +++ b/pip/doc/html/inherit_graph_7.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIEvaluator + + + + + diff --git a/pip/doc/html/inherit_graph_70.map b/pip/doc/html/inherit_graph_70.map new file mode 100644 index 0000000..e728c14 --- /dev/null +++ b/pip/doc/html/inherit_graph_70.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_70.md5 b/pip/doc/html/inherit_graph_70.md5 new file mode 100644 index 0000000..9e6e9bf --- /dev/null +++ b/pip/doc/html/inherit_graph_70.md5 @@ -0,0 +1 @@ +f503a6eae12245f8dd27aa3af74f6020 \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_70.svg b/pip/doc/html/inherit_graph_70.svg new file mode 100644 index 0000000..bb1977f --- /dev/null +++ b/pip/doc/html/inherit_graph_70.svg @@ -0,0 +1,22 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIVector< PIStateMachine +::State > + + + + + diff --git a/pip/doc/html/inherit_graph_71.map b/pip/doc/html/inherit_graph_71.map new file mode 100644 index 0000000..762fd63 --- /dev/null +++ b/pip/doc/html/inherit_graph_71.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_71.md5 b/pip/doc/html/inherit_graph_71.md5 new file mode 100644 index 0000000..c290112 --- /dev/null +++ b/pip/doc/html/inherit_graph_71.md5 @@ -0,0 +1 @@ +693e9d4a2527af2fdd57bf96fcba9adb \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_71.svg b/pip/doc/html/inherit_graph_71.svg new file mode 100644 index 0000000..3455fee --- /dev/null +++ b/pip/doc/html/inherit_graph_71.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIVector< PIString > + + + + + diff --git a/pip/doc/html/inherit_graph_72.map b/pip/doc/html/inherit_graph_72.map new file mode 100644 index 0000000..c5ac843 --- /dev/null +++ b/pip/doc/html/inherit_graph_72.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_72.md5 b/pip/doc/html/inherit_graph_72.md5 new file mode 100644 index 0000000..2a82884 --- /dev/null +++ b/pip/doc/html/inherit_graph_72.md5 @@ -0,0 +1 @@ +4a4a43617a15687a7e950d5456a693d9 \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_72.svg b/pip/doc/html/inherit_graph_72.svg new file mode 100644 index 0000000..62e51fe --- /dev/null +++ b/pip/doc/html/inherit_graph_72.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIVector< PIUSB::Configuration > + + + + + diff --git a/pip/doc/html/inherit_graph_73.map b/pip/doc/html/inherit_graph_73.map new file mode 100644 index 0000000..43151f8 --- /dev/null +++ b/pip/doc/html/inherit_graph_73.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_73.md5 b/pip/doc/html/inherit_graph_73.md5 new file mode 100644 index 0000000..75f2a02 --- /dev/null +++ b/pip/doc/html/inherit_graph_73.md5 @@ -0,0 +1 @@ +ef140149307b6d7dbe1b1c2da6e575ff \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_73.svg b/pip/doc/html/inherit_graph_73.svg new file mode 100644 index 0000000..0a2a8b1 --- /dev/null +++ b/pip/doc/html/inherit_graph_73.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIVector< PIUSB::Endpoint > + + + + + diff --git a/pip/doc/html/inherit_graph_74.map b/pip/doc/html/inherit_graph_74.map new file mode 100644 index 0000000..6ed1c2f --- /dev/null +++ b/pip/doc/html/inherit_graph_74.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_74.md5 b/pip/doc/html/inherit_graph_74.md5 new file mode 100644 index 0000000..9bf14c9 --- /dev/null +++ b/pip/doc/html/inherit_graph_74.md5 @@ -0,0 +1 @@ +096651eccde45028edf76076b73fa6d2 \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_74.svg b/pip/doc/html/inherit_graph_74.svg new file mode 100644 index 0000000..e48fb5d --- /dev/null +++ b/pip/doc/html/inherit_graph_74.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIVector< PIUSB::Interface > + + + + + diff --git a/pip/doc/html/inherit_graph_75.map b/pip/doc/html/inherit_graph_75.map new file mode 100644 index 0000000..9485829 --- /dev/null +++ b/pip/doc/html/inherit_graph_75.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_75.md5 b/pip/doc/html/inherit_graph_75.md5 new file mode 100644 index 0000000..46f401e --- /dev/null +++ b/pip/doc/html/inherit_graph_75.md5 @@ -0,0 +1 @@ +8bf4b258cf3b096e5f909c82a89777f7 \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_75.svg b/pip/doc/html/inherit_graph_75.svg new file mode 100644 index 0000000..4c86e76 --- /dev/null +++ b/pip/doc/html/inherit_graph_75.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIVector< PIVariant > + + + + + diff --git a/pip/doc/html/inherit_graph_76.map b/pip/doc/html/inherit_graph_76.map new file mode 100644 index 0000000..0ac6628 --- /dev/null +++ b/pip/doc/html/inherit_graph_76.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_76.md5 b/pip/doc/html/inherit_graph_76.md5 new file mode 100644 index 0000000..f589357 --- /dev/null +++ b/pip/doc/html/inherit_graph_76.md5 @@ -0,0 +1 @@ +9a6e7f5f8cfcb1b27fcc13d3ed06523a \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_76.svg b/pip/doc/html/inherit_graph_76.svg new file mode 100644 index 0000000..a16ed25 --- /dev/null +++ b/pip/doc/html/inherit_graph_76.svg @@ -0,0 +1,22 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIVector< PIVector +< double > > + + + + + diff --git a/pip/doc/html/inherit_graph_77.map b/pip/doc/html/inherit_graph_77.map new file mode 100644 index 0000000..bb1f0c0 --- /dev/null +++ b/pip/doc/html/inherit_graph_77.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_77.md5 b/pip/doc/html/inherit_graph_77.md5 new file mode 100644 index 0000000..beaf7c2 --- /dev/null +++ b/pip/doc/html/inherit_graph_77.md5 @@ -0,0 +1 @@ +299796daae6f1fdc9700863a843e30af \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_77.svg b/pip/doc/html/inherit_graph_77.svg new file mode 100644 index 0000000..496e012 --- /dev/null +++ b/pip/doc/html/inherit_graph_77.svg @@ -0,0 +1,22 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIVector< PIVector +< PeerInfo * > > + + + + + diff --git a/pip/doc/html/inherit_graph_78.map b/pip/doc/html/inherit_graph_78.map new file mode 100644 index 0000000..9455365 --- /dev/null +++ b/pip/doc/html/inherit_graph_78.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_78.md5 b/pip/doc/html/inherit_graph_78.md5 new file mode 100644 index 0000000..48da43a --- /dev/null +++ b/pip/doc/html/inherit_graph_78.md5 @@ -0,0 +1 @@ +09510d30d87bc5d00e2e82004aebbd65 \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_78.svg b/pip/doc/html/inherit_graph_78.svg new file mode 100644 index 0000000..06b2d24 --- /dev/null +++ b/pip/doc/html/inherit_graph_78.svg @@ -0,0 +1,22 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIVector< PIVector +< PIIODevice * > > + + + + + diff --git a/pip/doc/html/inherit_graph_79.map b/pip/doc/html/inherit_graph_79.map new file mode 100644 index 0000000..1153bb9 --- /dev/null +++ b/pip/doc/html/inherit_graph_79.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_79.md5 b/pip/doc/html/inherit_graph_79.md5 new file mode 100644 index 0000000..d47b742 --- /dev/null +++ b/pip/doc/html/inherit_graph_79.md5 @@ -0,0 +1 @@ +e2b46fd51c0bed48d7295d1e0b51425f \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_79.svg b/pip/doc/html/inherit_graph_79.svg new file mode 100644 index 0000000..55cb3c4 --- /dev/null +++ b/pip/doc/html/inherit_graph_79.svg @@ -0,0 +1,22 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIVector< PIVector +< PIPacketExtractor * > > + + + + + diff --git a/pip/doc/html/inherit_graph_8.map b/pip/doc/html/inherit_graph_8.map new file mode 100644 index 0000000..f79d11f --- /dev/null +++ b/pip/doc/html/inherit_graph_8.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_8.md5 b/pip/doc/html/inherit_graph_8.md5 new file mode 100644 index 0000000..ffec308 --- /dev/null +++ b/pip/doc/html/inherit_graph_8.md5 @@ -0,0 +1 @@ +c0535e6bcc26b794c3235346a915f26e \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_8.svg b/pip/doc/html/inherit_graph_8.svg new file mode 100644 index 0000000..c4f0850 --- /dev/null +++ b/pip/doc/html/inherit_graph_8.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIFlags< Attribute > + + + + + diff --git a/pip/doc/html/inherit_graph_80.map b/pip/doc/html/inherit_graph_80.map new file mode 100644 index 0000000..36281e5 --- /dev/null +++ b/pip/doc/html/inherit_graph_80.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_80.md5 b/pip/doc/html/inherit_graph_80.md5 new file mode 100644 index 0000000..5c13d62 --- /dev/null +++ b/pip/doc/html/inherit_graph_80.md5 @@ -0,0 +1 @@ +bcd83deb2b418a5fb0db5ed61c20d471 \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_80.svg b/pip/doc/html/inherit_graph_80.svg new file mode 100644 index 0000000..676bcf6 --- /dev/null +++ b/pip/doc/html/inherit_graph_80.svg @@ -0,0 +1,22 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIVector< PIVector +< Type > > + + + + + diff --git a/pip/doc/html/inherit_graph_81.map b/pip/doc/html/inherit_graph_81.map new file mode 100644 index 0000000..7fa1311 --- /dev/null +++ b/pip/doc/html/inherit_graph_81.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_81.md5 b/pip/doc/html/inherit_graph_81.md5 new file mode 100644 index 0000000..e2f0683 --- /dev/null +++ b/pip/doc/html/inherit_graph_81.md5 @@ -0,0 +1 @@ +9ef4452ab053a4e3415eb13aa807c123 \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_81.svg b/pip/doc/html/inherit_graph_81.svg new file mode 100644 index 0000000..b9db9da --- /dev/null +++ b/pip/doc/html/inherit_graph_81.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIVector< RemoteClient > + + + + + diff --git a/pip/doc/html/inherit_graph_82.map b/pip/doc/html/inherit_graph_82.map new file mode 100644 index 0000000..0cd87af --- /dev/null +++ b/pip/doc/html/inherit_graph_82.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_82.md5 b/pip/doc/html/inherit_graph_82.md5 new file mode 100644 index 0000000..a37a8e9 --- /dev/null +++ b/pip/doc/html/inherit_graph_82.md5 @@ -0,0 +1 @@ +dbd523e9958d799740a7a6e2e921bc3f \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_82.svg b/pip/doc/html/inherit_graph_82.svg new file mode 100644 index 0000000..2b3daf0 --- /dev/null +++ b/pip/doc/html/inherit_graph_82.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIVector< Sender * > + + + + + diff --git a/pip/doc/html/inherit_graph_83.map b/pip/doc/html/inherit_graph_83.map new file mode 100644 index 0000000..a993b4e --- /dev/null +++ b/pip/doc/html/inherit_graph_83.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_83.md5 b/pip/doc/html/inherit_graph_83.md5 new file mode 100644 index 0000000..f4e8236 --- /dev/null +++ b/pip/doc/html/inherit_graph_83.md5 @@ -0,0 +1 @@ +3ba7babd31f7a69db5e89c2f60b27961 \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_83.svg b/pip/doc/html/inherit_graph_83.svg new file mode 100644 index 0000000..5556f3e --- /dev/null +++ b/pip/doc/html/inherit_graph_83.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIVector< SOCKET > + + + + + diff --git a/pip/doc/html/inherit_graph_84.map b/pip/doc/html/inherit_graph_84.map new file mode 100644 index 0000000..ce97bb3 --- /dev/null +++ b/pip/doc/html/inherit_graph_84.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_84.md5 b/pip/doc/html/inherit_graph_84.md5 new file mode 100644 index 0000000..c8a5909 --- /dev/null +++ b/pip/doc/html/inherit_graph_84.md5 @@ -0,0 +1 @@ +d2510cf9d12b18605b075bfab3269ec2 \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_84.svg b/pip/doc/html/inherit_graph_84.svg new file mode 100644 index 0000000..6f4793d --- /dev/null +++ b/pip/doc/html/inherit_graph_84.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIVector< T > + + + + + diff --git a/pip/doc/html/inherit_graph_85.map b/pip/doc/html/inherit_graph_85.map new file mode 100644 index 0000000..2dc9864 --- /dev/null +++ b/pip/doc/html/inherit_graph_85.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_85.md5 b/pip/doc/html/inherit_graph_85.md5 new file mode 100644 index 0000000..9c98367 --- /dev/null +++ b/pip/doc/html/inherit_graph_85.md5 @@ -0,0 +1 @@ +c0e107eb4389d57f00bb0db99aeb5a16 \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_85.svg b/pip/doc/html/inherit_graph_85.svg new file mode 100644 index 0000000..ba4de27 --- /dev/null +++ b/pip/doc/html/inherit_graph_85.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIVector< Tab > + + + + + diff --git a/pip/doc/html/inherit_graph_86.map b/pip/doc/html/inherit_graph_86.map new file mode 100644 index 0000000..351723c --- /dev/null +++ b/pip/doc/html/inherit_graph_86.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_86.md5 b/pip/doc/html/inherit_graph_86.md5 new file mode 100644 index 0000000..6a836b8 --- /dev/null +++ b/pip/doc/html/inherit_graph_86.md5 @@ -0,0 +1 @@ +27494d6c06607ec98be669308c467d79 \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_86.svg b/pip/doc/html/inherit_graph_86.svg new file mode 100644 index 0000000..feeaddc --- /dev/null +++ b/pip/doc/html/inherit_graph_86.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIVector< Type > + + + + + diff --git a/pip/doc/html/inherit_graph_87.map b/pip/doc/html/inherit_graph_87.map new file mode 100644 index 0000000..93464ba --- /dev/null +++ b/pip/doc/html/inherit_graph_87.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_87.md5 b/pip/doc/html/inherit_graph_87.md5 new file mode 100644 index 0000000..a84eef7 --- /dev/null +++ b/pip/doc/html/inherit_graph_87.md5 @@ -0,0 +1 @@ +1cf32746d7a38ccd4b934ba5c9b82f1d \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_87.svg b/pip/doc/html/inherit_graph_87.svg new file mode 100644 index 0000000..4c84e35 --- /dev/null +++ b/pip/doc/html/inherit_graph_87.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIVector< Typedef > + + + + + diff --git a/pip/doc/html/inherit_graph_88.map b/pip/doc/html/inherit_graph_88.map new file mode 100644 index 0000000..e288cb7 --- /dev/null +++ b/pip/doc/html/inherit_graph_88.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_88.md5 b/pip/doc/html/inherit_graph_88.md5 new file mode 100644 index 0000000..ff6d1d8 --- /dev/null +++ b/pip/doc/html/inherit_graph_88.md5 @@ -0,0 +1 @@ +7ea6ca17f235721f6e649a4c752b6cd3 \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_88.svg b/pip/doc/html/inherit_graph_88.svg new file mode 100644 index 0000000..b03c393 --- /dev/null +++ b/pip/doc/html/inherit_graph_88.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIVector< uchar > + + + + + diff --git a/pip/doc/html/inherit_graph_89.map b/pip/doc/html/inherit_graph_89.map new file mode 100644 index 0000000..d30fe9e --- /dev/null +++ b/pip/doc/html/inherit_graph_89.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_89.md5 b/pip/doc/html/inherit_graph_89.md5 new file mode 100644 index 0000000..f69c9ee --- /dev/null +++ b/pip/doc/html/inherit_graph_89.md5 @@ -0,0 +1 @@ +dac102efd32e036f5329964323bc5c1e \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_89.svg b/pip/doc/html/inherit_graph_89.svg new file mode 100644 index 0000000..bf5bc88 --- /dev/null +++ b/pip/doc/html/inherit_graph_89.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIVector< Variable > + + + + + diff --git a/pip/doc/html/inherit_graph_9.map b/pip/doc/html/inherit_graph_9.map new file mode 100644 index 0000000..c0c6fd8 --- /dev/null +++ b/pip/doc/html/inherit_graph_9.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_9.md5 b/pip/doc/html/inherit_graph_9.md5 new file mode 100644 index 0000000..05caf5d --- /dev/null +++ b/pip/doc/html/inherit_graph_9.md5 @@ -0,0 +1 @@ +ca151dc12777026b4bf62fbf8ef24919 \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_9.svg b/pip/doc/html/inherit_graph_9.svg new file mode 100644 index 0000000..083aa2d --- /dev/null +++ b/pip/doc/html/inherit_graph_9.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +PIFlags< Enum > + + + + + diff --git a/pip/doc/html/inherit_graph_90.map b/pip/doc/html/inherit_graph_90.map new file mode 100644 index 0000000..22a3238 --- /dev/null +++ b/pip/doc/html/inherit_graph_90.map @@ -0,0 +1,3 @@ + + + diff --git a/pip/doc/html/inherit_graph_90.md5 b/pip/doc/html/inherit_graph_90.md5 new file mode 100644 index 0000000..2a570b6 --- /dev/null +++ b/pip/doc/html/inherit_graph_90.md5 @@ -0,0 +1 @@ +fbbcc884973d52b42cb54b15c60a521c \ No newline at end of file diff --git a/pip/doc/html/inherit_graph_90.svg b/pip/doc/html/inherit_graph_90.svg new file mode 100644 index 0000000..c232579 --- /dev/null +++ b/pip/doc/html/inherit_graph_90.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node1 + + +TransferFunction + + + + + diff --git a/pip/doc/html/inherits.html b/pip/doc/html/inherits.html new file mode 100644 index 0000000..da1fe08 --- /dev/null +++ b/pip/doc/html/inherits.html @@ -0,0 +1,310 @@ + + + + + + +PIP: Class Hierarchy + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    Class Hierarchy
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + + + diff --git a/pip/doc/html/jquery.js b/pip/doc/html/jquery.js new file mode 100644 index 0000000..516483e --- /dev/null +++ b/pip/doc/html/jquery.js @@ -0,0 +1,72 @@ +/* + * jQuery JavaScript Library v1.7.1 + * http://jquery.com/ + * + * Copyright 2011, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Mon Nov 21 21:11:03 2011 -0500 + */ +(function(bb,L){var av=bb.document,bu=bb.navigator,bl=bb.location;var b=(function(){var bF=function(b0,b1){return new bF.fn.init(b0,b1,bD)},bU=bb.jQuery,bH=bb.$,bD,bY=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,bM=/\S/,bI=/^\s+/,bE=/\s+$/,bA=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,bN=/^[\],:{}\s]*$/,bW=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bJ=/(?:^|:|,)(?:\s*\[)+/g,by=/(webkit)[ \/]([\w.]+)/,bR=/(opera)(?:.*version)?[ \/]([\w.]+)/,bQ=/(msie) ([\w.]+)/,bS=/(mozilla)(?:.*? rv:([\w.]+))?/,bB=/-([a-z]|[0-9])/ig,bZ=/^-ms-/,bT=function(b0,b1){return(b1+"").toUpperCase()},bX=bu.userAgent,bV,bC,e,bL=Object.prototype.toString,bG=Object.prototype.hasOwnProperty,bz=Array.prototype.push,bK=Array.prototype.slice,bO=String.prototype.trim,bv=Array.prototype.indexOf,bx={};bF.fn=bF.prototype={constructor:bF,init:function(b0,b4,b3){var b2,b5,b1,b6;if(!b0){return this}if(b0.nodeType){this.context=this[0]=b0;this.length=1;return this}if(b0==="body"&&!b4&&av.body){this.context=av;this[0]=av.body;this.selector=b0;this.length=1;return this}if(typeof b0==="string"){if(b0.charAt(0)==="<"&&b0.charAt(b0.length-1)===">"&&b0.length>=3){b2=[null,b0,null]}else{b2=bY.exec(b0)}if(b2&&(b2[1]||!b4)){if(b2[1]){b4=b4 instanceof bF?b4[0]:b4;b6=(b4?b4.ownerDocument||b4:av);b1=bA.exec(b0);if(b1){if(bF.isPlainObject(b4)){b0=[av.createElement(b1[1])];bF.fn.attr.call(b0,b4,true)}else{b0=[b6.createElement(b1[1])]}}else{b1=bF.buildFragment([b2[1]],[b6]);b0=(b1.cacheable?bF.clone(b1.fragment):b1.fragment).childNodes}return bF.merge(this,b0)}else{b5=av.getElementById(b2[2]);if(b5&&b5.parentNode){if(b5.id!==b2[2]){return b3.find(b0)}this.length=1;this[0]=b5}this.context=av;this.selector=b0;return this}}else{if(!b4||b4.jquery){return(b4||b3).find(b0)}else{return this.constructor(b4).find(b0)}}}else{if(bF.isFunction(b0)){return b3.ready(b0)}}if(b0.selector!==L){this.selector=b0.selector;this.context=b0.context}return bF.makeArray(b0,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return bK.call(this,0)},get:function(b0){return b0==null?this.toArray():(b0<0?this[this.length+b0]:this[b0])},pushStack:function(b1,b3,b0){var b2=this.constructor();if(bF.isArray(b1)){bz.apply(b2,b1)}else{bF.merge(b2,b1)}b2.prevObject=this;b2.context=this.context;if(b3==="find"){b2.selector=this.selector+(this.selector?" ":"")+b0}else{if(b3){b2.selector=this.selector+"."+b3+"("+b0+")"}}return b2},each:function(b1,b0){return bF.each(this,b1,b0)},ready:function(b0){bF.bindReady();bC.add(b0);return this},eq:function(b0){b0=+b0;return b0===-1?this.slice(b0):this.slice(b0,b0+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(bK.apply(this,arguments),"slice",bK.call(arguments).join(","))},map:function(b0){return this.pushStack(bF.map(this,function(b2,b1){return b0.call(b2,b1,b2)}))},end:function(){return this.prevObject||this.constructor(null)},push:bz,sort:[].sort,splice:[].splice};bF.fn.init.prototype=bF.fn;bF.extend=bF.fn.extend=function(){var b9,b2,b0,b1,b6,b7,b5=arguments[0]||{},b4=1,b3=arguments.length,b8=false;if(typeof b5==="boolean"){b8=b5;b5=arguments[1]||{};b4=2}if(typeof b5!=="object"&&!bF.isFunction(b5)){b5={}}if(b3===b4){b5=this;--b4}for(;b40){return}bC.fireWith(av,[bF]);if(bF.fn.trigger){bF(av).trigger("ready").off("ready")}}},bindReady:function(){if(bC){return}bC=bF.Callbacks("once memory");if(av.readyState==="complete"){return setTimeout(bF.ready,1)}if(av.addEventListener){av.addEventListener("DOMContentLoaded",e,false);bb.addEventListener("load",bF.ready,false)}else{if(av.attachEvent){av.attachEvent("onreadystatechange",e);bb.attachEvent("onload",bF.ready);var b0=false;try{b0=bb.frameElement==null}catch(b1){}if(av.documentElement.doScroll&&b0){bw()}}}},isFunction:function(b0){return bF.type(b0)==="function"},isArray:Array.isArray||function(b0){return bF.type(b0)==="array"},isWindow:function(b0){return b0&&typeof b0==="object"&&"setInterval" in b0},isNumeric:function(b0){return !isNaN(parseFloat(b0))&&isFinite(b0)},type:function(b0){return b0==null?String(b0):bx[bL.call(b0)]||"object"},isPlainObject:function(b2){if(!b2||bF.type(b2)!=="object"||b2.nodeType||bF.isWindow(b2)){return false}try{if(b2.constructor&&!bG.call(b2,"constructor")&&!bG.call(b2.constructor.prototype,"isPrototypeOf")){return false}}catch(b1){return false}var b0;for(b0 in b2){}return b0===L||bG.call(b2,b0)},isEmptyObject:function(b1){for(var b0 in b1){return false}return true},error:function(b0){throw new Error(b0)},parseJSON:function(b0){if(typeof b0!=="string"||!b0){return null}b0=bF.trim(b0);if(bb.JSON&&bb.JSON.parse){return bb.JSON.parse(b0)}if(bN.test(b0.replace(bW,"@").replace(bP,"]").replace(bJ,""))){return(new Function("return "+b0))()}bF.error("Invalid JSON: "+b0)},parseXML:function(b2){var b0,b1;try{if(bb.DOMParser){b1=new DOMParser();b0=b1.parseFromString(b2,"text/xml")}else{b0=new ActiveXObject("Microsoft.XMLDOM");b0.async="false";b0.loadXML(b2)}}catch(b3){b0=L}if(!b0||!b0.documentElement||b0.getElementsByTagName("parsererror").length){bF.error("Invalid XML: "+b2)}return b0},noop:function(){},globalEval:function(b0){if(b0&&bM.test(b0)){(bb.execScript||function(b1){bb["eval"].call(bb,b1)})(b0)}},camelCase:function(b0){return b0.replace(bZ,"ms-").replace(bB,bT)},nodeName:function(b1,b0){return b1.nodeName&&b1.nodeName.toUpperCase()===b0.toUpperCase()},each:function(b3,b6,b2){var b1,b4=0,b5=b3.length,b0=b5===L||bF.isFunction(b3);if(b2){if(b0){for(b1 in b3){if(b6.apply(b3[b1],b2)===false){break}}}else{for(;b40&&b0[0]&&b0[b1-1])||b1===0||bF.isArray(b0));if(b3){for(;b21?aJ.call(arguments,0):bG;if(!(--bw)){bC.resolveWith(bC,bx)}}}function bz(bF){return function(bG){bB[bF]=arguments.length>1?aJ.call(arguments,0):bG;bC.notifyWith(bE,bB)}}if(e>1){for(;bv
    a";bI=bv.getElementsByTagName("*");bF=bv.getElementsByTagName("a")[0];if(!bI||!bI.length||!bF){return{}}bG=av.createElement("select");bx=bG.appendChild(av.createElement("option"));bE=bv.getElementsByTagName("input")[0];bJ={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName("tbody").length,htmlSerialize:!!bv.getElementsByTagName("link").length,style:/top/.test(bF.getAttribute("style")),hrefNormalized:(bF.getAttribute("href")==="/a"),opacity:/^0.55/.test(bF.style.opacity),cssFloat:!!bF.style.cssFloat,checkOn:(bE.value==="on"),optSelected:bx.selected,getSetAttribute:bv.className!=="t",enctype:!!av.createElement("form").enctype,html5Clone:av.createElement("nav").cloneNode(true).outerHTML!=="<:nav>",submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true};bE.checked=true;bJ.noCloneChecked=bE.cloneNode(true).checked;bG.disabled=true;bJ.optDisabled=!bx.disabled;try{delete bv.test}catch(bC){bJ.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent("onclick",function(){bJ.noCloneEvent=false});bv.cloneNode(true).fireEvent("onclick")}bE=av.createElement("input");bE.value="t";bE.setAttribute("type","radio");bJ.radioValue=bE.value==="t";bE.setAttribute("checked","checked");bv.appendChild(bE);bD=av.createDocumentFragment();bD.appendChild(bv.lastChild);bJ.checkClone=bD.cloneNode(true).cloneNode(true).lastChild.checked;bJ.appendChecked=bE.checked;bD.removeChild(bE);bD.appendChild(bv);bv.innerHTML="";if(bb.getComputedStyle){bA=av.createElement("div");bA.style.width="0";bA.style.marginRight="0";bv.style.width="2px";bv.appendChild(bA);bJ.reliableMarginRight=(parseInt((bb.getComputedStyle(bA,null)||{marginRight:0}).marginRight,10)||0)===0}if(bv.attachEvent){for(by in {submit:1,change:1,focusin:1}){bB="on"+by;bw=(bB in bv);if(!bw){bv.setAttribute(bB,"return;");bw=(typeof bv[bB]==="function")}bJ[by+"Bubbles"]=bw}}bD.removeChild(bv);bD=bG=bx=bA=bv=bE=null;b(function(){var bM,bU,bV,bT,bN,bO,bL,bS,bR,e,bP,bQ=av.getElementsByTagName("body")[0];if(!bQ){return}bL=1;bS="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";bR="visibility:hidden;border:0;";e="style='"+bS+"border:5px solid #000;padding:0;'";bP="
    ";bM=av.createElement("div");bM.style.cssText=bR+"width:0;height:0;position:static;top:0;margin-top:"+bL+"px";bQ.insertBefore(bM,bQ.firstChild);bv=av.createElement("div");bM.appendChild(bv);bv.innerHTML="
    t
    ";bz=bv.getElementsByTagName("td");bw=(bz[0].offsetHeight===0);bz[0].style.display="";bz[1].style.display="none";bJ.reliableHiddenOffsets=bw&&(bz[0].offsetHeight===0);bv.innerHTML="";bv.style.width=bv.style.paddingLeft="1px";b.boxModel=bJ.boxModel=bv.offsetWidth===2;if(typeof bv.style.zoom!=="undefined"){bv.style.display="inline";bv.style.zoom=1;bJ.inlineBlockNeedsLayout=(bv.offsetWidth===2);bv.style.display="";bv.innerHTML="
    ";bJ.shrinkWrapBlocks=(bv.offsetWidth!==2)}bv.style.cssText=bS+bR;bv.innerHTML=bP;bU=bv.firstChild;bV=bU.firstChild;bN=bU.nextSibling.firstChild.firstChild;bO={doesNotAddBorder:(bV.offsetTop!==5),doesAddBorderForTableAndCells:(bN.offsetTop===5)};bV.style.position="fixed";bV.style.top="20px";bO.fixedPosition=(bV.offsetTop===20||bV.offsetTop===15);bV.style.position=bV.style.top="";bU.style.overflow="hidden";bU.style.position="relative";bO.subtractsBorderForOverflowNotVisible=(bV.offsetTop===-5);bO.doesNotIncludeMarginInBodyOffset=(bQ.offsetTop!==bL);bQ.removeChild(bM);bv=bM=null;b.extend(bJ,bO)});return bJ})();var aS=/^(?:\{.*\}|\[.*\])$/,aA=/([A-Z])/g;b.extend({cache:{},uuid:0,expando:"jQuery"+(b.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?b.cache[e[b.expando]]:e[b.expando];return !!e&&!S(e)},data:function(bx,bv,bz,by){if(!b.acceptData(bx)){return}var bG,bA,bD,bE=b.expando,bC=typeof bv==="string",bF=bx.nodeType,e=bF?b.cache:bx,bw=bF?bx[bE]:bx[bE]&&bE,bB=bv==="events";if((!bw||!e[bw]||(!bB&&!by&&!e[bw].data))&&bC&&bz===L){return}if(!bw){if(bF){bx[bE]=bw=++b.uuid}else{bw=bE}}if(!e[bw]){e[bw]={};if(!bF){e[bw].toJSON=b.noop}}if(typeof bv==="object"||typeof bv==="function"){if(by){e[bw]=b.extend(e[bw],bv)}else{e[bw].data=b.extend(e[bw].data,bv)}}bG=bA=e[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==L){bA[b.camelCase(bv)]=bz}if(bB&&!bA[bv]){return bG.events}if(bC){bD=bA[bv];if(bD==null){bD=bA[b.camelCase(bv)]}}else{bD=bA}return bD},removeData:function(bx,bv,by){if(!b.acceptData(bx)){return}var bB,bA,bz,bC=b.expando,bD=bx.nodeType,e=bD?b.cache:bx,bw=bD?bx[bC]:bC;if(!e[bw]){return}if(bv){bB=by?e[bw]:e[bw].data;if(bB){if(!b.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=b.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(" ")}}}for(bA=0,bz=bv.length;bA-1){return true}}return false},val:function(bx){var e,bv,by,bw=this[0];if(!arguments.length){if(bw){e=b.valHooks[bw.nodeName.toLowerCase()]||b.valHooks[bw.type];if(e&&"get" in e&&(bv=e.get(bw,"value"))!==L){return bv}bv=bw.value;return typeof bv==="string"?bv.replace(aU,""):bv==null?"":bv}return}by=b.isFunction(bx);return this.each(function(bA){var bz=b(this),bB;if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=""}else{if(typeof bB==="number"){bB+=""}else{if(b.isArray(bB)){bB=b.map(bB,function(bC){return bC==null?"":bC+""})}}}e=b.valHooks[this.nodeName.toLowerCase()]||b.valHooks[this.type];if(!e||!("set" in e)||e.set(this,bB,"value")===L){this.value=bB}})}});b.extend({valHooks:{option:{get:function(e){var bv=e.attributes.value;return !bv||bv.specified?e.value:e.text}},select:{get:function(e){var bA,bv,bz,bx,by=e.selectedIndex,bB=[],bC=e.options,bw=e.type==="select-one";if(by<0){return null}bv=bw?by:0;bz=bw?by+1:bC.length;for(;bv=0});if(!e.length){bv.selectedIndex=-1}return e}}},attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(bA,bx,bB,bz){var bw,e,by,bv=bA.nodeType; +if(!bA||bv===3||bv===8||bv===2){return}if(bz&&bx in b.attrFn){return b(bA)[bx](bB)}if(typeof bA.getAttribute==="undefined"){return b.prop(bA,bx,bB)}by=bv!==1||!b.isXMLDoc(bA);if(by){bx=bx.toLowerCase();e=b.attrHooks[bx]||(ao.test(bx)?aY:be)}if(bB!==L){if(bB===null){b.removeAttr(bA,bx);return}else{if(e&&"set" in e&&by&&(bw=e.set(bA,bB,bx))!==L){return bw}else{bA.setAttribute(bx,""+bB);return bB}}}else{if(e&&"get" in e&&by&&(bw=e.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?L:bw}}},removeAttr:function(bx,bz){var by,bA,bv,e,bw=0;if(bz&&bx.nodeType===1){bA=bz.toLowerCase().split(af);e=bA.length;for(;bw=0)}}})});var bd=/^(?:textarea|input|select)$/i,n=/^([^\.]*)?(?:\.(.+))?$/,J=/\bhover(\.\S+)?\b/,aO=/^key/,bf=/^(?:mouse|contextmenu)|click/,T=/^(?:focusinfocus|focusoutblur)$/,U=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,Y=function(e){var bv=U.exec(e);if(bv){bv[1]=(bv[1]||"").toLowerCase();bv[3]=bv[3]&&new RegExp("(?:^|\\s)"+bv[3]+"(?:\\s|$)")}return bv},j=function(bw,e){var bv=bw.attributes||{};return((!e[1]||bw.nodeName.toLowerCase()===e[1])&&(!e[2]||(bv.id||{}).value===e[2])&&(!e[3]||e[3].test((bv["class"]||{}).value)))},bt=function(e){return b.event.special.hover?e:e.replace(J,"mouseenter$1 mouseleave$1")};b.event={add:function(bx,bC,bJ,bA,by){var bD,bB,bK,bI,bH,bF,e,bG,bv,bz,bw,bE;if(bx.nodeType===3||bx.nodeType===8||!bC||!bJ||!(bD=b._data(bx))){return}if(bJ.handler){bv=bJ;bJ=bv.handler}if(!bJ.guid){bJ.guid=b.guid++}bK=bD.events;if(!bK){bD.events=bK={}}bB=bD.handle;if(!bB){bD.handle=bB=function(bL){return typeof b!=="undefined"&&(!bL||b.event.triggered!==bL.type)?b.event.dispatch.apply(bB.elem,arguments):L};bB.elem=bx}bC=b.trim(bt(bC)).split(" ");for(bI=0;bI=0){bG=bG.slice(0,-1);bw=true}if(bG.indexOf(".")>=0){bx=bG.split(".");bG=bx.shift();bx.sort()}if((!bA||b.event.customEvent[bG])&&!b.event.global[bG]){return}bv=typeof bv==="object"?bv[b.expando]?bv:new b.Event(bG,bv):new b.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bw;bv.namespace=bx.join(".");bv.namespace_re=bv.namespace?new RegExp("(^|\\.)"+bx.join("\\.(?:.*\\.)?")+"(\\.|$)"):null;by=bG.indexOf(":")<0?"on"+bG:"";if(!bA){e=b.cache;for(bC in e){if(e[bC].events&&e[bC].events[bG]){b.event.trigger(bv,bD,e[bC].handle.elem,true)}}return}bv.result=L;if(!bv.target){bv.target=bA}bD=bD!=null?b.makeArray(bD):[];bD.unshift(bv);bF=b.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bD)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!b.isWindow(bA)){bI=bF.delegateType||bG;bH=T.test(bI+bG)?bA:bA.parentNode;bz=null;for(;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz&&bz===bA.ownerDocument){bB.push([bz.defaultView||bz.parentWindow||bb,bI])}}for(bC=0;bCbA){bH.push({elem:this,matches:bz.slice(bA)})}for(bC=0;bC0?this.on(e,null,bx,bw):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}if(aO.test(e)){b.event.fixHooks[e]=b.event.keyHooks}if(bf.test(e)){b.event.fixHooks[e]=b.event.mouseHooks}}); +/* + * Sizzle CSS Selector Engine + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){var bH=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bC="sizcache"+(Math.random()+"").replace(".",""),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\/g,bO=/\r\n/g,bQ=/\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!=="string"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU=true,bT=by.isXML(e),bW=[],b0=bV;do{bH.exec("");bS=bH.exec(b0);if(bS){b0=bS[3];bW.push(bS[1]);if(bS[2]){bR=bS[3];break}}}while(bS);if(bW.length>1&&bD.exec(bV)){if(bW.length===2&&bE.relative[bW[0]]){b3=bM(bW[0]+bW[1],e,bZ)}else{b3=bE.relative[bW[0]]?[e]:by(bW.shift(),e);while(bW.length){bV=bW.shift();if(bE.relative[bV]){bV+=bW.shift()}b3=bM(bV,b3,bZ)}}}else{if(!bZ&&bW.length>1&&e.nodeType===9&&!bT&&bE.match.ID.test(bW[0])&&!bE.match.ID.test(bW[bW.length-1])){b2=by.find(bW.shift(),e,bT);e=b2.expr?by.filter(b2.expr,b2.set)[0]:b2.set[0]}if(e){b2=bZ?{expr:bW.pop(),set:bF(bZ)}:by.find(bW.pop(),bW.length===1&&(bW[0]==="~"||bW[0]==="+")&&e.parentNode?e.parentNode:e,bT);b3=b2.expr?by.filter(b2.expr,b2.set):b2.set;if(bW.length>0){b6=bF(b3)}else{bU=false}while(bW.length){b5=bW.pop();b4=b5;if(!bE.relative[b5]){b5=""}else{b4=bW.pop()}if(b4==null){b4=e}bE.relative[b5](b6,b4,bT)}}else{b6=bW=[]}}if(!b6){b6=b3}if(!b6){by.error(b5||bV)}if(bL.call(b6)==="[object Array]"){if(!bU){bY.push.apply(bY,b6)}else{if(e&&e.nodeType===1){for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&(b6[bX]===true||b6[bX].nodeType===1&&by.contains(e,b6[bX]))){bY.push(b3[bX])}}}else{for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&b6[bX].nodeType===1){bY.push(b3[bX])}}}}}else{bF(b6,bY)}if(bR){by(bR,b1,bY,bZ);by.uniqueSort(bY)}return bY};by.uniqueSort=function(bR){if(bJ){bB=bA;bR.sort(bJ);if(bB){for(var e=1;e0};by.find=function(bX,e,bY){var bW,bS,bU,bT,bV,bR;if(!bX){return[]}for(bS=0,bU=bE.order.length;bS":function(bW,bR){var bV,bU=typeof bR==="string",bS=0,e=bW.length;if(bU&&!bQ.test(bR)){bR=bR.toLowerCase();for(;bS=0)){if(!bS){e.push(bV)}}else{if(bS){bR[bU]=false}}}}return false},ID:function(e){return e[1].replace(bK,"")},TAG:function(bR,e){return bR[1].replace(bK,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){by.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var bR=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(bR[1]+(bR[2]||1))-0;e[3]=bR[3]-0}else{if(e[2]){by.error(e[0])}}e[0]=bI++;return e},ATTR:function(bU,bR,bS,e,bV,bW){var bT=bU[1]=bU[1].replace(bK,"");if(!bW&&bE.attrMap[bT]){bU[1]=bE.attrMap[bT]}bU[4]=(bU[4]||bU[5]||"").replace(bK,"");if(bU[2]==="~="){bU[4]=" "+bU[4]+" "}return bU},PSEUDO:function(bU,bR,bS,e,bV){if(bU[1]==="not"){if((bH.exec(bU[3])||"").length>1||/^\w/.test(bU[3])){bU[3]=by(bU[3],null,null,bR)}else{var bT=by.filter(bU[3],bR,bS,true^bV);if(!bS){e.push.apply(e,bT)}return false}}else{if(bE.match.POS.test(bU[0])||bE.match.CHILD.test(bU[0])){return true}}return bU},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bS,bR,e){return !!by(e[3],bS).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(bS){var e=bS.getAttribute("type"),bR=bS.type;return bS.nodeName.toLowerCase()==="input"&&"text"===bR&&(e===bR||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===bR.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===bR.type},button:function(bR){var e=bR.nodeName.toLowerCase();return e==="input"&&"button"===bR.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bR,e){return e===0},last:function(bS,bR,e,bT){return bR===bT.length-1},even:function(bR,e){return e%2===0},odd:function(bR,e){return e%2===1 +},lt:function(bS,bR,e){return bRe[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e==="contains"){return(bS.textContent||bS.innerText||bw([bS])||"").indexOf(bX[3])>=0}else{if(e==="not"){var bT=bX[3];for(var bV=0,bU=bT.length;bV=0)}}},ID:function(bR,e){return bR.nodeType===1&&bR.getAttribute("id")===e},TAG:function(bR,e){return(e==="*"&&bR.nodeType===1)||!!bR.nodeName&&bR.nodeName.toLowerCase()===e},CLASS:function(bR,e){return(" "+(bR.className||bR.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(bV,bT){var bS=bT[1],e=by.attr?by.attr(bV,bS):bE.attrHandle[bS]?bE.attrHandle[bS](bV):bV[bS]!=null?bV[bS]:bV.getAttribute(bS),bW=e+"",bU=bT[2],bR=bT[4];return e==null?bU==="!=":!bU&&by.attr?e!=null:bU==="="?bW===bR:bU==="*="?bW.indexOf(bR)>=0:bU==="~="?(" "+bW+" ").indexOf(bR)>=0:!bR?bW&&e!==false:bU==="!="?bW!==bR:bU==="^="?bW.indexOf(bR)===0:bU==="$="?bW.substr(bW.length-bR.length)===bR:bU==="|="?bW===bR||bW.substr(0,bR.length+1)===bR+"-":false},POS:function(bU,bR,bS,bV){var e=bR[2],bT=bE.setFilters[e];if(bT){return bT(bU,bS,bR,bV)}}}};var bD=bE.match.POS,bx=function(bR,e){return"\\"+(e-0+1)};for(var bz in bE.match){bE.match[bz]=new RegExp(bE.match[bz].source+(/(?![^\[]*\])(?![^\(]*\))/.source));bE.leftMatch[bz]=new RegExp(/(^(?:.|\r|\n)*?)/.source+bE.match[bz].source.replace(/\\(\d+)/g,bx))}var bF=function(bR,e){bR=Array.prototype.slice.call(bR,0);if(e){e.push.apply(e,bR);return e}return bR};try{Array.prototype.slice.call(av.documentElement.childNodes,0)[0].nodeType}catch(bP){bF=function(bU,bT){var bS=0,bR=bT||[];if(bL.call(bU)==="[object Array]"){Array.prototype.push.apply(bR,bU)}else{if(typeof bU.length==="number"){for(var e=bU.length;bS";e.insertBefore(bR,e.firstChild);if(av.getElementById(bS)){bE.find.ID=function(bU,bV,bW){if(typeof bV.getElementById!=="undefined"&&!bW){var bT=bV.getElementById(bU[1]);return bT?bT.id===bU[1]||typeof bT.getAttributeNode!=="undefined"&&bT.getAttributeNode("id").nodeValue===bU[1]?[bT]:L:[]}};bE.filter.ID=function(bV,bT){var bU=typeof bV.getAttributeNode!=="undefined"&&bV.getAttributeNode("id");return bV.nodeType===1&&bU&&bU.nodeValue===bT}}e.removeChild(bR);e=bR=null})();(function(){var e=av.createElement("div");e.appendChild(av.createComment(""));if(e.getElementsByTagName("*").length>0){bE.find.TAG=function(bR,bV){var bU=bV.getElementsByTagName(bR[1]);if(bR[1]==="*"){var bT=[];for(var bS=0;bU[bS];bS++){if(bU[bS].nodeType===1){bT.push(bU[bS])}}bU=bT}return bU}}e.innerHTML="";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){bE.attrHandle.href=function(bR){return bR.getAttribute("href",2)}}e=null})();if(av.querySelectorAll){(function(){var e=by,bT=av.createElement("div"),bS="__sizzle__";bT.innerHTML="

    ";if(bT.querySelectorAll&&bT.querySelectorAll(".TEST").length===0){return}by=function(b4,bV,bZ,b3){bV=bV||av;if(!b3&&!by.isXML(bV)){var b2=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b4);if(b2&&(bV.nodeType===1||bV.nodeType===9)){if(b2[1]){return bF(bV.getElementsByTagName(b4),bZ)}else{if(b2[2]&&bE.find.CLASS&&bV.getElementsByClassName){return bF(bV.getElementsByClassName(b2[2]),bZ)}}}if(bV.nodeType===9){if(b4==="body"&&bV.body){return bF([bV.body],bZ)}else{if(b2&&b2[3]){var bY=bV.getElementById(b2[3]);if(bY&&bY.parentNode){if(bY.id===b2[3]){return bF([bY],bZ)}}else{return bF([],bZ)}}}try{return bF(bV.querySelectorAll(b4),bZ)}catch(b0){}}else{if(bV.nodeType===1&&bV.nodeName.toLowerCase()!=="object"){var bW=bV,bX=bV.getAttribute("id"),bU=bX||bS,b6=bV.parentNode,b5=/^\s*[+~]/.test(b4);if(!bX){bV.setAttribute("id",bU)}else{bU=bU.replace(/'/g,"\\$&")}if(b5&&b6){bV=bV.parentNode}try{if(!b5||b6){return bF(bV.querySelectorAll("[id='"+bU+"'] "+b4),bZ)}}catch(b1){}finally{if(!bX){bW.removeAttribute("id")}}}}}return e(b4,bV,bZ,b3)};for(var bR in e){by[bR]=e[bR]}bT=null})()}(function(){var e=av.documentElement,bS=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(bS){var bU=!bS.call(av.createElement("div"),"div"),bR=false;try{bS.call(av.documentElement,"[test!='']:sizzle")}catch(bT){bR=true}by.matchesSelector=function(bW,bY){bY=bY.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!by.isXML(bW)){try{if(bR||!bE.match.PSEUDO.test(bY)&&!/!=/.test(bY)){var bV=bS.call(bW,bY);if(bV||!bU||bW.document&&bW.document.nodeType!==11){return bV}}}catch(bX){}}return by(bY,null,null,[bW]).length>0}}})();(function(){var e=av.createElement("div");e.innerHTML="
    ";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}bE.order.splice(1,0,"CLASS");bE.find.CLASS=function(bR,bS,bT){if(typeof bS.getElementsByClassName!=="undefined"&&!bT){return bS.getElementsByClassName(bR[1])}};e=null})();function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT0){bU=e;break}}}e=e[bR]}bZ[bT]=bU}}}if(av.documentElement.contains){by.contains=function(bR,e){return bR!==e&&(bR.contains?bR.contains(e):true)}}else{if(av.documentElement.compareDocumentPosition){by.contains=function(bR,e){return !!(bR.compareDocumentPosition(e)&16)}}else{by.contains=function(){return false}}}by.isXML=function(e){var bR=(e?e.ownerDocument||e:0).documentElement;return bR?bR.nodeName!=="HTML":false};var bM=function(bS,e,bW){var bV,bX=[],bU="",bY=e.nodeType?[e]:e;while((bV=bE.match.PSEUDO.exec(bS))){bU+=bV[0];bS=bS.replace(bE.match.PSEUDO,"")}bS=bE.relative[bS]?bS+"*":bS;for(var bT=0,bR=bY.length;bT0){for(bB=bA;bB=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(by,bx){var bv=[],bw,e,bz=this[0];if(b.isArray(by)){var bB=1;while(bz&&bz.ownerDocument&&bz!==bx){for(bw=0;bw-1:b.find.matchesSelector(bz,by)){bv.push(bz);break}else{bz=bz.parentNode;if(!bz||!bz.ownerDocument||bz===bx||bz.nodeType===11){break}}}}bv=bv.length>1?b.unique(bv):bv;return this.pushStack(bv,"closest",by)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof e==="string"){return b.inArray(this[0],b(e))}return b.inArray(e.jquery?e[0]:e,this)},add:function(e,bv){var bx=typeof e==="string"?b(e,bv):b.makeArray(e&&e.nodeType?[e]:e),bw=b.merge(this.get(),bx);return this.pushStack(C(bx[0])||C(bw[0])?bw:b.unique(bw))},andSelf:function(){return this.add(this.prevObject)}});function C(e){return !e||!e.parentNode||e.parentNode.nodeType===11}b.each({parent:function(bv){var e=bv.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(bv,e,bw){return b.dir(bv,"parentNode",bw)},next:function(e){return b.nth(e,2,"nextSibling")},prev:function(e){return b.nth(e,2,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(bv,e,bw){return b.dir(bv,"nextSibling",bw)},prevUntil:function(bv,e,bw){return b.dir(bv,"previousSibling",bw)},siblings:function(e){return b.sibling(e.parentNode.firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.makeArray(e.childNodes)}},function(e,bv){b.fn[e]=function(by,bw){var bx=b.map(this,bv,by);if(!ab.test(e)){bw=by}if(bw&&typeof bw==="string"){bx=b.filter(bw,bx)}bx=this.length>1&&!ay[e]?b.unique(bx):bx;if((this.length>1||a9.test(bw))&&aq.test(e)){bx=bx.reverse()}return this.pushStack(bx,e,P.call(arguments).join(","))}});b.extend({filter:function(bw,e,bv){if(bv){bw=":not("+bw+")"}return e.length===1?b.find.matchesSelector(e[0],bw)?[e[0]]:[]:b.find.matches(bw,e)},dir:function(bw,bv,by){var e=[],bx=bw[bv];while(bx&&bx.nodeType!==9&&(by===L||bx.nodeType!==1||!b(bx).is(by))){if(bx.nodeType===1){e.push(bx)}bx=bx[bv]}return e},nth:function(by,e,bw,bx){e=e||1;var bv=0;for(;by;by=by[bw]){if(by.nodeType===1&&++bv===e){break}}return by},sibling:function(bw,bv){var e=[];for(;bw;bw=bw.nextSibling){if(bw.nodeType===1&&bw!==bv){e.push(bw)}}return e}});function aG(bx,bw,e){bw=bw||0;if(b.isFunction(bw)){return b.grep(bx,function(bz,by){var bA=!!bw.call(bz,by,bz);return bA===e})}else{if(bw.nodeType){return b.grep(bx,function(bz,by){return(bz===bw)===e})}else{if(typeof bw==="string"){var bv=b.grep(bx,function(by){return by.nodeType===1});if(bp.test(bw)){return b.filter(bw,bv,!e)}else{bw=b.filter(bw,bv)}}}}return b.grep(bx,function(bz,by){return(b.inArray(bz,bw)>=0)===e})}function a(e){var bw=aR.split("|"),bv=e.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aR="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ag=/ jQuery\d+="(?:\d+|null)"/g,ar=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,d=/<([\w:]+)/,w=/",""],legend:[1,"
    ","
    "],thead:[1,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],col:[2,"","
    "],area:[1,"",""],_default:[0,"",""]},ac=a(av); +ax.optgroup=ax.option;ax.tbody=ax.tfoot=ax.colgroup=ax.caption=ax.thead;ax.th=ax.td;if(!b.support.htmlSerialize){ax._default=[1,"div
    ","
    "]}b.fn.extend({text:function(e){if(b.isFunction(e)){return this.each(function(bw){var bv=b(this);bv.text(e.call(this,bw,bv.text()))})}if(typeof e!=="object"&&e!==L){return this.empty().append((this[0]&&this[0].ownerDocument||av).createTextNode(e))}return b.text(this)},wrapAll:function(e){if(b.isFunction(e)){return this.each(function(bw){b(this).wrapAll(e.call(this,bw))})}if(this[0]){var bv=b(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bv.insertBefore(this[0])}bv.map(function(){var bw=this;while(bw.firstChild&&bw.firstChild.nodeType===1){bw=bw.firstChild}return bw}).append(this)}return this},wrapInner:function(e){if(b.isFunction(e)){return this.each(function(bv){b(this).wrapInner(e.call(this,bv))})}return this.each(function(){var bv=b(this),bw=bv.contents();if(bw.length){bw.wrapAll(e)}else{bv.append(e)}})},wrap:function(e){var bv=b.isFunction(e);return this.each(function(bw){b(this).wrapAll(bv?e.call(this,bw):e)})},unwrap:function(){return this.parent().each(function(){if(!b.nodeName(this,"body")){b(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.insertBefore(e,this.firstChild)}})},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this)})}else{if(arguments.length){var e=b.clean(arguments);e.push.apply(e,this.toArray());return this.pushStack(e,"before",arguments)}}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this.nextSibling)})}else{if(arguments.length){var e=this.pushStack(this,"after",arguments);e.push.apply(e,b.clean(arguments));return e}}},remove:function(e,bx){for(var bv=0,bw;(bw=this[bv])!=null;bv++){if(!e||b.filter(e,[bw]).length){if(!bx&&bw.nodeType===1){b.cleanData(bw.getElementsByTagName("*"));b.cleanData([bw])}if(bw.parentNode){bw.parentNode.removeChild(bw)}}}return this},empty:function(){for(var e=0,bv;(bv=this[e])!=null;e++){if(bv.nodeType===1){b.cleanData(bv.getElementsByTagName("*"))}while(bv.firstChild){bv.removeChild(bv.firstChild)}}return this},clone:function(bv,e){bv=bv==null?false:bv;e=e==null?bv:e;return this.map(function(){return b.clone(this,bv,e)})},html:function(bx){if(bx===L){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(ag,""):null}else{if(typeof bx==="string"&&!ae.test(bx)&&(b.support.leadingWhitespace||!ar.test(bx))&&!ax[(d.exec(bx)||["",""])[1].toLowerCase()]){bx=bx.replace(R,"<$1>");try{for(var bw=0,bv=this.length;bw1&&bw0?this.clone(true):this).get();b(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,e,bC.selector)}}});function bg(e){if(typeof e.getElementsByTagName!=="undefined"){return e.getElementsByTagName("*")}else{if(typeof e.querySelectorAll!=="undefined"){return e.querySelectorAll("*")}else{return[]}}}function az(e){if(e.type==="checkbox"||e.type==="radio"){e.defaultChecked=e.checked}}function E(e){var bv=(e.nodeName||"").toLowerCase();if(bv==="input"){az(e)}else{if(bv!=="script"&&typeof e.getElementsByTagName!=="undefined"){b.grep(e.getElementsByTagName("input"),az)}}}function al(e){var bv=av.createElement("div");ac.appendChild(bv);bv.innerHTML=e.outerHTML;return bv.firstChild}b.extend({clone:function(by,bA,bw){var e,bv,bx,bz=b.support.html5Clone||!ah.test("<"+by.nodeName)?by.cloneNode(true):al(by);if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!b.isXMLDoc(by)){ai(by,bz);e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){if(bv[bx]){ai(e[bx],bv[bx])}}}if(bA){t(by,bz);if(bw){e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){t(e[bx],bv[bx])}}}e=bv=null;return bz},clean:function(bw,by,bH,bA){var bF;by=by||av;if(typeof by.createElement==="undefined"){by=by.ownerDocument||by[0]&&by[0].ownerDocument||av}var bI=[],bB;for(var bE=0,bz;(bz=bw[bE])!=null;bE++){if(typeof bz==="number"){bz+=""}if(!bz){continue}if(typeof bz==="string"){if(!W.test(bz)){bz=by.createTextNode(bz)}else{bz=bz.replace(R,"<$1>");var bK=(d.exec(bz)||["",""])[1].toLowerCase(),bx=ax[bK]||ax._default,bD=bx[0],bv=by.createElement("div");if(by===av){ac.appendChild(bv)}else{a(by).appendChild(bv)}bv.innerHTML=bx[1]+bz+bx[2];while(bD--){bv=bv.lastChild}if(!b.support.tbody){var e=w.test(bz),bC=bK==="table"&&!e?bv.firstChild&&bv.firstChild.childNodes:bx[1]===""&&!e?bv.childNodes:[];for(bB=bC.length-1;bB>=0;--bB){if(b.nodeName(bC[bB],"tbody")&&!bC[bB].childNodes.length){bC[bB].parentNode.removeChild(bC[bB])}}}if(!b.support.leadingWhitespace&&ar.test(bz)){bv.insertBefore(by.createTextNode(ar.exec(bz)[0]),bv.firstChild)}bz=bv.childNodes}}var bG;if(!b.support.appendChecked){if(bz[0]&&typeof(bG=bz.length)==="number"){for(bB=0;bB=0){return bx+"px"}}else{return bx}}}});if(!b.support.opacity){b.cssHooks.opacity={get:function(bv,e){return au.test((e&&bv.currentStyle?bv.currentStyle.filter:bv.style.filter)||"")?(parseFloat(RegExp.$1)/100)+"":e?"1":""},set:function(by,bz){var bx=by.style,bv=by.currentStyle,e=b.isNumeric(bz)?"alpha(opacity="+bz*100+")":"",bw=bv&&bv.filter||bx.filter||"";bx.zoom=1;if(bz>=1&&b.trim(bw.replace(ak,""))===""){bx.removeAttribute("filter");if(bv&&!bv.filter){return}}bx.filter=ak.test(bw)?bw.replace(ak,e):bw+" "+e}}}b(function(){if(!b.support.reliableMarginRight){b.cssHooks.marginRight={get:function(bw,bv){var e;b.swap(bw,{display:"inline-block"},function(){if(bv){e=Z(bw,"margin-right","marginRight")}else{e=bw.style.marginRight}});return e}}}});if(av.defaultView&&av.defaultView.getComputedStyle){aI=function(by,bw){var bv,bx,e;bw=bw.replace(z,"-$1").toLowerCase();if((bx=by.ownerDocument.defaultView)&&(e=bx.getComputedStyle(by,null))){bv=e.getPropertyValue(bw);if(bv===""&&!b.contains(by.ownerDocument.documentElement,by)){bv=b.style(by,bw)}}return bv}}if(av.documentElement.currentStyle){aX=function(bz,bw){var bA,e,by,bv=bz.currentStyle&&bz.currentStyle[bw],bx=bz.style;if(bv===null&&bx&&(by=bx[bw])){bv=by}if(!bc.test(bv)&&bn.test(bv)){bA=bx.left;e=bz.runtimeStyle&&bz.runtimeStyle.left;if(e){bz.runtimeStyle.left=bz.currentStyle.left}bx.left=bw==="fontSize"?"1em":(bv||0);bv=bx.pixelLeft+"px";bx.left=bA;if(e){bz.runtimeStyle.left=e}}return bv===""?"auto":bv}}Z=aI||aX;function p(by,bw,bv){var bA=bw==="width"?by.offsetWidth:by.offsetHeight,bz=bw==="width"?an:a1,bx=0,e=bz.length; +if(bA>0){if(bv!=="border"){for(;bx)<[^<]*)*<\/script>/gi,q=/^(?:select|textarea)/i,h=/\s+/,br=/([?&])_=[^&]*/,K=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,A=b.fn.load,aa={},r={},aE,s,aV=["*/"]+["*"];try{aE=bl.href}catch(aw){aE=av.createElement("a");aE.href="";aE=aE.href}s=K.exec(aE.toLowerCase())||[];function f(e){return function(by,bA){if(typeof by!=="string"){bA=by;by="*"}if(b.isFunction(bA)){var bx=by.toLowerCase().split(h),bw=0,bz=bx.length,bv,bB,bC;for(;bw=0){var e=bw.slice(by,bw.length);bw=bw.slice(0,by)}var bx="GET";if(bz){if(b.isFunction(bz)){bA=bz;bz=L}else{if(typeof bz==="object"){bz=b.param(bz,b.ajaxSettings.traditional);bx="POST"}}}var bv=this;b.ajax({url:bw,type:bx,dataType:"html",data:bz,complete:function(bC,bB,bD){bD=bC.responseText;if(bC.isResolved()){bC.done(function(bE){bD=bE});bv.html(e?b("
    ").append(bD.replace(a6,"")).find(e):bD)}if(bA){bv.each(bA,[bD,bB,bC])}}});return this},serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?b.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||q.test(this.nodeName)||aZ.test(this.type))}).map(function(e,bv){var bw=b(this).val();return bw==null?null:b.isArray(bw)?b.map(bw,function(by,bx){return{name:bv.name,value:by.replace(bs,"\r\n")}}):{name:bv.name,value:bw.replace(bs,"\r\n")}}).get()}});b.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,bv){b.fn[bv]=function(bw){return this.on(bv,bw)}});b.each(["get","post"],function(e,bv){b[bv]=function(bw,by,bz,bx){if(b.isFunction(by)){bx=bx||bz;bz=by;by=L}return b.ajax({type:bv,url:bw,data:by,success:bz,dataType:bx})}});b.extend({getScript:function(e,bv){return b.get(e,L,bv,"script")},getJSON:function(e,bv,bw){return b.get(e,bv,bw,"json")},ajaxSetup:function(bv,e){if(e){am(bv,b.ajaxSettings)}else{e=bv;bv=b.ajaxSettings}am(bv,e);return bv},ajaxSettings:{url:aE,isLocal:aM.test(s[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":aV},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":bb.String,"text html":true,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:f(aa),ajaxTransport:f(r),ajax:function(bz,bx){if(typeof bz==="object"){bx=bz;bz=L}bx=bx||{};var bD=b.ajaxSetup({},bx),bS=bD.context||bD,bG=bS!==bD&&(bS.nodeType||bS instanceof b)?b(bS):b.event,bR=b.Deferred(),bN=b.Callbacks("once memory"),bB=bD.statusCode||{},bC,bH={},bO={},bQ,by,bL,bE,bI,bA=0,bw,bK,bJ={readyState:0,setRequestHeader:function(bT,bU){if(!bA){var e=bT.toLowerCase();bT=bO[e]=bO[e]||bT;bH[bT]=bU}return this},getAllResponseHeaders:function(){return bA===2?bQ:null},getResponseHeader:function(bT){var e;if(bA===2){if(!by){by={};while((e=aD.exec(bQ))){by[e[1].toLowerCase()]=e[2]}}e=by[bT.toLowerCase()]}return e===L?null:e},overrideMimeType:function(e){if(!bA){bD.mimeType=e}return this},abort:function(e){e=e||"abort";if(bL){bL.abort(e)}bF(0,e);return this}};function bF(bZ,bU,b0,bW){if(bA===2){return}bA=2;if(bE){clearTimeout(bE)}bL=L;bQ=bW||"";bJ.readyState=bZ>0?4:0;var bT,b4,b3,bX=bU,bY=b0?bj(bD,bJ,b0):L,bV,b2;if(bZ>=200&&bZ<300||bZ===304){if(bD.ifModified){if((bV=bJ.getResponseHeader("Last-Modified"))){b.lastModified[bC]=bV}if((b2=bJ.getResponseHeader("Etag"))){b.etag[bC]=b2}}if(bZ===304){bX="notmodified";bT=true}else{try{b4=G(bD,bY);bX="success";bT=true}catch(b1){bX="parsererror";b3=b1}}}else{b3=bX;if(!bX||bZ){bX="error";if(bZ<0){bZ=0}}}bJ.status=bZ;bJ.statusText=""+(bU||bX);if(bT){bR.resolveWith(bS,[b4,bX,bJ])}else{bR.rejectWith(bS,[bJ,bX,b3])}bJ.statusCode(bB);bB=L;if(bw){bG.trigger("ajax"+(bT?"Success":"Error"),[bJ,bD,bT?b4:b3])}bN.fireWith(bS,[bJ,bX]);if(bw){bG.trigger("ajaxComplete",[bJ,bD]);if(!(--b.active)){b.event.trigger("ajaxStop")}}}bR.promise(bJ);bJ.success=bJ.done;bJ.error=bJ.fail;bJ.complete=bN.add;bJ.statusCode=function(bT){if(bT){var e;if(bA<2){for(e in bT){bB[e]=[bB[e],bT[e]]}}else{e=bT[bJ.status];bJ.then(e,e)}}return this};bD.url=((bz||bD.url)+"").replace(bq,"").replace(c,s[1]+"//");bD.dataTypes=b.trim(bD.dataType||"*").toLowerCase().split(h);if(bD.crossDomain==null){bI=K.exec(bD.url.toLowerCase());bD.crossDomain=!!(bI&&(bI[1]!=s[1]||bI[2]!=s[2]||(bI[3]||(bI[1]==="http:"?80:443))!=(s[3]||(s[1]==="http:"?80:443))))}if(bD.data&&bD.processData&&typeof bD.data!=="string"){bD.data=b.param(bD.data,bD.traditional)}aW(aa,bD,bx,bJ);if(bA===2){return false}bw=bD.global;bD.type=bD.type.toUpperCase();bD.hasContent=!aQ.test(bD.type);if(bw&&b.active++===0){b.event.trigger("ajaxStart")}if(!bD.hasContent){if(bD.data){bD.url+=(M.test(bD.url)?"&":"?")+bD.data;delete bD.data}bC=bD.url;if(bD.cache===false){var bv=b.now(),bP=bD.url.replace(br,"$1_="+bv);bD.url=bP+((bP===bD.url)?(M.test(bD.url)?"&":"?")+"_="+bv:"")}}if(bD.data&&bD.hasContent&&bD.contentType!==false||bx.contentType){bJ.setRequestHeader("Content-Type",bD.contentType)}if(bD.ifModified){bC=bC||bD.url;if(b.lastModified[bC]){bJ.setRequestHeader("If-Modified-Since",b.lastModified[bC])}if(b.etag[bC]){bJ.setRequestHeader("If-None-Match",b.etag[bC])}}bJ.setRequestHeader("Accept",bD.dataTypes[0]&&bD.accepts[bD.dataTypes[0]]?bD.accepts[bD.dataTypes[0]]+(bD.dataTypes[0]!=="*"?", "+aV+"; q=0.01":""):bD.accepts["*"]);for(bK in bD.headers){bJ.setRequestHeader(bK,bD.headers[bK])}if(bD.beforeSend&&(bD.beforeSend.call(bS,bJ,bD)===false||bA===2)){bJ.abort();return false}for(bK in {success:1,error:1,complete:1}){bJ[bK](bD[bK])}bL=aW(r,bD,bx,bJ);if(!bL){bF(-1,"No Transport")}else{bJ.readyState=1;if(bw){bG.trigger("ajaxSend",[bJ,bD])}if(bD.async&&bD.timeout>0){bE=setTimeout(function(){bJ.abort("timeout")},bD.timeout)}try{bA=1;bL.send(bH,bF)}catch(bM){if(bA<2){bF(-1,bM)}else{throw bM}}}return bJ},param:function(e,bw){var bv=[],by=function(bz,bA){bA=b.isFunction(bA)?bA():bA;bv[bv.length]=encodeURIComponent(bz)+"="+encodeURIComponent(bA)};if(bw===L){bw=b.ajaxSettings.traditional}if(b.isArray(e)||(e.jquery&&!b.isPlainObject(e))){b.each(e,function(){by(this.name,this.value)})}else{for(var bx in e){v(bx,e[bx],bw,by)}}return bv.join("&").replace(k,"+")}});function v(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(bv||ap.test(bw)){bx(bw,bz)}else{v(bw+"["+(typeof bz==="object"||b.isArray(bz)?bA:"")+"]",bz,bv,bx)}})}else{if(!bv&&by!=null&&typeof by==="object"){for(var e in by){v(bw+"["+e+"]",by[e],bv,bx)}}else{bx(bw,by)}}}b.extend({active:0,lastModified:{},etag:{}});function bj(bD,bC,bz){var bv=bD.contents,bB=bD.dataTypes,bw=bD.responseFields,by,bA,bx,e;for(bA in bw){if(bA in bz){bC[bw[bA]]=bz[bA]}}while(bB[0]==="*"){bB.shift();if(by===L){by=bD.mimeType||bC.getResponseHeader("content-type")}}if(by){for(bA in bv){if(bv[bA]&&bv[bA].test(by)){bB.unshift(bA);break}}}if(bB[0] in bz){bx=bB[0]}else{for(bA in bz){if(!bB[0]||bD.converters[bA+" "+bB[0]]){bx=bA;break}if(!e){e=bA}}bx=bx||e}if(bx){if(bx!==bB[0]){bB.unshift(bx)}return bz[bx]}}function G(bH,bz){if(bH.dataFilter){bz=bH.dataFilter(bz,bH.dataType)}var bD=bH.dataTypes,bG={},bA,bE,bw=bD.length,bB,bC=bD[0],bx,by,bF,bv,e;for(bA=1;bA=bw.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();bw.animatedProperties[this.prop]=true;for(bA in bw.animatedProperties){if(bw.animatedProperties[bA]!==true){e=false}}if(e){if(bw.overflow!=null&&!b.support.shrinkWrapBlocks){b.each(["","X","Y"],function(bC,bD){bz.style["overflow"+bD]=bw.overflow[bC]})}if(bw.hide){b(bz).hide()}if(bw.hide||bw.show){for(bA in bw.animatedProperties){b.style(bz,bA,bw.orig[bA]);b.removeData(bz,"fxshow"+bA,true);b.removeData(bz,"toggle"+bA,true)}}bv=bw.complete;if(bv){bw.complete=false;bv.call(bz)}}return false}else{if(bw.duration==Infinity){this.now=bx}else{bB=bx-this.startTime;this.state=bB/bw.duration;this.pos=b.easing[bw.animatedProperties[this.prop]](this.state,bB,0,1,bw.duration);this.now=this.start+((this.end-this.start)*this.pos)}this.update()}return true}};b.extend(b.fx,{tick:function(){var bw,bv=b.timers,e=0;for(;e").appendTo(e),bw=bv.css("display");bv.remove();if(bw==="none"||bw===""){if(!a8){a8=av.createElement("iframe");a8.frameBorder=a8.width=a8.height=0}e.appendChild(a8);if(!m||!a8.createElement){m=(a8.contentWindow||a8.contentDocument).document;m.write((av.compatMode==="CSS1Compat"?"":"")+"");m.close()}bv=m.createElement(bx);m.body.appendChild(bv);bw=b.css(bv,"display");e.removeChild(a8)}Q[bx]=bw}return Q[bx]}var V=/^t(?:able|d|h)$/i,ad=/^(?:body|html)$/i;if("getBoundingClientRect" in av.documentElement){b.fn.offset=function(bI){var by=this[0],bB;if(bI){return this.each(function(e){b.offset.setOffset(this,bI,e)})}if(!by||!by.ownerDocument){return null}if(by===by.ownerDocument.body){return b.offset.bodyOffset(by)}try{bB=by.getBoundingClientRect()}catch(bF){}var bH=by.ownerDocument,bw=bH.documentElement;if(!bB||!b.contains(bw,by)){return bB?{top:bB.top,left:bB.left}:{top:0,left:0}}var bC=bH.body,bD=aK(bH),bA=bw.clientTop||bC.clientTop||0,bE=bw.clientLeft||bC.clientLeft||0,bv=bD.pageYOffset||b.support.boxModel&&bw.scrollTop||bC.scrollTop,bz=bD.pageXOffset||b.support.boxModel&&bw.scrollLeft||bC.scrollLeft,bG=bB.top+bv-bA,bx=bB.left+bz-bE;return{top:bG,left:bx}}}else{b.fn.offset=function(bF){var bz=this[0];if(bF){return this.each(function(bG){b.offset.setOffset(this,bF,bG)})}if(!bz||!bz.ownerDocument){return null}if(bz===bz.ownerDocument.body){return b.offset.bodyOffset(bz)}var bC,bw=bz.offsetParent,bv=bz,bE=bz.ownerDocument,bx=bE.documentElement,bA=bE.body,bB=bE.defaultView,e=bB?bB.getComputedStyle(bz,null):bz.currentStyle,bD=bz.offsetTop,by=bz.offsetLeft;while((bz=bz.parentNode)&&bz!==bA&&bz!==bx){if(b.support.fixedPosition&&e.position==="fixed"){break}bC=bB?bB.getComputedStyle(bz,null):bz.currentStyle;bD-=bz.scrollTop;by-=bz.scrollLeft;if(bz===bw){bD+=bz.offsetTop;by+=bz.offsetLeft;if(b.support.doesNotAddBorder&&!(b.support.doesAddBorderForTableAndCells&&V.test(bz.nodeName))){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}bv=bw;bw=bz.offsetParent}if(b.support.subtractsBorderForOverflowNotVisible&&bC.overflow!=="visible"){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}e=bC}if(e.position==="relative"||e.position==="static"){bD+=bA.offsetTop;by+=bA.offsetLeft}if(b.support.fixedPosition&&e.position==="fixed"){bD+=Math.max(bx.scrollTop,bA.scrollTop);by+=Math.max(bx.scrollLeft,bA.scrollLeft)}return{top:bD,left:by}}}b.offset={bodyOffset:function(e){var bw=e.offsetTop,bv=e.offsetLeft;if(b.support.doesNotIncludeMarginInBodyOffset){bw+=parseFloat(b.css(e,"marginTop"))||0;bv+=parseFloat(b.css(e,"marginLeft"))||0}return{top:bw,left:bv}},setOffset:function(bx,bG,bA){var bB=b.css(bx,"position");if(bB==="static"){bx.style.position="relative"}var bz=b(bx),bv=bz.offset(),e=b.css(bx,"top"),bE=b.css(bx,"left"),bF=(bB==="absolute"||bB==="fixed")&&b.inArray("auto",[e,bE])>-1,bD={},bC={},bw,by;if(bF){bC=bz.position();bw=bC.top;by=bC.left}else{bw=parseFloat(e)||0;by=parseFloat(bE)||0}if(b.isFunction(bG)){bG=bG.call(bx,bA,bv)}if(bG.top!=null){bD.top=(bG.top-bv.top)+bw}if(bG.left!=null){bD.left=(bG.left-bv.left)+by}if("using" in bG){bG.using.call(bx,bD)}else{bz.css(bD)}}};b.fn.extend({position:function(){if(!this[0]){return null}var bw=this[0],bv=this.offsetParent(),bx=this.offset(),e=ad.test(bv[0].nodeName)?{top:0,left:0}:bv.offset();bx.top-=parseFloat(b.css(bw,"marginTop"))||0;bx.left-=parseFloat(b.css(bw,"marginLeft"))||0;e.top+=parseFloat(b.css(bv[0],"borderTopWidth"))||0;e.left+=parseFloat(b.css(bv[0],"borderLeftWidth"))||0;return{top:bx.top-e.top,left:bx.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||av.body;while(e&&(!ad.test(e.nodeName)&&b.css(e,"position")==="static")){e=e.offsetParent}return e})}});b.each(["Left","Top"],function(bv,e){var bw="scroll"+e;b.fn[bw]=function(bz){var bx,by;if(bz===L){bx=this[0];if(!bx){return null}by=aK(bx);return by?("pageXOffset" in by)?by[bv?"pageYOffset":"pageXOffset"]:b.support.boxModel&&by.document.documentElement[bw]||by.document.body[bw]:bx[bw]}return this.each(function(){by=aK(this);if(by){by.scrollTo(!bv?bz:b(by).scrollLeft(),bv?bz:b(by).scrollTop())}else{this[bw]=bz}})}});function aK(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}b.each(["Height","Width"],function(bv,e){var bw=e.toLowerCase();b.fn["inner"+e]=function(){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,"padding")):this[bw]():null};b.fn["outer"+e]=function(by){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,by?"margin":"border")):this[bw]():null};b.fn[bw]=function(bz){var bA=this[0];if(!bA){return bz==null?null:this}if(b.isFunction(bz)){return this.each(function(bE){var bD=b(this);bD[bw](bz.call(this,bE,bD[bw]()))})}if(b.isWindow(bA)){var bB=bA.document.documentElement["client"+e],bx=bA.document.body;return bA.document.compatMode==="CSS1Compat"&&bB||bx&&bx["client"+e]||bB}else{if(bA.nodeType===9){return Math.max(bA.documentElement["client"+e],bA.body["scroll"+e],bA.documentElement["scroll"+e],bA.body["offset"+e],bA.documentElement["offset"+e])}else{if(bz===L){var bC=b.css(bA,bw),by=parseFloat(bC);return b.isNumeric(by)?by:bC}else{return this.css(bw,typeof bz==="string"?bz:bz+"px")}}}}});bb.jQuery=bb.$=b;if(typeof define==="function"&&define.amd&&define.amd.jQuery){define("jquery",[],function(){return b +})}})(window); +/* + * jQuery UI 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI + */ +(function(a,d){a.ui=a.ui||{};if(a.ui.version){return}a.extend(a.ui,{version:"1.8.18",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(e,f){return typeof e==="number"?this.each(function(){var g=this;setTimeout(function(){a(g).focus();if(f){f.call(g)}},e)}):this._focus.apply(this,arguments)},scrollParent:function(){var e;if((a.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){e=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(a.curCSS(this,"position",1))&&(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}else{e=this.parents().filter(function(){return(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!e.length?a(document):e},zIndex:function(h){if(h!==d){return this.css("zIndex",h)}if(this.length){var f=a(this[0]),e,g;while(f.length&&f[0]!==document){e=f.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){g=parseInt(f.css("zIndex"),10);if(!isNaN(g)&&g!==0){return g}}f=f.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});a.each(["Width","Height"],function(g,e){var f=e==="Width"?["Left","Right"]:["Top","Bottom"],h=e.toLowerCase(),k={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};function j(m,l,i,n){a.each(f,function(){l-=parseFloat(a.curCSS(m,"padding"+this,true))||0;if(i){l-=parseFloat(a.curCSS(m,"border"+this+"Width",true))||0}if(n){l-=parseFloat(a.curCSS(m,"margin"+this,true))||0}});return l}a.fn["inner"+e]=function(i){if(i===d){return k["inner"+e].call(this)}return this.each(function(){a(this).css(h,j(this,i)+"px")})};a.fn["outer"+e]=function(i,l){if(typeof i!=="number"){return k["outer"+e].call(this,i)}return this.each(function(){a(this).css(h,j(this,i,true,l)+"px")})}});function c(g,e){var j=g.nodeName.toLowerCase();if("area"===j){var i=g.parentNode,h=i.name,f;if(!g.href||!h||i.nodeName.toLowerCase()!=="map"){return false}f=a("img[usemap=#"+h+"]")[0];return !!f&&b(f)}return(/input|select|textarea|button|object/.test(j)?!g.disabled:"a"==j?g.href||e:e)&&b(g)}function b(e){return !a(e).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.extend(a.expr[":"],{data:function(g,f,e){return !!a.data(g,e[3])},focusable:function(e){return c(e,!isNaN(a.attr(e,"tabindex")))},tabbable:function(g){var e=a.attr(g,"tabindex"),f=isNaN(e);return(f||e>=0)&&c(g,!f)}});a(function(){var e=document.body,f=e.appendChild(f=document.createElement("div"));f.offsetHeight;a.extend(f.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});a.support.minHeight=f.offsetHeight===100;a.support.selectstart="onselectstart" in f;e.removeChild(f).style.display="none"});a.extend(a.ui,{plugin:{add:function(f,g,j){var h=a.ui[f].prototype;for(var e in j){h.plugins[e]=h.plugins[e]||[];h.plugins[e].push([g,j[e]])}},call:function(e,g,f){var j=e.plugins[g];if(!j||!e.element[0].parentNode){return}for(var h=0;h0){return true}h[e]=1;g=(h[e]>0);h[e]=0;return g},isOverAxis:function(f,e,g){return(f>e)&&(f<(e+g))},isOver:function(j,f,i,h,e,g){return a.ui.isOverAxis(j,i,e)&&a.ui.isOverAxis(f,h,g)}})})(jQuery);/* + * jQuery UI Widget 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Widget + */ +(function(b,d){if(b.cleanData){var c=b.cleanData;b.cleanData=function(f){for(var g=0,h;(h=f[g])!=null;g++){try{b(h).triggerHandler("remove")}catch(j){}}c(f)}}else{var a=b.fn.remove;b.fn.remove=function(e,f){return this.each(function(){if(!f){if(!e||b.filter(e,[this]).length){b("*",this).add([this]).each(function(){try{b(this).triggerHandler("remove")}catch(g){}})}}return a.call(b(this),e,f)})}}b.widget=function(f,h,e){var g=f.split(".")[0],j;f=f.split(".")[1];j=g+"-"+f;if(!e){e=h;h=b.Widget}b.expr[":"][j]=function(k){return !!b.data(k,f)};b[g]=b[g]||{};b[g][f]=function(k,l){if(arguments.length){this._createWidget(k,l)}};var i=new h();i.options=b.extend(true,{},i.options);b[g][f].prototype=b.extend(true,i,{namespace:g,widgetName:f,widgetEventPrefix:b[g][f].prototype.widgetEventPrefix||f,widgetBaseClass:j},e);b.widget.bridge(f,b[g][f])};b.widget.bridge=function(f,e){b.fn[f]=function(i){var g=typeof i==="string",h=Array.prototype.slice.call(arguments,1),j=this;i=!g&&h.length?b.extend.apply(null,[true,i].concat(h)):i;if(g&&i.charAt(0)==="_"){return j}if(g){this.each(function(){var k=b.data(this,f),l=k&&b.isFunction(k[i])?k[i].apply(k,h):k;if(l!==k&&l!==d){j=l;return false}})}else{this.each(function(){var k=b.data(this,f);if(k){k.option(i||{})._init()}else{b.data(this,f,new e(i,this))}})}return j}};b.Widget=function(e,f){if(arguments.length){this._createWidget(e,f)}};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(f,g){b.data(g,this.widgetName,this);this.element=b(g);this.options=b.extend(true,{},this.options,this._getCreateOptions(),f);var e=this;this.element.bind("remove."+this.widgetName,function(){e.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(f,g){var e=f;if(arguments.length===0){return b.extend({},this.options)}if(typeof f==="string"){if(g===d){return this.options[f]}e={};e[f]=g}this._setOptions(e);return this},_setOptions:function(f){var e=this;b.each(f,function(g,h){e._setOption(g,h)});return this},_setOption:function(e,f){this.options[e]=f;if(e==="disabled"){this.widget()[f?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",f)}return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(e,f,g){var j,i,h=this.options[e];g=g||{};f=b.Event(f);f.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase();f.target=this.element[0];i=f.originalEvent;if(i){for(j in i){if(!(j in f)){f[j]=i[j]}}}this.element.trigger(f,g);return !(b.isFunction(h)&&h.call(this.element[0],f,g)===false||f.isDefaultPrevented())}}})(jQuery);/* + * jQuery UI Mouse 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Mouse + * + * Depends: + * jquery.ui.widget.js + */ +(function(b,c){var a=false;b(document).mouseup(function(d){a=false});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var d=this;this.element.bind("mousedown."+this.widgetName,function(e){return d._mouseDown(e)}).bind("click."+this.widgetName,function(e){if(true===b.data(e.target,d.widgetName+".preventClickEvent")){b.removeData(e.target,d.widgetName+".preventClickEvent");e.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(f){if(a){return}(this._mouseStarted&&this._mouseUp(f));this._mouseDownEvent=f;var e=this,g=(f.which==1),d=(typeof this.options.cancel=="string"&&f.target.nodeName?b(f.target).closest(this.options.cancel).length:false);if(!g||d||!this._mouseCapture(f)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(f)&&this._mouseDelayMet(f)){this._mouseStarted=(this._mouseStart(f)!==false);if(!this._mouseStarted){f.preventDefault();return true}}if(true===b.data(f.target,this.widgetName+".preventClickEvent")){b.removeData(f.target,this.widgetName+".preventClickEvent")}this._mouseMoveDelegate=function(h){return e._mouseMove(h)};this._mouseUpDelegate=function(h){return e._mouseUp(h)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);f.preventDefault();a=true;return true},_mouseMove:function(d){if(b.browser.msie&&!(document.documentMode>=9)&&!d.button){return this._mouseUp(d)}if(this._mouseStarted){this._mouseDrag(d);return d.preventDefault()}if(this._mouseDistanceMet(d)&&this._mouseDelayMet(d)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,d)!==false);(this._mouseStarted?this._mouseDrag(d):this._mouseUp(d))}return !this._mouseStarted},_mouseUp:function(d){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;if(d.target==this._mouseDownEvent.target){b.data(d.target,this.widgetName+".preventClickEvent",true)}this._mouseStop(d)}return false},_mouseDistanceMet:function(d){return(Math.max(Math.abs(this._mouseDownEvent.pageX-d.pageX),Math.abs(this._mouseDownEvent.pageY-d.pageY))>=this.options.distance)},_mouseDelayMet:function(d){return this.mouseDelayMet},_mouseStart:function(d){},_mouseDrag:function(d){},_mouseStop:function(d){},_mouseCapture:function(d){return true}})})(jQuery);(function(c,d){c.widget("ui.resizable",c.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000},_create:function(){var f=this,k=this.options;this.element.addClass("ui-resizable");c.extend(this,{_aspectRatio:!!(k.aspectRatio),aspectRatio:k.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:k.helper||k.ghost||k.animate?k.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){this.element.wrap(c('
    ').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("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom: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({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=k.handles||(!c(".ui-resizable-handle",this.element).length?"e,s,se":{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"});if(this.handles.constructor==String){if(this.handles=="all"){this.handles="n,e,s,w,se,sw,ne,nw"}var l=this.handles.split(",");this.handles={};for(var g=0;g
    ');if(/sw|se|ne|nw/.test(j)){h.css({zIndex:++k.zIndex})}if("se"==j){h.addClass("ui-icon ui-icon-gripsmall-diagonal-se")}this.handles[j]=".ui-resizable-"+j;this.element.append(h)}}this._renderAxis=function(q){q=q||this.element;for(var n in this.handles){if(this.handles[n].constructor==String){this.handles[n]=c(this.handles[n],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var o=c(this.handles[n],this.element),p=0;p=/sw|ne|nw|se|n|s/.test(n)?o.outerHeight():o.outerWidth();var m=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join("");q.css(m,p);this._proportionallyResize()}if(!c(this.handles[n]).length){continue}}};this._renderAxis(this.element);this._handles=c(".ui-resizable-handle",this.element).disableSelection();this._handles.mouseover(function(){if(!f.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}f.axis=i&&i[1]?i[1]:"se"}});if(k.autoHide){this._handles.hide();c(this.element).addClass("ui-resizable-autohide").hover(function(){if(k.disabled){return}c(this).removeClass("ui-resizable-autohide");f._handles.show()},function(){if(k.disabled){return}if(!f.resizing){c(this).addClass("ui-resizable-autohide");f._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var e=function(g){c(g).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){e(this.element);var f=this.element;f.after(this.originalElement.css({position:f.css("position"),width:f.outerWidth(),height:f.outerHeight(),top:f.css("top"),left:f.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);e(this.originalElement);return this},_mouseCapture:function(f){var g=false;for(var e in this.handles){if(c(this.handles[e])[0]==f.target){g=true}}return !this.options.disabled&&g},_mouseStart:function(g){var j=this.options,f=this.element.position(),e=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(e.is(".ui-draggable")||(/absolute/).test(e.css("position"))){e.css({position:"absolute",top:f.top,left:f.left})}this._renderProxy();var k=b(this.helper.css("left")),h=b(this.helper.css("top"));if(j.containment){k+=c(j.containment).scrollLeft()||0;h+=c(j.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:k,top:h};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:k,top:h};this.sizeDiff={width:e.outerWidth()-e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:g.pageX,top:g.pageY};this.aspectRatio=(typeof j.aspectRatio=="number")?j.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var i=c(".ui-resizable-"+this.axis).css("cursor");c("body").css("cursor",i=="auto"?this.axis+"-resize":i);e.addClass("ui-resizable-resizing");this._propagate("start",g);return true},_mouseDrag:function(e){var h=this.helper,g=this.options,m={},q=this,j=this.originalMousePosition,n=this.axis;var r=(e.pageX-j.left)||0,p=(e.pageY-j.top)||0;var i=this._change[n];if(!i){return false}var l=i.apply(this,[e,r,p]),k=c.browser.msie&&c.browser.version<7,f=this.sizeDiff;this._updateVirtualBoundaries(e.shiftKey);if(this._aspectRatio||e.shiftKey){l=this._updateRatio(l,e)}l=this._respectSize(l,e);this._propagate("resize",e);h.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});if(!this._helper&&this._proportionallyResizeElements.length){this._proportionallyResize()}this._updateCache(l);this._trigger("resize",e,this.ui());return false},_mouseStop:function(h){this.resizing=false;var i=this.options,m=this;if(this._helper){var g=this._proportionallyResizeElements,e=g.length&&(/textarea/i).test(g[0].nodeName),f=e&&c.ui.hasScroll(g[0],"left")?0:m.sizeDiff.height,k=e?0:m.sizeDiff.width;var n={width:(m.helper.width()-k),height:(m.helper.height()-f)},j=(parseInt(m.element.css("left"),10)+(m.position.left-m.originalPosition.left))||null,l=(parseInt(m.element.css("top"),10)+(m.position.top-m.originalPosition.top))||null;if(!i.animate){this.element.css(c.extend(n,{top:l,left:j}))}m.helper.height(m.size.height);m.helper.width(m.size.width);if(this._helper&&!i.animate){this._proportionallyResize()}}c("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",h);if(this._helper){this.helper.remove()}return false},_updateVirtualBoundaries:function(g){var j=this.options,i,h,f,k,e;e={minWidth:a(j.minWidth)?j.minWidth:0,maxWidth:a(j.maxWidth)?j.maxWidth:Infinity,minHeight:a(j.minHeight)?j.minHeight:0,maxHeight:a(j.maxHeight)?j.maxHeight:Infinity};if(this._aspectRatio||g){i=e.minHeight*this.aspectRatio;f=e.minWidth/this.aspectRatio;h=e.maxHeight*this.aspectRatio;k=e.maxWidth/this.aspectRatio;if(i>e.minWidth){e.minWidth=i}if(f>e.minHeight){e.minHeight=f}if(hl.width),s=a(l.height)&&i.minHeight&&(i.minHeight>l.height);if(h){l.width=i.minWidth}if(s){l.height=i.minHeight}if(t){l.width=i.maxWidth}if(m){l.height=i.maxHeight}var f=this.originalPosition.left+this.originalSize.width,p=this.position.top+this.size.height;var k=/sw|nw|w/.test(q),e=/nw|ne|n/.test(q);if(h&&k){l.left=f-i.minWidth}if(t&&k){l.left=f-i.maxWidth}if(s&&e){l.top=p-i.minHeight}if(m&&e){l.top=p-i.maxHeight}var n=!l.width&&!l.height;if(n&&!l.left&&l.top){l.top=null}else{if(n&&!l.top&&l.left){l.left=null}}return l},_proportionallyResize:function(){var k=this.options;if(!this._proportionallyResizeElements.length){return}var g=this.helper||this.element;for(var f=0;f');var e=c.browser.msie&&c.browser.version<7,g=(e?1:0),h=(e?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+h,height:this.element.outerHeight()+h,position:"absolute",left:this.elementOffset.left-g+"px",top:this.elementOffset.top-g+"px",zIndex:++i.zIndex});this.helper.appendTo("body").disableSelection()}else{this.helper=this.element}},_change:{e:function(g,f,e){return{width:this.originalSize.width+f}},w:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{left:i.left+f,width:g.width-f}},n:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{top:i.top+e,height:g.height-e}},s:function(g,f,e){return{height:this.originalSize.height+e}},se:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},sw:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[g,f,e]))},ne:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},nw:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[g,f,e]))}},_propagate:function(f,e){c.ui.plugin.call(this,f,[e,this.ui()]);(f!="resize"&&this._trigger(f,e,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}}});c.extend(c.ui.resizable,{version:"1.8.18"});c.ui.plugin.add("resizable","alsoResize",{start:function(f,g){var e=c(this).data("resizable"),i=e.options;var h=function(j){c(j).each(function(){var k=c(this);k.data("resizable-alsoresize",{width:parseInt(k.width(),10),height:parseInt(k.height(),10),left:parseInt(k.css("left"),10),top:parseInt(k.css("top"),10)})})};if(typeof(i.alsoResize)=="object"&&!i.alsoResize.parentNode){if(i.alsoResize.length){i.alsoResize=i.alsoResize[0];h(i.alsoResize)}else{c.each(i.alsoResize,function(j){h(j)})}}else{h(i.alsoResize)}},resize:function(g,i){var f=c(this).data("resizable"),j=f.options,h=f.originalSize,l=f.originalPosition;var k={height:(f.size.height-h.height)||0,width:(f.size.width-h.width)||0,top:(f.position.top-l.top)||0,left:(f.position.left-l.left)||0},e=function(m,n){c(m).each(function(){var q=c(this),r=c(this).data("resizable-alsoresize"),p={},o=n&&n.length?n:q.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];c.each(o,function(s,u){var t=(r[u]||0)+(k[u]||0);if(t&&t>=0){p[u]=t||null}});q.css(p)})};if(typeof(j.alsoResize)=="object"&&!j.alsoResize.nodeType){c.each(j.alsoResize,function(m,n){e(m,n)})}else{e(j.alsoResize)}},stop:function(e,f){c(this).removeData("resizable-alsoresize")}});c.ui.plugin.add("resizable","animate",{stop:function(i,n){var p=c(this).data("resizable"),j=p.options;var h=p._proportionallyResizeElements,e=h.length&&(/textarea/i).test(h[0].nodeName),f=e&&c.ui.hasScroll(h[0],"left")?0:p.sizeDiff.height,l=e?0:p.sizeDiff.width;var g={width:(p.size.width-l),height:(p.size.height-f)},k=(parseInt(p.element.css("left"),10)+(p.position.left-p.originalPosition.left))||null,m=(parseInt(p.element.css("top"),10)+(p.position.top-p.originalPosition.top))||null; +p.element.animate(c.extend(g,m&&k?{top:m,left:k}:{}),{duration:j.animateDuration,easing:j.animateEasing,step:function(){var o={width:parseInt(p.element.css("width"),10),height:parseInt(p.element.css("height"),10),top:parseInt(p.element.css("top"),10),left:parseInt(p.element.css("left"),10)};if(h&&h.length){c(h[0]).css({width:o.width,height:o.height})}p._updateCache(o);p._propagate("resize",i)}})}});c.ui.plugin.add("resizable","containment",{start:function(f,r){var t=c(this).data("resizable"),j=t.options,l=t.element;var g=j.containment,k=(g instanceof c)?g.get(0):(/parent/.test(g))?l.parent().get(0):g;if(!k){return}t.containerElement=c(k);if(/document/.test(g)||g==document){t.containerOffset={left:0,top:0};t.containerPosition={left:0,top:0};t.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var n=c(k),i=[];c(["Top","Right","Left","Bottom"]).each(function(p,o){i[p]=b(n.css("padding"+o))});t.containerOffset=n.offset();t.containerPosition=n.position();t.containerSize={height:(n.innerHeight()-i[3]),width:(n.innerWidth()-i[1])};var q=t.containerOffset,e=t.containerSize.height,m=t.containerSize.width,h=(c.ui.hasScroll(k,"left")?k.scrollWidth:m),s=(c.ui.hasScroll(k)?k.scrollHeight:e);t.parentData={element:k,left:q.left,top:q.top,width:h,height:s}}},resize:function(g,q){var t=c(this).data("resizable"),i=t.options,f=t.containerSize,p=t.containerOffset,m=t.size,n=t.position,r=t._aspectRatio||g.shiftKey,e={top:0,left:0},h=t.containerElement;if(h[0]!=document&&(/static/).test(h.css("position"))){e=p}if(n.left<(t._helper?p.left:0)){t.size.width=t.size.width+(t._helper?(t.position.left-p.left):(t.position.left-e.left));if(r){t.size.height=t.size.width/i.aspectRatio}t.position.left=i.helper?p.left:0}if(n.top<(t._helper?p.top:0)){t.size.height=t.size.height+(t._helper?(t.position.top-p.top):t.position.top);if(r){t.size.width=t.size.height*i.aspectRatio}t.position.top=t._helper?p.top:0}t.offset.left=t.parentData.left+t.position.left;t.offset.top=t.parentData.top+t.position.top;var l=Math.abs((t._helper?t.offset.left-e.left:(t.offset.left-e.left))+t.sizeDiff.width),s=Math.abs((t._helper?t.offset.top-e.top:(t.offset.top-p.top))+t.sizeDiff.height);var k=t.containerElement.get(0)==t.element.parent().get(0),j=/relative|absolute/.test(t.containerElement.css("position"));if(k&&j){l-=t.parentData.left}if(l+t.size.width>=t.parentData.width){t.size.width=t.parentData.width-l;if(r){t.size.height=t.size.width/t.aspectRatio}}if(s+t.size.height>=t.parentData.height){t.size.height=t.parentData.height-s;if(r){t.size.width=t.size.height*t.aspectRatio}}},stop:function(f,n){var q=c(this).data("resizable"),g=q.options,l=q.position,m=q.containerOffset,e=q.containerPosition,i=q.containerElement;var j=c(q.helper),r=j.offset(),p=j.outerWidth()-q.sizeDiff.width,k=j.outerHeight()-q.sizeDiff.height;if(q._helper&&!g.animate&&(/relative/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}if(q._helper&&!g.animate&&(/static/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}}});c.ui.plugin.add("resizable","ghost",{start:function(g,h){var e=c(this).data("resizable"),i=e.options,f=e.size;e.ghost=e.originalElement.clone();e.ghost.css({opacity:0.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof i.ghost=="string"?i.ghost:"");e.ghost.appendTo(e.helper)},resize:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost){e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})}},stop:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost&&e.helper){e.helper.get(0).removeChild(e.ghost.get(0))}}});c.ui.plugin.add("resizable","grid",{resize:function(e,m){var p=c(this).data("resizable"),h=p.options,k=p.size,i=p.originalSize,j=p.originalPosition,n=p.axis,l=h._aspectRatio||e.shiftKey;h.grid=typeof h.grid=="number"?[h.grid,h.grid]:h.grid;var g=Math.round((k.width-i.width)/(h.grid[0]||1))*(h.grid[0]||1),f=Math.round((k.height-i.height)/(h.grid[1]||1))*(h.grid[1]||1);if(/^(se|s|e)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f}else{if(/^(ne)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f}else{if(/^(sw)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.left=j.left-g}else{p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f;p.position.left=j.left-g}}}}});var b=function(e){return parseInt(e,10)||0};var a=function(e){return !isNaN(parseInt(e,10))}})(jQuery);/* + * jQuery hashchange event - v1.3 - 7/21/2010 + * http://benalman.com/projects/jquery-hashchange-plugin/ + * + * Copyright (c) 2010 "Cowboy" Ben Alman + * Dual licensed under the MIT and GPL licenses. + * http://benalman.com/about/license/ + */ +(function($,e,b){var c="hashchange",h=document,f,g=$.event.special,i=h.documentMode,d="on"+c in e&&(i===b||i>7);function a(j){j=j||location.href;return"#"+j.replace(/^[^#]*#?(.*)$/,"$1")}$.fn[c]=function(j){return j?this.bind(c,j):this.trigger(c)};$.fn[c].delay=50;g[c]=$.extend(g[c],{setup:function(){if(d){return false}$(f.start)},teardown:function(){if(d){return false}$(f.stop)}});f=(function(){var j={},p,m=a(),k=function(q){return q},l=k,o=k;j.start=function(){p||n()};j.stop=function(){p&&clearTimeout(p);p=b};function n(){var r=a(),q=o(m);if(r!==m){l(m=r,q);$(e).trigger(c)}else{if(q!==m){location.href=location.href.replace(/#.*/,"")+q}}p=setTimeout(n,$.fn[c].delay)}$.browser.msie&&!d&&(function(){var q,r;j.start=function(){if(!q){r=$.fn[c].src;r=r&&r+a();q=$(' + + +
    + +
    +
    PICoutManipulators Namespace Reference
    +
    +
    + +

    Namespace contains enums controlled PICout. +More...

    +
    + + + + + + + + + + + + + +

    +Enumerations

    enum  PICoutSpecialChar {
    +  Null, +NewLine, +Tab, +Esc, +
    +  Quote +
    + }
     Enum contains special characters. More...
     
    enum  PICoutAction {
    +  Flush, +Backspace, +ShowCursor, +HideCursor, +
    +  ClearScreen, +SaveContol, +RestoreControl +
    + }
     Enum contains immediate action. More...
     
    enum  PICoutControl {
    +  AddNone = 0x0, +AddSpaces = 0x1, +AddNewLine = 0x2, +AddQuotes = 0x4, +
    +  AddAll = 0xFFFFFFFF +
    + }
     Enum contains control of PICout. More...
     
    enum  PICoutFormat {
    +  Bin = 0x01, +Oct = 0x02, +Dec = 0x04, +Hex = 0x08, +
    +  Bold = 0x10 +, Underline = 0x80, +Blink = 0x100, +Black = 0x400, +
    +  Red = 0x800, +Green = 0x1000, +Blue = 0x2000, +Yellow = 0x4000, +
    +  Magenta = 0x8000, +Cyan = 0x10000, +White = 0x20000, +BackBlack = 0x40000, +
    +  BackRed = 0x80000, +BackGreen = 0x100000, +BackBlue = 0x200000, +BackYellow = 0x400000, +
    +  BackMagenta = 0x800000, +BackCyan = 0x1000000, +BackWhite = 0x2000000, +Default = 0x4000000 +
    + }
     Enum contains output format. More...
     
    +

    Detailed Description

    +

    Namespace contains enums controlled PICout.

    +

    Enumeration Type Documentation

    + +
    +
    + +

    Enum contains special characters.

    + + + + + + +
    Enumerator
    Null  +

    Null-character, '\0'

    +
    NewLine  +

    New line character, '\n'

    +
    Tab  +

    Tab character, '\t'

    +
    Esc  +

    Escape character, '\e'

    +
    Quote  +

    Quote character, '"'

    +
    + +
    +
    + +
    +
    + +

    Enum contains immediate action.

    + + + + + + + + +
    Enumerator
    Flush  +

    Flush the output

    +
    Backspace  +

    Remove last symbol

    +
    ShowCursor  +

    Show cursor

    +
    HideCursor  +

    Hide cursor

    +
    ClearScreen  +

    Clear the screen

    +
    SaveContol  +

    Save control flags, equivalent to saveControl()

    +
    RestoreControl  +

    Restore control flags, equivalent to restoreControl()

    +
    + +
    +
    + +
    +
    + +

    Enum contains control of PICout.

    + + + + + + +
    Enumerator
    AddNone  +

    No controls

    +
    AddSpaces  +

    Spaces will be appear after each output

    +
    AddNewLine  +

    New line will be appear after all output

    +
    AddQuotes  +

    Each string will be quoted

    +
    AddAll  +

    All controls

    +
    + +
    +
    + +
    +
    + +

    Enum contains output format.

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    Enumerator
    Bin  +

    Binary representation of integers

    +
    Oct  +

    Octal representation of integers

    +
    Dec  +

    Decimal representation of integers

    +
    Hex  +

    Hexadecimal representation of integers

    +
    Bold  +

    Bold

    +
    Underline  +

    Underline

    +
    Blink  +

    Blink

    +
    Black  +

    Black font

    +
    Red  +

    Red font

    +
    Green  +

    Green font

    +
    Blue  +

    Blue font

    +
    Yellow  +

    Yellow font

    +
    Magenta  +

    Magenta font

    +
    Cyan  +

    Cyan font

    +
    White  +

    White font

    +
    BackBlack  +

    Black background

    +
    BackRed  +

    Red background

    +
    BackGreen  +

    Green background

    +
    BackBlue  +

    Blue background

    +
    BackYellow  +

    Yellow background

    +
    BackMagenta  +

    Magenta background

    +
    BackCyan  +

    Cyan background

    +
    BackWhite  +

    White background

    +
    Default  +

    Default format

    +
    + +
    +
    + + + + + + diff --git a/pip/doc/html/namespacemembers.html b/pip/doc/html/namespacemembers.html new file mode 100644 index 0000000..a235d91 --- /dev/null +++ b/pip/doc/html/namespacemembers.html @@ -0,0 +1,359 @@ + + + + + + +PIP: Namespace Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    Here is a list of all documented namespace members with links to the namespaces they belong to:
    + +

    - a -

    + + +

    - b -

    + + +

    - c -

    + + +

    - d -

    + + +

    - e -

    + + +

    - f -

    + + +

    - g -

    + + +

    - h -

    + + +

    - m -

    + + +

    - n -

    + + +

    - o -

    + + +

    - p -

    + + +

    - q -

    + + +

    - r -

    + + +

    - s -

    + + +

    - t -

    + + +

    - u -

    + + +

    - w -

    + + +

    - y -

    +
    +
    + + + + diff --git a/pip/doc/html/namespacemembers_enum.html b/pip/doc/html/namespacemembers_enum.html new file mode 100644 index 0000000..932316e --- /dev/null +++ b/pip/doc/html/namespacemembers_enum.html @@ -0,0 +1,139 @@ + + + + + + +PIP: Namespace Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + + + + + + diff --git a/pip/doc/html/namespacemembers_eval.html b/pip/doc/html/namespacemembers_eval.html new file mode 100644 index 0000000..26d42e5 --- /dev/null +++ b/pip/doc/html/namespacemembers_eval.html @@ -0,0 +1,342 @@ + + + + + + +PIP: Namespace Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +  + +

    - a -

    + + +

    - b -

    + + +

    - c -

    + + +

    - d -

    + + +

    - e -

    + + +

    - f -

    + + +

    - g -

    + + +

    - h -

    + + +

    - m -

    + + +

    - n -

    + + +

    - o -

    + + +

    - q -

    + + +

    - r -

    + + +

    - s -

    + + +

    - t -

    + + +

    - u -

    + + +

    - w -

    + + +

    - y -

    +
    +
    + + + + diff --git a/pip/doc/html/namespaces.html b/pip/doc/html/namespaces.html new file mode 100644 index 0000000..cd4bd0f --- /dev/null +++ b/pip/doc/html/namespaces.html @@ -0,0 +1,127 @@ + + + + + + +PIP: Namespace List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    Namespace List
    +
    +
    +
    Here is a list of all documented namespaces with brief descriptions:
    + + +
     NPICoutManipulatorsNamespace contains enums controlled PICout
    +
    +
    +
    + + + + diff --git a/pip/doc/html/namespaces.js b/pip/doc/html/namespaces.js new file mode 100644 index 0000000..9505080 --- /dev/null +++ b/pip/doc/html/namespaces.js @@ -0,0 +1,4 @@ +var namespaces = +[ + [ "PICoutManipulators", "namespace_p_i_cout_manipulators.html", null ] +]; \ No newline at end of file diff --git a/pip/doc/html/nav_f.png b/pip/doc/html/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..bc41fcc3663641b1ebcc9d39e2f8ce4603b5b7dc GIT binary patch literal 150 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQn8*cjv*C{Z|@rNwJHd-JZ!XF zzn-BrR_wiR(n5!&V)}9qwblO1Fs+p}xxG9nYkTlkKc#D-&vKfNR~o4%-{RVy7`o0m z_oYbP0l+XkKHKjCQ literal 0 HcmV?d00001 diff --git a/pip/doc/html/nav_g.png b/pip/doc/html/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..8c6c13ef54284f3a437ba3738e8e98806ee7ec09 GIT binary patch literal 94 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDOFDw$B+ufw|A{Y85lU2H&!nd sHa_%WeOv!z9mB@Ae4eFG4jyJ>=Cff~Jw0&E1fT{6Pgg&ebxsLQ0Kn=QLI3~& literal 0 HcmV?d00001 diff --git a/pip/doc/html/nav_h.png b/pip/doc/html/nav_h.png new file mode 100644 index 0000000000000000000000000000000000000000..05610f72d617a69de7b354267f776d485b2a3f1f GIT binary patch literal 90 zcmeAS@N?(olHy`uVBq!ia0vp^j6lr8!2~3AUOE6t21QR7$B+ufw|5-{85lSYZ{QVq n-~PLaS?5WTvx9o@w!Z!1$NE@0mfk&F2U6|n>gTe~DWM4fap4%! literal 0 HcmV?d00001 diff --git a/pip/doc/html/navtree.css b/pip/doc/html/navtree.css new file mode 100644 index 0000000..56b5a21 --- /dev/null +++ b/pip/doc/html/navtree.css @@ -0,0 +1,143 @@ +#nav-tree .children_ul { + margin:0; + padding:4px; +} + +#nav-tree ul { + list-style:none outside none; + margin:0px; + padding:0px; +} + +#nav-tree li { + white-space:nowrap; + margin:0px; + padding:0px; +} + +#nav-tree .plus { + margin:0px; +} + +#nav-tree .selected { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} + +#nav-tree img { + margin:0px; + padding:0px; + border:0px; + vertical-align: middle; +} + +#nav-tree a { + text-decoration:none; + padding:0px; + margin:0px; + outline:none; +} + +#nav-tree .label { + margin:0px; + padding:0px; + font: 12px 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +} + +#nav-tree .label a { + padding:2px; +} + +#nav-tree .selected a { + text-decoration:none; + color:#fff; +} + +#nav-tree .children_ul { + margin:0px; + padding:0px; +} + +#nav-tree .item { + margin:0px; + padding:0px; +} + +#nav-tree { + padding: 0px 0px; + background-color: #FAFAFF; + font-size:14px; + overflow:auto; +} + +#doc-content { + overflow:auto; + display:block; + padding:0px; + margin:0px; + -webkit-overflow-scrolling : touch; /* iOS 5+ */ +} + +#side-nav { + padding:0 6px 0 0; + margin: 0px; + display:block; + position: absolute; + left: 0px; + width: 250px; +} + +.ui-resizable .ui-resizable-handle { + display:block; +} + +.ui-resizable-e { + background:url("ftv2splitbar.png") repeat scroll right center transparent; + cursor:e-resize; + height:100%; + right:0; + top:0; + width:6px; +} + +.ui-resizable-handle { + display:none; + font-size:0.1px; + position:absolute; + z-index:1; +} + +#nav-tree-contents { + margin: 6px 0px 0px 0px; +} + +#nav-tree { + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #FAFAFC; + -webkit-overflow-scrolling : touch; /* iOS 5+ */ +} + +#nav-sync { + position:absolute; + top:5px; + right:24px; + z-index:0; +} + +#nav-sync img { + opacity:0.3; +} + +#nav-sync img:hover { + opacity:0.9; +} + +@media print +{ + #nav-tree { display: none; } + div.ui-resizable-handle { display: none; position: relative; } +} + diff --git a/pip/doc/html/navtree.js b/pip/doc/html/navtree.js new file mode 100644 index 0000000..40b193a --- /dev/null +++ b/pip/doc/html/navtree.js @@ -0,0 +1,581 @@ +var NAVTREE = +[ + [ "PIP", "index.html", [ + [ "What is PIP", "index.html", null ], + [ "Getting started", "using_basic.html", null ], + [ "Advanced using", "using_advanced.html", null ], + [ "Deprecated List", "deprecated.html", null ], + [ "Namespaces", null, [ + [ "Namespace List", "namespaces.html", "namespaces" ], + [ "Namespace Members", "namespacemembers.html", [ + [ "All", "namespacemembers.html", null ], + [ "Enumerations", "namespacemembers_enum.html", null ], + [ "Enumerator", "namespacemembers_eval.html", null ] + ] ] + ] ], + [ "Classes", null, [ + [ "Class List", "annotated.html", "annotated" ], + [ "Class Index", "classes.html", null ], + [ "Class Hierarchy", "hierarchy.html", "hierarchy" ], + [ "Class Members", "functions.html", [ + [ "All", "functions.html", "functions_dup" ], + [ "Functions", "functions_func.html", "functions_func" ], + [ "Variables", "functions_vars.html", null ], + [ "Typedefs", "functions_type.html", null ], + [ "Enumerations", "functions_enum.html", null ], + [ "Enumerator", "functions_eval.html", null ], + [ "Related Functions", "functions_rela.html", null ] + ] ] + ] ], + [ "Files", null, [ + [ "File List", "files.html", "files" ], + [ "File Members", "globals.html", [ + [ "All", "globals.html", null ], + [ "Functions", "globals_func.html", null ], + [ "Variables", "globals_vars.html", null ], + [ "Macros", "globals_defs.html", null ] + ] ] + ] ] + ] ] +]; + +var NAVTREEINDEX = +[ +"annotated.html", +"class_p_i_connection.html#aa547b4a4e64e9adf0c7c45171160bded", +"class_p_i_ethernet_1_1_interface_list.html#a2b206fa34041a17fd220dedb8f7f5b23", +"class_p_i_state_machine.html#aee180e7f75ece9aef1c3d8a94095ed21", +"class_p_i_timer.html#afbe09c4d09f0dc897045037c1042cd70", +"pibytearray_8h.html#a6c4c55eac2a9c3f087e4f86ae8d76104", +"pivector_8h.html" +]; + +var SYNCONMSG = 'click to disable panel synchronisation'; +var SYNCOFFMSG = 'click to enable panel synchronisation'; +var navTreeSubIndices = new Array(); + +function getData(varName) +{ + var i = varName.lastIndexOf('/'); + var n = i>=0 ? varName.substring(i+1) : varName; + return eval(n.replace(/\-/g,'_')); +} + +function stripPath(uri) +{ + return uri.substring(uri.lastIndexOf('/')+1); +} + +function stripPath2(uri) +{ + var i = uri.lastIndexOf('/'); + var s = uri.substring(i+1); + var m = uri.substring(0,i+1).match(/\/d\w\/d\w\w\/$/); + return m ? uri.substring(i-6) : s; +} + +function hashValue() +{ + return $(location).attr('hash').substring(1).replace(/[^\w\-]/g,''); +} + +function hashUrl() +{ + return '#'+hashValue(); +} + +function pathName() +{ + return $(location).attr('pathname').replace(/[^-A-Za-z0-9+&@#/%?=~_|!:,.;\(\)]/g, ''); +} + +function localStorageSupported() +{ + try { + return 'localStorage' in window && window['localStorage'] !== null && window.localStorage.getItem; + } + catch(e) { + return false; + } +} + + +function storeLink(link) +{ + if (!$("#nav-sync").hasClass('sync') && localStorageSupported()) { + window.localStorage.setItem('navpath',link); + } +} + +function deleteLink() +{ + if (localStorageSupported()) { + window.localStorage.setItem('navpath',''); + } +} + +function cachedLink() +{ + if (localStorageSupported()) { + return window.localStorage.getItem('navpath'); + } else { + return ''; + } +} + +function getScript(scriptName,func,show) +{ + var head = document.getElementsByTagName("head")[0]; + var script = document.createElement('script'); + script.id = scriptName; + script.type = 'text/javascript'; + script.onload = func; + script.src = scriptName+'.js'; + if ($.browser.msie && $.browser.version<=8) { + // script.onload does not work with older versions of IE + script.onreadystatechange = function() { + if (script.readyState=='complete' || script.readyState=='loaded') { + func(); if (show) showRoot(); + } + } + } + head.appendChild(script); +} + +function createIndent(o,domNode,node,level) +{ + var level=-1; + var n = node; + while (n.parentNode) { level++; n=n.parentNode; } + if (node.childrenData) { + var imgNode = document.createElement("img"); + imgNode.style.paddingLeft=(16*level).toString()+'px'; + imgNode.width = 16; + imgNode.height = 22; + imgNode.border = 0; + node.plus_img = imgNode; + node.expandToggle = document.createElement("a"); + node.expandToggle.href = "javascript:void(0)"; + node.expandToggle.onclick = function() { + if (node.expanded) { + $(node.getChildrenUL()).slideUp("fast"); + node.plus_img.src = node.relpath+"ftv2pnode.png"; + node.expanded = false; + } else { + expandNode(o, node, false, false); + } + } + node.expandToggle.appendChild(imgNode); + domNode.appendChild(node.expandToggle); + imgNode.src = node.relpath+"ftv2pnode.png"; + } else { + var span = document.createElement("span"); + span.style.display = 'inline-block'; + span.style.width = 16*(level+1)+'px'; + span.style.height = '22px'; + span.innerHTML = ' '; + domNode.appendChild(span); + } +} + +var animationInProgress = false; + +function gotoAnchor(anchor,aname,updateLocation) +{ + var pos, docContent = $('#doc-content'); + var ancParent = $(anchor.parent()); + if (ancParent.hasClass('memItemLeft') || + ancParent.hasClass('fieldname') || + ancParent.hasClass('fieldtype') || + ancParent.is(':header')) + { + pos = ancParent.position().top; + } else if (anchor.position()) { + pos = anchor.position().top; + } + if (pos) { + var dist = Math.abs(Math.min( + pos-docContent.offset().top, + docContent[0].scrollHeight- + docContent.height()-docContent.scrollTop())); + animationInProgress=true; + docContent.animate({ + scrollTop: pos + docContent.scrollTop() - docContent.offset().top + },Math.max(50,Math.min(500,dist)),function(){ + if (updateLocation) window.location.href=aname; + animationInProgress=false; + }); + } +} + +function newNode(o, po, text, link, childrenData, lastNode) +{ + var node = new Object(); + node.children = Array(); + node.childrenData = childrenData; + node.depth = po.depth + 1; + node.relpath = po.relpath; + node.isLast = lastNode; + + node.li = document.createElement("li"); + po.getChildrenUL().appendChild(node.li); + node.parentNode = po; + + node.itemDiv = document.createElement("div"); + node.itemDiv.className = "item"; + + node.labelSpan = document.createElement("span"); + node.labelSpan.className = "label"; + + createIndent(o,node.itemDiv,node,0); + node.itemDiv.appendChild(node.labelSpan); + node.li.appendChild(node.itemDiv); + + var a = document.createElement("a"); + node.labelSpan.appendChild(a); + node.label = document.createTextNode(text); + node.expanded = false; + a.appendChild(node.label); + if (link) { + var url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + link = url; + } else { + url = node.relpath+link; + } + a.className = stripPath(link.replace('#',':')); + if (link.indexOf('#')!=-1) { + var aname = '#'+link.split('#')[1]; + var srcPage = stripPath(pathName()); + var targetPage = stripPath(link.split('#')[0]); + a.href = srcPage!=targetPage ? url : "javascript:void(0)"; + a.onclick = function(){ + storeLink(link); + if (!$(a).parent().parent().hasClass('selected')) + { + $('.item').removeClass('selected'); + $('.item').removeAttr('id'); + $(a).parent().parent().addClass('selected'); + $(a).parent().parent().attr('id','selected'); + } + var anchor = $(aname); + gotoAnchor(anchor,aname,true); + }; + } else { + a.href = url; + a.onclick = function() { storeLink(link); } + } + } else { + if (childrenData != null) + { + a.className = "nolink"; + a.href = "javascript:void(0)"; + a.onclick = node.expandToggle.onclick; + } + } + + node.childrenUL = null; + node.getChildrenUL = function() { + if (!node.childrenUL) { + node.childrenUL = document.createElement("ul"); + node.childrenUL.className = "children_ul"; + node.childrenUL.style.display = "none"; + node.li.appendChild(node.childrenUL); + } + return node.childrenUL; + }; + + return node; +} + +function showRoot() +{ + var headerHeight = $("#top").height(); + var footerHeight = $("#nav-path").height(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + (function (){ // retry until we can scroll to the selected item + try { + var navtree=$('#nav-tree'); + navtree.scrollTo('#selected',0,{offset:-windowHeight/2}); + } catch (err) { + setTimeout(arguments.callee, 0); + } + })(); +} + +function expandNode(o, node, imm, showRoot) +{ + if (node.childrenData && !node.expanded) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + expandNode(o, node, imm, showRoot); + }, showRoot); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } if (imm || ($.browser.msie && $.browser.version>8)) { + // somehow slideDown jumps to the start of tree for IE9 :-( + $(node.getChildrenUL()).show(); + } else { + $(node.getChildrenUL()).slideDown("fast"); + } + if (node.isLast) { + node.plus_img.src = node.relpath+"ftv2mlastnode.png"; + } else { + node.plus_img.src = node.relpath+"ftv2mnode.png"; + } + node.expanded = true; + } + } +} + +function glowEffect(n,duration) +{ + n.addClass('glow').delay(duration).queue(function(next){ + $(this).removeClass('glow');next(); + }); +} + +function highlightAnchor() +{ + var aname = hashUrl(); + var anchor = $(aname); + if (anchor.parent().attr('class')=='memItemLeft'){ + var rows = $('.memberdecls tr[class$="'+hashValue()+'"]'); + glowEffect(rows.children(),300); // member without details + } else if (anchor.parent().attr('class')=='fieldname'){ + glowEffect(anchor.parent().parent(),1000); // enum value + } else if (anchor.parent().attr('class')=='fieldtype'){ + glowEffect(anchor.parent().parent(),1000); // struct field + } else if (anchor.parent().is(":header")) { + glowEffect(anchor.parent(),1000); // section header + } else { + glowEffect(anchor.next(),1000); // normal member + } + gotoAnchor(anchor,aname,false); +} + +function selectAndHighlight(hash,n) +{ + var a; + if (hash) { + var link=stripPath(pathName())+':'+hash.substring(1); + a=$('.item a[class$="'+link+'"]'); + } + if (a && a.length) { + a.parent().parent().addClass('selected'); + a.parent().parent().attr('id','selected'); + highlightAnchor(); + } else if (n) { + $(n.itemDiv).addClass('selected'); + $(n.itemDiv).attr('id','selected'); + } + if ($('#nav-tree-contents .item:first').hasClass('selected')) { + $('#nav-sync').css('top','30px'); + } else { + $('#nav-sync').css('top','5px'); + } + showRoot(); +} + +function showNode(o, node, index, hash) +{ + if (node && node.childrenData) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + showNode(o,node,index,hash); + },true); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).css({'display':'block'}); + if (node.isLast) { + node.plus_img.src = node.relpath+"ftv2mlastnode.png"; + } else { + node.plus_img.src = node.relpath+"ftv2mnode.png"; + } + node.expanded = true; + var n = node.children[o.breadcrumbs[index]]; + if (index+11) hash = '#'+parts[1].replace(/[^\w\-]/g,''); + else hash=''; + } + if (hash.match(/^#l\d+$/)) { + var anchor=$('a[name='+hash.substring(1)+']'); + glowEffect(anchor.parent(),1000); // line number + hash=''; // strip line number anchors + } + var url=root+hash; + var i=-1; + while (NAVTREEINDEX[i+1]<=url) i++; + if (i==-1) { i=0; root=NAVTREE[0][1]; } // fallback: show index + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath) + } else { + getScript(relpath+'navtreeindex'+i,function(){ + navTreeSubIndices[i] = eval('NAVTREEINDEX'+i); + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath); + } + },true); + } +} + +function showSyncOff(n,relpath) +{ + n.html(''); +} + +function showSyncOn(n,relpath) +{ + n.html(''); +} + +function toggleSyncButton(relpath) +{ + var navSync = $('#nav-sync'); + if (navSync.hasClass('sync')) { + navSync.removeClass('sync'); + showSyncOff(navSync,relpath); + storeLink(stripPath2(pathName())+hashUrl()); + } else { + navSync.addClass('sync'); + showSyncOn(navSync,relpath); + deleteLink(); + } +} + +function initNavTree(toroot,relpath) +{ + var o = new Object(); + o.toroot = toroot; + o.node = new Object(); + o.node.li = document.getElementById("nav-tree-contents"); + o.node.childrenData = NAVTREE; + o.node.children = new Array(); + o.node.childrenUL = document.createElement("ul"); + o.node.getChildrenUL = function() { return o.node.childrenUL; }; + o.node.li.appendChild(o.node.childrenUL); + o.node.depth = 0; + o.node.relpath = relpath; + o.node.expanded = false; + o.node.isLast = true; + o.node.plus_img = document.createElement("img"); + o.node.plus_img.src = relpath+"ftv2pnode.png"; + o.node.plus_img.width = 16; + o.node.plus_img.height = 22; + + if (localStorageSupported()) { + var navSync = $('#nav-sync'); + if (cachedLink()) { + showSyncOff(navSync,relpath); + navSync.removeClass('sync'); + } else { + showSyncOn(navSync,relpath); + } + navSync.click(function(){ toggleSyncButton(relpath); }); + } + + $(window).load(function(){ + navTo(o,toroot,hashUrl(),relpath); + showRoot(); + }); + + $(window).bind('hashchange', function(){ + if (window.location.hash && window.location.hash.length>1){ + var a; + if ($(location).attr('hash')){ + var clslink=stripPath(pathName())+':'+hashValue(); + a=$('.item a[class$="'+clslink.replace(/1|%O$WD@{Vj-D=#Ar*{o?{4I6FyLW1(5-&j z&!lHU+uR#GE-L04JC@nJOx>T-&rpB4uP`p4Gxt63KAYbs81gOWFAd$eXTz_LY^N^p V?3m8pQUf%M!PC{xWt~$(696~}Dc1l1 literal 0 HcmV?d00001 diff --git a/pip/doc/html/packet_detection.png b/pip/doc/html/packet_detection.png new file mode 100644 index 0000000000000000000000000000000000000000..135796234910dda99d91c002c9925415d1d23ec1 GIT binary patch literal 28193 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 Dc4ejz literal 0 HcmV?d00001 diff --git a/pip/doc/html/pages.html b/pip/doc/html/pages.html new file mode 100644 index 0000000..f04035b --- /dev/null +++ b/pip/doc/html/pages.html @@ -0,0 +1,123 @@ + + + + + + +PIP: Related Pages + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    Related Pages
    +
    +
    +
    Here is a list of all related documentation pages:
    +
    +
    + + + + diff --git a/pip/doc/html/pibinarylog_8h.html b/pip/doc/html/pibinarylog_8h.html new file mode 100644 index 0000000..d9b0804 --- /dev/null +++ b/pip/doc/html/pibinarylog_8h.html @@ -0,0 +1,137 @@ + + + + + + +PIP: src/io/pibinarylog.h File Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    + +
    +
    pibinarylog.h File Reference
    +
    +
    + +

    Binary log. +More...

    + + + + + +

    +Classes

    class  PIBinaryLog
     Class for read and write binary data to logfile, and playback this data in realtime. More...
     
    +

    Detailed Description

    +

    Binary log.

    +
    +
    + + + + diff --git a/pip/doc/html/pibinarylog_8h.js b/pip/doc/html/pibinarylog_8h.js new file mode 100644 index 0000000..28cc2d7 --- /dev/null +++ b/pip/doc/html/pibinarylog_8h.js @@ -0,0 +1,4 @@ +var pibinarylog_8h = +[ + [ "PIBinaryLog", "class_p_i_binary_log.html", "class_p_i_binary_log" ] +]; \ No newline at end of file diff --git a/pip/doc/html/pibytearray_8h.html b/pip/doc/html/pibytearray_8h.html new file mode 100644 index 0000000..39a0097 --- /dev/null +++ b/pip/doc/html/pibytearray_8h.html @@ -0,0 +1,312 @@ + + + + + + +PIP: src/core/pibytearray.h File Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    + +
    +
    pibytearray.h File Reference
    +
    +
    + +

    Byte array. +More...

    + + + + + + + + +

    +Classes

    class  PIByteArray
     Byte array. More...
     
    struct  PIByteArray::RawData
     Help struct to store/restore custom blocks of data to/from PIByteArray. More...
     
    + + + + +

    +Macros

    +#define PIP_BYTEARRAY_STREAM_ANY_TYPE
     This macro allow stream template operators for write and read any type from byte array. Use it with attention!
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    +std::ostream & operator<< (std::ostream &s, const PIByteArray &ba)
     Output to std::ostream operator.
     
    +PICout operator<< (PICout s, const PIByteArray &ba)
     Output to PICout operator.
     
    +PIByteArrayoperator<< (PIByteArray &s, uchar v)
     Store operator.
     
    +PIByteArrayoperator<< (PIByteArray &s, const short v)
     Store operator.
     
    +PIByteArrayoperator<< (PIByteArray &s, const int v)
     Store operator.
     
    +PIByteArrayoperator<< (PIByteArray &s, const long &v)
     Store operator.
     
    +PIByteArrayoperator<< (PIByteArray &s, const llong &v)
     Store operator.
     
    +PIByteArrayoperator<< (PIByteArray &s, const ushort v)
     Store operator.
     
    +PIByteArrayoperator<< (PIByteArray &s, const uint v)
     Store operator.
     
    +PIByteArrayoperator<< (PIByteArray &s, const ulong &v)
     Store operator.
     
    +PIByteArrayoperator<< (PIByteArray &s, const ullong &v)
     Store operator.
     
    +PIByteArrayoperator<< (PIByteArray &s, const float v)
     Store operator.
     
    +PIByteArrayoperator<< (PIByteArray &s, const double &v)
     Store operator.
     
    +PIByteArrayoperator<< (PIByteArray &s, const PIByteArray &v)
     Store operator, see Attention for details.
     
    +PIByteArrayoperator<< (PIByteArray &s, const PIByteArray::RawData &v)
     Store operator, see Attention for details.
     
    +template<typename Type0 , typename Type1 >
    PIByteArrayoperator<< (PIByteArray &s, const PIPair< Type0, Type1 > &v)
     Store operator.
     
    +template<typename T >
    PIByteArrayoperator<< (PIByteArray &s, const PIVector< T > &v)
     Store operator.
     
    +template<typename T >
    PIByteArrayoperator<< (PIByteArray &s, const PIList< T > &v)
     Store operator.
     
    +template<typename T >
    PIByteArrayoperator<< (PIByteArray &s, const PIDeque< T > &v)
     Store operator.
     
    +PIByteArrayoperator>> (PIByteArray &s, uchar &v)
     Restore operator.
     
    +PIByteArrayoperator>> (PIByteArray &s, short &v)
     Restore operator.
     
    +PIByteArrayoperator>> (PIByteArray &s, int &v)
     Restore operator.
     
    +PIByteArrayoperator>> (PIByteArray &s, long &v)
     Restore operator.
     
    +PIByteArrayoperator>> (PIByteArray &s, llong &v)
     Restore operator.
     
    +PIByteArrayoperator>> (PIByteArray &s, ushort &v)
     Restore operator.
     
    +PIByteArrayoperator>> (PIByteArray &s, uint &v)
     Restore operator.
     
    +PIByteArrayoperator>> (PIByteArray &s, ulong &v)
     Restore operator.
     
    +PIByteArrayoperator>> (PIByteArray &s, ullong &v)
     Restore operator.
     
    +PIByteArrayoperator>> (PIByteArray &s, float &v)
     Restore operator.
     
    +PIByteArrayoperator>> (PIByteArray &s, double &v)
     Restore operator.
     
    +PIByteArrayoperator>> (PIByteArray &s, PIByteArray &v)
     Restore operator, see Attention for details.
     
    +PIByteArrayoperator>> (PIByteArray &s, PIByteArray::RawData v)
     Restore operator, see Attention for details.
     
    +template<typename Type0 , typename Type1 >
    PIByteArrayoperator>> (PIByteArray &s, PIPair< Type0, Type1 > &v)
     Restore operator.
     
    +template<typename T >
    PIByteArrayoperator>> (PIByteArray &s, PIVector< T > &v)
     Restore operator.
     
    +template<typename T >
    PIByteArrayoperator>> (PIByteArray &s, PIList< T > &v)
     Restore operator.
     
    +template<typename T >
    PIByteArrayoperator>> (PIByteArray &s, PIDeque< T > &v)
     Restore operator.
     
    +bool operator== (PIByteArray &f, PIByteArray &s)
     Byte arrays compare operator.
     
    +bool operator!= (PIByteArray &f, PIByteArray &s)
     Byte arrays compare operator.
     
    +

    Detailed Description

    +

    Byte array.

    +
    +
    + + + + diff --git a/pip/doc/html/pibytearray_8h.js b/pip/doc/html/pibytearray_8h.js new file mode 100644 index 0000000..fe3d5c1 --- /dev/null +++ b/pip/doc/html/pibytearray_8h.js @@ -0,0 +1,44 @@ +var pibytearray_8h = +[ + [ "PIByteArray", "class_p_i_byte_array.html", "class_p_i_byte_array" ], + [ "RawData", "struct_p_i_byte_array_1_1_raw_data.html", "struct_p_i_byte_array_1_1_raw_data" ], + [ "PIP_BYTEARRAY_STREAM_ANY_TYPE", "pibytearray_8h.html#ab8da61a42f0f76ae84a347c4a9217b31", null ], + [ "operator<<", "pibytearray_8h.html#ab1e23cf01f90071f1239fcfc17c8ed3d", null ], + [ "operator<<", "pibytearray_8h.html#a32613363dcf56aac9f693c135fff6f89", null ], + [ "operator<<", "pibytearray_8h.html#ae4152fca25c857d502396fc477dd5b4e", null ], + [ "operator<<", "pibytearray_8h.html#a27cb4295a655c80c9223e2af2843ac14", null ], + [ "operator<<", "pibytearray_8h.html#ab8951385e7eda4d8d6925b2a519624ae", null ], + [ "operator<<", "pibytearray_8h.html#a750963c1940bf98afb59c6d5ee745f57", null ], + [ "operator<<", "pibytearray_8h.html#a34e8e853e5ed6beccd359e6cdbbd79ee", null ], + [ "operator<<", "pibytearray_8h.html#ab5772ffd8c729df606daef9af4bab33f", null ], + [ "operator<<", "pibytearray_8h.html#ad4fedc65364715baf41b635174c5fe8a", null ], + [ "operator<<", "pibytearray_8h.html#ac808ed51ef9536275a6133abfde4bb83", null ], + [ "operator<<", "pibytearray_8h.html#ab44ea6a59afa51508ff2901d41b627f0", null ], + [ "operator<<", "pibytearray_8h.html#a2a485f703e44ccea18c8638c7c4c5889", null ], + [ "operator<<", "pibytearray_8h.html#a499da27a6b5a3474fff8cda6c723886a", null ], + [ "operator<<", "pibytearray_8h.html#a959efd617590b844d4dccf73c3565f95", null ], + [ "operator<<", "pibytearray_8h.html#a65a8de355c00ee10f723c0c4a108adcd", null ], + [ "operator<<", "pibytearray_8h.html#a96190dee065ee5b78285ca129e2adb1d", null ], + [ "operator<<", "pibytearray_8h.html#adbbbcf8bf5e3b56e3a114df299fe7c7f", null ], + [ "operator<<", "pibytearray_8h.html#a068a0bcfbe5b9d2fa4b778ba968f44db", null ], + [ "operator<<", "pibytearray_8h.html#a9b9678e9c4c372565e933d2e3ea99407", null ], + [ "operator>>", "pibytearray_8h.html#ab13b3356e12200d943eca6fb5914fff3", null ], + [ "operator>>", "pibytearray_8h.html#ab169b593f262836b81ef0f1e85742bb5", null ], + [ "operator>>", "pibytearray_8h.html#a9193853f9065d13faa500d7402011e95", null ], + [ "operator>>", "pibytearray_8h.html#a2936831420330a89c932b9378bcb531a", null ], + [ "operator>>", "pibytearray_8h.html#ac2f7009be50024c741ba1e34e2520105", null ], + [ "operator>>", "pibytearray_8h.html#a6d7b09e8e0ae58e2a0660a95f5297d62", null ], + [ "operator>>", "pibytearray_8h.html#a6c4c55eac2a9c3f087e4f86ae8d76104", null ], + [ "operator>>", "pibytearray_8h.html#a562da0ccdeabb8269757e25955bb3da5", null ], + [ "operator>>", "pibytearray_8h.html#a51721eb920f53d0c919eec52cf10cd52", null ], + [ "operator>>", "pibytearray_8h.html#a908c8071a8eee9fb7a3752bee614333a", null ], + [ "operator>>", "pibytearray_8h.html#a4f8b92d20e45ebe4e3bac6e2ccedf9f0", null ], + [ "operator>>", "pibytearray_8h.html#aa77ecc852d4e3ba6e4fbe7a7258cfb87", null ], + [ "operator>>", "pibytearray_8h.html#afb2b51047b10d19aced414fec7744dd2", null ], + [ "operator>>", "pibytearray_8h.html#ab2b77a56ba810e64d937dc4f33438310", null ], + [ "operator>>", "pibytearray_8h.html#a3ad45b3c81b974189a6c9ab5193e24d5", null ], + [ "operator>>", "pibytearray_8h.html#a35c4ea115bdcb4627fd9fa635d1c681a", null ], + [ "operator>>", "pibytearray_8h.html#a6cee541d60566eef92585f50aa9ec436", null ], + [ "operator==", "pibytearray_8h.html#a30e1b305b0f9bdcfc1d1e9c970e82d5d", null ], + [ "operator!=", "pibytearray_8h.html#a9db13625502ec190fa40b4155ad136eb", null ] +]; \ No newline at end of file diff --git a/pip/doc/html/pichar_8h.html b/pip/doc/html/pichar_8h.html new file mode 100644 index 0000000..415a4d3 --- /dev/null +++ b/pip/doc/html/pichar_8h.html @@ -0,0 +1,217 @@ + + + + + + +PIP: src/core/pichar.h File Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    + +
    +
    pichar.h File Reference
    +
    +
    + +

    Unicode char. +More...

    + + + + + +

    +Classes

    class  PIChar
     Unicode char. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    __PICONTAINERS_SIMPLE_TYPE__ (PIChar) inline std
     Output operator to std::ostream.
     
    +PICout operator<< (PICout s, const PIChar &v)
     Output operator to PICout.
     
    +PIByteArrayoperator<< (PIByteArray &s, const PIChar &v)
     Write operator to PIByteArray.
     
    +PIByteArrayoperator>> (PIByteArray &s, PIChar &v)
     Read operator from PIByteArray.
     
    +bool operator== (const char v, const PIChar &c)
     Compare operator.
     
    +bool operator> (const char v, const PIChar &c)
     Compare operator.
     
    +bool operator< (const char v, const PIChar &c)
     Compare operator.
     
    +bool operator>= (const char v, const PIChar &c)
     Compare operator.
     
    +bool operator<= (const char v, const PIChar &c)
     Compare operator.
     
    +bool operator== (const char *v, const PIChar &c)
     Compare operator.
     
    +bool operator> (const char *v, const PIChar &c)
     Compare operator.
     
    +bool operator< (const char *v, const PIChar &c)
     Compare operator.
     
    +bool operator>= (const char *v, const PIChar &c)
     Compare operator.
     
    +bool operator<= (const char *v, const PIChar &c)
     Compare operator.
     
    +bool operator== (const int v, const PIChar &c)
     Compare operator.
     
    +bool operator> (const int v, const PIChar &c)
     Compare operator.
     
    +bool operator< (const int v, const PIChar &c)
     Compare operator.
     
    +bool operator>= (const int v, const PIChar &c)
     Compare operator.
     
    +bool operator<= (const int v, const PIChar &c)
     Compare operator.
     
    +

    Detailed Description

    +

    Unicode char.

    +
    +
    + + + + diff --git a/pip/doc/html/pichar_8h.js b/pip/doc/html/pichar_8h.js new file mode 100644 index 0000000..ef5c6d5 --- /dev/null +++ b/pip/doc/html/pichar_8h.js @@ -0,0 +1,23 @@ +var pichar_8h = +[ + [ "PIChar", "class_p_i_char.html", "class_p_i_char" ], + [ "__PICONTAINERS_SIMPLE_TYPE__", "pichar_8h.html#a98c24b190dd598cdebc2e1c884631b13", null ], + [ "operator<<", "pichar_8h.html#abadc4164b551872ca8d636998a638792", null ], + [ "operator<<", "pichar_8h.html#a43cad479313327c089e30ae490e01c24", null ], + [ "operator>>", "pichar_8h.html#a697daa3db190238c3cad29b288821ae0", null ], + [ "operator==", "pichar_8h.html#aef66e1b5e541cb78e83ee5097c24fb66", null ], + [ "operator>", "pichar_8h.html#a87f2cf00cfaf54f2c45e4529d8267523", null ], + [ "operator<", "pichar_8h.html#aac63033d050dd251820843b8d3108182", null ], + [ "operator>=", "pichar_8h.html#ab4990ff3eadcbc5aab844bc6758c5b8b", null ], + [ "operator<=", "pichar_8h.html#a13c44bf8680ec528f13a014e23668b93", null ], + [ "operator==", "pichar_8h.html#a4254ee10c37d8222dd82d834920ed3b8", null ], + [ "operator>", "pichar_8h.html#a5dc6be462318915b8d938a816c018ea9", null ], + [ "operator<", "pichar_8h.html#a767104c71a066ca079cb71e950bfb5ff", null ], + [ "operator>=", "pichar_8h.html#aed3f8114f5a468d2af576f6570cc3efa", null ], + [ "operator<=", "pichar_8h.html#a7fd16bab079996ca2397d3d1f99d01de", null ], + [ "operator==", "pichar_8h.html#a1dbcb604177557289791346d2dafc6c4", null ], + [ "operator>", "pichar_8h.html#a53cbd5dfc0e96fdd0d58bffc256d9157", null ], + [ "operator<", "pichar_8h.html#adece64ba925cbd59a9fa218251556fd5", null ], + [ "operator>=", "pichar_8h.html#ae178de75f712e81d893a87fbd4d6c5a4", null ], + [ "operator<=", "pichar_8h.html#a15d502867a42b6495e8ce0586824e389", null ] +]; \ No newline at end of file diff --git a/pip/doc/html/picli_8h.html b/pip/doc/html/picli_8h.html new file mode 100644 index 0000000..a77bd26 --- /dev/null +++ b/pip/doc/html/picli_8h.html @@ -0,0 +1,137 @@ + + + + + + +PIP: src/core/picli.h File Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    + +
    +
    picli.h File Reference
    +
    +
    + +

    Command-Line parser. +More...

    + + + + + +

    +Classes

    class  PICLI
     Command-line arguments parser. More...
     
    +

    Detailed Description

    +

    Command-Line parser.

    +
    +
    + + + + diff --git a/pip/doc/html/picodeinfo_8h.html b/pip/doc/html/picodeinfo_8h.html new file mode 100644 index 0000000..d2af6f8 --- /dev/null +++ b/pip/doc/html/picodeinfo_8h.html @@ -0,0 +1,128 @@ + + + + + + +PIP: src/code/picodeinfo.h File Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    picodeinfo.h File Reference
    +
    +
    + +

    C++ code info structs. +More...

    +

    Detailed Description

    +

    C++ code info structs.

    +
    +
    + + + + diff --git a/pip/doc/html/picodeparser_8h.html b/pip/doc/html/picodeparser_8h.html new file mode 100644 index 0000000..bd9c1c8 --- /dev/null +++ b/pip/doc/html/picodeparser_8h.html @@ -0,0 +1,128 @@ + + + + + + +PIP: src/code/picodeparser.h File Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    picodeparser.h File Reference
    +
    +
    + +

    C++ code parser. +More...

    +

    Detailed Description

    +

    C++ code parser.

    +
    +
    + + + + diff --git a/pip/doc/html/picollection_8h.html b/pip/doc/html/picollection_8h.html new file mode 100644 index 0000000..5a38414 --- /dev/null +++ b/pip/doc/html/picollection_8h.html @@ -0,0 +1,137 @@ + + + + + + +PIP: src/core/picollection.h File Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    + +
    +
    picollection.h File Reference
    +
    +
    + +

    Custom elements collection. +More...

    + + + + + +

    +Classes

    class  PICollection
     Interface to discover element groups. More...
     
    +

    Detailed Description

    +

    Custom elements collection.

    +
    +
    + + + + diff --git a/pip/doc/html/picollection_8h.js b/pip/doc/html/picollection_8h.js new file mode 100644 index 0000000..c71b6a0 --- /dev/null +++ b/pip/doc/html/picollection_8h.js @@ -0,0 +1,6 @@ +var picollection_8h = +[ + [ "PICollection", "class_p_i_collection.html", "class_p_i_collection" ], + [ "ADD_TO_COLLECTION", "picollection_8h.html#a450e8ac720c8b0f6223ad2bf42f83ae2", null ], + [ "ADD_NEW_TO_COLLECTION", "picollection_8h.html#a78cc4937360f5e286cdd8baf403edfec", null ] +]; \ No newline at end of file diff --git a/pip/doc/html/piconfig.png b/pip/doc/html/piconfig.png new file mode 100644 index 0000000000000000000000000000000000000000..c669750142d6c5c145257c08e573136f18b8aa19 GIT binary patch literal 37880 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�+Sa&ro>v9S$3jxjc54vvpY32!BT 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 K&t;ucLK6ThTT9vi literal 0 HcmV?d00001 diff --git a/pip/doc/html/piconfig_8h.html b/pip/doc/html/piconfig_8h.html new file mode 100644 index 0000000..036311d --- /dev/null +++ b/pip/doc/html/piconfig_8h.html @@ -0,0 +1,196 @@ + + + + + + +PIP: src/io/piconfig.h File Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    + +
    +
    piconfig.h File Reference
    +
    +
    + +

    Configuration file. +More...

    + + + + + + + + + + + +

    +Classes

    class  PIConfig
     Configuration file. More...
     
    class  PIConfig::Branch
     Branch is a list of entries of configuration file More...
     
    class  PIConfig::Entry
     Entry of configuration file More...
     
    + + + + + +

    +Functions

    template<typename T >
    readDeviceSetting (const PIString &name, const T &def, const PIConfig::Entry *em, const PIConfig::Entry *ep)
     Service function. useful for configuring devices. More...
     
    +

    Detailed Description

    +

    Configuration file.

    +

    Function Documentation

    + +
    +
    +
    +template<typename T >
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    T readDeviceSetting (const PIStringname,
    const T & def,
    const PIConfig::Entryem,
    const PIConfig::Entryep 
    )
    +
    + +

    Service function. useful for configuring devices.

    +

    Function takes entry name "name", default value "def" and two PIConfig::Entry sections: "em" and their parent "ep". If there is no parent ep = 0. If "ep" is not null and entry "name" exists in "ep" function returns this value. Else returns value of entry "name" in section "em" or "def" if entry doesn`t exists.
    + This function useful to read settings from configuration file in implementation PIIODevice::configureDevice() function

    + +
    +
    +
    +
    + + + + diff --git a/pip/doc/html/piconfig_8h.js b/pip/doc/html/piconfig_8h.js new file mode 100644 index 0000000..efbdff2 --- /dev/null +++ b/pip/doc/html/piconfig_8h.js @@ -0,0 +1,7 @@ +var piconfig_8h = +[ + [ "PIConfig", "class_p_i_config.html", "class_p_i_config" ], + [ "Branch", "class_p_i_config_1_1_branch.html", null ], + [ "Entry", "class_p_i_config_1_1_entry.html", "class_p_i_config_1_1_entry" ], + [ "readDeviceSetting", "piconfig_8h.html#add5b851e98d22dd4d7482a8e509113dc", null ] +]; \ No newline at end of file diff --git a/pip/doc/html/piconnection.png b/pip/doc/html/piconnection.png new file mode 100644 index 0000000000000000000000000000000000000000..8971ab76c2a4a792b5d965ece363775907e98633 GIT binary patch literal 98609 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 mKBy?K{okzO>2aB!cRV(Q-GSN{zX!nT_L literal 0 HcmV?d00001 diff --git a/pip/doc/html/piconnection_8h.html b/pip/doc/html/piconnection_8h.html new file mode 100644 index 0000000..e11d27b --- /dev/null +++ b/pip/doc/html/piconnection_8h.html @@ -0,0 +1,137 @@ + + + + + + +PIP: src/io/piconnection.h File Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    + +
    +
    piconnection.h File Reference
    +
    +
    + +

    Complex I/O point. +More...

    + + + + + +

    +Classes

    class  PIConnection
     Complex Input/Output point. More...
     
    +

    Detailed Description

    +

    Complex I/O point.

    +
    +
    + + + + diff --git a/pip/doc/html/piconnection_8h.js b/pip/doc/html/piconnection_8h.js new file mode 100644 index 0000000..9897974 --- /dev/null +++ b/pip/doc/html/piconnection_8h.js @@ -0,0 +1,4 @@ +var piconnection_8h = +[ + [ "PIConnection", "class_p_i_connection.html", "class_p_i_connection" ] +]; \ No newline at end of file diff --git a/pip/doc/html/piconnection_conf.png b/pip/doc/html/piconnection_conf.png new file mode 100644 index 0000000000000000000000000000000000000000..c42eb7de905de9a6d7c73fa73abb1f8c627a4fd5 GIT binary patch literal 88687 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 z%0D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 z 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
    gIL#nJpx=upACi+%T119JwmQY_zO zWwm`_&xCJz*T&x`tI`O(nMNjrvH=NZMU_t)#n5CdTic@8(tsQjRK~< z-*Vl!af6A4<&CD_8=)a5VRgH0$692)$|hST0P0WXu_6G3MjG;npZq6$*39-@_5a|f z;XH@ARv-<+6w`QPW$Avw&5l&MhK0bYPRaQ1-@l7sOy7h*?T(gDVE+F?WB;$x4!qczd(on*jPP@juaO5wll8${Cw5hCS~wpQaU=f>t@{3)I;#? zI2Fdm#vGwUa>Hx^??vGLtoJ&rRSD}8ef>e`b_g)f=jt|S+3md}40TlXrZ~Cyhy`-3 z{(BC)ixss8SR9IkilbqYG?TWx-|hJ#a%2aPYol8PH!(~)*Z1$ighDD0bTH4CmORWQ z;^Z!{Y9=eqBGr-W+C2}QqeA=D=5(E!mR6`$>IieU@h(&fm%}NGQ9wB%xD+4ZV6>Y( zcW*MC0t8t4#QjCscAcG_eFa){9>9xqub(Mrr*jvH=xmaAoYf6}!oq!cw;d)zWIe{p zUeVC#|M20hd=i`M#^lZCB~R;q1NGtb&8l#?RA1=5=KaP}HQ3uphW_Dwi`g(AG{ZDC z_VsI}^YUW@{}VHE+-qoEAvn1n+p{B&yYUX8%s3y6YwcBK{e1;99`fFie0i_4-9DtX zMz8r5mz7zJ6{)~ZbA+?sJ8HYgP*V~JhMN&bDdPR1g9O&oIuSO;$)EMIlhLg6ZXgSG zPyZI79>a`BEB(sod%Y8^=|mQt&R4g&wd)@GmETVj8v@*MCivQNfLg7CTQykgh3LKY-+?)uo-C;_$C* zFgOe%u=ntrO`3G?eMZKZTQvS0`V;S9vJAL5_xUu?-*3g+VmVB+)pBG2?v|WzE3IF^f~J1N z*pzSP)nY*Dx37ZTWdw-d=lzO9!0DZpbQj#)w{N2rp+4SA((9y+7N+^n*{E@)m>#T+ z+s?ISKuzI>76-FrXz4oi$tt^PUI2|zqpNh>+3-SJmYF zUek(t;aZh8i|g80IEjJh3k2s>R#vvK)xjx!7CF)bW~+0vZtgS8(1QmPhRW{lyzqC_ zXu#%}^h6LZt*k&1K6;{|(UajZi_C?_36cMF?mwhCmFQg%pcSSDgCWuO zRyu|Oe;)wIL8h+L?`=R_{D!4bJ!RA4bJV-Cr=p=D1@$!VCQLLrZkWO18d{$=nVt2byZh zo`6+S1l^dS6yu>G+>m~wt5vNCD{C=e?d5@__=JR-FOF1L!H4`^BcAkmt*r(?dfK(C zc<{;45l|C^|8Q>j1>9nlT9bQI29R<*inQdo&q#YIxA_#SRbklgDLlS+z|SK;KM@4ic+9wwK*10IA_NU#0e!Gj3sB5J zLBM_IJ1uUD?V7(!8IAr#M+dXKZ|b>&vX+)sUHyCXgFDWG8QLY9o%4=W6L$(nM@N_2 zZ%|v%>t?-w&%(vcjTzd7)N@IiVIKBa*>aN}ET}%g!NI^m7O>a$F1zYmK!+Y|J!}1| zl@NsKLw}fUaX=Vu}r9g(2u`A8;8hJ{}_@Bc4#S5WWT(E?{CskloK2kGXsx z9I+{dlc50Uv5{o?9o{b1Dl0&tB7l)AH|>urX#2r(>juyx&u2lrS5TRsb=}1L=`6WWIsmY?aoR?$)%m(K$x^8_>apZqBx9!l#W?Q4% z|K$s`*;gSU7y!5)T3Ion!5gx*$_!Y)mG;Wh^_#}Qu`?3Uq>RWGsA|90Y^KE1NlBTs z)3oJH6TZleTAgX)b-`7RZWgcNQI=Lvm}VbBl? zlwu714v3*2EyDxMgOubwpvkyhe?7s#CI6tNEYkBa;eHy1ix8Z5BfxfqRyaN= z3m63Y%kyZ)1AzH?C+Hc>*9?&AJpr}2|I?>#^QzsBYgDl8!pE(F+-B2r8`ntp|Fa6f zbn)o4VYML56S&`Fz@H(5=DEsQqUmm5b%66386B;dvW08z1T!nre-R-6WAB7RG5&PB z?c%v{4yPng$uzO;D|_>JK^#xQyB8#LIeEI;7u{oJt%#O>zGcMHEY`Rzb%)Dx=q}LY znh0#OVMuqp9Pno}D|JgcRltQl`$^d9Xd$=Tn!3?ZN`3D|-I!h7Os_?jU+=Hs+)FS9 zq9M3D;P1L&TA~1)xj$u==K?0eGQa|i>M=3yeRW&Ucels+M{o?su=hLEW8fH5cnkc1C83geFP(VrHt5hDHWtzA*e~G&Yl9k3`od%=Z4h86ZgB8JkXAzx_;-` zJn+`3G{v-;D3zLU^FG>&%3=JJDRO!(sfK+*&jklKLg?n{ad8B@cz)anda~ipGfJ1D5F;xs zd(R{}6(i)4s`5M^5s$vigxj~}m6(i_7bp|~^SA41gSCC0cs`3jT=Q5C;jxuje94q~ z&+`1!CxzEy=bi#X0GRPlM<*F*$gytXgkoY`4(c@StRT&{#13GTmGDFF*S->}PtCwU z7(E?0WBrIvfnXS|@sgY(ZLDk#Bi5<`o@Q~4RLf6b-QYZAoWh29qCACPmvzXz&A!xQ z-9;7tWa7z}*BL@n^%d!jje={|*6lp7Yh$)%1{m2Y<`v|-UcaP_%)TeltsWfm7Dp=z zFVebaQCiRp5P1xT6AL$X;PWps`gRnJIdAJ{d=JKx)a_?J_TtYY4`|J0j7nEY>u>O1A-CUWb{-et~!zDix?(3SHeCM5;^~LAL^vqwJ=c zD;VD{uk#$EPf}>6v$025E!<$FQ)B9!$48;!;^SEp*#F_(VM-cTeFn;CLTn6Z;*xMl zhp)FjjLFbQcvCjlp7>ia&oywZ(fdr4id4{&EOX;>rHhLkeU2mzr%8b{&6+@1R_oD0-=Zr=wH{O4U^KCzzus6_UDhcf)w?; ze9N6vfW+6V>V63nB_`cjr(G+mq->;c`_~T|c2Fi^yF!7ALiQ zNB8cHw7E3MKXFeu9=j{WrTdbcJ6;)et!$~hRoo-4GcgnW5SHegO@OQZ#q2gQV1GIV za?>!&v)u;@fl&VSCD3Cn-+ceB=WajO(TH>B*t_TP*Am0f#1YJ6^s(`;H!(wH<(1>& zvy|PHcy$|--oJ9~G^PsoysSSl94Du)(X-`vQ~6y`7t^03rp~m?f!80cnQOI11AcH^ zwmFyQO6ji7uW(7ib4U$6+*B8)RE|7-LKiQG@M(MJr`w3OG3&XAV>R`k1GA4x;=bI0 z=7uA>5PpR|X2gv-@gm91W}?FTz`E9cTAGJ|_CEKGag!dSBlI5f{wvUXyBD3TQN`gs z@yX#ts2u!g$#?H&q{?PnEDc9uO&=F#XJ?vaorS*oq!9Ox|LWC~<8_aPa#GS%C7Rpx z+3Te1@s{t1C?0>~^ZB&zVU_x?*omF*;)(wGMGHCu8hpVB>Oa)99(LEm2{-Y1{1*>n zw1t)EZqX(xWTS3f7NsJdu2re9yEa{``9!563bkgvFwB86S=cX#Psj+&UgytHf{)UD z+{Lj!lO+0`Z9|EjQkg78m!Pgsg5_2hhvIj(JB^t%A~TBSn$%tmUUZ9?937~a#&qF@ zJZph+EYt6QH9neP%OAw}KH`?~MeHIS$f`X=ZoQML^Pg>zY?Ug_Lw1i8OSQ#@WH*3N ztMq@o0C^$SRoS{MOG`hi+y@0U&yU({ndidT@#zU7@WXpN#9U}o?vi6J_J5*g6^U2p zdNFQ7jlUDv;4>p?h|cD5ledW?Nhs>ohAYdh`?}1*5ih!|7u*^dtqdPF<Cu{d=x#39@0l!H{(Aqrd!E;K07MFCJ(4wymY5V$8aw=(V>~=Y z8Z$vOxMwf$H@^{^q|yUYvMFr{0d^SCqyZk`S|t~~e@}NSl45L+6!$C0)-argK2QLO zwr2H`*1yGkX4F_34_(N?(nw1YXV;XViGkvY+`V|qe$tRqwfLcTC8fEgwXZP@ABeVP zRectYbmV`Wap|^>K%Oeo%Z|GtiF65JRmF{|FLO*PUG{bgEMj6)UW}vS9@AgPSbO3) zTp};So8-_t@kGYJ9;4;85N;t~h9{SlFfkojWHvK%L3Xaq+jXPVw`rJ99;&#{(WIuN zV75Pt7C|Js`t{PL6{VP!=x<3lHWqJR@=9hdpD zXTChQFwS^xb(h8*t&b)x4+V|2sYlux0AY9+>{8eFF{J{6)OHyngrJLK@z+?P+wS z@$qq$xgW5LjotW%REAt}Sa09E9T}q_DMxSO*z5jK&OlnSx>xHwmSyzE-H8oiT#2a3@&zk$ga zS0G8x8502=Ne13b;2YpVen932w@CF=FQ{Y}DKN}&n{;14F}*?EebZGPuV#|}$D0Bx zNt&C$*iJUu-EUf3=TyJ%UPq!hfq9i|XF}s z&`;ws5~SSSMFj+O^75Nn8(d>Mw~PCh%VP~=l$#cCU76Nj*yn}GNKC2+rf;|kQ<7vq ze2&TxLO!;h!ZKBwhO&>xJzB*0*B`#=meWdU#`JcQFhX1g&If^K@39-*wq%n&XY6pG~Cd@j=*bm{UK*_7w1WZS^lX&<=!Y9Wy-Qe zdjGIB_MD@bnDi< z>*TxHhNyG}28nA&#>eH0yZjX0&y2BYgZmcg`4~tddm_fy?q&`Zl@#}xUyUAp9KDsX zI^J~6&F$dqsES>#SA1#3!o-cg=soHlDYjZnmU5eD%dncUg2;>P)u5N0ANjWPaw>5L zpL~!#8Y!s`ij@c*DtUh&#tWZ~bsdY0nm!xEJ5o8owirxe@Nl%6cPb1N6$FAd0EGpl zSB!EEzBswD%%&Nx{)8MI!Pr;8w9qO(HD-4KNAc)pXUDQDG@Uz06^p+t+!bGB)$2{JIQH_u@?ji9Y+Pp+XNW zURzZA_FneAILm_Yar2qKmQIB@ktkIywa|#yi4n%Xm{?E=+RWjDKko`Lq<#A2iiK6l z#KPFVd5AA>d3<)$U0s6^t8b@%^w&s!(3ZZCite}A&d$rt2J9%*mJ6w!hK9gq^(f-T zNNo{?Q3Whi=e#FcC+K*>4?}S&KvV5B*0}(tQjwqBK9!Qsp1kh6^Nn54vzP=G@Me98 zrJZVYv#H{;s$jE_ZJAJXC47t}&^b=2Sp09{)4=D~X;F3x&dul$I;F=QK%?Tp)KBpN=dFhMXPm z8CMo2x}_sR+^d)&Ilmf1G_Dq##66}fDl6$QznU}}F=+m1LJ_-*j#eaUVc~FT*<#W4 z+Y?sJm$CdW9tPPFYXFxTmyjUkq;pdO125-k9TyO3<9CnO7yvipxc*eBm%Zeq334f(N63*=AQB*H} zd>6lctNfYAq>6gEwz|5;J<{t0n8D>!ww`*p)u!o^T#xRO8xN-9m|B<)<-QN9RPr+Q zRv+2Gr8&nZep*-2V#3XK&2xsW{V`+uT_POSuO;`*%=G&|DbOZ_<*s9e6Kxc|UmUn7 zHJNFAKpLV{IHDSYef!goj=uP$q=|*Qmxh3G5%kzn(A6aaOAjM>3^-x7rvhuD9cmuN z_QFqDVp(9j+AsI0Cl_>O%$12Y-~ToICLsZFg7FMKt+6JqG9R=~J%>GV+(mVc_K=5c z8LV~>5H1o=?2Mzal#jK}Wksn#DdS@hCZRS+xRhqNq#TIO&1p442XZ7gh*cLmF!Q7D zEJU(%`JZ_rdN-ny794>K^I8{2JxBoHRO|Im0{0$ofVudDTU_`RdspnMs=${dR9CZ@ z^poBUAnh7+YSN$Fa92%z4HMq{Qd$!e&%!Q8f=0qIy8p-scbK$qcf1_T(vCcxmHAY; zsTjH}!Ni2D#JwEttJNkIg2SAclAWF+lrY=G#>Ynun%ql>Fm~~DY#M#{?nYHrWklm2 z?}du%?oGj!m8JXZbI}GZ-dj};-7gd}g;O#`d{hy&Jc@7jgCgHdw>*2x*oF>e9}2_; z7r3l@Am_(rWd%$QOqUx=jOM?F0Ua16407_Tf$%zx_Zc)(bjDYZL-x?qW z9teC9_C{b5_>?XX4|jv8i-RAGQVrlO6qpYptUujqI(phVvA+EB1{-{b=#R6#FBU*d zoGp;F-Hnyy@cZM6DAOX|JV5%2s}O-4_o{%K^i;TAE^C5neV zyRV?latm~caL+hd)vnD$lRSbecg}z{1agi8n~>;6%54MZz25+gBxzMPc<*ZtY|Y?? zyoBOD@BEG90Y#Vk@PiCV)n`6t#Qoaj`lDgJ3v@gbky2MBXcLCYr#6U)YP%NQ=gX&6 zrbLe4%*@{<8=b0fxrTF&aoJyNSDQR-P&zaY7gYKfxV&&5T-w#Xo;rhG@*qug@fEjr zl{pTy7j~fO&kZguTiy(p1Udyntw2FwBk2wqsAo87gBTkEoj?vE{>yaV-~B9l^)ZMK z;wG*14y>$DBaTTPvQ@BeGBPpEgYN|)8G9FZ9l_~{-sG^?0rMswV57 zmgy5lhH=oJgx!l95v zSg`w1$MUqV-K~3zZ#ct-?RSJ;zv0ec;2;P#wvQjJYi*~*nG@*5#G-Q!H&s}e!%bhR zf0UGeVVpPQMwmAEdfdE=N0A`>N=WviqZbGE)uw4Fe}Br&87{o_rf*2kkzou}mPPbT7h_#cpPjq-O9j030thWDAMcmZ(b5Kj+))YkZIMJ}Wn~8Z>pY49 zrx&MKSHTT459S!NsY)}j9904RkM_?X&{Y)Bq)%ZvwJo@s7oUpp@U#{tJzD3168wc< zZtCa#*^F2QWl0+f?3z98L)dYc@j)2wp@a&u^l^D{m~gHzdzYugLE6hftX@n}JoBP! zl}4-$t!^|J^?b(a9xVf5&jKCkV^za#@QK7Ibj#5%(k(a<^wXhGV0d%Dz@rr3Ui|Z8 z*Atko&>Ce4F!`hidvS4Fds)0D1Bc2{{6c}DZnEW+!^j; zub*30Xz$d|cYqLnw zP|~KzzO@om3XNw2|7#~E!%$g30M;}y<>B4oU*LFTLbOTPY=}ow#tj|k%H{8_ql$2G z{Msf?@krX{+WKtfD9cg1wFA?EF=mLTOXkCrR8OWd>_0RFZ1sy^FJsqSpCa-DglDKeb(q)1_NTLFLCM8AWj>6 zY+#Se)kc+uMTkmSG_wg1(}lIump~89E@Mtc!P?1cLWLg*K_g1cxhO zBx=F=n`2W(JvlDOFH=)GOFw^_cuel*dF>Wh7*#Y}m*UA8zS3`s#hO4zjzthI$$=C9 z>J|3KM%U$~VFvD{Ai`f@;KdDH44XA`0uPa@fx+je4lQnDyh>dh$H+m03L&ufi97n6 zyRNQo;{-P|h|4}#!V^oY)C!eYv94XKdJo}}25!QgwpK#m`fN*zy3;b{s?A9>3rQX% zyp$z!NWJ=rkuCJGlBVD-;%~&n3(ovuQncFd6K5oBp3R7S;x$qMl9G?NDFVgJpTVY} zfUWL|&NJA)>Pi^hef^K`F}i4+E`b^!(}%%qhpa_Xw*^^%jNn5MRZ3b9n}~v|ogGTK z0OrXYkgHn#PAT2`jw<>n!8wn3yif9g9S2Jz2|Ze66%6x>8>l^F4{f;~RqYbo^h|}9 zm{AM3`u!h1G7w?i48HW;%JzyxNEHdq0)147J42F7>Mp^(Oxc{GTTl_yZz$E> z=~5rUk+qUjO%2J;mtCdb^&}W4xR;{vBF88d3zd_zj!|$~v+$0ClAwE2ny0XwzWxKD zI=e1ILm8Hvk0#ujDcJ!uyb|7(49VblV?Warn~>qx{YQ4=3s{ir!86wYkql1&)@j~H zb><*o{sec1$QR)~Y-mTnnE>8uZY3YbD{E+^D_t{)UQfH`t5f0ca?<(J)x-q8ywTn$ z*{EW&Tz8W(;xSkLP33OPD=&}#UV7QV5o?L9R$=7gwQIfoCH+y(eIm+e3JI4O1t>e>m&wv~FjYD> z=#|*>+klP*fHsBSi3a2>Hj4~5&0=AHkWvu^^ZaCG+vS7BKY;;v?zMIa4A3uMj#^)f ze#D$YM?SpcT@@x12eOAN;aSHJ-=aL@TSm!ea5Lp}rRlG3M#z5Y@7V0mt8IMEdZ*3w zG%>2X(_cImAConF&^%lJk&ra@osJ>nuGQ%}_N&2HOYAxF9b6jp5Wo6AD=&0NFfNpg z+bwQPRYAPQ4BFZ6{(mbUwZ<|xn#G%~Qr=EZmV2WM)!OG2cr$do%`)YB(PNT*mpu!Y;xQ@D zTd_VWv7kzOv!&&gMMr*JKMJ>BLocT7o1(zco8q)Q|f z_|GzSACJ(z38%2@(PL$!Ut|T@^Oe)G$yjV2WNguQMu#{QDHN5B>jZZ^M?c(W$tkKw z*G!9l!l>Yl2dBVu_nUDfEU*cY3B9EI8pb4Jc|F zh@M=ciWt8O^mbyRoQfRNW~5Ly1CF(gdxhN|2CsvjG95X6tioGu^=3*wk;Vg~owqOc zsW@UPDQDoq_l!gc>QKHigbC+6nB9fJ)2fgmcpx*A2o#Kc(%*Hw|{3zJ*1%o$32lu40cV!gG4>zLQpho4=- z)@OLvS0VKNO*Ol*QQP?|Qh}F9t|>k%dSFu&)hGHyBLTrk_e<+v!r*sqnLz>c8yJ0z z7P`axmeiC$Qt9kg`Cwj^gJKT3Dr9L#%#v(-`N(a@g0!>kHKpVui?AVW7re zi;V0drN((=!@+UxIZithcm0i@`Z zfrgx-K5G%yW`xj4iG?z%*!|{fI@!HE&b7Sw)$u~S+d4XS3k~>))=#4Edh@MrxVN_td$n^a!hbWx} z0e=tB*)E_sIc~QcA@+%ntf`QlmDbM3>V8o_WB+q7tqsy=F1fw>X zt92?&u14g1kRkwDP5O^Q7`J>D20G%IhmDsHOQXB5uL`(M(UT>@4fiI!yZ`y5)gE}+ zenznOHN}l~Bxw5aW84i|aM&G07U*4eLI?^l^N?a=ls5l<+;A6Z1L9$cqdZaI8g=Z# z;d2B+;a{i;h=@**ci|Lte}aPW77!&8MS^5k5`?3GX`m;Oh7d91DmV4#53mqFP+c6$ z{NCHE&}Kn8!8f+cZa z<_y^Ozu2X^=m5y{8HC2Aod0~<`Io9MqL7e6VrkWPCl5uyWclh2 z-&S*CgWst;B0#{%t?2CR92woTQ8@sib7DdUC16X$P*p!0+<&xR+G;(u_cDuA1I;;p zB^=)lbla)QUB{k*ayYZq^o9ki&}f~3C`vj6 zrK*g(FuZ7x`xq`CUtk4sC{Rhvt8RyOIgRLE)zE61;13oc*|LN)Obn1jIxnZD_Fyxa>OlaW#z&x<$PXR`H#KZ`>se54l zD)B!r$j-?MI2VYO%~KSenDsl-M;vw#didw}hxFaa$;nFo1~@U(t5UO}{LlKI+99E`WIE*$>~TVl}w ziv||@`CZR_JKnS?h+4N;Ege65B~8nlwi)y~WkupHK9ViWgEvApWj{T^1w!sB@ZI2d z^!k+@`fcon-8f1EA@qf|>H{HvqY8NhAhtSyfC10mq}1QKmh(UBNNy0!>=0H^w6`y9 zu0j%8oh$B5Q*bjOn)|lAJO-`VAQKO}o*R zDJ3NZi78y1Z(kHZ8HBe+L`3Y{~UErf3w$~tdi1CFw={znBm;!3WBKUXs!&NedB5Y@18i4 zkc67C1O!#oHv@frzu^nJXT7iHk>>ya`**lGJNSqUDZBW-d8h>toV&^;uV&jEi*-uD^ zKtXZZnB;7E3^8|LtX>UUF2R?I6h1(+_)}5|(RGAQ1p3Ow046Hq{$3FtWWgL@{ z;n&~xL0w}R;181UW%%xKW@-dYZ2|hW8Q?20pCQgpKoog%V({z-0s;b9>MYvjXl-*} z073QNU~hgtW&8E$DG>M&W0BF&@ZXIz{NXC7jQIO|dV7C2&Ha5XOV@e+_f(l5(rby$ z@yKmm7=id9#0Nt0sLaofcd@BN(}C6jXV|K%^UjY)07IbN(b3aq9{QSBrGQEReqcFS z*}HHdlarHsBcJ^_AIP;L162(oVBkH6u*$|vQxbIY*U)FdVgh+`Z@a)RE6*SbjRriZ zF%Q|nDTL$1rKP3SH~UU3xBit9FyVmYECLr(#39-k1Rf;Yh&+ozyUsqtzlB``x;xAS zh?NY;*hfG-DmTtS8kLmW92*R(3-1auO<*4(<19F~kgbV^NE(0x`Q00TQDHp``%Cf@XLe1|$`JQJ*M${06H$JUkp2xBjMl{Dl!rLf{O@1)Q%a zjv~HRaAB)B#6eiw9He0o4#Vo}>qj${|BWRWftPZJ!^W+9%&Ytyo?D(@G6Z`&W&LP&<&v1Rz1F>gwvfbADX7 zAJFD^As16=Ih>=JCbuts07{}WI;!5R^*fi6M#XhPds(w_#qn z3?irD#q-b$o1Zq`{#5*q&!g_}tr?pP=SV4}a0Nqn7vniHZNqhv`6~)31Mr-K#`{O+ zjxinL*i?d221hD7?z)H4he8TTjCn`W=suSb6?BW!k_*#54GoP7i!YSGaVQ5J1a) zj_d)-x*>qfz-yUU^SyQl>~uu_g4G2#XXjULbS1RuBHeWG$*XIOuTb3PGL=<-0<$Y0 z?3K%8q0hIb>!KmSAU)n1b(>q7O2E0mOfJT<2`SljfBzgfQ-6zrtfv27+8jhMC%FHF zcnmA)x>e#GEjsXR(@mWP3KE2;?|1z<742>-TYaQL^h$aWGhUuT%t~X_o3ap#YvsOz zWoj>shxLHqkzl(2Sl^Hl2T~f4xxCS1`!gtSY^x+zaH(J-GJy;Z#Eo45nFHb>N5YHi z4>Tab_XG3Mm=On**pi966mu6H)-`KY`Op}N9y;*ajGVcv%_S$kaT6u6A|%NK*{=f7 z5kf*XklJ-a#d-w0sjW`nFbYf+-C*6djBazQ-Jt(F|)i)hD5wDVA77eb>T&avSrCSXoT6+2?h~M-<^Zx|P=3xE}G)S>uQB6#i;AxSvD=R4( zznB}7$-ie-bGT%?umED6n1S!ER0FS0snY4nnw4H=DZC7vf-LZA*I$$>n%L#zm?jd5{tz(ld< z)LsBcj6T2k$}E4Kn(bREW_*7)JS_tW0wQpN%6I1yG(JFbAXH*v1nT*0)*vaYaJc zYHf!RzwyoTf<# znQ)K-j|E`k@{4x4E=e0FAUna509=~Jg%6t~P_$=jT5SvPh$3#W)2T0P??`k(bwVD1 zU|;ui&VBH~L^(ibKb{d7go+?_2vZl7OsTSPn?C{ah%5!#3-Y{(%R_Yzh6q7`6dAv) zugo`$;B!=HA0h)0efg+Y<~(+bGQV(9IoKLm@83qj&@M~dZ4lF14MMFDBz(rOQ( z>jJQcMFCMS*cOV4_jq{^(+{%Y^?%Q8acJIsX;?FA%Zo&q&iBMFkjQPk(r?!aZ#V;Z zMiJ7-;8MY3t{gjK^rTcgfi6mhOW||40ZF$}SP?KIw<_;F95MwC5ENyVHi|oU1_1G$ zfVl-SIN)Z0c}ra^rHXakw6t*zMOA_a4-4z;*0D*wLj#_^H&n;46+^pjKERWT4+;t@ znufyU9Xc2fsN*gEvujm4U8WdSQ_qJj+f8|Lj346I6x~dC5-6=5g^$H_ zj4s{c@@sd+zC#niyoyy_(Agi?u~ zp8o%8?aHIET>JIgBs36;BtvErO448qsf-yanJE&5iYP=RGpU_1V}=)%Bo&b%LZ(b1 zgb

    +njUVwZCtj@2vCRIp6yBT6-_$ectD}@B8<=hTrwv#0jzV=?AcvV|O(Z;bO!t zJxNSoYI~X(#>Q28URNTf#EvFnv$}w_rvnJHQ zk<;tBl+O3&kb{5?UxlJkmQv6`-U?2hx^{#VZ56Ub^jXd3b_qoYVXgMggYpG`h4taVyIvt}Hr_EIQkc zjy;zR)^*;)z?@B>1`?t`y&TrmtW&ufH}o#5jBM|#vM~mq`J+<&__*~m&JB1BhJR`)^ap@ zk)U9JPFk)`nr0y+DUels&}%hk0?`%5yN&Os{DJ-hle55VY{9BHB$5aHY@!`TW<1t8 zIy#abvw^GkQlPMBZo*Py)lk92uTjy5E&Kt1il@TwIOO2iE53<$mA zKPkfG-_X$T8i6oBw0UMaI$XU+&5H+A1ltZMsRz8&bF?DCi&!{au9 zYh+}^mO!E-N9f_Q#n=amCNfUGcIGoAH>!cv!}t%FJeAhlLstV@CFY?e;t1ZYodz84>cr~@z0(R4k*Qc%wmGgxphq= zEsyd!D)4q{>P=ig(fqglnC??SM}en&8e_QDmmc=@SdmbVnMeYKyfA_lx;c}We&=scnB zzIMNgId%SpFD52OrpXZK0l0z)HHjpjzjhc`FU(F(ZFCUZv1PcBOPFGhfu)(VH;(Lo5{fQi7m46atOrBMr?k{`RBbf zWQ)m8e{AY=Vo^yfD!Pvj>E2v*ftVzSZ5VAcdx*bOla>Q($L)pSMQJP-8HQ-@a(uiW znple*ZBtV%v_U*PUY0j4zpfeYk8}zO-^}aZv@dr^ZLOcJncjt4`3G@+03xG#ZYXlU zy6^JHB~7_^zuCM#06_@edjz|R&#rp^j8T9>!T>nkzVHy%f%Y|<21m_TKHLs8|vM=cj@ykUq6%}JdQEX9$#FCt3jdJ`#KJ29nr~6n>Jy8 z^rSC7dNCNCD>5`Q8LMew(RVh67n9fZSM;jdId~zM&R&xX;n=IBufGxOuo_=dXdhA_ zId<$<*EqIL(K@XAuNpdi!HKxaAn}y2yDTM1zB=9;Fgk}M3Sx;NbXrhQ(B$8>Gq0w* zn~qD__c_Q!!ls1Ps};k(^Q;6L$=D(`U*ZNpzx3nVcEc2KuQ;e6ojzkW(W(SjkD-j= z!UYq|k)mCGW-~VrWp#1sLeZ=MIeGUQ1E2WO{v-ToXe$7gJb&f4|m=#+mu$ zIuVhPYydoUwX1!GKe{VJp#**P7CDS5DJ$>Qyn&zoHI@w3bQ)d!QbL|DoV9ZC;vxz_ zf^pwxel<90lJWKdxCUD;Xu*ewQAMn}qeqSeaC&RD+;RTB+E+(wsp+GpQmJr&;;VCp zuD(~Jf;9qCinMMVVtyPib%$~spVldy@s8*4yZ8Aft==7GiI|C{{hQ|&J>2u^CpQQo zfJVmcr%;1T(JWLpv+`RT?0?-z1Ytl}Hq!bdOIB4*SS1k1KZFqRaAPCUflRL;$w?SE z==}{0uYbhG8yc9NMKWDAc83-+0kjInu_>nN+=(?7EZNX!jW3}4I%d<4)uZg-5ktNk z>74s}tcI|>AW~1p=VQ$-!2BIFV)+=yLAtwPa%?|njPHbpBP2{GPMni@w)%RLQ{b^Q zUGL}a9jtUZ+!nY;N($5AGFQHHN2h{qo8kuHi+Q!r&?W$~P}eHbb&|hyXEW2?+~@Yd zZ8-W9Po3_~3-z4K1H5Z&`2}R-04tHTTL&Ab<|&O1L+m(=Vvy85lKIBO7Y!X~Eut?% zMplWHx347k;|HeYB|$I}rDpi!)%C&P^3jfLgs>pNW(A__=Xj54u_ppXK#S#If&j-n zlC=&%6V-_m)UpOBKu+5(oWZNHpyBea1EZY8+14twnmvZkdAz$8r~3<_d}1mD5z{n2 z-jOFtb{r-RQ4Da67Wagr>VbHw800hVmQ(YsiQmCLPF`0p={ z_$HTLNYilh(uLnx?KHA^Nxu_w{-v;O4;c$XASg0mg3Ef%5X?c6XQ2s5UiofD=rPO> zXvuK29%7067TIsD^p}L=dT(VkdFS)D079jnMKyXA3Us>{Y$z{k2H^VdgicmgzbdP3 z9P5*X*x$_4=gcl%Qa{SeFB;`L%SNTvxwJa^j!s%&HsnKC{s=4=FTlGe$oIstFnvnnJ;!;bi*)3XuFjA}c_l zwUl5(Lr(&Ozz$*=X=IgoNea{Xz430bK@Sa>jKXyd2R`B~1`03D1qKF2yva7?29;9q z?d4H}O>mt}e!V^CV>`m;`tys9d&lUYJ0IdkF|JxMI<*sD6BfWEah~qxwd5nnI5YGy zgMzJhE4qsVk`P@3YK8=BlC+1PU)v{R*Tpbdr_D-8!jFQrSpgohvR8H627q~-TS$Sf zA1WJ~L@w>m-s93S8uG1U&Xb{@3pY@iNe)h3U8|pmw8nvBdV0$C_F^bg+`PQJBUk>o zTU0dB4LGNR~Egk?C^ zztSqlo<~K+%vLx|xmc1ZY552Va1{3S#~(xrA!s7(CP+8y{SLqf1m&nQBjcX46E03yzZZ1WM(eISXt^GQ_NYY3q;6qy}{`TpZdkjdID;J z#-A%-ECU@r$ogc2=l=LXnk9rn;lRV{C^2JH(UD+V`}ADfdQ^tXmv=*QM5qg9|8oqp z-LjPtzlM8;VCzQo;=>;W@jH#EL>~P|1K8{Ql@07CzAA134*G43w2c1B@b%E4seE= ztT5jh_0y0pv@+SH!p^oD?d*x|f2DK7@=Goq2WB$r*pU4j7 zgj?YTfKDkdFK1j!BP=3{c0C6$MjUv?$xr|4+AOtfeW&5CAAiXhM-dNMj z`JKUSqx_7tW>V}VP#Puo`EwbxK(A5t;72Hb^Cmnj>^khRP;-HAngE1A4?NO}6N540 zB$hD}fov{%=7XKQkf~&<7Og7xEJFe(b#yAx2LArmMS_h%{{SfBPxm^UU|0n}>UO9G zJfyox06qmK%FIAG}zu3wToj&G!z4nJsmS&u>bOiva_>uCmplK zE)&kZPClq*(1#_X)WI&^!P>#SrU0s!S5%CM-W1^H4-XGd6u++zITM%RKKHZtUr%A; z0^mo=4>aJ_zKr+IL_(v1BA%Un8ju|va-&U3R+hS{+sE-~ggpU>1D&CkKmoxvL|Tz% zS_GNmiH!|H;1xf=iY*_m`_?lS0igAA?4+L$%0xv(WSl0jeQt4t8$ymaY53+{-~+A zcletm2NMIHB61uMYYW}Owl=c%jO%CEoNgI7>C`fGJ*`fI(0Gr@<%JQ}!f5CG z&*3t#lwTmi(A-co4NM+BL@qviG>IC8J&VP&0Zbw28TcCT)nML(xQ64}7v&f!O~SRT z*bN|ZBK+u}omE-AkJ)QsVetiY4^fwK>SCQ^AHi+$d+Gb@>8mtJfnWj^g4F}gQ%>$a z`f;TH2(qYz!^T6-6PY*Sb~}efy{S|vZ}b57e1d{UZ;|jkKJ};SaEAX*?ou=|ij_J? zt`0Kw8z+*=`);VHh&&07WDhcqgyR;_Z9EI+(;uak0WEo+jPpFasa z1?gB=E31Y;TwqJ}``Ka+c${WACq66Dy2{c)VEv3k>IKG226ULy`06)+94xllB>3kl z$@TnSVyFKjgBstAd=t3Q{(Q~<_8Cq09gcf5;dYU_fS`8qf z0&eN^=Bw-=bP!rm=WU%jU~l< zhmVXfPz`3~g;}xq_}odUpq;o8*)g{Yj29|o+bEVbti#$YD)%>&Gj&bgY&0DjP+0$rbac!yA~)RsqGFR2s0Y9cjM34k zfXPq6!{e8$@KsQE3*gOU1&4mYazK0(&j+K=eF5@=q4GA`OQ9I=4^P4L@4FEqR0nOP2+E)4)E{=7v=WnL7SZ z%$1x5`!lx)3Thh<&obC7y;rS4<3eU03*lnJ$>v^6-UWc6ESN7?i)U5=O#3`JWoTe$ zx1GcrfW7|;`<&0D6ay1w>%L2bK1AD7bweD>XpJt)2{LAg1Bu{CINcDuh^_)3L{9DP z+mRU-9vOM1V=}7t3<*hWvE@fg4&x3^ICk-nD!zKgi5r`PRl(Pgpi1HoLX#jn>;XC3 z0?G}s%^=Y_0KPRMbimFr<+|(t?rX@K8OMMUa?41}w(ED~eL0#_A3Ykv+&c;mWUsf? z)d6l1An+tW-xE^`PVu(0XAt22PV*CYWL|$=dv`=P6)T7~9cbNI0k)`|js|0S6L|QcF;Wksw7tNl**fz)1 z{L`md;AM(_&7A`SVYrZA7qcf68FH9?GOb$i`~F8@n~hFk(jHsPQm^IV8w(!zQgASU zW`U0HP?&mlE|hVo1|EVBudeQav0)#HizllQ#11i=5p^se0Gp2f3RqCItf3x8*s^$Z z%KG{+R*|GSfBI@P7-vAOD)cipAPP7K;iZcn0D}0vKf`&g4O^pD`V);FCP5RlDCmvE z85UH|Lk8?1<_`$p@PwR3`)+-p{k_VmP|qjY4hv(cRcX-|+N6Tj_?+HL@bDarJ&G!V z7{);OqIBTP0>xDWqrnWk9h&IxD8Eeu5viNk(%|Gkqr5^Uap?wD6eBIg0ni4>N=K^L z*u`Y$ty^hGiyo2=m2=m}FeEW#NJ4E!vefV&Kf*u#$I5ZY270Vt@5aubGjsx1X zjt`N(KZ$iP0k=RdhT;)8xa@6x{Sdkc`O!(~RlzS`zDyqjpF6h{Gq*A?C2R0eur5&8 zAYS9rO9toyH;LU|J;S79U_kf{lHKsx;^_vQ48Fex2Gxx&MHs-tiQnoU7}!rl+n#Ha z>wq7j$2W7yGt@pF@T}R++0<}!YZm?XVJ)iJE(I{cp6L?bWDG$H~ zfieH-LT3pK3H;90V zmn>BzURT4rbb6l~Pe(%F!!xB;J00<24Du}q3$mK)ngWgDF`0;_dcd=aUeiyj9th-%39 zI01(={x@fJo_rw`jR?4!e!z)12{vfB69Jl=LE-;%X0HPeTwbpH?#wO{PYH4h4%n72<5LI*Lb|JqLaB9xYkHDdWdB?MmCNk@Q>B(a3({c2EbRe%Pf zQztOfA0Hu+NELy62RqSkfAy@ii~nd(u{@O3$}#8BPU0UXa3@qX8afBC0)+g#FkMrE zcROk)dV^%_UqEPOscyWLJeTH4?Ob4XyIB^YGjqX>+eBnbh#q7y`f@N0{lFZ0Bh zg#t}*z7BV#mQb@H8W@x?Xk(3u2UlYwoz@II`jJ?5fDdtkf)OP@cokteY3Pe7z7TLD zFrRVacVhaw^nCv4ycEMq4TPSvwe(72b7IL(f>wlL2F!qD0~m5YukJU91sH z^x#d{Ams*D7XiZdIw;p3Y=lU_GvaJ#m(^`PseW!V(x4p*y4->Zkb$$Vr@#~E2u!3P z!z`s^08s@ORgo^=ZXfvXozqQ@AEu7X%ff8DIqjL;IF3BT9bEd;0rGZN>rFz|@@x7_t zFCDRgiFs{#1^X?3e;!8KPtFBEU!UOm6hK>1+ykMUnDNoZ>9j5*G3Mrd$7mTEp0l6T zmA}=|VF)Olu;+BT?MnTY@AJIM+vshT6B88`C53#-=*{&@tdNhgQT@yfIa^R#PM_ay z0A~4sV;H~k4cL<{TLPPg(Mb%ui;xBwg6n2|eK0^kU&zPSx_0dVpb*UAsFG+`AeTvL zDC)2CDW&fX^LlK{og}QRw<^ZC+l9*cpY#1Ue(ZQ7t1$2#tUe5AWq~ z6@zOf%ytTYu%q8pprjtOtiZU$Mq8VgJuig5dhbF_}`8s`?A1o2B z*j-u)i-gsh`)nQDU{O(3U{*=r4v4-t`L_VRP`os~gvGuV7#GV74KmJfgUsEw=Hj>q zG&f+;C5%m#RjHkq&y`!s3QeyqbR0gcV+*GD;%;tL&M|?fpSem10o)X$sI?UzKXk8N3%^x zY64b0xCY$lSIG~+_VrIdp#z=#<~K_q5V6d!OTjK^Sxl`0Uy}AvtBm189sO(_{jDVf zt&dN#?>9-6S;r^1MIuH&;BVG`hjK?)Ye5SIB)3Z-Ifygo{>2IR~!4MTeeT90p0k4eh~oFYC@ zIIj7|k0~uE;Ne(8O#b1v&yNIZqfwZF|EL|!9SLwk!{0K#gya3UeQCeT4q}QketBnh za%fca6JGcLVhBM-X5jtN#FGqL==q89{TMRXPr@z8yfXd@f_eN33k%bGlKBU4WRQ6x z__+37`Tptb(lhi1Kt3cvc*>sPz;_A>c_Wd-Xhleh1PDtq8vwcDXLJZYH~&lI8jTp+ zL73P<3+q4vY_V-QbPRS9P#9n_L485phPXect*vr4D?EMrdSw$E_g81N!_rLs5@u4~ zRq3Ca66zit8#17i_Q5z(qK&Cn_q#@zf3X#!Q}d40mV+`w#Uxhmx2%98?9=2y{mVWh>~|g1%4~cdvzL#%nD2g>@yNw8w;gH`4ou|qt3YW!xwHRz z2lSjHOIi>o4Wsg5!$Jap>X;{tfU){}E8~YQp{Q$ha)d`kxmF|}`Tdo$)pc0@P*KpZ zFfER`8gN*hW36d*4>L2H_FG5Sp84v0)iUNpkkUcgg=N7Cj7I149Dh(B-;__-uw{io zU_fI6(HimonKWm%t*oN4IND$jYp zw(maq2s#_)PtFeYx%_Z@HS~4d7~LQtOh|S%(j$9QW6oP34ICl;hsEcu*7TpuZcXp3 zJ^oU*s3IS)4f8oO(0?KSY3wfJzd=K8x8g_1sTaX#vAg+! zZB>CWkEEhv;7S`>H(HvHXrq|?%M;k%(`HWC81_3P!J33lc@zh7jC= zQB^@I)#E~>P4{5yF%co#55Kwm#B~;&fVV%-bF&Gh`HnI9l9@KVHwelrs&nszH-Uhq@=6~w0T+F_93eG}iX674jEZ|08@F?yUW|rEs2*bSQt1Wb?lzHJ2I(K5+LRmxkCiAzWB}uNw zcC)PoD*P4ns0L=hO3aH9k5yfJo+)HM@WKliy^^y&je$f1Ik7jxJu~V8s-c{<&^w^^ zTtj35GWlW7ZcT5CND{K1a@)5BpD}NRiq#S`X+&?<`_m{>S#0{?FzE=7|H%Fe4(k~kBB?+O6>~}7hx-bLY_|jO%U3d)$=YlMDYzs^bz(78A zVTWT5J;=eg@1&euwU~{ag38}`x3Tsr_{X?~9>H5{KI9x(u1I?*R;c1ibdepRG2trE zE9j0oqNerZ4f6^SlXf1+cjl|XbGf(O&8z-2o8r+8oq?SYP zvoXyH_vz@g7A7v>!z2MvXc)0=Ng5h;^7AkuNyvND;QfX2KLa>)@|oR9y^Ct+?yLyb zU@CAKKl5v0mc&+&(JgST!_zMKg5=exXuPr6h!qJ(G!&j=Mn>v*SsjjsQ0nD~}_aG|X{8a=|-QZo-0x z1{u_5OyN6w!aa<9Dhx%4ZU|5hYx zB-qEAUv7KewPE=(H4S~6d$#x$h=B*-fj0NFTDx&(W@e4k+b~AfbB{??zWBdN=^7H1 z7tYz%*?z-5%QmSSCU36-KRn|zhM{LR@=wEuYnM~u6njpw6+$ltdFfGG=ZStZ=~3PT zI1Uf1tMl#Hu|BswYxTO!7OIOkU8b4j4SpUa<*B9y?a)r+qulA{E>Fuw0~5QG9a7XE z^hE|JF7teSy^H?d=}4frxxJ?w#Yu0TDcvRXp?O0tOrT(kv`#>7hernU&%kEjw9y`+ zmZOnGqqs_==}XvIWyLoMHqVV{oWBYsK6w&w>o3(;k3{2tY4EmZyk~s>eRg-BWl6f! zLjmep!~PDgGr8R#d35d8@DO`^IKdc|l>jxNH3I?c#uI?Q5M}}HK0zk{Bh@!OpL~;n zzuc=p4sdff;3m@7*-ITyWDS4#y8ez^@cJlve}7c~OTz%~T57|!nJ1}di6)52_CI=u zd7nj-l)t{Mt;qcJcqsiEAa(!(jJsLnK&3v2odZAf+yvfIE5-ykNJijBj5wwCg@1mR zaMXI&z0)?A-byiUSz-3t{KD4@jR(|lCm^PS_QpD_-gWG^ybu_SMu&$-F@Du9JOmXT zGL%ypla`Xg$jX{FeV1fU12)2J*Ji6{U|^p6CM@>0W@U)xlU(>7&GKy6g4u&bm#CH}M|M>#ixIu?P zI3Q?*M@OS$g&B)Xfi+KJL1I*Z7IYQD9P#=!yxBwt?@0o`pzAE4X}wT#1xFDK(&QVT94t6yW8>fKtZ8 zhcLg$!UYGbld6%?_5_&Arx+8d)L%^p)TCN&K}5vqh5C)-3ca(Ty}#2Rs=?Jtf=%u4 z;Y4`TaDnRTK}E_hdd7*UA018AI)6In1hL4$&#?_gVMs)9k3fQ5>gisbmkzFQ)YRy4 zUvr@{36_;5#cp_mE2X?#%ZlyhwH}y7^phLI>^rLj-U$U@JMqsJJu=9A5XvPl5@I>_ z_3PVdcjH%X`VU7%0=7-L$*!ZhVYO5?lNmHomE7MFpqZ9@CRe!9Q7=Oe|G!f|6rp=$ z8HHOwlcz~)<4Uhm2|X5-9|yD)8HH%Q`DpmgdU~4X8EV`gI_v6s5`?#Iaw9}E_O&!s zXKF6(i;JC?l)I7KHYyyj?ZGi&*Rrrs zNbl=y*ZJ4k=qL8`3JSnKV`F0(J>#Od0;3(Hkcn2WU&p(R604`kXyfi~3^$Oj%UIhZ z)3(;u)@I}Uewo$XG#ct0x*~UPkG`z7+DUC26=9*@si8YmAFpL%$A7rRRv#~KtR8SW z%u()`RbrN~xagkOXGWl(k~=Oez23{|MOIgrvHP!ulMhD)MDeH6Pi(hEPtkt8N@OJ-_iNLj z_}3pgJ9RT#Zl6ABc;bY1hTajA9dGD=|1fcFS;NPVu}2=mPBNo zU8mgl{S=CVI)|_jh4Q-h!){u9BprqFeKMB%Xz$IkM3bUx8E&uS^ts*-4hp!8Z1@(Q zoh>Ho`774^Qw)3+Zy2wi4e>`ObI#K8U?(nMTCwZJMZbcn{T~Zmb+zsvXq=ndSN1v) zZDu9@Xt4j?yBo8!vc6~ZYQrqk($T?wgK~Xo!&PiDiX^U!e6|7>8pUEc1>Xz*Qoa&~ zihuq1-#=nx{^!U4{?Whx=D&aRAAi$|UfE zbDRG=+obSH$!jlpbUbSg;`V%LkC&Fc|d%upL_rDHnU+Z$02qnHFrK?yv4^{SRzLek*) z@w+txY%4X-sAoNVNbMP~d4dDnUvmHcnyR2kAsh&M&VQWoJ^aafSD(xodJ5&!hY#0r l75~0j + + + + + +PIP: src/system/piconsole.h File Reference + + + + + + + + + + + + + +

    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    + +
    +
    piconsole.h File Reference
    +
    +
    + +

    Console output class. +More...

    + + + + + +

    +Classes

    class  PIConsole
     Console output class. More...
     
    +

    Detailed Description

    +

    Console output class.

    +
    +
    + + + + diff --git a/pip/doc/html/piconsole_8h.js b/pip/doc/html/piconsole_8h.js new file mode 100644 index 0000000..1995db8 --- /dev/null +++ b/pip/doc/html/piconsole_8h.js @@ -0,0 +1,4 @@ +var piconsole_8h = +[ + [ "PIConsole", "class_p_i_console.html", "class_p_i_console" ] +]; \ No newline at end of file diff --git a/pip/doc/html/piconsole_layout.png b/pip/doc/html/piconsole_layout.png new file mode 100644 index 0000000000000000000000000000000000000000..ad74a90e51122fb9c88e04f48cb5a0df22e01898 GIT binary patch literal 23307 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 literal 0 HcmV?d00001 diff --git a/pip/doc/html/picontainers_8h.html b/pip/doc/html/picontainers_8h.html new file mode 100644 index 0000000..5a50b18 --- /dev/null +++ b/pip/doc/html/picontainers_8h.html @@ -0,0 +1,318 @@ + + + + + + +PIP: src/containers/picontainers.h File Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    + +
    +
    picontainers.h File Reference
    +
    +
    + +

    Generic containers. +More...

    + + + + + + + + + + + + + + + + + +

    +Macros

    #define piForeach(i, c)
     Macro for iterate any container. More...
     
    #define piForeachC(i, c)
     Macro for iterate any container only for read. More...
     
    #define piForeachR(i, c)
     Macro for iterate any container with reverse direction. More...
     
    #define piForeachCR(i, c)
     Macro for iterate any container only for read with reverse direction. More...
     
    #define piBreak
     Macro for break from any piForeach* loop. More...
     
    +

    Detailed Description

    +

    Generic containers.

    +

    Queue container.

    +

    This file declare all containers and useful macros to use them

    +

    This file declare PIQueue

    +

    Macro Definition Documentation

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    #define piForeach( i,
     
    )
    +
    + +

    Macro for iterate any container.

    +

    Use this macros instead of standard "for" to get read/write access to each element of container. Pass direction is direct
    +Example:

    +
    vec << 1 << 2 << 3;
    +
    piForeach (int & i, vec)
    +
    cout << i << ", ";
    +
    // 1, 2, 3,
    +
    piForeach (int & i, vec)
    +
    i++;
    +
    piForeach (int & i, vec)
    +
    cout << i << ", ";
    +
    // 2, 3, 4,
    +
    +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + +
    #define piForeachC( i,
     
    )
    +
    + +

    Macro for iterate any container only for read.

    +

    Use this macros instead of standard "for" to get read access to each element of container. Pass direction is direct
    +Example:

    +
    vec << 1 << 2 << 3;
    +
    piForeachC (int & i, vec)
    +
    cout << i << ", ";
    +
    // 1, 2, 3,
    +
    piForeachC (int & i, vec)
    +
    i++; // ERROR! const iterator
    +
    +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + +
    #define piForeachR( i,
     
    )
    +
    + +

    Macro for iterate any container with reverse direction.

    +

    Use this macros instead of standard "for" to get read/write access to each element of container. Pass direction is reverse
    +Example:

    +
    vec << 1 << 2 << 3;
    +
    piForeachR (int & i, vec)
    +
    cout << i << ", ";
    +
    // 3, 2, 1,
    +
    piForeachR (int & i, vec)
    +
    i++;
    +
    piForeachR (int & i, vec)
    +
    cout << i << ", ";
    +
    // 4, 3, 2,
    +
    +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + +
    #define piForeachCR( i,
     
    )
    +
    + +

    Macro for iterate any container only for read with reverse direction.

    +

    Use this macros instead of standard "for" to get read access to each element of container. Pass direction is reverse
    +Example:

    +
    vec << 1 << 2 << 3;
    +
    piForeachCR (int & i, vec)
    +
    cout << i << ", ";
    +
    // 3, 2, 1,
    +
    piForeachCR (int & i, vec)
    +
    i++; // ERROR! const iterator
    +
    +
    +
    + +
    +
    + + + + +
    #define piBreak
    +
    + +

    Macro for break from any piForeach* loop.

    +
    Warning
    C++ ordinary "break" doesn`t work inside piForeach* loops! Always use "piBreak" instead!
    + +
    +
    +
    +
    + + + + diff --git a/pip/doc/html/picontainers_8h.js b/pip/doc/html/picontainers_8h.js new file mode 100644 index 0000000..48eb636 --- /dev/null +++ b/pip/doc/html/picontainers_8h.js @@ -0,0 +1,8 @@ +var picontainers_8h = +[ + [ "piForeach", "picontainers_8h.html#aa579232460ca92efa5c1befd41d923ba", null ], + [ "piForeachC", "picontainers_8h.html#a807914d038e5a193d2e36b4b82b6df96", null ], + [ "piForeachR", "picontainers_8h.html#a0e968bf591ab05721d5ef2ce201e09ed", null ], + [ "piForeachCR", "picontainers_8h.html#ad2685d4ca04df1f2154844e5984b41d8", null ], + [ "piBreak", "picontainers_8h.html#aa315501e5bd9c279ad09fd39dccdea4d", null ] +]; \ No newline at end of file diff --git a/pip/doc/html/picrc_8h.html b/pip/doc/html/picrc_8h.html new file mode 100644 index 0000000..56cfded --- /dev/null +++ b/pip/doc/html/picrc_8h.html @@ -0,0 +1,128 @@ + + + + + + +PIP: src/math/picrc.h File Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    picrc.h File Reference
    +
    +
    + +

    CRC checksum calculator. +More...

    +

    Detailed Description

    +

    CRC checksum calculator.

    +
    +
    + + + + diff --git a/pip/doc/html/pideque_8h.html b/pip/doc/html/pideque_8h.html new file mode 100644 index 0000000..ca19dcd --- /dev/null +++ b/pip/doc/html/pideque_8h.html @@ -0,0 +1,129 @@ + + + + + + +PIP: src/containers/pideque.h File Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    pideque.h File Reference
    +
    +
    + +

    Dynamic array of any type. +More...

    +

    Detailed Description

    +

    Dynamic array of any type.

    +

    This file declares PIDeque

    +
    +
    + + + + diff --git a/pip/doc/html/pidiagnostics_8h.html b/pip/doc/html/pidiagnostics_8h.html new file mode 100644 index 0000000..9324d8a --- /dev/null +++ b/pip/doc/html/pidiagnostics_8h.html @@ -0,0 +1,137 @@ + + + + + + +PIP: src/io/pidiagnostics.h File Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    + +
    +
    pidiagnostics.h File Reference
    +
    +
    + +

    Connection quality diagnostics. +More...

    + + + + + +

    +Classes

    class  PIDiagnostics
     Connection quality diagnostics. More...
     
    +

    Detailed Description

    +

    Connection quality diagnostics.

    +
    +
    + + + + diff --git a/pip/doc/html/piethernet_8h.html b/pip/doc/html/piethernet_8h.html new file mode 100644 index 0000000..5f7ace4 --- /dev/null +++ b/pip/doc/html/piethernet_8h.html @@ -0,0 +1,143 @@ + + + + + + +PIP: src/io/piethernet.h File Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    + +
    +
    piethernet.h File Reference
    +
    +
    + +

    Ethernet device. +More...

    + + + + + + + + + + + +

    +Classes

    class  PIEthernet
     Ethernet device. More...
     
    struct  PIEthernet::Interface
     Network interface descriptor. More...
     
    class  PIEthernet::InterfaceList
     Array of Interface with some features. More...
     
    +

    Detailed Description

    +

    Ethernet device.

    +
    +
    + + + + diff --git a/pip/doc/html/piethernet_8h.js b/pip/doc/html/piethernet_8h.js new file mode 100644 index 0000000..46aecd4 --- /dev/null +++ b/pip/doc/html/piethernet_8h.js @@ -0,0 +1,6 @@ +var piethernet_8h = +[ + [ "PIEthernet", "class_p_i_ethernet.html", "class_p_i_ethernet" ], + [ "Interface", "struct_p_i_ethernet_1_1_interface.html", "struct_p_i_ethernet_1_1_interface" ], + [ "InterfaceList", "class_p_i_ethernet_1_1_interface_list.html", "class_p_i_ethernet_1_1_interface_list" ] +]; \ No newline at end of file diff --git a/pip/doc/html/pievaluator_8h.html b/pip/doc/html/pievaluator_8h.html new file mode 100644 index 0000000..344354a --- /dev/null +++ b/pip/doc/html/pievaluator_8h.html @@ -0,0 +1,137 @@ + + + + + + +PIP: src/math/pievaluator.h File Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    + +
    +
    pievaluator.h File Reference
    +
    +
    + +

    Mathematic expressions calculator. +More...

    + + + + + +

    +Classes

    class  PIEvaluator
     This class provide mathematical evaluations of custom expression. More...
     
    +

    Detailed Description

    +

    Mathematic expressions calculator.

    +
    +
    + + + + diff --git a/pip/doc/html/pievaluator_8h.js b/pip/doc/html/pievaluator_8h.js new file mode 100644 index 0000000..8bcad13 --- /dev/null +++ b/pip/doc/html/pievaluator_8h.js @@ -0,0 +1,4 @@ +var pievaluator_8h = +[ + [ "PIEvaluator", "class_p_i_evaluator.html", "class_p_i_evaluator" ] +]; \ No newline at end of file diff --git a/pip/doc/html/pifile_8h.html b/pip/doc/html/pifile_8h.html new file mode 100644 index 0000000..1ffb3b2 --- /dev/null +++ b/pip/doc/html/pifile_8h.html @@ -0,0 +1,137 @@ + + + + + + +PIP: src/io/pifile.h File Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    + +
    +
    pifile.h File Reference
    +
    +
    + +

    Local file. +More...

    + + + + + +

    +Classes

    class  PIFile
     Local file. More...
     
    +

    Detailed Description

    +

    Local file.

    +
    +
    + + + + diff --git a/pip/doc/html/piincludes_8h.html b/pip/doc/html/piincludes_8h.html new file mode 100644 index 0000000..d38ea5a --- /dev/null +++ b/pip/doc/html/piincludes_8h.html @@ -0,0 +1,960 @@ + + + + + + +PIP: src/core/piincludes.h File Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    + +
    +
    piincludes.h File Reference
    +
    +
    + +

    Global includes of PIP. +More...

    + + + + + + + + +

    +Classes

    class  PIFlags< Enum >
     This class used as container for bit flags. More...
     
    class  PICout
     Class for formatted output similar std::cout. More...
     
    + + + + +

    +Namespaces

     PICoutManipulators
     Namespace contains enums controlled PICout.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Macros

    +#define PIP_VERSION   ((PIP_VERSION_MAJOR << 16) | (PIP_VERSION_MINOR < 8) | PIP_VERSION_REVISION)
     Version of PIP in hex - 0x##(Major)##(Minor)##(Revision)
     
    +#define PIP_VERSION_MAJOR
     Major value of PIP version.
     
    +#define PIP_VERSION_MINOR
     Minor value of PIP version.
     
    +#define PIP_VERSION_REVISION
     Revision value of PIP version.
     
    +#define PIP_VERSION_SUFFIX
     Suffix of PIP version.
     
    +#define PIP_DEBUG
     Macro is defined when compile-time debug is enabled.
     
    +#define WINDOWS
     Macro is defined when host is any Windows.
     
    +#define QNX
     Macro is defined when host is QNX.
     
    +#define FREE_BSD
     Macro is defined when host is FreeBSD.
     
    +#define MAC_OS
     Macro is defined when host is Mac OS.
     
    +#define ANDROID
     Macro is defined when host is Android.
     
    +#define LINUX
     Macro is defined when host is any Linux.
     
    +#define CC_GCC
     Macro is defined when compiler is GCC or MinGW.
     
    +#define HAS_LOCALE
     Macro is defined when PIP is decided that host is support language.
     
    +#define CC_VC
     Macro is defined when compiler is Visual Studio.
     
    +#define CC_OTHER
     Macro is defined when compiler is unknown.
     
    +#define PIP_TIMER_RT
     Macro is defined when PIP use "rt" library for timers implementation.
     
    +#define PIP_CONTAINERS_STL
     Define this macro to use STL implementation of containers, else PIP implementation will be used.
     
    +#define CC_OTHER
     Macro is defined when compiler is unknown.
     
    +#define FOREVER   for (;;)
     Macro used for infinite loop.
     
    +#define FOREVER_WAIT   FOREVER msleep(1);
     Macro used for infinite wait.
     
    +#define WAIT_FOREVER   FOREVER msleep(1);
     Macro used for infinite wait.
     
    +#define piCout
     Macro used for conditional (piDebug) output to PICout.
     
    + + + + + + + + + + + + + +

    +Enumerations

    enum  PICoutManipulators::PICoutSpecialChar {
    +  PICoutManipulators::Null, +PICoutManipulators::NewLine, +PICoutManipulators::Tab, +PICoutManipulators::Esc, +
    +  PICoutManipulators::Quote +
    + }
     Enum contains special characters. More...
     
    enum  PICoutManipulators::PICoutAction {
    +  PICoutManipulators::Flush, +PICoutManipulators::Backspace, +PICoutManipulators::ShowCursor, +PICoutManipulators::HideCursor, +
    +  PICoutManipulators::ClearScreen, +PICoutManipulators::SaveContol, +PICoutManipulators::RestoreControl +
    + }
     Enum contains immediate action. More...
     
    enum  PICoutManipulators::PICoutControl {
    +  PICoutManipulators::AddNone = 0x0, +PICoutManipulators::AddSpaces = 0x1, +PICoutManipulators::AddNewLine = 0x2, +PICoutManipulators::AddQuotes = 0x4, +
    +  PICoutManipulators::AddAll = 0xFFFFFFFF +
    + }
     Enum contains control of PICout. More...
     
    enum  PICoutManipulators::PICoutFormat {
    +  PICoutManipulators::Bin = 0x01, +PICoutManipulators::Oct = 0x02, +PICoutManipulators::Dec = 0x04, +PICoutManipulators::Hex = 0x08, +
    +  PICoutManipulators::Bold = 0x10 +, PICoutManipulators::Underline = 0x80, +PICoutManipulators::Blink = 0x100, +PICoutManipulators::Black = 0x400, +
    +  PICoutManipulators::Red = 0x800, +PICoutManipulators::Green = 0x1000, +PICoutManipulators::Blue = 0x2000, +PICoutManipulators::Yellow = 0x4000, +
    +  PICoutManipulators::Magenta = 0x8000, +PICoutManipulators::Cyan = 0x10000, +PICoutManipulators::White = 0x20000, +PICoutManipulators::BackBlack = 0x40000, +
    +  PICoutManipulators::BackRed = 0x80000, +PICoutManipulators::BackGreen = 0x100000, +PICoutManipulators::BackBlue = 0x200000, +PICoutManipulators::BackYellow = 0x400000, +
    +  PICoutManipulators::BackMagenta = 0x800000, +PICoutManipulators::BackCyan = 0x1000000, +PICoutManipulators::BackWhite = 0x2000000, +PICoutManipulators::Default = 0x4000000 +
    + }
     Enum contains output format. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    template<typename T >
    void piSwap (T &f, T &s)
     Templated function for swap two values. More...
     
    template<typename T >
    void piSwapBinary (T &f, T &s)
     Templated function for swap two values without "=". More...
     
    template<typename T >
    int piRound (const T &v)
     Templated function return round of float falue. More...
     
    template<typename T >
    int piFloor (const T &v)
     Templated function return floor of float falue. More...
     
    template<typename T >
    int piCeil (const T &v)
     Templated function return ceil of float falue. More...
     
    template<typename T >
    piAbs (const T &v)
     Templated function return absolute of numeric falue. More...
     
    template<typename T >
    piMin (const T &f, const T &s)
     Templated function return minimum of two values. More...
     
    template<typename T >
    piMin (const T &f, const T &s, const T &t)
     Templated function return minimum of tree values. More...
     
    template<typename T >
    piMax (const T &f, const T &s)
     Templated function return maximum of two values. More...
     
    template<typename T >
    piMax (const T &f, const T &s, const T &t)
     Templated function return maximum of tree values. More...
     
    template<typename T >
    piClamp (const T &v, const T &min, const T &max)
     Templated function return clamped value. More...
     
    +void piLetobe (void *data, int size)
     Function inverse byte order in memory block.
     
    +template<typename T >
    void piLetobe (T *v)
     Templated function that inverse byte order of value "v".
     
    template<typename T >
    piLetobe (const T &v)
     Templated function that returns "v" with inversed byte order. More...
     
    ushort letobe_s (ushort v)
     Use piLetobe() instead of this function. More...
     
    uint letobe_i (uint v)
     Use piLetobe() instead of this function. More...
     
    +PIString errorString ()
     Return readable error description in format "code <number> - <description>".
     
    +PIString PIPVersion ()
     Return readable version of PIP.
     
    + + + + +

    +Variables

    +bool piDebug
     global variable enabling output to piCout
     
    +

    Detailed Description

    +

    Global includes of PIP.

    +

    This file include all needed system headers, STL and declare many useful macros and functions

    +

    Function Documentation

    + +
    +
    +
    +template<typename T >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void piSwap (T & f,
    T & s 
    )
    +
    +inline
    +
    + +

    Templated function for swap two values.

    +

    Example:
    +

    int v1 = 1, v2 = 2;
    +
    piCout << v1 << v2; // 1 2
    +
    piSwap<int>(v1, v2);
    +
    piCout << v1 << v2; // 2 1
    +
    +
    +
    + +
    +
    +
    +template<typename T >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void piSwapBinary (T & f,
    T & s 
    )
    +
    +inline
    +
    + +

    Templated function for swap two values without "=".

    +

    Example:
    +

    +
    +
    + +
    +
    +
    +template<typename T >
    + + + + + +
    + + + + + + + + +
    int piRound (const T & v)
    +
    +inline
    +
    + +

    Templated function return round of float falue.

    +

    Round is the nearest integer value
    +There are some macros:

      +
    • piRoundf for "float"
    • +
    • piRoundd for "double"
    • +
    +

    Example:

    piCout << piRoundf(0.6f) << piRoundd(0.2); // 1 0
    +
    piCout << piRoundf(-0.6f) << piRoundd(-0.2); // -1 0
    +
    +
    +
    + +
    +
    +
    +template<typename T >
    + + + + + +
    + + + + + + + + +
    int piFloor (const T & v)
    +
    +inline
    +
    + +

    Templated function return floor of float falue.

    +

    Floor is the largest integer that is not greater than value
    +There are some macros:

      +
    • piFloorf for "float"
    • +
    • piFloord for "double"
    • +
    +

    Example:

    piCout << piFloorf(0.6f) << piFloorf(0.2); // 0 0
    +
    piCout << piFloorf(-0.6f) << piFloorf(-0.2f); // -1 -1
    +
    +
    +
    + +
    +
    +
    +template<typename T >
    + + + + + +
    + + + + + + + + +
    int piCeil (const T & v)
    +
    +inline
    +
    + +

    Templated function return ceil of float falue.

    +

    Ceil is the smallest integer that is not less than value
    +There are some macros:

      +
    • piCeilf for "float"
    • +
    • piCeild for "double"
    • +
    +

    Example:

    piCout << piCeilf(0.6f) << piCeilf(0.2); // 1 1
    +
    piCout << piCeilf(-0.6f) << piCeilf(-0.2f); // 0 0
    +
    +
    +
    + +
    +
    +
    +template<typename T >
    + + + + + +
    + + + + + + + + +
    T piAbs (const T & v)
    +
    +inline
    +
    + +

    Templated function return absolute of numeric falue.

    +

    Absolute is the positive or equal 0 value
    +There are some macros:

      +
    • piAbss for "short"
    • +
    • piAbsi for "int"
    • +
    • piAbsl for "long"
    • +
    • piAbsll for "llong"
    • +
    • piAbsf for "float"
    • +
    • piAbsd for "double"
    • +
    +

    Example:

    piCout << piAbsi(5) << piAbsi(-11); // 5 11
    +
    piCout << piAbsf(-0.6f) << piAbsf(-0.2f); // 0.6 0.2
    +
    +
    +
    + +
    +
    +
    +template<typename T >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    T piMin (const T & f,
    const T & s 
    )
    +
    +inline
    +
    + +

    Templated function return minimum of two values.

    +

    There are some macros:

      +
    • piMins for "short"
    • +
    • piMini for "int"
    • +
    • piMinl for "long"
    • +
    • piMinll for "llong"
    • +
    • piMinf for "float"
    • +
    • piMind for "double"
    • +
    +

    Example:

    piCout << piMini(5, 1); // 1
    +
    piCout << piMinf(-0.6f, -0.2f); // -0.6
    +
    +
    +
    + +
    +
    +
    +template<typename T >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    T piMin (const T & f,
    const T & s,
    const T & t 
    )
    +
    +inline
    +
    + +

    Templated function return minimum of tree values.

    +

    There are some macros:

      +
    • piMins for "short"
    • +
    • piMini for "int"
    • +
    • piMinl for "long"
    • +
    • piMinll for "llong"
    • +
    • piMinf for "float"
    • +
    • piMind for "double"
    • +
    +

    Example:

    piCout << piMini(5, 1, -1); // -1
    +
    piCout << piMinf(-0.6f, -0.2f, 1.f); // -0.6
    +
    +
    +
    + +
    +
    +
    +template<typename T >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    T piMax (const T & f,
    const T & s 
    )
    +
    +inline
    +
    + +

    Templated function return maximum of two values.

    +

    There are some macros:

      +
    • piMaxs for "short"
    • +
    • piMaxi for "int"
    • +
    • piMaxl for "long"
    • +
    • piMaxll for "llong"
    • +
    • piMaxf for "float"
    • +
    • piMaxd for "double"
    • +
    +

    Example:

    piCout << piMaxi(5, 1); // 5
    +
    piCout << piMaxf(-0.6f, -0.2f); // -0.2
    +
    +
    +
    + +
    +
    +
    +template<typename T >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    T piMax (const T & f,
    const T & s,
    const T & t 
    )
    +
    +inline
    +
    + +

    Templated function return maximum of tree values.

    +

    There are some macros:

      +
    • piMaxs for "short"
    • +
    • piMaxi for "int"
    • +
    • piMaxl for "long"
    • +
    • piMaxll for "llong"
    • +
    • piMaxf for "float"
    • +
    • piMaxd for "double"
    • +
    +

    Example:

    piCout << piMaxi(5, 1, -1); // 5
    +
    piCout << piMaxf(-0.6f, -0.2f, 1.f); // 1
    +
    +
    +
    + +
    +
    +
    +template<typename T >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    T piClamp (const T & v,
    const T & min,
    const T & max 
    )
    +
    +inline
    +
    + +

    Templated function return clamped value.

    +

    Clamped is the not greater than "max" and not lesser than "min" value
    +There are some macros:

      +
    • piClamps for "short"
    • +
    • piClampi for "int"
    • +
    • piClampl for "long"
    • +
    • piClampll for "llong"
    • +
    • piClampf for "float"
    • +
    • piClampd for "double"
    • +
    +

    Example:

    piCout << piClampf(-5, -3, 2); // -3
    +
    piCout << piClampf(1, -3, 2); // 1
    +
    piCout << piClampf(5, -3, 2); // 2
    +
    +
    +
    + +
    +
    +
    +template<typename T >
    + + + + + +
    + + + + + + + + +
    T piLetobe (const T & v)
    +
    +inline
    +
    + +

    Templated function that returns "v" with inversed byte order.

    +

    This function used to convert values between little and big endian
    +There are some macros:

      +
    • piLetobes for "ushort"
    • +
    • piLetobei for "uint"
    • +
    • piLetobel for "ulong"
    • +
    • piLetobell for "ullong"
    • +
    +

    Example:

    +
    +
    + +
    +
    + + + + + + + + +
    ushort letobe_s (ushort v)
    +
    + +

    Use piLetobe() instead of this function.

    +
    Deprecated:
    + +
    +
    + +
    +
    + + + + + + + + +
    uint letobe_i (uint v)
    +
    + +

    Use piLetobe() instead of this function.

    +
    Deprecated:
    + +
    +
    +
    +
    + + + + diff --git a/pip/doc/html/piincludes_8h.js b/pip/doc/html/piincludes_8h.js new file mode 100644 index 0000000..da9ba9a --- /dev/null +++ b/pip/doc/html/piincludes_8h.js @@ -0,0 +1,97 @@ +var piincludes_8h = +[ + [ "PIFlags", "class_p_i_flags.html", "class_p_i_flags" ], + [ "PICout", "class_p_i_cout.html", "class_p_i_cout" ], + [ "PIP_VERSION", "piincludes_8h.html#acbb7adb82bd5dd3060e2ad0eb604b1bf", null ], + [ "PIP_VERSION_MAJOR", "piincludes_8h.html#a8883b51de92fb8a549d8e78d3db33e59", null ], + [ "PIP_VERSION_MINOR", "piincludes_8h.html#a6feaccd6b29e1709448f9adbae63cfef", null ], + [ "PIP_VERSION_REVISION", "piincludes_8h.html#a1eab67c2ab5528a13d5a071678a08bc6", null ], + [ "PIP_VERSION_SUFFIX", "piincludes_8h.html#aa7382f8ef6d40b57db8a29a3ae810feb", null ], + [ "PIP_DEBUG", "piincludes_8h.html#a7a5fe60328e1cb0dc0f508506afb4ae9", null ], + [ "WINDOWS", "piincludes_8h.html#a987b73d7cc6da72732af75c5d7872d29", null ], + [ "QNX", "piincludes_8h.html#a167ea11947b8e4a492b2366ca250dbc0", null ], + [ "FREE_BSD", "piincludes_8h.html#a436564e12a6f982e63f9a76357146ad6", null ], + [ "MAC_OS", "piincludes_8h.html#a92897222c2229040c842e33404deea72", null ], + [ "ANDROID", "piincludes_8h.html#a84b6d92b7538d9eb6d3cc527c0450558", null ], + [ "LINUX", "piincludes_8h.html#a157a956e14c5c44b3f73ef23a4776f64", null ], + [ "CC_GCC", "piincludes_8h.html#ac1b21a2fcec2c0b8a3c5a463d9296979", null ], + [ "HAS_LOCALE", "piincludes_8h.html#ad5c40e21f5f16ceeb1b98ee2de82a612", null ], + [ "CC_VC", "piincludes_8h.html#a9e439bece2ee7f7fef34febe9b317a8f", null ], + [ "CC_OTHER", "piincludes_8h.html#a572d4f1b7fe8cb972e492e9d7fd83cd5", null ], + [ "PIP_TIMER_RT", "piincludes_8h.html#ab866c362b595e2b327a450f6593f639a", null ], + [ "PIP_CONTAINERS_STL", "piincludes_8h.html#a3806a9aff68b7e2620f37a79e12fb850", null ], + [ "CC_OTHER", "piincludes_8h.html#a572d4f1b7fe8cb972e492e9d7fd83cd5", null ], + [ "FOREVER", "piincludes_8h.html#a75c828ed6c02fcd44084e67a032e422c", null ], + [ "FOREVER_WAIT", "piincludes_8h.html#a39da857669ed22c419a967d5c9acae77", null ], + [ "WAIT_FOREVER", "piincludes_8h.html#ac89d2c332821be06166c210249b671e7", null ], + [ "piCout", "piincludes_8h.html#ad21862cbba89aead064fbef4c825030e", null ], + [ "piCoutObj", "piincludes_8h.html#a722b67a967e55918f6921de66ecffce9", null ], + [ "PICoutSpecialChar", "piincludes_8h.html#a66678520ac7701c016e3e90e17a7dfa2", [ + [ "Null", "piincludes_8h.html#a66678520ac7701c016e3e90e17a7dfa2a29235e52395eb8951ae13b4136252432", null ], + [ "NewLine", "piincludes_8h.html#a66678520ac7701c016e3e90e17a7dfa2a85451af3cb792587c99d576ae3807a67", null ], + [ "Tab", "piincludes_8h.html#a66678520ac7701c016e3e90e17a7dfa2a9d183ab2eef93987077269cad1047bcb", null ], + [ "Esc", "piincludes_8h.html#a66678520ac7701c016e3e90e17a7dfa2ac32518c74b162effc95d1afff37b4a81", null ], + [ "Quote", "piincludes_8h.html#a66678520ac7701c016e3e90e17a7dfa2adb05a3816f5bd55128af99263b94e15e", null ] + ] ], + [ "PICoutAction", "piincludes_8h.html#a38d041a4e2de4ca6af939837475e9387", [ + [ "Flush", "piincludes_8h.html#a38d041a4e2de4ca6af939837475e9387ab830c1a561e2cabe9e7b937a05d04c9f", null ], + [ "Backspace", "piincludes_8h.html#a38d041a4e2de4ca6af939837475e9387a0c59680927066a05eddf8e3ee61c802d", null ], + [ "ShowCursor", "piincludes_8h.html#a38d041a4e2de4ca6af939837475e9387a03c25915c04fbc819d7267022e49844a", null ], + [ "HideCursor", "piincludes_8h.html#a38d041a4e2de4ca6af939837475e9387add30539d8cc3ea1f1dcc49a0d864f877", null ], + [ "ClearScreen", "piincludes_8h.html#a38d041a4e2de4ca6af939837475e9387a811e1fa9e5deb33af8bcef5186b482bb", null ], + [ "SaveContol", "piincludes_8h.html#a38d041a4e2de4ca6af939837475e9387ab016f563340e366b6685045e028f2b0f", null ], + [ "RestoreControl", "piincludes_8h.html#a38d041a4e2de4ca6af939837475e9387a79f6f33c2e149fb3903625c855292600", null ] + ] ], + [ "PICoutControl", "piincludes_8h.html#a98e765b109cfa5b09ec3b111c449ac87", [ + [ "AddNone", "piincludes_8h.html#a98e765b109cfa5b09ec3b111c449ac87a9744aa2b16aabc01f70ef53e8a7db7f8", null ], + [ "AddSpaces", "piincludes_8h.html#a98e765b109cfa5b09ec3b111c449ac87ae5fee52fe6ad0dae9a5b953ff3e40152", null ], + [ "AddNewLine", "piincludes_8h.html#a98e765b109cfa5b09ec3b111c449ac87a14809fb1b24466983535797f6ed5971c", null ], + [ "AddQuotes", "piincludes_8h.html#a98e765b109cfa5b09ec3b111c449ac87a383bc0cbaca2fb5d5cd98a1e9c3f59ca", null ], + [ "AddAll", "piincludes_8h.html#a98e765b109cfa5b09ec3b111c449ac87a51c3de43daff16e88090f6ccc3eb30b2", null ] + ] ], + [ "PICoutFormat", "piincludes_8h.html#a4d8fa322c1a8b3fa285759056aae1b2a", [ + [ "Bin", "piincludes_8h.html#a4d8fa322c1a8b3fa285759056aae1b2aa29a58835892a21d07f3b0dc97ef4f44e", null ], + [ "Oct", "piincludes_8h.html#a4d8fa322c1a8b3fa285759056aae1b2aaad2a72f3b7eada2a8360bdcf11cbfb80", null ], + [ "Dec", "piincludes_8h.html#a4d8fa322c1a8b3fa285759056aae1b2aa2169666f4b740a04e641ab8c6ca438f0", null ], + [ "Hex", "piincludes_8h.html#a4d8fa322c1a8b3fa285759056aae1b2aadc3f097ce8d6fafc80018c2df3afe2b5", null ], + [ "Bold", "piincludes_8h.html#a4d8fa322c1a8b3fa285759056aae1b2aa527c1b697df8b9dd74ba337663375149", null ], + [ "Underline", "piincludes_8h.html#a4d8fa322c1a8b3fa285759056aae1b2aa221437253ff3dc9de5d3762117f5c329", null ], + [ "Blink", "piincludes_8h.html#a4d8fa322c1a8b3fa285759056aae1b2aa8b0945213fe7cca2148bd54938fa16c3", null ], + [ "Black", "piincludes_8h.html#a4d8fa322c1a8b3fa285759056aae1b2aa405fba724b4f9bb57486ef4a328c23ec", null ], + [ "Red", "piincludes_8h.html#a4d8fa322c1a8b3fa285759056aae1b2aa26422e0754e279717e30f36fc9355d39", null ], + [ "Green", "piincludes_8h.html#a4d8fa322c1a8b3fa285759056aae1b2aaf1abd54dd4e1ce4d273e72bf705b276f", null ], + [ "Blue", "piincludes_8h.html#a4d8fa322c1a8b3fa285759056aae1b2aa26854a71d7f1dd9439e0114d3961c1e4", null ], + [ "Yellow", "piincludes_8h.html#a4d8fa322c1a8b3fa285759056aae1b2aac9ad26d78d153d33986dd243d79e6704", null ], + [ "Magenta", "piincludes_8h.html#a4d8fa322c1a8b3fa285759056aae1b2aa7b9abda5e906d86c86d0e48c68608f4f", null ], + [ "Cyan", "piincludes_8h.html#a4d8fa322c1a8b3fa285759056aae1b2aac1ccdb56cc6bfa3cbe21d9edce17bed4", null ], + [ "White", "piincludes_8h.html#a4d8fa322c1a8b3fa285759056aae1b2aaec78b8c3f9b9c708d6c5a60021c0df51", null ], + [ "BackBlack", "piincludes_8h.html#a4d8fa322c1a8b3fa285759056aae1b2aa1f0b497e6f2135f149808e108f25b1d4", null ], + [ "BackRed", "piincludes_8h.html#a4d8fa322c1a8b3fa285759056aae1b2aa25a764174c876db1fdfa053435624d12", null ], + [ "BackGreen", "piincludes_8h.html#a4d8fa322c1a8b3fa285759056aae1b2aa0056f6bdb9e774d1c251baf736545741", null ], + [ "BackBlue", "piincludes_8h.html#a4d8fa322c1a8b3fa285759056aae1b2aaecc0d0c7be125b3368906502c0e0b355", null ], + [ "BackYellow", "piincludes_8h.html#a4d8fa322c1a8b3fa285759056aae1b2aa0ed38ef4734192d2772e0e07bd389dec", null ], + [ "BackMagenta", "piincludes_8h.html#a4d8fa322c1a8b3fa285759056aae1b2aa21b89f914b3f779f5eefe70a99270471", null ], + [ "BackCyan", "piincludes_8h.html#a4d8fa322c1a8b3fa285759056aae1b2aa585ef724bf93605bbaa3a7e582e9669b", null ], + [ "BackWhite", "piincludes_8h.html#a4d8fa322c1a8b3fa285759056aae1b2aa5534e933dca8208950b17034672a1ca7", null ], + [ "Default", "piincludes_8h.html#a4d8fa322c1a8b3fa285759056aae1b2aa651156cbea6768802eb95176611da012", null ] + ] ], + [ "piSwap", "piincludes_8h.html#acdace86016235bb97019f0691fb0b2ce", null ], + [ "piSwapBinary", "piincludes_8h.html#a077c15d518abc4962091fa666c4bedda", null ], + [ "piRound", "piincludes_8h.html#a983fb6261220848dead0db5ffba95071", null ], + [ "piFloor", "piincludes_8h.html#ab9e59a89deba3a70f6a7ce9e746eadc6", null ], + [ "piCeil", "piincludes_8h.html#a4956481d8bee1a43e62ce8b1489b72b0", null ], + [ "piAbs", "piincludes_8h.html#a69a3e3d862d6b51feaca8d27686dd876", null ], + [ "piMin", "piincludes_8h.html#afc6d1b1ff01ad00cda9d0df5e8dbf85f", null ], + [ "piMin", "piincludes_8h.html#a342413b3c07aed06a22289a9e0daaead", null ], + [ "piMax", "piincludes_8h.html#a3b04f3381ca3235a4fe575b4867263c6", null ], + [ "piMax", "piincludes_8h.html#a291a707199f16a78fe41d79a9b89bc00", null ], + [ "piClamp", "piincludes_8h.html#a9269f3c0357a9c7e33c8c5f346c47309", null ], + [ "piLetobe", "piincludes_8h.html#abc830007b90d3beea81c0773811dbc9e", null ], + [ "piLetobe", "piincludes_8h.html#a1de16289b486990a4af21b1faad08e0e", null ], + [ "piLetobe", "piincludes_8h.html#a142038da46a86ef1fc1ab52f57c21010", null ], + [ "letobe_s", "piincludes_8h.html#aec6bba617007bb4636bbef74038cd09a", null ], + [ "letobe_i", "piincludes_8h.html#a2107d4b68fdcfc213defacffefbc6d03", null ], + [ "errorString", "piincludes_8h.html#a0570da4d19817e08dcdd2490308c77c5", null ], + [ "PIPVersion", "piincludes_8h.html#aeb9599e6d2eecbf56d0bf78ec7d07ddf", null ], + [ "piDebug", "piincludes_8h.html#a4f24177400b625bdd603032fa6e2e14a", null ] +]; \ No newline at end of file diff --git a/pip/doc/html/piinit_8h.html b/pip/doc/html/piinit_8h.html new file mode 100644 index 0000000..c535418 --- /dev/null +++ b/pip/doc/html/piinit_8h.html @@ -0,0 +1,128 @@ + + + + + + +PIP: src/core/piinit.h File Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    piinit.h File Reference
    +
    +
    + +

    Initialization. +More...

    +

    Detailed Description

    +

    Initialization.

    +
    +
    + + + + diff --git a/pip/doc/html/piiodevice_8h.html b/pip/doc/html/piiodevice_8h.html new file mode 100644 index 0000000..aa16f21 --- /dev/null +++ b/pip/doc/html/piiodevice_8h.html @@ -0,0 +1,137 @@ + + + + + + +PIP: src/io/piiodevice.h File Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    + +
    +
    piiodevice.h File Reference
    +
    +
    + +

    Abstract input/output device. +More...

    + + + + + +

    +Classes

    class  PIIODevice
     Base class for input/output classes. More...
     
    +

    Detailed Description

    +

    Abstract input/output device.

    +
    +
    + + + + diff --git a/pip/doc/html/piiodevice_8h.js b/pip/doc/html/piiodevice_8h.js new file mode 100644 index 0000000..b43f426 --- /dev/null +++ b/pip/doc/html/piiodevice_8h.js @@ -0,0 +1,6 @@ +var piiodevice_8h = +[ + [ "PIIODevice", "class_p_i_i_o_device.html", "class_p_i_i_o_device" ], + [ "REGISTER_DEVICE", "piiodevice_8h.html#a672a05d4391737b8fecd4524f1a47bda", null ], + [ "PIIODEVICE", "piiodevice_8h.html#a5adabd429443716b75771317ec43301b", null ] +]; \ No newline at end of file diff --git a/pip/doc/html/pikbdlistener_8h.html b/pip/doc/html/pikbdlistener_8h.html new file mode 100644 index 0000000..65d0150 --- /dev/null +++ b/pip/doc/html/pikbdlistener_8h.html @@ -0,0 +1,137 @@ + + + + + + +PIP: src/system/pikbdlistener.h File Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    + +
    +
    pikbdlistener.h File Reference
    +
    +
    + +

    Keyboard console input listener. +More...

    + + + + + +

    +Classes

    class  PIKbdListener
     Keyboard console input listener. More...
     
    +

    Detailed Description

    +

    Keyboard console input listener.

    +
    +
    + + + + diff --git a/pip/doc/html/pikbdlistener_8h.js b/pip/doc/html/pikbdlistener_8h.js new file mode 100644 index 0000000..07ffc64 --- /dev/null +++ b/pip/doc/html/pikbdlistener_8h.js @@ -0,0 +1,4 @@ +var pikbdlistener_8h = +[ + [ "PIKbdListener", "class_p_i_kbd_listener.html", "class_p_i_kbd_listener" ] +]; \ No newline at end of file diff --git a/pip/doc/html/pimap_8h.html b/pip/doc/html/pimap_8h.html new file mode 100644 index 0000000..fac8c13 --- /dev/null +++ b/pip/doc/html/pimap_8h.html @@ -0,0 +1,129 @@ + + + + + + +PIP: src/containers/pimap.h File Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    pimap.h File Reference
    +
    +
    + +

    Associative array with custom types of key and value. +More...

    +

    Detailed Description

    +

    Associative array with custom types of key and value.

    +

    This file declares PIMap

    +
    +
    + + + + diff --git a/pip/doc/html/pimath_8h.html b/pip/doc/html/pimath_8h.html new file mode 100644 index 0000000..41d9b4a --- /dev/null +++ b/pip/doc/html/pimath_8h.html @@ -0,0 +1,294 @@ + + + + + + +PIP: src/math/pimath.h File Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    + +
    +
    pimath.h File Reference
    +
    +
    + +

    Many mathematical functions and classes. +More...

    + + + + + +

    +Classes

    struct  TransferFunction
     Differential evaluations. More...
     
    + + + + + + + + + + + + + +

    +Macros

    #define PIMV_FOR(v, s)   for (uint v = s; v < Size; ++v)
     Vector templated. More...
     
    #define PIMM_FOR(r, c)   for (uint c = 0; c < Cols; ++c) { for (uint r = 0; r < Rows; ++r) {
     Matrix templated. More...
     
    #define PIMV_FOR(v, s)   for (uint v = s; v < size_; ++v)
     Vector templated. More...
     
    #define PIMM_FOR(c, r)   for (uint c = 0; c < cols_; ++c) { for (uint r = 0; r < rows_; ++r) {
     Matrix templated. More...
     
    + + + + + + + + + + + + + + + + + +

    +Functions

    +template<uint CR, uint Rows0, uint Cols1, typename Type >
    PIMathMatrixT< Rows0, Cols1, Type > operator* (const PIMathMatrixT< Rows0, CR, Type > &fm, const PIMathMatrixT< CR, Cols1, Type > &sm)
     Multiply matrices {Rows0 x CR} on {CR x Cols1}, result is {Rows0 x Cols1}.
     
    +template<uint Cols, uint Rows, typename Type >
    PIMathVectorT< Cols, Type > operator* (const PIMathMatrixT< Rows, Cols, Type > &fm, const PIMathVectorT< Rows, Type > &sv)
     Multiply matrix {Rows x Cols} on vector {Rows}, result is vector {Cols}.
     
    +template<typename Type >
    PIMathMatrix< Type > operator* (const PIMathMatrix< Type > &fm, const PIMathMatrix< Type > &sm)
     Multiply matrices {CR x Rows0} on {Cols1 x CR}, result is {Cols1 x Rows0}.
     
    +template<typename Type >
    PIMathVector< Type > operator* (const PIMathMatrix< Type > &fm, const PIMathVector< Type > &sv)
     Multiply matrix {Cols x Rows} on vector {Cols}, result is vector {Rows}.
     
    +

    Detailed Description

    +

    Many mathematical functions and classes.

    +

    Macro Definition Documentation

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    #define PIMV_FOR( v,
     
    )   for (uint v = s; v < Size; ++v)
    +
    + +

    Vector templated.

    +

    Vector.

    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + +
    #define PIMM_FOR( r,
     
    )   for (uint c = 0; c < Cols; ++c) { for (uint r = 0; r < Rows; ++r) {
    +
    + +

    Matrix templated.

    +

    Matrix.

    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + +
    #define PIMV_FOR( v,
     
    )   for (uint v = s; v < size_; ++v)
    +
    + +

    Vector templated.

    +

    Vector.

    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + +
    #define PIMM_FOR( c,
     
    )   for (uint c = 0; c < cols_; ++c) { for (uint r = 0; r < rows_; ++r) {
    +
    + +

    Matrix templated.

    +

    Matrix.

    + +
    +
    +
    +
    + + + + diff --git a/pip/doc/html/pimath_8h.js b/pip/doc/html/pimath_8h.js new file mode 100644 index 0000000..332a821 --- /dev/null +++ b/pip/doc/html/pimath_8h.js @@ -0,0 +1,12 @@ +var pimath_8h = +[ + [ "TransferFunction", "struct_transfer_function.html", null ], + [ "PIMV_FOR", "pimath_8h.html#a2701c7bffde31ab4a96bf4d7fdb6866f", null ], + [ "PIMM_FOR", "pimath_8h.html#a119d2152ee2bf3edef4d9e5a641405f7", null ], + [ "PIMV_FOR", "pimath_8h.html#a2701c7bffde31ab4a96bf4d7fdb6866f", null ], + [ "PIMM_FOR", "pimath_8h.html#a14d1a9088eff4d1065094ba1cabf395d", null ], + [ "operator*", "pimath_8h.html#a861b7fa852296cb48167d9e9ada87cef", null ], + [ "operator*", "pimath_8h.html#a9acadcce78833d8dd628e779e6269da9", null ], + [ "operator*", "pimath_8h.html#a86f4f85192137ca8ac9730333dd109a9", null ], + [ "operator*", "pimath_8h.html#a6362a90d4cb1ff0ae43649d50e9b4ec3", null ] +]; \ No newline at end of file diff --git a/pip/doc/html/pimutex_8h.html b/pip/doc/html/pimutex_8h.html new file mode 100644 index 0000000..c1467d0 --- /dev/null +++ b/pip/doc/html/pimutex_8h.html @@ -0,0 +1,137 @@ + + + + + + +PIP: src/thread/pimutex.h File Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    + +
    +
    pimutex.h File Reference
    +
    +
    + +

    Mutex. +More...

    + + + + + +

    +Classes

    class  PIMutex
     Mutex. More...
     
    +

    Detailed Description

    +

    Mutex.

    +
    +
    + + + + diff --git a/pip/doc/html/piobject_8h.html b/pip/doc/html/piobject_8h.html new file mode 100644 index 0000000..94dd66e --- /dev/null +++ b/pip/doc/html/piobject_8h.html @@ -0,0 +1,138 @@ + + + + + + +PIP: src/core/piobject.h File Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    + +
    +
    piobject.h File Reference
    +
    +
    + +

    Base object. +More...

    + + + + + +

    +Classes

    class  PIObject
     This is base class for any classes which use events -> handlers mechanism. More...
     
    +

    Detailed Description

    +

    Base object.

    +

    This file declare PIObject class and associated macros

    +
    +
    + + + + diff --git a/pip/doc/html/piobject_8h.js b/pip/doc/html/piobject_8h.js new file mode 100644 index 0000000..74a8104 --- /dev/null +++ b/pip/doc/html/piobject_8h.js @@ -0,0 +1,44 @@ +var piobject_8h = +[ + [ "PIObject", "class_p_i_object.html", "class_p_i_object" ], + [ "PIOBJECT", "piobject_8h.html#affa62b02040517a34b3f173d804e487f", null ], + [ "PIOBJECT_PARENT", "piobject_8h.html#a4ce1840f79eac65344a4c5823f5034d4", null ], + [ "EVENT_HANDLER0", "piobject_8h.html#ab605cf0454d34cc72c65bfed2abd696a", null ], + [ "EVENT_HANDLER1", "piobject_8h.html#a56defa004e9b7efb2db50b3a43ca7225", null ], + [ "EVENT_HANDLER2", "piobject_8h.html#abb64b696544ee4ee8715add9747c1293", null ], + [ "EVENT_HANDLER3", "piobject_8h.html#af90eced49fbdb43f5fc631fa7e7a44fb", null ], + [ "EVENT_HANDLER4", "piobject_8h.html#ae8a8499ba07a4cc16c0b15c51b197d9f", null ], + [ "EVENT_HANDLER", "piobject_8h.html#ae92ae8e64fbb4c6fa7d87cc1e93d55c0", null ], + [ "EVENT_VHANDLER0", "piobject_8h.html#a338377c8ec10707dd26a168b8aef5c31", null ], + [ "EVENT_VHANDLER1", "piobject_8h.html#abf138848427466a7ae91ada5876f926d", null ], + [ "EVENT_VHANDLER2", "piobject_8h.html#ad0ba4a14c77b8d968dc13918f9b2d384", null ], + [ "EVENT_VHANDLER3", "piobject_8h.html#a4f47b429ac594cebdca1567e1b9a1021", null ], + [ "EVENT_VHANDLER4", "piobject_8h.html#a96b2461314db11f3b68942bcd4b9d13d", null ], + [ "EVENT_VHANDLER", "piobject_8h.html#a26a0e3181ebb2a90c11e9a7eb906a99e", null ], + [ "EVENT0", "piobject_8h.html#a4fa760299649bc8aeaa0dcf4d605be70", null ], + [ "EVENT1", "piobject_8h.html#a7083e0b630c70def2ce05d60d70a45b9", null ], + [ "EVENT2", "piobject_8h.html#a91d380b7235ad11b4830c4c2e8860618", null ], + [ "EVENT3", "piobject_8h.html#a685a85b0791e73158dc0173b4e18dd00", null ], + [ "EVENT4", "piobject_8h.html#a59032ae5e0b94cdfb52be1f24d5e8252", null ], + [ "EVENT", "piobject_8h.html#a7877e997621e1161f058fce90febd464", null ], + [ "CONNECTU", "piobject_8h.html#ac86f9567fcbe10d7e49685e0a01b8427", null ], + [ "CONNECT0", "piobject_8h.html#a38e74a7ce99df00a10517f5ce4aa66c5", null ], + [ "CONNECT1", "piobject_8h.html#a36132851189bb01db4957595111a28db", null ], + [ "CONNECT2", "piobject_8h.html#a850bbf4e8361a106c99da4c46f684247", null ], + [ "CONNECT3", "piobject_8h.html#ab45dbd69bde3cde22d4aba27ed585407", null ], + [ "CONNECT4", "piobject_8h.html#a34e41d730c07354e07333def3d854019", null ], + [ "CONNECT", "piobject_8h.html#a65528c74adc6691eac2c7a2f39328064", null ], + [ "WEAK_CONNECT0", "piobject_8h.html#aaaba5b68617a43903056bc175b8cd162", null ], + [ "WEAK_CONNECT1", "piobject_8h.html#a37d80492e781bf82b9c22c56977da81e", null ], + [ "WEAK_CONNECT2", "piobject_8h.html#a34134cc70172ef5a8d38ba8eb0db327d", null ], + [ "WEAK_CONNECT3", "piobject_8h.html#a601eb7e6e4c3c1a2ba741abbaf271fed", null ], + [ "WEAK_CONNECT4", "piobject_8h.html#a483ad0828f2c221308d95fd07ba1ee6e", null ], + [ "WEAK_CONNECT", "piobject_8h.html#a52fc22658e025b4c15c8a2454d81b289", null ], + [ "DISCONNECT0", "piobject_8h.html#aed7fd8edaccbbca33c51417ca43ac32a", null ], + [ "DISCONNECT1", "piobject_8h.html#ae030e8deb226c636d2df22076391f12c", null ], + [ "DISCONNECT2", "piobject_8h.html#a8f0609bfd7dfcd4512d76480bc114dab", null ], + [ "DISCONNECT3", "piobject_8h.html#af2789f99d1916f231fc579f00370fa6f", null ], + [ "DISCONNECT4", "piobject_8h.html#aedf429d3192da764163c1377cad310e3", null ], + [ "DISCONNECT", "piobject_8h.html#a587604e6f3570c0fc32794384d4d0d1f", null ], + [ "HANDLER", "piobject_8h.html#a3f7b0da6b28ced23e1deee48dde17c98", null ] +]; \ No newline at end of file diff --git a/pip/doc/html/pip.qhp b/pip/doc/html/pip.qhp new file mode 100644 index 0000000000000000000000000000000000000000..b786aa150870eebd6e97bf8048a2464ed76b4ae8 GIT binary patch literal 1995776 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%0DrpQft@@3zTmBCPKY~OzTm_0 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

    W$hk7Ig8guB1?kyCr)yg1^6 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≷^4-&q>(9~SCS>`{XT-?lrsOyE)5gNbC!?a;IewnMzu10w zc<>T&xoqFLh`motKtGJsZ}%o9j*F{C^=b3CFh$bEo3J^kbLv46yqr;01%GCYtgXd1 zvLV1l1-T+sqt|fcNo%@YdB||4ho?R=Sk^l#u6> zZGc^cOoRfuJ6pe7sJGcJh|K1+U1{;l63}$hLnM558;T=u^2mabma{#bB9}%Y;O@f*sV-Z@ z9@9uHr@Z%6Fw&aWogM;=K_$`M1-J9P1SR^f-@j#Kbzg#mIlq3<)J$$OpYV~I8tYK@ z^Gg@aJTNyBM^P zd3oou++MdEIr>u4$+zp(`T5)(z-j@oIe&OykSTJs2Cmy=Sy!Bb(~gRd-kX-$do(C< zS7#-c#a&vml(qKC$JZ*KB|yL#jLOf#!ot0{=&nGnxp_37p22$+g|E0?1u;qelQdvTy&PRp zowA_f>t1gt8XOkG=-}YspFeeVb$yY5gbK%`?^d@0snB(L?e6Q6VJ&&Y=WRAVtd?tLHa91uq})6j8j{3KP1SV`|I0ycp>K{IsSy$l zoxQVT?9ETjJ=EC%0099R^KLSKJLXeTQ>_=kvb{Xa z?-oMR@nOfl=Es>RC#d?Iv9fPyi}JVE#Y!FV(*G)IEq76e;oWsO#TeD3i6i3otgWuT zoX8d?67c@Qm$Q+GOk`(b6Nwxa9nQ+mzFqgam%hFjj>P~8rH{j8|2fy|^^!bPq#J@` zWul+c5Z`Q^+jXb1)te|_0!Dwm?r5%or&LclZY)&t{^=<^Je)KD{278muJ%ZXbGhhA|6Xd9yOU75;_JU?uLkPh~o6`tjh(ya@-4(iJ6<_{;Pd=#B%(Fo60e&{s@drKRDuCsLXgT;6a~P*aB@^PC=Sb9uSil~KHWRu;Lt9nREkK?cp`ilI`+ zQxjc0g^gF`N+&U#)S}8|F_SW$T_wrlp@5t+GFr}ELQj=ZUCqi8Ik7ml$@(L3+RVlY zg@lO32Q-ZaqE0pKg4I-$7`5x2R~j!;Q*l)>TDd~a@II(saA2|@t0J~-G``GCcY-K_^DgSn0s@3yxYs-!O1-AYtdC@P@1U}WV0#mH>7vETB9-E~S4BCKzz!gl!OaUWPU>q%J$iZpTbw}AJj?kx?O_n#qs-?W;)%@jT zCwSw(vQqvYPE+;{48@;N%GaBv{1#VGR4XX?t{An}lt9Qx8cu*SV zs-glfHAO1bJwC2~d6HIH30>iX6(A}C*qrCEj`k|D&gzrHak78hl8HDe%v0vK`=Xuh zq8(7hw|i>R87{N#O&dg=nsRLgmTohizW@cc;6jtEG+h#8>U7r>9X-QKqJ*nVFdY009C3 z*#emO&Gog4y1KY^rtQ~rG1qaBP`19TOI>9p)9Xh$@h`cPmL;Wt*oKvwB6uG;BRP3S zT%5I~X%NkD`~3VgrSIdl1EVYHVBD0Qk>O)$@kJ)Qx$fuey#%GA}Djvqe;DGBZ`ANEa@hCP{AV|%A2rZ5}80_u$} zV~*?pr6jn$aR8o^8CF!JQDfjr1#^}l0s?`grFlt7`58`iEvPFZWD*h+Pbvxuva==M ztYE-AKjf>fM+Z{0am}&rZ9xL!(i6hl+xznJ($LV5hNk5HGqv6~8H$m?!FO9)`9TJD z;4Lxd3;yhFwjxe77;+l|en%s}<>lie`mcC+c$k=&h>CKzE9t4}DJm*zKJ@4TMN{$O z#jD|`jk<=0hSJ|pfNGDs|8%%60FYv7U@fJk;le{Y-QYJiWMYPl9UL5RBl~$(DK5rZ z2Qr}fmJXKs4;@a{OI7*;MMWONLatR6zF84$tm?Cpp|%coqTR8Yga3NEzn=Jaf-oVJ zAn29Ejy!yU@H_XSlcJuNU?k+JX~D&ymnxEz`?;=c_eb$ z_6jUNoRreYwL*67E+dZ)HI8Om>5C4nwy5{5`V59+>AIJpqoY$%Q@hkseu#nuyLQLL z#VsiWZX=-n8Z*5JNp@4&d`A#~CGhnT*dg0pI;dUlcD@Ys;iEH3LJG51z83;&IEr znp<1b(bKCcC=`{Jm6y=%$J%`m6zqtIkTEdGPEXev__H>dORV`spm#fvZAH{83Mp4X z5Syy)`s2nP%J$E_g==t4cmm}JzhXDzJ3(<+>w7LyF4EHC0vFXZ(PEQvB}{ zPRQ!~Gsf=jq+$g<9leRkZU`aZOF8w;CB?;|ZcE>#a_8n$q$MOa^w4#%=?-O7FJO99 zvM6_silkPfMo}<#I`9&YI4l%^Akb^@asjzQ<>REVYn!CnUZLA>rN6*bUHRKK*)M(C zTz2pIzn=RDm{>wnoS|6q*0u@SDm(XBWoTZ@WjclmWrKY}5gJ~p%zjIvhqyh>Pf9ZN za7RxUC~I~g^?AHjEk)PSac0mlr=lBOtb@BFYYz!R1490Ay6^{O*O3BMvDVVku+*^O*46}W+s}f6f}fmrqrnJ9 z?gY8@1wnMgLX!C!8d@X)MJkpK4psi3b;mX3k-Yz*Bm4cwR4}r>mgAmt*<2W}@+vmb z7UHdVWNdR-Ok4$k8@kyhv~w3Zaz1^{&yH17oL10W<|^uNjtNE>VQbJcnJx{;>bQ$N zCkxqf2`J|TnM;WDMr&8pUVm%z5~SA|+>o5W#Z9H5DN0N<{PFSdBh+U9R!q!?wKXNb z*HC2Kjork})3IYodj+tHl9H10@=RVg27!*(EWcNezcam+semTF&$Hy60 z!s+g0gq`CqWyAXa<^o_&PvSKCb<7OLLT6VO%7<6z_At7Lf|-6?g><5(P9QDVfZm=j`B;zfMEJFm^0uh`l1~ z(eGzjDA(en+9w(aRjZOGw<5(neMl;ciCaQ?=0&QhE~_PSAg&OZKgCHDDw1o^TaZ-Z z_~uHf7T;dG7zU7R+{~t7PMS449;er&kFb-}qG-XzBmsJq7*R~ms=SX|b-Cr7LVL|F zO1WY;cjw4zipAq&z9V_N^aZ872UFw`QuOVf>^`$4*%uek#5j0(`MV?eVi6lLte^fN z=A+_5XlUrQ|HcV8(c_`ib3GV;ye6wzQEAD9wzp3d0w*V)t*vYKd@|FViuzLqKWqQe zqdXj3M~xYDOLGbAi{Y;T009J2IN2ptzD7U0j)sPziEO*|J_H=YN&d2r>^Q4Sxhp0PmbMOtR?{yT*?>#mZ6QRa-Z39DRA)A zh1@SFsoHuLc=CnG(-yzT<#S9z-vtuC0ldleX`oGxAwq^`1r1rSPbtGh?Iiz5R=#Jx z!r##mxKx>$58s}9(mw-+`S;#k%Z6So|MDe$M#JFsdGzLJgpl8|BH z*bOKsC{0aGB0=BZ6&3Ol67FxWFN3k9%Yqaim~zWY;$FBb%o4fT$N~&%S0g7TVoKH9 zTJMMhT&>p&a!Pni{;C8heEIg4c3_^hJ@Eb{st15{vZ;JH#3K5;Pj{z%1ASeI6XdPo zk-BH6Z`p`kU*l7@+hxIQH@sWQgKJe9=~|L%cMT__eWhIXPSRdS!Mf_%`$Wa3%l0 z=EK1LZ}~7x)5?h)pl&8QO4i)g+JLoY9^t3~)xMS{%GiW!A#pS07b`n}exdb8!?ofY z8?lE`HRbkneiwY*eZTH=?l|L&|7Yw0$zJRwbIz)I-l|#)qPcRz zh}&z#u?Z2_9MTU*GtJc7{mOwt(h1x3ueL%$Hc&JesDJv5b*Ky>&TXH0lNz2C=hakv9YnmbJ&Iw*3OSw zpB!ZQJnFhO2b1V@5&H)QLc=^JzPt3^MfZrUsw&(T6F!}8z{5qw#(K+Cl9Z0nv$47K zBCqN26~1aNxE}Q(`wiz%!Tdow0is~_Km=**;!wl=VBT)GfC}OBDq|H+ZwdKs;Y85D!!E=tE7T7zS{bpxc{g1z24rbC~yT93JMneBm1xb z009N@;^V_zR%X`Wd~@jB(c_V~>*4%Nh4X-m+%OCh0rE_RR3x(d`F42^TV#Bx&RBdN z#z33j6Pv|csLik5Qmj8*&1l7{+uhlzc^K_WWIYUBz_ebhn(5j4QB~!nZa$M6 zo`j2wr&_9hrn$K+1v-$49KSe3OcjpAF`3EC!=qL$W@BaUQ1$imwUb*N^$YU%?CMum zE!8684w=r8uuN61jh-%@i z7CI6VMI9a4>7DV`P|vIVol3&;x41I={Gg@8bD}=OJrxgaIn~JNP;GbrZ$2#ojZKl9 zc3&E<9-$5`Rcz0uTTF)!iwOt<0s?wGJSUWt@o-zt?v2NMQrNg>zhIilNN1|vp8IR+ zF**IbOPsiNx7wfc3qo4k6OxgcYAhuiOG-?<7)k7I{>(l*`}JD za5K_J1Qiu^;PJ+EhVSY9v)eT>;SJ+uPcsy&wYvCnB#Kqxe70FtB{x+Pgi4fC^jo?| z9r4y_jZ{tWjt7C?!^nJVZ7qvU9uDSDXD4{J$~;gs5TOqN;XFoB;rHMmvYNK?MGh zj+Ryg*7NStdS%JmyR=ldaSE*kB*@hD9J~uPyQ`S#b$%g<&`{Ko)sM(jU9M%i+?u&009Otld#dk=?4wOx3{dU z2cxtMp50+hO~aaO*21uZ&Mw`$5F)VQ6&0!MQ~9|ylbzG+lD*C%4S9IHJrQ*34d^Y{ z+M(s;Cv8GOs>Ro)`AKsLj$7aBX#0ns99I8OX0`bx)z_Edd}tdxTxK}?i7kt6##pXpB86_^R#`AN8`5`(Ui=%j{LaKpy zT1`%yd9aL3c)?euI&Kh%J7makx5~Uwr3e`n(?PQdd>fWfXFq$6bMJBA=mIA8->m;# z`{d?mthdrGf;U+@ATD=gUn$9e4&Er30BqGnoZ0&J+}vtivqT#yz*fXnuc`Q8lUDP} z{Q$>=6P>8avj;J0)G%=&)GIMJPcChlFa!hoZo1sCC*qw{YkYowK4r>P*xb$a^#|GH zkM^s={-2DDjM8{LKjxW!)N1@&QVax26~ylRj9PIG(ZXx)KLEc zB67+d)xf|&iK_bGY#6kVETdTyQJVr7C&d{#RU8!+m8i%1))xKErHq=|`rXy73w>a2 z?&j&nQ*VF2bP8wJ>}-Q3YgAdVnY}%Vp9+;ND1{Bg2$%krg5ta|zXTH#)5PlxZCmE} z?5q<1LGmS86q4U@eRGqOovo-4Ei?H0lgJFPTNiS2nTjNqz7o8e$g*Gxb%k4NX=!g( z)>J3*=NXE~?g_UwLs?y2_3+64dg=fxbxa-}9&W^>F02%LOnQ61qo{U$Ap)+e8A@;Q zygL==LdV4D?(XjEAGp{Vhv9|;ZA(5^jmeV_?1R649fhfdAQ1ao*5=*gAqD+=YU(*% z85tp=7@g8!F})dcAu&X!gbxrPez~B?NI4xH9cgK45s~VKhD0$78S)roBcsmF&Sgfz zmu5?Tu8(NI`Dkf1!N?R$UQ)$~lYYGTtKaefIz-qP<@wf-mJbjyMUWuSISoTeIA{dt zd22Joe@T@vhy%0Z^8tbgIPV)478WH{)zFZT=sqKYdJ9<@9mr26bu3ZS&aJSYfed6(yxVf5v<#mj(V_ zYhC$1Hl_dv7c#qBkef@sXbwXauA!+&OGM=JS>8_nrR%iz|0kgf4bt9}_;nUe0L@33 zX22%`Cm~_>RR4=FAB{CZFdn@aF41KPFwm0=nZB5%b zR<3NCeDLs`IT)go5u1ZR{C_E+N6DN~27`L=$|^B?EjuHlt%1SFQBs}mZ|OmeT0>Jh zyJ`^sRj|Z)1N~aaT1zNqqjs}b3f2%Yok#z^1i(aZ>)j^?J`)O>^;}w06%;7u%5E^d z9Pob-6l|O8(j#4@i{4;c6B9|bZT9M5l_OXunq>iqg`t>j=ce!wxH|mKHOEukX4EEw z396*gEEK_|77SfDM1z*lN~!TtmoHFai0_DF`nKq_0CpCI?d$JPZM3tW{Efpa7OB;= zK73O0w06mKAGrcc6uN>5oAGm-!T>E!((`m(qPH5^|62!55TjxDauzx;u!l>HY2Usb zKipkWD&|Qiv4u;MuO-|w?jsS$$dc33M*;>XArZ28O?CtyBCMdG;=A_>)Bxwv> z8QJyK+8#_JCg9)zgnix6(jp*w`!v^hR)>AY2U=cA$hAz|8H$p{_?~I#P#y7&Ci9aT z)q#Tkc)(Yqc;VZOf$E4F4M7;p4cO3Pd<;ISeaW0l@kDZ&so&?nk0MQZT1OeforXLX zOSdNW+<4DCTh6ow&)iyuFC@>Ic;3MX`ilu?>(u=$et2?pY;bos$D%uYGe_$oyzf`E zPvied#YIKM1=EX?m|(cKS6o8&WOjL@x{dlq>vSTl5X{X+KDjGZ*dc}}CMxoHaz|)x zZf;GzA~G&*0LBX)P<^LUuKUhDXOx{Vv?i6B@&M`m#NgEblz zB}pgg0*^_a!dbmI08bPflVWUPQ9yoNlrgNTsF+olcV+99RjPZoqTnsxf9`}2%P1`+ z)v1@n23M3N(DZbe(pWgJB_kb%B3M$WMW@?vKQYe%o8cE^aANT0jgl+U70>6(BDE9e zM(0Za009VcU0rXaD^>v?fzeTUz`L>jPW<(SA2EJ!ZSQVWNn)E0oe5^-h$#f(i#U42 zubyEfITB<+RY3c}BH;3QK?<6!ZGO?_a#_at6>d4j4!&ccp+ynY!D~|WUL$WBir5u^ zeQiBsVP)Wpe0q9WQ=M=@6jQglvBqq?%i{mZObuIbdydueI|qk*k+xLErxKm!-7+)z zD>_C%msX68jT&~p_m`BCR8mqBrXL@-e=n?VPN^;_StbKXq@)2H`~d?r=)(o=~q(Y->lAgz#hsdT7u?H6gB>Qjw+~Dzaw;&#K&<*PF#&$^ySsY*0g5O)E6dQrBGGGuDQ$ST zZ>T20dTx-f6B;@o;A!!dnwpxPo*9LELTUsQQ4REKTKh8kJ3Ac&BBj&Y>a|sox!Tw8 zg!0F!&}{;lOViWY>1Ckji^~rQfm`%G)+;JWJxt~KY-6M&ch34QMtizG}hX+Vj3knL9Upx(L2Ec7D8ggRf(#b!P?s~gTYV<}HI?nD6 zh&lqz6OuH0`}&-ZwCJ^KxOabfIXl1gA8Gr6-5Q>BT(_K`7V)w?S6baF_xdp`TOKy0 z9ljP6>^8a{sd%5sI4Z`JrnMfUa9PKcRaAU^q7?9v6bc4>W0_tXB)5+Cpi(yV*v@%o zd*=1^tIVdB7B78)sPdB^EgIpR`#{8(B_l6!aJ;jKu;yt*toi2cT`PhBIf9qq z?{Dwq@CN?v#n}}*Gdn$<*E=)}w|gUe!CsTg{U6&DA|fLGpRA-=g1HUX7kLf7hm-wAwgt+?&#oRLBsVbt0(evL+Q<4DIXF6FSpBlovaI8 ziuMP6L*^K1@~&=Rh3_96m<}cT^h}lN#{c+%jfYp5k#BRph)kIh1N`X=e6G6@F?4G;;Lq+QX}lu$6g98BUbF1*c*kexfh&RJ5PT zA$HP~pDso2;FJtLjrlO|P%Gq}MPVWRjmP5xm+Meo&SHzRl&b0g009Zqz#JZ5@vpTL z1;yw{0*>}IhXo!Uzgnxd9x6&o4u|cL3rp3BKYyk?uTs(?*$Iw*rmEQHFc3+QVP@L*%rBff-v{$4dLM}M+X>)F(cnp@P7}cN=&D!FN4CI%`B#C2`G^D(#TiDPpPPf(0 zdN~iw4{?$kCt$mEqD#nHtLl`qxcUH*xkxZ~Y7=)Hc5HNXf!CF+ib_d+y+kHvR8g{r z^2D6Vk!0K}kGfBg=XgeHuRO)&G(+`GcI#bey#zA1p^*p_hE1fV2aw33Vq?)e#wx5o zV+877SY3W25(+kulS`P^U5b{!LnoE?zXNuWtY?!9Ori)Odr>)n=fE2I)@KCgwM2h!=JyyU0RnZt0)zuKG@ubuB=|!Ct$;vdheWZh3+$br zTMxT??c^hVg#Yi-urP!GL7z}k&^BShtLzF8f*n3$(4dK8{wWKtjG#$c2-vE6B^|7ZoWfD*Blg zf#F@0porPYXTZfqP^YrE8rlJw)~lUoxoW^H~jQ77nMBTY^9w<1HPP_00}eY z6@H4La8FqoGXB29l=j8B)`yI}hGxV7009awyb!j>xZp?Y{%!`|){cqEKY!5CvCmgG zq;PO>pt4X#E~$wcG56Oh@zmH;_J1*4`)tSWX?DH`HII`sj_jCQR_~&e-{(!fH+X1v zc{OV@)xH*RFna-f-rD-$H9S_k3SELVYB4n5Rxsf#DF~EOErH;Xvw`tYR*=d^ZvF&X z?;-SVay?>i$TZkrA*o=p8weCOMkTaHrKF^k$cxF&$w^5`vEG_qJz85n0VgCR^le3> z2u8?8RGJL7+q!L2$SQ^EtI4{^0#>o){dBOs{?Yr5r(sxuV#NcAPRvCktTQCt;(mPqtnnx`yQ;Sqy(%(85x58V1{s4 zCk6GGhK5FZo1%jrB(fmR4o=&gFBBw{!nnft`1lD}R8&;b;p-GMed${rVAM)Yv@i%h z6f`?-$!cjOhZahK!C+b0p&Y6BW3ZKU(L}sTP$Ygt*w_2DD?Wgif>Fjxvu)?A7>O7K zL^a46iBRr@|2t@Y0?U#)q6JZt@jvyGx=-Ysw04~!1E3XJ^p*Og)9Ya>HAp>8?9CXJhbM;fxYXH7+0?c)|+|t(Y$BU z7|)ftyI8api+tD7+HC!>HLifR>OG5D;i=hsnYJpc^D#{{OjbH|!8br6Pj;m(d7nm6 zQIXa8;;^5z#6*kBel@!^jWDKf{p<#bkmqYegaGVA8S|fBy^rw&C=Rr*k$c!eB4_Va z>+2JLU?=^+F4d^sU0i4c-vcBqJntMgu+Zr0-xFeCyU?&vKWVtHhDLj!e|UK4dUUV3 z(k4`nMjod6DIM`0XXir4!%9a`XYk%+@jG^#qQu04!oqt~E6&dz%L?}G*|PA(qIWcBf2(&a8LXWnuJb!FB_s11ut$vn7k^#8_VpKrOjG}#O< zRV}JZi&@*QLZ@F|+cGt=p=*k!j;Dut1szVv2SHS2@A#|a9aplpmS#1NlmEa*OKG9u z)C3MTu4qqpjppXM z#dKb>@oO~z009f?i=M0X_SDweKWeq_2z<-sJv}ovwpwqqaK596w>#4r1^+EpdUZ{T zM9iBJH!=)|$6eKoV)1EzW;{Lp7n1#2nYMoWnsBvSy<4r#A~7x>1^OETdg{-PyMOXC zGuzp1`)@p2s;XERGozwV7E6J*49a;g?6Ep7E?k0+F0L+SF!51w8yqd|?2L_#m88Q; zYS@Ct5eo4@ebzC^qn#2lk9X_#o}LeD_xH|Ap7HTXbJNq;>nAZGG2|<+u@MGjsr&kG zt-DT*q1_ugoSiqPfA{zGVOsq{-k*)Y!@+pija=FqDtA_^TVC;lIhag)=6Mr<=jWeq zq7CjFA01_6WtC}lNEqJQGBTa}U31X#0396_#bLj?ZU^PZZfpw)35kb`3xHy6|3tOV zVBn=Joc{@9rVuO!Cg$qH>wwqY-Q?ib@^T3QeTe6QQACT8T@|k0+%y4%R;_ol^WBuD z>*1sOnF=`pADBT!RnB!dm4}_F^uuFv?}meB`1D~qg|?z2iJyK82SeG$8&3~D$;rv7Enb2i_tW;zMM-jUL+`Jl%q&cu^rwQb z)prI|ObImL#6T$}?gvQPXNd|klA`QoUkX_%}_y_+RCJDnw236ZdrhUvW$enFp zGe;bs#cew9q?I~uLoJJwQc8L?O5~4{`#KPT^(`?)Hmi;1RW%V;MydEC`Ip5V)YM4nJnHGk2GB@RMR~%VdT9Rr5 zA1RhiU%Xpep7QP;M*h#Ay<2C7nOQ2FT(z2Ue^&-J>P!j>3V_3w80fW2OmgE+MNcCn zOsn&L@_Ld<+TF8wT?wPEUSCj9do6Ou4|z#PxPZ!GIr)2Jxu;An>{k66?RVpPd9TpxwG4e^b z#luZUN2d^lE0G&zqS>@qv)1L(N>fP4uVEHfZ2)vWES+gh0)DFV?3ld`Iv`Tal@@`O zNnm27VR34xu0EDmDb=ZT8}A0<*)baCb9U|QCZCdWsaP|wuyAkVfcCZk009h^-ri|` z`{?RQ*IPXz?YLuT#AVM_txD}HP4(K{0W1;LlrsGO0awA`!Z-=(#~&YA&l1f2qoW<< z<%v2RxCN^R2W6TtQ@NE7`R*{hXwaU9 zfdL_)*^pB+J3H&^Yf3}z*x4)Z2mN;Ur`pC`fBdlS&w@f6yd(-r$~FyTReZ#)zL*|N z%&^lj1Gr>QYaYL*CM`upW&o2;Qpd>&E@47r9#q#7wkAHa%+)vS9ko6t*Y?8c+{52y z%RrvfV1_!Mc7`}oQZ6VHrO2`~;mT{>Q}OXdg4IMc0W9QfXn=+ebmDwB=?m_V1NZg! zv$C^G{0STA@9VhX0=3K0H-rE z1#=YUnmI9o6>(2i{Nu?Aip_1JV~qq=WK(m0-op+pL4Xqc!Fw4!wlRH1fARPFgq9IN z8^mo?-~6Qog@m#yPSdz*ZQ=P=$V{k~R5mv^3kwR(&CK}8A^3GoQSB0jehCvtEyJL{ zkCFq2;Dqpc!|=_fw;H3C$v`rshk)Cqev6;pa9xi=KhVW|8AJs!ij#BltdMzC(zIdw}#TU7W5fuc2#(mxabk)oA8`AeEV2SPns>*0U zAiZ?6D=|E;9)YwkY%h`w0pJr|5@_bJaqni&#`q7lRZWl%upp4xkt^OQ?1*cE ze=we*C(q}UJX0MTI>BuqX5h7GE{%-5m!xhFG3+7NU@FR!8SER9l@6{=WUFrN!CV8PfIUS#0NKBud4mW+d_|m{?bzoXqd*1Atrw0|bJVAbuYS^4vgMT&~v3 z@RZk&x=WmZL3*dNwX?EP?{e7W2Ad(ZrKlNa8>fhg8%lS0*jWPIzb-zRf*u0sBse_)009kgnO^P%CA_Wr%$}W{O`Mh0%myY5 z{z@Jr@=n$J+RpzQK#F?a*4DI-JAQXpI0yqZh6xEtYdo8nnDvna?FG*h0E9q$zkh2_ zPINlM_8NE4dz>6lirR_{`m3Gu^J3O(as+(cp9!|MYLhI0WwP!IPsZOmKzchg?{;R8 zm3g?(cz1a)w@j-U43>6M^3u@(URKgo;RjY~%FkA`u1Jw0q4CQCt8S=Zq;LHsJNWrs{(UC6kD<^1LV$hO)CLSVzc)0n z-P;)TnX@@Elgq^C;*oXTGnKgnVB8;C8ZS!3+F4U@G~qK%USFO#6-{H4Aq%(sSe*bQ=f52t@5taJ5cQEJ4)N$P6@NzE3s23Oe&Z((x z_4TkBK}ZBv*EXI&NTE1@F^!Hkkxny7&kIFvXV^C}$t^tVPnaA>Lt9NsOguLDkF`&L zlR zgTW;!T($%jN38h8blLw<4L=f+Nc;i0;I)37kzTCH`iIpe;7}Nrqp^rC*X4XW z_sf^4td`)2uuif4pA3TAp`%$Caj_MZ6-6!gs6??BbGCp~%xbw_ot-Fr7f$>U=jBN= z2hxy4Rg~}3uO|wPWg}`FH?OVdr)?HTzDK4JmOr&P+&J*-ja;9gAq(QM!|czNuL+Uc zcMbHI_Wv=5%@`?TSP8I~m5L`%;SDfFmB^Fhpw*=EKyT}NxjI54RDcblMn}aE33VF1 zcoJxK)iIzuqPK_pZx8x6q+p47(<1e;15S@R`Rcs+tmMEzET;;q1VXH<+{c(cVUNcY z-J^ZPCF;NL5|-%2UUKDdMHsezaL@D`#}(#mT&o!WEni!f)&5aLqzi}HG?z4O?d*ox zbWll237z-rc0SVc5|W1=LmV6JqoiRuUtHj_a#`?xx?7r9s#`g!KiljQ6#?YW)xlhC zn`R9xy|kT11Iy0&4zq*=aHSz1pZ|6h=(a)zlE`Vt!y=wgmeqJyi8n1RG5U0&!MUNK zL1%Fhd|z09CQj;L<>b`2HwBQGKNh)~=M7nW2S6Y-6{z;;&pW9STs^y?f0L^6a8|3w zvYygbG5W8dy)a{Q!jS+30003F3Gs@523f>JCA|7CHUj$g*W-Yg{t-A%+-6%ozMOz(C}b!IRPLjX9oe&H_Ysw;m5GT7{mpBg zP^jn6ezEzrVmEEY7DpwQHA-sq9a!dSG??L{F;P)IZ=a9&D=)vGpx^VntfmI@ult5Q zc+-T5JvVhT*+j_5qy|oQcXt`cpbRAIwCG~`@VUWuhER=%JW_&>@PN|W*_aTu`yzf zCs^*VsZYbX<2zu?*R2T8dl0@@?Q+aQAqg}`%%Y+=A5mrbGc~?_jy0@{d?Xn_xl^my zzIFm&2Q(5vXMw)t>=R`71_fo|_t@B<`T6n`$9~Yjb@Q_*7@dv~3GICS%5#O`B+`|E z-CdCHL%H*$=&P?LB*Zi6d&1cA>XGaC<~}gc9id}69s(GQFF(zk+=t&Cq5gdHCgl)O zU-EV$_V}iZ{q^&SHAu>7!XE+p133(kSA@Jy$9-!(fuf?5%qB$+cY(5b@ZX{h&BDsPj{6~B|?<2eGqVY=~+>9I~?m&HQDe(8n#Me-rJ5ak>YvrcpM_J@WZA^JzUMC z17kNQSVRAV4{4b6)jJN4?d|e49v(8&VNy4@&%-}B(1^|twI>p?$33f`4*3+vnvc0e z>|@Af`|H#EuB_&(7Ad9u#$6xM!otGo;{0*&`250>vk^`ZH8;C)jg1^@4e($dzTyTtTg>D${B#>N}CCNh6Zj}S#Yo9n1^EH!Lx+gy;odB_!M z3NLL!g0PFq_tvzds4PAU%RSg`fZhPTleLwaK`JgHl2cTLZi`MyODQiezf+hq>YbaN z0003G#2gZN1W5+{oV7S2WOhF<85!|$sNDV^>Vd=Tpa*~9rkn2H^Y}-MwPn4Yq#>%6 zx-I9Sz`;Xe?AN4aG(FMZVeHhqXwx5HBOttihd+L7Z-;~u>foIdxk#ei(ZMDp;WR)d zQc_b3zQRJs#Kud4#oQbI9|XQxGzc_H>OLRS6Pc%}N#YL>5Ht4o=$eQ~!aK&p^}cZl z)AJxC+lx`#tHUU9(xx_1^fWiI-($uDS%~|ps#E;1@4`X=vdbS(4jGI+mrW8D6!i7= zg%qS(^6S9|+hCjG-Y< zaHH^3LUhEW1{QM&VoA&oR!b8zv!7K}zsGW9+1Qw2CKocCkJR@ji&J>!CPzlnOKPAY z0Dryhd5MU)sH4MF!E{JK5Q<5UGBvYr_JP!B%ZZMxTC+va39reM4SaV#{~NK6a%b@p zq3wg>LQ{eS!t4xfS*7NPO*uqHO|IzYA11}?&C0KUi@6=JnV9JUUKlED-$3_rVMy3A zGH=UVAhy$b%V4320pNs3>RvtppPnlHh=yP!`%B0J8cbsL$@i~%jn8Qj?Q=AF=vrR=#<>{+oRHS#hxGNM3#qeTkwzmJ;!x=!6&XA-2S_ZVxfoee5V3KdoO zr6nb@R!CZO@qI>!1l)DyKH68QWJFJ|feE6bqKb=)1AGn7)j8tx^%?wZXt?!~y&TC9 zdK(_5XD*(ufw>3#--w!8S(%l)-H2(&$sMY(BqvA2;X4%48tb3R9VgCIk+#6+v*lN! z*WqTzWizmhJBhM@zEc#WNfYXRVTOI{702=_W3@(>s-itGA!?h}S ztk-;*)KrLF3@S2%t)CSUEX{uQXfW`0$NzpkG4hF?LvHlh0003H>5aTKbKEiivu{2PsoH=Tf3X&*ObZv8P-&NTOEt&ppm)dL(1~iDx>n$n(um~ zTBPnyWC0#)+9pd@cUhO3fqo3bo-iGwRt9p;f|3$MOmp4(#3+K6&$aadU0F>Yii(vB z`i&*Jjgx&qY{l;Wz$q1&v#d8)G7brq<5&Fp*^aVmKF>VTvvSl=Ot}0jbec{b@&I8^ zyU7kBGXA@2)!o-WP^TJY088bT^h%=*Rw zkKyKT0BOBy^*ewF+fL09pJ-votf{Q*yxtoHgypnb4irqQw2x)BgyEuGUQDupODD=M zC~&_wN^WZMa9Z~nVhVXm`lwGl8k3sZ;xXeeH&fH-azI5--{S|H5rRgJ+NGhP;njGR z6j?j0ke5SANhu>E15O^;&}nco&mSM_3dPLJ&UVu9TJ;aXqStY9a7g4fXL>q|jgNo2 z*-9(+#n`~`R`Edhe+&KWO$+3S{zLyq{%7eYc+cE2MM5%>(KFE}m2UCsD@Kdy z72ugyprL)+rn?qu!(e}#UiCnC>EHWFe5dM#j}$cg{nASDfA3`Ul0 zjc&0Y@AmI}g=3!3=`W1XQBhHeET}%C4!pqST&{8x-A|z zWAyPgRtu;VJnI(S%9*nf{UrXt;vm4s_c*HkJiQeX9DIC!?4kG=7#tfHSA20kU+ewU zkO;oSEn6$)(IKQnR!*jHc$kYJoeb!&#}_H7u%+$mO4CT zKIwgOa*C~}aClou&hY+Q$HwjTt(Ou9DJlT9L=7tSzIK0AS-^5*JL6z-`-fdt;=}5; zyZr=aVe*x=t)M&K!Glu6ADL z%a)6c`yQQ>{c4UBSC|}X*^ed%HHGJ( z0|eXnXu>P0rMde7B*aooesm0003I#9(nE84thT$p`K29Uw049qm=pek5ga+L~Nm z24L^!4{U8~Ys5U98noxoYcH&!XQRJzwC8uVwaNQ+x|Q&#R*!-0<_={82Vnq$Gw;UD zjk!1v%}>~`-ww(Tz#Q%v3K|*)2A2J*f`NFi84O(aRU`c5*=-?BKi|jewJS%;eBl@c zK>A6g;P-^#pkbxGHxk}oGXWWtEqqLn-mE?je)VU5{&!njn^BQOp+R@I;hWH}-I2Az zuo&o=$S2Rs4mtmV-9_e~xWwRbbtn>wN#b8)1CPT#nVp}1lI0IqgAKZk{ithyv)&PK z7HCwDO)NUZ3OfX+UuKN2)YAQaa4S@|6Lys}b^+@pn2+0=##CNGP7G zwE=KRz2@F>L#OVV#_!2Y6*=KMYx8WAkzXf37<)P{ml!58@g8B>$biz$4u*E>23>z*}j< zks%QpJNxs8b^j`4AZ(MB{X2fa9~^{;!nY9+pTRDaLlGJASX0Rht%SzEIfgCLF*Py4 zEVpf~opQBYScoLxJKSm6ENy+{245df+plr_G&)q3IR|xSYe$grpM*er{o`J&E0Ru~4-O+>~|tvyt$d@>OcJ&BE+V zrS;plZ+9&$_0E8x7P4q~w7h(iU1nB}u5QtDHHRWdS5k=SFdyM5q>*&?!z&ne@SWB1C5le&_{VL}8pq97)-$*@)J~8ckVNRG4_C}4 zL%U8iZ9Oai35Fn{@)WPKy?pr^GGZeH@?VDa^cm&XJ8li7aA6Sv4l5@kgQ&@)uyhZz znw537gT<2UsF)Zq<S}H0ow@zc{JL9+O{r0F>!I0Ha5GLeGDutTCI;<%E}m@?*b+#Cm$?O z`uh7+m7A?EN|c@%CmqcX1}WdP67UFfi#KqcA+fROUOf)f*ntz3GeUs~L|=hOg@u8^ zL_;fYE#s)j{sHZ5YdDF|TZd1Jx5D9+MPx$^iEwv&SCHu$dKRRcvflV@aP$gAHBr_9xgh2gWBjl73bM~t(jc62;bo|s@^VR?o{ zCb(ns^^JVr@HzhW(H$p}ER?RU($llEe83 zB@KT6R-Zd+27sIr6^85?#B<6f9q%7~K@49A3NCLdrHP~TCZJxn%zYCltup|DMhZE2 zXkLK(p!d8C2x})`d_*z9O;u6RK*5Y(BB(D_fovVd{|xoa4M0 zlBK03ir}?~=}XS0O_%Xes>t$RS)0zwUmFg9r&@0F!^4{f6btI9?t6gsGcy&`)$@U= z9#(;P9tgOC!os61Bcykne@1#?zX!f5FfKpbGLoyQP*7IxAdx1Ik(ikOV^Ky1fo0n@wk{Kvl8{jII=2WEFjxHS>7zR%xI~w$ zvZ)_EcTN32=?e&WXeAdWB`xPEy$-0!Crx{LYTf~sV+200!lzGPka+t&UxflViq?5~ zn7>~{lh+k`;ao+gPrGSk+E}E;=<<788omOS#89O-8m8cdj|#=){jc_O1-bQBfm;Y26^Ax??iXu zJ$S5n^BS9&kkcd}o5g@{_w#ee{DNV<&LtYSiJv{2&%tO%P)MGvR4?<*a8B+j&)+jd zL#Yy{rMS~iAb%%uyfj6^N@`EZ1x zJ!?7SABL+^c@Lxt)6me4?N3HEl_Rd4lp<4WR5UCK2E%Yn3}qnM0003Ktf^>eyVm}r zCeTt-GwCs}w)%R6n_zg}N$aA~HI3uwFQE0iYNewiVD82~B4qBayPhbl+4yUugu%kX zy8)rIvrl~Nd4+lLE-R}gWee?MoxHvMLxQlz#-_k)C7yWoBrGf}b{)O+t&R>}Q}i&I z?qJ>59z#Qe;+85-k99jErFFvAr>O7WCu^b?u~1M}c2;h3@86;TGoZP*Q*Zm^)n)+O z28Rermk~7j&pQB=HFN|#&Ih{S?=A@$nAyc(7wWtodRK%5G;1w>TJFDD2tjsmu@`~O z$;l;6;eFS_4*5d3DYDXH7w`QQ6r)`a7K;n>Tp7qWw^xK3JFfm~*+R)dzCyE%Vdqc& zg^mtv#y?t`d`#au3$#_5Hg>cRk$+h81H>kP`cIqex3{c>bQf5E9K1I^7tu&u_) zeVkc>ua=q}UE`7pLqZq@d!6G3Hl*TP6S-iBoQ^-y=tv9r>>jSPm=336P`B9B4lSgp|;UK~I=QshCIPFWAwJ zEVxvnUirIk)bK##O@PD2u5yq_D6i>_k*V>`-3EKXt z0=79MA)YJKW8f^V%yLH-d>*2)kr6!=)wKtt!zHX_1pjXl5fS zVcF9aT4M{3`NE*Se!~COZ-j={^t9Zjrp>d!^Z9bVw<-17kvM*!Yt4u$VXA$vaE>W4 z5f2C9Y|zI?Lm|t^{ALMEr)Hf{5Ia-u) z;Gx(0)_TT^i%|ptB_OP&tXy4CASomSMRX3JkL=z~uYU-dqa)$W^lwarhRkS5Lmy#u9<&~8^{~f&z@~lz+>LH@|WDa|RhKhiJns^? zY;~-ZVw02Sd!w>4Nk~r6@N-Q}#?W_~S3Wm+dNgv2WpKH?_bKL5Gq;emmUwTK9*%fp4c&B3I( zTHDKsv7euZHEL}R_GfAW1EHO(?NZ)?9uPx@w^}K{8W+P$zN6nh!^0H#M#baXUH5TbUgi?WQ2=Ys3f%?)_%Bx3ia={~ZjF)=FY2eR(z?FBSpTHFvF z*avT_G~gAC>4NwBX**&qz{y3Ch&kVE1Qq8ZpUa)t+v_(9K0UF3+lZ3W$m0xpHZ2p6+|b0vR;gH6A+^8`pZr-)X^-EiGO^ z+yM)}vj0Zg^m6lq0!8eNi_6);zD8VWQBjqv9Wqb&_F@3kEv+hhEg-@Cudi)ev=^wt zk;kZrYPd%KsRpY2x(rgd?N{eN@P@`n=A44LKb|6g_R*}F9lGhCZ_hjs<0g>PNtHy9 zl#ozv{rrKNdTM^2R6bN(MYg42*SgR(2NL9thJz_UI5s|M@FT&!L_1XX8%0B#U(lb* znd4KT@(*NWU1e2Pb2>pegJ)f^T5ZR68T4HG-N zuClfaVEIgN&uQZ{QJqw(>AJV1`2W`0^r~@MQCWFnbb^(EA$xqM?CncgHhr(xsG^~P zGfr}1Y|Nx`29;?F0CW+N0Lh%o&DR4jQUQ6+$X7Irl7d2f=rxNGle*yI75qz1Sx1mK zYWXV!h`)66yzJ%g*o+vDkVAaA{>2d1vu6JhA1*-`0Q@%rkXRCb9SzU!BR*S_Oiur} z84Fy(Ms6-SW~fNkXy+rx%rkl4Zi3Jwrb%Jq2aK5#0Gze4(wk~FmFU%yl90&%`BO?fR2j2N)VaRj9E_OC-654ah5~&{9&$D=KDv zT84T1k{-wZGFkD1n@-iNz0GadpdBUY`si=K4r!V;yv5G)r^C_=v`uXX?U_#SMIm2_ zE~w)OA*drmA^%^k|NDxJnTBd=u!t`8dnNAfC4Lu(04{%_d-ufvJB@w}f+8)l4JAo9 z8wFOMuvS8E;g7J7gpnc)h`(Z%^t`HC<04q?QPC2){85Js5+ff9b%uP@;@C0bIzt8$ z^#0Krb>SNNSO=T{zIx{;_#LG2-?s0|jc)#z_I-M#{r_eAz8T~Hu6-Y{aarlK(~Z4V z1OE}er~9nZENyl55M(N^3ya%W`jZ+TW(f)ATsh{Eak9iW!L7mr5P|ya%*@&;szX(& zsXvgH{`?_zckJ>`cj9e z)Y1}Gu|$s6y% zx>j)fQT`x>%k}@XZtl@g=3yMSxsIk1xs*kt$z-W*8P}Xqa$PenrPMGhY_&#{XmV*? zHn}tzQm*5=86lF}N(?FHjD$%Tmzji-AwovOxbHi3oNd$Y*>m=s_mB5I=l$#V$M5+( z&-3}R*=%QLOkI8bWgnjdn5wXi;MJU%9K1JZFee&B0BN;p0SD3zyZM!&Y^uJHbfT5O zeav16QFFxw8NMfimk^@+FP z(;n0j>f4_Er;_obJCvIn=~_BECyqN#GLV}r?NX^0xaGC1D)2ZKqOVL&V2pxi=@`|C zsux2Oy@v!A`TEqBkT`SD&u^CEw_Nz4|86%(hNiL4E^@09dtv}UiKA{*!OT}t?<5Mv zU@(RzB0*9$(>$Kn#fw`d!TI-HxpN9-Rfg+xTX=49v~X+g)rI#F>Gf{*Ea-#t+4pjS zYkbafq7^Up1^%i%P3zJ)`TAv}Hy(Xc{=?L?wzi)9PmKvpNy3}1({5${CdGVgaHcCp ziGJW=Aye6~Zpf#vi%~K*3I=Z>ySuaYUtSt5-|_|lwzdw7?Gl?TJ5Sg2#$$B?HsIVU zuL=lLHmR6oZKF0db?-L0Rw3GgMpUlRfbaN}YweGGEJ(EucxN%IUspTnd2NqY*&!)< zD=DGI;L50jz5PI{-cTUI1&vNoc=i0b#H6FWy=%#-%&T#u|FYj66+7(100000f||m; z+p<>>0nRQiEBeMEK*=5&;^^w?A_5kFW@lUZenE{v{esO*CB8f2HiaEedH!kYNB9fSH9w?=r7*+{LT6a$&5+iR8cdCE?<9 z+$h(x@c*2IJ)whcP5(+js{OfRZE$SKd}i#s<|te z2g290vY2F{qkG6f;;I2gZ-8FvNuTnaU>=$^zZ2ZlFgM2sB~`z6j(92$vdN%C4$rcV zMr>)<(yNG#iyIr#1??`uNrONjetn0GjPx))Ju(D)_N?s6@z6~P5mLqwi0iXZ(YkdB zzBo0NHS&tw)YJ!sLL0M%l{y&TpKCJqZ_zwYq_= z;t`it2;KdI*QHXla9E^6{7OzsoyATAY{%eY;ASyl75qj?*|ZydPdF?upz*uH!#nvK zsRntRsEr=wtCyI^|Ss9eBY)!x7U)6X!D5n*H(%E z8#$j~I4x!c?OrBP8!AlcDLUG4xC0t}?%gq%Vk(KB`vuAh4nR(hqY#0i_+DvBhGLn+Iu+$heThqTA1f5y}Pv@AL>r(wptordB)vz2S zX_wqC!(JwuzpuctsHfV)eX78b4~hbsPww1eM|}KbXJI>o!Q;-zEwPgH4KIG2U05ip z)oifkyPp4r!aJmi)-+3GPA&O{#YTbxwaOQ%-sIk^l-h=^!G4dzZ+>dU|e_%qU52UQ-A1$ZiQ< z8ZL;CyZH~#UAT~yoh{;d#MxUv4Q8wCbn4&>>!`h#X3BYBF4qTzYN0NtSD=jEZ_EdZwg8_mW~0;&Ro$GY*~h6D-}{TpgKW z0UhlsCQ1b8$diz2w=Ih$p^&)N*4DfSi^KGBR-LUsf%Kvxp|Wx=e-sPAZ0sr(jz~%q zM2vqIA_Uf1H$PqV>xG2y+qMggcKs0XRnnY5e)87A!;`CeZEO05&iZFkp{0a$HEEaN z4Kri>nAm3e;#$vc!Kam(jp;*^GogP1D_cw20003OCq)_YqH2V-`F4A|h*dGH8q91^ zoj}nXm*WC2dRUZAfj>jP8bd7nSuuU|x5f7MVm`TZIjmk*8BK1-B0#@C9=T8skM?_{ z*B*~tjMHO;=5f=N27lB=TLDx@Z6og$QjOj}YVmvA#M#N|?c04wcnR5&FzBu+&I>ZC zt3MFKtT1|63FMQ1{~J~0(PJ#kaOs*!)(*V`vLklrJJ%l_JC1PURb7_5nCGRL`?`dL zx%XX@s(P^fd>CN__%UpXS9Li+ZF>Ua^ZQZt#9YbUrtZF`ZLr(olz+4rwyl7<6uG5P zYmHppbRg#w|LAmI*9J>Uue;_GVtC@}xug~Q#Sl)5H?!ld-ubEC!(w{Sdzf5*3=hBS zF8gjt78fuc5PBTp7a+|`>2JdC-79iJb3J;(u`dl-tTk{_`nOL-pV%RjGFsq9}U(6gNK7q?D-E;Q87=k0yoR`aCiLl?5t_7-kz z`^)so+~XF`;n{Lk%^qcYTt%b){Ik+fG z?N!eQN4>&Vb<6@nmIbS|My*(#H(~ArA68&4%;(CyJ(zWn$Gek$r=n-NdReWpCAG#@ z)N6my?K`d15z|k1|IlfQk7bkX&->5GryL$bT{a)h=%*5G3<7-iSvqOTVm_K%$G$ID zQWt>lzFI?vjAWTwjIr--V{@E0#iZP>XKb;Uot-E3F1F)#rm3^0yO_Q`^(4mgCS1H^ zd^QZ{4{i?*7DQ>m#9x%3@u*)m-l3~9fhU_uIlY^tCIGH)es)dd+jBa+r|zW zXBAom>XYXFuQ=y_GTnaZPTpeex4vs1`)>5Ee1|}!@~Cah?;d`K_WlC>oYf3-o`Kez zl9P_C7h}}ZNY9WwLV*^mK@wAqS`k@p(Iu17se!55{9>!{rM95ek@)=KCvW>FoXu1v zR>jTQYfjlOQG6#=8Ij5N@G+rZhCeT=;sv(fTUNH+IfU+KSO3{Nm@?R|C;iaxx1DLj zWuU8+;hei{z8q|o0003PaxC()%@>8QQj{qp+k7d+N~M@-<*O)(T%{zxxw_0+>`F?a zRw+piQAJ2sQV_jLL7t+^nZ3BHY9I3@g{kVRD2iQ4Xwjh_#w&q@uB2LjcA>7WrW`A& z*QvYeW@Mu?vt_DL-7T5f?rBBcQR-rAAx;CyVcLUBP45x~&-QGVbsNOIqnUa<;uo9+e-m+dbu+#dO7*!qG)N=HzWDxeYJ%4wi11roDQ8*bS8V<(C;l$^^1IJUdr62 z4~r6oWs)OV=)UxeDJ#cjn`XZAcy}}pqjgV+WsTBO)o0U~SbhFzzj+tqk^(FG6PF$r+hn+Qapbx$KIQvTi1> zeD}{}g z1*fRUV4$gb0w-lyr$?PXG6Rw+_^NP>>Z(CegLsW%gW~=!wl$xk1v*H_qV@_L6U4?O zfDsZ52ycKhM5}GF209%16K|o7RzZPmm|^pkN4OTxgDGbv1Z4>Gxl`=6In|UOj)))Y-uQ-3>;M z5?+99(H!3+8DBCbN=jye7A^**EQM@UwPT4}&J0ng4Gw>K`SR)E+rO&W)!UD{du4R> zrj;8&Ff_^-c6CA=C6ekS0|@7o3i2Eea+3jB69YxD@g=3kdQWJ?jwQ9Um_Qvf(Vt^L zZ!!iO6bd7W_o(;{B7+j40t$x{L8zpRU_ze*!frAk>tW!9j6N#sBk&M`u_&B(OhZIs zCCD5Dev>iSq^1xcXw;kpqPY}+pPZv_&tt}e+H*j}O$KB=41!U~N~KfqKuOdftTGaa zBh+KhmLcxXoD zZF~52UG^oxVCb!Ln>r+S zf(q0m06~LauCC4MFgnCrA8f^0%sc0F(QgcB2B%60003Q zC(qy9FY*adr)U7XOz=K9&V!_aYV>coLwMXGBzKs90^tMJdh?;+7`L z!Xga!hJq%di1jJzm_ihivZ$3X1T`xa(fLJ8?l22YOdFe!ep5?TVw|QRwM9pbYm%H= zQX2P#h(b()*~qCyV~avT6%UkaR2!IvEMyUrJIqB{5?l#kiA56X9i<^#Tc^-Np;?*q z4gf9dMojB9g~UGy4qY8HF%Y;33Z(TqO0BeZ=-m)-T0}(|Mes1s62^zsWZ2w&a-xma zV69e+0;P&3B25ZlNdg~54vRhg?di+=!b?O#y+W9^N?0F^1LsH#2}OgTU!%zsjXO+9 zG%*~ASLp3)f=)gQKqOW_YT|^<%)Le6zOWHXBS-F`8J8|n>V-jIL||ZyA}YIgEgW~4 zh$thSk)CKvL31jz%TG1;0?^n*GV2oeg@Z^-&_4l*eZ-0olb6f``urkFFif&39Cw(0 zfW`V7P$GFRfI$|G7uY-3y&5eBqF4UT!f%mP|_!e z%;i|Jau-m!!xluUJnoAS0Z6eRc^17So}+6YoMud3K;phw67QApC<#&s0Q@tWqDhHX z3mqu4`~oa@*rFs$AV3s0`RD~tG6jYHt<#{LK&^5CiTh$%z&InU^^PD6s83ZOp2{Gp zr&dRsF2Hh!Eeul*y?JUVc+Z?AfueCi@$i-?XD!T-`0aj~7|u-&cAy7Ki6%Nm#EB~7 z(M?G*aC#AzJ8WZoqTCpf-@FN>9QyEy%q+ zl0`Gjjkt)*9kwze3GD^5E=VNm;A3!9Dh|Q9&N}A{+y>yD1NRMD5Z$NaZm8cy>O#__Bd@dG^7Vjj6k) z;Oe+>O&P9wyrMEea`cX)L|7AZI&j64HQG}rfujGDrb858VJ7AK^&_im4@tb10io+f ztCO=SSqXrgkciBS6tyZuPm~tkqY^uU=C`~Qz(?itBn#+lQ10?6^waidDO(R77QU+b z#rN>O95>@H9k9D{y!+}x{YVE~#BNL@O@tZZxQ`-OhK3-I|m2gJ#8w29>m&#tA9d#~$w*|@#ilsz5gD#y-LTQ9pnwW@3 zUV^@`@FK0;r&|DT5tQqp7Z~b9Lnz6wW5DKdB-pR9uPZ|Y^50d_8y{D7bDQAXq=M91 z5^#)xLgvS#A?R18Y;ia+%)RyT@A5robc>4wy02=gEHoq-35VYm_FfY@JiTa`#9S4MnD%UsDT6 zdD^)2MtUBJqf}WdRwjzEn&h<*ZV`T)^jTD%ii)lZBA1wt(t8r4N22JdL2qyl=J>DC z{5nB}HQ&1=jkR^kGZP>(j;|$i)PuZF{%ExP5fTdt4+ih&jd$*f^nl6kuk}rv{%8I9F#A|PjjwMTb=XQ!RVVk zTy;G`T%IZrRgUOM?Hr*o2nrPYD1w))A|gkq%JHkZ8bRG$IdE4$J!|D6EzQ>x3UP@V zfw2&b<ME8=vq43AGl{Nz|@GfcOIY2I`F# zj+PeZ#Jeda3vWBYTg?)R2;?Vt^m}i|1aW%>160vb&A1FPCRx zFy@tZR%vwm^B5jwv!zlBLdr9AuyxDBYSN(MxXF&knnN^%G&G^~1dqO!Fcvr}AL@K? z411i*AUr9@*lfdT$+u?JD83)p;qn*XV^2DQI=jhH$<0Q4HpsZ0&Ywrjsqi6y&ds2s_Fooe6DLE)B zvu+=iKb1%AQdH}Wd;C(qK}`vHxx;Mpd9@##q-)g9WF3# zZUQtLh;g{+(7$9>2(GE}T53%>)er>dg!*Yr;^}YC51)Rq2Hs$thZYo~X_v zE(8dpQ)?-I{O|j-0F2h?0003SR-qkxKol8lma!yR-dmdQB0F zjT#@xjg~C0iJe45Hwm>0k&uWX5S1t50!lX-h-asbTo0Tr0ck2WohCrgQ zPFpGhx_H=6VlXNQDbRay*;84l>fH|MFNbi^H_-;7AlaM{5m_+S8T3`W4>3obM%`H4hyqKgO~j#7tf`!1)NSb)Z|{7muf7WW z@_0n%y^zLg2vj3YRzWix6N;zcj&hkzc>QS0G zB2lm``ldQB*_sz%WFk=~w2!WL@cQXLp1*nf^!2;j67^blFtC?|2A!Ae2v#y=)e1!t zr~so3WU;KOrj?fK?0#Q)v;1>2vm&tNTJX)1sNc*B%`A-DvFM-ZN+KPuiu*Ki@m*Ba?v`&w9=FSv50<)w_#fQ&+t*^RHxk4EBam!=*zp1}eAaBqD1fHZwVh-gonQ|J`6x7--w z6baxw(zLvrPYNV&`?MmOEr7QR%=PdilA^{Gg!mjmwSr0!0P)NG*2id8#IKuid%FPK zpfpmN-;kr^uE{7FYQ_lY zqvd@|Vq`3D9%z`0EOF;nRgIH-t{XMejynNpR*{E+s)`3kqfVvy@bW37_%fp$A7>dNL>RX;0-<@k7sy;YOu-Czu1d>fV5vLN_8r8|&FnUCn^n;4^z z(ox9-<&>YJ@a6*w`;|dhPiae*u$A*lBZNthR!IiqSl&a+c+r%_&*KJw^ z;=XL}A`EvC>4ZrPdkaPWAFWK0EcKj+;luj7LWpA_eI^L@ahSe_g_{&ssiJ0lHVI4-ug^ZE1iScUEBx$aa>Y+c$SRY+*- zVw8Wkr|_ntjQhQzJK4@F=k#VJz=Za=%d(6`Id0c#f{2;aMNSzg^!dk6o3A=J4Ai)vWBnGB1U)k(n$MyMzl+hcZ*%Qp8{&tDb(tjoqt zQ9N#%(cbRv>FMcCtlpm;!EmRlk9Nypg!fZKyBo^E(S-*W<2vm3W_OK-N4>)JoAZ?3 z?m;`ZkM5WqgU(&QY%8*xYtq4rU%rZG`8z-9;G6#k2O}c~0003Ukluvu5Y05Fqs#Nl zKDs;yE~jkP@4p2p#B+4QiBjk@ol;4&m<}ShcxS*_c7x`UPT>Y*qQY1yj3nhltn`Xg zHK$Z#q~Wgqie`a1O~sPsx;gWWEQlM$NXdAJzx`2AxeC82JQ_r9=5ZU7Ri>TYN^tVnT;vxl=?u8O8Zq;EK)1M6+1Po*E*sfW! zED_7SkPDJ@9FOlQo6R-MZx)WCM8@;T{XD6N+U&h!aAsfdF8aoHCYXtB+vXc*VmlMt zwrx*r+qUgYY@0W~^RIh9-*2bt)LFG^f7{jF&tA`7y?6KOPW<|MlZ}`tYpW0W6pB98 zwEN{fRz(3t%(2XJfpd>L7+UlIRyym9?Uy8m9(3Ouoguq(uKtfEwf%qoO$Pspdb5@CP zeuqceO!i+lFkgC9(RT;p_oBCN_J9`C+}wvNu84~4VJ}^S27qeBELrsW8@oXz^@~L3#Y%?lSdBfS@|c-# zvnoGp^GYJ5wv(z(^X?)ChW^+Y=09L|&$((DBATdkS;RZdEJ98sP7H;!U3AV+q{zP9=u0AwaU2RVh$-^(W&L(vPgXq&Q4+EX_Fm{{0C*J5dz|QCC zH4}6NnYV@~Mh(y|`PJs1hoB|<-Rl&2`(RR$o4FpB7OpL1c5@OboCPX$QfVdWHoFB(pE)_Hcb*Yofb_hFhA$>v+P_l#gSGvNwU!xkrqLbF{ zg4_B^{shd@EAnj^k@Aw*aCiE`@VLfOmUR9J)qR>^$k$gjrjI0Na6|gSKmEB4yI=|Y z%G)wGAhIA!gW`G{8UQ~H%N!V38#!pg7da*JFs;fi35jI15fhwXr;9|T) zUn&Z@+nS&12q*`=K+op_qj+Nquq6dECM?Yf`)~h`#9P*B|7Q=vVWy~4LRkXU|M6r$ z)eUU>h@+|c_n4*aan6BXZ)bT{Y=`+NYYAig(AM4!m*+!^MoSM9l6c$CCuirztq53+ zEfvI*L;=)i2I0 z>fx?}*sMQDZYnoDI9}O80rJYp;ns*it{Y|qIg=ffu)J<-prHnn#Ro_HwGkZWBJY*% zf7yC}cPO5Ua?7d4xi)5&*EAJxiX!PkZPrOpi$2{yta5!yt*Us4OE*zh3f^K7r0()F zo~~UiOKdz?7AEq-3cj<_a$}%AzTv{ux+Ocyn&j|z^aWS5Rh?_U!eQ)4mLe%jG%Y>i zGNAOXh3SK8E^#C&qBUy3)!`AffbQddwN$b(E>)g#t%@S6OeG03S%Q4GENMdEcGDcd01Jw{<4X;Wdxn!AqPaoC(1Wmh#eskN zIB=W^Nf7#H)K#~D=Vi{0wlfT7Ihf{*8FsHplx+I32UT1}nk}k@qcy9|HJLCfl(t$D zq(=Oh@Yd8`F4Ywu>Ec2rQzpz*UW-Q~ET^450=*$q+Kgb!e<}2hARhyZgtlH#XXw9M zwb=`rDt7+<0qx3`9#b3JiUG(& zm=G*UL{XyeRqwB3z<@#=Q^9YuCpI?_>}kd2zzXRz`9Mr`)=4?(Vp$Go_&pJ%iqKmymH-likGRT1*M2VAD!Qvz=xtGJa0 zt8P7lIL#aG_(Qt!O%T5M4+44)_@4iF{9gqAk47LK!Vnx#fCvEKO}b__s=L{&b6|Y& z=lCDcupzR=8x&u#MO*2mv&`$Ivzg6J(O|#@B%5U*kp7Vvi#Dy<_QFTfj-DUbED*H_ z8{XUF_P(0g89XUYIP=l&5_ZV4cYHax2)RQG44`NK z;usShy8udjQdao-kI4UGe>nf~9~2M` z0KETq`QJTKRE@y_)l2{YH?nKyg{FnWIvd7Ewys|dci3hvN&F66Q$gC0BwO}m|9nf# z$3DnSO{zSJv{2pR)aO$tfkc?%{y_9a+Mf-UQV||HI>gI80BDGut~UqY+tmp*i^4p5 z*5~c+#VBK)`?u``!5~K9fJjIH08-91GfUY=Zk+-7qdRB!P!gIfe&uDBtnh?HBRCea zoaK8}l)^@3xE44krD8nabCaK}G0ikk#?zZ_XI*u=jPC61{q_ApPn~B3OqGGLyE@v9U1Ns%+jz>>NF3yAPTvU=NZQf42XMzNL4;mO#GbLhncXog=7qi{?;d4sE) zk9sT*IZRaxz(|(eS6wn6+^wp4HIvdDbjZfFCa9o@anZum5mgK)WSyiYaFZd9v~HPZ zd4k%>M}T8eJT|Wo%a1}CeR9_H=dLUk$*0nh?qO zn=+(|Fcz#OqD4;B9Z_i+f+M1FC!i31Ct?M-Zcf>7s(glG2_`%X*}Wa9FUc5{H${exsh~T;-qU zTm|BjZu&U*LheRm=ED8gq;O!xt5@*JWv*kf)2$TYsTB@+tqPsWPmQ~%orS21hG@w? z=U{XyW*pGo>+bX9veNHKQf}kc0ix+q+wzg(!B)CX=bDop-5D9C>r>is6PL{&BEuMs zU;_O_4HHf-+iS!uPNwPne;6W+ugjUp;NprP`h>08LBx8|gwE4aTI1K!$>9`smQuff z*7!TrOmHc%-F}BHsM9Mb%wU2#`It6+npu`1=uf1Sm+J*Bnu_VqMr%g!P%sPibJNm% zF_PMPZJFUG;nNLN7h3eNnTZ7x9I`jc<)r3lr~Zs-S{qAo{D`n#pr(o`a@QcFeq%kW0|~bDb2x|VEhJgsK7Rf9 zyrrpgR5Sg&_u&)?IhPHkCEs6!0BE&z{0Z$F-*(sj!d@@S7e8D@ek|7PvT59vMQ8u;K0+-)4!#( zZ}(fq#2l)A5q+uN}Ce56dIQ*nWg{k$r{JHLbm_3MbG~beP=HC8?{)Q zle}8YXpuZ$iLs7OgiNaJwr>8?*t^l!9zc1TA*lRUk&%y=lUL+wfCYopJwy2q2g89} zuz9?fSc0O2eDcumoZm@7QgP80QnZQ+GJ*0KiVT$|Y;ArRTD44+%FTypSxQQO^2&^e z&*t%&73f}bs4RGJQqwb>_9H4#fz^tQtL^zVVn=1@yE?z=M3deryMzx^($?>B_yv!3 zJ$Ov(DJ!&?xPluMcc z|J{I2sDbX~@-C^qLg%#8>mHLyQFmYU18G$}&L1U{f^oC{DQ4!YDvO$3#iw4Kh<8$O zZ`f`M^SU>IQ;LIS3@&wYUI*z0$G8<#f8LWWHl5^$zZevS0(4g$OEtLo4JfNHzi6k9 zYP2&Q?EE~T@QITMu)zGce6kTH@p#kek-z;G4;YKEaf2T{X&E`-Uy07X@IKVwqQW<` zZkp;&wxojs$(*+_mF6L7e^8FSqv@4^1s4YRR(U=Kpsk1t%adtZFwf8S{#^H}zRH|$ zNR@}T6{aS(2QW3m#*B+d#AYj!-r28lkG4>NztbxnHvo%}t&aX`Jci8lKafC`vEWbs zg#VLypVFq^2}=NRlH_0VdqxpE)@iU?=A7B02IC%>VUzkVGnraim^d*^`o7j{t3LVn z638FC3NXoeDI6a5$?WP?11L0TFk|nNp4Xy=G9ZxE!aumaK`C7b-I^+wN@hrSO^vyw zt>rW$P^o(E8CQm>{!j6}5K9CTj{GweZu2Nbu685Yo@v~l4i$s4jFH*k{7Prxl{e#? z2cfmrI(2n_N;T>{7O>^Hv5HZirAeEjB;XuEkj`0rwWC#+GsfwreP@bABNf*u#k`7z z6W7w`T*Ct1a%sStk^Afq3!!EAp3J$3JE?*XqV^gt?K6Hiwn@_@Up1vuoB|W$CKOmz zMSj`a@y-tm(TN3i(hkX%6(YZ)nct>E%fwA+iv(pH*hQnL0ORlM_UE{Zj|1ElJA*S3by(zQc*8JA1V z!GeZr+Q{Tjdpbm zCPw&Oyaib8GD7*3Sfe^^iu_wo3Yr@B9aHKuQe^- z1R#QIfk12r`gK}INu{xu-Ev(>7_c=ip z$f>(Pu+nBdtYotDI}_zgWFHIO%XBW^OI%uh&As4>pT)0~G8Wx!rns5w$2A3vPt_qF zzj)iwFFt?wHY*eonm$zrxlq%t0X~q^pPOg*RW-=Ca(P3^daYPyi+^j4Kq-)PL=jc% zJ(aRMA~o{OK2ap3AmzcfCe8M3aqS_2hB=hayhhhC`C#!{|Io?EqPB7ik*p7+A>61e zRA>H4h0reMkwyHAkTUVYMyAukQtPN*#nCIf)!5z1DI}Givx&1n8`HuHTMCJZA)f{& zN}=4ZAIG=Cbwk6>YtATYnTy4^n0%Nugpu z-VW=1k)z&Iqd*9zAdG*EH2r6GgptnQq{`5R)4Hc>`3m|U%i~_Ys5SX%d{_Q5vf)23 z5vkWAm+=w97xgo+6Uj-j6m{s*6YA|t5oUfca1EwFq|H@!Rb6#ps8GLvCDr14%-v`Y zBV}^f2RRb`ba%!<2_wc)-%G8V)_CarcpW)I%r}?tuEftNJcaI@+nkL#UJc@6s;bfU zTrMu6jM7iEi!YRH;u4y}ofOOrKC%uS@H;{tGoS+jiBUR-M5*2D$rHp8nf*!hiW%{$ z8k*H}fHygWk|;{kPTt3m@W+W zlwl%p(vCpOSLBOCCETIYqCBp&vN&rxW{gkZ7wObCX1f(F6~saaZ^y$6h}|Z^09^{m zohLUm(ehy}E^I~(#s1Gz;OszbjZLvx!i#-AEA zgt7XvY4^CgTyy;^PaQKbZadF`$URko0*|S6W+Jt6T1X*uNZ3t#D?@A$)`G?(P9?el zM$PZ%cnHH0Amk^a`oNZcFidVNr5F^-5@DfpKeEMg^E{09(0N=hDn#%w;(uVY2Q;~O zA{6km6pkb!4v2h7n1{;yCnab}RarmFz>?M&;jdZ?wA5;UQ{E!gP= zP=LK8QR3n?shv@MTpflU)lk#pOU~SBtw&`dqoJ<#^?CzNdJOf^2mNrRht*flkMT1) zXCD(G1OZyKMXAt~wP0z)@rXO;hTL=TRatZSW0k0$?E6i=S!HM~ga;^hyg4Gy$7l5j z7Fzp*FPB+Q8~Oi`=@A*8)b<6;(5#O^K4OS=rE$cX@X^3#^9_v!Etw^WR(|MDL)1;{ zk?(V%KPKQknt^kV7^ujo6xCZPHBd`z=Cj(3aU#IP@Zi++AdwPC}Gw=vZqK%uT{rrfM zo4~u~i4dv^)!O^Vh89U zdB|je52BVLrLDLXT+a58K#B*_VCkI>`H64D3ivx32nwN~&@a@Ov!A=0lF^-^4MYiF zWbr<==105=in#S`3bduRe3xRZ@i=Vt#&RbCzib@1x|wtC;|bS3Z3}Euz#aCW#`h7tJbTLA0k}JG$tM$!-hXasp|C@`TfGNlY$Eg{U?k9|%tOmYjBmeQX z`|0H4wuT+jF5Zti;1U??AF^>*Q|(iBueH1<;@*WnSktR=U%%2@IgM-1`_B%(LPwF# z^RiCBHIW;I7~K$?O95=$+R9~(-Il94X59n-uxz5N!(ra(K~}c#o|=nkdU5THYxAui z;&;NqhdxC~PSi-?*)P&GWUcGh%h0Z99=QS1KUb&eE)}P5hm&4=i_+hXnk+ip=_#gX zhSh_&jvV%hmYsR_+d}9#2fS%N?)T9LBgiK!y}&$=Hm4t>m_9(wp1g481$Ae1@mt)i zYEK&5!nYGy*l#n~6W2Vp50{>9VP)U&67kI6_rKyz9sXDB{eSlt_xJu!@^@+LPs#I~ z7A1DG6XH}+#Q24^)9IQ_DxBv_-tMa7ccQtb%p$*N7lq1?5G|!K#uA;Rmn`L$lZTk{ z-NXHtPVI`*DLijk?Cp85soYW=h^C9NlyWP))peE6#M{W#CDthwTMhhrS|AAKqPRC) z$fFr0!H4S6<564bmUq0V+^PLw&ic|(lw=bX_Zn69r4>9?W%5&#w_DJiw0B?i!HnZD z970VKq5RlDM*v6*qK(Hp zBUFMZx|#*E0=-7Wy#1adNXwoM*~3$5>DU*`q!aYb!_&=%!^;BJWrk`mzeg_W4^Wx6 znVeIgoi4lm`^!Rc4omm0vBviL>@;O0I4Mox zckOrOahgh);1g-3b|A)JH(6}em}H^ioVw2b`(SXRM`Q*-P~BptDW5CkjearnEBWBD z`uUYt&F3}?^-ceU@Izqn{she5r!`Zsw8q=z6*uzT1$K5xEOxeS+IkFKyGiqhktM}K zZsa~jq&90J^Pr-iF?$ntK!_}~3@ERwCx@f5{3`1HQP$*V#&(k=8nD-DpKb6h8{JjA z0RE5ruYnnwLi{VTgUYt;Et&RLoR&*kI{r0G8QOBr2jOH&ji?GRrdfUM!N}?mi@(Fp zL2O-A*50NW^l3N}Zle?^Zkm1c>xa3gnh^q12QBJ*rTL-E}+k9oAYWi>- zZj+Rv+)Cr*od}M>S}@Zct2**C`Q~Ra_Wf%U#fu}?;%r-k%30ax(+}M zbj$*>ZREE=NtxawOSk>H1>Lwoqa`t~jp~QXZfTL@6Xe5Kr#zg6ySkM$S4k4+^i)mE z1~l9l2P%&g@}sa&Y6yoYbR36Kl=qoRd{*~}6C$*;ds;KI4(Gb6?t{h&*RP#SozZnP z)PG(^k``>0ZYEC=!Ik}G0#9BUKMOWV;Xiql%jaH z-ztK0y}#wlprbJFJHkeVgZZRJOFzS=`(8!$I5sDxJ{GT3PC*N$SO|Vn%xFnSBOr^%IVke#HU4=`xI>h^ zN3vncaSL`HBp8T$>94#iN+L2_vU5r}P9Ywz=)6rbiob}-yRQtX%o zZi2vZcP#x*)aR`E!@9KXaAWB*g%d+lU5QDOzObXMm|(Rkh^;qcS|DKy$S8V+Tr?1e zNgjJB8Hf|973}#hcZPgGICX{qCxMdJ2=_PZtW^wXK3QlH6g*>c8~sWGy~#h$RC)~S zg}Qrf>2`J%nHy&C@)cs8kyP@~&{|s&krL^!{{9uPU}zRH6^{`vstV_IVuD-xtKEn3 zI;xSt7h}W4c6OhV>Wtpgnm!79`H4;rM9T1f23fP6Sl`^9hmsu_AlpHv6s+4;FD`Qn zP9JVu@(%H2Zbn0w;ykbPrsdT%fs!(kzWlKQ|MkYojn{d=0C>U(0^0dNCI^tikf|hu zW;BjYWTsL{G{M@*OI zIDVSZ$z8X;N85To75agx8A)Uhtx_oUk)j3I4bP0JBvc%xPw<=p9{z%bSz4KrO zQqr4L+jGLRm7Nu<_>BbPK(YEz9DlJ=MH_~6P$Ot8w{v-k!R%1s37kG*elZC>oEMI0 zJFF;}A-uY1gvd>@S%X@JP8m~-#DL_v29-`ibJzsJSVy8m&d`wT>x9@qK0}Hj5+D%} z*|e4eI(`_u%o-~6ck;&{4UqJghg@~WlESebCF(4pE~Nwmtx@vSy1&oR`1h3|rH!kw zv%?z~+Q=W*f5P(!T_1#pMB;6uZTI_(q>$N7WOv0^$khfuOWJYTjH7Cn-db$0no4&c zATM++lE!l3FEuV%g(G3mzIGZ-w6)cm=Ah)0naeHDV#^y&v+ia5c#jY9kXdfQrb2hn zBM2Nhkkmx_d~31x6e4!NEsGY}WCID?s)pP90-&Z54ke1z>EQ>76!qXWoMOO{KZcIu z^nxe;;So~!ul^_5AWFD7uti!-+vzOX$&uu=2}a`HzCHH~X(tZb4CuB1WD(1Yr|f{T z8V?7P1NYty480z4P>>L&LUn^;*%`of0%;Ga$j?`7mJulIwpl{>0t+>Q#8x7rWEIPc zqile>2< zz&dl*N1YxD?NJZsW% zoQo^malIji=m*C^uGRA1lvt#}7c|Z&f(dbO3vL4>uDgFgPMllcpJCG3OAuOUp1o__(jU*^}I0~Xxv>7T2 z*Qr*)_meRE*6j@|{>RIKYH_IgaSnzkP@mfj83oHOCI}r41#-uVFh_ZZ2S(t#R_vzY z{5K2=|G|K+&Kouws(zk>Ar7?T4kV8I)nhrFKXPM>`szn7A1IF=6gF;f7~N)A^etoW zTZRYcEsF`UNw1Fv2_wWMa=a_bA#@2vi7g2}=j}%5Kq6`+#iJOhiFy5kms|4Ni~Z|FPhWqc1$klkj|*EKL162SXC*$9+uJ zKJJC-0i$e(LQV&Zg@lYjA!+c8h0w`u56*D)*mJP*E1>#;IE?syVCNK!o5Rh!?5W># zn!oV3b{2P*%Ry9){m5N972Wz3y<+y<{hAwXwQ;|y$5ZX3^}_`II!obj?rH5{rrNePz>i(Q3XQRo$isTr2%{jOIF~ue?i+^_P(IOavil zh(7-{17X*Z9|t{Z9QAf64&33b!qwhWtdryYans3JjKk(M07rnHd54G8Jx$1aMujPa z+dDp1V1{8RRB#rT1YXMir+!RZ{#^NglvQp1=0CX%k~IBb7}$zF##8YCqS64OzPPV2 z&@coQ>qG?WRT3vIl_Sm;4F}3|;i2h2v~f4tcxkxrW#+(+^)a4{MUa$65Z%=wrEvD= zu$VIeXol=4D`7$<@Y?%KrVCyp-$vo`wpqEWxsR;pL&f&foXdsb6#3$^I1|Kh>JMNS z38E4L(WLx)kSL=#rAJEEslPWzE_=uI`) z0Nle6aMCX50Kh)nFm3|we?qwb6XJZ#n+`S8Pjf97hF27e+i-dSo)>^N^)cY!NgiDq zfSS@m_yj>ngypnYuDLWjo4;NJRW#hoj8s3uPwJg&;5=gy_t%$<#925nKDM_-(}d)t-8GyDy&8AQ4$ z9)^9EKNB9T2xw~J3r8MLm@U&KQsZMRY3sdf`Eb@Nx^xvzIV{a&{#1}QaY%X(n&Lex z{qMCZxI&cS51;5omYD!4@?El2E)+OBATFL*X5a=n;lsOco}K9yuMsa*N!x>ZfYg@e z859+B2p%F;slpfGHp5teH8{hxBx+7S3r8p=K?*dUYicWsF^x$6miRZw3Mh+}(?1nX zot60|(%kNCB`A|#>2rP!xy@uiZvZ@43i9Z`{pNi#8W;&=*bq(}v2BHIkr~=E1;+pG zQ!?K|Q!x4D!BHsfMUqS(a-H!{7sfqavO^0;DP}=ICpagGB*2?BTfomb{+4yK@O_Wm zZIL*?KpN-0t$<|IE4?7LnA;2jUmqA|{mQ>EGy;jJ0T+fF0q4Lz-{?07vducY9}1hV z6)26Ty8okKWh52lJO|R+#6?f+sc>a*NvLpvm@kXRIA(=@C)w*w#Ijo#ohCoDq?IYba%QTnr4azigSc~qhgS>N@98Uh_&T&0- z(;8x(2%sZ@%(8pg8p4o|a%X%%9thI`-@&bNxKGryQ=5sSCshC|YCyGd=K%x6D1YJn+pPIs$Ga9MTtZB~kRa;&4U zuP9uar<0*imi1}V$uo{_H=k6MjuxG>zILmCL;a2kyKa1j4TQ1rX(O5D$9sy6MbeM} zjdo*otzrW7fE+<60N8ZP`=Vnb|1se}fDy1dUE9yzaKPOH!j=RIN-8TEHM4^&!8*N~ z$@X_Ln}_gD!0S>6e%*)0HeGWUEC0t9PHHJ00fD0J{9EM~I;*q0x6dGTm$4sdxIM@h zeMAuHtiG}N)B_%a8|3oZ04;nNs;<=LMOJ@cE>^&gK63`i5QPM*o$waI&rg;(AB9x_H3k<}_Fe?X;1C(_l~D+E zZ)DgmQaDwjLSY#?W17Gp)#rBlJ!5p>Pk@CC8I$m_YRFiYkBrhtVJtw|8RRh{(bVz` zB7da}U>3{Er1M>zR?)0qQS0t}sZR*cyuH*KvtWegZT&$k-}GX8*3kF=QMBjPg%?6D7LIoEOhqG4& zzoDAj(Tk?edWc$$!m?=dKDe3%2JWD4P`ZSk1(yM*i)+#bD$5lF&~r#ocJpNQg3Z2> z)deQ(jKey>I>}N{m-VC9cMcE$K=TPBT=Y-r1l-GrFM*bBjbyc67+x5StHS&MXncl` zXf2cb5EIh)>AkdCwOrD$71REEdX$-*+rY_vLeCwN6JacvUVI0A=jO0k^_{Em{rude z#MNiKe*K6Zvg~!WpVOno6oh9w31nV)*eBnG>&X^v>t-^gqh|B_cc6z-A`mg5p49Ij!o1fMoXXMn2MW#sWs2XH>qggO<^C$xIa zrLskyv^^0Sha3wF#Ho-#>zTzFY}g^U+W56jjkTIO=&#}@R5srN<^THU5azj8ETD5P zPW0D$x0NF@Oakj!TQ)(Upo(5D+lR2oS{0s^DjNtG&3b+iJd635c@>6Ra$=l^lACXr z%#9J_KVLk~Uem?zGOhhbtBXu==<`QP{Oq@&Y8~m8hEvOt@%HWa`C%m9f8>NPUPJPc zlBpu81XH^Y9@I_m3p9JHIk-WRmf9ozZKq~(Mya-~8n+X5hxSgQpZYFSvP_ML5J&s` zE?hfs58xsm&YP2m)Nki&f=Cr5N53zV1x!s1l8n2@Zq;aiTu=c@KHl}HwW_#S-5V_| zCu5X1PDJ?o>paBhB`f*Qf+#I2`|)&77ZpPL*}#|eR~(cP1yDaMNKW(2i1((-Qipb} zuhj(w3$$3w$$!jgCwqT~n}u$wOfVQCfCm=y;W5{Fv}fy$mF&5gRmvZ$Q>>0BZI@$x zs|a1crFDIqUzaL&cpm-D2keF!`u|a;&26HyC*3^nmi(12D4 zIzg*Vnc;%by13cUed+jndAxr0{P56ZEL^TRg(nB&;DBZl`)k20 z?^i*@IJbXgS;3L>`kyr2FjPcNlik%XFmN`* z>Hn4g3t#~JH~;^PW=0cmz@-TQu-WdKxvBk~p(mF7ajEM^pozvw8gJG?s8l9pX}Y_{ zVMm&swkcQTEfp&03+5Zos`R$~m~0jUSYxLV?MB>zZoyYM%uhZFjt09K3yb zJ*~BsVWvG?+VFqg9u^wQnbiBZ(wo++Ug@fT-QB%4cdMD5s$EHEs+wnEa88-jFL$pc zd;NcSxbMkC+}b~WKCP0kV#Y^h#3ZCRAVsdVstt-s}v)$*<{kA49^ zAN%)>Yt?qSNLQWtZFF+TGuSwFt{vXuk2(gN6s)zM%AOtJhI=J%l;KL}x%M!xwmP`$ zw>m*+Mcv(;AGxZ>HP4KL%g0``;B;;?Z(o4AZu zO*-0kJDMtg0f4xlqptmXZQF$EnESkQz7_q(! zSHf;RwLYWua`4nn$&4wpA1%MveFr3I8UrmX@~T=T9aJ`Wa!eph$Tfy@+}z!M_rH8hm2%LXECRo<7e(87k(yO2?0=jl94&Rz zZl1*q7N6L>;PZeXca*;D4!C{xy>@$88K=X1R5TQ%)d#N^=rv!56fUcb?ff->S@L8~ zQ>&=C{Tn=mG056{THa8%^H+(wlJ;4m{_pMtQL_s1>n{tY)l2bsxBxe%s0F5Ij01HQ zT1J_>afkKV#V1meiWkJHv}KK7&+-~$00{-E5mOapI{r@i&y3{?-c^N3*epy3d9v+RlSYD$2KvlWeo=herj9`xUkmgIRNq4`_VjkbZI{A!qG$t|Mly@q2 zi?>h4yViSmljR5y5(g3dpT`2r9m=A^Sappx#p@f&GSFyEPs#!b zp)9ps!X0vxl}(D}ScM+ur3zMYgS_L#yJi|*T7Hx?pSe~WHgevR4J&{9{@?L`5b9Hf zR~mIsi5v)Rme1AsuC;jtO&mQ?>)a}9#tECejH0K~k4%!II|F$QUrZeyUvW`B&Sf}@ z;KED(%m{Y1pXP@j7aPS3pS(og^~>$@7f@hB$kDoV5F(3>Iv_dRK8d$g>*KQj@Q+0f5~9lK%qUjvu>BSYG8I! zHAbmqApUedGge@(YUyQmO_!?V}_o>+Y_H3vqbs67$y>h-XO0e+dymu*O zxvk@t{F5xW$b*6g-ogyj$#LQr8{pv{Icpq?WG-m5YIFL|=}Q{{`r+=c)#sY1YiiP{ zm*(l8&UBr^u+l%62;f#fRWPHt>NRBawZOXZde%}^r#jwhvLI_r|v$vv&y@89zOr(K+4RF3vi<7Zz*&$AjGQ$7zh=cD8S)AREIAmI(36aFOJ%YTRFoD1*PMq?Yev#MyQkSupz(G z+vlpdF8P3vMJ&)aPZz~$Kin)>3aH>NnbK9hu>9J~#AS}+vr~Sb=vJs+B=<(?`L!MR z1`BwxYgH2qMDfU+-6yLf@Z4kL@F8 zhEcm51(n>_vRQU&{YpTh?qLS1Fphz&XOYGZ*6jY`SI8KM_w{@IM`A%!nnGU(;u#;s z-I`o7Sm8QT8|fW3c7E)?FMa2WXQF8B-^RU)d3HWdiq;*Sxn%3J+}2cl+UMfLK3{px%{zCrINl`KW6Y)%by-i-3|{8NyT1J~c==?; zK3JsL7M>OPrlaCnq-p^o-u+cuWcO=uQ%s3#)vSiXv6=Ql9)zl@OvaBci&3~HTUd=14<*ID}Rgega%`$?= z1X(`e_3B1+Wh(1P6fAQfjtPkVRAipouZ$ZNz|xkB@>!((qJ%zK$++{jpN!LON>v7!f28`o0A!&bZWZc)|!7!cwuLL!fV z1~@FaMTHAm0N^4EnZJ10oFI*~l5nd7ODchrfFPE1gOm00$j(#&X`Vq;~pL(3?oJvYN%dU;fNT%oSiNQhl0v^P@>NU#L%e z_$;j%W)9QwRx!Rmb!nt!WphZ2%EI@bKEZ6;4?#c5F`mD|UW|MGb+{~;n{sgQ@3H<> zVKDaJ%f1M=;5mCzC=&E_zoR9MTk*s2J8 zNku)uI8u|kQwj20K?T7ZMlcWLGpBG4N@$o=s)9Jf4ZT6oX(jZ`QBp@fvQec@Q3?=)Cwby;y<_ucDH=^`dcae;;vEyOeuSG+^<@$k&OeN!C# zTssFU5xHAXvYg=TRL}<-fHf8B9doU>EI+UNo^?Hpc#T1(ZS@Y*Q3V6I<__wT{~{{A-u=FonQyni?R~00B}$UukYCIAjKUmNh*$ zv-^hg2UafIJUaGY%NoRUI3{qvBn9mGaFaksU+*iY=fCXQwE}AHRHV&n_H;=>J@MF? zD1QP}k(65aZZ2j@)|4z{^MDxo`K0q?2PM*H&&=`0)+|-;l zi1yhbxJ8CEYzW{PwiMDhaKtD6kYEJip^HT{P#J(cV7*IJgOLr#60D;mY)Gf1xdzl` ztKwjqc&r~VqU)1GKSsvtF*DGp#rU~efRJ#qR79`fVM;;O(nwgcHg4EsfPxU{0BT9OdFd7&hpKIda1sPz&%m7heun5_yAPo3f}3jkp2{)e zp{a$emO7wQ4tA*U1T0FF!0_d-p@2AM8!`!0t)KDGjXXA8n0SgcB#cle>ibSGpd&4y zkTOi4&p1uux2hne8B^`8xb2swU|7h;GWeGPEkaHpjdU#~?xzS5OPR=f8WO{FWsb2h z)2^5F`Lw+5hErF38Y6myLHHoo2{#j8_d+nx($~l<3-uWmf*|I|{@m6Y+D>1-y6PQh@KSuGs$$-)2)un6x}hM$-v_v z@YQ%O5ZP_>^aVc9$*7h#8_O8P5ezK=Qy>{jQR+&;dl&qS*c{`T@2K2^8(d|cONbX_ z=Bq_bOPQR;lngF}t8&P$pp{d=Lr3z|RImT{f{`rsDU(q+ZGcS)_N50bxAjNIr|*>= zh;yp;>I4*lO{l94&%Rn3`W$3b$Ndi4o{gZTVD($oQ%leKI*hkIx+1tce4k+$gprCY ztW_W&0q#-Xf}5@baqo!0?nxr(d7NlUBOIm>@d1%u@t|_&p|~R&uCsI2K$dX(FD!F; z9sDz{2}l1JBiK3Jo;$VPP0Ny9uM@JNQZlwb<@G;6pjs(BOqi1xPm>f@`)0ipd0jMI zN9U@>%!<;m-zQ|YB#AJO)K2FZfGe}M(sdGFdwqB2=O_V|d<4p3czq-U4FiV%@ZLc5 z$i=bOXjc^M1*4iq4Tz}2T`H=6L8F-Ax>t7{Laq4GQowL%;!l)7`U2#%V~)ILQM6djv?%3 z3GOmRG$FlHz(D0Ot!xM$rl-d^8pAVdRYef%sDwbK9X3-T>%UY8u&qk%OEO+-z%WlD z3>~_fT5e+cj_*Sfj1cylx5Fh z&6kiAk|%`S%F+y6`pbCT2952QHVSpEgtitocQ`=u~p;>++{oIrjW|-=JJ)BOt z`aGK)-*3yp7|qD}eEujOC&7&x_9;x+yJ5fTlKgz!Y+v3ce}*T$`lHR}mZ4fmH?)_+ zUm)qe*;IeDcXM%Zu}aHZep-Ihjz5h5mj>q-{Z{mv;5hSgo8#?%$Jup%14TvztwD`q zna$?n!&>k7LNiyGllbS=-TNU?XT{i3%Ej^K=0tJW1;2Jd<=4z(ll2=QBJwP)1A*;bn z^LaEw)h3&~`eWgl>xIu|?aog3bH8I`TsQt~4N6`m<8XpaCVio+MIz&|>Uy&A$tt~p zp<>X?Ac&%+)``y|M9zDOy^UTbp{NP-WZEa^?e+5fh%75J=8ZgOX=XDis@X0%{jCz} zHTkuuvU9t9tkLGy=XqM*t#pEpmRv4=|Nmj{ExRIVf^Jb@(81jX7<7Qa-QC^Y-Q8Up zx53@rrEzz6cNiGl-Qo0e-@C5-g|kkr>iX2#SsfWWD=T8}41PHs(<9}yt_2`o^w}jD z{oUh8Stv9~jXulHnu~{4|Fz#DnF(J{`-pc9 znWu>h|8gbiAL5q6fc&ZUzTjfl6%PyOF0UjnS1==|UX@>siWH7%`$Jr8$sNJisXJtC z!BR^IVs}dxNv+gWl~@4TO8nf$70*P0VspuDitA-8)qP!~%LLICee%LN1vwoZyijai zG5jOO`fkdM^kz>_*Z6|QH=c!QTE1^AN4B+yo#lykV7syHl72ZRK97Gz!*)E+QjoEy z#6yr3pt4Q<)>kCeA}3Ez&3hTRqFJ~CpRe8Zjbrt)f|(A)vOVvSP9U@EncwxWf!4C% zc4bRZKY}N#`(?A=z~B~R=VTP9|H{m1>I z27Tzsqw+fb(rN#rO7b-S+c}vWI)7BPEb8g{?nS($)W;vi<)M72Zs5mXW_8DtMreuW zsg?RDUm3hmk~;HzV6o0c5T0mqeXD8A?O|VEtE*3O;qceN24sR zZ{y+V7jUY0O>x#QoxqZZ$t<1hm;h8lV&=V1deJ`}v?s!*?%;f!*vqK8JIU#^Q?n zHuqg~OOK^1@DvDE=Gid#-Hq;e!>%=bOYf%z+EuK&9ng1?x>@R0ehoT0lU#9ZU%#=` zhboi|tflsYPgUDm4ZpV(cX!e7@x2^wlc+TT0X>IGTZ#~w1BJuzE*ni6HSIhZuG%lY zHHS`EJ_dJ~I?X*(5ENk8OWv-C{9DAu&>%@o?p8`Q)rGh7gQRZFB0F&RalogWnqY>F zr|ZrT#j>gM=>$8~#xXyq40)J!>o^2ULl-t_nBmF*?9zB^+tV;>uqxzy`JHELd1n*6 z#*ekOvWK0Ju+hm4U3yBlwwBHeoL#qMZ9zTiRWZZ0iT<+clEb*FSmLrlX0wcO9Eyxfr1@m-}DW zFYH3Iu4j4ot|L?HU_;R7f>6zPLM*U9Rl)QsLj_7S*cjH9PGdLfO7d8pp$^y)!et zPPyE0((%$syg17AlL(jXX5!h&fQYlbe(kwHgs-4caqU@YP*16f_Kuj0m@nbIe|%G; zAy^{eS;FX6P3a^UHsKZa_Iqfy8JRofhshhPa#9#dh*uyM^b)-1A38z3k_Q-y@jV77 zkMtF{(eY*QFjrt3UEk(KtERTL!g?K-$Nbn5<-icR)- zH}f#Rytln#bh3RrTF6yv!sVxr@=?r%42Yj;ZnHciDyq=r3%m8BlyY@)G7{`LAI{9Y ze|B8`tBGH;G&D4%^O2y=IYWHf?Pt`Gx?|Jt=Fuu!u4!f?UriS~1SH(MlNQ zRtbm~@^j1|cf+uXI*I20`h_5n|1q^2DHsOLWR4AXCxCr0T{XDiioLT`x6eAw9c1rk zC7QyCK(qRw%tt@?W^cX$-j@wkBYZCxn3-#bVIfY+j!`YslXl~2joZsGeI)zornuP* zW4p7teEZ_bea*ukrl+Zwqe7H-#CO=x?ZYRG%3}rWzJ}_R_CT5B7m|_4{hD244D41guA32#a2ax z1v9vT)@Z4kW!_i>;&ax*UrPXiUx+9*nx6Sqne_HIn=A*L+lx-ievH>2{F#bZ?f;q! z*x2o?>pD}UCh<2kQgyk6`GxftnNUK;3I~n{@2AN1cAOQlDi79;__XCSE>?#qsGMpQ zI|j{Vt=1_@xSN7CIG-y^X<~3x(|Da7V_13&Q11F3)`nB$5{Q(pp?3=E!qQwOiOg5OOh zviC=|r!8mV=G@Qc{a}^CMotJ=r1$)0flZf5Txx=KyZkJ%#L{tnR1Pk&!8VA9BHn_+u=l3gMd- z2+4wv{>Xcp0sCkti3H(IDRhJ_-j_Q5lfMqZ97Q`#VBmhOLd9%eUzld;(+I7tm*&mX zthQ0Ggnq||lL26F3H@bC-Jd?4)ayvbM2s#=N}-YE)P}v|p*UF@E|}F|pY*_6wl8{j zp#M)(Tw5>WiA-KP9?6}j{MMP-syax=9%lqpLqt`fI%CYFDen-Omrc2tiT?D0%Hn~Ja3neU+p2APkGh&i9w8fuJD_R|ybeL9@?h!5&zcr%@rgAloG@Vx!Xj zBTEdpx*BmI3vgw3%f7t`)RpH!?6ZS?0%R~md&*$STNbpjeIsX(MwNfWFHO_zfU7%8 z*)n?Sc-ic4IZdU1I7{SZFfUos+VsWJu@ijnJE#Py7$V!mq^z^WC=&r@Oc*HZcN{T5 zfK_rduKQEj1c5t$DD3DKiYKM^CVlMF!YQ9)=LQ9~X&nQ$0gkplbs`H>qKg@r_Zr_8 zci9uv35pPzlygEI`U>>I)cd2 zLkrR>=NQKOO~I!dgjkz*5O!sViqnepy>W1^)RW=BvbKug@3M%R%$B0ZG@HAjU6f8z z474)xLk^MjLn%~Zmtog%bg6g&7@R@6bdTCo=ZA8-H6*tk7Hqw0|J=!(jyEu|#vS&` zWTL0e4N9uD7({;dAwtgY9m?tc2GOMq4$zZUa0w+kPBQ&T%wrhES-;%N-cA-;%oICu zr`Y>hNMD0hkl6DmR|i~45DX;zF~j@ z0C1%o3UJM6NH}CDg_B4HuUjWHycbO&LdrGHlMbzo9f^pp$ZE0mkVLkTIJxQDDPeHa9uT4T~Dcxtm z-JgN*&oswt4nf;qv7sF3t3K~p;R`!Rk^zV`1(YIKQUECzXrdM{e&<^XjisTSDXtj) zVt7}gP@Xbt?GU{Z=-gom%{6+;9@Y@W z^(qxJ4KksP`Q7Y@yb!mX%dp`)&@K9~{J>Yu$s|6fL?@KB1eGJreX|^Me?<;h_ca}L zOCu-eVcf~0*}*f3hOphRYZQ>apGDCL@9l{KUi)9x!2 z*G^#)q@CfLHVfaO?2XP(9ybPXwYKL<+&+_fpXIdp6NGsnH6LDt>Jy&6tVz)?W7Y41 zSFQ*{b@@LH#d`tqSwXoe$l_4?xw}!*g0;SA0Lvg(0CSGeJ!T;wUm}5}SW)WQZ*ESd z)|bn)1>H=4h_X*!@r|w=hfT#{qIJZ(CI%f%}Bm z-#@tAAu%$>YOo@fsy$5EH{B-=i7wxQEEOCIQOue0gEG`dN%5?3|7xIY}(5>dwXag@M7|hw%kGP{&18ujvuBe;)$Hsa1i8Nfx}%A zc`UO&wjuC1TaG%4G?IxmBuvdITK%ehY#}F)wfxy5z&^h(2k79zmvf ztLa-yI}+O2d;Mw(};%^!6CccCjCJ@gL$px}))3?BG|F#3Umz#iYkLIY&1RdI=Mi*w&u{ab4x^z`Z1~NzC6pl3+Ok>;RF$Pd`+D%0tBiBo=*^}5b zcdU8lwu0T;2bI_2pgX*d%rG%hBHq(dU|zv0(h`knT+Ee*_mt_}GND76X3ITtA;BQq z?2}qzxAgiiS=rt1=XuE`qC#$WvwC@gbhzWXeUA+8pGC~+9zPeFD&FXyo&b+|RcwQP ziV~O+P*}vKmQqj@nm;5XNQ%V?5FW~``(LP9STb2f*~HGg5i-@|VjGJ_gKGS<_A4I^ z%^%XMFL8*;`phn+m=eLH<0qBygkuVYCUsYmP@JU}(!$&oP=Xy(IkR0^l(+mt2c&uR zgtZo0dm9m}%Q;svOs$X54hg5`I|Ns4;a;@VAhL4!Y7 zr=04Z~I@ded=FT*}uSGY;#fJV+Y7cNd$@IBEtWKLmAaa78e*T z4g`8HvJ$Uu%~wrTu6T^q3V#GH;Sy?UJP?t;oO;bp@J@^Rl6G(I*I19IdcV?}pWg_@ zsk2{(l@O?d@Xs=ZHSc|YQF$gRMu_A`GFM-qryE|T$!BSuU&U=uWFJ07Hz z1P$|??{3I*`#I32gyDO?6U)l-Y+&PD*S|&px5|POVuaZsyiuV@6N;8KO^TNh(~9m;lmJ-`vO*j0+u{fG zwqF+)q=|8Khc6?81!a(-&Ir?Rkr-TlIC`{2Kd7SBz#pJv7|CUO$&W~mVn&ZQywEK_ zu1B%2KZ-5%@6grBlD%H&qU13O7jFMV zfw0+~LD(27qJ&{i9pPA&@Q1oOBC00mwkC^il$3@K@gBbUh4r9>N9G<0&Bo;A=vJ6J#OIpC0VyZWB z`Q+MALD{K}N~Xox!6Q5OXVzYsy}5C7LToO+mEQLG7&t#>oImtBZA^6>zjwWE*!|h} zMn!#?E$?7%RqwMOjeb{cZZl8a58rKe3cGpRn8H&fX*~Pmncjj>OXeXZe<)`w^l|p@ z-_Gl08$bRvt&LWf=kl_AlrA<7v(w{b*WX0`-mH`XfGmX&B~y*)k2Lu{3?I=; zDe9sU`%pIFK%*~H54%Y_IfB-1;nTwU@Y~%F@A2>Yjx3DpPBpW3GRKib#?8p9XrYp7 zrKjy}=*;5MF|`h`o%EQs zma$CpZ0Sw|oaN~E*9-v1>P=1d)(G$c4}R(7>tRurHLcURx%;iEkJZ4{lU{3Yy@B-u z1OC78-VxBh4!H`=w7V*I`M(%bSMw0x%fiw3_XTzZ6F*l}m12epdTMg{lqh&(mD3~O z{+i|Q*G$YXuOOmDOc>lAd+x=5KQgp_VpwnA9rK>>#Nj&~jpgn!njy^r3*B7Q^f zqkiPPJl_WN<}Bzt!ct#CFzw*wWXY7j42iInl&UBp#R-{rO(frYNYLbv+)@S3sQNpr z)NQsQpre&M!;3bN61Eapkw1^&kG_=|fMr!HUqd_yGO$=6;(bR4K9iX3DksH?4m#3^ zrkDhgp`s=RuanOX1g_I+HfdGd4(W~Z1rS32?64dqyyk<=fbJrXCub_qvZ6_!#l@D` z7cpV*O2S>Scm*3GpB4PI>%M!QB0}BWel2tZ-o8OJWaib4>g)VnB+BY}&|vXBpFal~ zB3Dou5NQl>i7v+CI-nBf>X%`dZjwneN!(up{YEO)#qJudWbtXWu3we0<4X7|80__y zn?tU}=g(e(Mxmq-sacE(4r!yT;*4?)l4r&5lEpt0na9XyU1Xf3A!NMTT#Z%QsiCx9}u$a$Bxnv z!8z>ukW;U;)vq?ARwlvII-GGq++YPhFa}Szi&ZWetkq!S-QC8&x2FR-oTvs3+6%5h=(!T*oEd@V{R%Tzy4Vf2Mjg+McbrWi+x6NBxm)!)yk>?Xs(1p~ z_qjBZEONMr1b}33hJrC(0HJHT*jh?^=Zd+!(#(=ixDo&c#1R_@txP%61H!!k$(1&rA4d*bS0{(;g69F5{%&l#iEBYi7Ukw zG6{FO!QAghmq_3untfhIoATLjMxA$N?&gWPpMv?n4u>^6?F?Bz@!Z7Qx>6hbx21PfL~FIe;`Kl1+T3VIAoq=01SZ~1^_rqvHn)^b z`*OiK3xBNW9AHoDN+3al5orT2+8)4MK=@~a_GJK$_MDhx8nkIzZii0JPJWJ+36uDR z>x(7)5dp-bq%q4h4ML*+`HoN;NrK0Vfv)Q$J1x>8u+KC%ls7KE_+~03VB| zW1Em^>|6R3{m*{jz+a2pU7zZI{5x{Q>A_2}c7$Ea4cge1qF-5;#N~I-2{NXRq#gGq zG**9pK-_dONlRv>VY{#*f&#zPav~)b{bh?n#cO4?3r}U0Z}Yt>Bc7baO!lTKqmjR(K+N8V3F5 z2nfd<)cAY_GM0Zl1AkkO0`JStz%Bl!Sd9&OtNLROUMoL!57rU51>;@l$q;-Uk9^lJ zLXw$2jaDKEQwqWOg}NjWa%e#)1t}}W3#by;)m4*e#4gdMuAI@&!vo8CwchU;*%wpx z0CH|C)-_x$u&$*&G7G>PRfrO(yzp;DL3B2re0z003ufEm{MKfMwWnH7J@hEV9Btj~ z2Nft=@h{iP4Wo?JvK=Aa6>le(u=@|eJ)X8uyn>X7QoRg-EVv>)#qtMg~`D(&6Hi+eIBhMJ=*VX{iF5+fSV>3hRkgnOSiF# zJQGd>d?OL=10OUN`~udA^5Dbh;07CtEv!4Uk46UX zEYI^S=;h(0a-_D0@@S%{1zaX%vdSWa0g}1c772~ph)%6!TD8x<;0~=gjHORMl?`D8 z0O}$e)Na7aQwk^3_GYA;oTa7E6`k^sHHNXWzThO7-QL1X2%sn-JGM4jmld1aIrC1j zAchR9Tmyp;04{`T!lNWU+_<3MVX@8GT{n>s=^&wmduHkW7#pOjT4+q=XXAVN!>rr= zlYoU`DUG2@0>U3uw-ipCDTOfx^BXgXIPZ3&xGp+cKkd{d!b++<9KY_BXhiU&0R!_X+1P zk0fqLJPa|0DOWy@WHOnQ1ue$bAW!Tz-cWBFz;fv;%nYXlsq3muInDI5Kx1ikDfi;Y zE$-U!ZEd9Wy;npt4YAWS@fjks&2T2s^mE?sr14Loon6zme&?52i1s3%@A{^7oZ2%* z0G(cq)m;W~La^G-#_qFU$9f&%tH-D*UrAdlS^vOU4O*2pm(Ml_;T+%T_gO&(!rw^t z;*D$%!ny6!j}|4O%+27GW2+Pc!aW8gI4MnxJBdP;1WlYu4(W%YlwtBo(1jMk;*0+4 zY$?ip$`cY9$l#`P@v>TbW{b7MP+U)>9wQ4(2a~2ncfhg9P!Zfp>)2hQul4g;Nozh_ zc+u~9yE)j=``CPMm_E0)d0uC_CoqnVITU=;h7W1rSfo;wAtQ@4evUBVmr+@%MfqF}Tm0u@1gT;(7XqRs(`95YbVM;j3< zA)q-{lbPvIuoxyLjDv2v$O#@899s8RrTmmM7iA$>qq%L%KfhsM@xaH}+hp;%ZuRzV zI9i3lx_jELbgV@@2g(dx0ccc|LjYy$zI7?FJ4{8@Y;0S!vmy~aJs~(!OxDX`;Z{W{ zpM0p{gmxP~6wffnp1vs23i$65vc`yZ+$*+M2JYzrDN8*dNh_vYTfJ<^Ee5?Xuo@dW zo6Yvb$6{tffq47D6Tyjtjy59I=dT$Fo0w4INR4vYdB_!U4z_7r&=vQ^)y4cs$wnRzCStMzQ%Qz2;lQkL6q!&)F}0~<)k~u% zbr{3KVR=^nxdXo!!{r8j>q`((AhE?k{a!1Y?SB8&9BxQ<_i?r@er95DY}}{@mh!kJ zY%+Wx8mf~Bq~MP^m3d3_HIVsPQS1!e5JcWN5C9)&tojAwX0%#sRTfASj7)SyO$Vzd zsoTGdqh&V*)c{5)666M59yDlmrcBa;l%k}P;jpDmBuIuOO(b%LZdId?v>BH@FmmSY zWgsm{*LK>Dw}gEh zzmA(85S%!0$-2c+rhttJ*;8T=Nl+n{!-a5=>Cl-5^*V6?8V$UVk<2}RO8CEtr$o46 zaobww$*)A&Rl(EB@*J_~82K7b0GGkU=;1VYTxV)UmW%7Y|6n&jJ6Ut^EadbR*BAXf z2_B6wOFv$8&iadit1#>$U{nY*AAxF`u`pjiLNSF}ZUCTILBUG@-{8@M25)L&S2D0G zp&ZF6wo30yGf$8#m2aF5093lHzp$h-pu;@S z8RCHfV0<19kVdrr>Dgz!%7AYoC%bO)QmZ`XQufSH5keKZ%U?BqwtRfMi-%(ed|0N5 zQvZ|0h-86OGt3u)NEl@?Vf>5UGkl3+w!X5O-Oq9^9%kIboaoP?JS(Z+5#2uu%ax|s znx1kswK7M=Wbrd*QZk-r2-Ogcn9%&E8cp4J1DT8h+l9b7$bjE0OBoRLZ$x}t&Gt%v zUdfHGiT;bvXT^+n-&pm2=3k^IzkHcNff1*!2R@oM+R_VzF5XxV1L+P-;)ei_todJCGOLrCWkmRNE{ zTndl%6$65PnK!&D<+RY3n_%XhbU1$r=DNgn*K|O9-}5YmVar9Aeknm_e6ZM&W(Kv? z0wigOLXe9D6Yxu=3^Ub{>4N%4D#JqTG{^#nh7MdCzhI8>DB~(+u4o>0$Id=E&*t(u z0N5nbEaZ|EP!8zOd(vTGn;ip(nAAa*pML-up&2o}tEPOiRCni$BeyV-dCm zWuz1U%s~oboXGM27|E&fufG{_Bre$5@1mJ$QE-M>rZ0Lv_Bvrjam>NBj(M#AoCcu)-~_*b_I-y$C9`-nQ=Rnp0egStTt3gS zYFC=X9Ryn{HJXwkjqxz9TrwGM#DJye0h-ym`a@QKV`t>$zG~*vMy4L=*&(}7?HnpE zB~r9%v;MTi+~ZMGi*1( z<1c4#Fza@bi$UBM9LPhV%Bc_;B0&o`oSw&FoK7F6nzz!DYXhXa;rzoW0WJ2(@5R(+ zS7fW_=6H^~R%ncvCLKx`Ib<HPh65~}HY=k-L>5{3W4p0Y<9iZxaZl!$0eiHxh%B2sb_ z?TVk@uoS)O+&*R?XzXZ{X_`zj5ptl@z<>)fO8P#FkB*x2cr5|~w$m`}FXE!Q7=0iE9_B6n7~}N<^{15zzRPYRM3%INxln@kkwHz9cR?!{$X!4Qe}+ z2On|-Jc7mnF?OzD6|r!mF;I*n0+MM1is_kFWq}a+49#qBE=D?yHW(?}5noeUA1+>O zIGB=H(^)(rD&Wv-`~&L;*m$tT21&Y>?3M zx4gbRN2|4Nr37ujqQnRn!{fcSS!8mJ##KI<>Z(VRldWe&sd7lP9JhF?JarV}fgD0R zqlckB@gIRrk4F9BM7|R5bCocJk6X9DF!h+wrN{H5zum6va5L?XX>tqN=cVl%W`(%I z@NJd1a~(|-GN%QTL1%?D^t9)6jiCMz%(J$?B9E&ZW(SPPYPPzT~STzC?yq@0C))yYVHiYh?PAKwI9>l=6tcU-tR85QG;}cYGlt(csl;E#9 zafU%>evb``OXYlrgo5bI3sZ}FUrE-gJo@yrH*Tn=u(#?To#(T=vT!pF0CB4AMolm6 zS-_Q8iK1Tvy~RXz(kYS-=~}e{QT6&qO2!Ek@2%#jAJf~NG$vvxs)lT^py0${B^d@- z;-kqUOC-#8clIRgn&JJdMe3QFnSy`YZY+)#so#0lnOvX5_0&YZYTtcq`n2dzZTHJM zZ?nq(eqnyMX2x?(Q-n>Qw1N)g88JZBHIVh@+0%m3e$#O*n7LPnZHNt zYc=c80%J~)^0%~G*G1KMKz&)CXk!C7@26im7PqeTY73f!v#HljyRq#$VJ-dNl;P$k z34NiMP$W?Wnxyi*3d*JC&`?2JeH>_3Zwp+(jh#vNvbzS2sbZ>Wv}dyCTBD`Kx{7tK zOc=xs4bq(QYc=|JPej;>$}R=T07=7e1Ry%`Z;hJ%V39uE1Ns`f?y^54{l^U1tOxg$s53aLaEsRXuBmseIt-H%O7}m-S2WKhS0T#P8 zu6yh#t*HYO1+Zfre`(O42AX?zq#|;=hp89&d?{I$XB;?2k%9OE*3@ zR(e#d=0qmgg#eGtz7Zq^|tg%`YI;20nG@VcX(c0-aimNw86Lhoh6Nre=!NJAYZ$PE+nMMNwMFk!xR zxU!0wSBKGP+h`Y>7fAnZvn~E`>b6$Dh@<}-nC(`p2@&iDn+9*&bzZ_dr5q!*oZ^hG zY+t6Q%CHF|h%H##kNU!y8PLy^LjQVA85e8$Oh`eTVt5=6gw5`iRTH*W6F zMs!hHC|eqYZwFs5O<;SqgvGLxX#~PQx81|uS;z%@A9a&0o50OT?zV03ZHVDM6SwT$eyAEr+YErkFlmu|OY`V9KYgeFZWYkK>%_O0X1LHK3_ZbEsps zxs;Mgk7*MnF#)HHKL7Mc2k4u`|A)eLlK9UUX5qi1A>`%<7J zO9Hj&gs$Xvrf&|8AG4Y2@h+(AXmI^>#^#hc}EfKijmQ(OcB+gy||Xh?WdD! zkJhhlme5cSm3%fhNf+&Y^D1uew#_;l*!=BBw&h6eDg*wj+x-(4wO!ac}Puq4QTEZhsy2BzAxYUpyWKv(;B8;ThGSv2eIp;@TM zz2a?sSarKzD1E#_4pHg8XbUp8@%r$*mg!B+c9KPUyCMfWU$b<+Al|U%iMKz?cmZr3 zf)pjoQ!hr*yY3rBV=**?Hs40q6cuQeNEq-C%?@`CS-UQ?)ZI^K0aDh^?jtm}Yo%o!=cS(Bps=*}wOrlq)2S__Bt=4_R1OlHQuNL+{zpHB(0^Us(>a^(fuL_<6nV-l z7hFC$Dko*_vWh!!ctV<}XgP0eP`n(ksqC4G zKsbw-|0XPpGt5&GS&H#o>L{a;79ai#nOnqK4z?Y>UEs=<#FYNI+2cRWUj{Vq2FjaX z+WlZ)n=yLzz{;5-Lx6$=PK0r+aFS&W2C9&`P8df%2Hbsk@Lh-b=T-Vv52;cMJW4kM zek<3E_r_p5JEz<|74-$-x++6<1D2{tN!MNq}`F3O-Js?kc zgl^%kzr_S2k#KAV6mUoi;fj;RlTD`q0wnsHVE0rox7QkoqCy(t*HYPSEX^D232jzz zjW_WbvNpI|7XGr+Z=K;@mfu_avbDK8f`6FXR>yrlkItEND0ie0(`a2DKO_GM>!y!f z*A`J)yCKlWvvt?NqaRN5S z5ahUDSxjf?>@?(fU(x()t@r5cF!7#ngT-6l;{EXhXjMaTp($kxR=3@d|}T~auaWRl8w#gHR$Q#KkC&-4>F^b?G(JU5tW$kI8C zQ!wN@;Ve<)k%f@v|1U%Cy$<-U-}I732?{U0QZ#jGQaYi3xeI?%jB*3xJ79_Mcb9Nr z-D`&ZO%}*AG2irmw);o<-Q3Xh&)o$rZSSR?f)<70XE4}bE!`!5kikCRN4Py;AUJs>3em$%;1w7+>ie8b)eOwvGO{Eb7%Ljs}^^MS=qMI*{p(l@yn)U zz4`8GWMs;WbV`kHWQ4m%xH4|T`Z3{UZe2+i!_1(LB{x&Lq$m1BqYin*4N+~w`&#&J z3oD)7ngv@bJv2SF;#5h{d1_PJI^KUL3Ff=zRJC2s)SaBBRZSK?;}*jzFdI9j+Bf^C z<$H^4M)um4Sw@!}R^P@F$#eZP$}U(KB@%;Q`DDiSx$#HgK*nxdwx+AoJ3a zOg8F+kWMy#Sy}U*x36F1C<37Sm3D&7zBI@NJ8vuo4C>1 zboliCU2IK?XU&gTAc%~|Oc8_*th$-OI^IC6RgGc|%RAyu3WW-@C^xBiDbU@6Mm= z$7D);=kRvZddcHSV$I3@wgoKdmsh_NeRz*GLMdM4+uE#51MsU?m<6^yX?(Pg^Yi3( zQDQY|Esk8(q*`IYzFoXjspVR|UAOEdBqvwoevNco#R1n&bVJ^cZv1`R-wRr`8n}+` z>^N)nc}q9UvCgG^tvIXdQmf7c;jOQ+ z&1@Q2Rfwe1pIs({SUHoQT<{f2Jh>nHE6LQg@}G)R(>dAezds0*R-(qg>uve8lU@b+ zmPr?jVYaELe#$q6janP}gtM&brml{YWJ;dGB`d6SpbKO`339uS<)i!tYl0dMA+ffqtko zF&E2z>4(5|yPCRuzkN62=T4Vxatic^7H*nZPV?YlNM|TN(-+D=G&|~)*^C_`BA5nP zEK$S|T}&bs1^q)+Fm?hcPl8@?Mi80kn;$`=>K7je-(`yN=un>LaOk2~T%f|8XOjtu zz79`r2=MSNL2}J6tj1GK+j3VJmjw~*ZISZDQXt`=)IRgmTW#WD2t*ocn|F}*5L!&` z`n3w%KojLJK!gX+#H`k*^S)1{fadpx0MI<&1h(&0WMzl^x`E>|zdHb}{ptQk|Gy0e z20H)uJ3@&pK^1<5z`&qGJhHM?H|#bzP<)@%CmRIf!Qw?ujU;OhAY9k;1n9v}n^%8< z$~{NK$l#$F|N3}EBIm4Mz=)!?nPndMt22!|zp&z-iRV^eS*(U@NJsutr3SuyJlaRM z(-{q-`ftT0y*F^SAOtt>`^qgjh!uEqc&w_cOS}B^lH{`o-}5vpbZboGFDAlzJL2$cif+E z2U&`hQa~jc2iWnQoyW8r%m(k^&^bu9V`_*ORW!aD^~5Q_-gL)R)UYh)7w|fx9;Pn71$(q-Hlt26%4nMw-W+MjvUk~&-T4-AH1rk`Sx_=0_tGMl_S;TDu#1$e_J8X?NSXOeHG z+5@c?cM~UlF}qZ^u)@BM zu*qT52mn}L+Jx&~{Qh5-&xNA+l%kN6#-jL{G!pr-Z=e1z=7_T7H00f5kBoNn%6JFpZoNt`vrNYtD6Z|A9&K^~1bN;$-AON&flr`N-rLl0Ld|Zd?tO zqafyzE_WyCI^31z&51=okp1aEZ66`$EF>)rzbArQdVn!$(Ns?2ybt|Ym2jdFwQ(X- z_-$%>8p*4h$C)HpH)v&-y*d5ck!JBZB!sTIehIQ`^V8A7rgQFOi4@BUi_VkOneqO9 z`SVh40=h4B?I-UgX{8(A?4I*>DY>U8nWY*Z^tAl{0)9Y&zv{8iw$mzMwD~K3Fp0h3 zN8Qo5EQ|4Yu5?w-aJGC3SEa+&Fyee0G7k01v8$0}sFtqB0cZBuwxWqgZ^Uzok7$9I z*}mWSU6{#y?kXJvc=l9xp8R(mMVkM+pp-SJ{~pGk3;g%69TB|$5A*+ZAOun7fBQ_9 z&eQ+HXOIuJ>Z+<<%gD;+Q5Y@%y7-^>D4_1`XkT>(qPnd|a?jLS5?I%#TpY|hfM@oz z#))aMn>NdBB;rbDi%sX6J1x?2)L7AdZkzG%b7K{%lh{p9b_y~`>9vaEYic<79Jf0@ z!@_|ui}zxvb=T%Js?-3p`g~g30iEEZr(LNVm-WKW-``a%y_}ENdRngkq<|R26Ia@v zDt(b75t;3Bv=muJHr#9H&=*B=xBAQ{v#>A(pGk{VzZ2g5VxJC)i+qD;@@16DH z?n58={v;u~1Ak?}lPyGCsg5f_Jx12yIo4J&@AR}&czj=!egYiLN7>$c{u z`*d=iU2kQu+pfIP^*rv;I`zDmHLVr8+|G%9Z8gK{DMZ#4gub4iV!gKV!yk>1^>caK zP0`qSSCWvmy1M#ny$%@YetGj}P`U1U%#lV&LWL`Q?WMSCUAHq}RqMD*19* zZl`}194F)ptaMzKz3LsW6kCGi0003%CX9X;D#<0i4s1SZdlBAaKXZqQ&$t2xVY>VK zdjzQSp3cYNE)Ka-VzD=)Nu%pKIBh^SwUy5djAopKd&n zC>8ruJ|&QfTLkS_2wQ0`q-lIku^3n)96SY^a?NFX`-{zq%sNfP7rGJ>5^K?erS(f; z=E=27k6@Arg*gi?!BU{o4TVukSpDs)7t)h z>%3=@l4{TS9BISxnPOkzg7rgRlo@K8b7EKwPU|M0APzrON%TjTCg8ra@-jY+{*AF?PAqvc4k6)Mhc&) zm?1QnAxx&G_MF$A5(bKlZ~_*S?hvd6yFQW#GU0Ue7hJ4>P{t=Fp1(GF3X{V1$zZ)V za$|Gz7=(ths%m$fqLB1UOg*sv0$?G(e*Mbow5!So9!KmA#pke=)d-@M-7CEFa;mfwpx9fKyDyyhG=Xc)c{n#xUjIp^IOqSo$l3G$y!gpH% zpcuLo&(k69+P1;Fb+X5oR8$DzJ)MBMLi^T3FNLl*aI9O;)yvu++`Yl{<6s0Qaodm{ zyS6Od9`td2n(GF6B?&SQN;oPiD!Fulq}*IeYWZaNj#OR;*A-u+hRY?7or!{H4u1w$ z|D@RbsU8uMy`xpnaO;k__7sBAW}enR3hdHvyZ-ZnS|L?q%YJtbiL(z}AS1Qhw>O%a z&lQEPDWSPD?2Y*Dq|G-aaQ?m8aB_DnD&_op)=kZkRGszWugtgp7V?%LmUYV$0hT9o zeWDMf4InNU-nEl?N$Ep@w{I$J2;w&MNAStX$@Y9bOSS2U z0{jg40003&Yy#7V-u>BXh(M2)T3a3;Zfh(iQ9ggXTO$bFyxgCS`!kecSgZA%%SyxG zrb54qkk{U5jd2GAmna9(rlQY{O6gx*G{hu8Vg3F63$|V8j34SEp0k@&STFJ=bC^Hr zn5(tatk8SgDthbxOh{wzJpR3|G)P5_8Z#`gM5PWXu-=ci%hSd8czAe>I!#||YHA$X zLM(R;A0O_GjEyH}gG;q)vn{8~TEN_fjvk&~Yg8FYm);^i&KpJx_5z}D-N{SDo_J_x z-faenm!0j$(st!HI4HL=n)d~o&u2ncFM);t>*6rLRL^Ss3m1TjXW~b1-VuRQxwS!Y zuRmC|K%(?UzPR4|_$UL=;AAfN6QZ z7jC3;`nzB_O08Iu-+HP(Xtx^uQGSBsiSL^=lwu+vHafEA^C0T(`(EvqiY*e-yHbNL zHr?*yqh6-nPZ2F3;_S?2({ha1e$~Tbq0{RLU7pR7K=v3d42V`L28Qqf=H>_x9oozU zaWsl1L&==A%%Vcc{z%V2!iZfSF3#3{`momS=l6umW=Y%fx!27ZIWI5oaTA~x$AdXe ztQlAcW~HV3?LJ+Ct9QNLOoXC$qCm0Fq`DGhl>4XCD{ik&277T^5~6G^-Iabx%VctG#ZWK}?9mQOj>nmy-qQ|GhgMA+uXb zW?-`7nrBPYT=ud(?je}wQ<=&V4ep9!=}RsUa#DX^nl5*{*NiTVLBcsud>*_dT>f}# zflm%ad@mI7MB+=lX{f?SEvK&AS;5ewu%u+;eftfbN`Zng2>gw$Eq1ffm!$67!B#Hp*oPk%ae%=<1Rl%-0L=zLe)Q4Sq(< zV>@U(Wl9DkDbObNDn@G}ic`^Rx1>x-NI)@&2+_ zBBgz|sJH<`6&W!>+VmF696^Fs-4GpV$Dp*%ZX!g4aLq19LRL#TpH643d<@Tlx_a$$s135mH=DL^G8o7i zK{C(3ut1an{Y7>>ewBO=Y=_f~gPo%Iq8CI}616&&1_(t(W3Q79~gU{PpP=)sDMi%Z_EH3Id_UiWNQ#nfqXHzq2jp!psosR>}!+I%K} zubrKpd@MV7B0ue99;T4VyUo!K0BWp)(9dgV_y&iBQDM}N?R`7H3|tJ3`}uDCx1(5D z<}CAx{1zan7XW>R?tG}T(!V*|!6hKTiSDCgX8r>RITxULsGC-;MGqL%P%M?~)y2Hc z@$LNrAk7vag<3A=ELGLjl{Gc{feH8lB({R3q=|`1Y)s4#hVmAme2lh+(|{zs3Hc}! zT{l!zlwNzmjhOW=1Wao{wD7~X`epBwkB>Lg5X*qoU}CdBJU(0fLM}=R*b9W1w!;u- zt+(8bO;|Ro$snQ0;I|(sHf_>QPMk;>#4CA;y07rV(|&uOUV91vLFU@33*6{80k_v+ z%(-BAv|*h?c7jmHk4WgcKtZJ+z|!DP;GL63_H z(-G1ouS*@~_B;DJt6BTri?{#Dw{g3Pt<$uri)AS4*BhtzjDbD%yjl(J6JVeX__F>x zNkGA^RTr>GAF!q&Vy}P!iU<0=e_iDt^U^Hv;D^erce2rcb^p*^Ln`S0_hf)&y2(ZZ z$VBuPy%`T@1zI_FK)0C;r)n~sX*z6*wJaU+_3;1!F-4s*T%v0V@ODz2+0*u-5Ghf53g#jhpz4 z_^98%e|Ov-^`%qEw*{x3ZdxvH^8!fk0GwEVGN)z3Vbfkze{{ERZEP4xL=pFk6X-ZfT>f`vPaW&pJuVOLj-!1x#w5v%!O8;& ze^`FJ^{GYtiVXsL*NU_NAWD)3cgNlJX_Byy5YVbZKtjg8!VyVz>T|;R(znj$B}C@3 zq*Uspe7; zl%*f)V^dS*fUJ(fZOmDgBk29`LqH?usmNM@F?q7! z^LQU>8ka#|kb~Hw%fjz+NXf($>F4Lyb(q7S?z9B7t&x$@-~H+lWo>Oa9^!luaKVu^ zI;Z~PfC0da$_X&~9rT4mdQt(b6IAe6R)Dy+(@rLYECndN_M6G_&!X#wOI*M zowbm%t7olhtY%NXo$k-qNBcaSWDjJXZ2~}fzhOEpHntOiK-;#LfAYY2x^bzg z?%JyEv0%gTOkYcj2tdE^<{rp|bGGG?fq`O&+{K$g3WdYviInV+-7X|tG zq%Ix-0J&q^ouD$vk$HJE@QYAI21G;GXqMwsyl>e>D z@@14c;D1$F{#%L*aQ<&WN6L)g|8O`vrV={0w+!$heUaQtQsUx)juI3b$F5f!af)Ws zWoeGRY+vK!?Vv<59>Cv;kgzyhXw zo$8gRkn_=!JS}eL-np`_E^{r_f9A~e*T;twf`_{;VeYU^@4r8gAj*g|xDEW>_`A_; zUv9!^tveJN?mzb8V_Pb)7p!h48#z-`hl|a#)uz#o>6mL@W5?D5G1oY@$MaBw^riU0 zr)yL=l$SkE(Pa}D^`}ZSL2P0J*5@InW?am0L;p`?|+tT>$>kyEqNRXqIKy3K~nQ+J^_zG{co`F9qi}#AHDE&rmr&|uQR&0AYTo+*eDWy+vY`F zeEbt&g0qVx+f;VWr$3rr?9XmD4Fhi@B`+^%l@89qYS@eBd@v^t@h02?)!#-I3jzx=ofP9l8hOlp}1Ghg>|U^mLyGH{eKsX@t0=ixn!nn zq4`I?;09`iu7}Er*@>AbQn%GzNm;oQTzkLMv`*r;2M``rU_=z&`GAfXHLKvom9R7V z0dQ5P!-R#018epI*v@&IcERJWq~A&ZNt?T$vMjCL9lmgG;7Va28&tpO`~u2ipSyK3 zUr|#PAP#@%xGW-cP$g=2f_3y6+!O)=Tig43Q{cE8C)E7@_ELEF4)TrMORk1%Rznb? z%@`+*2;DMH>$s4#-yhiEe2SFFX}Q@g)^^*B=df8y1+jCyQ;C^CG~Wv>d?QeAI1}7fGaXRT zse1$}04*$NGvdpZjzo~~Uwk`P?b#}t;GI%>}$Z+L%m4v023G0~;- z02$FA7Y}c&NR8n&JG-JQFCHEq(47;NhLRuz4SOTV`T0MD<)?cJk$GI~uL7ecBd4Mk z4-{o=qr=vdcWP=7d4dxbb1Jrb-)mGF^k5}^(A6CtPUDYu<=w2DW3yZ9e&pBqPzs4C zPhfjtfK06dRu$4eVA|rpl>-6;VgRm-^_?1IgOhn3{@4O1ltYX1(eoGqcw?}pXASe3 z8BX~H1#y7n97Y8De#TJj{Qf?n#1f9LyrsOgR#4W)seLN?R$dPYN)~kP0003+nvo3Q zjLRjDXu#(gD*V}ng(1LN`~`t4r8c$taC@{>HNecj%38F?2dpgyMzB9{#p!>^-eipQ zH6OLf>g%scFMd!5iw8XehS3~QCo+ra>7OA;3`7vJ`GF+@z}I!QGvRi#Q;=u2`~8n* zvoPs%9)A9mlM{Qn2|4YAZwU$Nmg#3_XNKP9aAtEgJJPl5?H{KFXj}o82H$Vz7SRJ! z9}$68*0f6xRb8jbKPpa_>0F;pDDKSH+msGO@68Y2lsWAF{tj$u8UXXe+`K$C*S~ra z(WH@Gt6yHlK}fUp^=1mkb|(75xmjmd?&%n-DF2(jD3T;r{Z8Im3X8)%oO7sJpZ@OM z6i4K|b#o-NcQ!7|0%AkK?Ed!R!0_i6a;T8VX4sqh*BLNbI*|8C?GNYWXha;_0g0y| zAx|#bAJY&}@keVd->;0qC;?BT%-EM@0#owlrR~f!4$^2Okfm8Yd*@ThTYcq^A7o@u zU?wLg&n+Z}k`gFtb0qBTU)!4f%?8Xu=A`N7=H>_-Ur#u}1PH)3V1Tp|;mH*F_nL=g znHvM130-{#{`(Y!_-VAy9bD#;sop=Vb@jc_Mi5rAWmgf56n2!hyfUon-bhFw&d$yPIutl=Gf%G7ebn&w7TVd_@jRb=4@RS|jt@R!(|%t!byjOR zJ*8y=6xKijQ?Y{^R8EI#v;DDDGgfsJy05h}oJmLcV26btJ-yG1KeFj{z;Id3yhNae zfY18`$n@m=G+ROGG-Pt`*I7Cf91tjcrBi`6$({y^RMGUXiRUO;Hy>~vR& zce&^ytM`bkj2j4|`*iAq%`tFO*iYfV33_l1B(j)xhhT+XL)F$L_dO=asHm4}^&EL$ z@{44RD)mXc!wtlukbrXGFGz&-%iHgTg?eB*y4Q~>hJCuwx&MOs_6GyQMhSFpX?(70003-UBADp;PmyquxY8Bs|PwmgGnI?c8`#2Z^% z8L_ZoyB4M&b^9Iu?FG=;V`O5=tE!4EDJfYe;y8f{S3tu#c_)=By?gh0WXll9P`MPY zQl$rSa3Q|DwkvO75?DU!mK)9k8`ij2)~s-26ZHFf_WLPNhc9%d_wHSe#C*OrZfA!# z{7JUln74+r%jWdVcA~~0_(xdVmd4yg8v`*PN`~hGq%ojI+#PYdd<6d==8-4RcG}m( z#A=I4dZ=o;HJo;Q?Fps##>U2%{fm}h*19=bBN&sN|ODE>(^<(1cmtnwNmN=vX!_DWo zZ7WmX{*N?BO(nLsx6l0oB|;!iKT!f7jtIxE(K2%)0Q=AeBD5oiMCSPgU?98sI3=`c z#OHE22;BBC$j6FVtFwdoM5P>wvC>0-8L_=`u#` zhA(St2H9h@&>jI`>2WsTHU8s8_Qt`N-dr9j0u5TJRSFE05@7ux^cNvL282Q6rt|+f z4HE-Hcu5K4&Qo$H$i9V4?9wFaeyFpO1`H>ysMvSltO8~ifUTOEn%FBWw5~6$%)UBL z{xv`%x3eqG&C;^6vMmZSGM%fonR|T6`TEKE`%cLF*fW9uI-?OpaV4Vr_2mF~XXO3= z*{#noG9$pAQRJw2Mk=83?-{e-0ymh-)5VINxY)ODhb#WWq_w(^5IN0QIwkwN`@|F2)2JC0K*zwpBm>gVN6O#Vm< z?v_%Q>@_KH5aksW0003;q1e=t!Nu$Gh|uCvTNCoA#D?~+aSZ(uQ^GA#FNVKV83an& zZ37Dc5LE>kRfRA>QwTfums&rdNc?-*rs~Sd*o#e0K*BxeA;wTvQ2}3T0MyDqIBIIJ zTW-1REDJ}t8rM`aRZ%5e0cINY;`3bQF@j)@ zPjhDhw@Uvj_&g{u_Ksasr6@(zjPWMp<7w4jEa`nY`GsNa#@G(#e`^^_Ax+j9)Zi|WF!p$-Jr{k0Os)~~$pdn_ z{pbkqu`%(1_~=+@LC7g~*;({! zTHo|uO1&g}qC(T|#%`~y-ED~F3F~jm6H!E~!H6$FTEDRTe?tim`FG{Wd#kpD?aPYd z;t2WKnLUQ8?!`c*w_44%gsvU%(=E1>wF^sCO+=a(b+03?ejziJdA;L?G5&h|*n@l{ zI&%;9jUe>!yEtl-kVx6-E;VpivX!9ur)OnlQLl|#F!YtP=ASt zo7**S?P8EV)DAUKZ}XAPkFP|lHf*-qR95oobv-4(=(uNlFimBK-w=J@d_MUlolAqhlr9(%yu2W$Z5p~a18ZFBGC z-Hh>K%y4l+cKAG|y!-yhr_46kQ8YUrQRAY;r6)vLR2smHnc)WGQ_;`_OHp?Ejw^R! zp|cZ-s^Px+fr*5XFjlD|d6H89CVU5Y$qLUN3+0LNQ3I@GuA$x!mCu5EIzsluYGIUg z`ew4RqI-DC-Gr>`Z@+%Bv9n`a_PQhi)MgAkI#lyAJwTlv%@Q5@^-Bhb3`wZ-1L(HK z#>Rqs0uFDWSF)>A69LyV5&*mBi{BDG@Z}?yos8{4bk*hl)nSoy+W_GG6=#vKI>5-1hfxT-@&MezwIj`ocYS*D;0ragUw~hoAlf~ zbl@sFuchUmRyCmKAhXltvgazzEA*a`5ks4Iv1VdkUfv@YT=U z&(CjS)o3WpMx*w|vgLuEL%wVMSg-!WvFpMNi8^jLdKW7jI*uBw99$P`g;oh|m<%hS zh#IbHI6}dE=zN^GnmE;SbJ7~A&za@Kit5bPrYKw~=s0iKl$cPC3!}2>dE)ko3ro6- z@>ibm{Z+q>Caen&3)5(IcY0NLG*`Pv^C5&my+rTt$`62vP*b2dfsUBIKDnU#S*Fw8 z6ts5Sd>Fz07$kguf2%02+BYg(_0f`pVeznE94$wi0003=CvR+Sk{s9m1KG$;WjNtI zg@q-#`yH^al7kj^U{wv0CA3iuxA~B=`H*A>=!7*CjMeDWbXle^+7sTq6l;Y2zLV5# zzy@@$gf<0!UR0vfTsK_3eZG0_ zjtu`KblUd~jQoVco_tsew~f%MSEGIxBCyjP4CO6P-T+%37#N6)k8gjynFuH;(yyop z2%fpRPvJ#HC%KRc6@&Zxi=n*2cD1uBKbnX$%w^dt(NzFA;TE_K8}HK;t@3)SS-))B znosi=HFb8k7Y71&f4iV^NCMM`lNrP4v1S*WSvN3gHmPgJJl^e(?`Y8jkpo1!(Qzsa zEQn%kKb!G<7FUy29HHbdK(3=i#SahbiV2|TS70R+4^R3Wh98OV15kY!m4JBz_<0Hh z1O)7vy)2=6?T`t{X{TS{)mjTY`DBhPhppi&PocJ(T?XJtq~zs|_ohmL*i}|mrlqBY z95_#!0#INWxXN21sfbWNA@EXbbC%_$oH|OlzzX@7?MdG61928KX<__lFsY!_3l9(P zY;QXH&rk}x^S*}A!s^Qx<*Rr%cmSH(PLpZ?O5Z;5 z5Nwkw*QoS6J9DH~;m1_3+Y9~b zS*S4#YQOzZZ;fpN!Dj(*OuB3PZlb64?e~#@=d#7a!Q5}AdmOI%p)#+8(xk6|+4`DB z14Ka($!|+PDN1Z|LNwcomQ+2;FpEkp0F%j4^4P1&c!(?jp6q3XN|B0O^ z?7dV31j?FrpTolJYZ|0YO!$O8a!yXtvoQtL7x}d;=H+2W1%yhx`qrCeTK|C&rAQoB6p! z@F59j6U0v+YBSXao}?;3{oiN%vvJ(Zo^eO*k3wv(?sg}O6?d^@LGFRXsWcrSg<48s z4ja~^CLSzHr}v=UWtz!D=YzSi9LebJ`-4w&HE)%0nOo14F-Qe|7AoaXLKbJ)VMNd@ znOd>|ad)r0y?6Z>>U4~ajdg{#*4n)V%UdsqCJGc2$La&Yyqf;NQ55hk+mlP?*r~Wo zci*KGdc1SM6_;Kp;x_*E&&gq+U6hUfxY-src3xgyfxjJa5u}1dpP?qB-@jG0nF)Mu zCNfyj{MXjja=bGLIn3S}ya8hOxsWH1qVRpq{!75|+@1h5pTYybL|0zeVW22dITxCO zIHvd6|MpV9*RZ=5(@rp`$D+@~0k{ufvY4eY`15X^*cdq|b9>{@BG#bEFKX@x{c)OUuZ}lpfT~TAgi= z`I8E|Q|2Emx3{Z@e5|)788fR{T6I}yuq)ASe2q0{({e0E5dCbv|h|TO}T4kN&RSdU1QX zU3jtCrO%>PSzTSi&5id3m(@%BaDBp{)WCl*L_dY=6W^|i%gx2XK>Ncvi>lh@Ve=89 z)IwRk?Wzb=u7#RK7LUC90FM*$J2O6i{v7JQhSUrox0r;4UK^j=dA@m8$L&$A2|lM? zF*P;3+sh*wZtnNaUx6olVWJT&kweT_o>}xuR(1M^0S)Q&*ei0s2Ma%6i$Pa37!?2k zFVw@)#Vfxg#fSE-Qxl@S)76cdPZBd}O6epe2@MccRYUrFdk63L7OjW!sO3*L8c9a^ zljg-R2Hr?YSw1y9B)Y}=U{`I5Vre2aor0?IV0|JE%XHZRzdsvWo0&!Ua;o$#u)i3* zuI{iHi~LWuYF-wY<7lNODxThXjK9cru* zc=+`Aa37h!jVqo75aeuUA{g4^{Oobq7~DtdQKFl%-0mX`5GA(5JEB9#;g6ijP%;(B zks{-P1gJaF?pEaOTUao0&^|S=V*{J9tdOeVkq3~a0REJk=jG+~-N_v-wVID*LmMsg z*3G3;9yru;D_}MLl>6K>!1yDgzrqgvyAh{oKOxTz8{E64+3bA4X7gc!10C2c6BCot z0003?9q=6;S+|Q+HK^oStv}e%fK?m(abjO|PhK&n6wd=>a`&sZXgU-`7>2zDGgj)3 zI+99^g++j69~%p_#g(2#n!I?57%JumgutRnmTbZ4tX2yW@Q25R5(^xab0s{)_{yz@pe0H#jhW;>_ANYmKZ z7}6JZ>%Eii_6lJAfgLh5&};U-znSD6j?gEB3BLcPc6wv>9yX-c=5V1gUz^13(3UR^ z%7~4vt!aK3&Z|*f9UXbGiORV+HrVp|*eb8)N?OFQC+fv`&5Kd`L>i^)XkBln<=^3| zs*w|;WHoXUJ0sR67S!{Z`LN%A$8U6lS zpsA%475l8~GZNZ_!1YT5{yiXqBKLAG}?3~Up{3}k5y_UT`(SxLA}DD z2j$_?=kYQ(@qYQ^6Gh63XD_%SOw-+hVBrv@^axCQvdHl8{;4N+YkmPR0D^Q+rK%*E z{R}wPBmMKTB6^@aU^oDi3>#BXQR&xeSqkP8NVN#fee%yf_P9IlJHEZIiXOqzEx&9i z=dc`wwp{4xi*56bvw9pcz8>~|Xd@Gk&Nd`3>$BryD&&eUI-v*F5)t853@gxbMMYOd zUJc5rKqsuqIj62?^CsAJ{gLen}~gWE#JPZFR>})|kO* zUi6k=fs>P#Ud;|?<}1D}2TBZmcYaQhvm*LAdr(mkJ(TjkP>&3cKL}5lZ~~Tmo8>mi zwDPuP*bjA9{ljVemh$tB4p5ORpq(Kks60E{Pdbj;ZatD)#xxZU5uHekmGEvSz!}75 zwvzHF8*a#RyNbew#hrj!*0(k=UB9KJrF%{4al-dBO1Oxn^|tx)pVMF?zpHA8x2Ywl zr-^@85f+l4)w2dK@-~6x7JHH-B-l`cEwt|mAtEJ}W~D~l0003@DBE`oL|fjp4ek*N zc6PXw9vMdb-aob=Raf7*efFZd1@!q68^fUfgW1F%&nBJGNMJ>O-!3`X9l~Eg8%hMa zuB%_+FMvk}j=T^<$IEfse#2EDDw}r3%9$9WITaZXWE3${%8>Jnq1%UA3vu8BQ1Kag zOw7v5+q`b8T#whZCh%Ewm>z~EG$hijnOj#HNJg1{P&RT&R-cQ`<59lG)7WTU^Y zHVR^o>5o2X!gs6Bphh6ivoT4i^}pqO>O&PARGED9!n8Ja&2jCS_~;rRh9q`Bopt9A z*0Aq}(so&Ud_@-If`V~hjcD?2Wq~F1?b4^<vy-_tNiRWREh5;Xz!XHVPecM1@rZ* zXUvl)1As~yFP%q#n%Zg>yO^QkqRkZsiRf$F=EcIIutjSc1_soE2~CDK!1+RZqK`k{ z;}}?^Hz}#91=i0+`^vBqljEY`aHD|*5Hqw(HZjhoMNuzSdlLDDk02Y6P=x;Z?j(es z!1X}=L}kr~e8BrHuUy_jjU(7_@HF7h!=o$II<(+0!sdPF3f+vzh>yD77p)kfNeRu= zOHq%azDO_$*|cJua3vU3$$#Fd=>}!J&|p&Ezo67+ex_TV7#pkXe7GRZm>-k27|?R( zi5o7X8jc;F)NQCo$mY1%ZBlJmJIg8`XT}kxzs(byMi}HLNR_m|Prb3Vk=666d!2|Y zCG9IN!K8jn=<6mBX@eQU zj};?yVV&#I!o%I6IFPLF@9(d%nvLDqFoId~dAwh@SZ}>t8VJFnm}&FkA4=gapML55 z&qhULHZ8E|ug9~A3yY|U*h72d0003^aS`^TC|~`+)KV3F`=gtZ2)Wwl=vm35x1g`y z*FyqlDt;P*0t#e21opD5=ZIMH6u40a_4Cr_u1{}Tx@%~gves=i%*QFiRilxbdlWj} z%U4Y(DBGj3Eq12IqO>f@bgr`MVMh0an6m+$f52a}z822%=k9bwcpuIG3rN8Gh3q1F zFo%FyY4T^S>L?C<{@J_uqd)Se)aEmgH}774t}jBdF{VPw#ab zO7YdtETX1nlVewqn?SySBh2@+s5PwRuP}&BTl{JiOri$s5sQ~NFV1MPa!Q7B6C;Jo zMD%vz6-Y>Tfhe`w(Mm%a6jYC~?+ygus_?__vRR;-I**sd;U@b3_q`Og-c?M1P5uT53!hpQI^i_?6UvOOmRZt>CwsiH#kt#GG>M9OGHF4X~Y2 zybR2V&3kn4`1(KW*e(KF;zVu`>Lse)KU> zV43$YPOM{OWDNN%^&STsj}tz^Afop@Yj5`qtAr0CrvzJwgkdDInUz_HjV`5xmsgI` zOJ!WV?omxW58hU}$NS1v?J`uxpV?ox9CSPmcuxlxP6r3QO#a+{y*1gJ`czX}J2o}` zBmqPhxtbarEtA8Ff^1i4K#WvoF&1`}nB&ndW4_6}F3T(;YRbos43MVAHJSwg zjkrmbCzs3kB1idE)t=aHjq=bDj09h@mBt z`Rp~vzPZU!x=w>OS4$h3&{72|Do$g`mxvn21#1FiHPP5(nc9DQ0m6|&x2YrXHS*u; z>*DkB&Wa2^{olq~ZDZ~6_N`E}Gxv((2<6gv#NvVE6h}zUalvdy*t%W+hEbkjTvlNN zX7qsgE7C5Ldh-6)*v^#F5>KpRBSyA*R=>s=BiGOSPhL0lvA&&_U$AEB*YLA_`Gytu z&7>M*0003_SN2QpV0}@`Z#?<}Ig%L?y52&EkMP7;Pk%7OH)qyYFc!1_O(?>S1hWbU z&&MZaLFD`9OB#P&m8B`*>4WT6iqDMwGsZ6x%=MG8lT9+Wk)?PFi!D2-eba45vCvi> zXYD-hq!PqmQf65YjhVq~CIBeJr}_BuPWvV1Q}`$3bI){Y;EYU-vBPQ1tx;DTXUDLK zoSRYWS>h_PRkW5eB1$}8#XPOlAXJmiB%-ENrTl=MvKTo)MIoKWf@B?yN{O1d+0B8j zI@GZ@(6M=HxJ~U_=j^;cBO!oKP8uF7NBzbR_8#f=!`Z}hc6ScAqN1O}{XaJCL-9Sx zX9D#I&Wb_+gc-e-<{>_8DHqQXTW5Qc#d;ozZZ+Q$m^NRR^PF1#(*ZmjEGzn`ljkgg z(bk`AdOL$kcw|}0P^8gG_)4<~Ge(Srx6+z)fx5y?36#W~(v;XgV*`dvC6&km{JKz|x;9^Wg)|xswz8{Jaz`8(LS#(W#1-)~_pM z976s-9Ej@ZlnneI2K5R2TBi|iqkZlS`S|!;4;#1IYV@X^?ipI~(b3VTe#J9DjYiO| zRz8mpeGAbB{jpTv^7||Fy9&$79>(bkqVhk_(imWe!pBGjTwFLaN{dW#^7+AD?9UGT z@$u=s_{48+VMU1@x_X?aulc&kIyOY|ubZF|Uh~hv;aAuJu9TtrVxfB3mh{Q_aY-@0 z*@a@Ac2y3l_9ueyIc$srL+L^4`&=*JZrQxl&8?tba?!MDT-iZ&+QC7&F+LXfTP3XhgM$Ns%LRvq#X}ZjniwglP3)bvw&(BR$J?WJ zoBO?wj|MAydwS3ZNLWouElSc=sr;=Cr;o4^Xuvo^t*z*zN@OXQW;$6 z_)NSGmB^`aa>NYp>mM4*^B&QCXf;M9^QrRnv3cNbGQmU%0??l$uq45p{oTER5d#ks%ky< zxk}5#9T|Uea;5O;7^B%qy|46%UcBHZJ8|asM?^RH`Gp(}*vYv$0003`EfiGLzzkGj z;g?WbFR+(?l)Svb)Z;|&Ocb2{VkmdSD*M>IcRpUANXFc>{i>|(#$x}XTs@3*1RdvM zy>dLrT91fGC<8~uC5xVKCux=v2g`~JIdLHH!|7*Z{bXlHowpN?M$**DA=xST3I(Vs z6QL{=;dh;{i4|CeBIT`a{^DF5&MHu1znS2yKsz}(DJ&%!ZkXs}x4z>+K|%TJDzLWt zzzGyQKGY{mKJ)D53`@&jk+85Z_XAIEE-o$0sS^FkA~k69*lBOdZqB@b#MVoGB8oR- zmWEKsCtc|7uPF3@T1sJLWMm3UOO3Zjvwlxajko(emgnkQFaKS6$0PPZ@^fys9&ECH z#cfyg)urj{pxx6 z#Q5Cc3b{WW-JXBZb4SOTYJ*9w*RR=?YAF#AuHonR>}KWU7T+l4&<6Q7YKl*D{2Gvv zl9k2bPG1igxos-jg9=lTFSt*}Wm#aqWMqs$cR+Jl5pr^Jq7iXCEtsIY)4t+`c_w&< z3H>+<2&+FO)x+3NbYEf;WAnQl?kiFDt=mCOg&7ZLG|>I@P|v#E8b-`|SxN(YeNjL_ z!2BWQ(AJMFyO;W1M5Gf#7>jdT z1%I|Lc}4rQT@!f#ia>S0xO}3<#>h0I=W3QSH>Wd|6Y_T$7D^1op;6Y>zRTrv}vRDb%}Qf6CQ`n0YG^xFo}K%=v{ofvuFt&^Q@#3@!;OwwnMnUx<5aL9AW=TMCP zNN@F+ZFONmA7TP%%7HUC4`+4f3U}1ro)9hk@Rfvrx3JtMyD}^NT_Ie-fVjFd#!ixE zgCHqjlTgdTs%n!ixDX$Rah+aA34tl)CX8rD#t8yZh8 z=4~dHmYDCfIqv@M6l9!?iaxV@xZZM@HBLMR9x6}579?0XqWlCc1H(FyvCuXN@K>*m zeqw_BOJd$Tn5zwcyeWUo2Kf9vXclTemZFT++6pAl)dQLPH9npVx=mw$#%^@0I{+ES z6?j*b0bS2yap?AbJ3BV0_p^uKqg*^59-h+s_ma-eT=h%td$0%Yt-3`;MbN!;(2tJ% zF1^#c<@sv3ZGH=YR!d9k=g^Sx?Ztu4FQ_o8s{jB2P)k}`S{iKiY{lnc%ZFz@f}NJ0 zer=F_#Aqm)Q&JL+%x2iKdiJmTLhiLEtvhzJPVc%iR&?=I%T9NTQpp9^lY_S+zQagO zR&jPbIr^vSgf`yq1U}90p)) z($N9CvAGrgS+5U9US9sL{qgdV=XSq3P*3=?p3l{4ux5+vabi`q`2=;)Gcs?nX{l)^ zRW-pqsq*u!4|<|mnEB=x4e|n{k`o-AtG0=ol^XjMmt@g>{}*j<9aUA=g^!}rsepjA za0n3r5dmpwqy+>dq(i!q6eOet1f-<}m6i@^kdlx(ba!{&weFtV{qv6T?suRv z&e?nIx#oPHHRpULuq^pibk|<<=zZ9@0y|6e>=K`mTYxJV>1GQ}$?g?-ABQlK`p5ZU+;*a+R4{T3Wh3J)Fzj z-(wH|b?bVa%FivL9kBphnS-A=sJ=Jmj?TV2^a{p7ot%j+uOnH!UMF5k1R)mmoFuFo zBJ%Qh$TBO#o}?#6CMNd4ByVt-_E5qGR$nw6;E)V^Qv{(V#`*b@@KRA5_1uqPUBjK( z7O1rl6-5}!s@eEQ{Z%)GO--Lws{7IALL(0Qd@F^`eD%}?8%ja_B_HhUfz}8pH!iFQ zmJ&X_1tlz!cq3a|TbokaE?Oex1vfHspv`&0etEZjGgy`l;>zmaF3gz0x`Vhlm-fTS zH%nCDu746K3OqG7W`OB{#Y7vDbk9^X7e1;A9X2kp1};Zdm9{y@&l-f(HssW)q@9CB ztT!fp+m7iRpPSF$CQ;FT89p(?NEp;V+261jMqzG|%M>5_mUZUfg!uuR$?u=n1_yD| z%ACm-ZpUPr8hI@2v7w$Z@$kf95iw#mc-?I9La6ZIANhNGf72?*&lxzWuYEINVPQdF zadCB4f3@Z`^+-PY^wbTviFZA2((?*0qa?5}>qkuMqKUSyFn&2{=XETs)XuglHJU<` zjn}@BD0z8NDJkIt=1hWucsZTnMh-d69LG)b|%s5&k}vvJ9}zrW8%=a4X{5;K5~DfCnP zL&JarHC&7K4P@In0;m+8DwJ%jXI*}3AeM&?dQUHIKi7k zfla~%UI+K7U8j9MntAVa^Hf{HYA)-#6O(MY_$W8iiv@OXnR>4al#27+&Ps4qZ&&~q zqwThm1-pWE_?W4^&+Pz4P5D@BH`n^mW>SFU!OKC3n>4@9R>P_I;j!NFPK5V(*0&tb zeMj6tl{WK%>>Xfrjzk;qKvaJe9%Y{#6nFzifrk>!C_f7v^Fn$E8(})taWAC`4i=7@ zJYj^yPUQt6nol7j?puw=uGlq%yJ^pGX{lUrCkykv@6Af`FSQbKkwyMgT0BG{lFF)R z9gK5FZ|-o}-pr6pY23b*!=a~iyRx!!WZn6p_XSzw(w^sr?*+_FcQB<2%%JlB{ONO} zav@gB_3Gm24Y*+A3V~K;IN3wrEZI2fogZGaK}@iL9tFfbHm~~nHY+HLB7C_+U|qA* z%GNoz!%O_KdEL{D9fk^5@Dd|IEDE{j3|D33=&X zvE-UQOFT5QdY$q8M_9NBk&oVol6p_>KC>ilBFyG!|6tg-2*m*+^46^2hZ_pbdTGHsQ2$W(>rf23dQ&jz6uBMjrw1MmZ` z#i9jdy+w_3oJF0`u6271llx1_E|U+HQ(<@F{el|8x3JUh^5X2MqIthM8|V2%FMz;ZFuq!drVDX0Jh03U|V6$Es^`3aoNM^6l09M45mhjAwH+R?d8 zIH^Z$DV@PKxqoFdyBjv%i2wo93<yskfb z243@>hX&$tPIc@1gGA3uwO-^XDXUR^;NS|YxFs2zJhG1OvGQb}g44HO9JjO7wz~FM zfZCt|)rp^*2(R1_A^Iu6=QYBvYW-u(N4sYmwyj|_Qfg|qpPZby*67}%xGQj4k0ujWTko;61MgDXW@Yc- zu;W(y@#9BFcfCVbu~Ot6URzqRK>V!i>;OPYoJt%jma9_8cPYb|-nY&zXQPc2sQ>^0 zQpOn31xLL%h&C=Rwr^+eYMLq2FX^bzw$`?0D*EJ`r};KCK`u&_*s*CD_nAS*a+T!E zm*`&JlBUkMvTcl7nK>tRl}Tg?zj`*15AkBoYgmIra5~z1#A2=92Kl4CFzwA~(ii)4 zH%)7Vikh+{uixk8=BA~m&%RG_VM<6n+L}t02qAgsw5nQMTt#CD|MB^HM;C`Z4pZVG#iXp*iB?(Fh+Oi-ic@6Ei$*V+TgxAT@zO(CYFG0eSDb* zJeDILPS1gPJo3Ig7o*m-?|e{BxqW#t8^XQ|F5thdC!B_Lbc&Jd5uu@>)_C93l)iM@ z34+K8)h7mrhl#=@t1~b00-FS#J>(L(@g$TF`6cd?gk-r@)F0Qma2!4+hcUG!gtP>> z)Em|V1OLp-5STKE=QA`{#~4scz^49!JDN#x)8I;J{YP1u^VfkiM~-B!^of~5`cBSl zEQM+!m0>fp30XT$?+@#r0;mF!5uJ-7vFnIgtkpGgC4*}CQ5NgtZ7m1+S*EcrIN}HjGS7 zRkXBZt*jn^yVKvEZm1LjILn*N=^RLuI1ym!K&MY9!x_bTx0747TSOTzDnX+EL!m68 zrn&C35c`f_zi#qG%@Nm6^={8Jsa&tk&PFd7zJGp>;>9LID3lrju@MH1M`2q^CQ%qH zal;^9J>!s%*0QNp!;K)N?C0;jG_di|S?{!VU@j7S%hqsDEKRB4xCS8;N-dZGU==5T z-7G9Dnf?9!@5sX?Gj#mic_}yhKf5l(s6SUzYng2c0i?cVZU-gvxrd3d@vSgPf-xmt zD8&*+-eMf5)0%p9Zi-Goox~!msJN67A#~b*hZ}070pqK`T&suja!33N75_q=RvU0R z5j>Nw@Ai6yQvo=7^w|5#cD+)YZFa|%G|lTvol|3ovrJUssAYwYLgNfaRbDz`&g`|X zhy_uCNz|a@PX$rs_u}bXkGTo4oRkE=P{ys(QWkR*F|)QW4BpBh6Wk>}RaaNhcuwaw z?5{`advSB*6~O}F8|I$d4Hz&N4*>H{JADMDir4gkTL1t7Q{{FePM=fqOj96~Ibykg z-+g1;QwYO}Gaf+_(mysN$(l=xOyaF&Q++Ih7<|e}-SV4QZsKP#>pDJ@mp7kKDh+Fx zT~0)LMy>zhA-C!T9TQWCEw4B;A|sc)L4?0W0&Sjj-q6KuJM#q7u~fhLb}?svdxt_B z2kxrN76TdPv=g$UtBW>L?lU4ulfBg*r}(c_Q#_4M|4N8X>UsRQQeW?&^OKK1X(vu+g`z= z{fZu77!)tQX*_ju`f=QVh5t-n|E}=Gieg0ksd$EREc>gTnm2p+<`*EO@1Cv|+(;H& z0-@(gQXKl)-l_567v-*`C(*!Eo+~Tg{jOV^07&u52i)(PB>^@ba}+vt-d-$!fWfsy zD+-NfJw4p=zH(pP1IPg$$(bfQO_O~)TXYdV95M8`I-4>bEjIob8+$!@fLgsk*Yo#= zyTM{tJR({qzjBcr;HDkx-mH|vzJZ67)>Jw2iLHW1<4y39biFSQ1|7Saiqv&n>q<`U+$5gbW8|R=zb)m^@zQiH?W+ zDk|L!N?94oikC3pkx6!ocX0Fa86PoWBw}(gp`Iy|tV2mcD=RAjz~$S%>j~eSI$z{b zx&7v3Aui&{s}IH}UnKU=&mV(*g6jKpYz$fSWJ21RsmeILIlYv7$Z&3^%hH(% zKQJUI$pafF#I`z#>(6jx^vYtXvRII0(>I+ntPXMFfx+#Qnh(*k7P60=t3xu=qcO|p z4&L@!<$Npsn3P26{Ac5{b*D2YXYKrwX_P7#Ik{HR=x44Xv^~g8XU4R-^X9Caf0qIT=dCm6M zML^=Au#wJU9yY4)g+;8VC~S04eevQM2*OX+HAtcm4?(CH{F3`!tK7bg%Ej>x8kgQr z6!;0>G)v5EY?l5CZfH(bIxxZ3`Mt&NjJ&+yni>HpM^WOsV*n)(9FbF*GSL-l`PEQd zQlrk}Nql@fEU$rb3s5iXzYa{A%WVuOZ5qWO`?jal2I{7%sj20rT(aA*WW`0vF;<=| zCRWR1Et}H_QZ=Ow?(D(-IG-CB@YXn-RtK%=L-1QBW7Ks!s9eUMDl6YwSXh9fwt>`c z%U@~|Y06ptTt|!sn2NwlA?n+K=zaBDC)f$n+f2 z*U(>cDzFmLk>KgCBscA{%1B00jacC$IwTdW@mE&Nn+=r5#>S-gDmyx!84k8LAc*X) zr!hy``kAo?+|wkEi%W|~pRwgv$f2rdA}W6nBI15u{-C1Et^EM1lhCg;*AKA(BcO&gK z)I2{Ou3v<-qoh}e9-w#FSDveqlRfliK2iz_?*gREuUilYeZXHup?K32{qy4;fE5PD z$GdpyPvq$$G2yWd_|A)KM{fWjBETGm_U+>r`pXz}vO=VWdZMRyv1g>0J z=U^%7H-5lJr>*g6m03RdyfIp0x(EEVEwHkk&R3V5KWcJ3lk8gWUQj3+mO2O!0d`J{zLg_ zak{4#S`=y0lDxrt3U ziZ981vl2uPgbWm4_?lmpC+oPL@(V3c%GlVrKu|=Hf1~u`Fn9}!XP$Le{=F@5p+J>F z8jg^j%iXW9>^m5=!Iir;b<*R4zZ$KQEvG+_Esyb|G9vYSp6N_yazF^*88@)_f^^Lh z@NgPOViU!~L#!*nmYp<*e*gZxcIns^bO=Zd5iUC5F-(65s>{mCItj#RQLAsRw?%xy z@)t#@-KZXThlcu&ifedSKUxlv`-r7>V5PZKZrzzb+uVSRM4GUeHS&F%@_?$g0%@%A zEo}dwwmGwefT^u4Ma{dBdLPUXa=e6X9FFUpBMdn5%4RlJ4f+@n$nYlpCJt7)0XllY zumAu7RsMd$-Q5zqYN~c_{uzxZC1%NqP05#9S^&YNJBmEakP0)J{&~&F*f>c4=k=MT zRC;#y2w>O_TeU~K^U;baACIQ2kYx{DHpf+OvM;Zj3x6;Z?u!?6=k`21T!@sSo&kY* z=@4mSI@9PMSi14Gpzar-rEdWJKD>|a#sXf*H;p1+fWB2UG};63C_aH*0a)U*uoug@ z+O#)4JSn4_<_aoivF(geMGJ8nytF^(u>h3o5nuTw;i;?&RYRF1LagCufc5gR2e(n6 z+~)@(PoD}&e~@D=95pi1WTeENJ34Lu^{aWw?iM~mS=C>f^(pd@FYhZlhndKoY-;1P zLqS9on?VC6RriDCD$y6&H07P|^k0gn%izjpWt)(lRKBUucIILTYMNdLIFJo${w2XJKS^00h0 zK0vTKH1q-h{)TT*x=upgft~Csb#6TfR6g`-%0m#xKzmoCC1&Co4TXkpfMB2>C zih-TIAmk$DS41g3y=3U;^mN}M!?xW)6-6ha1;H2`m@`JZ{@1;1a^T)jQ{Fbvd-ge= zZ^Wp-zgYSUmO%q^wlTn|w!Fz^RX*LDKNrvkI0{*ljX0l)8Qy46`cS%$J6nVzqbBjk zF@1;Z{-jorW&AQ09zRJHNefrQMwwwr^}|BUmh@v!p=ZB>J32aA^-D6$u_)PSbZz(^ zSShbkkegfBFvY*0aU3J#_$>UR$>NSc#mg=oQcPiC%wpEPkXPrva68H+@$P(?w-zP| zlFWdL3#Fx{j`!E@-AvBQgU#enHU{v!6xZceP2Wy zid%4{!_w~08w8ntC+njn%EbO_1@$TG>z0g)DWT>Ga>;x#A?$UZ9vZefhFp5mCT5%O zPQN37=`sKm#Q>SB{&N6ZUVKD8Bkfarhabc?fUN)`nPQd?;L&$)V*c*$Z=7y;R|$1C zA3T84OR&=YujcM+q%Ch(^;TUcpdY;uwDxDoR*!7u*6^$VQMp3WBWDg;thf8XP#4EHm)vS^xf)>}c(W-wev4*&oGR?aKQNxStpviY~u zY!D*YTCb!-Z`CX~ylE!$b0KEx@Vm|xammJ+!WqZP_e{8lLt9z&BTt#h5b@Hpw!F;j z_m@7ZC_u_OKR^GT+SzA&kD83vc3LK`+7m=P49e?MDztp^1IH6vUQ$n=UW3We+2$aT zrSW6%?B^$Y*T|mOBY>N}*9R33i9%Y;tgRP|JK12FG*o7exvxIEcT%xYhD1>!X87Yi z9xX3F0JUN9$;jBj>JAMJSyiSpPsI8+>Gux|R3`(*Bj@EMq$qsB1${X97;W1Iv``8j zwjYyqZ*>7k0PMkj%JazS7O?pvNhT^&uWnYFkM59kOgJX#{c1VK~03#5IJROskLo1mm17Z+lM<9Xk(3wR|fF?&nAL zF1*>l`)+0B7WroqHi5{?&4gC@CY16G%a0#T_Z~dB?J$DY*h>%@{lMjHq{tBJ_G|oj zeH-ec9jyMz6>$^{;|9=$n3xzPxpp^A33GX!VY1AM;_>6h8nOPyng~KH(X^W@D=X*Q zfx>Xu0nEn(ZvqH2?$4fNewEZ~0l0UfPCYmhg;EL1k)FS$57l*?)PCg%^M|e)?kfwn=|&!@!5@W4`@%S)GfzTH zXlBvMCAZEE@F+#SaIzkUw3rwXzssihfa>nv9y8m$r^Ox2dA`}2%jBQ31N1d`DHYc7 zF=CC=n6b0Xr+1Gz07x8qH6t@RScim7#{z$`7N*F=vsPy32K zdSZ^7N8Oy+5xs&ervW=CU0Is;{QTyQs{m9>Wm4O8){MO)>?IJOe>0*jH$UG5n3iDh zA$!V}r-3j%{kxsHwi1t%U27yPbG1a4g#og19riQqPP%Vh`;d~7LU<_>*Nah-yXN+~ z?%d}SmpLKe&C6vqpFh9tPULaXe4(k?ks|2++li`rB89L;LP7$Ci-)JgapgJ7{rhhK z_jvBGg&Z5xsI+J3Fp2^@BYPc0j7})dEEo$cStw#)WqyA^ap@g_(8$)4mA}EZ<;cJe z8yIq`t8eX(ACGUhOW8U`BCzVG6rHnas*Ma*8S@O%mZu#n8?LJ<_o<@c;4s90w%elS z_9*soS`$hu%Dp|oVK>Gfc=oa?AOHXXSC1ixk+7K%TOlVpbl|IQ5!eCMMtN;%Lr5O*<$6r}lj=@G2e3I_347hQ`UgCD!S)SzS{vHwU`ox5-5^?l z8gjKI!ZOOlFrz!jXV?~Q+!B2Ip3f;vw?uV|&49RxAj5S&J4@HY0Ddj z{MvfZU=c^rZ?5Fl024rKIyP&oS1?PXrCU#ceT?XoCu(qEX9uxry$vv4G0S_(OW9J2 zFsdf19`NtnxGP+bQhN8-)M9)OjvB*fNY;Hq97}2H_gUCw|mtj;^y$wuLz!ef4 z6X|Xx4eNPMOPrWRC z@6hukP(@KN=GqN(4wp^s&yRW?IOC0$f2ZNn2qiszhn`h-pP5;2vgXa;&=99V^Lw_w zbpn$;v+ZUgMTmr+>*#bt<_uF@ndICFiHVh$r)%)N@=Q1q37_^wyzTk2of_dsU^}E~ zx-)8;T4XVtPu&UD76s7jiV16&>;i7Bx;uXBujLB9pV{%93)f(6y*Qfc1y?adzo|VIz;BG?U<)LYP>!@zkRx)`k@yo;`U8EW zB*$l{3_rbyH_8&=i++uI($wLTR9!->!om(he0S68JXT~O|G2AwkkK6vA$IG)8#$dm zO&hI0B}E@gGxG(BM~TzhNq-*^YNnWQbfD?rPDDYfaIg*@;!(xaPxY(GNTM&tZ z3jmoeOAE9k?JIc)A9M^5gLf;d^KJ9e^Y_ z{9c3CTo@0w)Cr4CW^rhfJ`)H>5d-0V{+-rsTvoKBzvbVV35ZHbQTT|w6&G#cV!#z^ zT5=-#SNj?H-hiAhTVFrgSil-Xw}2v|(|>9S@bi%IaqT2FraCU+%Y9r+e1gbN3IhLk z`DajzfdBvjSVp#lq$K){(*x6A^Y=oj9|ipS^-P;B?yozLY7f2hNJ%Y5{gvl|U)^S! z(tDT%!(prVJbaOxo}R9?%BvZh`|X>6o}!neq$E$nWOR212syCW?q1QklP&AuQ(!!g z-@mGyuE;1X{NQr~gPO>}2Da9Q>qKzK)Os1#qNj)0c$@%;$>4a*4!PzQ?A|JJv(oiSGO_!Qe8;j zL*Y;1lMcmC9Qut|iPfH?#l~{+oD4BUf9p0O>=2x_uk?fG#h-{Dp^R$AH_yr>Ag}Z4 zIG6ebOl&r8bRxbje~dk1qQ9RijSyuekyIo65`cwuyCb&Q#AVLDLpsXeJfT96?E|ZJ zEYSd$(&HNi>^I_iBhnI4$HqpB3@LUr{9IX|amJ%yq3_eQ9}g&+b}jeee#xWbXOh}4 z#PLf#;$(8$bZ+8+lLp=ZwB@&lgDQ2avv{P|orlKzd`IR;ZZuAF)`*Te0;dnS!Uncu zKD$b7Bh&1RFXU+&Ntx+%9o)c!8BtglkPbv~$o+P_EkFFw39q|Qno-S2i&E{6NK_#! zmS)sLTq4=))yNQGCaRnPSK-UB{_y@n4*Bl+sJTSc(JJUFUa5dvPdoqj76buN-N|w=r_{ zh;n4c*-&4fj4?pp;H6&4lR{*&bW~{G3L*xPru0dVL!6hAfkaVHhMSUF_%c+Rvjpe2 zW5{AFqqEgi>!uFBOf&xyrm2YuhuLphz%3dxWum`ObAC!1*Isw7{%80>o|Q;I!F5&D z1k>{Opq?vK1eF`i%FD}B-}q5h#_4r_Ja`1+zWri6JOGD8RkOl&Mj3fDv%A~L?f@&L zjDHcYuB}!7l}W~>7Wf1__YR;e!4!jb?SR{`_1#I^%RD^;aYy0ToVA(R2e#V%{w6oQ zpcH4He+Agr|NpN!6#WKl%o`2LK*GU2ASgqT*yNjlPY-?9>90v{N4PQB2ZbdsXJL5epwGC8&_9f$Fk`>ql;XAehAyXjXDScw-z@sS@d!!299rz z2GCiE;MtZpD85dFv&u?KS8OP3$D8Fn6oj6oAfije130d*k(62GH{36 zk_^osjh7PN?k;L$Z@s8>)e0kU%`JnuD!E_2@NO1tb+XrcXqZn5MVKc*f<6sGz+#^i z4U`div$vS#JNf_wU*HpPmO~rs*@aKMua3NeyFNXtjW?Ci_Rl8+Lo@p`6;79o_GXg?v zzlV;uM*+{N+CF6n4wh~2x!;@`ixu_mL8`U>R{lmQ*B>H$3}rR6#BRx_x&4nd5Rt}bu8K);s~W)mu*1 z#QzV>K}}EN&e*Kxz5f@bA6|p92Qop2S0|}g`g@DrI^_7Qov`X|9=sQmo}?$RIE#rq zYyu?ywl%=`BOl+@v3VQ zKCx`$oP5*VojmTC^ZFu^4uTwR|_?JJ^a=Me-HZRJE9|) zyA$)*STzdYLa1mx&I^{n+|2BAMa3s5+o{1S>EQ4vPRIEU6bRj&??`eQ((FnROw7(^ z#KysSb2w^Ry`O&Ln?}*~CXNcQIM01gq2UG{-Wb&d)J7;Z0-$j`6bWSrhESOA-J7Xg zN|}RNQ7}<>=b-^AJoEbX@t)41j;^l4n>SB_)8R}x*f{r0R#vmx`N53sr<1*<8ytX; z{`&Rn@c!5h9~3JqtBKhA!S*9du3M9};&iuQb4yF=q&P-9OeZHxd3|eWWU0gDW_lMVk9geQ)PypLb-B zcZmZcc>S-v%WLoMZejH8#_~(0AzJ!7ivR!tS}fn8{OCmjPhe96Sj*?BX9sI-`8w6G z4m42s{4UfgeO2#O3Ov8-_Oz9CyCD>~GnG%w4SE+UwV^ z;c&#?qd4BQNI;O~JkiNGjigDd2XYimPxn^_hllr$=OP>~PnN)5qUPk}tfE3X4ePYM zzeRuCK;VV)bFn*d^#6HWpj5t5P_@c}+r<0RW`*O`?1nS3g#JvUKa^6@(vmeXVeIbi zCMG6+Pw`QNR=iro)&S=aj9b?8j;bd5p8Q1&)MCfm&j=P>2u@BQj)_lFxyV39y_ix09AMT`}^q?_Oi{% z0c$K6#u4GAWCU~__J9L2RAxPa{qt|K*z_2%&N&R><7@bV@3uUa_$RWT8W|bg#P)wa zCHD8&1O?+qa!SgiRrLi_5C=Z@FX1V(9PNJ)HdWFq1eI|#EA5Tr_`*P7Tj-2Ca@9RV zt2(1YLqh}p>7=k{r_SPId_30MftBW^y;~tI&D}DzybU*P+<;3xq8~|2NC5DI@)mv| zm1gWidE2q%PgRm)o>U6e{%!hg#wBwuXEH~oQ8AGi0dk%?H@flox2tfq@ud;7%K^{K z?e3^B$}Kjo44m}1u<4E5%lYt1)vs+$ej$sb76Obme22v@{fpCsZ#vb771i0Yv8=G) zd-b*!>`g!ck(ZtlA5KM_-En>G_TOj`oiaG)EeZh>R}d*!bGL<4b*}#TI{L$c^!F2~ z^Uy~10Ah81?g17K;_NCkM|ZG6 zvHV4I^&C;)^uXNQT>ZXui6lVJ!8QZd2siaJIhuQ(Jix)xkU@df5el?ZC`WPCUXQ<{b^tzCz_GMEz;~&BI7_{{CH0#oVgph)Ux&+VAB!gN|gdSZKQ@AC0=X0cP2Qg}jsGRj-b-dM zO%!>1)$K(Vv%8$_E_6nWO0qX`9Pg!Gc{H0(hO3sEnwmPCZIp-5qynp_TuZ0o3w++4 z^knb;lnnqSczAg8OG}1VqHH6csRa91BBGwJ>Uu7)oI8s-aNhwc{o(})jpu&kcDooY zG4>8XaPh;hymkII+yFc=Ff`PfEuZMuM9CmT^In>kSNX|C=|Hp0GTODXlkttSeg`Vq zb8s)2;O)O3r~xn2XPQ}1HoWcGT9tykJ3l}e)D+y7A_JwmMHUH+9Y%!m1K^qbMDHdk zFj<#Vlq191=AKNa4zIPW9Z)+`fj>`JODPkNA(1NAFZUYMPy-pqypO7O|L0}PBM zbqn_K`2prg^lM>5oKaWovlMtGW2Y7>iu4hP&V(Xd?Nh7(IP{P`!BwI&dtTr82|tQT$Xqp z-joRd9&l)X!9V!cxq#6U(-N->x1sM^E^>b?I%6MjJ$`)fEP=-du02(F=kg9)TnO06 z02sfW+G<7vlVtp^c*lNB4ICH zKr&I8Qyc!{p&s`aG_pZtg64cI-3$UpByGq6llQX8K=!t0qfa-FnLCuW~|9b zjQ!C2(jyzV-5L5nz=OLADCp=+JoI00H;zJ3?b)#kP!kksga!nl*XR~3``8ecSvkP! zAPx>%KOK0?v*ZV7LRLB~rIaR(CQ4*=A;C)%Dslieqeu9NL2Aqj$rvwJ{ASMtuzAfI z*N3B)u~4I=wN)~`k2yIxdEWjBxZCgFzr%#59*65Qm#D|`O-p-f{#{NJcJ?pgLv)#m zr4fYldnc=$sl8I*g(qZF?E$Pjy>}A+Oo@s2tZ{N`sy8D-h~>Xq3hnheEcrVZEmim` zsXi`e%R!$B^XEDl`uV3d@zZNi3;uD3mfRATlJz>1r z$oBUpdT7YW$zg({SMX?D`Q3G!!xKBY&c9npMEdL=Y)Asm@o3zE0MLYkwc!%OHhkE8 zS$FuOAkBR2&JP<+cpy9rXTDus0>~~y7=#)=hhms^fPqg5OdVGCO0nla zw~m1%q#6w6MS1Wqex<38`1ttXj6_&6rlb~=mUcI)15r?S%93q9 z%iCklpk=2M2mUf3AfVldlQ&$<)Rf8nXcIo^09O&~S3WmgR+5$Vb=20)?EAsbFQx#> zFn|3zugv{ejP}19NTQLBYObC;7YN;!K zoC{7`tJ*&}=o=nZ*C{jUPO!5IQFgw&E;@n+8~^|TUE(<;;4oha!t{*%?PaDES6@KT zFGD+Po`g3+9*s}QOY59H%?zM93%4))+L5F$<6|AXy6sg68RlSnRrAWGS6_F}IvOYa zOL6o`8`+?hzSZMshlv6mmx-1DJc`MW&kJKXZ6Iart@vJlsxyY-_rF?zul2K1!l#iV zk-l@gGX&lmmZ;FW65St7+nN_hSFv`^`PKT)@$!b#XKG_s|8owMaj>cYnn<^eS9GuU z<(}!q0b_9&627^~gM62uWM*(1rgtw&UW zZF3DEH2jcLQ&UxI0h|3%2hF{8(ed8(>+>q9ryu{_s+?v*Lc;O7sW2?Ha(YpKWDyqZG9W2d1syz``hx$Sy^q|W6*vQTS^h&V}+Co zD^wSsSUY$@G)cv_8FOHy$(XF5!WP%Ue5QHxu&z$%?t0tj@^W=YLh#j}=peqI-+Kdl zOH+Rg!y()!KQV-8xy#^vJh)2TYd2(eL7>Fh1UUo6dZ`Cw%pY=J+RuMz!;X->~&mwF`TYxah|>MDQ2d zKT?{<8Q%f7CM$~rfaTwUE7R7{JA;FRp%ltTt^zRWW!Q?VswSBGG1*Mv>{DhZ>cvg` zDnGHCVeR7doR5|LHB{*d`!NGmMX&kmiO@~c$m+%QF7-LpvK+)9oai(sC}94Dw9)Ij ze*Id0wd)f9)IGjnxGZ;L*>rw^81pl({(J$;=B$G$b^c<@`|3^{yu0fSi4pD8-q-Df z&$q4;huLn0d^+|dOh8XS&qL2+nc*d@!jHuZ*qp8+F`kg*;Q}rp)|jfqs$oUep7!Q6 zz%Z3J59ct?pkz+$11&O2N@6NWUMkfiZk8)W7*Y_RME_gi-BfVQvs_a|T-xho2Z>!&}+kTQ~7XP%oU-jw39!LW}Dk zS|S&HFsN_BhkRA#n7hmj{00Xa7WzAQMhB+{ELRELwSrZ-OFCO_!+w9)|GLkILz#P9 zfxV_uQ8G*Cp+=(MzszEN&J$*|+VJArQss2S&%EpzgmaTpEhjNJ6vog@B@GSfbqm!0 z+d{6g_6srU#kMn|bpQYXUMJl)DRx?ARuFpcHV}9zS!zJTOizlN*|~j7IPwdBxQY(s zXK=`oePt-ZC$EAzSUcv;$-ynx4~3Q(ZDmDN7{gAsl%xZcLDrE{O0=3(jSw0dsJxG?@d*|mr?a~=wovLu8fNCKA&5f zSSqthbl<9tJ3Msm!|J(VUr7mHIT<-QUx85h9539e@YHeXycYfl!wtNkTvg7+xsT7a z|G5iAJndl#I3poPgOxBy9E8EmP3wfjM6iEx@$sXi5lX~aFQdNGEyhG1(>JX~eBAow z#uRnbMAR2ld|!0Lzfe)$>!kCQJ)HMb6ydp^^nMUTC+Y~(@rO%chZ{sxJojA%sEsri zVQt~bQYvY`SITyq@MR=`Pt~+U<0LCm#Y9 z|8b(~ELIX^G3i3g6Wl5YQlZF)V`?0ooehxO4SL&t=|_@{;|wyQ16;E^yb0OKeWny- zWO{px-S9Xa9;JhrPN_z{7;l>Lgb8^u-SBSnn`Q~hNWHf(%s*TM>}50f_I>C@;H=cV zula-k$Xz@LGS)QWyaNXvvXadC;;`|~Z3%?>Z^m{S%MD~|v(5419~>OC7i)*%^2OKC zJW*Q$ara{-D={_*9j{-%Mq!TYG|0h5U3$;%F@y6>yD}<_f~VN+U{%FUK~a$ayhFnO z?YQ|CJ4#@f;Ds3!z0WpBy?zZm|APIUrpN8iG$kA9{pjx2JY|pi*5A*WESd%aK}Ei7 zt}5Sat~EK}l~CV31#z@&LnX>vXZX#*AN8+MbpUdsqoXUB^UE=E#^b`0j}urhVgLXE zUwr~QR{%1rIGzoO7xuoqX*m&HbSCEKA(-6ts)YJra z$8%=l<7nX%A})FUXJZ7UCvyN8NBnw7pV)1`J^hrApI@`c01c3`mu1gsc~!KBTZ&n+ z{Y4MP1^Nc~Ctrj6gUA+QGyrM1lSAoFy-A_)&zKch8tYuPbZd0k0ZP$k3(Q{wfPv87clg_| zv@}+}S(R@gvNc8Qshi}?)q{ZdG%sJi1ilv-3#aF)qe*Xy=L^Z}EE%{H6BGM~hr4jm zEXPWN!~*fFItMu9gvJKW&^dT-s`&24hqp=6X5@DECGX{$-Y9(iEn zu)o^B5GNb8n3V|IKQEG=NboroCMxj4dfy;H;2gCIYIn{G8{7O+v3u!m(4uGGTmDOzux&NLyxP>kd zpNcMCZg$5tZ%;U+g{~@pfd6-=SvRwrwrPm_WGxFnDPWYT^d3S`@KK){M zB9j1|Kx4n34#!H7RiY7R2l!KNL4oPcY>QEeCX~A%r=SRu%mD5ps&fH^>C&akr2?kL_xai^=*|TWR9jn1jEx2W zBzai>(2yiUpp1(P4{RUa82iEX__11!PgrPZq0`z6-v-(elkQpd`qSHB7r_C}01ch} zvE7QfuMUsXiW(xsR8)u{Rd<-VZqqIm!S0brtDOScAIFA~`a zDD}$93c$4}01;Q5u71UWkm2EVpP$P1Y(_e^yrY(}R>-mQah(c=cvg$iL(2s=U&zsrppdhzZqH`XanOLSg~pdjATSj*iYBp{p!*PZ{Ym z8D7neLqNQ$J?80YVAF$v;eU?h-G9J?Hdz5UG{Cqmxn+e?nW8&B$T6;LY%q}Fa<(Nm zQL@n{AN8fing_*xB4Spu;N{?w)*N82)!qHB%A&71q@1Ba1b~EIU%JHkahot>q;w(h zvD{W;j;(v6wE&= z=(WKw5!#*aTI8LlTNqlV`*YU#IiZh)Vd+NBA=Xe@J*j07oFf#Jibm_1wTGx$ge$o2?wuf%a|Oc zc(UdNy48#Erlz?v`#)C^8(O1^J`;Hh3mC~Lu)Ir(nRvLkY`Y&1!wbdGVZYo8*$PX} zvgH#;08j}MpZz!%g$RO!q~Rg$_h)Bt#QS1`MbGQypAGLY6fHjGXJ-dMMhlbW@Iu2O zNpdVz#ysno>K&C!XLg-)bab@+qo!`xCqbH)$08;shKQEY^*m6M8)&vm8W?lQU*qKB zYX1HEX1pAFo89vIy3y8T?f(A0UV_QNB7LYl{p$MqH)YcwTzwbp>wOV-1(tq#%%UK<@Y(I_e`&MOUEpj$Bwt=z``Xjc zwP3HNzqPhzXlC{vSOJLGvhMEgKTOQee7O%Dort8fl(j>m+TJZ38RoJSr{9cds{{r& z3Rq&SagpoJti$e|T3s78ldDCWOLVeC9*qvxdh-EB;9|q9kSYeLCl_9@c@+++gcE@) z7GkwD07ko4p0-wX^N?se%*Nv#K+TI?@$}*L(I4Q^spCrjYm>vFp%(yq@w;pSTm%A( z0?UR}up{smT4k1L)zuWkPS9ro9KjOvHsetjDYpOXDJm+e?`-w3rNh#aIEw8HCjg*n zVu7|gal#h^!f-6cTwV&mX#sFUq@(}<0b!)53vBz*2$I{-`D93Uird1!Ox zti9pfS$sTsRM!URAscr%B!A|q+KrPF6Y|`N5^8F|jcT*0FBKB}#rXj4!M=K!$%R9* z@-$-o5tWp#R!nuzgEaB*2D_7jvdo$Df_v8_l!;GIPu~_<{)!F)Pxw+x3myZYhzO;c zt_^+vL%s{}9BQnY`TQP$#Vz?d)tG44nIAt!6`-yum^z3<1kKFoA8t-` z!UIBU>y$wxf*5-z+@ zA?iQ;`4i=20l<6O)u{@dZC#lQxF(CH zjXtO~JcxNl!~cTDo^mPEQ{MIzhBjD#0w+R}>bm*>!e(fY@$Wf1o-#bu22dk7J(LK# zul9CKc&s|?#8!W9{~}*olj={NU+>n~j}SQFLWEYt%IX2PVFp%MSQtR&Ztm`|z5sf2 zGiz&VQfyu|*je+$^TJi2?%cBUt2sHGWD2$mrn{KfJKn0~9G)BaafiW~>aQ!+{~pP; z#oY7xEDB^Hf@hkpEupw*co2D2q<>IgV1;iBM{{RC%U|m;k&Ms|sdHQesMSTp4q>D7*mJAXH zRzJ7+OKlZlGhR{jlA`i?|AV;BYrp^ekzk2209XJ(m!L}L=+M(sH%P#HEy5qqt{k}S z)Cqmh5oO@Iv^5vr)o`mQmC8^)_o^o|Ck>^i#4pinxDHLzFhWq0nK=FXcf0{ExH!E6 zd$^BGdyHCwZv!xY?j;QHQF?A}P+1u_J{4axU>8zg{c%Xy#FdEwQ~J#n2JL18*#^*k z-o41xk@2dHC>yHUWTyG?Bny?X4nXO;!#>&uEG`vE5wlHHf>z;COt_q^742-BA@wQ z+b;jU>!<(#0b*kcma{8WI8}s}R>9ZimR}*x|3%nahef@8Z=eR!B_JU~h(kz=w1jl0 zq97qDpn$YA(gM=b0wRq{sYAEqC^hs*cL|7e-Mu~E-@SicpTl{;nEA}!d#&}pd#&}Z z$?gFYl~ujCz3!(^leTux37tk){|_U+m$ z7{vDW_Ap0`0JCIkGbf|XQm8|1KNNCio5rT;6UXF#upKwtGcpP1wX?MqbJ+NISBh`z zfB&{df~&a3qenC$vKI}Kz^MW6>uTJ=Py7$6nj27OWMt?S^;!zRtTH$lAQXO^f781p zm$b0zb8xt`^v{*2Wc|C)ZKhAm@Q~0HMF4mv!AR!j<_5?SY_KMraZCa9@jmCSJGZR} z@ntNkBiu`2mW;_s`s5I04**sLH~8O*YnpSlkGd_*yD3PP^tnUxZJ`3d-~IiZVorN| zdx+9zBDhLSkN&RYVr-?3$9n%Too_S21++^b$>OUpKiKL zxQ#f$uGcT_|1t%^U$ZD}`4UxK-Q09|VM7(<^T5`G)7vUOm6PoqWt_lc3C=e_UtLQ( zfXAk#r++ltG%2Og)BCvli?9B#E?5lBBD*NlRs3V`$sIa zK|b{uD$2@$BSO~KS29~$`E|`Shou25?)&9;yaDgJ!b09ZpF469MLb>TP6Q`BXH7gF z2`KIM@#!byTI!gN`^J^=F8Ltzed!q)9?tw*FB%=B!+R$laU)UlzMzIW4RJ^QTeQv( z>vH3;4~$LxJg%+gUKW>UV*ey1z>s>j-`ERpTm!EVMH|%qyW^7`pK=8UB3t`)Xee%I zXeccLAs>%~(*lYfvj39O^d^XILb`&qgk#sAq^wG<@2JKRmw&!S-l#J_e(a51+8hp^DW;?G>LaP(0-CKKeP(;vO1B zn@ed4C)`NxP2fxHyr!1xVxXv`cw6;K9b@?TIBoMi@|a@NyS!evgEn5787$WXAXVgL zn@3(aXq>v7%8^NaXP4RzU!7_;jXmCM%mR$-W7;pR|J&lwu&|Z2wN^n5^K#l|Q*w;p z$AzgshY}0UsiyqO98|IxLEzMjiytb~3xr7mCiU}aDsW@~(wUQjPjzEG@D|s`zucm} zavjT6(j>@hw1Djb2Z`wMuSx%>L#fg9FlER)xv*q$sk`*vSm8ksA zH_f%=9lrqj*dJwzVXI)A-m)+8HFV!DN=K%bo`~e-rz_}M&Vu*Y&Fl(MUi7b z;?EMo@)75<`r*7Q94lsO`iiTh%KX{So;>QeDy-Pboxvq(hIx!tV9dmT->mY#2vou#&p>1BgV5bOwJ^3%!X{y>y@+PY{ z8fWEQR{U*h+xcCO?PK4A%NLCvDOTD=vUqGZg{M#X^UgVbY-O6_ETv#N?0l{@AU4}At@BmP z^vM$v`%3$C0JEM6AdE*=R##ixi~+2^e{C<~Yk}@9V7>aa?mXbv|81Jet+@`$i0Yq}j$HZFN=Nrf&M( zUjREy$U=G(R11`&qIHEebc+P>_8JxU1A^8!e?PSp4B_r7tO#7I5{(YF9bbM(pn4sT zY%fRIRA}@~{vD4xPAPxS z=^cFjhicH(>eM{^?_*c9?*d{12d0fJoWzOX;{<+jGXab2T&(~A0c0+m&YFzY>0IifA<7jnIKn+z8OL@7 zl=!BgT1}mUT{*8rlO!qdOGSAYGlZJtYIEo~^ZYd@M04nL(sa^9Opky4k)mnA9Bh@; zwa5UdWd*YSjDbk2`fvlzM)#aLo_zVhxv>@2+VM4>2tfD_n~MxQnSjx7Q!6M@Ba%(| z4??*cv z0IvikJk8$%JEB33v zK#DT5*kw=ygCxg);Nm{-EGDRNw>a8M0TuK1FDB7lC(Cygs$Nw1pZkGexV*e<3eI4{ zpLY&e;XK`NBi;_M!6isDeYTtxs`~n{(OPSf;~G+aQT}_pkD8c>=V}C!7PL7R@o`TE z1---Do_FSDr*K(dJ)K4M^8;)jfB&H4I>DUGLs2SJXup-vL*r=7RDar97|~K!{rSEs zH!0taI}1`})_2pJ35pT|av_yH-KYcWEr5;i<*GZX6Sq$Do&Vvh-W@h*s z(FMRl@w<2X-5B)rRyH@S9UWusgo)lH#uJ3d&hL0ujByJI2?5l6l{98ThKY`@$mG*Y zSJ&5K>o8Z8brFw@(G@Ns?0^B}ABunJe|f60d%k@zPb9`eMF`uMai+^V7%#)FZG}i` zV5rS7F)|%UwB;eOw60&UCSFr=pPL%6uEJu~moG(r{`~1tZ-R@5r-G#5h-hh3Q~$qO z09~E{y=u|YH{Y4)9{T6{JQ}_mSI1UJ*SD-l1V zzy5lpy`1I7vkzDQ98!51bfE0HTkipcXd-QOpDjzI+EL|BwlYK55#GuQ!+eVsSJ%4N zl~#VoZ~VS;w`6CSc{Bu?O&wL`Cm9SDH{=CHL}0Ja7L+1zn5ZG}=Yu(1_@$P_ef5b% zv(CvpyYx)@)Jgs*`K4w<<8iK+v-gXr3@aVl+>EId%z%dnHV-x;Pq)acvLP=o#6u$5 z$^f7)VAk6n@4%Ys7#gZcFcy@QXuc^UGLz;D_GM901>3UhFjl-El((kNPp6vn>;J-rJx&pD+$9&rSFBZw9+Bz?o0EaVCv=TQUASDUNA#1>(X zvk~td-y>JpOGFWl15hrY{(4`2F!`Brk++;Zq~80PF4CAyqz!;3Oe->|Oo11K=E-;T z){NF}sv!elteqUDQ~Xy+Nz`CD^(!n10L1u_arb4*lS*xlz9~4DS5Q#!eKBWE33!lV zrM5Sz!6!Fng`A$XeuIKoJw2LsSgDoeY5HnUKnVdZi|ObW)IiuxnvbGjT4Ai-`=!uo zE(+!T>t`|8Zc|wkv=ag*FM9#2yp@QiQe{;Q4d>>v)V<|J%9y(}eS_3}zYpUQ8_+D% z-6l~nKTD)g7(OyP>c0E5&g!vfv?R3v)7IQ}2tID>ckZBj{K^0rI~iZ{Bf$!X%U}Bb z?0Qk@#}1CQ=|Ik)Ioh`xk#U~_oVD9f42!65nybE*fd2ynhf@P@NwbsVZ&mmDMnk!C zB}UKrcM6pM$}xF3HcHlD=B=itrcaQ>c!ciyb#q`1fd6G{7lxkHpKiP;`20BvR$&?O zDgplR`SWK%Vd2?buL2*Qht2(O-n`j@B}4efP7QZoPI|JB+3k_2z!BH5V9>vvqQ(lH zbcb>Ed~(0x(W!4oGy|Z22~q_G1z~o=XzHs^;=yrVUR#?>wa&cQw6s(1zVR5= z65fynM8wzE7w}I(jhi4UP}*HDk$KoHK*4x}ieQGsE6y@8DQN{nXexzfH)9a%iihx4cKV%Zp`SPghlR?#M;P7f{tzD5nA}Y4y5D(? z<8AjSD#~Gbp2#z>{BcVhZGLtRCt<4k^E@cfz81sP>@9&lsi+nYbu z1pD|s{i>c*RGq3VN=Px?tvp&7AH-%bk7m1R%aoRuE6kWa=zA(}HL3X>)>QayM?TqV zWjfRT!AJcMY*H$5CYoDX;wb2B9iI}DlEN!z5cdAT>CO)dksvaVY;0^O$A7ma zz>PK!Ugn9g$3m)iGW6s$5mvu=TU)b_n0WI5B404kzP%`sMG7Sg5C1Gs)=U5Z0cOEU zxOc-x{s*m0J*wyFg~58)%mCR3#MsrC9YGqyI`3@EJ;EXv%3B>-_qL$lzPXI50$1LL z|HY&aAave)>t;4K%b$8A_YZx*8Qa-Q+3AxbtM)%C@K@zb6kjWKtC8KM@!zJgUhq9Q zJ;N}@NlJug+hgaQ4JcY$iHS*ONP_!(E*jAwk%5!UhG%7oKl$ugGStjyapRP6Vw6}Z z25P!&M<5YJH-!XLC8(P@mTp-l$gig1 z<6XAsqQ8iwF^DU3rB_M9KaxNyD(Ng-s18haWfQSIp6TkY%XkCp*#7ShKFhU>fSu^_ z<;ztiYA!B2x6l9E0i|~bm=!@_|51u!uFK@9>Y@J*^_je2dwkXmr#?_Ho=k;Uhzo5%S^f9}0`# z*e+Y%Q9+*kc#+ zlze`h-cxfmYbD;TVr>Mtf$jZ3CKUwb`hYSbtHS61cvSz`*5xEeMot+-T%u5l1>A$kA5Twe%sh`mZYn-w+ zZ!+*fF&%Q;)KI*`XZkV|Gh+;qjx-rTSS!>}ksZ}yUN4|f^pmhOSkyY3*UG(#V`jus z16En@PBPO@lfa(u=|<}BHQ=>NkGuu1OXd}m1vHHoj>oNKb}PFgDd^ajt+~+d<@)n| z*)Sai%rANlyzedQ$mJT%&3k+~LOIJ$8Eu)YDK~}Ie?F(u2u~FvWgL+mVE8jee0q8c zFIZ40;k2~0@3*(@GPv0bwU}VO^x3a%9_q-90VnOG1q(lR&Eb*D0sp34=HvwZPe%Ao zNujv`b+u76h!qX`EKj)2#dzP(UdLU~WvqXz6lVYc0cQmuqOHv*rJY+G5pPD;TGw{8 zIhJYji8^T)1gwlZD(o#UJZi5{Z<*o9)~2F~H6l`Q4-b~}sAsgpOgA<7ilSuXd`W)( zjFO+*?X0*YT2(b29aZ)`EznG+%UMTAI_=ZU5RzqPI(OYa$!a@@>0~+=_{?@Z=>wTe zzoV5ek86D^c3{mEtjJLE^;3!0uXbJ_pe%xwSBiQ=&w3KRG{cm?L*uDC`1rJRbYgkw z9{*}+#AK4Jz&GC*Yo|8ZX^CN-BTOte_=s(L__QoJ66WI;ILmMa`3Fr`Oa~T|1V3Z2@4e=C21Id*!p$zmvC{( zwjVzVuhNa_*zAzOGjgsbuC|L#^LUpwsy~Hd#rruY!TC(^n6l||}X zH3bPqI=!9ug@hHeGA%OkmPiBHq-(?&MG?F1e6_J8ZPxHK$5$&FZi9pJ>3Lb z&CAMxadF7d1zkf!IpOph330bc5?r4JFXr0{sz1NCd$1iA1pL>iLPnZR%J{+PH<>5B zHwKERE@r86Q|CS4%}z#F_2_T7E5yZKBQPSsh8md^XbYAz5GY`53Zw4$_i!)%aPYk! zlU)Fn9~t0ucLLkBKq6k#jqz`QUY`*8@4xhCZ{QExPAv7gf!gF*q39+ds+>Z;ANXCF|ghemG+Cu7T|99v0bM|)W!sd!w|`=-a8T!>RMW4fXBlmJrQ3W`J?!; zdTXZ0)$GYl@*ZmrM%C=W!Ps4|j(I8a>BL7S7oqeHWjs=g|6BFHME)_#KB0F>B@csC zQq-1^LJkEjh%bjov|jeDN(#54Dz~Fl*nMwn^6WXijh$V~(k}n#%h>Uh7_~>-H?n&F z45(pmCI1nPR^g|8H7*`XDOXsWT;ZV89ZkL^*H<85apd~!`STU2s;r=l`Xv%0c)e&GRCI8ns!vr=^5wiDLPuJ8yqz3)+2%qb*l{y=Y6qZSwVXP0hGUdZpR% z-UcxViPPZ%WwP$f9MgGK;e;PCOqp95bev4Vb`dCp2Z8|#>u~w~w{PD#*EfAPy$_d_ zq`N`vS3ucg+o6Q61mhCqQbUiPSYc82-_38sYO!z<9&-Fi@c~{Hie^)C5O$c!nGvLs zjvfKzdn%mkft2?-sAy?v-W%Y)w)yz9r7nkkt?%oy@lxHS~wE}td_4R44rM@!s z-ZeD@xdR*}3SD!}e~!x^TrDJaNh?vNyB@Qjv(iI);=_+uAmOkI_w) z0KUj4`_;{A!QOWPE2EZQZhA;?-tZ^R(v^E=nbO<mIloVPmvkyVri`DTsfU4PkYi7=DvD8{b^^Ws755TEy@^UJz(+#4kdx>nchcu zHQ?SWsCM#?1Tp#kt^0_=3=Jt*Sj<&f1qB7M`}Dv@@=pd|wDl5U3XW;N5#m8udJh5H zrS{^Cw`i+|qoGphn=Zwwvq9}?cELXiFmEPp4FW&PZp?Xd=qiACtc)>{jJJY~@sAC) zM{8?qyPke2ERI;Kd5d0HMeH><%K#?ZZ}S$gBd3`VnujlRAOHUp4_wf!l~2CsSS%VX zSMb^6}T#s#4V6Y{IvR&1^sd!MTzYPTTYbyO%=il?s};V4aImXq$f88@(G7F zFO4GueN29tWxtX5{%)*hUYYAbDid^zP+|k(-;F&x+cUv{+PVXy_=M`f@Z_F#5$>%gxi! zkpAw=-=Ek}-eALcgN+@HhCdrFot^DB(gY#=8eW7lro?y!FF^Jd$AiQOUAJF|zCiQ8`$UttieiBSo zkCYh0E+=i~SGxD*n&z56a(L96AXUsgJW`;@M$0 z249jZILGEb3-v|3pY z47MzE{LgFU_C$KPdd|1qGU8@%(g^*sBJyvIq9W(2~=n?d&+CzbbDv1Hzz;;sp_wJuY;Mef9!ggqTTnmOBS3{^c47fIIO8| zrMF!Fjh5e^1j>PjR>5bKSqI;BT3FEnH*em&0MMQWLK&xH0Xuaj{J+|4bBlL)5`Q{x zo-B$qihW*E@7_9qss!sA0q_RWiL!V5rzoZD!S0!skeuoR6jH)Xh z(`8dgH9jBVg@vn^0xp1k8htagWp8JPB**W=V$r~7d0?@Vihx0R8mk#Qy5A-aitDFp z)@KN{O`w%f78iSExi-q7k5b?-WPUDCWEo+LxqdIuxjOhmXJ>`FZ~`k8zV3a>o6Gz0 z8j1ZR8AjRi&QmhfyeS=5cAie_d+u$lO0VrW=BAAjwWemNqh<4$(=qV*2#AHcP@ z-k|F;Uc;$BaWOu@&{;qU8XAUE5^XV>^S#Q(g$gw9-QQmKvwI187>bKws|6vRxYohO z3$4b$Pn^Q(|0U$U-&Yy7GN6v0Gc}+FODCIsuUtP@pIetVIb5DaK1at#>d9{P|JoR% z=tU^-acu1EKPS1O7o3|$-~D*N+13(5Wc%#d^?jd!X}iDHaw7z$bIPXT)EojcjwGx( z@;5R%oa`@MluqjivK`|n4jsXZwx6q^UU1Gl3-B9A6`WCiYkosvjGtdU(x<$Mh+deb zmh@qld|R8qjwtDY4`;+`Ydh=xPD(;t+thw_dwYb2&h4KRX(GzZxh z7rpAp0o2||oOk_wz3)tJX00ERQg3m?5;jIaNd)+{WWTX@UjZZ7z3`{X3J~Dzl9FgR z7AN>$wV!ohtoy&?6iCqSX3YKEuA$V*06>6$Z4|0`6bsIDD)FxsbKa`5g5wg}yOdL3 zpW$5nBb0<5POZ+j6>wQp2YdqX?;*!YxiHe~HSsS`f10129O7KMc$-Yq@u3cEi0Vh< zUTI|^$Dc_NAL|z^E~X$2b3)J{L-YmZjeR9oT+__6Un>9r0czdXNi0W4+3}(s1;VEa zW*!Sib6FS)*O>KVrC;fAS{PEd>C#P9=upuii0)VR36f#1r{m+Ect|o@A_X;?=XQ0u z#}KP`zuS1dRTtN&exQgEeA<)J^4 zd}w6~^W0h7hSdpB!JUmU<__>O=H;}oa(8X`v&G)}*wA+u|C2c;SYQH=o&V#~IMqBj zRP_Q!qADy_XV3D9S4Osse|z4h2@_UCI515>#C8cIs8WD|6$l(uu~w<~n89(AA8{jw z*XkeoIg+gU$Hoj2kJQ;(fnx;(QBY8j-+o-M&V)}Yi_9SDTKCM1nhG1BDs zM2Hpd+ajxZ~mDx-=p|0 zYF9<29b!@>$J!M;%)R>(>K{KY%|<3;`kiiI3be9x!>{)$g5@lCoRNiU=|N;t9M3AV zUcr{0y1xTzP`SzSi^18B^m)R5{iZL}j-GcGliEq`-P(@vN6@N$GCDkU9j$!vMDOGx z@QYbn30Wtwyz`BkEBk*7xb(S98XV$ZZX?F9;|GKhYvcxiq9rA~-3tQnI5#vfVo@N3 z4~aJw7Z3FHHEnJ2!;7x-v(xz<&%kEppFe*NmAxz-i7YN2^7@@@;&sd3-hQaU@ltd8 zjg5Zg6eBYnmH0jqya#-4nCmL6VUBiqdOCnk2FqR@SP?uu4MK=IUcd<2*c292=Uq{W z>nCBrxR(Do@168jQqh|_XY!vE_I0mpv5tdsx%0c+B6+R%?Ikt{Kn#s10uDBH2B!QF{*2FyK?Ke;Yq z0@aszlOqS>DFQDtIaCrQV?(f?0p-*1HI}}_D7|8NNx^;V(D!|n!MBny)HVCu1eKQQz{5U0GgM&9z{M&iF*G$f zsS{7Iq^euorKnhyb*pyrhDT{`$0Lr_(er^ST2474%u=*WUifc$^b!_efzS{S7cjROb_kg6- zObbbYOi;lkx&FN~?q-|NdP}mR4%LYilV7Q#K;rk$)f`l=$hHvsAlubt#Z2XwZ-zdO z^fQFV_gKbRCi?Jd9FGef`0`RITtqg>#IXvxof2>uJk%BSh~r9`clLCyrV8;Pt=Dc6K?p^pji>qYmZj%+L0ts^aQE|g zTFLwm(5MzBx^K2lT) z%@v=_IeM3NVD;LHV3%dQjbMZsZD++B^ujo@%vyj>{O(<`gXti#zkPCTg*`3F$3Zel z{ep?z5zckI*9h<`i_Niw%7pp$aXtC36>kDc=`6;8O)BHQ+}JB8&Tw;JLWVcF9i?uE zmWi{fVtpfOY$Ts^pA4Q8`0}+ymzizAV{Nv{{CGUXH@ajE zUQQlwHa@}G#_S0c?V7$2}yZ{-h$h^xt@}ggUH>Cds)eh}|S*?9oxuwER`oTJ)*7=?$%5+*f`#v|7 z%2Lvyg64gEiW4LQZDRdPuVb|l_yH{PwpTp}{{SwC&d16XmX=Pj8xn_{ihR8sjFz>m z@D#s!+sNVCP3!l?4iabNU4bgT=K*h%^uXWmw2WU4LDX2uX)5XF7od0luNL4BM=@Td zp<+D34%4b!PiI;}K!hlx9k`Q947O99?LIN3q@*N((cpvM z0>6gc_^1fmWR`#rqm}ZhqIK0A@RF2ah{O9stzJ2PZ&XLs~*UwX!oRSqYQo;>Njs)T4R1@7Mb5X(2v;A1X(LP51BR;#bsAH9^6@FpfEfNi=O1K>in_U-cE@Gu22Zk$zWW+r1zZ7rRI2R{gz zS3euJOdik4ByD^A!Z}&P({`lqEJM>6wvuVtT{`CT+a}8NT%@}?8Zzr`Yd{V5 zyV_;RoEA6YL*L|NPj@0$xMB|QbRfI|R$pbr3+R1bULFW|h>jZw(mQse{OwWn9dB>l zmp7%^qf4?iGsN|4B+BZDD)!$mm?-27$}cx%$`9L-+bu zJSqoj=)z6u*Tt)fy4#2>U(uK=Og&~3tJjtlqXXmEsR(aBo9ED!I;843=%#~X?JFuO zd>cf%lMO(u@{wY~9#Gw8fN$op`o}vQpa{ld`}wM4&B|{ zoaW<{_QX^~04<7^_@jKZyVfyUZjmbH@^rg=eEjkF_&EN5DJDb7{I4jKGpu<2PN`-0 z=U{lTTym}K^GH~$Sxrq%VPT=^ScR1@qan(UE-^9D_2tVK`+qN-{Yh?gTrckcCec)B@HSvEmIm#D8nA!&%Tp2%f9!*vS|8fB^d39|~?EGYBWp(vKetu{~1figY92D+Aq=nRH6&H6_1P2Ez zxdlwM_qh$wCER=e#z#>}gqRy|wrlWw^@|#_ilvKq=n6SEiHfYMps=xdOKc^P}@`4L%%k{(f*%)aL|8@eQqvn}$$Y{>BcrUr+u7->x{Ev+mj)V9YvZ4RUqPGH%!()ztL7l2APboZGwFr5p|5S_vbaj5&Ar(HZVCo0vo4(A`r1Jiv&-+Q6x* zTYu1eF9dppo)0?$UgtdFHnI(z#I;ud$Yen{46kBl%34Y1AbN&1nr?1x2)98U5GXdc z+W3tF zpx3_UbW@Gc?+JlP7872&zScW=Zk4a>s)E;VCU(bSNQ#e#bf!jS4HS4H)~&Y-B2%UJ zFDLP3g5AK|esBpHzS_;H7)9Gw#GcgxR;0I3=Vnn!QTvAbP4pirY2`U!FUrrKa|Pj& zjDJj8gR{far%u?ieD}uKI_d#Te@*s^*{&7*OC<$`5SNv_WO2U6lZr22Fy;2?P!`u| zu6<_bkoLAY4y>IglRk0GYVw2|OB&WM7`3?g)S+qy*95HO1xC;Lt8kz>#Ks;HMy~w| z=_KpuB%ZlnF1-uCYd3ju-Cu<_4|gbI;9pC5RZDgWnAK(kta1mcI{zKa{r>@Huci@smzq(-?oI zbs1m;865W+HGBwTfS(6oZ*7+v{dE8U0dDv2-`L(I005zb2&ZHha9!4xU?c+s3|Wxr z#R-tK0!9!pQ{H5?H>7;)3E2}116x%So$NnqDntlyvHGLeey zvOECbB1OXU52?l`MoW4Dkkgf&cdev%?PAu|K9J=zU#i7lZ_#Wh*!DnZU^sYqtbV2m zAt?xSi>N|mFKS@mkzvpDU;%u;ZP?{%PsnN4(doEMi_FN5Z=uB0T_{It z)i?c+lao_>Z>D)s*cuQk;E@0MA~*DK=@V(F=nIvEcCyY-l!D!5Miu&P-qPK93W7ed zY<8>*SSgntu_ecLI%~U~_rR&qz$pbR{Y(2ZFs7P#t*{Q47^{hA{JtaZEs%;N$G3B1 z1gn#;%|Ra1A>zrM(A76EP|S z*z3-Y*5IhWy6tv)gzw*e-~2{N%-ZkYla{HdZy5?UG&mrB^Tpa@J?c#m9oZj0M*2vd zH|l&f4wk)vON!{MUdmJxMNrEakG>G=Ir<%4<8X;0$t?C;d}jrb!q8UoTa3Uu`Kk*Y z0^2;dJ+trC_1)zw&l7p^v7kgXQ$y;S#EylBwuR59`{Hs$&1bKIFsEyx7c#Ph<>R9t z!*Zn{kNmrn2*fKea*rk5E@oouygJmz{?39P)%WYb-8q=LI*jN2L@ z4tL4Mj~_oCoEP0Ma0ci0#Y--z6kgNT0gwh%s)h=&;1oK+RO@F=t_;n6g5Mz4f%reW z0o$zrg?{=YMMgnE!O44YaPWfm!-tCE8I!B}R1g6Hi(G(S3Km>L5-;^oSGT2u$-l14 zZ5jK#`|T|%!YjND2j*u}=g0o(47JvVJEOzm>&pU~sRAKTCh|^?Xb|ugdA$o4uy-XZ zu^PhZ874OI-XF5z1XOUm-S(`kWIRKI39YdtKhyKwYh% z;mKvW$A)6AgUY0gw*%8caaGk+9jhmf7jE+}mD!$xd(e-uUy%wZrqnUjGB| zK{pm&7TBHh`a|7qF0RNcY-mbWEx<6IW(BSux{qob^%%6ZC_bu%;1zbM< zu?DuKd1>d`=5dGgna;_%3?9SxcVaH00DxDD#!SkLK~0T+(jg;_XNgBgUKdEk=E*1h z&rd%$_!$D5LHs$Ccx3E$jZE@y9~(PY<$pe!7y9UG5HLgmusv9kKJNm4q_!19FJOt! z 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

    w%8VCFq9NSy%yC3ec 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ⅅR+?T69*y^kmmaV>}(N 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�n~yV4JZJPf!u%jP7Uk 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%0Aa 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%0A|13tw*7`sffJ4-C`yM=K@c7%D9VOl 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

    ?09J_UZDWc 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%0A&KjZp}6dBQ@3)BXbdr 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

    HQk08fdlC*tI;jGDQ;k4n|nF~PuWJ29N zR!lsp!46B(_5W5KJ^h@wmI-$E1JglvbNQD=WEp7BSH!MAtOsFIC-G@sEjkZNGfxs0 zqIFff^Ft5UjY|hNuv|7vU6y=HJ{c$Xvov2hjXPpt)^UYA0Zzbto~-7>57ViYXYeO= z8Vm8S?6PW-oXTTiB-{#Kr)MMI1lf3rY74H&|0Jg~H6d1z{-3CEAHuzgpYINt&s}ay zxJeKU3zThjX_N7Fb>J9$g}Bf}24KZRw<;`AlsVt2lF*1%cq!&6!}8bEfAL%uGbAM& zkCuCWwtg3RI!)$WjW;gS2lS!~+Kx@c1*{c6@{g)VwzVpG9iQGUU8>XFf%syv`rBon zrMxJ0h5Y|-*Gdqc4OBGg;inVJOXAfu!CEo^No8Fc30J#SEMRFh$|5+1>!ugz8BV6+ zgr{U+7hPfzhWWROH61`wT)Tho%rd(K(@ZLOq&l1iumJOET}Zh=RwAe9#gW*B)NRV+ znOfg3S(bNZ)xNO})=C%QijXAumgwNYVfs7<>iCP7sm*WIcgUYAiL*ru_&k|N25oUP z*BsV}8L?7!veHa^1al_IOBFFobFk}&@|nkq4_6&V0?i?v&Q^Fl?@0H}D}1PV=yy(% zA~k`G%L`!`eaQc~N~SsRB(;W!6}Nf?svI$!IKh>n$1)Fv+9FScG_;_3H6$FD<-{mS zTGt%1ix^$xbohA2mK^=RQ}4{3|Is~dCjwkI1|XAU&Lnc+77vZbh$LJ9_U4I^eBLDgR^6`meXTZx)W;s?RTtm{gBYiw#sPd?D3sGOoNQ*RmA}*+i~^Hkm_`&Q}dbN}zwnPnMO6w9cr_3n7C_=UG@$DXpEJmYnKjnl3vk1Mnq4ahGd!@qh0{KVQY zKFkaskfm^1(%IvnleLa+un%5KGb{jSutmNr`|>BKmmMFDm8as{Sj4)rq$92a%V%i7 z^@a^$3gQMD%RQNi$*RWY;xN=XSZ2#|-)N~e|U^J?LwS9&}d>3-yD}LiSGC-<7j8azeO1vdi z5dT?IHxLZ^ieoEffdLG7JIg zu~t|W9m$ol1K;*eG6b(Db?T$F_vu1^n#l}T<&L@G46084?o&-tj{{q3nBFQ#WuU-RblcXhE&c9(+eM!5qFtduDj5Iejr+en^(S z-XZdMAfC6{&odtRl*hs-*a7{DzmFPjAoxu3;>RU91Vxi1V<^ zWJWm&KlMlU=HDuV^T~$w(~!C-+=1t&n;c$Fd$PF-j?A%d7};^Mb^U)(pPui_d=3v5 z#rQYYVCM+!U|$d>IbMvDQLchi*r7i%>G^c0t|mz`c`_BG!3~pLp@KdJ*i?-8Cc zJ~i&{$d_@~P#4pT?S zv2X#a$Di5C738OI0p6AVdGN#pZ1*mJ<<`vfCd`o5RAK5aI@6!z{Sb`JGes50GzTxt zSDvn)bpq+e|F?PLa>=kn*KQ|@&Xb&$YK-loCFrKJp~{BIUH>1J^!!q0#9g1-V@l)m zgOt_MZ)&;B6puD2}e`IW=0uok`vcp{>RI3KE8jv4EPwo z#S8Sv*dvVAYdo3m)6bS|bb{2`K`lJtbXz3bLOLsB(Ygh^7N&$T`Hko55AxH-uym!? zkimKQJ#FB|>3LbtRfjo2I%uO#RL8?RnI)a4eLbZ1+P6j5|3`&E`_DS%m*=Xw_N6!^ z!MSR!<0Uw~!kVr;kC)(FHPsvm&R0nthmf#YoQp{R^rh-4nDvV`#g`2%0uz6ezxlR|G3!O+>8Zhk`KeU zLg%F0_4iO! z{@GArqvppKL55mtZoOjcmt*^@_==E0BJ*`XIXvL?63i@cccpcPcKWagKb5=DA2Q%*VD_sR~-9#$)7sl zol7gE%RLPv!TMP&^(J0|MbJ&=V=7`+#Vk^_7vJyyle!A_*Dv^D#mBAT{+|!;_pjEJ zQ58fV;=)cFNQqPF{jnNMXHohkGyh{>zK9cU%J+7m)~(Xpn(~Fwv6ha7&VYUeztfLW zb>ie|-&6r=yhth@$oGXof8VYnK3-iq(x}l*Uo&eA+r#}}2u;-~idKNTjx{`dLuK__a&ycNg=k#XqZ1a@J<;e->@H=&d{u8vzbV<(k z6Md@NAxk>>;#pncxA6Q-d`1b+;dwkMlas_EKT`vVR~aOB#Qh!Baxb~fF?DZ!+dbRP z^}VkDPlu=fUXC#AsP0YQ1tY__NSJC~jOw0|k?gVvS=H9@KX+1?lX-T_shKtS#d`cZ z)iQ1-TZqL>!84nFJMZBu- z*lxN)u-o=fU*mFXrG~~rt&WNDDeOZ{l^!x{!is2w-m(XV#8XoJ?t1k!srWKP=hZMY zop)HlCa{fOOftf(V>5P29Xusfds6yxU6CeJRy0&`&>es0QLN|xENl)L_T=~} zsebRtx?;DmGppjzdi>UATU-%_>RqK0fpIDmSPX%uIQH*)@YKVmt*-yiDhBQr28=tG zF88i<`*8_K8ZHFE$OPa0%g@dDN$7Y}QD~)aF(upY-ji*m^(-nc?Y=$e^bs!#b zM_!(cjfp@lN2)KUxD7=xapI)K6;PvanpPuqJX~`|`Am znOx&vxJr8@7K7%zKwH$Z1W{P*}r#ldoyvficf+k>Zc{eMyK+${U7A)RPR3_)f7(E3aCCBoQ(y_4yjT9!uqHj^-`wgg@AjTyLOcn+u}Jpb z&=1>)If$0tX<`sFfYf3^C)nLUAJyt(B@72IUsndjT=_?&2r4-{{N*#G;lcEhOr=g1 zTl^$_b9aV~Yj^#BIrPpiU*8$!Zr6h^tGls4ejDGAgJe$=KQJ{_lh5%)GlR`5KX&E#G##>hb}H~U3`L~_Iba?i zuySe(Kaq2a!Hm%d*L{i*AxqLfi`jXJnG z9Be_?;Rcuq3DcQ}n65qfe}B?5&Y~~Beyi{&R~#M-eJ~;`xLR7kQh1}tXtVj`=C1p4 z9f>`N`RukCd4A&#U1#p}<-tcjt#jC&iL=0m-R}T>dg7>Y2K6(w+CHDzKIi6+&?g5D z^TyViLCM>*&IFm#r%2Zl_F=K?1TDmm{+MWh)-oY~?)v{~ctxDza&}7HsJn`9*ZY3% zxwr_%-&EnhrZPs3?4&n6+eHHG2FIpW43L{i>`&I-UfHF_la|)Xq9+55Tt%3siUjVm5_X3NWN#Y2^JrP4-SdA{SD`k-5i*N`vZ+_HYu~l` zNnPg}vfEi@n(lC}V!TWKs;&Z)2?pui;ZwLZ_J{My>*-^`Uhm_e=}ovYj2~KEd>vi? z-xSC3O^$~+%2H;ro6(aoAeB6hk%Uo;lh&V5Nst`=dM%Y4OS+cLd-Si$CZv-;V6D!e zuAEv>e$erf33EiMcSsGpWO)2NX!SecO2mL#PPWrCmfc}$st8!i+gJpL#2CZRuta#p zBAZVuxGIbA^-L^iSQPLsl`57JUZQ@IKU^tmcvpR(s$-GuCk$NGl|ZD_nX*JMm>0D^ z9}LSR&A+*799~4hU#xfcX$hBIOV|Im4{DvUE?Fn$u`3lgRK;p#Ke()8!G}nV*UNye zJF(>__{K6%6xX^{-4gecc(V0X@_1Q0T{wIN?-C!WresLh;WxhLD&>{bqvA?-e{$z) zKD^TFaWx{EEz(ucGagu(9jU_OV zOnB8;A|IY*o@5USM1TaDN5gK25suF~Q_mc|s_SX99`jDVq;m+H*({wEl?vR0Xko-Y z;|PcV)i&=FJ5>L6{eSlmvOngS{)3oL4Z<4G0S1^GsJG&4@~a6TP9yKA9-rE}n(?mL ztFn)}mt;Dgb^xg*#ZIPj@SER}U*>0{k&E&<_87ZQS9KK-TGg%|aTVE5Z-#_(v6XHT zj7Ucnw{avUI&_cfDqg71yOZsZhn=5WX6Jo&f`u`r->y%DyTsG@pWNave`7yYKJR+s z!Bt$nO-xqd7@PP>e8`ph`K~}t3IAjgm@&f3oOx>*2r@^Fpjb)>=;*Sdcw= zxTh7f&j4E%JvbS*Af9+!>(kN=tX@|d9wTprxzj-Q6aSEX*EC9kN&u?u~xFpzbnfnD)Z*zIab#A5gl-^jGgWXc?h=V00p zgpNjOy8eHtcTe|ZSC5}$4-bprm+)xBTbdw2_C|?2*rhImT5DQMZNx+HRLF=4>YU^^ zehXLhw`4hsex%kdTCYik`5sbYs_#tIX_NCFDsbk+rhhM*Q>O#2l^*f7nc=tiE5@QV@@B z5<}Q^_O$b7IKy`GuzdwEhtAm6ahdI}>BX`WoDt1d539-U@$B17f1DSKedw(68u7OSPg<2^iQU1`zi9FfiiOSM; zEUG*|tV)=Kc2nN2GabL<=qvSUXdH%6eW?C_uJz>vUJY01NB*V}D2!>P_Dhut8?u{k zJ$dX?@(054WQc2Rbq@9^rpe`1{*~Qkcq%rurfy{M@bVxa#1T3E&rT%d*LjUS$?d&# zlh>35$8uhsARb907>v9rZ~McC_>zdqJObMan_p8Fc+qAz!DCjyPvuP>)tDz=a&)AW zz1V3@S#XB*h+$u{q8f%Ane~fp{1Xm0mMV_$!R&-x%Xh6KQf21giHLzK$&;d;1?ei5 ziMQaQJZDY4hy}SZ_p0D6WQf0tAgJH?XQtN09{T^KUS}&TKE2SjbOS}yF8BmbZAdH+ z#cRbC`_Ue$RWPx57AT{jG78D7h3tf`_68tEg^)ta)%xWQIePbL=N z4XyKXC=w znCV-}Of00k!7Ib@;Ear&c%ma11Z_m~cg-)QDja2$yZ^l-W_T5 zIB6kv%#N%`vbl?KnIu>n9m{j+i8XX5jn&f?m!BX?_FVW^Rtoa7%=SLSWwNNrcq#Tm zu1pcaPFz29O$Hyj9R2@Z+Dqi?mxROUeUN8&H{mjgFef=!^kff!j1V4~z6g&>{VJB# z2Z<^*C64*jAkF?>z-974F!dv(GiT$K*aQ4cT|k3yR^>v2w1n1ty`>CGfZ;+i@D$sA;MB@JQ5-7CxFfT23@P>iSGVKFNM%+B6$#J?~QcVZx zpe{dES@T=$jz)Cp@fVV?m@JheJu6W>U9UUq>|pUM%2Q>6>aq^I;04g1K6tPghrV)! zOl{%|4`89}Kq}e#Ue*8q#~|1EMERvQlMk(*4g;Pg!ug8z*sJX#B@gD1NosN=A8tAt zWf}MRE%RqpZTj&LM~>vNauqAd&*a0wU{mzz_r$x58RXgD=ekTD`d7cfaBw;#!W-T(%S0XLlXnvM@ipN8Xmd)R&PoCD5 zhIlwQb5NoM(xm$vwj+O~8^dzs;w4|+;mN8_=xjbog8w5Ix6+IDv#gD4?H*X7M2q2a@@MQ5wAKi&?VO3zjD34iPh8F z6YHv*#JsMWo}-F)P2IH474(xQ_))UAngJ52_{heaAS5int7$KLQ|Dq%*Z*Jj$wT{n zGBdz)a9~ooYW_ry)T4M>+%o8`1JD{H`Mm8gNkkOT_D-B-= z(^1bsK03lh)2}9%_$CE^_9uB$eY1A1B28)tac**FHQMR=|EGRSUt3L%hhm6g&2P!1 zJbhjLhz*$=vSs=qwseWre902Yrs;LZAn^Vp&@U7x&V`NLLr@ z@ZSH&+`R?Kd7tTFZ-5d;tL4&bn!8KOyIQTJm3F0-wtJ=zGhB+hAOLc)A_)qBB+Huw z+eZ=>2_SEI_Ijz!Vs7mq&{_~4Ex0VI5Rk_U0yel^Nlzg8oy6mhA>fwZNGY_~{ z5rBX+9z~u`PwiwsLpY3wOig?*T&5=Ze5%jXqc_XuyQRkOl)uF}hzh^_9G&a>_!_#% zNzaA*XdGU0&5Iqqt=4DinDt3N^UpZ@T6NcV>s`LrlJ0L^`p+va@743izXQzoSsZ?K z^GZjrx7J^(;rQ->#qmF?Yst|MTJ($ayVgwAV#P=EPbqn)jwd%hT;iBtsjCrfzBd=~ zliYx)~64g*E)=t?v~eN zDV~(kiJKl*mrKLDj;wBqH56*KzES`B-bmKGGyhDxX?+66ZawyX{r|At=d+cSvO7CX zXi&MUuJJrIL4#m_Ij;ZlNa|77wZNZywWc+#h~BMNHTAY^eDyLxyr7(@S>MCr`G1&} z+JN5BA$h>MtlP-ed~eL^?4miGhx&p-m_&!;oKV12jsXDk)-KlHL-%(wWPf;A#wH-Y6v-L>}i)V7&SI%(Ue2(L8;nu;Ue!g|B&SmZ3qw<)0 zo&Wqfj|o!}KWtAki46q_({*p2rz&-ha7X{GQ=<2DPvZA%#RbyF>eX46eQ?gBm&VTK zt*pyzlbVV8hcUrEYb{Y-EPJ6||87;Ll}nNSVD7)wSs1-U|Km#dKu-pLVF<6nVEoK# zug8>nPFI7m7Z%2YtFw-F!PBZx1R;j%)SJ`lkS+S0HuQWtyy!4`;`0ZrTb*4n&befd ztiltJRt8#cEH1#u@CT-}y6phu8)o*=x3&uK3AqJiC3AGCyWltJR5Aull8yGgYAx*-A0f z*?K|U5&NDkuRJVO0@wA1tHKkRO}l3PM&X-|`5hO?Mz*s%(+?K$HOx^*ETNgAURPz6 z84BGF)iT@GTlgdQq6MIgIO2R>(r>eqpVh*L^;5F~xGKBkv&iY)c?NH0-A@l|)(U?! zjh1ufFVG|X($T(SRaWV_=#4~D#)}^2=8yD}yu@}kWhE}%93NBv>h1k`6miz-@=I?7 zHRKpeSf^{^H{OCNvMv36?Xkb~H|rgK^LqVL_I@@xc+n}X%6lTl3caC>#;ANG2UQ{b zh)%{F@)EAdGk&Jx@*Nj@^Y1!aZ5`0Pyc3?{5BZPPojogLET-ndRDR+$ah7k5ZHGTY zc@;{8U2-1UXPSf!_%ZoMlcX=lYJN6_Z&uFi&3R$}4l-Q7j@+X~Fal4>IrWLvS%xQc z5Gq(btJd(GIhgB#Z71#7TvgtQP>?>W4%kbCRW57zmCvkBhGF&FdZ6&cdaX-+##@<0 z>HUKxvR}UsQ!>@%TV1JsBla(AUF*_+RZOS%Z&dqfoS!L^$cbq7(1~17Lx&^lN5b>=FG&rfTV~T@yq!$6se;@xC*%LeCsM z9EQkx9?nx6>Kl%z5;{f|({k&yE*zg7^ROgLp(@n_w5DOAGu1P%`kT2wHe084V#f~o zPeo?cQ-;w3^GWfg|9WmAzVIq_qJnUmJ+C-zofhi&)CE8CS=3(8Bwd53n}lH()j|n~ zF#cG-b*9TvZV*p(;`+>cWEpM1Q&CvD3%-NkYGb{=Q>F4mVNG$8-9hJSt=P?wxw|;rsDdWu5%bOaf-`Ql_i?nVuiN>8n*WwF+S}opn`DZe8or z-zx4udxtISuxVI86xpl)XDd5ZHl|a%nM}z|n8NZWw{RKjG7ZVyTRan7k&Cj8B2lN1 z*cIqJcoCvx_P$>0uqxh!9QsJ=jvWvXF3YsworwuA>b9W{#hSWZU+!UxRG^gz9%GyH z^PJVjW=|8YNPgmGxX0Rc`z{!vw@|HYizbF1ex?^h9J|38*Wh*XAZlQJzH^pvr@YS{ zvNQ{#{~SfBsQ46WFSRd%sZCAbxCutO~U@wkpH(>(m)+4cGlKG0FlFM4LQsSuB2RP{@r zxDI^6auuZ7)8DSocQmlGWd{ZB%^VTNK{eGI<*5f3|8$OQmWAu}UDggWErGRRS-lU` zP^Iw_cA&Q)om_-A*-yXD%7_k7iMsBfhFsGd%0t#d-td3!zhtwXQs&tkb2PFK>(N!| z0V;)}#ICGSopKJZc^r4B;P40b5No})9sUtxNxHX_!^o3e8jr zo0^)<%9$K6;gD_Y&%DpNux?GYWcL1rnom8bN39XMYihUFKS%Zd`!!!)olnzK;x&lJ zW9lLJCkLVhgMajlT;*%(A@y>Soz|=7`zlrz`>ZXR8;BWCjRqm&)ET1N7> z>%q!)H5~Wn!?KfS_g3i9pm9_bf6+2gfNF&;um}dp0oi~P>DlD8b@1bsTFF|al@zpy z=iFGAVxVsHa=1qa74PyoHS0NEgWXCP7f5nf2=9Ym0?*y`k5oy{%90jsO3 z?7Ye(0-C}s)lOw%`K(&g<=NdCY>+LcW2O=(<>{n6`a!+dx74i8R=B9<#Wh+tD^2Xk zT8dR#ysw81PWfF=l-byqPpB!MT)OyXkk+ODex<0zGTExv(eH~chR6K69Q7lodEMi( z8y3q~@3hP9IJzFT`JGyqr(NWQ{epHFoxHoL*^{)`C-jxMuXs~k^BlD)Q*(axL^oy1 zmnk!=p)j=KXG)nx*3p_XEN6+85`5!~6fb{JLSjl~`Uys1e08mZrA%lS2z#<-U&be9 z=jrvWv8o3slCBiC%P5h{%7D&RR_X|4;%S}NGM1Ri@I+RQFrIUXlWK5gyrFhYzbHmI z24PrvS|78VCC<#(A|Or_wpAnc@mKnGn4u#TpS+&#S!HzeLCF=dFvV}U6F$IIleNSs z>zq2lAcJZ442KOleR|?Z)tVlE}Rz?KZ!a)$5fvd)LO|8gVGjn~m*zgw&gmtofmGwg< zB~##poS;yko3n|4C}Bq)%FM?j;pJ84ihNM1jvTa?kHI=WxpL89gE>;ugW>>_rPW18 zhEim_;a`~v|KWM~2)buJr>6ZxVd{$8G=R!dr!{%*Z<(Z?R{l*K&fG|i)%T)p$E z6_q7sJf(Vg&huG^@+z$C{X; zy;$$c9YS~Or-z5`d07T^%{OJLKEq@Vt~F~j$y}9$js2^0%sPTzR@I-rDw7qNWo$|} z9*b;)JF-(tJ*ToLU4G&(HD(Gc zuQTV=v3R8lFk^jw-;Uga@nJn@m1-HE(EL0e&XYHpkwz2Hc$BA1=K(#Ncs9FL*y2tf zv%ReBEMr4vi_in_VrAD)-G>PvO|VYBKp1whSud2&SrZTOyF8E2a=vg}Tq6d0k=CXE zv5qPNB7&vE&KNuu?wnK%d#KRNHGWdr;k%!w=d#B2K`&S8D&?md!it$*=s)-)8e7)N zlJsu0-1GC_-z!_*-?wLX$t-cy%-Mo3SdyxuAy^|mv=xRn4Q|w2&<@tUxUc%JmW4+x zx>V1vZDo@;!+x#c1@CVJIQ%F5fvSJRoj^8`E zD$7Jqy{p7jBmI%?Ci>76K)jMKh~LY?k`O zx9PP^4`Q{~hhJbyX4DG{A;-P4`nYwiOaD`?wJ)>B4#V-4nh`}@9Mvr9@C3TU3!2*V zqO3d9OCP^~^0;lw*#*IzO9sg-{g(L#?Vlc+1$ZxdQ(WN?&5)_>^Y#DZ_fM|MKKq8& zaqr}+?8_`n_Q7FXnd())nOn)Ute2(74nkrJD&qLPldG~!X3Hl^Q074iRqOwv$X2MF zxs@8nBka#)$;#Z~-pN&2MbSimVs&#nU7J7hE-VgZq7>Ce7>}KD_2|8mtFkMzXjlKZ zdna3${^zodLbVeH8=J?fTb=W*&#lJr7<(R!(y(5FGY7@ z+v48IRoNzD&>zzCP^PK;nB1ecGiiq_e%58u$S_X_aN50-tFlnFt^VH0kGHOM>3=D% zdy@PAL@E1F%x6?ZqO5YWI~~8ficC_>XfoXjSDZeXSOun}K50jtg3QmPB5NA-fWFfd zgMB9E%>*v?uh%-f>3lrHduD3s%jLf*fvl5r5RYv*E)^wj*J~Z6s~dzFlr9@R23`0J zyJ2>=LKI5xYELSD*((kWTU(t)eC<0_?)Syu4oP z=x}wxhx|pSLyN|9p0R4Dx?zis$2^IT@!YztGpDE0AsYO^^8T7AsS(;BnFzfxE#E=! z^oOUdqOPJcR4Ej;t{lI>TOQ1sgxZYNVT)8R%jE>szE0~zl)mJv^c1`$c07~SS19O_ ztQE*X6$HgIp*wj6`l#<(m;Se$VQ7s!hnDhotP-0Rdrh zb|1hy(;Z&aZ9^RjEOooSyu%c!K=UOYW1I8yoYfB;%)_`Mxv5&xkvwj9&nogxHS$*W zkgAJ{)}_B!mWn0>2`=-hIfiZ%Yd|5$!lUcWJ!c7j%6%O~bW7F+aD&R_W6X>5vbS6( z2d&p@9R->`R!l`tzL}I!sF)5ivrf-wlHwJR9JZWx@8qhK6kTb3UYulF_SI1;aDyG< z=nu7`6V5a*y;3F@>#Gd-Ktnmd$gSqy$yNDoJ@-zo$~yZ*ta6){z}o0}y^mT}p}|D# zAPXU#T!c1OR~}attxNxVz4H7kJ&+&!>$-y)^39w;F0wd##4<&8MeNpBV&BK@-dhFo zv5uWVjobj0H2E1c? z=6%-AGlO(RvGe%d6N`H%SCx_JDe)S_<1L&V{1gA^z~Eo@Jg`^>Q-*l%qWCjRqg?*p$yHezG>(c=KeS8~pgN%t=q;VE9FPs!6Po#?mGH;i zJ9)a5txJEuj=$Ld^YN>?*=K2O68d0WQw9o0KZk$Rc0A1U6s_m1royh1W52j3?Q~nu zW@qMD)_|xmRjgJpI4zd-txT3^$Xo{vBtIyilkZ9Upq^{)pInutY)c;EVspXO-#fV~ zTU9*OBM14BCW7o?911eCLXn1KUTJcy@>Sc((O=v(c*mrs~(% z;6+#pQQ?+qr+TrxsMD1ToeUdfOy*=ya{uJx>^%!o!A3PNw$ZzAfKH)+p{$kK>@(7J zs5`&wi!vYk`1>c{DgUp^URKFgeU5%#bTK^U*WsuiInCo9*T+F%`Rbi#y?4^yp~zj45#d-eQy{=B#!wM^#wev0tI;n&*7TFq_!<*n27?eX{Q)jl$xGV$Vp zJ3J4+D)IhsiKFsl)Sa#oV$!3q$ea{Y$;j-qm7UbHOcZy$TlPG!*0R>6e^CB)&55%r z)~h-@q|bizL>m@molTbNGVml7o!PC~&uXn(SO&c_`@!JpgkVtiTCf)S1l6f{>OOiD z!kcxk%QEK?SDjbzFty7&tTq>835^Unsrz6ej?|rft$ttN+6VJWX};Iv%7JIjmwCy( zbU+Xq$H+bmZT*T>vNI}4Z|PC~%~e?gf4^S!-guI<*(?^o8;k;QUM1vm9#F6Am*lU)1KATGpbAmQjvIv27&%TKnO#TMf+Tt&!p}ZL%H+hEdFa<`oHH2^YDFt*2Ocg zb@ph)##fCJ5=pt3DJo5FuAY8-6_!!NhpmE1>6#iG(8OrhnM>SPxV zIKRJ+TV>wisX~Jb<9J+of+B;YsxFM)usQwhPacKPc*B|-W|s{o*|#d&^p^Tac!{0$X-x;9R(TDw z%6;{T4=@?)AoMzIgCBA%U5B5us|&8_oOA{0E&b-zbf#_!)`)ASYfZnI`$G>`?0Gpp ztQ6m64#|Ha4dGOS9vyyoR2Fzd-eo<-8gy1pnp``tMXHX9l|fm9VhQg+Ir)`7)H)E4 z>H}dg{*Tw1F6CA|liu#UofD*zM=}Zj=z+0$Rzm5*^up1-@=Iq0edXlAX~ybol2^Do zo>2!p27}c@>(c)_e;$spM6_7fOoO~O_qOiVJDUt!opn4TQt%yv%O14{>-8n^4ojPL zWfjb`)Hl36+@Gw@GKi}0P-#tm$3yUnVxv5=){#A5smH7!tkbg03ZOa*`3@)XBi}$0 zb(sz?t1hx1e`bEsYJGM8PUVB%(mDOKj$*#yGdJOim5mSUNN1g&nf&V?4 zTH>cK&i&b7$g1tL4v3i`eyTau${K!*{*Z&BkN4BJ^12K@Zl7BIM{A;0>hse7SJ*e6 ze`oG_qTS?NCd$+s|CraR9Vka%dW2u~_)t<6>Px?;vO95V~zzKRu&~tjsVmS;YKcHl7a~A-7m(E@&!Z764o5V88J&1gBSm@jNXz zy)qTuMraCe) zN&%mQ2VwNOEyP;Rj~_B&f+Au^)r&Sffp|PA##m1GE5>T!Hy-(Ly;YmKP`SF->>i4O zXFV;bIw8_92$G5uA0)ihOM&d zmmgVmo{BxWT5%}fh;sCxJoFPhhIQ#`=`2W$`{ro8abbQ%n8e-wjo;4aE2|9HE9{gm zFcIW0DvKSlcB_8#YL-&=qHl8U6TYui$MK*d`B6P`9$w8(3mBm`^%4|-NM+8d@1Xm< zE-Qf9#bjn6x-x1~77c5c%Du`fUb64xyjIcedPX*7y)?6kC}CY8n?*7cP3W(y&LnC* zRs{n@gNI#Spo3Qtw40)J`S*2cv;b9@TZ;QZIB=3J4T9(!xFRrbs9u)EI1 zEK}C2&`ciWS&)}?xX6s3e|7$+`SW~Phy5UdUQ}(;hV;0)6I;1Ph3k3DZSaoAskx{# z`_fML;Q6f6hq`_}piH!fS!Tj{SqVX8pGO*%3)@WOAIlj?*$pCmw>tz;7oyf&+)W3_B-lLYjU9bA6ynKKDzVpRjkHAm5ew{RxM0JQi zWyvxX50_!Nd@+U0%BOYne3nV36|IeDs-L}D?|@6$f%%QfUiomG?;f782lI=MdG%r! zrcUPg6zSx1ELQzY-F?%>)e~)rAAh>kkxi&F8J2^xPESSyr*FV2kUO4L>-@;e7zY1} z`g5)C)f6T56P4l{-~R2VW>Ka=>YnwP#n8lZR~`C;*LYvc7Cq){bHgY z&vnjE>fd~y&C|Rlc%Ny1t|&7(ijfY`&A6)kMzdsPHMNSPUDIoI#p*M=E1&)~VUTDD zh$sVH2_>U`X=i*0i$o8a2XQD>I8=kX)~oZ!&UY=XjnC9k&RYqY{m3bqr`O2JBc+c= zRg=dc7W{PW5MMkqB@&~{a}~5(*0>M#eAl&#YYOwL^=4wJ%j7GVAv!oUQ{hbE@D|*K zzL55Ft=H!qWqL^0Ess@p(NG{f+025|uh2@F#i;^0<^QsUl`PC8Yn@2S5}ddPe5p5e6(I$MUEz+)8kj&j^A~p-SW2X9`@0C@-35BHAt~o3^tpZafn_S}BOi_t{EFv>lhbMCL>^W>;lXLhKom80Gv`uXm>X;r@Z zw~z0brRS_5=wpr*mN#WpyI7C?dP+5>*UiojonAUVKDVCt)wxa7Z2C64;Pbh!Z`Wg4 zqiSXX%U62#ap)N7WYLD8vJjfWH4`WNu9~un8%<)$4s{l*QR}i$eWaJf%(_nYu&?Qd z_>}5bWBK{8)ZXemnaN4|HpooHWpz)4sh_MXtA1z@f4d%4gn<^G zT#to%xU2+VeD*^5Ok!EscuDApENVeO6?tCQ1 zkjZRTgp&(;;OFa_v!cAHktg%m>E3d7bt*>A=B#EGYF4+X8ZeB!qwzB7h!Vn0G!Se) z*iW2SHH2%O!>W3i7|uaMGvM5tgjrZG!hZHF+mGkht?Ksp_xy?`5rQ9BO@8ZJWf1<7 zK@@zZ*5XEY$^D?9^Dkn!I;(g_p2%-G)2M;?i-%-3OHHq`zN3?Z$*Q5%`mHD8-8<#S zz2c1X<{ZzcMA=0%KnT@f7c5qb7E}Rh!K40lm6-~*He}d0o`8Q>WwE}EuQEHuUn(Rs zB3`BodDqkh(!gbGC@#fSOY{^;~2Iec1d%o83 zQn_L*>Q=(#L@E!i`stu&*J~+sVgWwHH+WDN2oK~l?h7ZgO$D-_ZiKs8e?Bc|SLIC+ zS4S$HUWBJ`A8tbIW<3I;(zae%Ot|s6`pMPBqrZG2U$4r>#8{N0{oOTyZOkymGnPhDqk0h|1s*-Y#-pJtbt8C<}ebcWp`hxvO|mQi29 z6?WisRjUd-N(sWG*(I~!UNhlU)ls#Sn2Z!piiG#@B_vnTl6c|YL`kkdD^-c-q7c<0y#Svx4>6yA_7PgFLb1|VumP&Z z0+T^rfc^NE8i1v2_J|2Xx^#JO2gqT3X!huvck-86%va~@DdPHWJ-S<+lb?@&_Qi`Q zzHYJN^6m1|@fDY&$33{#^1^(r<=T-mN1?t^o}^blsH3u``EHh@$6I`UR5Q`poqI=i z9X!|bwW?#i+Z8tYFB9K?Zl!0k&Vy5u&3XzvA}VT1#N@Hewk{b}8O`B2T^U{U^QDg; z)_gjjMe&^LO>fT(}zw;Pt zTN|IR*W9UhAI-N;J?ih{;>f%78ctHFnFeKNC0kW1gw?mfHu_#~4Ety%%z!mn{Ay)F z)<>d+n5C)M+&#jdI$!a}Sy^G_X)2`Yr{Ii7OxR-ao8@D7+}jDXUW-LPt3jEV zM$7SQX4+X{fqT%Af2n*5CW_S@hL7JU58D+NrTF8ud04(Whboh|nW|=-F02`v0={XvU$5a&VQ&UtGb*Iatw&c2N!jrKw>*zmSo0T#% z{RX~+O^qg|w&0gO3h&8Ke5`-+6GY?7gWq~&efl86wl;pYGWfiB4hLi(G}3)02cxvC z@rgBM1-CLc#M`pNUua;yeyLU~T+_PZ4UM9=)H-kJDS3-+*cxW}iCU#sWr3W41?=+O znA8}h^RWJ`%ToOhbx#?~Msbd|$@;dbEB{3SL0#IF+JHn^#gA^_(TBB~zb;GVB2APv z6cG-)Vp0>4%<*tQROAW!9&l1070z!X%&lXAQl%3*dIe;xr}L z+IY6kvrw6*v;Lhr229>Nq~pGDf{uG*|8?=vUwF*fmp?Pa;g`%~L<a?cx8j+>$6*&^jn!SKpEXjtjpeZwX9COLgnDlbYEVl zX7Wkh>~22AW8L1S@%WMsfrkFVCO)T8u_fG0f2i)GN>!EK%v!?2>dW=WQ5;>L$05Jk z$>f=a%M2Go!AlI!zvj2{gBHM5ybm2HzSw?TL7AWL)~ipeutkn9`k!Pkl>z0WCbEuY zf=^?Z?lkk1pt^}&)<5u*?EU2vYVWlpwf}LJwKjfkzr#FiUG7Ywd+2pLA{r!O8NBxj zye=b67_A0oGGM+a8yDZ>Ms@tvC46*VD}n^(6Jo2XvW8%O246)#x=vphG)+Aw{@G{s z{o3!*sL-c#6%@0~lmoa3OPGLA)OgGaBZTl5d$=;$;t`R9bhm5$_3cu6SLQh0>^6UT zk;&Cis+kj-sfYqLgB+9syn%x0e;`XH#46_CHQlN!-re6lmU+d;<$cuA;hfL9cJKhU zQTlL$1<;MH7>91)b3em2Ttii`=F6Jm#5bb~#TG@bgJ(szLPd`!b$} zbmy^4cEC$r2m9%ODCXo<*6YPU<>DyaUe=dHK&_gf%}$u0J)P@O%@`qin#zKrP=@lR zaAZ^Fye2?VYS|Si(=uh7oj7HCI#-l^2{1{vr4mvXiAke??07Tr$U0kfG#h`ce!~$u zaC5EMi8Zk-PnEHghKOF&3VeWD>9B)a=BzLp*ND||J^J(_<%-~p>(Uii%fdjWlp;f=Km&6Zm51f! z9jr`MnflF&Lo@YT7Kdd*=61L&yU{X%f@CsBPGx;w4(SG>^Ua6U!Q)m!mQfavk)lkG z;i@yo%Q`&F!DN)DjKEm5kPOal>eXA6c}5}G#?Q~=rK6w^=tXlUKD0{dUw`#?x*b|laEQs0)&BhhSBqUvz3^*StrH1?>- z?W}Xla|$szA0?8SroO4!tj~w%F~?!cuFrdmWj!S->WBuV*D$jPWz`g-=xJq_^%l?Q z)}pmxDs((-&)c;^;1f=k*U|dGtkueQeMr-Nvnu;X%{*W<^>6*fRip-W+fDRt)%(rY zSCv<0MtUZB%*yPYfU=^e8mWB<1$R|rvQB1EY3s90j9|RoCm8_Ar^!TvBKV^aE)sSx;Oc=S_F_KETWF_8-z+6{EPqD!3I{#bRC`8LX3lZ zO3oK6UXULYGB26$<9qdk*L1DsJk%c?z$u=A5A)8wdMe1xJIlwaweft-D)Q|gu|*YU za!$>uH+6$KWGqY48{rdv$@IfJnjKtwWzR`dkmWfJ9z!3oNoPraL_Ma`qcx#`de2@2 z+?RcMFYa^Pal4jhIY``87r#U$$zmJ_m&{bK2{sPnL;+^EC@#qw_fcO#%k%IrWY*(Z z5yB@_fJcJVn2j}=5vH@3<6a33=(-nbh3lwQ=2*){P~MuD@e4mi*UESN(cJMu+ch{& zuP5Ir1G5kJS3fALm$w1}iG{j{gA}*?!0y@6={f9yV`Us1ltubw=(ymHlkQAhrZZ4o z&MlWjq{$akBQ=+qXIKM%@*V`hGbVXvbBj+~IlEP@jX!Y;`|AXtWa1F5fz??^)5;iZ zBimy?uVzXF)fZZ+=?>0r-O0KHUh41EQMx&6ec{~fH-e(Nm&BNr^g>h|eVO~Z_F6xz zYrk8WHLZ^G_?@Q9#8XTlxm<%p*+=02w7G5+4=3N6Rb46+YkQUbe}A?VxLsGrCl;@l zz3w@DP_J9I7SjjFHwwY}sOo1KH0N7dhW6z@6EV;G<98N*t@wh1`mp|8kByK*cBw;i z0ya7;c_~H$})w3XXyvsfmZ)*ys$!hRKN2=1@+0k zte=EZc+cdQ(T&sB;%)dk{VhcUC9{`+t}!?C`FT;~%SQ%^(22NS4CE&M$GK31e`Kndc|5$~ zH}#dB$xm)YYvUK{Jty<53{3T;r^IdjmC`fI z43#QAo;QJ4DXX!Arc;&TE;6FQGua7&QPgF)C3~(iGnS*W#3xULix1x2@Y-BCyf^P+ z?TTOCPbwHz21ha;s0@>!ebZE09x&HPXrF@p%PtTF}&{6jj{SF_f z8%i|00o5c`PqC|59Z_}^U^oiv8~agY$vb5u>}%@L}0)m2CMM4VtniD<LQor7 zjpId~hW(>HS>&W|i`|_+YahSQUp(#3yTh?cR|Bb?x#7lOfGWg^>MrXwQIpvvq!M(7 zpQ$*VXU?G7c|;YZY9MFWP+#qnJur>Tab~ZB4{!R4QM-jEZ-;tI)P^?mZNuTuE$!{FXOX1LQ}!X zRK1*&b!tVh4pY?aEi4j-Kn`Ai&+ZEogHTJWx7sQ^SrpHXXnvooh9CW{GFQX zv6z)`hKhmpya)f1oxH8)GfmYw%Z%t-7^y>hVV)7k_jRqu-qyySth1(zY7`p$)kk8o zOwH*ZxTL;Zjclhzk}0_la&fojdMt$is!0t|m)V;HOM@0_3g^MRSwnAT6#- z$A6-4rXYKW-Hg=f3%dW%p^grL;>r(GXD_o%op&LFWKWhXJeT=HTmZ+ ztmVvKsq5zxHIZqky2d#eMW+N~#16uQRb-~e!{fS<)9%z z>{$rcWK}|R<)qiCm&HAgi#s*fZ8Z%FXH*V!Gy|ZPbQ;iqai?Z$<4@J&>4H42s!VtF z84JrV*CR)IIe zox3Bhw{Dy;Kl^Zg)UzE?#;fIIwZ1NuoP9Ac7B|rH!CB8!cTkJ3^{U5bi_2Ofx7A)I z(JCvmvh2iEi#j9yr|ij&zD$&$s`bVvn+Y#(pYF?KjZfG~O{UL~dy9!4&7S_93Zdgz z`}j;>)+*@Ka5_y)4QHaI`gx4zfg-tM!y_sbZh76~vL0J5YnT2&mxUwP#}>#5TjgBr z_6o=uFEz1+!g$acp!EkiN1xo>|2eq6tYr{M=0b{0gLK<0(kbRqEEr^^lSGj>#Z-6r zB&#|iY%&JO~TYD*C_1F_svQvx$KBmo$1SBseI(k?9BK^S#S5ulds}@ zoV};nN}tFkvu@tORZ*3m(GRdn4u+RZzf78SyZmk?xQX%A10K0mKkwBalY@8aRp-e? z{Nw!844e2ZYZOpMZRig?ql>^3nYnlte?XR-^<8nVm$tZ7eZsZ+?M`9vwbl>nkt_B8 z^VuhM&6Gt)6Aq(+o4!yN>o*gu%*kB^B*M3lh3*M69JGphdUvj>j`Gn_-irEJzn{)# z(fT}t(KqLwc~IVOzH`r~(D<}PkN6(b-4j%*Z|So_^SE~{*#4C|(($gc)^|3(c;E;= z2k_{b7nq<%#P{t3@3?mC^~u3Mf6Dn5);|7R@&JZpk_RiZnhX(xmuez2bu4FPNA9Zp z^gT4)^HnDg>bk8szPYcMD1}z*uYU^c%N437Q)B&EP{GwgGkE2yC^glV>w?JR`IYK) zK3AXr17Y#Or{}t0NA@M)-$VuG>GUB;CQS5*Nr29QelaVDFtfUrXODaj;iu=?M8(We zCX1LEU%G5rm}fGH41an>ln=(q9?rwxT=+Dvt+ny1hiXPn(nT`Qu4Wn&+hbL`Ik2e6 zsz(`1CF20yHw8$EfALW4E?0I=suw=^U5!ukiVq@$`BUzeQC~VpS4QDv0s&d%BW)A4 zuaoq=y{X=z>TVUj{JHw=(^P>lQWnBUSD?<)$7H`GT*=NkNJCk=dTP`j5)-%QPP`{# zHMp++VP5vu(Brx(9@Ts41lg>AS7($EZAWqHVm@geGHcR<(r?f@)4-^>?1YJqg9ES{ zhM8xo6-pkO9qgr7$B^`_IO=RvWU_aWj@5?(YJhPP87t6jak=)DOBaCc7Wxcd*8CvR2wb6ntU`{lyfXl zHLzXH@MY|2R&e$OwwB7%@suMcl^3~USn=d;eTq9`jeE3nHA zGB@`@o}`LaCDBq=B_^O*_|Zr zP$zRId_YI4msFE_$=)0D3K)vd^=|ZKD(CojCa)$h#n~FNdd{vGE4LWS<7%GbFq5F6 zbl$MajtPvtuJ#tDhSV*sle^T9F_;;GgIen+@5bu-dh_hCi_L#j7&UX z5(Sc#P8bQ}vwMhz+1HyaXtMEmw{tMshv&R!i?pn_9;*x4O=Xmi_!E^JHVt&n_*U2DYT+cv?2#P7`GIhpREQZ(WcZc5APW1)azF zu_5%xN=jC$AtHW(huL#OhqA~Fi=8;;*}95@8hSNxZEbwHj-Khd`V&31jCt9KPp~vR z;gxWoNht*!+?IQ}V|;z}OC!oAGe|muZ_<}wYEyZLqFPjOGE#KSz-dc*))epPx5=&o zr?Xms;jHlRm@YxqtC&QbZ_SmVINgA6Tm!688Sj^EsuPwkzRPNL`Ik>au@Z&Fg2Wz^ zX}Wc*V3ZAepigR;2X%tx;O?kB$;QLqAG8X8;tFUd-f~Qzf>VNpm{(d znTj;C+|_xIO5qiio4%hF_zhNMZHhLNk6vLVQvE<_S#Z)lPpj~j^?jWvCgZ2f#Z-Ve zQrR+3rtwwKI;vs5?y~WfvhpnVL9N1Oy>t{ID|t3E6zt*}^a<8I!p~Na`4s*@a7xx1 z{z5O@tSfYthwpP(g{A7lS%WO85oidnRdYI0p3k(0W;Ex4QeMT<59?VoNEo$O&#y-< z>f`lRu+XfA6|Bh`n_7?BRyVxqRXmt=ayvebTY9=~Jdcu)m)Rr5hk7hgmBlR9srWtj zDrA?kJdh`{*{-QC9`h;nxKI}PCZ+82cu>d1K$7h8-cWs%zTf=(q zg!gBK{pjl!Gxw9ff$5~z?-jPzTKxX{iF>f_SEe*)4u@&(ea!>PWtklV6>pc- ztMgYs&8wi{C}8=Oj#hQh9R6nKbo3L}5;vO4ZUTxAIz3mPSNP!^b9@U&GZ%h3^}=%Y z!%tk6IuI3;nezF@ug{;QVVk;lE!hw3Iy2*by{g5Iqvf$EDjC=FSoJqb2c^gJt4GJI!oxz`$xF0wlqO3kd0j64$S#a{PkkoRS?@lM*I49BrBLW)+;g|C z=OhNvH64D5VZJBZI}jSQi^L_wbe8`V{&s?M#Krg*nE!UvzYWhJEh9v%#Lv)O&80H}1|gGYx4zs^7`JBx;?_yqFzK zqLY16y)73Ofb`Qd9$Us3+DSira$ukVVBKE)&D@63imC|;*`{>$y zHp6m}!g2J1PDPwDBa^AT63jQBkDh|L9_1^Z44NfUKd8r|oJN(Q({uSr4!dS*MK$5T zXieP++_jz}b7&ge7k(C7wWq>XZxyu6JPxAL=dveAYNm~iuyne0QI2)4fv(4hhtcZn zUTSUpMrC5qO~qp#nL|gZWbCL{GoN9J3^vuwDmm-J>#R3xr~k0@`;}38pjAc@3$Y{l zjlubgMin=|v)Sw-(>QsiB2yWB^BZM(KD%3)Iq2&t;kO>TBrRTFeBl zS?7Z!x|$CTO;3)-_q?9t0XYRH6HWPrQ6Q>1rWkQbw3(VsZw}iiGd?n7%Qv(h{G_bq z5KUyv&*f3nnYgOV^np=sv=B@60I)7>-pu{=faY|~isEvXz%9&{X@l-T+~`y~*5j0` z+)K})A|bE3P|3U#y_0Y3cv!J)ZTx0E2J=5#e={*{RN841)8_ewl6q-gNsDiX&)(&G z^{Co2d({(C#@68MS6%1~Id!{U;}fx(*ZYL0gRjp0cYie3s?FJtS_i!{kxw_HS4>W; zEcgmrgCICC$Pk@{rNW2lqu(qNJw^xQNOk4FX3z-pZp@~7!^^f)4yS$6s{ z2!Q#TbH91!b3fhd=1U%i9ePR?8V_R=h^!veOpr$`n(4lY((>0WZl(filNwD$h_S8> zis|y89Sg{mKE8t zvHaPi;NYa|mU}YK+=ER~pA?0TflaIuC$U(Zy|wX;swy>l_Un%>pcO=(mg98_Gion8 zZgeWHSQdzZxKO@U9iJ~OIDYoS9cbR^%J68IJu!EUd>n?NN}!-4n^|O^&)^W!JX;9! z(HyHNlwjVM=ctnVlpdBnC*Kon?}|@!gI&$57WnsD^~~{3^7yNpF7o+#7fE$5juyr7 z;7mt?d19)%#G0OP{r=FjB9UFQnWWO2I3qoq{h+e&+4=75-Tm%7v-iL9iQ9qqsX2Ni zx`@rPHTQPu7&4vBBm|21Bd0uLLiFtXZirlo^)xFxPvc6mw~bA~rL68`!b9=VgqR{T z97Ihy$4 zT%D&Hx88>TcB@9*M@QkV^O{c2bx4)&o&J?Ivd8*p=6sZ=NML6pILfGMC4&;-SvXPW?^qn5m)oc?L4liJ9A*i0CP@PNlbfde;K2)JkTs^mA5& zFegQeFEaU;rP;lyf~XC7*u(@IKh2oPE*y`s=o0myzcNQRAEJr$u9Q$zq0F8Os(99$R40m*irptTM6Eo1HVI>k2cJ{(vQ2$J2fD>fTefAb(shSx z#7ea^*K@Pp@kz4EQT!4a*#xVyGNLZz6kaqtNC&H5ms_b73Rw(It`@QRbTCUgkE|uo zk!EaaTaOFRM9NgcYK-nIvwK+JJtlEYY@RN|v^Kt7_JsFo`~0jAp(LYITpK>bKvDN_ z&Xu@YRb|5As(${_RXu&S$>&w61ie=HF_EAL*)5Hi<~yTm&8Lacr-gO& zRn`~bGZukfYREc_NSFr6wXA)5wJ5n#8YeTx=9->9`(SoCC)=`rj=eI^6*fCSAT}LJ z+lXVX&$|wy!l!|Ova*6pReNS_^kwG1nasgFh^}6&K>>o=M|pWFCJR>;xJ zVjIOwr=$<|Tci1-a$s?$VA)~TJf9s7U#u%yOrdYrHMuKoaZmOq8LifaC{V|Z3J4Za z0`$IV06Z{BZg!`6hl*13G^*(hMQwr!#lC#X^*N4-_oOE1%TBu~dR1+fB{JDRiRTjqD!LmpKuQfivgGHnqD^S-Q%QI9Z7=6tTc zy#gjY&4^IF=|`+E@H7R_esizP^rM#{8eKviiyWkL6`!vup8T?}X4yQa-JC^Et4P== z$J0LqA7wlnp%A;gUM=Hmd2UDe$E`87HhlX>^PMuMtyq1f&g0tbV#!*z$$+ThQ|DG+ z!2}lIAsE3j-8Gw76vc3>{9R@_z4?Q zRlE^RA4SDlIFLLt;m0Sd_EDw>BBh4%TP9Ul4EHA6g9~iP8dexv<)6i()`m|X^!-0~ z>e>&kM=y5hsD5mp9Z=$zwXww=o3e}VSSDJ@rsO##4i(R0)st9c0!w|!8+C;zaVNBn z-h>VI8>lttKr6^US7Mc7)fVX=V4~Uy6G9+y6h#=FN>gLzk0Kd_kW)16sx6}7=rZbo zRWwBOt6Yjr5P&WI!Yr>5IY_^Hi_}@VGAxDb*`xB{V(v;+WB4TdIiQ%I@XR{$i0_>n z9?Nj5l4qP%UPA+UQdxys{ z?UUzGYh&vP`JYWPTzzM1!87`TFkAK>W{wstmqYp@8KoP2a;u(9ku~mSGlC0lQQa zHM5PqV|%xk)o(IcFB?8}2L4iA>C0Flhk_5XnlkYyi+SqBeY>tzU-_Uc`>48^X1|Nw z>BUT{c@Vk(3E%h$ei!ldL6Hx&kpBuRPzS4%nJ1b`TBK+Od(Bzsc@c1cfxOSU8HvF z+2+29^I0Pzv`=_S{4uENHglJ;xK2iytVf;5^9CDNYmKwwOgLno6#YX7u(PQlxs!^Q zLDWgQDGY1hrn|S!=M^>L$dJ|_49*^r;}O-a2a2*6Or+kIZ-{t?$;eAJwyG!J5`aul(xMN2q*tqi$U}UB()C zLhW?t|5quHGSh#rk>wCjp0Cofg;kkrXEzvcVOF)Am3{p@t67yjWa3Br^D&f^&5Qef z;r)VAd ziyty$phjekl{TJ(e|n~57|sxL5!Qcvx&A%r{-{-0r=OrY=nvdavn9tx60fk0-EuCw z%V1NKf~@~i*-AGJ%S-NAIcbi2mfT->4l%!0o% zE_W+>B>WUbiYLseL|1>aK;a*hod>7W%dBx#1tx+~MJkte#<_XUUdqqc`SIuC zyW-E@Yf)n99ZW6cE06I7cIP*b(nK;H!e-C2`jdNBuUO%Zre(93@8P)kumS_6@59k@ zBoU$0!=TXLZ<#FUu6|s8`KZ=@bQ8@disnuycY58e=hXsCWi1rT9hyhK1@ViIdG+GX zC$)C`&ZnGX@jax?Sr#*8nPh$HyK`&w$p@{8|Nh*P$EIXepPUXO%H?oRG`}2z{y|!K zml-7VrJJa93cp2Tdu`VEug<=*>{C6xO=` z?fajyYHMwnc(^J&21WF!VkJ9Wo%*6XA-&!!HEA+JP3de+(Z2BL3O}8d=Q>58ecCWedM9iOf|RdMi7|LO{LuVM)Q)5Ty0IjS=C7`nyq zg_+#JD4tY_l=*o$Ijgg#(^+TKuc{a7D)Vf(VP4`dbeEH=2#cE?uU9kB3;ZPm^bK&@ zT!J=C}6&`Mw5DtZdaep`XGK! zH+{7prH)ThRjrMe3X!t@|M9AgvQqV#?PFwJgBs!$F@uKr6U2~@GR=e&8m7~VUAGDk zea`VocAd>89j9(nHYK~ERd$l7?q<>pv2_)?4Bdmehu$CGk)9`#;X=Hi@57TA(Im;d zOHQ#Cr{Me`k{lEJ%$-l}P0wSKj)huEhYb0tC{Z+#&rVMhhV(piCeP{SRfAmm`MGAl zT$bCF`(YjJ{BcxOGTnJ$lk>^)^z<~Ic?Vyq$IN)CTs3IsdX~A&`Mj5jpLI!%s~YmJEZO*-dQL~k&g^*dDt6PVsgCA* zj#e9OsIHGq4$6L-LsX;Y*(nFqD(>c4nToYd*B{^Q=5sxK5|qzTPcMA*GlM8IJ@MgJ zExOy2KiA{*?T!+%;S9qKi31~v;!QttV&qO)+{noKIz5n|)$21}M=?RuTKlj_> z6$_u`GuDo-DIb1i1oIY*F=gHpPRGc;u9gy=7r1y zs5nZ`bvX%FEi3y&H0q{?yfaBq+%znMGg| zy&yfq6X}I{Pc(E&_D(cbe6}9Vr)eL|)Z^8YPt!j5nnhNg{At=pU)$tmK9TBn%`{EX zD2im}$)D|e@=@fbXuw&y2-W;ms}NQM(q~w`p&wzL|I1yqtS4rP`L9{4sjKx}`}_a3 zI_mKnS)V0vS{32FOeR?!`^Ay|4F6?q)$G_AeJm*eRR7@p$USZdUn~C3el^1-c@=HMeywWT7JK- z$Nd*iD=t>H*&3b>Gs!K82nnpI$fiVuMq|Hz1umMWq*j{ipkA6j>8u!p4vGG&X0zomAehHDu@-J1We%%*A5|dCi)JY2AouXIBJ!a zhys>OKhH0CQhnoX&+0*F_RJz=Wp)5$jqdo0(^=yZU+}wpP@OtMbE>cf>(cjNAWE2R zdTTYH*Ezop<b$1t>P@G``}zPLF$K#$I$4wHM|ymSAKa0vvU6DIu~+xZ@@Wi3o3S7}RDADvO%WWN|Tmk%OCWvVM4$|ND) z3nJO)b96oMtlr43N%ave3H9jAOw%da=*V=<>D{R*Q(5oj4f-9bTctGxS~fB&ma26w z3X{)i8Mq=!VuE8tNiJCfm#?tdbEi$C&gv8Ok~IU^N?pJ=nae)0k+~{ZhT?DC;*55EDwk*@N${RJKI%s#FNVTbap)ljVz7>O3FTG4@W-cjl~TwMQoEZlI|3 zeS1axarG)zlsqeH6puV&cWdK!>lF}(Z;s9{&uWG9Ix`Ig$K--@W={c?qB^_^$FrB3 z6qon~!t1UN>)mDipIm>rcI<=b+|9iI><; zxqZGksF@}$7Y|pOHJQXeOqW$ies|@tRbI0++6Bg`t;~5AIwcWWCMr?sxYt}oJX|5I z=ubXvz$7!f2D2^`FIgqYgo7RS2|buwx12w8uPPOm#^dUPMiLFzPtAG^GwLid=fU9^ zKumb&ojJBGXG3;t(LpMNR&(81>A=Xcz)l8u;+Zf*R$n~p6H0t)ywAW}CKmLc`ZviA z%gcM2YVsf|vVuOz>@BLryYxJ8>{9*Y6DbbPJ*{W>M2?fbGc?@S zOPM&{esrE({mB!*la64v#J~8I3Wh__ljmJ|xUE?klp}DAN21rvo9tP>T_?W$$cpQA z)xJO8T`0VQW1QVx!Re&`avkZUsZ--G-pDns!a~;r^)h#Yc32zE$}zlzSD~^_g%*T; zUPV)wPeH)LeXH5oCw&zv(HsVcic>UEA|@sn7rW@}atDFRg&&zcQAG!@;-wujO$pp-#;+KUaF!H%T^ox6hXInPb5(3IH1hV<;%o zI+_ai@HCdT@+vQ~O9kewrt;`nGYK37(_N$7ldG~Xhy-tgez+*}Mm@=Dtl&|Y?zqVm z`op9Cu**~jW2*$Z1m`ueX?)Szc(v9(&WA)aYj&GBdgcY9&HGW?@*fjLwTVV%KAADt zTLVE(#~$2pwoJiyv>lDqj33XK74K4mTEk;`J3+g9)-vEh`h)BYU_gmh5mgN085~^?!AQ zRiYVA?~2YApUjqWR8v6LpFWX#(e-#F)8MRN(KI@IJppYSOLRgD!8pPQ|-EYEW?%srW~Kcoy`JltzV|yqM50AS5G&}4%)t%5a;~RPvvLUw!8(c zjVqPe*jlXV13peJz;Kl#2iPbpqpnO?c*4xh?2F1eX&!ktKgdC6a-~>aJp?seJ^tq< zofz&HBR-?}iiS+FGFx#qwkl| zby*eWYuA)Bq&ugx;TmMM2Zk?Fv#Oa|qHh-yuB-Js4Y!OH^pl*IW7x#1r3$58c;EAC zkxi-?j_SMAkE~r-ad^&lwpd_UN?qU0%lM0$aE{CtVI<8*>&jeM1?BY1P~zxB>ul$b z(s688CBhwvfGxwgVkmfG)t7TzpC6=Y%3`(dEoEx@w)-d!Wx)xq^ zSL|WSR^cy4W{q5t9e9SH#0!RHri17B66&ZZS+Cl~Zyi=;?L?Ny9FtGeV(g=`*c^^F zb5Y~)Efe?56!J~c`ZOqaJhL8_-Dg)!kPNCr7kCO`_ygBL7aa*q)Z??2iV;DP)!S#a z!FMG6xbBDiu%4lwma!zWHhdeEA3hc>XO=(BEHb(zIzO{yu~YT>*6d-qSiiqmQx3B@ z$Ykf$qEGdl*(Gm&srCS=4H;s0LaX)6$GrE_qx(?3^2DEMCG`>lsRS7!fg9p;&T{h7%# zzi{!dU;M`|Zd~|l7k+%$Nwh<2vYU*lmxxonCJ^smG_IH-6^G(Y|xq(Z2JYZwmtS_Y>E_mW*6z%9+U-GS*4fHwQbzNqc8D+1iexTRx*OA8WUb%VvV2_^q`f#$@-|kJi z<6*lynRRBHonCjl+nrWMbu0Xn?Kht(-(Eg=z|)U+^XtR*bf>>PnpI?mqjqnw*_rgF zv(52zvutkfOeb$%JbJh*r1&Io;}yx})vQQGYVq>3{da zM(bDQ_=CIq*L3R9%6GlN&gRx;x8EL@->0)-Z`>J8XOp_jdVDlg|IgNkL_hOyJ#+7w zU%&XDUHlg=zIE}l7yiu)e|VwQ`iu3%$Nu++zqHZnyjkW*haXgBU%&Czom=03?X~NF z`oZ11_r~viFqzKddHng#a5&i7-kfbuXZ=Z)UT-iNZ4WnhhFg^_o%U=xy7P-0t={*J z9Q@|BA6$2q(+}UgqBHDFhok;ryg3~8dYjwB&eo(itODo{wukNQ(YXJkU)X5<_IHn* z;LYoA-KdD4X8io=P8DON+IZ3*ZSG7vgZ56hyFIJi91W-aDz)kCM=zXo=*xfb*h71| zGu+P6T=#>)=^vZX>Jsfp+3T|gx)8S-18ux|;7Iolpf6&_=_eR^JYd>E( zzID)|6Ab$Ha5(O7wYRn=?OqYWX0Nlo+1~DM74U3z+S~QpwLf;`Fon2Buj`d>54Q(Z zuCsP~JR8n>-TJxPn|6Df<@C+6XmjiJ=Z;(!9yofO@6=^g9v5JbdedIFGae1Lr`uc8 zX|KIg3D}*D`u*2`?#O{qz|jM}QWo`h29v_Q;-{VV=GOLjYh0kUGuo`g*z63a?bn|@ zav0nj|nr(Fp z+@?Flf`j4q?7Ls8Xnv;-@%xu=-Ff52mCJ8jJA9nQTUCUmp^6lCD))9S ze{uh!-njnO_mANC{GmeD-e9;xpLEA%QFpX88*CNrZ4JAFL4VfoUi+1z_d(fl`K_xr zZ(P56_=@%)EU4=itL6*y-$a2czw2cUXxs z0*&M0W&zY_+`jfF_kHri>u+7X@xvomv;SaS&h}t5*qRK++E0ZgS%JW8@~VG zu!Z{%id=tZwl!{-hle}kK?QAG3{dsaA9n{^?VZc*{X~3l_s!u?j~=8RD(D!syR)sW z?ap|(wYgPkJe&3gy-|0&KiDiL?qB}x#UbwAJ9db>_d3H_Il9`1SqbFg#rAkotwDP- z>rJ;O#df{fKcEaC@iPqmojCLcQT&Jl&ZNx_yM(zxK^Xhq-zGgL{*shnYVp4Y!K4HVaeG>UL@E za>}STn~kdQOGMrH#y%!LxO?j-!w0Y4y*J$b=;*N)&vZ(74aS|`q?l+p8h3XJR?at1u-LE5!+M{yUmEU-DkSq5; z*gJX*^OjPiNinc2#OMayP!de`!CweEs&F*KU-cJjxIUpDC-# z+neL9s!i!2M(0@%F>E9ek#;dS^1+?hX3=Y9I>O zx}BZjPJd9~zf*}d9SpAh`hE;gG;aUFs{dYHQnh&fal6od((P6xr~SdO5MkP_2@iPAiamci*3;r<*^} zANH%rN0aSw*;O^a({Hy+X^p4-Zhtf?xSd`3P9b(@euy`Z9V3tQhb8i=+&U%FHmkXu zZq{g^SFzpcRhK*7+3H+*`O!hXf9xQ6q(nz`?Az_(X3@_WDDxv4@+K~}>yD?TrvZf_5Uh18`4w??nORA`L|8zueC2X`Ot z?cTlj&cS)aH+$8hbT`YKeo5DzPH$KZdv98~(=8O)98LS3>pLYANS5Y6)Z_6Zz4A)0 zV6`f~Ux%u6DYp*Wy;%(+CjD6@dv9yFd42oHq3FlshkE(t-mujEbkggNt9fWo2fZ4- zjH+|q8uhokz2cJDwZS7WxjG$v@Xq0+esFjGV1e0ev)dUAy6tvBN_Fy+BBe^gD*sYN zo$m0v{e2Bob>6Gmk;kv_wJ9T zckUiOR`X~Hs!pB01kLu${AaVe&FZ+vvl4vO+f+yY`qtqC9ifu_0~MQ0$5jWV<_0yb z8I4Mq)vwc8d9Qkbntlvl-`qdYgS&6cZ8~gG^Jr1QczdhuAQiW*VwGXhWWjK;Wv2wm z&Q$&T7@&Fo|4SGD-HRVx>|Xdg7ykVVfAPXkF8uJqGp)b01OoiQ8x>3Xq!RVs)#-iX*$FbZXu<>hx!me!u8pwq2TX)SC<|lG8u>?nY~10#L)D z+1+vN8gEy*{ZrYo>p_F2Yg+XEcczp8@ zHd?=Fd^Bqgx;vfS{pq1YAAYKiIjx}-LhSa&TRU6hQfR&5R^`sLhKIAk;EUHQ0l)Gy z7g`67a^T1BeeL%*THpL;J%4rjV7CT)d(+96-lzgR^6T4QeZ6e^&3fJC$%n&x<9gKx z4+}UB|90bRuk9c0_37STJ^iJJd&Av2k$voEL zN=*01C8SE$mNc)~Ms>>L>FmnYeOP__`kQYe$Hh^aM_!|Xi)4FMpqr!W^Q#cLb&TGy z-|ch@jRse)EDrL6V+WZ(^4f5-$bCE*&1RG7R^@Vy4*R1zPPJZDWBvZ@hp*O%<@E|( zP5mZGv|DjOb;I*~acRe%tSgxm==W+oTM}(^GO0rrfDa45OOaI7j=z7o4lF0eAMEZ< z@9o|C=;7Y<{oBQ23obkMRKKdNCdZROO-1@Un>EcCmbKl%X1n^@LH#m*{r9Rc4h~u% zc*BhgRIg5>*Wa49JJoP*wF^6@g&jL31$K&@N~`vUumA3m1Htd32YUJC;@L^NQzN$S zb`60B?dr=qrJS~lXGeud-Elws|5odnzw*rJnJ-`b4=?_cRsVnY!oPfBcHs-H|D^TL z*Ij{U`0uqJ%@ge6jk^zTesJ$zrQ+MyZ@@GAP>LnU->@wsTrk zIV{R6qNxPA`lsi~aq-53-Mja9@9urHI85_M9i`^K?Mb)#vl^FNp;# zV{G@Td#zIGOlrPU^0d9ZS!1c4s-UgjPF>Kew-?8_dgy}c7#^r&Y;Ja@C9sQa+dEsM znx^)vmmbulzZ!~uDbcI9_Wjxz(ER_UmztkkP5EZD)2+_6Hy#<)SDDQFk`j_txzn3B z3vPb5Jo8{z&hCA5<=x@EcczoKuiqH`+39$%M)!xGX#KM_YN+L!8vfUTtED!BnpUNi zaIg8wV9@Ek`n~{dm zW!IIm>k$z&+;ja#etPMpBTu#diK2%ZeQZt!qw0+|%Wsoe%`;2CNDaY}!ykf7!%+nu-GD&=ohyEiX{>EvdW z!vQXM>7|2Dd~aAXX4vb`3OK5z=yp4s?cSs=u-&g&XJNqfjW;VV4U5L_-G4Z3uJ8c6 z9(eqF)&6Zwx7#(;9JI%qTlKg4+#33pNGdC84J7>ka_gDD`pn)l-HU(w;$OZvyZGXT z|KP$uec|^ne5Up9)#p9Ed>R0}{LX%T-5b7N1m6VTZxyWq{!+%nO6B&f{#TCeZw+d; zQZ4q@pnP<7_9z$g&czX$pXw-sLA|enJ*vUyumHPecRH<_e{If6k@jDmHdV2A|G@(} z*x=2>JW%;uqt0HtTVk$O&MMhTo7L*VY-dON*By6;uTCBvV@{g~k1>Csj?o|Obfz^^ zthQ;;o3?9MJS-VIt0jfD*0u9{<9U~G@x}-D-n&2k@!}Bqy^c`R_hBtI6-HELZ*@mC zRw@$fb=%cx)L3xq<~<$JG24V$%gGpngvullE14Ll}q4L4d} z|DDRxpA7Hr)w0lQm7Nbu9yQ)L^l%-o61%rqJ?fxFE!8_sdNl^DPN83olOfvpjX$ca z-B}#(7DaLFaPvo9+o(h?H11SPCjH6wq&T&dQ1O3ZY-j7WJNvv)mHmE=3HB;o8p|F% z#ik;Hb<}g zLp2ThX8C4*oFm7m_g80ID@>hHx4P2Gj=`)*yA*f3+uyFi-qy}5f4Kkt_dnR1mdXZD%t-gG*7qw=G;c5##g57x1& z54A8;*RoaVQ%gRzP$`c~mUJhDz2X0_{{OVy36P{`dKdW2tObufhb`=}kmW(6(P+jq zvOHClb!Cs#Qs0MK-L39ctEG|D%2QpV>aL!yYN^K>W9QWn1_OaP4K~KhWjtPkZCEen zS|E14z_PFqhBbu4OR&o>#4ZF!K(LE~%{jEvSG5~DXVZVvkt<PTXUj?@T4m z9wAj~r6H>dReI_ov@tyO`A zl(ne~Of2(?I*nTM`1Zs?niVwOd`W4^`nEcC@x-+y*^3(O(XhT+G8!Ag0L@FciaYsc zdq;fiR{p__Zhw3ru1rj{B{07sk-8z)wZ638;juBKWHTDg=INW+JI$`cPp3CI9V5v+ zT(aBA{Dv~O@|W3y5(0d|M$0Y!+t*Oxjxx@O%(Yca;_hd-aKSXM^7&-{^Y{z3*TJ%+m$a>K3)C?<@@E8(myW!P6yuW?@|}cELnoWqvx+&zj|6)=iG@) zi_;f1bHEkZ`m2H}f;ECA5v^Gk$dmQkkUiy0FP;DHY$qH2G!r>1F&idNjvQKmN7E4~ zX^L>I3%56$d^@@R)#l>G-@ewRf-&nzYPfV@di&hCmFh*17my z^CVXHkys^BJW}?LuOjBzSgA_gG3JE6*W1qE!Y_Vlp2X#SBrcOEN-EA&TU&)&Y5U&> z8=AVUtwY!>E!V0S-<>CMX&;G8BnqMlR@s21CD#S4mWBEk8`61l&vI+47r%3!#67Qi zJO$z!*B0q6dAyZY)pL}6UR$;Mw16>MF1>!~i`ndPRY%XBICkaw#Uq!@qv=J?93XS0 z*J-WR@ zg`9jRTV0Yh@&)YEshG(SIi8E~egx*leQHY^9d186jRg|+P`h^aZMrb5sI*antsFa% z-!iA8;YZLjwhtc7N|pH_A<8e3A8vD+s*6jFD|a*R=F*8%XD(ln06)G*;LIUXIoiUT zVr(4Ks;p$EEeXIX>+liR8?A)@`C#d@rG+0`xVliTe7W*+<(tcYxBNTG&zHZh^gon( z4(<1MybH}BMqjxgnSb8v%gu%Hh-U=Gv~KhBG`LpG=B0S#R=WJC)K7Euco&u-FXqMR zv(Ci4NDS52ksVv_G#d=M*19Y_>$$yXtA!m|UO(K0GfY-lTIW+4>0`XBjrDccu)Y>P zGV`pnxVjPVC}2jdm9>>;yRd@-{gn&p7qbc?6ocTmZK3U~+~cNwcvW1Us$T*4k~ms^ zwhJ&g6)~$3LKC=Vo_-@BUTprQ)rdcMGYvUsM)Tt0vt1~`sfbw>5KF(d)M8A^2g-G} zmYA6$yiM`>_J*w3+S10eUC_X(h}ktCYkhqYFhwBV4@JHcSj{9^^H>+5BpS76yYPTh z5xEzep3Nc=E40_z;&QFFCdJjHycs=$-YcXCpsX)m?1J~DJum%avNz1Un8`SiHUg2D zr45c&BN8FaB}$x*6uXwDskJY40sZD|H?yy5A~W8ZNCEVlg|q@pV_WBQ32m@1RvI-? z=hmezu-_b^voCKVG~VJ$$KtV6>rJ7Vruoz4>QDk474v&}=~5TuZ;sH}*Etay?^OForuX|t#}>RdVLuq7#^rX8ss0rzuVFo@)%zI5WqbJsI*Q)&58;#NgYmzTqfT9kj{ z_sfh5_}H9SvG613yMTwFhjagV^F=Y5;MzSWh=+KV2Sx1CihY^DWNH<_I|;8I&pDb9J=lQK?`BES}96XJKhCK%!|pr z%1lhW#m34i2T8P5&H_GJdV$l$t&~I!IqS!}K#6%Vxfhs;iFXI16K*a9Aq;gy|7@R3 zofRQ`i+P0@pv1hG+-u9kq&G(OEz5N9of{2aDc~h=OwE7^#*-WQ|Lp&t;{QJ+{@<-U zRe8AlH{t)jqx5%6-}{~(z}YTTLrU~@;#YD%~ zmj!J>T0_Hw{&be$ch(vwyATZ@i9Gr4_8d{;!7KGnz2?D)@2pAN+9TXwXNe=ZLRT^j zJJ-5^h@UwV5z_5jZ;MYy!f=knJx8wqT#CHN+se8(8-WOlkV#A6bQvs1@a;+$4DpE* zQ_)xEU1}zHeC$fZ^M&dxx=WFm36BKC(T;aJcC}Ii?=YF62X9W2ta=nmn+gDc_5%O*^U2SL< zjWAy1swmpu&;?5zCo#wGG%w+37t}B<&OJ`r)IAG8h2*+jc!LMDTou4+^H>-=f_2T> z#_2Aop`2Ld!c_ZD7x{F|l88-#dvt0nh8DY6)KNXf%J~Y#!DK0A>h@I6X$qCbMkzQoP)Ej5JK!`KKa*KZ|EY^QJ z&`gmWvGwseAtnSVmKQ-90j5mv(fXJF|5@w*>nneya<}qr<$qZI6Xk2=O6kj`-~Fq| z{+CKmci|i!lD6je$PL{Y{eMiq_;d}>ZwUyOZz(}w0@vVn)|hAD?cf}ovTy2wH$3!E zN}o@Ef9-M?rtr}yHHeT`RQDV{oSTn_4qd9h6N#{Ck3+Ng>R#XAQr zhVa|~G~Td9T<(Gx7NkD))O$;P>Zz+LN7h*(&8FOnCoFmeI>G{gLRx}eT3LL)3w8K# zq^7frnlCatcvU18?me){5Z(d=OdKjlo<{WyloNZu3xc>xMFgT?ycj2UJa6pk*)GW8 z7>1D*LlwR_eu|GiedQ~bLY?h`9u|Z>{q$U6PZRc)DxuDH0T2tqW?tm@$_^jC@)ZlA z&UV2N3&LjJ-&ojFPld4eu7kSL1wkAs_#5r!TRV4eUffcVRJB-hPrX?@c13Po5(a>% zx(<*AW~CBjZB106(edu=beFn7i3wv;`02*}Qa9`xZJM2@!F{Q%iy$q_kF$^(Vd-pa z)S5@TK#C6q@*GsMeXF=>jE1}lWl3OPfxM6~vdV=&$Nv8` z`~Qb3S1TW~|Npk~@zO7s{=EEOFpci{d!`E^@h}8S3XyL{$T(JNr1>SwZ|z>IGs;$1 z89h)2vUSynuB)zCVi(y7mYQqNbb%o<2`{>ViI&*hNgt_+MrUnN_*;;R$Iq_wBMDsBpV z-`c&iy*0g$Y~UK7T|E+yQIKcRt^*T8k&+^%US;^#PIZA5ABz{UxpV4H{q~K`W<4io zGIXsDgc(Qy>1rUuhB#y%YN1F03Ys10-hcVX)lA9#$mNmseXS zy0D6m2JCXOXsq&)km<;^@G3hhZW_zL^~#fgXw(pFEV9YK&ES@del7$ zC@m{!@Jd&!mOuCsQ=auMaMfJlo1EwZCl=&{CM{mh)8tfZtQzZF{y~we1ZE9fLN46& z_qWkJ)`dze+|^z&*Lb24REPgnPpW98X*Xe?Km$NM0o^A2-`AI(DJ}fPg)c1}s{EVE zPgZWT0Dh_bH)wzprT@3|r&R$zvuF8_2R_<`xp@5X(N4X+wI%5WxaoE#|9O z#dfFu&XGHB-n|K)wUY_U552-cw?bDs3aFYbA$`HI4FPDFO4&bNRrO>ypcL^&bHCdw z=@ls*m2ayOash~sq8X9*PN$|4uL|n3);ZY)cuazX;K$dL3CfMUQfJqxN)vrhwId-5 zUQ$&U3*%$=*r-;Q4t1d&AM`lGa5{G;6OsP&isU3CA!>{pi>hweoIu8+j~zio=&*Y8 z*L49IAAE51F0voLa-s`~SeR|G)fQ*lVYB}$6`Y;uLM#^K#4cNu^VCyTQB+5aGhHyqOxqsWX>M+gAIIiS`bb}cy42aZvea<*w5f*4C9f?YNMHzdUp(8@MjX7yc$qs`71p1M;gS zV6B8x0LlK*VKT#22p+{Ydct1(#S>Y|eJrUkeBG*~9tC%+qVZ}Z*8?a8b!YofaJ5lw zJ=cY^5FadGpds#zGuYD$%a2|c6>Gv)uPK~iAgH_G0}BT&+Tet=O~4afsEbsRdS`ok zH(lRU)MV&-y`gY7K&!E-H?3^1Yz?Z^7OQB*Nse`4B*ksYfh)XP-@2Q7RO6BBfaD&R ztOQsNy~818!BH9_RKoSPh7(-~$#gYuW>P{0W>0)Fblrv@Wj{7(ssF%BDVT|Uo9;3f zz?F}6VI z6AcG|AfL@>f~|oF417&1QtdF>tzX}TlKjX=vb`k0-eW1(>s{c-^~)aGk>kg&pFi=^ z^(z+ye9xVeby5f(-y82ehYrpC%4-ajrkW$rvo$4fRJrSCd)QwVZI9AoFL!|>Qz>`| z_zLn1hhK}zQb}WhEwDlK53E#%3@|6}Eo{f-7rG#mpA0n|NkmlcSSk;ySS6zQzEVBb1({5Rp6Q3_{ZAjlXzVqKY)K_o$AFbt5rhmz zhBfhXs%e8F3;+K^h(O_g?!o{4-!#Cr%GdD!ub026^jFpYY&%#w*#)9_C~-B^0}efY zF^3MNgP&k(&8&InipYPF6s@1L0a--KcjKJ#21vEx<%; zLQ;T@?0G=aJjC+k=2jbkbUIY(i4|eyfGV`ET6K|3i%b$AVw3r4j9mmqK(bLL1>A;KsnySSVIV&hnd)Mt!^JZrxy4Ze1BX(T5Jjh;x+SWOKwh1M zCsJQ!ojlhCh)l{iL3Oq^!FrQ}mg%Vc=ygF8>V)!@=U}f#R+8l)o-1Y=WCLvGMyBps z?LDF<3tw}GHn3%*K_Uq+kvtg zFO10$IkHH}?e{xX0L;$j3Ii5W#5P=C$>RUj(!x)`|357L->)22|M!#SH{t*Pr_uli z)9l~*E{w&aq0GF*Fy`kegy|u+v&|l##j?Pg__}g3kg=K#TX_Rq`f}rR7u@3EfHeEn zl`r1T?TDFr$;KJUT<3M{47M;;GYY>zXO%@alnpWQ>y|FW#aPq`Vl{p!Q&BNaRWS&K zY@^UN5)z;}_9D=7v2VM=#>&|)z{N)bxE+&!uB`C^u$gtV8cR_w9?*2bOxG#$SX1<| z)D~Pn-G!k{*VWwTfo0>+Ya5Z27a(OENeN4-sMYFVN{Ou#p5tg2X!64;PcrXO?HWX5 zAp#AIVofPZpjXsYZioblAcfV}*f`#WmwYg6qqmDDNcNP{Xh*<>Aq0V_AiHY%1&l;p zf_=j>ldY~E?E*@sYq^!6n={Wk2EBfF!_#5xHM!RGPg81(ABI>1e6!X**@cTto6F{o zncSJqo*Cu+inAvl0ctfl<_`xW`8{NIC>zg*d@{5t$!t?~y; zKmDt&{SS?Ctrxh8e6U{W+Kuf1kFuqw+hFQ3{8M0Rw3_n^A9L2?x8F;*#~or5>2%vf6yFs5Rsd}gd3}HkT(PQ{n$X;pF4SaEY-2lxTlaYiag;WckQeG; z2{9_yECh5cRSTXmBMiE{c%=(EnZy>n!#%I8aFk+WvI|gz-r)dM;S(9r! z*M*-z3BM7R1YOAI&qa?CJ z_pK71;(zZiy;)lL(S?hZe+T{lbouAYKUJ=m%cY+({MGt9(}Pw>lqKR}rH!HD7-X*&_$Vkr%?s-S`YlNdcopsriqvt*7L;9`NEBef3I&uo!Ex*e*v!G zFNuVU>|jDzUg*IkK0abDA~d_k;`Qb~kyy2#!F`CEL2jt|5lx6P9|$M~X`RkTdw`0Q znCm==H(EVF#Pyf+8t3AfQ5k$x8Sj~V6TOuGmdyh^0Ia@~s(zO^>HrLM5qb+Isfqb& z4_NUtFU&j5S3ZTcjYerj4tAO8wl0Cu?1aeugN(ftVjw_IBIuNJN>e5mp>m95IRl>c)1UisVL z|Gx*<>Yl&ndf$>QKWkRJ(gYlNQIq929lsF-ZBwmApMZ4K~;sPK};4}|9TH1 zFfsgfHn(_)M}v>1ovDbC&Yj4e_YKR1W)!Cb1F`^XHLwN%PlXpUe)u5PR*v<+1XG-3 z^!xl`gHTFmy&+o(CJ+fMBygRe>;&b2`vS9-!cq41d=EM>QSOa?5&pp3%S#8Soi(!$ zHd$IrUnH`*{Ok(Fm4>&N?2eqCY-9G z+UiR^n7}8)WVzG6x&3yyv?tRo%?O-5>bXI{gFPcDg$_lOw$T!~5fedR!*}h}F7$u{ zlj0ivb|kj=^zuh;2)I z;yq+la2`_n0xoV>fV(h~NiuDsd`G(hJrKJJ@1@ zz&+4oJxIYcS6Ufs#Z+YUZ}nHQV&qD_)bP! z-hS^SJ9@)>p;-Ynl@+W=c`12{-nc^okhcDtMv{qV-Y_l&|Y+-=`#Vj3u1bMfE}u}#~R zoN$D81gnCi6SE2^wRIZ&g)jC#R+PJWk2Xu?`g7!t58jZl0wRf2ASN^%$5LpGwGNLG zP!4`#rGC8!+n4lY3J{I%^W^yV#fzTzjT->^K+ZB_;!uHFuQwn-gq2tL831C<&gXjI zeu>DH_4uCh_a3M3Rs#`F=c({UuhEI;54slH`XVH(nF}kJo4KPC6t8=vO-4t&K@~mA zR;7aJ&WfaPJn>Ztkw#c>=;6-v00+m~WS%(MWGriSNv-sn8;`0{j(W`!4iLjyY>C#} zsUGBDVuR$&#D+FAzs959lT`@zfr%JSf29tmSFNsNpWvH9tE@I(?tu-aEW$+NW_#p} z$UTQ|xHM4+$uVJM`=g2l=AJ;k!VZkWialQFK@p}b!sy3yH{Ze`>mPhDvW4tZTbX&a zq}onlob|x-Sx)u;A3)*0@CO&p$^QST%GL6}DgUwZ#qx(r|6S>x19Se4^x*IkMmk_tnz!ktCp;fHe22jOv*r0M$#8#`9dq8(-UyAQf zHB#|{ipR_pk$hq)W2v$m{HxX*%y4c0kd8+?MD^gJs0RiubL!K%%iK@K}GT z2a}idcKkjse(!V0A7zIr4GRuF$V_2Efp}pWh8=V-+AtMtM|uEyY3^mk_r+JFh~GMr zOc2GBA!oobouKHEKPiv|*5t~pyx4=r8|nUCKiK~z6%JZU);TNyq83mgr>V<$#b3g zXSL@=jjp!v6?&N-Q6UXHz@9hozf1L9*Uv1I=clGJ<9Zs~n@ zk_j)iv+1JR7wcc-n~q}HlV>saD>njDQ5ANhWTkn~Bet-3HiGI6d9Cn2e+w2a=WmVA zaT2H@%g^m|iqSW$E+sZ-hnv9K5$Qt&5aDwKT4;)tm$$F?;N<3<;j~=Yd!J$S4OV)G zNPxM(I#7f`t%FEE7Dx^K<=V#O9t2&|vBe2d)GfthbbmY^Q#L6KzXs`x}9c)14@pYGbPrdn@C4HS>LM$su|j~$_%@aH$7O_C&<8!o|N!x8JxV&2MtDm}AGCB>as*hDIbDT-zn6XEj79%R`gQT&qZRv7KPxXIWy zRfgvplBFq?0mfwe-H=TbY=fQU=Ty)4K+8TkP9xSED3MyvwMVAF=-L>r#AoB%;!kWq z+0+_Lpz2-z(YkmWu*=diL$h6bwg+kUP~gNyKTLBWFKHWzGUDwpphc|cR`w)nWn~)n zt*8iDJlQ*u-Q377bNZZ=$(Wm?2G#^>MQgEN1S@I8Yija<=#9m1pY1`LrEBr%i&91d z+g#=vjH8FViVz=X4ZiZFRYfC6t=4&g>!*9iOvf;inj=!XqL}I6w&a75kscwy2Qnq% zeXJ3yM2JAhU6kZx?`U>gyI$8c3pIK;ld)~y99Ttw9)n{KLO}Wn>QU{4^eB+k(zzZO z`QrgBaTm#QJE#9g?h)mOJ#Oxotu{(@use&m!yGF{R7Vs~ezkhB2UGs3$l3bc(M{3u zJDc@!z;H4@a|ehF^5^J=!BA#<=`4;m}I$)o|sk9d!2m>jU2F&zg5H@HPWe3xkpOx0@mf<0Tmo1;A-tcSz6Z{OS8 zEoz2r#2XAUxJZ&<@>Jcrq)GzX0DrskP`32SxgOM2ny~ScWA)p+5(cBKc{IQB!)6x~ zQKltuTPhj!aezGnQUQ{pELw{z*Lv{NOA&@>ZSKTOJu#Jf620ESWu|xvP#u3d zmsUhCfK6PQSaer=aMz!S2wD5q{*w0`+m5K4!VT>CoDrrej|*ZoEO7tN_1b9kAh16h zQGaR?@b2!-TSvAw-@Fw#kSp6qGEB|rY3%b2ilHgm4Trt~RI@C5CRt_xLV(eajk9&F z2b-N9%w7?>2ebF!HbNCE5J4;7ZcWArh@9)VA*ZAg+8)?=r3bBDjgYBd9|uslyTu2{ zZlEZ8_NaM_x|p(7gkp~HuBbC{lxB6cTH{c67O(UmxStGgjLPBtB+njl&5*|Uj6pr@ zKzjb5&eJ&rI>!5@o@!Tnu-)lprsa^|VRKi!=h!xMt^9Ng_m^N2HfiYRWqc_%x(G3_ zmq+$L{*S-3@I4Ewm49FP{>pOszc05+|FQG~@4@{MYyQ>V_4k#&QI%i!flGxY;FAXx z)&|<)sJl_F0<6qG_RN;0MyYHpd|EP z|CVIA(fi!{(tgl=;Kgu6wu-yxWb6Q^Qf-Eu)5a>XB^d?3OigneWi3Ejnzh$^ue`7H zVaPS_WjjOIj23%*JirMe;}=;BrU61F5NRE*ylZ_iKTC7k+SIqw@FF{(OD;%jF}b zUoiBaJn8m zTimVj;y(7pdj8eK#{--|j?$H?GXbJ=n)L|T2W$_ehmF8|?ls46<@x%XEQTn08PEA_ zN72cR_Jd%Q zjD&)O?qC#YI>HF5kCoKR?X9itcXGEe8aTj7@K0f1(8r0J1!`fh4`x|+p;pK&TYIDT z#`uNLu9Woo0H+W#LD3YDNeLQOfP508f>DHoBBIT)|9`E9tqb3;`uAr=|Nd$DH>>>l z>xRDCf3NnwFt!)C;JN4J(*f>;6^;B0m{mHN>F94mDX}~bOWM3@yxO}x7JnhAKPR)w zrvr!&a4LQ;_$sxMXyI6p3J-R(8%sl+;H{tz0LO}>tb|Yd(=zZ z*1=T_dnXlG%cG!WSeE310G4hRf^o{#k^O%n*8jKa{dcJRzm(rr`}0WY@0WhNF3t!0 zJJkciOa<^e3K1;4tdJgc;-N#ip&juuVKLKF9-4C*7s9awbU*^{+%fwR%!Hm-n=Aija zJ+%^JCX>nUci!l|Ggj=EHs8FF*H-DXI0S8!*aC#P1odSLI2c}_9x0KrHcjnM@CN{M z82B`=V3fdhQ1_rLIB}L=@4Y?V0nfEN`7^}F1DrsXgX4s1Hh|K|NbpEHFWMBCX6!?p zr@P~w{QUOrjnwO5qI0v6gPaCD45*VC!qHIi9hd>+ODe53@-sv3^>*KvJm2mE(&X=dNEqU1kr{VK9eYT*zro33f#HQ@@{YEeJR{sIQ8wVM657Y|G5*# zk%OF8Hzlb)^r}HezZxjtXtJ zePR?)xz!p)gWGq!ql;&bPm=pPGy(4_cl0j1oo8hu6zf0+ghA5Q4sr+Wv4ZoxReQA$ z0J;>|+&iPBVD8s5viE-BuKGsEY|x)om~JW6q+r>N2)^VbFlWBf2Lk;}lqi5owy_Xw z(`eV^uOr4Az%l?E`|QYu{8M1*xHG%k7Dso){-WXvW13BZT%e*Aop&%Xgp0;R z9PR)3|Nij8>B_%V{rhs|8_Iv7e7pR$r9bkX+<&1LT77`d+DqwTQqn%RKCj;nR)ySK zh(1j7zH}G(MufwaS*{YxLL-Wkumr%qDP7hLz0rsDTz}DN_N>D>XPNt*y8Y_cHTcYu-A0EvtuMpoCi*gDx)sPS;juP@vMKL{jM;T>k9cY$HVlaxC~ zpHxUA2rpdUOa+N>e08fUXZxx&CO0~o7)4Q&?ZAx!x?=Sf(bOyhaYEaj>!Kk+Y^yTw z&-E2)JQ{huckU>;nkQ{~;4Yie^VSxMmCGHHaK_dIq$eh*dVXzV`C>n6GIGytp1}NU zjVp8^VxY?~vq0In5NPITO2PibguHUKuP9@(2L@Nz&c*%qz}(Th>aOArVMzr7)MW_< zXdj9&#I{Het+rq7E9J=Vfw^DLyqoNbb6>E+TZUzu>F6u4~qFx<-9a;XkP2XT|OE0hWWKLNAB$5yQ+_Z<50**)*Rcg z29A*n1UlehdIIa``-&+Z3q(b>u;xh39q~T#-^=aGk_o5@od?v64JxAnZ>BX_Tl5y~rjFwgCA@Z;p2yR9!O0QUujg2dPB@~~EEah~S&5>F>Xlk2d zLZzk3VXAPvSZ{|y;p4qQ97pzc`ABsHCM~#mdlOi3cPV2At6=6*7W2B~%TG{75X1?JB zT4SsAS5PE|qNr*e7*c7exrkrO?Tz;T3#ElWvv5oQ?=M%5lz*|j1O59iN`Ihq;Q+>e z@hfNg;F+mM?Zq=Ec5k%r+zNFt{#O`ubLem zG#`C5S%_mPQ+f9q{ZDY3Q|#*0_V(<~97C3LV1^Vk@hn0QDWinuL(mMf$!m#pD;=)$ z6Ci@(;$UxA#wC6)_M(grnbVE_;~ZyOZ1;g9l8&O_Gm|A7J;13j!a$+QQ9=8{3(>97 zhzC+9Xsn?;-{^l_R1xGMLP@i?W8?s*0IHBXMYX_Y;@B{SfhmM1m>I!W@7&jJg^glK})r+^@y0!g|AaY@o z$VLxvDj~7R*@N%HM=r6Pkm0Ki@mucU?+NTzWg%cJJQl$D(xcW$N ziY6fek#bwHn;;Y6*49^!_tjWD6cDUXI&)3GwwD6rT#5imZ~;4~ z`-&+(5~!(6GtR!+@vvQ2bj$5kQ&Tn}BScxz8r_Zf%nSx1kO`t9HjU@{Fq)6WqYN2GS}oSf%)L#9 z?{UpcP&PddRogmreW3QlFu^RFHH4Zc`Y@X5&VmSL_Rhv*_k1~aYus*93+RJYGq6m( z4Q>y0*jYK!S7DLvEPhkGv(bnV5(w2KR<%f>$L!N+%VIxmKG#=akv*pbV4uA?bKr9JHt#7{(*h^Cugp7@ zOtm0tQySM2^_IigIMr8Yk$R$MKP%qiWYBd90|Ff4Gtna@81MsJ$t=SjB6z&oe4!up z7O_cWKbmu+#UuADOz$j8Ym_c_U@RCiys#rR$?&3Taoj)(7=UlJ{> zc1T1KHm%>)7z7=uf*Uji2qg*U_NOOTY@P4X=?x$8;{pE2_l4QCS$l zfEW6zD#rI3Kbn89xg*vPA;`XAN>`SGZZ8~r6wF6VD8KBoAu~K`?xOdE05T}0yqZcW;Z4~0s6%UB z?gM^m)>^)B6Z{Hc?#}M1phhdKy_rMiJhOR8@s7tTrU#{lQ#hD>VfH+<<@V?L@SoMN z)R8K^-G06xI)9yW4#zb^fZEf+Qj}h@S4Bv{2}G{2mkHFq+y@0+ia6)zw>NL?FMRJ& zngb|YCQg}ng99IB#hN+>)-k%q3P)bjX1>svG1(C_hBro2T3#y~8wy)FrV`-T&F#ck5!asY zE9OAA7S6!@%gm48V{*oi_4;c@!B8;c$#k=(quRQSfa$ru`j3g8nsb47@>eI$0GAZS ziEIjqCPxn=OXxEF|GqEF0A6|U6_G8~`D#d`dwnD?1*M)(?(>O_b zzjLM^6&(@(KxsE;tDBB8U}a?h$q=%jdI2|82^v+zixFr?*;RX?ubv}4eWci9X_t!z zaq$Qppi>bx8CY0lJ5t8trSag93P;Dh#m@76^&9EwnY`Kg^Br=6lvqf8(66s-xU zCxmE03V=aNHB=|7|GyIbzi%yk2mZe=S1wh4ZTZiZ-za~e^e0PKist>nK3(nuh^Dzr z9iVY!6OId&r>|q?kT+u=)yGAN2W5c@TAWgTa2?`IdPqIn^*%)C`W~W=lgPO)>S3RM z1QXfO`D6Trd+4)lW@^6IRqP6fMyrNEMDz8rsRK5y+1nd&Q(OeBf zD3a~1gpz|sdcF@1nr4A|k8BqRI)bUl{5b8S-i1H1BAt%DQ&E5{Dfr{6{Bwg+uAb>D z>`1ddqNmB#DoC4-(hvGka=tsFf9eXLRF;uTvM{4SK&R!km-^~CJ`=$LuVF`cp}9ML z1^ElybCCW;yv8bL7lTJAvQ#{ZD^6+xo7N(;^_ji`j|Zb3BWaktv^2o(pkQQWRGBbj zplo?w!A7h@8Sr+ev-oshMMu&Op;Yn$;&bf4TH{zE6rZaI)_iV{ia)V;lcm1#bYD3~ z`hBuobI&_Io5RAZsD&b;8vHd<`$$cqDH`rx`Msqh{ixyyi**YPOF-YIZ)`MTmPVT# zm@FWHK>Vu%QtLpsGope~YVEncGLED#6K8$wz~M+t1?7fAN69S;JqPsAROebqBCimI zW<^C*>i_$J(w9d3pWj~j#maB394-GV>;G*Qz&~=}KjYtPeMr)8Oi0ofj~A?WAMXjB znVXP~P}Xw8GHei>Abu)tV1C4rLOljwuSy~MzM6`IND)KU=t@dY8lv4k)rT2PmR#eG)N9x*`R6_vycZl>%J-v# zsQ46MxXHsBT$jS9!>jG}r~3e;X&&94@qXg-y?`JEZ8O?)rQ6~mQ9xr>S3#wzEx^=1 z)aV1C*B3TnMsu(JHr)~Z_@oTk~rBap)@V#tOLDIn`JCk)Dbry>~WF2F+}#0&g&!eMpfIVm~@O{*3A!~`W;4*D#w&<>)@%6g3qU0m3l^ktr z{(e1R=?&Tl2!Eqt=~!0xSRyacd}n zP1|5XG`+YAl*!Y5g&%1KXw+VqM)8@(W|>I*vJ#`?herkyFI$CZ5E(SI%!$70j?B{> z)yw9uWbFUbXy&OF=ynlsUrPpsO0Y`_J_C=lp-1>X{{Qb>_;}?fD<{kUNbavx`W>Z@ zjTin~eTdDt>+S=aopamUw<&25_USvBjyjz=Whte`prJzX1uXD+r-2!o^CRHfb%KDbG`H*A|hA9ss+%oM!=`h z`n2jd`*57&^BtYHtT#K8;RBpcz7Ojo?h-6N+C%~Y1sRyC5qS%mY-zI((iy8I?oZ$L zTM0Llf0)_e0nP=XhVGncfWH)GQM-8UlvW@Zf%CvxR^RL^(1|hzfL zf4nLF_m?W2$_MTKo8@mU{hiWpc3}SB`Tn*bK)Ay7y&10gwsFMY>fxtK6u;l*+FQ(wx z(&_$9iZucYBTCxoe9uXWL+|p*rH^cj;TNbTKvZe}5a?zAAYR?rINRT1Zw5w1C2@4) znJX(Ddsi(#1iD~NRQ4%sQi&kD;VLap!PjQ0cG{-*6RvSyn*6D7OfZBM`9=7UZL!w!m8RhP^90!w)+%niTQ`mSB=-|riJH_9e-C;&88}K!%VWj z3MVSylk-F+V{=xxf3e@Ow?-66BaS_4vmkSH_+7CVuN?7n)aTTJ!j`2>`0IcSLHdAo zsNd$iQu~leb7s-p!FTI@#Teo5g#MnHGil%enw$TkgNg>5u1Bg$&uuLQ*q6b7qdiH& z|9+s<4F2y|79OblwaRa*e7pYNyX6N<|F-l;9r#cGd!`T5`{C%}8uSTnHOQr-dmlzM z1Euew*sT}wmy~0bCucbYA#HHwNmW*B&-bBuHMWdC>XTpR{+aTMW2xl1Td4-%0CUIE z1JFgM&j!F|9lQSGBYmh|oh>WzHpaip{j>Bvuk_(|AA8vpz{@&bK)#WsG;@i^;L|*G zDEF=JqU*$!g(Fn}iZIyi*gGn>6krI43NXLge}@JBxsmXrU!3EYOy<}``s8ch1;eGt z9|WI^>BUBqY@|k%XiQ#Fjn>uv+tx(DrCim~F9spudtdqJI|OsJ*$(_3iki8pxwltQ zl@8;Kw`&{M`gduafO{puXZBT!xvNfJ`mX5ZB||D3tyd{C7)CNO-c~jZY2{T9^>@Ff z^o%6a{Pht6_q~VjI@{mLRBLD7{4l1+IQA}gBRY4Zi{U1SzOtXdDImb%dPFv=>nHnn zvW@8WZo#*jyc69nc5lDSFA#5(rKE?T*FyUN1qBtbB28U4>X-Uo$W&8fo>`d_H#z>U z`Y(R299@$lk)Tj}AQBA$8u&rzwT<)r+u6P=v3|3@Q!vDHBD16K0un-13nL-J3{D|P zC>`-wUeOU#UOespA1p0~|G&HNZIype`E8Yr^3Ruh_&l+% zSEHE~|6l4oHvrYug|TvBi(7oDy(9FVTTzD&O@}Q|8NuZsAm(v-{xZGNLrT^e%7GzU zZXOvx<~|s0Gun6VY=^BiUZqMjVSnt&WxzDd^xG9Sbi!jp89vL6#jwpTsVkKk zYn>x~7~V9yQ#a7UEvAupQXX~$K_NB4cjW&9(I}FLQ-oev>73{*xzRGZ5_!+#v-@f` zMvmU>DAd+rrMYi>DlUy;0J@I?W}7DbPwM~qzc2jA!s`p)tOH0-70|!J0Q9;JKz|(v z@ZA2NCk6mkk7SK)Qghi)Pz9l4r`>lyQ5x!wAk@Gb5=50-6U|gUOZ`AqQE*<`sR10- zqtR<;T$b~?Hik2TUVoY-0d|aV8dSr+>GYw~lC28wj$o|SQ0pftrn<~7URg`u7 z3X$Ja1IXoqq^I^udMYF#)Qetbd?HN>wUc6xcA`PHixc*(w@(eglM9lfqvp(WIvkQ{ zgy@i}nFZ{FMw+@5YitBQvjW;E>~mre2;}^m)5vc|&{O2B!tLqLji63nVjN;4rVEf^ zx%fcOoEQKf7vyLxI3wq9T#wpft;!Xx3q|RHW)q5xR+QJuE-tT~8bBNu?kxIh&Io!m z?o9RqCDMlUfVH7iN1B~WE9KHqrU&45Y5;OvkQALYXCyrxl0+B;GWca0mR8}KBtmqU zP=~8Gn*6g5yvAmG~0TBeJ>SC~5m{}@Q5j2NmSvxWSG=BKW(JGA#nOu$) z8lTCacpwNQd*Ia+%OJy)jamUNvAag* znz1WpBKPy)0EqbEhex}1EYitO!~g$a>6O_3Z!dhp{{J(Tw<_Nn3?MiF{|_|)uN1cb zU%`h{gU6gRH0DG@J=bW3CD*>yX8VtI)c1-oM@giVxb7)n3fenp#v)20`N@J`Tt71S z7zZMB#K?gth)FKQ_tueIV)s=zA58qCJigEk2(`K=?(N3q0YDdAY`74)-xofF8<9I! z`d((MR~*S8flDmPLWmYbT1h&oA%A;p0MDi1B&?y_FAE<^-}}Y@TubJ1-`-u*PGzFy zql9TbbE##S`X~Wh2DA)dwEskUsOhaBBLILMuyJVsfh~2pw}01Eb}@BH=qjCzCXsoG zpUSQ!DNLZ~chnfE!aFyB$QB!&>4P?vn2Vkh7v+;nOcP5}!dj+1iV`DRBgmp+clqo9 zHd|n;*b8kcZ5lq08^%sv#f2D+E@LDWh{(1OF24G|5n* zQEM7DxVCm;06Sff^QAp~-WMSwKq+9O!ernW33GUgcH`#YNzr8Pe)oanK%VnXI2k|4 z`J#Oe93(C%Q%FM@H5=xnJwsMNQ<>K0;M)_f)cIb#J@0JU=t0iqE;F^>x4;MPh5u4Pe6J zS%sDz2dfJ2W-?A%m|&9s-jGNHj3zTT0#yuOW!WCeYXk6Y#U?cE96GXs*u7sMAKYJ6 zkW?kdH7M*5f2b{lVGC{oo9pKWAl)i1gLP*QCs{%Kp5t-#>O3q6)q@f3fX;`?cP17b zRGCQYnE`M&SZvtnb05WcIIh$p_grSZVYc-@efJd~&5m|1JIYBLkSJWbJ4Gd~Q23jnCiRZQna|DEnOczHm$1 znx*JttWe)>V|gJ3iH0JA2*6Iy3}B=ldcqUGduuB%V)T&&2|#!lmF5D=(jXp4F#L%F zN4s8xbe|o-JbyUYp$fl`5Ao|&Fh;f`6O=}YMtid1v2iFngDYA(GJtQ+EVgv(N+lRDf^fSTGf*s3i%`ziJA>u-1tgx94B1naKQs4=2M=;)-n$T^ zz?4j_Wz&XEMFOtkkrASeK>O}sDSyWk-9P8VlVb-tFaBQWMwX@uGB{&YZO}SVf+`!J zKz#iRgGISvM%Cz!=kE=1yT5|{VHtu|g$ouK2y09*9Xx_qFBQ8YcasadIrz+Y@7wRq zPR0*%kCE8|fTyH__pBDN14fRrX?|fqlt=sjxzfT9EnHeC1^Tc2AId*eK3Dn=r5`Sx zJJ{+Uf9r(-bkw5}Bcp#NK+c)vpA7%(VCnm@1MAU!a8!?kM?mtJ z{(7F&(J>MkxVB+ci~8AlhiGgq5#?s2F|5{BFAN}~#}dbM*YhNfj*%z^x{f6T#kFqV zE>){<3aE{-MX(oT>B|Es=}*OeobEo+fWO!6Prg7lQc#eO4Qak83PLa;+Q@a0$G2y; z>#HvgV5J{_ZY2BiZMDA7Z@2b&u#>~_6d=^13!&E*lz?n0krN41q5*vCBBfB$<2QEn zE}!_${+B#G9+DZjB4$xcAy7uS%88@OKzIlh3OD@107g2^uf}_cogR!QtQ;T3vuehG z9Y~_0Cqpy|9kwP%S?ydHKuC|@*%+ld@12c~kqBpGkBE(@8d)9ArsxllEr~9;xpHOz zAN^2Rc&)65&>nH410k!8-dx-<3OaSL1+|u}vsKI5v7VZ>>jT*6&%8+1o(aEaAiUR^ zGdTkU8wgQ@@2XN10%!wgEafKDExyB(8m<4gqyN{ng%7Cz*{b}8^3Rn&U;bF>AC%r6 zuk5e(f3FXqpVEDCcxN%9GdH2-_Uw1uSNJgNYCaoY20&FHN_0uF6T=d4JVXQGqaF;q zIKztWk($Qi2?^KWv5!X6(IlxF7(#IqTcKLFpd=bVGk-X&$`NLCkDwS1IcQ6QXIMpo z(2Y1Cl5 z!tR(@WY4u`M@Yj0#^lu{cmuFcogl@yh*dxflVn;fzA%7VPV4t}vJv-D3)6#SF0zCf zADTGQhZuLMSzxlD?iccfH9IqaTu!U4lXWoIbAh7+WTDfDTa;ac)8KdlAnFr`ZciN} z+MoKF0pxO$b;BzSh|eBbqXT3`U;tw+5?Qc36-@v=c5(PCpcFZi=H&sba(W-PN8KCt zz1h6Z?kJXnG+m3#kg1HQGj=N5mi9tXmvLbLzdX`b@1?NE$6O~xA4zCS!@H29RM{fV z*_J3{7Qko3`v2O}>!pQ1g8$>6$^LyD`sZ}%=L~%n{@xs*a*efvL23T39m6gYfC67S zDjgX(5h<%$)gZ?%%A@7FZ7Yf`^jcIB2_M~BLnhGS0fOBNo3or6-!-^~tI6u>J}}x{ zkKAhQyQ$B7;~?jcFraM%9&K$^JMMMhE#%VDSwXu8_Wjo2C47)6O0w^1M+XjaHVUa( z51pip8Sv8w9S+@e59lU||VZn-)^~&FEA1s%A+)c4=;_Y3XwV=;EY*B@~N&RrUy<`3C9H zF@%39i_UG+dKkBn3~soOW+^}7V{ZrMz-66I_>k z!Da*d{L2Hldv8VxF7wa+@lkNp3&@c-}d0Dg@Q zz}52q4FC6QOaH9&drNEcmB8zRfHQ^dI5%Lei)>rtg{`!8&xvRMpp|4#6vIZ@C*Vv; zwN)nuhEBB@fc)CULCY=2_FarxPbC+}OFsy49e1f8qoN_HMP7C6ZNM^t$KcXEG-ytu z4x`H(3oHHL8-t*Wm8a=GFsl2%cxQWeySeQS;&bT->gsH@W+G87x;(S|doTwY{7+Ak4ISh}@IMM7qR}U|QZ;;R>S$S{1dcZ>Z_^n-6^~9dsrR3rC>uJ+i7-N= zPLubI%%v<*%GR!6oVVS0U-h$t*BB;|nV@L0H$VMXGOV*vXJa#k^X?TZ%5l}|snm8* z*I*aq@{)zHi zt@v^y~l<>m#vj!GfbTkj*0f=lOaQL*%GEP#P%xi1@>rVm$p$EtgeR zyt*T4j{2U6((&_Nbys=o%|^XmNXKX!BHa(Gb^?<3)N3g0OmS z5Xh|X(2ik|+>8d~MHz<&R{QAz znDj#tm>gkiG6|y(eowQT=iDKoGsM^e06=MwmB5fekJCIcfR27tpmvfLi$qqsigBJy z8taE8tDIf|Rv6n@=YgZd;UbU($RxvD|Lh>3(T|gpew~R(|MBZ+fg}_g_&zX52r8@s z+zOcsJ7}%b`o=+Ep&uMQv8ac20i_>4I{<2aEK+v4ykZ>7wvw&woveXgm^E#Ep`t3bAVqRfKa9N42_q#eCMyd z;!z6_Pf;Myc&TtKYzDbIbv%%l3U592#cKn2swcu4DgG47A-^7jfG~gF9ir7jq3Y2u z4`GGs&o&rgzz4uvw9gW9x-4IjZrNIy*WUHLKt;KK$V6$m=VR{7TK~)%QW%0@YD*BTt-1^Su zZu7>K?YS4XlRro-uT|J2f*nwkP)7XUh-J##r@+VhwE=K+dYT^A8O3M}x%q;Nhlz%~ zgMQT-6V?sTrxq+Y5-pl!>y4t`{QLl_`q2m{B-G)hyIWDTTzp5mp zlBnE3n`R zGg{1h?l2x=@&mHtr9T>xX%XlRkqr^EWeQV*(~b>cYL-K^93Mg}JrGvJ?)L2SABo%D zCdR@dhC8MfEr3sG!vKm^TtxG1k>k@tP~{KDZ0n!_m@g=f5GC$nb7IBeT#A0l0jm+m zqAd9l2q~`(p_?C%*q!%3u?^;n%zuMuJQY#C&aV?B78+CB9Yxs+SfGs2b(|i8I;X3g zH{C|J8~;y~N>rH!vFlg^ECk7QweCt&74N7HZ!QfXo>%R8@~UZ0O{}i{M3?^P(IH&( zhhv{a!XnvP{9TNhM7%{6Tk7E%(rVU%lSclPKft%rGogBZ2*R9}p``Dvow*j(^az2> zDRw^o0O=1nV5!@-G(vQ}M;*k_I5&h}P8M4GUb}gBo`p6!K%7+qBBPxkHyw!p>qkJ- z1}C)&#JV7@Gm%EgH1*^a?wPK8zCgUvN;q>!BvCloG!Pu2izwGa3XCwI{^}5F zIf=iGJ3-5${l)M30`ZGf5)^zB#8>YRlMZD+%qP|^H-QWEl>sR8ld;NXe?9xUW{)S~ zt8j4YeLC8GnalzV)B%IQKciTBe1HW$}k`gG_}cC_@zL0rr|b&0CUp~CUhg?0iu;1>i5VC&2fL|ElxC98a#D=sP@ z$x1mkF)b}U1+m?-6>fG^mGMbVcQ&3I0tqX9jG~0pKWDD6bc{5m0V0OVbvayB=yLE= z$uUV+k?bJzdu|9SoTMc&``l?dMjD!4y>FEmtBzQWmc0O+a1x6mg>ozEScd?^YU%c> zx&5V={`mPJaPY%nE$#EXN2+%GxG8S?3fP_9+yc^z$=d}pvK{E!9eq|?Lm1(u*9c4o zo4$wpFZ+?~z2A#nOgvuVM3qPb#dCoBr6VXrZgEpHqqSFuAjF@F6kz@C?)H^^_3P*q z#qY%Svjl)Bl*lQ9oY(aZk4OX=kveImvYz?>9}oV|&o4Yu`T5HC;s5w|dVsx&1Nfho z{zU1`(#M}2LK{6KI!1l&KEEj%J6>O-&sM@xRS+4I{D#n5N4rtwEzlg6Z9U-Bo!a5y zW0~`FXVmXvEFpa)KvX6g#OlN9Ed#>{K#L9GnTfJqY@SaI0|U&-#_Sc{EXKc&Pks(X ztv?L@JOLg?D2!jkl!cS@Z4nq;Iy40TP3_)p=C9ueKUS0DyGtwZIFe~#KnMnx^?d2* znu~s9@!27iZ@T~bZNv|``yYJ{5iE0e8(Uf+$bt-;!)$l+e;ax&936rHKOBCyQlz4c zY#?sJ%t9L~v>>7ca$`>iE*BC2cEfPCc6tcpJN9W)&Baro`{O4u*0oPP6{3Wu!)~^1 zdEvTSgn^(^P&U}s+pL`)g7y|fMLEH&DD?zht%6o2ve+kI9)qmtLfoLDb!8|R6i*KW z)|+|SqpO-DN|D2lLPAowNNrGF%a=oYMn($m2IxqwXJ`535UBT&d@+cUf;|^SP>|$C zEItVH7V#oM0`fWFJj6aC-*s{b{aX+;??Dm7^9$PnvXYCXG=}dcAjsL!$VIj2#_3@I zfAcpN#R;>Qq&ne8aj}_4%7~OW>R`*cc7ZF4$}=TyG>NXB9zy;WL`8MNtSIFPaaCp$ z?m$&P!JLUyl#v`bC68)d-177g__rV`MR8^}J%Jn(fjYsvp>kZfb2S>`%J(MX4MvAl zPwf96w8$5JR{h^<Huljql(mBMR@Nq{;( zJN%AJPi)@WY2V3dsnKU5*1?-`7O6muFrPwnEg40@Q6N{fsa#$=K74W#Yr5U$i1 zD2^B*MnytPIgPxvRHVvgH8uFSqD@^J&1Prq+2OZmS2Ft1be@eq6M=UFeiC7ey8$L% zTs2K`&dIBT!SUHo4+E$iGv812Uu~zxzSEaB9wQ1=qGf(@e$jUbD#ODFrAhB7d}L!T z9v{LeX92YIv*JyK@VF_(RNyc=37DpJ8wWx-+dtAL(L>;xm7_!8j0+_{u0A#wHxr@r;4Az|dgjt(J^lMt&VdN@plWCL*}auV$EFs|_Ud9`7i$17J# zr6g}q1br1)<4*T7QO%x?ds7XU~#$?KZ>_ofP07_;@`L+ICG6P)8a&|4*2AX?a5Z5R5Dt(7W45 zw+rtveU9sdM(W7_Ed@T6jbizU#N!WE?qQ>(>|n=|vfJD_ar1Wcr5R81Y#@Y0zwKbA z6x;>GVvRQ_Jsd&wH?p7hv%>(3g(EXs_EQ<7&qT;v>1!Fu5}7U-3PZ^>~f-+IJ%@xjt?QWCt}Ve zlEm>73NbMfSEK4n8CU>ZED1JQ)EK0O9?RzXV&|#hu}tm9kERbfKKZ%rt05lArfbs8 z!Gt1#A#Sc<77bu^>Ff{|JE{HM?Q`4jwC^0NM|bz}h2#ba6L@aR6f;@CHbsBEC@E<}LH*&%>+b~VvZn_1to>#KwbhYZwRQpzxER zZv-c#B5O7joj=5l8EB*Y|0hZde_`R?!V>%c$19)L1L&8^zh4#52ju|YEq$U?x-@(_ zOFha7U1E$x@zw~@H-4fs2b@}$6ecQTNTO*~CM=i`HTRN@jCr_RJ2||TOt!7K2>jeG(=EvZP%jeF_J5s zyj9|GAlNPtXP~(}KD?Su-QDfIawcNDN}+fm6&4iEFeYkn#vvn+t+T1FA056p*6-UV zx3=rKcf30qa4qJS%&ufT+(;083Wz5L#2_WWWL-Nx1ce*zHQO(qJE!Ya{+>o7#K56= ztJY5=b|}kl1J4>-FAqn~c(s0X2=z9ycenRQNdqB71ios=iGIp~p5Rbp#8ZB414NPC zJURq!%Y?kR_flLNArc!@Tc}<2G?34%W^GiVI>Rp5SgJoegksA!fms>xnTUvGTE38c zu<1yMqGL^j5&`*8d^G8Au<=a9i`Z@oPsC>;0+1;RWm@1|!87V#I8fOoHb1!O>fvGF z!bc#C83`i+oOK?MHETDaVHA7dJYjd~9vP7t9vV3K_`O`dk?32;YhZW##WdnN#0jZc zb_gvHO}9)DEa8k?A-J}Js-wf_Cy#WGl(7(0iR>iU3B&}7`|&2wY*v9Fp~BvEZXVEg z_B_x^rx0>xL2k$Ac%*#8V4K&PvKn2*#mB^Ftv_sw46nrh^}*8NQU9MuDt{0D=grDD zmH$rpOXWvPzgYS{hu-7w+z=$;(a6+|qfgVA#)t%JI$ruQP6vtub+8gAS|96*!x#}K zi!?dx<5K(l5UlXA4B>z#U^lN~M)D*Q#s>(rchM&ZBY|;1hWU@e#ln6tkM^ZikvlNL z4=39==ctV&h3iIy6gzz@=pe2RLF$^!RT+E?C7klLm21PM>`TPyMzuU%?=S7g*+Sxv0*(# z=-~()2oP!{Mb$2@RG%Hzvs;cf1jTEN5h4KY=!- zi1K1|6+^R%r(GchH45{fl>lFfR$ks1<^PVA7XGyQ|HGAkUiqQQsq()p{{hjze_i^4 z(y{kg{NqDchJn+IT#?lG`T8v|Evq!TGf#UXCnnI`vC@w-hCE>L2ml4_zd-}b_J*j7 z&JH4$t*b*Qy(c1JL+taL%{%+b%^xIKq;$ppXHTXLkPAmkr`R6Rdf5{@wW~vTy{X`> ztZxYUPJDE)L-f$7=11XlQN*j<$G(`A3xiXpUoqjLfJB3CEB_2>}F zaIDtmiY)#3xgq#qVUL_A@xNcHe1GMn{NJA_zg+&h z($AK*#*6%`@!xYp0KmeNNS8i&Zc{Dq(oK#4Sjfx+s!5Cq5OFYV?4~pq288?E5bUoY zE*T$l#7U}nmmP2!4w)GO6^qkdzn~~%KCAyqsJZx0*GV2$MtAKHkQ^zGr;D<|cw$pJ!yV)zu$JU9H# z8F5eUBksu%2gZ~b9uY0V8%1vwcv5L3A#nMNW&0YCU*YPW*hkzGA=3Xot<&*b{>(m)jxf19t%U5;(cJ;TD}w>?LG*yMH!(ua4uSd# z!UEAT=RJHnZj|@WtVDB$#SJ%zT~~cKGX%?f5G9=*0`wJxJvm?4lZ3(E=s~?KsM3x$ zun{4lkR_$OQHBN28>FuwEG(2cSN22*3-YNTrHr=5(w*?7YykEZXiIP|9UcPnePg7A z>y6pHvav$|B`Bf-w#_9mr%*8JnV{gH;odNf$|(ceKNx|Zovn5oS84uA(hwohcqBES zMNSb~KwMHDLyi*2S-d^re?M6Iwut|A^#A<1$~)M<{@d~m_}`x|4NIF2rN6`X!4Q() z)M&pMcIA~DVf!39ls=Yzg6}E5s5+hjE|qRUiM@eJ@ClXXV)1(DKCEDdg&F;JETi-j z=kEjjCARV1{jbRcWx%lFQ_cnn;@bsuQGA0x1AAZ&fm{KM0TC$h zTDp24%r6-o$voTdHfIioU|noFDjC$+qpLNgc%`s4CPkq7m#Ww91N|lcBz~LUwu_fK zdz5H~k@>+CjBE*ovy2J|)Q!W7{{v&wwfnGvInmRtd!Fd&QKC_P!BR7B&@4t*GR@sx zveZ@wl$JTYK(6y4Jc@ACVMNZ5cQt%zs32*rYT-JS7%V8XU|P(t zh_PmZM4*EhbC?Y9^@!xCAz(6eSpRY)u&ByP&)tU@EQm|^h&f9gM#7VnPF4UG9=6=6 zHq2TH%FsXsL&8WZoV{O~Q5=Csm?P~e!UVAKtk$5OZ2hbmFBx$b7%Bf$_)9br9Ix>@Z3x_oKaUC+1cI~s!_0&I^Dlzx(*V~BZy0ZF^5TIp^KRvzYp)12lf|5jez|>DRcv@sx~KX(Ke%VA8bE! z6`O?I*ZRui_dx@*f}*^H;-!^-^2YrKaK)sO!rPmt;i}rh#0_Qn*Sz4h&i${~uSB#aPI4ZOwl3p0y`9m>K~BUcOZf>;)|M+q zq@dYzc0+n;GC1D2{~^Tsf`D-%*@667d_2f0SmKybg%#~L`qnT))D=Xmj+vzgRqe+8 z4^H1rNGzc`{mK=;W#tTXNm2P! zRX^>ZOSdHm@Y@P(3a{LU-J2(TUnQLhze%{h28{T&BArA7B#NUv3-%2sP@=1R`ZuQZc*82Iwlp@0J)JrSA!W7SMnPZM6>zI{co8sd|w5g2@gGvBmj}NPDH?( zaA&`FH|BByCvP) zIej1YFO?N#FL9rDM-<}JNDxT(3*2E85|))x#CRgqf@^B|+Jo?uEcMg(;p`p^RB};5`sDXc8{Nh|caa7xR*?xc>!R{;XYT{qr8^i^-(+`?%5MBxEg2999T}zmO`Rr!ctBQFj*ttt_QHL*y7Wx5;b`)2b?yl}1 zB(jJiOGFU_no%Yy2S6whL=>aZj3SayLS#BsV`Cd^Y>Wdo4q%*dl(CJCan3m7oNb)5 zjq`rD-n^$#THfxSv%80bj!#`rKc;KCUw_qA_x|@5Gsf00wocgpAZNozAVzv907mV85OcFr2P(_(AmnUWE3AX^ZpuN4eNI5*LwwQHVZO4oY! zpV@K_`w!|idyICJHmPJh!FHd;Yme$VvhVB z9jpT=oI<_=d>Broxq_YB7_xwXQ96O(2dYrBVNP zPfGk#|N8>>Yv%u}r~vdGYJgr8??d(fe8<)QqiDKER(GWR4XptCoS9*tg;gP=y%}`h z%-vTd?!|bfT$e%YErlh z5qa-qkD9LUEPe6verIU}%r_I|4%w4r44JGG&l5un6B^>W6p*Ek_SqgW-9a|jSihPt zXsbKJ&-@)oLD>Y3!K{};4Agny)x&CnvTQs;C>VM6QPCZ2v#6$Is^6ax!bF>SRq&YO zvSQX`Rcu+`@#bZki$st*g5!8@klSzeuby9sf`xdpgBP$*2jkZz@yB(2pIr-!cr)R;0_tFwv!%&&?%!CFHVA@ zl#-_i099bvW)i0{1X1#t@0>aLq8?8LQ=6GmTO)X{=3UU@xOt$Reh9xZTvCjiloQly zB#lsk7N0sd&Vt5^x;*ttt^RDYpKW?+rw`kugIE(@7*?5VOku8I=7y}w#}4@^W7s3G?|!w8&=Dbac2>b_#I2(`84+`TO0CwN+H#O{vHU@MKnYwX?BiGljX^X> z*%s4zQ1`EM z*E-7Ccva)IV53z+4yO1e1qDe%$$!Z*he*y^slipDa{oG~`4M9ljBKltQPkRldGmj#Efy{{N z0_b2Urp&7dM*;~#j3~VK=1@~A_|;~v!XIN9kgZPojHsM5qsj|T@>Seo0`^eoOO zQi3ZtNy?vz)eCMPXLr?6q@158?rom?T+-g+!Nakjoa;R@RMT)LmnzdgOME5t9qq!L`{T&V!U;JPRXMsq7y{ zkeNUbDi8b_#3soD7;~ma4sXxYY`Y=-z6<-&?h6tmf@a-BB|6F1Wk9io2>wxGu1tc* z&GcyDw|f6t9KCgyn=ev==)46`n4nk1e~6PARTgVC7Q$qhA}>Z~8tVTKjBbvSmy`eh zgxg5Q%1ow_?wfyz3|G<{c^eSU z3PE7>&z}988)H$Q9Jkd;b6N1TeOQeO26T%0k)Did5$QB@c;@bmR2G)&_Uzi+xRRz? zx7A6XShtO_f$9Y4WsJ!eB=| z9-Jaf#-Pjs7tCOA$P=qX9o5<8soC1-qfhJG??Ozc+s1W}@E zG8i>n&*+7oYORe?wIKy=brF=nZS;T>g!B%=Zl-Ipk&lE13Y6jcr8GNIIBJ5zYM0rx;j@&2)1sv)uC_2Vm;iH;-?7F}>V`V^@8F{L%_B~PCzC!zC#%|I@Zn=v4lc*19&I}7^~QD z8MPf@Q1m>u3rg=2Pq|ZjSJKz^3!mnpc6uU!O9JG$k+xwdnX9O4c_reOqo5!)d3t)6 zdFq`uuBtVO?srwKW9{@s^#B4GV=OU-si>7%V$sa&lQ%Hy1S%nWN}o2aY6lbV=Am|a zVjV`M0i43@Lxq5fiiHH0S>EynV2z6~)LZS-FlTF}w6un>EzY&4eI|%-ShSFlj366< zYjQ0KHM5@-B3a4;_wE0CdX(JF?!S+@2i!t8B>pb`ze^YeK9B$J^qo!vrg-#6LCkET z{4R3bx$U8@WvKTRjzkZW6KHq&>a zev_GpaUGz7L3YPOfLe~7u}F^~e8xULBo&P(XVfDZ-s)7rF|p05Py;?3QdMn&Pa%E0 zQ_x6smF!%y0N5>oJn6GMBH^HSVxAd1cztIHKXL*qp4`c_teaPzZHYOGObc8c9f-%# z5se>zhDQt>(w14$Q&_8cXY40_9ibqv7G^ALB|>RwW{J4HnXV%_;~N_}Zjwj*yLG-} z^9;>=M=k;)5SQcd!u@T&RoelXTJgLIN%k5!YJx}X8}dWeQD)sDhRt&{e&+9BiACBC z10RDQ=dlXs%%$<7lTTr>r!zdl-f$WAD_fs{U#Hjx>j5Nyq+yJ-#A_VXY@a}ooy=L3 zCR02D-tdexf3<0Y<1pM)PQ$oJsxEofM1Pqt+sqvw2wM^$^&!kM`e2WAw@*CQxP<0u zqKCWvvgX)1c>}Q@LYFO28VB0pkphdn(|IFPBa_NMjq3($o)r^R)hWY;ohW*yolr)cU z8dERxqG4AYLPO+d<6J@XM+sg;0}N;5W_aXK0s1u?)-B!c4{9CbR6zx0`Q^6bmlgM6 zMa~09jGu@&htU{-G z#L11jWPianSJynmi74@l`Vjvi^E0YGjp@dl&+CWnXo(w9gL|4smK;vh2=aw89L+ze zb%+xY6R|IrSvQI}wtJ@Z7V}h!dyw`>P8)v_g5-WDnr)T*w>}YvI1vJAfHWry>mBAN zl#Rr3OEm-Xj%-pq$sz{&tcw{JG!>f1FC>}}hgx7^_U&WlggX9350r(pycqGK(5_*`UT1Hy) zHa33d6qMHB(ZVxIeM^$1a5zzyn8_5I+A`iY;{UrxI}91rox|M5ahL zBR3KyCw~O#8RWo_r9x^jVK^Ro{H_$|;r`-`!$C$Im|x_5w!GfG+1cC;tIdzQeP`hV zI^#`Zt6RkG_?O8}AqK?0?!4s35=}wf%}~q3g&vAIF&=wM3gYjf*a$B^iY4%X*SoQ> z!_l4%n!2ugM_qBaosMiHXZ*Ezr5U$)tr4vvpMkNMJtHjk(pwK~c6344q8)X_;dVOW z?T<{7JW*<|abqp5vJ*WD1&eU4p`=+=4`4D$qG2}Z{GMwYB|^5pfqfsf(;@Y2SlUz5 zm=z=vID7|eynv9#=B@;G#xAXQWqpR)gAO+s89V5Wxe zqOCNDHV&^5R(CK_CbMwcUba6HJ#s>AdTAWfQK+TI?qt(8tm-yt*|tANA2_c@03EXb zx^dcft?gOZ%YVCtvi?V54J{EfAgg0a^pjFZyb??%N_2rV6W)L`YDCZB^YFo+&K*9;n%i)y|fN-BKCA4r^3pr;1$D@ z&hSAjhr&NBq)oeM{{I2dj3~K1+27qu?EkGO{~qDM|Kh*3_5Q5F$kt}2-zPJ5Zj#)H6uUtR zL&-(PDbckt^u6P*w|v@8x8%1m7V@Sb>&`YyV1-706q;$$C6Q(JZmbdi9(}HLJK029 z^Sjsf^q{lb{*wEB+)l@#D3S%ph|yb(O~NEh6s#^XQc#>S>uUtTjq9DUY;n)z4QrVm z?5N)@pSIJj$r31H#5@v}K7JGqGB9dD4;SjF)HL7Xd78?6D4MD zwTMj;*wvA>$B5qg;ATg&yU`wPfA2WlPDd6Y=8cB9#&X{YKTr*qXaU|4a*(Ln-CGZC zb~MRS!nW^-!|im0^MN!~*1|*|I>{BoX+6(MtqwWqlA!eDt{Cexj)k$!}5hY^zhi}S81D4{8I@i_*HXnIT8s?QddzUpnY^PI}X1q~w z_Ys`M`9naTc{nqCq=voJaqC)NAJ80h>|M6=Y1)=g+v&E0YB#(}pw99)nRHVuk^los zAk#>7bT{}P9wm1r$GJz`9OnKTW0Cnkd8U7-uZokffq9Tfu;>Pnt6WEm*7 z$Kvc6wW>a*IggmtwZu{lc64QZAGOmVs~2(yEW@8_ZEUrHY@OvOh*H^syp7(K_0i1- z`jVcND=huCxvR>+jnNi z+v$qn{Akkwk)lO`ZfX?~=_Zsy9FZ3a+Joiw(B>mDeP^?T@IgDBQN7qwUkEbvpzO2y z9yY}${)+pET}pd<>mkhnXr5_ux4$e7x6@H4#V`nzpmV}c1r~VX(E{U<#C5@|Y5el~ z$mUf|qR=Sr-0iyxAGFh%ZNN#wAcwo1bRd+98n(mPQHz2yy=KqKA{_l)G5KoG}$btXke{1Vg znxm-ASav#Kv_5R-a>x~GwXr_AIXkw~{!a#wejm5faVK#B(hZ1H zvgBiFz-AD9iB`#w$sCb}_4P^3H-?>g=L5->PuuC1T7HC~NXtUPXoy z|8a6h#Q&cC_v{^b_742Ny#uT2Q=5a%6siYqSh>UXTi-|R@Nc_SGw~&Hj>sP?9pVl_ z5ROoUJdKV{<;vbnq)=NlPpXwN#-ZBlIh9B*m0zGnY)2~M_0RLuG?MVE_QR>x$H!C zwj1w8y5a74H`E>K4sd(Bfi8*vO?{$2#J^&t^8NUm_$xjie=`0E^OpCpXXzW`*Twh7 zFO6Rq-yT=-E$m~oF1|Wm5_iRy#TUl2MqU}nrqP;3zNV_n-lJ?5<3fe2u%V{r9FQdIIy_ELS^b*=j z(gm~&(u-*?PA{UpD7}#O!t?^#3)1^U}GrbJIDrbJE$gv(xiw&rfI3&Pvat zJuf|%_T2Ow+H=yGv@_Egv@_D_wA0gRwA0e5v{Tb5v{TZ_w3E|Gw3E__v=h?_v=h>^ zY0pm2qCG1;llIK?4B9i&(`ipnPoq689Zx$x9Y;GZ9ZNel9YZ@N9Zfqr9Ys4T9Z5Sf z?WFBYJ7_!75ws)HQ)y34PoX^}9ZowuJ(>38^d#Do(i3SKHs$p?HWc`&&TUErO`ZON@v2VRpbO|D87By*A($%JHFG9nq4 z3`qtj`y>OB$UQ~v;3vr+e!@LY6`@C|B=C@X(B0?mad*1g+^whz*0`naD!0JRaWmWm zH_nZ4!`u)z*zMy6xF~*#s)J8bcle3;@%U5mqw)LVhp0k!A4;S<eMT9Sx#-i%;LJszQU+-*`lK>gbI~W1L7R&{t_ z^f6@+=c11)gE<#Hrfj0wk0^sX7d@&B@?7*`Ww7U>4=IB_7d@g3{#^7yWf1714=95{ z7rkE@6uRhPWpL=C_bG!!7j0Gsi!OSvGH7(sdz8VWi{7maB3<+@WiaWYcPfKQ7rjFn zT)OBXWsvEjw=0897rjjxbh_xR%HY#QZ&3!JE_$;v7I3 zuQK>`(JPffu!~-y42E6wa%E8LqL(RyV;9|{43b^+Qf090qPvwrvx{D$44z%|Vr3BR zqPvvAw2NM(460r9LS=C6qC1sAwu|mi2HP%rfimcJ(estTw~L;q48mP>yD}Je(Q}nS zxr?5o49;D2n=(juQLPNtUF4NPyNfDi@b02g8N|D&PzLiZ%9X`tGi8z4Tc5G~=f+7q zQ@L>x&roih#M6}qK! zvy>Yr@tMkvllTnf#z}m-a^oaEO}TLrk5_J-#N(73C-GS2#z{Ozxp5MYR&Jccqm&yb z@kr&yN!+R2IEg!y8z=Dy<;F>Ts&eBbK1I245)W5yoWv(9H%{V{lp81UiOP+W_ypy~ zNjyxsaS|V|+&GDkQ*NBZ$0|2Y;$xH>C-KqBjg$B&<;F=oRJm~y4^eKM#78POPU0h! z8z=GM%8irwFy+Qce5i8cBtAsBaS|V_+&GB`D>qK!gOnR5@qx;XllTDT#!0-ta^oc4 zPq}dt@2lK6i3ce+PU3x(8z=GJ%8iqFFXhHbyr**GB;G^0aT4#Y+&GDMQ*NBZ1C<*m z@c`wM{)|>savUO(vq-?F( zKPtP%>>re^G5dREtIhsS*($TYRd%)6-zZyY_Sec*nEjQqvPF|xTaB`oDz{#ss1WsP1B5-oAionS$RRm66p(1ed zautD-m#GMx+@m6J@=_Inle<*}PF|uSaPndmfs?yb1WsP0B5?9T6@imGRRm7%P!TwJ zfr`M%^Hl^+o~I&ka=VJa$#Yc%PM)J8aB`c9z)7tlaN<=2PAV0FlTtX`Hx0DvcAjk4odj?XA){aeJvWPTZafdP(|S62Py(5-&YYh`JRfv$#+!*PQIfeaPn;xfs=2k z2%LOVMd0KK6@im)s0f^VT}9yJYbpXKUsVw}`HG6b$(L0GPQIifaPqi{z{wX?1Wvx7 zB5?9~6@in_sR*2WRz=|CGb(2Cy~UqaF~jVqR7^MfNfpz~enQ1mvmaM6#q7saOg8&b z6_d<9redPmkEobn_E8mQoBgngv&?=-#hGRwQE`UZ52`rb><3hwX7>Fm#+!Xu#W=I? zQ!&=;W))-1zE{O)v+q$c%Iv#Uj5PZ$6`f|^siMQ|J5-D?`;dxL&A$Da%fE5rHmNjD z+_fr=6Sq;NapE?pG)~-lmBxu%r_wlaYgHO2?i!WGiCd%6IB~008Yga*O5?;`toVd$X8Yk{DmBxv?RHbp^E>UTmxCJVW6L+ynJ87hqvH(jN1;-;xIPTW+L#)+Gv(l~LGRT?L5l1k&mO;l-|xCtta z6L+>sZ=~>?taTn;ow5WV0u$Jjv`yDo-?fqRJD@ zo}hA=*sLSsyxQ*F)EKXd$h`<%pRq3sM(<^hnO9r@<_8ssyxE% z5h@Qid$`KO%pRulP_u`sJjCoFDi1b$u*$(^2dg~D>_I9IG<%@R1I!+va(}b?KV$i? z0w>>96*&2hs=&#&RRvDIr7CdpO;v%DCsYMazM(2`@^w{#ldq`?oP1SP;N&Z+0w-Tq z6*&2ls=&$PssblpR24Y+f~vsD=T!wxKBp>h@>x}Zlh3FMoP1hU;N(-P0wguyPB<4?PAuelG#dCYPM9Bm@QN}v$?9+Y^EwQd#lP@%-*8% zX0tb|yvgiMDsMDIH%^k%I7vp!8z;#qdE+D* zDQ}!4o$|&>(jjl0BqQXFljKx+<0Lsn-Z)8y%Nr-j$@0cYa+17plAI`SoFpg68z;#y zdE+EGUfwuKj*~Y|l4IqKljInA<0Ls+-Z)8)k~dD0q4LH_GDO}uNsg2^PLd<0RQr-Z)A2kT*_}-Q|swWH))^BpE1goFoI}jgw?o zdE+G6Mcz0`ByXG~sl0KLB=W{d;^d8!B$hW$l1NqHcGjpsskslR2?{Zh3de`%T)(XUZy&5 za*yi3$xBrSPVQD6IC+Wcz{!hM2Ttx%9XNTB>cGhhRR>P)R2?|ELv`Tf1*!ul&sQBd zd7kRP$?d8GC(l(KIC+lhz{zc@11GiWz=>BKIH^u9J6!eXPccZf4 + + + + + +PIP: src/io/pipacketextractor.h File Reference + + + + + + + + + + + + + + +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    + +
    +
    pipacketextractor.h File Reference
    +
    +
    + +

    Packets extractor. +More...

    + + + + + +

    +Classes

    class  PIPacketExtractor
     Packets extractor. More...
     
    +

    Detailed Description

    +

    Packets extractor.

    +
    +
    + + + + diff --git a/pip/doc/html/pipacketextractor_8h.js b/pip/doc/html/pipacketextractor_8h.js new file mode 100644 index 0000000..5719f2b --- /dev/null +++ b/pip/doc/html/pipacketextractor_8h.js @@ -0,0 +1,4 @@ +var pipacketextractor_8h = +[ + [ "PIPacketExtractor", "class_p_i_packet_extractor.html", "class_p_i_packet_extractor" ] +]; \ No newline at end of file diff --git a/pip/doc/html/pipeer_8h.html b/pip/doc/html/pipeer_8h.html new file mode 100644 index 0000000..d9fbc7a --- /dev/null +++ b/pip/doc/html/pipeer_8h.html @@ -0,0 +1,128 @@ + + + + + + +PIP: src/io/pipeer.h File Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    pipeer.h File Reference
    +
    +
    + +

    Peering net node. +More...

    +

    Detailed Description

    +

    Peering net node.

    +
    +
    + + + + diff --git a/pip/doc/html/piprocess_8h.html b/pip/doc/html/piprocess_8h.html new file mode 100644 index 0000000..4188e26 --- /dev/null +++ b/pip/doc/html/piprocess_8h.html @@ -0,0 +1,136 @@ + + + + + + +PIP: src/system/piprocess.h File Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    + +
    +
    piprocess.h File Reference
    +
    +
    + +

    Process. +More...

    + + + + +

    +Classes

    class  PIProcess
     
    +

    Detailed Description

    +

    Process.

    +
    +
    + + + + diff --git a/pip/doc/html/piprotocol_8h.html b/pip/doc/html/piprotocol_8h.html new file mode 100644 index 0000000..b255709 --- /dev/null +++ b/pip/doc/html/piprotocol_8h.html @@ -0,0 +1,136 @@ + + + + + + +PIP: src/io/piprotocol.h File Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    + +
    +
    piprotocol.h File Reference
    +
    +
    + +

    Highly configurable from file I/O channel. +More...

    + + + + +

    +Classes

    class  PIProtocol
     
    +

    Detailed Description

    +

    Highly configurable from file I/O channel.

    +
    +
    + + + + diff --git a/pip/doc/html/piprotocol_8h.js b/pip/doc/html/piprotocol_8h.js new file mode 100644 index 0000000..bfecd6a --- /dev/null +++ b/pip/doc/html/piprotocol_8h.js @@ -0,0 +1,4 @@ +var piprotocol_8h = +[ + [ "PIProtocol", "class_p_i_protocol.html", "class_p_i_protocol" ] +]; \ No newline at end of file diff --git a/pip/doc/html/piserial_8h.html b/pip/doc/html/piserial_8h.html new file mode 100644 index 0000000..89895fe --- /dev/null +++ b/pip/doc/html/piserial_8h.html @@ -0,0 +1,137 @@ + + + + + + +PIP: src/io/piserial.h File Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    + +
    +
    piserial.h File Reference
    +
    +
    + +

    Serial device. +More...

    + + + + + +

    +Classes

    class  PISerial
     Serial device. More...
     
    +

    Detailed Description

    +

    Serial device.

    +
    +
    + + + + diff --git a/pip/doc/html/piserial_8h.js b/pip/doc/html/piserial_8h.js new file mode 100644 index 0000000..cbd25c7 --- /dev/null +++ b/pip/doc/html/piserial_8h.js @@ -0,0 +1,4 @@ +var piserial_8h = +[ + [ "PISerial", "class_p_i_serial.html", "class_p_i_serial" ] +]; \ No newline at end of file diff --git a/pip/doc/html/piset_8h.html b/pip/doc/html/piset_8h.html new file mode 100644 index 0000000..c97910b --- /dev/null +++ b/pip/doc/html/piset_8h.html @@ -0,0 +1,138 @@ + + + + + + +PIP: src/containers/piset.h File Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    + +
    +
    piset.h File Reference
    +
    +
    + +

    Set container. +More...

    + + + + + +

    +Classes

    class  PISet< T >
     Set of any type. More...
     
    +

    Detailed Description

    +

    Set container.

    +

    This file declare PISet

    +
    +
    + + + + diff --git a/pip/doc/html/pisignals_8h.html b/pip/doc/html/pisignals_8h.html new file mode 100644 index 0000000..3c48fa5 --- /dev/null +++ b/pip/doc/html/pisignals_8h.html @@ -0,0 +1,128 @@ + + + + + + +PIP: src/system/pisignals.h File Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    pisignals.h File Reference
    +
    +
    + +

    System signals. +More...

    +

    Detailed Description

    +

    System signals.

    +
    +
    + + + + diff --git a/pip/doc/html/pistack_8h.html b/pip/doc/html/pistack_8h.html new file mode 100644 index 0000000..11c2a29 --- /dev/null +++ b/pip/doc/html/pistack_8h.html @@ -0,0 +1,129 @@ + + + + + + +PIP: src/containers/pistack.h File Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    pistack.h File Reference
    +
    +
    + +

    Stack container. +More...

    +

    Detailed Description

    +

    Stack container.

    +

    This file declare PIStack

    +
    +
    + + + + diff --git a/pip/doc/html/pistatemachine_8h.html b/pip/doc/html/pistatemachine_8h.html new file mode 100644 index 0000000..48e531a --- /dev/null +++ b/pip/doc/html/pistatemachine_8h.html @@ -0,0 +1,143 @@ + + + + + + +PIP: src/core/pistatemachine.h File Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    + +
    +
    pistatemachine.h File Reference
    +
    +
    + +

    Base class for custom state machine. +More...

    + + + + + + + + + + + +

    +Classes

    class  PIStateMachine< Type >
     Base class for custom state machine. More...
     
    struct  PIStateMachine< Type >::Rule
     Rule of transition between states of machine More...
     
    struct  PIStateMachine< Type >::State
     State of machine More...
     
    +

    Detailed Description

    +

    Base class for custom state machine.

    +
    +
    + + + + diff --git a/pip/doc/html/pistring_8h.html b/pip/doc/html/pistring_8h.html new file mode 100644 index 0000000..66815ca --- /dev/null +++ b/pip/doc/html/pistring_8h.html @@ -0,0 +1,201 @@ + + + + + + +PIP: src/core/pistring.h File Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    + +
    +
    pistring.h File Reference
    +
    +
    + +

    String. +More...

    + + + + + + + + +

    +Classes

    class  PIString
     String class. More...
     
    class  PIStringList
     Strings array class. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    +std::ostream & operator<< (std::ostream &s, const PIString &v)
     Output operator to std::ostream (cout)
     
    +std::istream & operator>> (std::istream &s, PIString &v)
     Input operator from std::istream (cin)
     
    +PICout operator<< (PICout s, const PIString &v)
     Output operator to PICout.
     
    +PIByteArrayoperator<< (PIByteArray &s, const PIString &v)
     Output operator to PIByteArray.
     
    +PIByteArrayoperator>> (PIByteArray &s, PIString &v)
     Input operator from PIByteArray.
     
    +PIString operator+ (const PIString &str, const PIString &f)
     Return concatenated string.
     
    +PIString operator+ (const PIString &f, const char *str)
     Return concatenated string.
     
    +PIString operator+ (const PIString &f, const string &str)
     Return concatenated string.
     
    +PIString operator+ (const char *str, const PIString &f)
     Return concatenated string.
     
    +PIString operator+ (const string &str, const PIString &f)
     Return concatenated string.
     
    +PIByteArrayoperator<< (PIByteArray &s, const PIStringList &v)
     Output operator to PIByteArray.
     
    +PIByteArrayoperator>> (PIByteArray &s, PIStringList &v)
     Input operator from PIByteArray.
     
    +std::ostream & operator<< (std::ostream &s, const PIStringList &v)
     Output operator to std::ostream (cout)
     
    +PICout operator<< (PICout s, const PIStringList &v)
     Output operator to PICout.
     
    +

    Detailed Description

    +

    String.

    +

    This file declare string and string list classes

    +
    +
    + + + + diff --git a/pip/doc/html/pistring_8h.js b/pip/doc/html/pistring_8h.js new file mode 100644 index 0000000..25032b3 --- /dev/null +++ b/pip/doc/html/pistring_8h.js @@ -0,0 +1,19 @@ +var pistring_8h = +[ + [ "PIString", "class_p_i_string.html", "class_p_i_string" ], + [ "PIStringList", "class_p_i_string_list.html", "class_p_i_string_list" ], + [ "operator<<", "pistring_8h.html#af86ed54c2bd0e7590db4ca3b6845f50f", null ], + [ "operator>>", "pistring_8h.html#a92a7c6060c9a5cea05fc97d6faea53a2", null ], + [ "operator<<", "pistring_8h.html#ab789440b8ebd894dfd628161254f057a", null ], + [ "operator<<", "pistring_8h.html#adaf9cbdf9ef8f318a08ff773a54a3d6c", null ], + [ "operator>>", "pistring_8h.html#a6cd37806e2577611e4a22dc2031fc166", null ], + [ "operator+", "pistring_8h.html#ab542a906081915a23c5e71e4d272be61", null ], + [ "operator+", "pistring_8h.html#a3c9fd9112bf9bf8add42aa4a1232f02c", null ], + [ "operator+", "pistring_8h.html#a7feead55bd8c6f9c91da7575870bbb4a", null ], + [ "operator+", "pistring_8h.html#ac6c5f17dfacd8deb8db814c69390667e", null ], + [ "operator+", "pistring_8h.html#acb64f0a2a7b71219db76b5d5f498515c", null ], + [ "operator<<", "pistring_8h.html#a08f09ee06ada0b3aab326f1c888daf4c", null ], + [ "operator>>", "pistring_8h.html#a410bed597b49992e265e0941feca5cb8", null ], + [ "operator<<", "pistring_8h.html#ab2ace08e93a4de6b184b29bf3d690467", null ], + [ "operator<<", "pistring_8h.html#a169bfa237f50a26895592fe63e2bccf1", null ] +]; \ No newline at end of file diff --git a/pip/doc/html/pithread_8h.html b/pip/doc/html/pithread_8h.html new file mode 100644 index 0000000..e9a5c25 --- /dev/null +++ b/pip/doc/html/pithread_8h.html @@ -0,0 +1,138 @@ + + + + + + +PIP: src/thread/pithread.h File Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    + +
    +
    pithread.h File Reference
    +
    +
    + +

    Thread. +More...

    + + + + + +

    +Classes

    class  PIThread
     Thread class. More...
     
    +

    Detailed Description

    +

    Thread.

    +

    This file declare thread class and some wait functions

    +
    +
    + + + + diff --git a/pip/doc/html/pithread_8h.js b/pip/doc/html/pithread_8h.js new file mode 100644 index 0000000..a2a390e --- /dev/null +++ b/pip/doc/html/pithread_8h.js @@ -0,0 +1,4 @@ +var pithread_8h = +[ + [ "PIThread", "class_p_i_thread.html", "class_p_i_thread" ] +]; \ No newline at end of file diff --git a/pip/doc/html/pitime_8h.html b/pip/doc/html/pitime_8h.html new file mode 100644 index 0000000..a822f3c --- /dev/null +++ b/pip/doc/html/pitime_8h.html @@ -0,0 +1,272 @@ + + + + + + +PIP: src/core/pitime.h File Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    + +
    +
    pitime.h File Reference
    +
    +
    + +

    Time structs. +More...

    + + + + + + + + +

    +Classes

    class  PISystemTime
     System time. More...
     
    class  PITimeMeasurer
     Time measurements. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    +void msleep (int msecs)
     Sleep for "msecs" milliseconds.
     
    void piUSleep (int usecs)
     Precise sleep for "usecs" microseconds. More...
     
    void piMSleep (double msecs)
     Precise sleep for "msecs" milliseconds. More...
     
    void piSleep (double secs)
     Precise sleep for "secs" seconds. More...
     
    +PICout operator<< (PICout s, const PISystemTime &v)
     Output operator to PICout.
     
    +PIByteArrayoperator<< (PIByteArray &s, const PISystemTime &v)
     Output operator to PIByteArray.
     
    +PIByteArrayoperator>> (PIByteArray &s, PISystemTime &v)
     Input operator from PIByteArray.
     
    PISystemTime currentSystemTime ()
     Returns current system time. More...
     
    +

    Detailed Description

    +

    Time structs.

    +

    Function Documentation

    + +
    +
    + + + + + + + + +
    void piUSleep (int usecs)
    +
    + +

    Precise sleep for "usecs" microseconds.

    +

    This function consider "usleep" offset on QNX/Linux/Mac, which is calculated with pip_sys_test program. If there is correct offset value in system config, this function wait exactly "usecs" microseconds.

    + +
    +
    + +
    +
    + + + + + +
    + + + + + + + + +
    void piMSleep (double msecs)
    +
    +inline
    +
    + +

    Precise sleep for "msecs" milliseconds.

    +

    This function exec piUSleep (msecs * 1000).

    + +
    +
    + +
    +
    + + + + + +
    + + + + + + + + +
    void piSleep (double secs)
    +
    +inline
    +
    + +

    Precise sleep for "secs" seconds.

    +

    This function exec piUSleep (msecs * 1000000).

    + +
    +
    + +
    +
    + + + + + +
    + + + + + + + +
    PISystemTime currentSystemTime ()
    +
    +inline
    +
    + +

    Returns current system time.

    +
    Deprecated:
    Use PISystemTime::current() instead
    + +
    +
    +
    +
    + + + + diff --git a/pip/doc/html/pitime_8h.js b/pip/doc/html/pitime_8h.js new file mode 100644 index 0000000..dff0312 --- /dev/null +++ b/pip/doc/html/pitime_8h.js @@ -0,0 +1,13 @@ +var pitime_8h = +[ + [ "PISystemTime", "class_p_i_system_time.html", "class_p_i_system_time" ], + [ "PITimeMeasurer", "class_p_i_time_measurer.html", "class_p_i_time_measurer" ], + [ "msleep", "pitime_8h.html#a242b1482cf8e5f7a8c5d087a2d2b5e3b", null ], + [ "piUSleep", "pitime_8h.html#a905b80a2477dd23f7b2cade100c64385", null ], + [ "piMSleep", "pitime_8h.html#a10862d1267284ae224b51ad95f90c931", null ], + [ "piSleep", "pitime_8h.html#a6c5fbd8c6c0e339600675ce646bb635f", null ], + [ "operator<<", "pitime_8h.html#a6d0138248acb706f616018e64bbc64c6", null ], + [ "operator<<", "pitime_8h.html#a43f469a88331d5bf809f97f77a12e019", null ], + [ "operator>>", "pitime_8h.html#ad563e018cb30fbced03966997b2fc65a", null ], + [ "currentSystemTime", "pitime_8h.html#abcad1d713a692c67abf44720aff77abc", null ] +]; \ No newline at end of file diff --git a/pip/doc/html/pitimer_8h.html b/pip/doc/html/pitimer_8h.html new file mode 100644 index 0000000..cc472a3 --- /dev/null +++ b/pip/doc/html/pitimer_8h.html @@ -0,0 +1,137 @@ + + + + + + +PIP: src/thread/pitimer.h File Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    + +
    +
    pitimer.h File Reference
    +
    +
    + +

    Timer. +More...

    + + + + + +

    +Classes

    class  PITimer
     Timer. More...
     
    +

    Detailed Description

    +

    Timer.

    +
    +
    + + + + diff --git a/pip/doc/html/pitimer_8h.js b/pip/doc/html/pitimer_8h.js new file mode 100644 index 0000000..79cd39a --- /dev/null +++ b/pip/doc/html/pitimer_8h.js @@ -0,0 +1,4 @@ +var pitimer_8h = +[ + [ "PITimer", "class_p_i_timer.html", "class_p_i_timer" ] +]; \ No newline at end of file diff --git a/pip/doc/html/piusb_8h.html b/pip/doc/html/piusb_8h.html new file mode 100644 index 0000000..27b5bcd --- /dev/null +++ b/pip/doc/html/piusb_8h.html @@ -0,0 +1,128 @@ + + + + + + +PIP: src/io/piusb.h File Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    piusb.h File Reference
    +
    +
    + +

    USB device. +More...

    +

    Detailed Description

    +

    USB device.

    +
    +
    + + + + diff --git a/pip/doc/html/pivariant_8h.html b/pip/doc/html/pivariant_8h.html new file mode 100644 index 0000000..14fd0a4 --- /dev/null +++ b/pip/doc/html/pivariant_8h.html @@ -0,0 +1,138 @@ + + + + + + +PIP: src/core/pivariant.h File Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    + +
    +
    pivariant.h File Reference
    +
    +
    + +

    Variant type. +More...

    + + + + + +

    +Classes

    class  PIVariant
     Variant type. More...
     
    +

    Detailed Description

    +

    Variant type.

    +

    This file declares PIVariant

    +
    +
    + + + + diff --git a/pip/doc/html/pivariant_8h.js b/pip/doc/html/pivariant_8h.js new file mode 100644 index 0000000..3ebe7de --- /dev/null +++ b/pip/doc/html/pivariant_8h.js @@ -0,0 +1,4 @@ +var pivariant_8h = +[ + [ "PIVariant", "class_p_i_variant.html", "class_p_i_variant" ] +]; \ No newline at end of file diff --git a/pip/doc/html/pivector_8h.html b/pip/doc/html/pivector_8h.html new file mode 100644 index 0000000..23f2262 --- /dev/null +++ b/pip/doc/html/pivector_8h.html @@ -0,0 +1,138 @@ + + + + + + +PIP: src/containers/pivector.h File Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    + +
    +
    pivector.h File Reference
    +
    +
    + +

    Dynamic array of any type. +More...

    + + + + + +

    +Classes

    class  PIVector< T >
     Dynamic array of any type. More...
     
    +

    Detailed Description

    +

    Dynamic array of any type.

    +

    This file declares PIVector

    +
    +
    + + + + diff --git a/pip/doc/html/pivector_8h.js b/pip/doc/html/pivector_8h.js new file mode 100644 index 0000000..98025cb --- /dev/null +++ b/pip/doc/html/pivector_8h.js @@ -0,0 +1,4 @@ +var pivector_8h = +[ + [ "PIVector", "class_p_i_vector.html", "class_p_i_vector" ] +]; \ No newline at end of file diff --git a/pip/doc/html/resize.js b/pip/doc/html/resize.js new file mode 100644 index 0000000..304fcb6 --- /dev/null +++ b/pip/doc/html/resize.js @@ -0,0 +1,97 @@ +var cookie_namespace = 'doxygen'; +var sidenav,navtree,content,header; + +function readCookie(cookie) +{ + var myCookie = cookie_namespace+"_"+cookie+"="; + if (document.cookie) + { + var index = document.cookie.indexOf(myCookie); + if (index != -1) + { + var valStart = index + myCookie.length; + var valEnd = document.cookie.indexOf(";", valStart); + if (valEnd == -1) + { + valEnd = document.cookie.length; + } + var val = document.cookie.substring(valStart, valEnd); + return val; + } + } + return 0; +} + +function writeCookie(cookie, val, expiration) +{ + if (val==undefined) return; + if (expiration == null) + { + var date = new Date(); + date.setTime(date.getTime()+(10*365*24*60*60*1000)); // default expiration is one week + expiration = date.toGMTString(); + } + document.cookie = cookie_namespace + "_" + cookie + "=" + val + "; expires=" + expiration+"; path=/"; +} + +function resizeWidth() +{ + var windowWidth = $(window).width() + "px"; + var sidenavWidth = $(sidenav).outerWidth(); + content.css({marginLeft:parseInt(sidenavWidth)+"px"}); + writeCookie('width',sidenavWidth, null); +} + +function restoreWidth(navWidth) +{ + var windowWidth = $(window).width() + "px"; + content.css({marginLeft:parseInt(navWidth)+6+"px"}); + sidenav.css({width:navWidth + "px"}); +} + +function resizeHeight() +{ + var headerHeight = header.outerHeight(); + var footerHeight = footer.outerHeight(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + content.css({height:windowHeight + "px"}); + navtree.css({height:windowHeight + "px"}); + sidenav.css({height:windowHeight + "px",top: headerHeight+"px"}); +} + +function initResizable() +{ + header = $("#top"); + sidenav = $("#side-nav"); + content = $("#doc-content"); + navtree = $("#nav-tree"); + footer = $("#nav-path"); + $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } }); + $(window).resize(function() { resizeHeight(); }); + var width = readCookie('width'); + if (width) { restoreWidth(width); } else { resizeWidth(); } + resizeHeight(); + var url = location.href; + var i=url.indexOf("#"); + if (i>=0) window.location.hash=url.substr(i); + var _preventDefault = function(evt) { evt.preventDefault(); }; + $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); + $(document).bind('touchmove',function(e){ + var device = navigator.userAgent.toLowerCase(); + var ios = device.match(/(iphone|ipod|ipad)/); + if (ios) { + try { + var target = e.target; + while (target) { + if ($(target).css('-webkit-overflow-scrolling')=='touch') return; + target = target.parentNode; + } + e.preventDefault(); + } catch(err) { + e.preventDefault(); + } + } + }); +} + + diff --git a/pip/doc/html/search/all_0.html b/pip/doc/html/search/all_0.html new file mode 100644 index 0000000..6f4ddc3 --- /dev/null +++ b/pip/doc/html/search/all_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/all_0.js b/pip/doc/html/search/all_0.js new file mode 100644 index 0000000..f2ebdba --- /dev/null +++ b/pip/doc/html/search/all_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['_5f_5fpicontainers_5fsimple_5ftype_5f_5f',['__PICONTAINERS_SIMPLE_TYPE__',['../pichar_8h.html#a98c24b190dd598cdebc2e1c884631b13',1,'pichar.h']]] +]; diff --git a/pip/doc/html/search/all_1.html b/pip/doc/html/search/all_1.html new file mode 100644 index 0000000..fce68bd --- /dev/null +++ b/pip/doc/html/search/all_1.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/all_1.js b/pip/doc/html/search/all_1.js new file mode 100644 index 0000000..de15219 --- /dev/null +++ b/pip/doc/html/search/all_1.js @@ -0,0 +1,42 @@ +var searchData= +[ + ['abs',['abs',['../class_p_i_system_time.html#a6408d67d0ebe7fc41d8d91f8b886eef6',1,'PISystemTime']]], + ['add_5fnew_5fto_5fcollection',['ADD_NEW_TO_COLLECTION',['../class_p_i_collection.html#a78cc4937360f5e286cdd8baf403edfec',1,'PICollection']]], + ['add_5fto_5fcollection',['ADD_TO_COLLECTION',['../class_p_i_collection.html#a450e8ac720c8b0f6223ad2bf42f83ae2',1,'PICollection']]], + ['addall',['AddAll',['../namespace_p_i_cout_manipulators.html#a98e765b109cfa5b09ec3b111c449ac87a51c3de43daff16e88090f6ccc3eb30b2',1,'PICoutManipulators']]], + ['addargument',['addArgument',['../class_p_i_c_l_i.html#a6091825b4eb1e3e8e336ae9524fa8331',1,'PICLI::addArgument(const PIString &name, bool value=false)'],['../class_p_i_c_l_i.html#ab378101cdb1517da4c430d3b58a3ed79',1,'PICLI::addArgument(const PIString &name, const PIChar &shortKey, bool value=false)'],['../class_p_i_c_l_i.html#a787fd46efaa3f64d57398782e7deb612',1,'PICLI::addArgument(const PIString &name, const char *shortKey, bool value=false)'],['../class_p_i_c_l_i.html#a1335cd90d383e1cdeeb6e6b729d18244',1,'PICLI::addArgument(const PIString &name, const PIChar &shortKey, const PIString &fullKey, bool value=false)'],['../class_p_i_c_l_i.html#a9a69f3dd05852ebdbddb0543ca912faa',1,'PICLI::addArgument(const PIString &name, const char *shortKey, const PIString &fullKey, bool value=false)']]], + ['addbitvariable',['addBitVariable',['../class_p_i_console.html#afafc641d9512134155c491145e8db6dd',1,'PIConsole']]], + ['addchannel',['addChannel',['../class_p_i_connection.html#ac633cbd86559b6c5f39c2de7d02d3c6f',1,'PIConnection::addChannel(const PIString &name_from, const PIString &name_to)'],['../class_p_i_connection.html#a0345dc20954d0cde05504e23b5db9e94',1,'PIConnection::addChannel(const PIString &name_from, const PIIODevice *dev_to)'],['../class_p_i_connection.html#aeee8312bb71cd0417e7079f67f2849e8',1,'PIConnection::addChannel(const PIIODevice *dev_from, const PIString &name_to)'],['../class_p_i_connection.html#a72e9bed935739be4aff88c08df5af73e',1,'PIConnection::addChannel(const PIIODevice *dev_from, const PIIODevice *dev_to)']]], + ['addcondition',['addCondition',['../struct_p_i_state_machine_1_1_rule.html#abfb64b05b1288d48756a6913f7518650',1,'PIStateMachine::Rule']]], + ['addcustomstatus',['addCustomStatus',['../class_p_i_console.html#adec15a8f25d9236622f8868980cd0772',1,'PIConsole']]], + ['adddelimiter',['addDelimiter',['../class_p_i_timer.html#ace072dbf3b4ddbd609b6acf4e058d291',1,'PITimer']]], + ['adddevice',['addDevice',['../class_p_i_connection.html#abef3fbce379e0f8cf01b3c12c1e6b297',1,'PIConnection']]], + ['addemptyline',['addEmptyLine',['../class_p_i_console.html#affc3de9ad31867e4e8002e77c96e8553',1,'PIConsole']]], + ['addfilter',['addFilter',['../class_p_i_connection.html#a1105a544b2018fbee5ccf8bf026991c1',1,'PIConnection::addFilter(const PIString &name, const PIString &full_path_name, PIPacketExtractor::SplitMode mode=PIPacketExtractor::None)'],['../class_p_i_connection.html#aee76c16fda7f9e6f09748caa1e512487',1,'PIConnection::addFilter(const PIString &name, const PIIODevice *dev, PIPacketExtractor::SplitMode mode=PIPacketExtractor::None)']]], + ['addmicroseconds',['addMicroseconds',['../class_p_i_system_time.html#ab7241ee8399e898db3912b6525128ff9',1,'PISystemTime']]], + ['addmilliseconds',['addMilliseconds',['../class_p_i_system_time.html#acd6dbda302fd70a2d27e2bd3af7ae29c',1,'PISystemTime']]], + ['addnanoseconds',['addNanoseconds',['../class_p_i_system_time.html#a8b53a1bf0e40a595b26115369bfb374d',1,'PISystemTime']]], + ['addnewline',['AddNewLine',['../namespace_p_i_cout_manipulators.html#a98e765b109cfa5b09ec3b111c449ac87a14809fb1b24466983535797f6ed5971c',1,'PICoutManipulators']]], + ['addnone',['AddNone',['../namespace_p_i_cout_manipulators.html#a98e765b109cfa5b09ec3b111c449ac87a9744aa2b16aabc01f70ef53e8a7db7f8',1,'PICoutManipulators']]], + ['addquotes',['AddQuotes',['../namespace_p_i_cout_manipulators.html#a98e765b109cfa5b09ec3b111c449ac87a383bc0cbaca2fb5d5cd98a1e9c3f59ca',1,'PICoutManipulators']]], + ['address',['address',['../struct_p_i_ethernet_1_1_interface.html#aa753498f5a63938b9218b3ccbd8a01bc',1,'PIEthernet::Interface']]], + ['addrule',['addRule',['../class_p_i_state_machine.html#aee180e7f75ece9aef1c3d8a94095ed21',1,'PIStateMachine::addRule(Type from, Type to, const PIString &condition, Handler handler=0, bool autoTransition=false, bool resetAllConditions=false)'],['../class_p_i_state_machine.html#a52703fc2cac4578a7a70b57aeb8742fc',1,'PIStateMachine::addRule(Type from, Type to, Handler handler, bool autoTransition=false, bool resetAllConditions=false)'],['../class_p_i_state_machine.html#a2bda5abc394ca0d479faf01050c5b843',1,'PIStateMachine::addRule(Type from, Type to, const PIStringList &conditions=PIStringList(), Handler handler=0, bool autoTransition=false, bool resetAllConditions=false)'],['../class_p_i_state_machine.html#a60f175d31774c0a01689ebe4a463dd85',1,'PIStateMachine::addRule(const Rule &rule)']]], + ['addseconds',['addSeconds',['../class_p_i_system_time.html#a5e98e183f16631bdec2c019356b2679b',1,'PISystemTime']]], + ['addsender',['addSender',['../class_p_i_connection.html#a51c44629c4a2eb7194bfabf16e8c1f5a',1,'PIConnection::addSender(const PIString &name, const PIString &full_path, float frequency, bool start=false)'],['../class_p_i_connection.html#adbfdd3671eb66e4967312b411a757697',1,'PIConnection::addSender(const PIString &name, const PIIODevice *dev, float frequency, bool start=false)']]], + ['addspaces',['AddSpaces',['../namespace_p_i_cout_manipulators.html#a98e765b109cfa5b09ec3b111c449ac87ae5fee52fe6ad0dae9a5b953ff3e40152',1,'PICoutManipulators']]], + ['addstate',['addState',['../class_p_i_state_machine.html#ac26f6300f7545b0182e3a52805b04cd6',1,'PIStateMachine']]], + ['addstring',['addString',['../class_p_i_console.html#a8274edea626b4281fe7de309ee8d1b38',1,'PIConsole']]], + ['addtab',['addTab',['../class_p_i_console.html#a119860d9253d00a3fe815bc124076577',1,'PIConsole']]], + ['addvariable',['addVariable',['../class_p_i_console.html#a9ae57b8ab5c4f8538633bf8dc8a15e67',1,'PIConsole::addVariable(const PIString &name, const PIString *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)'],['../class_p_i_console.html#a6389f65b8835a38a60bf5ee2f2a43712',1,'PIConsole::addVariable(const PIString &name, const char *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)'],['../class_p_i_console.html#a3b06530b893c79d11cf875419a834cd0',1,'PIConsole::addVariable(const PIString &name, const bool *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)'],['../class_p_i_console.html#ac53481fa1109e55fc1a6b00c9d963f90',1,'PIConsole::addVariable(const PIString &name, const short *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)'],['../class_p_i_console.html#aee3ced19ce3abda81a1afd1164a1561d',1,'PIConsole::addVariable(const PIString &name, const int *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)'],['../class_p_i_console.html#a27b939e27bc97c10eab59411de9fb526',1,'PIConsole::addVariable(const PIString &name, const long *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)'],['../class_p_i_console.html#a7d7ff34b90be97a0b9cab63419ee26c2',1,'PIConsole::addVariable(const PIString &name, const llong *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)'],['../class_p_i_console.html#afa2c5fbf172ba93197b9b2f5c6653d71',1,'PIConsole::addVariable(const PIString &name, const uchar *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)'],['../class_p_i_console.html#a2326d0f1a333927d2754830cea35a4ac',1,'PIConsole::addVariable(const PIString &name, const ushort *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)'],['../class_p_i_console.html#a5206ecd0cb4d5c17d2f8cece88cbee4e',1,'PIConsole::addVariable(const PIString &name, const uint *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)'],['../class_p_i_console.html#aed85986ef4d195ec22641fc723bc7422',1,'PIConsole::addVariable(const PIString &name, const ulong *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)'],['../class_p_i_console.html#a4a5ef27f2e7dbc0b3a657f543e21e580',1,'PIConsole::addVariable(const PIString &name, const ullong *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)'],['../class_p_i_console.html#aac91f944400e09e1d07c5d6862691078',1,'PIConsole::addVariable(const PIString &name, const float *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)'],['../class_p_i_console.html#ac92363d6e3aff60b8b27215fce4f7cbb',1,'PIConsole::addVariable(const PIString &name, const double *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)'],['../class_p_i_console.html#acf8668140c47e5ee0ac2fc100ebcaf46',1,'PIConsole::addVariable(const PIString &name, const PISystemTime *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)'],['../class_p_i_console.html#a8a71fccd3ad2e19b13045ef6e90d9546',1,'PIConsole::addVariable(const PIString &name, const PIProtocol *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)'],['../class_p_i_console.html#a36d5583199e73951f650f58dfc9bc0f3',1,'PIConsole::addVariable(const PIString &name, const PIDiagnostics *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)']]], + ['alignment',['Alignment',['../class_p_i_console.html#a9185c02e667ead89d506730e6fdc1f5d',1,'PIConsole']]], + ['alladdresses',['allAddresses',['../class_p_i_ethernet.html#a91b83d7459a4265bca9362d531dbf773',1,'PIEthernet']]], + ['allconnections',['allConnections',['../class_p_i_connection.html#a0a789c43d56e1949128665366ad764ce',1,'PIConnection']]], + ['alldevices',['allDevices',['../class_p_i_connection.html#a6f84704a2ea8d380444f91104da91ffe',1,'PIConnection']]], + ['allleaves',['allLeaves',['../class_p_i_config.html#a52ba17ebcb28248b1ec4fcedd9deba4b',1,'PIConfig']]], + ['alltree',['allTree',['../class_p_i_config.html#a16f81586debe78f0ad886aac2c5d20f0',1,'PIConfig']]], + ['android',['ANDROID',['../piincludes_8h.html#a84b6d92b7538d9eb6d3cc527c0450558',1,'piincludes.h']]], + ['append',['append',['../class_p_i_byte_array.html#a3f59d6f9e5aa117ebce88de767bdf6a0',1,'PIByteArray::append(const void *data_, int size_)'],['../class_p_i_byte_array.html#a42ccaa717c6341aaf47a3a811c8c6498',1,'PIByteArray::append(const PIByteArray &data_)'],['../class_p_i_string.html#afbccf232307f332e25c7ce577ce58146',1,'PIString::append()']]], + ['autotransition',['autoTransition',['../struct_p_i_state_machine_1_1_rule.html#ab1f2afcdaa5ff5308769e5b10930fb73',1,'PIStateMachine::Rule']]], + ['average',['Average',['../class_p_i_diagnostics.html#aabf8f59b49ab62435e220106f204712fa72a5c3ff8a8ae3e43f818db82d730b55',1,'PIDiagnostics::Average()'],['../class_p_i_protocol.html#aef1f5fa8173bcc220b07f084155ec868a0f731aa8807989815ed9936e1bb35147',1,'PIProtocol::Average()']]], + ['advanced_20using',['Advanced using',['../using_advanced.html',1,'']]] +]; diff --git a/pip/doc/html/search/all_10.html b/pip/doc/html/search/all_10.html new file mode 100644 index 0000000..a960bb8 --- /dev/null +++ b/pip/doc/html/search/all_10.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/all_10.js b/pip/doc/html/search/all_10.js new file mode 100644 index 0000000..9caa4ac --- /dev/null +++ b/pip/doc/html/search/all_10.js @@ -0,0 +1,212 @@ +var searchData= +[ + ['packetreceived',['packetReceived',['../class_p_i_connection.html#a3883e8b65fccb1b85c810c690bb820c6',1,'PIConnection::packetReceived()'],['../class_p_i_packet_extractor.html#a008181ba36bc58a7dcc137f49fcad261',1,'PIPacketExtractor::packetReceived()']]], + ['packetreceivedevent',['packetReceivedEvent',['../class_p_i_connection.html#a0f25a2e5625a1c33a3cd4d494ea3b9da',1,'PIConnection']]], + ['packetsize',['packetSize',['../class_p_i_packet_extractor.html#a033ac83733f23c61a65ad9c810123219',1,'PIPacketExtractor']]], + ['parameters',['Parameters',['../class_p_i_ethernet.html#ae03a64ce3d7d8a1e95b2212ab2497f55',1,'PIEthernet::Parameters()'],['../class_p_i_ethernet.html#a69d52300d09db298d90ebcf02b1006d9',1,'PIEthernet::parameters() const ']]], + ['parent',['parent',['../class_p_i_config_1_1_entry.html#a4127afcde1fe791a46bbd31ec111b86d',1,'PIConfig::Entry']]], + ['payloadsize',['payloadSize',['../class_p_i_packet_extractor.html#af22580e67cd2601575a7834a4c9b414c',1,'PIPacketExtractor']]], + ['performcondition',['performCondition',['../class_p_i_state_machine.html#a0c51b3d6ffd0a96ae5b24a2c06ae20e3',1,'PIStateMachine']]], + ['performconditions',['performConditions',['../class_p_i_state_machine.html#a0c2a680c0a10c9440bbe89dccc55ee0c',1,'PIStateMachine']]], + ['piabs',['piAbs',['../piincludes_8h.html#a69a3e3d862d6b51feaca8d27686dd876',1,'piincludes.h']]], + ['pibinarylog',['PIBinaryLog',['../class_p_i_binary_log.html',1,'']]], + ['pibinarylog_2eh',['pibinarylog.h',['../pibinarylog_8h.html',1,'']]], + ['pibreak',['piBreak',['../picontainers_8h.html#aa315501e5bd9c279ad09fd39dccdea4d',1,'picontainers.h']]], + ['pibytearray',['PIByteArray',['../class_p_i_byte_array.html',1,'PIByteArray'],['../class_p_i_byte_array.html#aaff8154b09dfd8f6b42a2ffccf77a417',1,'PIByteArray::PIByteArray()'],['../class_p_i_byte_array.html#a77c41715c48c52ca6fde95e49c398bff',1,'PIByteArray::PIByteArray(const uint size)'],['../class_p_i_byte_array.html#a53393736cdd642d3fb0f68cc762eaf10',1,'PIByteArray::PIByteArray(const void *data, const uint size)']]], + ['pibytearray_2eh',['pibytearray.h',['../pibytearray_8h.html',1,'']]], + ['piceil',['piCeil',['../piincludes_8h.html#a4956481d8bee1a43e62ce8b1489b72b0',1,'piincludes.h']]], + ['pichar',['PIChar',['../class_p_i_char.html',1,'PIChar'],['../class_p_i_char.html#a9c13f6b3a242d13924b64dbd3deec204',1,'PIChar::PIChar(const char c)'],['../class_p_i_char.html#ac11bc7f521d447ef402a9cb9ef05707f',1,'PIChar::PIChar(const short c)'],['../class_p_i_char.html#a272e1665fe42d557cad91ed3dc416a29',1,'PIChar::PIChar(const int c)'],['../class_p_i_char.html#a610057fd1840516fce1c5fb0955535b9',1,'PIChar::PIChar(const uchar c)'],['../class_p_i_char.html#a2dcff5b1473cc887cff45cb31bb132f5',1,'PIChar::PIChar(const ushort c)'],['../class_p_i_char.html#ae684b56acf78dff045b74bfdd91b0540',1,'PIChar::PIChar(const uint c=0)'],['../class_p_i_char.html#a5507bf7ad8fe1f80ace5f56e3e694ddd',1,'PIChar::PIChar(const char *c)']]], + ['pichar_2eh',['pichar.h',['../pichar_8h.html',1,'']]], + ['piclamp',['piClamp',['../piincludes_8h.html#a9269f3c0357a9c7e33c8c5f346c47309',1,'piincludes.h']]], + ['picli',['PICLI',['../class_p_i_c_l_i.html',1,'PICLI'],['../class_p_i_c_l_i.html#abc57c0e1bb06e1af2087e1ff158039ac',1,'PICLI::PICLI()']]], + ['picli_2eh',['picli.h',['../picli_8h.html',1,'']]], + ['picodeinfo_2eh',['picodeinfo.h',['../picodeinfo_8h.html',1,'']]], + ['picodeparser_2eh',['picodeparser.h',['../picodeparser_8h.html',1,'']]], + ['picollection',['PICollection',['../class_p_i_collection.html',1,'']]], + ['picollection_2eh',['picollection.h',['../picollection_8h.html',1,'']]], + ['piconfig',['PIConfig',['../class_p_i_config.html',1,'PIConfig'],['../class_p_i_config.html#a283394a8822215eaf98a828df32ae72d',1,'PIConfig::PIConfig()']]], + ['piconfig_2eh',['piconfig.h',['../piconfig_8h.html',1,'']]], + ['piconnection',['PIConnection',['../class_p_i_connection.html',1,'PIConnection'],['../class_p_i_connection.html#a73a93e8330a2852cf1c76c0fa33b8eff',1,'PIConnection::PIConnection()'],['../class_p_i_connection.html#ad9bf5c0c48488d2576b6545ecb75e22a',1,'PIConnection::PIConnection(const PIString &name)'],['../class_p_i_connection.html#a245a605ddceaf33c0b2a9e66378c0c98',1,'PIConnection::PIConnection(const PIString &config, const PIString &name)']]], + ['piconnection_2eh',['piconnection.h',['../piconnection_8h.html',1,'']]], + ['piconsole',['PIConsole',['../class_p_i_console.html',1,'PIConsole'],['../class_p_i_console.html#ab37989414cad3b54ddd8ab8d2879e386',1,'PIConsole::PIConsole()']]], + ['piconsole_2eh',['piconsole.h',['../piconsole_8h.html',1,'']]], + ['picontainers_2eh',['picontainers.h',['../picontainers_8h.html',1,'']]], + ['picout',['PICout',['../class_p_i_cout.html',1,'PICout'],['../class_p_i_cout.html#afa5f5b5b95a383a52f286fa80173a77c',1,'PICout::PICout()'],['../piincludes_8h.html#ad21862cbba89aead064fbef4c825030e',1,'piCout(): piincludes.h']]], + ['picoutaction',['PICoutAction',['../namespace_p_i_cout_manipulators.html#a38d041a4e2de4ca6af939837475e9387',1,'PICoutManipulators']]], + ['picoutcontrol',['PICoutControl',['../namespace_p_i_cout_manipulators.html#a98e765b109cfa5b09ec3b111c449ac87',1,'PICoutManipulators']]], + ['picoutformat',['PICoutFormat',['../namespace_p_i_cout_manipulators.html#a4d8fa322c1a8b3fa285759056aae1b2a',1,'PICoutManipulators']]], + ['picoutmanipulators',['PICoutManipulators',['../namespace_p_i_cout_manipulators.html',1,'']]], + ['picoutobj',['piCoutObj',['../class_p_i_object.html#a722b67a967e55918f6921de66ecffce9',1,'PIObject']]], + ['picoutspecialchar',['PICoutSpecialChar',['../namespace_p_i_cout_manipulators.html#a66678520ac7701c016e3e90e17a7dfa2',1,'PICoutManipulators']]], + ['picrc_2eh',['picrc.h',['../picrc_8h.html',1,'']]], + ['pidebug',['piDebug',['../piincludes_8h.html#a4f24177400b625bdd603032fa6e2e14a',1,'piincludes.cpp']]], + ['pideque_2eh',['pideque.h',['../pideque_8h.html',1,'']]], + ['pidiagnostics',['PIDiagnostics',['../class_p_i_diagnostics.html',1,'PIDiagnostics'],['../class_p_i_diagnostics.html#a0ecb4332d5583be9a0c626c6ad8fc92a',1,'PIDiagnostics::PIDiagnostics()']]], + ['pidiagnostics_2eh',['pidiagnostics.h',['../pidiagnostics_8h.html',1,'']]], + ['pidisconnect',['piDisconnect',['../class_p_i_object.html#af4581f822cb17c489e34da1abca2764a',1,'PIObject::piDisconnect(PIObject *src, const PIString &sig)'],['../class_p_i_object.html#a1d556c03cc2ba29fd2515abc470e3393',1,'PIObject::piDisconnect(PIObject *src)']]], + ['piethernet',['PIEthernet',['../class_p_i_ethernet.html',1,'PIEthernet'],['../class_p_i_ethernet.html#a6a5a47b716613af3c224d1a6909f0751',1,'PIEthernet::PIEthernet()'],['../class_p_i_ethernet.html#aa47c8e516e88c2cb479bd62934bf2660',1,'PIEthernet::PIEthernet(Type type, const PIString &ip_port=PIString(), const PIFlags< Parameters > params=0)']]], + ['piethernet_2eh',['piethernet.h',['../piethernet_8h.html',1,'']]], + ['pievaluator',['PIEvaluator',['../class_p_i_evaluator.html',1,'PIEvaluator'],['../class_p_i_evaluator.html#a4fe9e776a1db6cc5b55665304764cf20',1,'PIEvaluator::PIEvaluator()']]], + ['pievaluator_2eh',['pievaluator.h',['../pievaluator_8h.html',1,'']]], + ['pifile',['PIFile',['../class_p_i_file.html',1,'']]], + ['pifile_2eh',['pifile.h',['../pifile_8h.html',1,'']]], + ['piflags',['PIFlags',['../class_p_i_flags.html',1,'PIFlags< Enum >'],['../class_p_i_flags.html#a99d2dd72580b4c93b2bd6754cfc5e1b8',1,'PIFlags::PIFlags()'],['../class_p_i_flags.html#a657c6082214f45ae26436517bb12168e',1,'PIFlags::PIFlags(Enum e)'],['../class_p_i_flags.html#a815969c121235a5a1fbfa6cb3d9cc2f4',1,'PIFlags::PIFlags(const PIFlags &f)'],['../class_p_i_flags.html#a3307667726be788df2ddca22e00c590d',1,'PIFlags::PIFlags(const int i)']]], + ['piflags_3c_20attribute_20_3e',['PIFlags< Attribute >',['../class_p_i_flags.html',1,'']]], + ['piflags_3c_20interfaceflag_20_3e',['PIFlags< InterfaceFlag >',['../class_p_i_flags.html',1,'']]], + ['piflags_3c_20picodeinfo_3a_3atypeflag_20_3e',['PIFlags< PICodeInfo::TypeFlag >',['../class_p_i_flags.html',1,'']]], + ['piflags_3c_20piconsole_3a_3aformat_20_3e',['PIFlags< PIConsole::Format >',['../class_p_i_flags.html',1,'']]], + ['piflags_3c_20picoutcontrol_20_3e',['PIFlags< PICoutControl >',['../class_p_i_flags.html',1,'']]], + ['pifloor',['piFloor',['../piincludes_8h.html#ab9e59a89deba3a70f6a7ce9e746eadc6',1,'piincludes.h']]], + ['piforeach',['piForeach',['../picontainers_8h.html#aa579232460ca92efa5c1befd41d923ba',1,'picontainers.h']]], + ['piforeachc',['piForeachC',['../picontainers_8h.html#a807914d038e5a193d2e36b4b82b6df96',1,'picontainers.h']]], + ['piforeachcr',['piForeachCR',['../picontainers_8h.html#ad2685d4ca04df1f2154844e5984b41d8',1,'picontainers.h']]], + ['piforeachr',['piForeachR',['../picontainers_8h.html#a0e968bf591ab05721d5ef2ce201e09ed',1,'picontainers.h']]], + ['pihigh',['piHigh',['../class_p_i_thread.html#a3ddcafb0b09d3ed258a519882986a77ba0e6861fee3e57cf6ba026a7553e69576',1,'PIThread']]], + ['pihighest',['piHighest',['../class_p_i_thread.html#a3ddcafb0b09d3ed258a519882986a77ba18babfebe41163fbb810eb41357a6347',1,'PIThread']]], + ['piincludes_2eh',['piincludes.h',['../piincludes_8h.html',1,'']]], + ['piinit_2eh',['piinit.h',['../piinit_8h.html',1,'']]], + ['piiodevice',['PIIODevice',['../class_p_i_i_o_device.html',1,'PIIODevice'],['../class_p_i_i_o_device.html#a5adabd429443716b75771317ec43301b',1,'PIIODevice::PIIODEVICE()']]], + ['piiodevice_2eh',['piiodevice.h',['../piiodevice_8h.html',1,'']]], + ['pikbdlistener',['PIKbdListener',['../class_p_i_kbd_listener.html',1,'PIKbdListener'],['../class_p_i_kbd_listener.html#a2baa588cd4ae95363c980804b47ed461',1,'PIKbdListener::PIKbdListener()']]], + ['pikbdlistener_2eh',['pikbdlistener.h',['../pikbdlistener_8h.html',1,'']]], + ['piletobe',['piLetobe',['../piincludes_8h.html#abc830007b90d3beea81c0773811dbc9e',1,'piLetobe(void *data, int size): piincludes.h'],['../piincludes_8h.html#a1de16289b486990a4af21b1faad08e0e',1,'piLetobe(T *v): piincludes.h'],['../piincludes_8h.html#a142038da46a86ef1fc1ab52f57c21010',1,'piLetobe(const T &v): piincludes.h']]], + ['pilow',['piLow',['../class_p_i_thread.html#a3ddcafb0b09d3ed258a519882986a77ba46703d0258b11d41c52a266b2b10b6d9',1,'PIThread']]], + ['pilowerst',['piLowerst',['../class_p_i_thread.html#a3ddcafb0b09d3ed258a519882986a77ba4dbd54fc5158a029c682b718f48312d4',1,'PIThread']]], + ['pimap_2eh',['pimap.h',['../pimap_8h.html',1,'']]], + ['pimath_2eh',['pimath.h',['../pimath_8h.html',1,'']]], + ['pimax',['piMax',['../piincludes_8h.html#a3b04f3381ca3235a4fe575b4867263c6',1,'piMax(const T &f, const T &s): piincludes.h'],['../piincludes_8h.html#a291a707199f16a78fe41d79a9b89bc00',1,'piMax(const T &f, const T &s, const T &t): piincludes.h']]], + ['pimin',['piMin',['../piincludes_8h.html#afc6d1b1ff01ad00cda9d0df5e8dbf85f',1,'piMin(const T &f, const T &s): piincludes.h'],['../piincludes_8h.html#a342413b3c07aed06a22289a9e0daaead',1,'piMin(const T &f, const T &s, const T &t): piincludes.h']]], + ['pimm_5ffor',['PIMM_FOR',['../pimath_8h.html#a119d2152ee2bf3edef4d9e5a641405f7',1,'PIMM_FOR(): pimath.h'],['../pimath_8h.html#a14d1a9088eff4d1065094ba1cabf395d',1,'PIMM_FOR(): pimath.h']]], + ['pimsleep',['piMSleep',['../pitime_8h.html#a10862d1267284ae224b51ad95f90c931',1,'pitime.h']]], + ['pimutex',['PIMutex',['../class_p_i_mutex.html',1,'PIMutex'],['../class_p_i_mutex.html#ac4d6be4bdac6af45f1db56c4d1a0d971',1,'PIMutex::PIMutex()']]], + ['pimutex_2eh',['pimutex.h',['../pimutex_8h.html',1,'']]], + ['pimv_5ffor',['PIMV_FOR',['../pimath_8h.html#a2701c7bffde31ab4a96bf4d7fdb6866f',1,'PIMV_FOR(): pimath.h'],['../pimath_8h.html#a2701c7bffde31ab4a96bf4d7fdb6866f',1,'PIMV_FOR(): pimath.h']]], + ['pinormal',['piNormal',['../class_p_i_thread.html#a3ddcafb0b09d3ed258a519882986a77babd362bfacabbd61d69793cceb449425c',1,'PIThread']]], + ['piobject',['PIObject',['../class_p_i_object.html',1,'PIObject'],['../class_p_i_object.html#affa62b02040517a34b3f173d804e487f',1,'PIObject::PIOBJECT()'],['../class_p_i_object.html#a779d66bab882a51ef6389d2e212f2bd6',1,'PIObject::PIObject(const PIString &name=PIString())']]], + ['piobject_2eh',['piobject.h',['../piobject_8h.html',1,'']]], + ['piobject_5fparent',['PIOBJECT_PARENT',['../class_p_i_object.html#a4ce1840f79eac65344a4c5823f5034d4',1,'PIObject']]], + ['pip_5fbytearray_5fstream_5fany_5ftype',['PIP_BYTEARRAY_STREAM_ANY_TYPE',['../pibytearray_8h.html#ab8da61a42f0f76ae84a347c4a9217b31',1,'pibytearray.h']]], + ['pip_5fcontainers_5fstl',['PIP_CONTAINERS_STL',['../piincludes_8h.html#a3806a9aff68b7e2620f37a79e12fb850',1,'piincludes.h']]], + ['pip_5fdebug',['PIP_DEBUG',['../piincludes_8h.html#a7a5fe60328e1cb0dc0f508506afb4ae9',1,'piincludes.h']]], + ['pip_5ftimer_5frt',['PIP_TIMER_RT',['../piincludes_8h.html#ab866c362b595e2b327a450f6593f639a',1,'piincludes.h']]], + ['pip_5fversion',['PIP_VERSION',['../piincludes_8h.html#acbb7adb82bd5dd3060e2ad0eb604b1bf',1,'piincludes.h']]], + ['pip_5fversion_5fmajor',['PIP_VERSION_MAJOR',['../piincludes_8h.html#a8883b51de92fb8a549d8e78d3db33e59',1,'piincludes.h']]], + ['pip_5fversion_5fminor',['PIP_VERSION_MINOR',['../piincludes_8h.html#a6feaccd6b29e1709448f9adbae63cfef',1,'piincludes.h']]], + ['pip_5fversion_5frevision',['PIP_VERSION_REVISION',['../piincludes_8h.html#a1eab67c2ab5528a13d5a071678a08bc6',1,'piincludes.h']]], + ['pip_5fversion_5fsuffix',['PIP_VERSION_SUFFIX',['../piincludes_8h.html#aa7382f8ef6d40b57db8a29a3ae810feb',1,'piincludes.h']]], + ['pipacketextractor',['PIPacketExtractor',['../class_p_i_packet_extractor.html',1,'PIPacketExtractor'],['../class_p_i_packet_extractor.html#aa79460b536202e7c877f5eca4f5be089',1,'PIPacketExtractor::PIPacketExtractor()']]], + ['pipacketextractor_2eh',['pipacketextractor.h',['../pipacketextractor_8h.html',1,'']]], + ['pipeer_2eh',['pipeer.h',['../pipeer_8h.html',1,'']]], + ['piprocess',['PIProcess',['../class_p_i_process.html',1,'']]], + ['piprocess_2eh',['piprocess.h',['../piprocess_8h.html',1,'']]], + ['piprotocol',['PIProtocol',['../class_p_i_protocol.html',1,'PIProtocol'],['../class_p_i_protocol.html#ac5aa3e1546b771f82658bdcacb856898',1,'PIProtocol::PIProtocol()'],['../class_p_i_protocol.html#a5d4ccd507627a058c67ceec1d9774247',1,'PIProtocol::PIProtocol(const PIString &config, const PIString &name, void *recHeaderPtr=0, int recHeaderSize=0, void *recDataPtr=0, int recDataSize=0, void *sendDataPtr=0, int sendDataSize=0)']]], + ['piprotocol_2eh',['piprotocol.h',['../piprotocol_8h.html',1,'']]], + ['pipversion',['PIPVersion',['../piincludes_8h.html#aeb9599e6d2eecbf56d0bf78ec7d07ddf',1,'piincludes.cpp']]], + ['piround',['piRound',['../piincludes_8h.html#a983fb6261220848dead0db5ffba95071',1,'piincludes.h']]], + ['piserial',['PISerial',['../class_p_i_serial.html',1,'']]], + ['piserial_2eh',['piserial.h',['../piserial_8h.html',1,'']]], + ['piset',['PISet',['../class_p_i_set.html',1,'PISet< T >'],['../class_p_i_set.html#a0611208edb84f2529cb2e2782c3239fd',1,'PISet::PISet()'],['../class_p_i_set.html#ab2a248ae703457ca45cfa55972e1252a',1,'PISet::PISet(const T &value)'],['../class_p_i_set.html#aebcd07da3920c925af21ad1634dde44b',1,'PISet::PISet(const T &v0, const T &v1)'],['../class_p_i_set.html#a0da9d93a30b419270d6389433266b376',1,'PISet::PISet(const T &v0, const T &v1, const T &v2)'],['../class_p_i_set.html#a5170af33fced202a149267f84baaa65c',1,'PISet::PISet(const T &v0, const T &v1, const T &v2, const T &v3)']]], + ['piset_2eh',['piset.h',['../piset_8h.html',1,'']]], + ['piset_3c_20const_20void_20_2a_20_3e',['PISet< const void * >',['../class_p_i_set.html',1,'']]], + ['piset_3c_20piobject_20_2a_20_3e',['PISet< PIObject * >',['../class_p_i_set.html',1,'']]], + ['piset_3c_20pistring_20_3e',['PISet< PIString >',['../class_p_i_set.html',1,'']]], + ['pisignals_2eh',['pisignals.h',['../pisignals_8h.html',1,'']]], + ['pisleep',['piSleep',['../pitime_8h.html#a6c5fbd8c6c0e339600675ce646bb635f',1,'pitime.h']]], + ['pistack_2eh',['pistack.h',['../pistack_8h.html',1,'']]], + ['pistatemachine',['PIStateMachine',['../class_p_i_state_machine.html',1,'PIStateMachine< Type >'],['../class_p_i_state_machine.html#a5a9c75f183207bc366b2f0531473b905',1,'PIStateMachine::PIStateMachine()']]], + ['pistatemachine_2eh',['pistatemachine.h',['../pistatemachine_8h.html',1,'']]], + ['pistring',['PIString',['../class_p_i_string.html',1,'PIString'],['../class_p_i_string.html#a5671ba063015ac95a0fc582776424629',1,'PIString::PIString()'],['../class_p_i_string.html#a0a7dbce851e0654c1f46239c60b215d7',1,'PIString::PIString(const PIChar &c)'],['../class_p_i_string.html#a83698956091624f377f9bb7f9f3a6afc',1,'PIString::PIString(const char *str)'],['../class_p_i_string.html#a1c7edbae1d5dd3d123c3f19679c8a105',1,'PIString::PIString(const wchar_t *str)'],['../class_p_i_string.html#adba42068e854520b6fa4e3665055ab90',1,'PIString::PIString(const string &str)'],['../class_p_i_string.html#a09e89cd86ab4b41a6d4f68a4c04ade71',1,'PIString::PIString(const PIByteArray &ba)'],['../class_p_i_string.html#add45a4c9d96be4a7ff91e69b37f7e7f7',1,'PIString::PIString(const PIChar *str, const int len)'],['../class_p_i_string.html#a6c15cfb2ef6a0898ac99a602a4910c92',1,'PIString::PIString(const char *str, const int len)'],['../class_p_i_string.html#a571606d1afac0afb1850f314e5a7f582',1,'PIString::PIString(const int len, const char c)'],['../class_p_i_string.html#ac977eece58d4b01775cb5ec1aa9c0172',1,'PIString::PIString(const int len, const PIChar &c)']]], + ['pistring_2eh',['pistring.h',['../pistring_8h.html',1,'']]], + ['pistringlist',['PIStringList',['../class_p_i_string_list.html',1,'PIStringList'],['../class_p_i_string_list.html#a2e303b0d998cc4a3d1801a4ae58a095d',1,'PIStringList::PIStringList()'],['../class_p_i_string_list.html#a637847edb01e44dbd98fd636e870d8da',1,'PIStringList::PIStringList(const PIString &str)'],['../class_p_i_string_list.html#a619a3fadd772a3ceb4f7433aaaa707d5',1,'PIStringList::PIStringList(const PIString &s0, const PIString &s1)'],['../class_p_i_string_list.html#a204dafd0021fb841cdb52cf2a01a0ef5',1,'PIStringList::PIStringList(const PIString &s0, const PIString &s1, const PIString &s2)'],['../class_p_i_string_list.html#a79c640961baae9bbf10935245eaf3339',1,'PIStringList::PIStringList(const PIString &s0, const PIString &s1, const PIString &s2, const PIString &s3)']]], + ['piswap',['piSwap',['../piincludes_8h.html#acdace86016235bb97019f0691fb0b2ce',1,'piincludes.h']]], + ['piswapbinary',['piSwapBinary',['../piincludes_8h.html#a077c15d518abc4962091fa666c4bedda',1,'piincludes.h']]], + ['pisystemtime',['PISystemTime',['../class_p_i_system_time.html',1,'PISystemTime'],['../class_p_i_system_time.html#a1953b9b01b46f81c9abdda056b586baf',1,'PISystemTime::PISystemTime()'],['../class_p_i_system_time.html#ae21e04bfdf6534b05d0037ed14ee59bc',1,'PISystemTime::PISystemTime(long s, long ns)'],['../class_p_i_system_time.html#acf262a7f3ab39b197bae61c942989271',1,'PISystemTime::PISystemTime(const PISystemTime &t)']]], + ['pithread',['PIThread',['../class_p_i_thread.html',1,'PIThread'],['../class_p_i_thread.html#adaa3b942365cb17b3e985648128e5f7e',1,'PIThread::PIThread(void *data, ThreadFunc func, bool startNow=false, int loop_delay=-1)'],['../class_p_i_thread.html#a538752277df4d58134b05ef080ed6b04',1,'PIThread::PIThread(bool startNow=false, int loop_delay=-1)']]], + ['pithread_2eh',['pithread.h',['../pithread_8h.html',1,'']]], + ['pitime_2eh',['pitime.h',['../pitime_8h.html',1,'']]], + ['pitimemeasurer',['PITimeMeasurer',['../class_p_i_time_measurer.html',1,'']]], + ['pitimer',['PITimer',['../class_p_i_timer.html',1,'PITimer'],['../class_p_i_timer.html#a3cc1d86602eb8d2abd8e0c9a9931cd70',1,'PITimer::PITimer()'],['../class_p_i_timer.html#a0cbb0321a650e4dd4acd046e58a67095',1,'PITimer::PITimer(TimerImplementation ti)'],['../class_p_i_timer.html#a6d3067f66c06ddd21982251f4ed6ec50',1,'PITimer::PITimer(TimerEvent slot, void *data=0, TimerImplementation ti=Thread)']]], + ['pitimer_2eh',['pitimer.h',['../pitimer_8h.html',1,'']]], + ['piusb_2eh',['piusb.h',['../piusb_8h.html',1,'']]], + ['piusleep',['piUSleep',['../pitime_8h.html#a905b80a2477dd23f7b2cade100c64385',1,'pitime.cpp']]], + ['pivariant',['PIVariant',['../class_p_i_variant.html',1,'PIVariant'],['../class_p_i_variant.html#a83432da0a545ad6dd30429c0e1a583da',1,'PIVariant::PIVariant()'],['../class_p_i_variant.html#aad0458975016273ccd939c7aec69b057',1,'PIVariant::PIVariant(const char *v)'],['../class_p_i_variant.html#a14d9afdc7c44865b982f673fa45b83e6',1,'PIVariant::PIVariant(const bool v)'],['../class_p_i_variant.html#ad8e268c9cb15c248e914068417e04ccc',1,'PIVariant::PIVariant(const char v)'],['../class_p_i_variant.html#a0f5a040f137b2e048f75b2e18521eb17',1,'PIVariant::PIVariant(const uchar v)'],['../class_p_i_variant.html#a11042a1ccf1c759055fb604cae320be0',1,'PIVariant::PIVariant(const short v)'],['../class_p_i_variant.html#af7bf9ae6815e438a01b10b2aa546e8c4',1,'PIVariant::PIVariant(const ushort v)'],['../class_p_i_variant.html#aee8eeff2d7a3ff2a478b428b9b2badd8',1,'PIVariant::PIVariant(const int &v)'],['../class_p_i_variant.html#aa670291ca1ec856cdc1887e594b1546f',1,'PIVariant::PIVariant(const uint &v)'],['../class_p_i_variant.html#a1fe8d4126aaf5bdbbd61ef178df488cc',1,'PIVariant::PIVariant(const long &v)'],['../class_p_i_variant.html#a20a6fd9ce7d7de2e20440f722f28f379',1,'PIVariant::PIVariant(const ulong &v)'],['../class_p_i_variant.html#a7ce8905e74c36806ca004e845b67743b',1,'PIVariant::PIVariant(const llong &v)'],['../class_p_i_variant.html#a0a1355062b5b8df0c88542c782a985d8',1,'PIVariant::PIVariant(const ullong &v)'],['../class_p_i_variant.html#a91dc6be82349d2d24cc642abf9c39e2e',1,'PIVariant::PIVariant(const float &v)'],['../class_p_i_variant.html#a4dcc306bce5d0601e9cea679e623d8bd',1,'PIVariant::PIVariant(const double &v)'],['../class_p_i_variant.html#a5a03fdaf8ee128358c289ada2c72686d',1,'PIVariant::PIVariant(const ldouble &v)'],['../class_p_i_variant.html#adb79886a19bb0efb6e9c221eae8fb236',1,'PIVariant::PIVariant(const complexd &v)'],['../class_p_i_variant.html#a7b33912daf30f5e7cc7c333e4c7400c6',1,'PIVariant::PIVariant(const complexld &v)'],['../class_p_i_variant.html#a8882d5bfc67b3ff89e8ee9835cac3693',1,'PIVariant::PIVariant(const PIBitArray &v)'],['../class_p_i_variant.html#aba63a29878c14870b7a045799452d93c',1,'PIVariant::PIVariant(const PIByteArray &v)'],['../class_p_i_variant.html#ac48a86c19a56cd03f1432596d29204d2',1,'PIVariant::PIVariant(const PIString &v)'],['../class_p_i_variant.html#afccb4ddebcf51eb0241cc99ad46fa6e3',1,'PIVariant::PIVariant(const PIStringList &v)'],['../class_p_i_variant.html#a3dd80bbfa434bfa4b470192d728be08e',1,'PIVariant::PIVariant(const PITime &v)'],['../class_p_i_variant.html#a3d14c3eec0653cd7a2a1e2988e805499',1,'PIVariant::PIVariant(const PIDate &v)'],['../class_p_i_variant.html#a1e71b4d50d2054edb27c23cbfc3416c3',1,'PIVariant::PIVariant(const PIDateTime &v)'],['../class_p_i_variant.html#a1fc8d7e876930686d216924473da466e',1,'PIVariant::PIVariant(const PISystemTime &v)']]], + ['pivariant_2eh',['pivariant.h',['../pivariant_8h.html',1,'']]], + ['pivector',['PIVector',['../class_p_i_vector.html',1,'PIVector< T >'],['../class_p_i_vector.html#a1c666fc2ba39eff314508f1420530875',1,'PIVector::PIVector()']]], + ['pivector_2eh',['pivector.h',['../pivector_8h.html',1,'']]], + ['pivector_3c_20_5f_5fehdata_20_3e',['PIVector< __EHData >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20_5f_5fehfunc_20_3e',['PIVector< __EHFunc >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20_5fpitimerimp_5fpool_20_2a_20_3e',['PIVector< _PITimerImp_Pool * >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20argument_20_3e',['PIVector< Argument >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20column_20_3e',['PIVector< Column >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20complexd_20_3e',['PIVector< complexd >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20condition_20_3e',['PIVector< Condition >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20connection_20_3e',['PIVector< Connection >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20const_20piobject_20_2a_20_3e',['PIVector< const PIObject * >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20define_20_3e',['PIVector< Define >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20delimiter_20_3e',['PIVector< Delimiter >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20devicedata_20_2a_20_3e',['PIVector< DeviceData * >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20double_20_3e',['PIVector< double >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20entity_20_2a_20_3e',['PIVector< Entity * >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20entry_20_2a_20_3e',['PIVector< Entry * >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20entry_20_3e',['PIVector< Entry >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20enum_20_3e',['PIVector< Enum >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20enumerator_20_3e',['PIVector< Enumerator >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20extractor_20_2a_20_3e',['PIVector< Extractor * >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20group_20_3e',['PIVector< Group >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20int_20_3e',['PIVector< int >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20macro_20_3e',['PIVector< Macro >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20member_20_3e',['PIVector< Member >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20node_20_3e',['PIVector< node >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20peerinfo_20_3e',['PIVector< PeerInfo >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20picodeinfo_3a_3aenumeratorinfo_20_3e',['PIVector< PICodeInfo::EnumeratorInfo >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20picodeinfo_3a_3afunctioninfo_20_3e',['PIVector< PICodeInfo::FunctionInfo >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20picodeinfo_3a_3atypeinfo_20_3e',['PIVector< PICodeInfo::TypeInfo >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20piconnection_20_2a_20_3e',['PIVector< PIConnection * >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20pidiagnostics_20_2a_20_3e',['PIVector< PIDiagnostics * >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20piethernet_20_2a_20_3e',['PIVector< PIEthernet * >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20piethernet_3a_3ainterface_20_3e',['PIVector< PIEthernet::Interface >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20pievaluatortypes_3a_3aelement_20_3e',['PIVector< PIEvaluatorTypes::Element >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20pievaluatortypes_3a_3afunction_20_3e',['PIVector< PIEvaluatorTypes::Function >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20pievaluatortypes_3a_3ainstruction_20_3e',['PIVector< PIEvaluatorTypes::Instruction >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20pievaluatortypes_3a_3avariable_20_3e',['PIVector< PIEvaluatorTypes::Variable >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20piiodevice_20_2a_20_3e',['PIVector< PIIODevice * >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20piiodevice_3a_3adevicemode_20_3e',['PIVector< PIIODevice::DeviceMode >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20pimathvectord_20_3e',['PIVector< PIMathVectord >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20piobject_20_2a_20_3e',['PIVector< PIObject * >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20pipair_3c_20pibytearray_2c_20ullong_20_3e_20_3e',['PIVector< PIPair< PIByteArray, ullong > >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20piprotocol_20_2a_20_3e',['PIVector< PIProtocol * >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20pistatemachine_3a_3arule_20_3e',['PIVector< PIStateMachine::Rule >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20pistatemachine_3a_3astate_20_3e',['PIVector< PIStateMachine::State >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20pistring_20_3e',['PIVector< PIString >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20piusb_3a_3aconfiguration_20_3e',['PIVector< PIUSB::Configuration >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20piusb_3a_3aendpoint_20_3e',['PIVector< PIUSB::Endpoint >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20piusb_3a_3ainterface_20_3e',['PIVector< PIUSB::Interface >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20pivariant_20_3e',['PIVector< PIVariant >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20pivector_3c_20double_20_3e_20_3e',['PIVector< PIVector< double > >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20pivector_3c_20peerinfo_20_2a_20_3e_20_3e',['PIVector< PIVector< PeerInfo * > >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20pivector_3c_20piiodevice_20_2a_20_3e_20_3e',['PIVector< PIVector< PIIODevice * > >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20pivector_3c_20pipacketextractor_20_2a_20_3e_20_3e',['PIVector< PIVector< PIPacketExtractor * > >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20pivector_3c_20type_20_3e_20_3e',['PIVector< PIVector< Type > >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20remoteclient_20_3e',['PIVector< RemoteClient >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20sender_20_2a_20_3e',['PIVector< Sender * >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20socket_20_3e',['PIVector< SOCKET >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20tab_20_3e',['PIVector< Tab >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20type_20_3e',['PIVector< Type >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20typedef_20_3e',['PIVector< Typedef >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20uchar_20_3e',['PIVector< uchar >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20variable_20_3e',['PIVector< Variable >',['../class_p_i_vector.html',1,'']]], + ['pool',['Pool',['../class_p_i_timer.html#a02b36fbf7ae0839eb72c95cde343b719afc1ce0b87bd597621116ec5de765b6db',1,'PITimer']]], + ['pop_5fback',['pop_back',['../class_p_i_vector.html#a8f5297d0ee721627ad8c545980756b68',1,'PIVector']]], + ['pop_5ffront',['pop_front',['../class_p_i_vector.html#a94b63d4c818f6e27415b8895f37805b9',1,'PIVector']]], + ['port',['port',['../class_p_i_ethernet.html#ad6b354929e62f909918d73633ea49135',1,'PIEthernet']]], + ['prepend',['prepend',['../class_p_i_string.html#aa21143de8258bbc8698e46a9216c5a26',1,'PIString']]], + ['priority',['Priority',['../class_p_i_thread.html#a3ddcafb0b09d3ed258a519882986a77b',1,'PIThread::Priority()'],['../class_p_i_thread.html#adcc0d49a7914cba2b3edc86c454ee3a6',1,'PIThread::priority() const ']]], + ['programcommand',['programCommand',['../class_p_i_c_l_i.html#a31bf2b18e408514af453029ebc09f00d',1,'PICLI']]], + ['properties',['properties',['../class_p_i_object.html#aeb8178ed4012f204d2c89a8413bbcd2d',1,'PIObject']]], + ['propertiescount',['propertiesCount',['../class_p_i_object.html#a68dbd55885a081be717ff818dcb31bcc',1,'PIObject']]], + ['property',['property',['../class_p_i_object.html#ad0cadfad8b61e8c994abde7d2d4853ac',1,'PIObject']]], + ['propertychanged',['propertyChanged',['../class_p_i_object.html#a2f98c7c43b93f9d636e9119f0a577715',1,'PIObject::propertyChanged()'],['../class_p_i_ethernet.html#aeab32d357e600e3428a3c40db782df1e',1,'PIEthernet::propertyChanged()']]], + ['ptp',['ptp',['../struct_p_i_ethernet_1_1_interface.html#a7255bb721c0f03b4465eefa422e984da',1,'PIEthernet::Interface']]], + ['push_5fback',['push_back',['../class_p_i_vector.html#a6b0cf989ba342d06c8cf21a55d434a8e',1,'PIVector']]], + ['push_5ffront',['push_front',['../class_p_i_vector.html#adadda79d8436c657fd6039e8e090da67',1,'PIVector']]] +]; diff --git a/pip/doc/html/search/all_11.html b/pip/doc/html/search/all_11.html new file mode 100644 index 0000000..fda6861 --- /dev/null +++ b/pip/doc/html/search/all_11.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/all_11.js b/pip/doc/html/search/all_11.js new file mode 100644 index 0000000..dfd32dd --- /dev/null +++ b/pip/doc/html/search/all_11.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['qnx',['QNX',['../piincludes_8h.html#a167ea11947b8e4a492b2366ca250dbc0',1,'piincludes.h']]], + ['quality',['Quality',['../class_p_i_diagnostics.html#aabf8f59b49ab62435e220106f204712f',1,'PIDiagnostics::Quality()'],['../class_p_i_protocol.html#aef1f5fa8173bcc220b07f084155ec868',1,'PIProtocol::Quality()'],['../class_p_i_diagnostics.html#ab4b373f4d0dfaad6e25cf1d376b2d754',1,'PIDiagnostics::quality()']]], + ['quality_5fptr',['quality_ptr',['../class_p_i_diagnostics.html#a4ce10a350d75352320212784193db4fb',1,'PIDiagnostics']]], + ['qualitychanged',['qualityChanged',['../class_p_i_diagnostics.html#a6e0a2d483282afab237e4b1ab9f0b4a4',1,'PIDiagnostics']]], + ['quote',['quote',['../class_p_i_cout.html#a95965e197340e6ebe30b84a89ccc4a71',1,'PICout::quote()'],['../namespace_p_i_cout_manipulators.html#a66678520ac7701c016e3e90e17a7dfa2adb05a3816f5bd55128af99263b94e15e',1,'PICoutManipulators::Quote()']]] +]; diff --git a/pip/doc/html/search/all_12.html b/pip/doc/html/search/all_12.html new file mode 100644 index 0000000..fe96a79 --- /dev/null +++ b/pip/doc/html/search/all_12.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/all_12.js b/pip/doc/html/search/all_12.js new file mode 100644 index 0000000..725479f --- /dev/null +++ b/pip/doc/html/search/all_12.js @@ -0,0 +1,66 @@ +var searchData= +[ + ['rawargument',['rawArgument',['../class_p_i_c_l_i.html#acfa1357e283fb2fceb69ff93e53cef6f',1,'PICLI']]], + ['rawarguments',['rawArguments',['../class_p_i_c_l_i.html#a48e694f023cd8a8606865b1704583613',1,'PICLI']]], + ['rawdata',['RawData',['../struct_p_i_byte_array_1_1_raw_data.html#a57c5b593f88843f43a2644b742f10838',1,'PIByteArray::RawData::RawData(void *data=0, int size=0)'],['../struct_p_i_byte_array_1_1_raw_data.html#a35220a8724f8a8a803380ae6f4653ae1',1,'PIByteArray::RawData::RawData(const void *data, const int size)']]], + ['rawdata',['RawData',['../struct_p_i_byte_array_1_1_raw_data.html',1,'PIByteArray']]], + ['read',['read',['../class_p_i_ethernet.html#a28595d8f88cdedf9e5572068ab116fa8',1,'PIEthernet::read()'],['../class_p_i_packet_extractor.html#aa41b9b23ba7a074398687edf82331b40',1,'PIPacketExtractor::read()']]], + ['readablesize',['readableSize',['../class_p_i_string.html#aa439f5ba10fdede14750843f429bd634',1,'PIString']]], + ['readaddress',['readAddress',['../class_p_i_ethernet.html#a53052c78cb24aca1e1a65d8c14e1dd7c',1,'PIEthernet']]], + ['readall',['readAll',['../class_p_i_config.html#ab2bb45897ec17ef66c729dfe7d43a135',1,'PIConfig']]], + ['readdevicesetting',['readDeviceSetting',['../class_p_i_i_o_device.html#add5b851e98d22dd4d7482a8e509113dc',1,'PIIODevice::readDeviceSetting()'],['../piconfig_8h.html#add5b851e98d22dd4d7482a8e509113dc',1,'readDeviceSetting(): piconfig.h']]], + ['readip',['readIP',['../class_p_i_ethernet.html#aa04de0ef1cab98a7bc80cc43ca550f18',1,'PIEthernet']]], + ['readport',['readPort',['../class_p_i_ethernet.html#ac93db4b6831c0304955c74c666d716f4',1,'PIEthernet']]], + ['readtimeout',['readTimeout',['../class_p_i_ethernet.html#a6e2bd7559bfb46784bda61f88ad055b4',1,'PIEthernet']]], + ['receivebytespersec',['receiveBytesPerSec',['../class_p_i_diagnostics.html#a412a3c850f35ae690bf2ee212bace700',1,'PIDiagnostics']]], + ['receivebytespersec_5fptr',['receiveBytesPerSec_ptr',['../class_p_i_diagnostics.html#a3dae97db20de5a1a82559eaf872004ea',1,'PIDiagnostics']]], + ['receivecount',['receiveCount',['../class_p_i_diagnostics.html#a894cb3cd2ec9a395ee217fe0573bfa74',1,'PIDiagnostics']]], + ['receivecount_5fptr',['receiveCount_ptr',['../class_p_i_diagnostics.html#afe4a920694b84936c0fa7d07b14d1dd7',1,'PIDiagnostics']]], + ['receivecountpersec',['receiveCountPerSec',['../class_p_i_diagnostics.html#a81fa49a759f97f23b0e13992c2decd11',1,'PIDiagnostics']]], + ['receivecountpersec_5fptr',['receiveCountPerSec_ptr',['../class_p_i_diagnostics.html#a364f03141facee8162a66de048005807',1,'PIDiagnostics']]], + ['received',['received',['../class_p_i_diagnostics.html#a0cedccc3d6d8dba5238ee3a0f42a74c6',1,'PIDiagnostics::received()'],['../class_p_i_ethernet.html#a2adc07e00ede7ca18bfa93e94290a9f9',1,'PIEthernet::received()'],['../class_p_i_serial.html#aafc6d34cbbdef49fed9454403056a948',1,'PISerial::received()']]], + ['receivespeed',['receiveSpeed',['../class_p_i_diagnostics.html#a01bf2ddc5c60e8156c8c78b49978810d',1,'PIDiagnostics']]], + ['receivespeed_5fptr',['receiveSpeed_ptr',['../class_p_i_diagnostics.html#aa7a24231b0008a27405a92f8f7094277',1,'PIDiagnostics']]], + ['red',['Red',['../class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579aa9e6d56193eac85df4a54bf3ef53b7b7',1,'PIConsole::Red()'],['../namespace_p_i_cout_manipulators.html#a4d8fa322c1a8b3fa285759056aae1b2aa26422e0754e279717e30f36fc9355d39',1,'PICoutManipulators::Red()']]], + ['register_5fdevice',['REGISTER_DEVICE',['../class_p_i_i_o_device.html#a672a05d4391737b8fecd4524f1a47bda',1,'PIIODevice']]], + ['remove',['remove',['../class_p_i_set.html#aeb31ad164a71727de75ee18f7767d07c',1,'PISet::remove()'],['../class_p_i_vector.html#a0e43a8466d800cd8ac31f91dc8f6e6a3',1,'PIVector::remove()']]], + ['removeall',['removeAll',['../class_p_i_vector.html#a5c8b3839e69249aa672e76017af2be1f',1,'PIVector']]], + ['removeallchannels',['removeAllChannels',['../class_p_i_connection.html#a2ef0febef147d0314b8ec312e81d535a',1,'PIConnection']]], + ['removealldevices',['removeAllDevices',['../class_p_i_connection.html#a01600f5a22b49eb796fbf245a0853b6d',1,'PIConnection']]], + ['removeallfilters',['removeAllFilters',['../class_p_i_connection.html#a762b4641d14843628d7af4af8212bbf9',1,'PIConnection']]], + ['removeallsenders',['removeAllSenders',['../class_p_i_connection.html#a0c7c309e54c2c09a779c25843dd13efd',1,'PIConnection']]], + ['removechannel',['removeChannel',['../class_p_i_connection.html#ab512962f328b702d416a13d577937524',1,'PIConnection::removeChannel(const PIString &name_from, const PIString &name_to)'],['../class_p_i_connection.html#af4e276c0cf30890cb7e599ffdbe0b9e8',1,'PIConnection::removeChannel(const PIString &name_from, const PIIODevice *dev_to)'],['../class_p_i_connection.html#acf9fb8b023f09c12b64809928951dfd1',1,'PIConnection::removeChannel(const PIIODevice *dev_from, const PIString &name_to)'],['../class_p_i_connection.html#aa3d4e83032706f342f70f25928a87bfa',1,'PIConnection::removeChannel(const PIIODevice *dev_from, const PIIODevice *dev_to)'],['../class_p_i_connection.html#a95bcc784d1436285666d141955468227',1,'PIConnection::removeChannel(const PIString &name_from)'],['../class_p_i_connection.html#ace1bad69c9498f390fd324f5ec11683c',1,'PIConnection::removeChannel(const PIIODevice *dev_from)']]], + ['removedelimiter',['removeDelimiter',['../class_p_i_timer.html#ab02f5a19cb71a4be4965a1d670c7ff72',1,'PITimer::removeDelimiter(int delim)'],['../class_p_i_timer.html#a2809e63e8678dc914a9b521fa0de7a09',1,'PITimer::removeDelimiter(TimerEvent slot)'],['../class_p_i_timer.html#a093ee618f2beac2794a469c76f8064f1',1,'PITimer::removeDelimiter(int delim, TimerEvent slot)']]], + ['removedevice',['removeDevice',['../class_p_i_connection.html#ab6579532c7de05b4ac379a9ca2ea8ec9',1,'PIConnection']]], + ['removeduplicates',['removeDuplicates',['../class_p_i_string_list.html#af7e798057ddb99a7cca519ccf3aaba8d',1,'PIStringList']]], + ['removefilter',['removeFilter',['../class_p_i_connection.html#a82a9d3c484bbc073ef7d9196343e1368',1,'PIConnection::removeFilter(const PIString &name, const PIString &full_path_name)'],['../class_p_i_connection.html#a870f2081626fa2aa352069a19b1c52ff',1,'PIConnection::removeFilter(const PIString &name, const PIIODevice *dev)'],['../class_p_i_connection.html#a1d486b41013a8cc455a5a07529d2eea3',1,'PIConnection::removeFilter(const PIString &name)']]], + ['removeone',['removeOne',['../class_p_i_vector.html#a016a1c78ec7270e6edccc81d7c8075ef',1,'PIVector']]], + ['removesender',['removeSender',['../class_p_i_connection.html#a0f502ebce46f41bf58975652bac7346c',1,'PIConnection::removeSender(const PIString &name, const PIString &full_path)'],['../class_p_i_connection.html#a6e94e0174cecb9a57571be67ead71381',1,'PIConnection::removeSender(const PIString &name, const PIIODevice *dev)'],['../class_p_i_connection.html#a34af1d09b375682bdcd25590153530d1',1,'PIConnection::removeSender(const PIString &name)']]], + ['removestrings',['removeStrings',['../class_p_i_string_list.html#a7b3c809c1c93ddab639d2163da783043',1,'PIStringList']]], + ['removetab',['removeTab',['../class_p_i_console.html#aa3766f5453f3bb6a90e3e890133b0549',1,'PIConsole::removeTab(uint index)'],['../class_p_i_console.html#a09b921eabc7dfb78527916927d67caf4',1,'PIConsole::removeTab(const PIString &name)']]], + ['removevariable',['removeVariable',['../class_p_i_evaluator.html#a10a2ad62c7636b8c343ca0a60afcb9d0',1,'PIEvaluator']]], + ['repeat',['repeat',['../class_p_i_string.html#a95bc5ca2e401747051eb019101036838',1,'PIString']]], + ['repeated',['repeated',['../class_p_i_string.html#a8cdd3ad7481f765352ff371705e29ff6',1,'PIString']]], + ['replace',['replace',['../class_p_i_string.html#a5409e1aecee919acb3995fe2d98396d2',1,'PIString::replace(const int from, const int count, const PIString &with)'],['../class_p_i_string.html#a1fb70092a8723959b7f0718676dea6ed',1,'PIString::replace(const PIString &what, const PIString &with, bool *ok=0)']]], + ['replaceall',['replaceAll',['../class_p_i_string.html#a02fd96dd8a55a990602ecdbf21a120e0',1,'PIString']]], + ['replaced',['replaced',['../class_p_i_string.html#abdde92d6e5efa3a0f6a53e7a6cb27b64',1,'PIString::replaced(const int from, const int count, const PIString &with) const '],['../class_p_i_string.html#a4e91d076a5c2488986f5e9860e65d8c7',1,'PIString::replaced(const PIString &what, const PIString &with, bool *ok=0) const ']]], + ['reset',['reset',['../class_p_i_state_machine.html#a2dbebcfe51dfd85c568bcc5eab3a4d40',1,'PIStateMachine::reset()'],['../class_p_i_time_measurer.html#a9b9d77de23a343ccabc56d6658f9d874',1,'PITimeMeasurer::reset()'],['../class_p_i_diagnostics.html#a0771a5343fcebfe427876adddae14c34',1,'PIDiagnostics::reset()']]], + ['reset_5ftime',['reset_time',['../class_p_i_time_measurer.html#a1d469ce161b772ce6fffc04e53cea18f',1,'PITimeMeasurer']]], + ['resetallconditions',['resetAllConditions',['../struct_p_i_state_machine_1_1_rule.html#a67df3697d1b5868ec367402d0f7c1cb6',1,'PIStateMachine::Rule']]], + ['resetcondition',['resetCondition',['../class_p_i_state_machine.html#a8c62341c659ed29e4ba25672162aafc0',1,'PIStateMachine']]], + ['resetconditions',['resetConditions',['../class_p_i_state_machine.html#aa932844b2866a28e24028020c33fe23a',1,'PIStateMachine']]], + ['resize',['resize',['../class_p_i_vector.html#af3dc895f63a2b64927918f1be97e8947',1,'PIVector']]], + ['resized',['resized',['../class_p_i_byte_array.html#a0c59a360cbc7e6a36f6ed13c041ee7f7',1,'PIByteArray']]], + ['restart',['restart',['../class_p_i_timer.html#ae899576c5a8b605a749f9c6f09773087',1,'PITimer']]], + ['restorecontrol',['restoreControl',['../class_p_i_cout.html#a6d6689f35644fba314420d1c218982f1',1,'PICout::restoreControl()'],['../namespace_p_i_cout_manipulators.html#a38d041a4e2de4ca6af939837475e9387a79f6f33c2e149fb3903625c855292600',1,'PICoutManipulators::RestoreControl()']]], + ['reuseaddress',['reuseAddress',['../class_p_i_ethernet.html#a079e3664394cae2bd1a7981bbfd580ee',1,'PIEthernet::reuseAddress()'],['../class_p_i_ethernet.html#ae03a64ce3d7d8a1e95b2212ab2497f55a880142bb3993c7839af6d847beee1b34',1,'PIEthernet::ReuseAddress()']]], + ['reverse',['reverse',['../class_p_i_string.html#a57ef668d89de132b1fd27342365c7ac1',1,'PIString']]], + ['reversed',['reversed',['../class_p_i_string.html#ab4e184e66ced5c40307797708a7fa747',1,'PIString']]], + ['right',['Right',['../class_p_i_console.html#a9185c02e667ead89d506730e6fdc1f5da5ba51ab04a9644828f79a9e95dfe4382',1,'PIConsole::Right()'],['../class_p_i_string.html#a84b4d361d9c7bf1d9c467e4a90d0d06b',1,'PIString::right()']]], + ['rightarrow',['RightArrow',['../class_p_i_kbd_listener.html#a3e1b468bee20e5a4155f7d99d19eb716a8931e408583ed3ce190e26e4adf523eb',1,'PIKbdListener']]], + ['rootentry',['rootEntry',['../class_p_i_config.html#ab3b501c744eec9526b06509e14e868ec',1,'PIConfig']]], + ['rule',['Rule',['../struct_p_i_state_machine_1_1_rule.html#a72078e5c7842786930ca73022509698c',1,'PIStateMachine::Rule::Rule()'],['../struct_p_i_state_machine_1_1_rule.html#af18c79ccfbc149a7ab7959d0179d0276',1,'PIStateMachine::Rule::Rule(Type f, Type t, const PIStringList &c=PIStringList(), Handler h=0, bool at=false, bool rac=false)']]], + ['rule',['Rule',['../struct_p_i_state_machine_1_1_rule.html',1,'PIStateMachine']]], + ['rulescount',['rulesCount',['../class_p_i_state_machine.html#af5c2a2973b22c37217a1d74c60aab909',1,'PIStateMachine']]], + ['run',['run',['../class_p_i_thread.html#a8c9cacfd381e0e02eb6e52810d48ce2e',1,'PIThread']]] +]; diff --git a/pip/doc/html/search/all_13.html b/pip/doc/html/search/all_13.html new file mode 100644 index 0000000..f75c009 --- /dev/null +++ b/pip/doc/html/search/all_13.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/all_13.js b/pip/doc/html/search/all_13.js new file mode 100644 index 0000000..01b6ae8 --- /dev/null +++ b/pip/doc/html/search/all_13.js @@ -0,0 +1,101 @@ +var searchData= +[ + ['savecontol',['SaveContol',['../namespace_p_i_cout_manipulators.html#a38d041a4e2de4ca6af939837475e9387ab016f563340e366b6685045e028f2b0f',1,'PICoutManipulators']]], + ['savecontrol',['saveControl',['../class_p_i_cout.html#afb789d3710c4bbb56a92e4815bb8fa2b',1,'PICout']]], + ['scientific',['Scientific',['../class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579a138319e4d812b10ef0e49f4c1464dde4',1,'PIConsole']]], + ['seconds',['seconds',['../class_p_i_system_time.html#a04b205ecf95921596a68c442b49b34b0',1,'PISystemTime']]], + ['send',['send',['../class_p_i_ethernet.html#af01b2a4c78bce376ba6cfcf4dd2907c1',1,'PIEthernet::send(const PIString &ip, int port, const void *data, int size, bool threaded=false)'],['../class_p_i_ethernet.html#ae8c88ae9984347a23e2d5743dec5739e',1,'PIEthernet::send(const PIString &ip_port, const void *data, int size, bool threaded=false)'],['../class_p_i_ethernet.html#a77b555fc82243b3e998cf2b008008f0f',1,'PIEthernet::send(const void *data, int size, bool threaded=false)'],['../class_p_i_ethernet.html#a8b42711033d1c21ea978b4c3deed0962',1,'PIEthernet::send(const PIByteArray &data, bool threaded=false)']]], + ['sendaddress',['sendAddress',['../class_p_i_ethernet.html#a9f1c3496e88242f1637666a9a0ac9c86',1,'PIEthernet']]], + ['sendbytespersec',['sendBytesPerSec',['../class_p_i_diagnostics.html#ad24cb17710950995f1be0cf48c150a5e',1,'PIDiagnostics']]], + ['sendbytespersec_5fptr',['sendBytesPerSec_ptr',['../class_p_i_diagnostics.html#a5565c0c6c31f39144ce80c4a68dad08d',1,'PIDiagnostics']]], + ['sendcount',['sendCount',['../class_p_i_diagnostics.html#a896f8406b97fb4eee8fa5fbcd0f4cb18',1,'PIDiagnostics']]], + ['sendcount_5fptr',['sendCount_ptr',['../class_p_i_diagnostics.html#a6c331ad75d8802175b73c2e0f84e2368',1,'PIDiagnostics']]], + ['sendcountpersec',['sendCountPerSec',['../class_p_i_diagnostics.html#a42f008c143eb3aeaa34350b41b471bd9',1,'PIDiagnostics']]], + ['sendcountpersec_5fptr',['sendCountPerSec_ptr',['../class_p_i_diagnostics.html#a34f3d9d9b0560da37f4e3258a2408c6c',1,'PIDiagnostics']]], + ['sended',['sended',['../class_p_i_diagnostics.html#a40db151966a7c48357df5e19de20116f',1,'PIDiagnostics']]], + ['senderdata',['senderData',['../class_p_i_connection.html#a023551841a2209d5ada16c376feb91f9',1,'PIConnection']]], + ['senderfixeddata',['senderFixedData',['../class_p_i_connection.html#a94acbae950358c2d47b6f71048d4ce4a',1,'PIConnection']]], + ['senderfrequency',['senderFrequency',['../class_p_i_connection.html#afc32d50f589771ab51d90df92960a9af',1,'PIConnection']]], + ['sendip',['sendIP',['../class_p_i_ethernet.html#aaa134cd7aecf18f151a09c497b19e0fa',1,'PIEthernet']]], + ['sendport',['sendPort',['../class_p_i_ethernet.html#a428a2e1cdf265f4b363240b4f8f40183',1,'PIEthernet']]], + ['sendspeed',['sendSpeed',['../class_p_i_diagnostics.html#a8fa858dfeda458616b1f5ecbab3baead',1,'PIDiagnostics']]], + ['sendspeed_5fptr',['sendSpeed_ptr',['../class_p_i_diagnostics.html#a36ac4c15726cab43cb1a46ddfd1fc87c',1,'PIDiagnostics']]], + ['setactive',['setActive',['../class_p_i_kbd_listener.html#a13b9bca3e1c73dcdbbd8ea813e7893f4',1,'PIKbdListener']]], + ['setbuffersize',['setBufferSize',['../class_p_i_packet_extractor.html#aa6f77a5a0acf43e7b69354e59c89523a',1,'PIPacketExtractor']]], + ['setcolumnalignment',['setColumnAlignment',['../class_p_i_console.html#a44b8aeea4216e6b514d468f3fcc7e19b',1,'PIConsole']]], + ['setcolumnalignmenttoall',['setColumnAlignmentToAll',['../class_p_i_console.html#a6c0653f78a4c22a7de20656c150d4d7d',1,'PIConsole']]], + ['setcomment',['setComment',['../class_p_i_config_1_1_entry.html#a18f083b2d0fdff86e717938718c8be2b',1,'PIConfig::Entry']]], + ['setcontrol',['setControl',['../class_p_i_cout.html#a5b6614dddc73b36883222e31fda93bf2',1,'PICout::setControl(PICoutControl c, bool on=true)'],['../class_p_i_cout.html#a39ac735489b5deed01f0d71bfc3a6506',1,'PICout::setControl(PICoutControls c, bool save=false)']]], + ['setdata',['setData',['../class_p_i_evaluator.html#a56921d7e9aac1543eeee4d52b220f8ac',1,'PIEvaluator::setData()'],['../class_p_i_kbd_listener.html#a0e0b57b7012db4134a0f72c9cbfa1d07',1,'PIKbdListener::setData()'],['../class_p_i_thread.html#a221e15d1a4093b7db6cc579fc8be69b6',1,'PIThread::setData()'],['../class_p_i_timer.html#aa166b87d70f34ca63b9c39f8f03daea4',1,'PITimer::setData()']]], + ['setdebug',['setDebug',['../class_p_i_object.html#a9a0ec972d4864287fae4d1a0edcd9dc5',1,'PIObject']]], + ['setdefaultalignment',['setDefaultAlignment',['../class_p_i_console.html#ad5bdaa30246c6165fe87bdc3539937f0',1,'PIConsole']]], + ['setdelimiter',['setDelimiter',['../class_p_i_config.html#ae196cc6e271aa930c7c0849150df868c',1,'PIConfig']]], + ['setdevice',['setDevice',['../class_p_i_packet_extractor.html#a82db047d7e3e58f8026028857b6b69c4',1,'PIPacketExtractor']]], + ['setdisconnecttimeout',['setDisconnectTimeout',['../class_p_i_diagnostics.html#a54f87c6f4fc670cbc5c15129bebb3394',1,'PIDiagnostics']]], + ['setflag',['setFlag',['../class_p_i_flags.html#a6673f1d35533de415c32585fa07acc4c',1,'PIFlags::setFlag(const PIFlags &f, bool on=true)'],['../class_p_i_flags.html#af5e4ff71a745cd3480652f9d8073e0c6',1,'PIFlags::setFlag(const Enum &e, bool on=true)'],['../class_p_i_flags.html#ac3698f718594f1937e2c3b75173c0ccc',1,'PIFlags::setFlag(const int &i, bool on=true)']]], + ['setfooter',['setFooter',['../class_p_i_packet_extractor.html#aaf0e85876d15690e47bced1da78efa65',1,'PIPacketExtractor']]], + ['setheader',['setHeader',['../class_p_i_packet_extractor.html#ab35777c26316da887e36b0eeb56ef239',1,'PIPacketExtractor']]], + ['setinitialstate',['setInitialState',['../class_p_i_state_machine.html#a42b22e027a498659282a4838d576eb80',1,'PIStateMachine']]], + ['setinterval',['setInterval',['../class_p_i_timer.html#aceedb334c02e3ad05ec9215aa956b780',1,'PITimer']]], + ['setname',['setName',['../class_p_i_object.html#a8eb211f42dfcf7b7a1f32acabbfd6ada',1,'PIObject::setName()'],['../class_p_i_config_1_1_entry.html#a46ddf99ee1a724a9fb28d0947a4baf84',1,'PIConfig::Entry::setName()']]], + ['setnumber',['setNumber',['../class_p_i_string.html#a03446a900bdce8a41f5be7eee2c732d5',1,'PIString::setNumber(const short value, int base=10, bool *ok=0)'],['../class_p_i_string.html#a70bda23c245790c6a3b50f31a3200aa9',1,'PIString::setNumber(const ushort value, int base=10, bool *ok=0)'],['../class_p_i_string.html#a102c2fcdc4bb92141c01f2108e142991',1,'PIString::setNumber(const int value, int base=10, bool *ok=0)'],['../class_p_i_string.html#aaac03b6d596d958a8e256ccb0eb40f22',1,'PIString::setNumber(const uint value, int base=10, bool *ok=0)'],['../class_p_i_string.html#ad880c23247e4d79d44d215c883fcd766',1,'PIString::setNumber(const long value, int base=10, bool *ok=0)'],['../class_p_i_string.html#ada1c713c5622284efcc3ac1d89977161',1,'PIString::setNumber(const ulong value, int base=10, bool *ok=0)'],['../class_p_i_string.html#a2f54ca3f0ef9dde8df3fb488cbe33f7b',1,'PIString::setNumber(const llong &value, int base=10, bool *ok=0)'],['../class_p_i_string.html#aff868564bdb9e93d028bbe4b034ef74e',1,'PIString::setNumber(const ullong &value, int base=10, bool *ok=0)'],['../class_p_i_string.html#a8ee00154fbc549bd4d0035270001580a',1,'PIString::setNumber(const float value)'],['../class_p_i_string.html#a6fb55d9c34c56a3528303eb9f7419671',1,'PIString::setNumber(const double &value)'],['../class_p_i_string.html#a26f131487f10ee8a13769ae833f81fcb',1,'PIString::setNumber(const ldouble &value)']]], + ['setpacketsize',['setPacketSize',['../class_p_i_packet_extractor.html#a9c0b73a88a7ae8f4c724a4d99e34a783',1,'PIPacketExtractor']]], + ['setparameter',['setParameter',['../class_p_i_ethernet.html#a158851a3cde91615d8feaac4edb805fb',1,'PIEthernet']]], + ['setparameters',['setParameters',['../class_p_i_ethernet.html#aa2edcd2272537c2250b4542c09e7f5d2',1,'PIEthernet']]], + ['setpayloadsize',['setPayloadSize',['../class_p_i_packet_extractor.html#a0c0de7854ff8187b3cd280467a321ea5',1,'PIPacketExtractor']]], + ['setpriority',['setPriority',['../class_p_i_thread.html#ade6ddabe46917c5cef2f5da1dd613a69',1,'PIThread']]], + ['setproperty',['setProperty',['../class_p_i_object.html#a647e2f79b975cf88d636a2ca2dadfb9c',1,'PIObject']]], + ['setreadablesize',['setReadableSize',['../class_p_i_string.html#a08dad783a704578ab82b816f2cd02829',1,'PIString']]], + ['setreadaddress',['setReadAddress',['../class_p_i_ethernet.html#a4da57633bb41886a07a0a01139022ce9',1,'PIEthernet::setReadAddress(const PIString &ip, int port)'],['../class_p_i_ethernet.html#a76652ae5f391e8957c864be224d46937',1,'PIEthernet::setReadAddress(const PIString &ip_port)']]], + ['setreadip',['setReadIP',['../class_p_i_ethernet.html#a281ffec154f8a604da5f8e8494740b63',1,'PIEthernet']]], + ['setreadport',['setReadPort',['../class_p_i_ethernet.html#a13f17f1b0022b15d05879c0228bd4bba',1,'PIEthernet']]], + ['setreadtimeout',['setReadTimeout',['../class_p_i_ethernet.html#a414c18f256488c471093178137526776',1,'PIEthernet']]], + ['setsendaddress',['setSendAddress',['../class_p_i_ethernet.html#afa66a8ec37d66b17e0d1cf52dc3f9f00',1,'PIEthernet::setSendAddress(const PIString &ip, int port)'],['../class_p_i_ethernet.html#aa2f490fa2749860c2d8c58dd691e4663',1,'PIEthernet::setSendAddress(const PIString &ip_port)']]], + ['setsenderfixeddata',['setSenderFixedData',['../class_p_i_connection.html#aa547b4a4e64e9adf0c7c45171160bded',1,'PIConnection']]], + ['setsendip',['setSendIP',['../class_p_i_ethernet.html#a5f90001f1f3b49da411421fc15256a5c',1,'PIEthernet']]], + ['setsendport',['setSendPort',['../class_p_i_ethernet.html#a0866eb6385dda7b6988b29fedc45fc48',1,'PIEthernet']]], + ['setslot',['setSlot',['../class_p_i_kbd_listener.html#a5e8285dbb2c1b04fffff36c6d7db1d84',1,'PIKbdListener::setSlot()'],['../class_p_i_thread.html#a85c22bf31dae02180827f2952e3594ee',1,'PIThread::setSlot()'],['../class_p_i_timer.html#ae55067d29d1491c6e583ca8db45fd0ba',1,'PITimer::setSlot()']]], + ['setsplitmode',['setSplitMode',['../class_p_i_packet_extractor.html#aaa8b6f0d301cd7b73fc6e9570462b6a1',1,'PIPacketExtractor']]], + ['settab',['setTab',['../class_p_i_console.html#afbe2d5ae830d8096e8506114221789f0',1,'PIConsole::setTab(uint index)'],['../class_p_i_console.html#ae4214666e5ae3752189a61d76c73b7ab',1,'PIConsole::setTab(const PIString &name)']]], + ['settabbindkey',['setTabBindKey',['../class_p_i_console.html#ae2abf8fd9b17252e057852fa912565e9',1,'PIConsole::setTabBindKey(uint index, char bind_key)'],['../class_p_i_console.html#ad0826c4d2e8a1e4a1ddff1ad4df355b6',1,'PIConsole::setTabBindKey(const PIString &name, char bind_key)']]], + ['settimeout',['setTimeout',['../class_p_i_packet_extractor.html#ade4301e8cad37f9a2c887913a3b1a69e',1,'PIPacketExtractor']]], + ['settype',['setType',['../class_p_i_config_1_1_entry.html#a8d18745edbfecaf560ee5d7b65dd8aa8',1,'PIConfig::Entry']]], + ['setvalue',['setValue',['../class_p_i_variant.html#aa22bd1cc0c6999120bb3820407a8856d',1,'PIVariant::setValue(const char *v)'],['../class_p_i_variant.html#a7b5d811efd852064247c7f3b98589481',1,'PIVariant::setValue(const bool v)'],['../class_p_i_variant.html#a79fff573e5cc711dfd406cc1b669d6b8',1,'PIVariant::setValue(const char v)'],['../class_p_i_variant.html#a5a8568a8de98e912570d98ebdff9152a',1,'PIVariant::setValue(const uchar v)'],['../class_p_i_variant.html#abe151f6ec7620f2222690c3c1af39f5b',1,'PIVariant::setValue(const short v)'],['../class_p_i_variant.html#a49a9d2ccbb6a1b37ba985ef490f2b7d6',1,'PIVariant::setValue(const ushort v)'],['../class_p_i_variant.html#a5eedf14579aa37e4bd2ab018234569c5',1,'PIVariant::setValue(const int &v)'],['../class_p_i_variant.html#a2a7a792167f163f11c516a39ff91e6ff',1,'PIVariant::setValue(const uint &v)'],['../class_p_i_variant.html#ab8cf4fe353f70dd45489ad9b1c50f9d4',1,'PIVariant::setValue(const long &v)'],['../class_p_i_variant.html#a4255c426d7e88890c8e57794ff0abd09',1,'PIVariant::setValue(const ulong &v)'],['../class_p_i_variant.html#ab517be43715e8ae0f7dcbd17f16c95bc',1,'PIVariant::setValue(const llong &v)'],['../class_p_i_variant.html#abd64b1243486bf3ff8878652b9505d4f',1,'PIVariant::setValue(const ullong &v)'],['../class_p_i_variant.html#a13630b2d2dfdc27107bf357b251e0c80',1,'PIVariant::setValue(const float &v)'],['../class_p_i_variant.html#ab86b97b9877912321941535949a15598',1,'PIVariant::setValue(const double &v)'],['../class_p_i_variant.html#af319e808795d029290f1f687d5d6627d',1,'PIVariant::setValue(const ldouble &v)'],['../class_p_i_variant.html#ad5831d2dd7d2c7d4f570396acbef007b',1,'PIVariant::setValue(const complexd &v)'],['../class_p_i_variant.html#a8ab2f1166f8db46e6e68e141ee8d4063',1,'PIVariant::setValue(const complexld &v)'],['../class_p_i_variant.html#aa29e76a4b699e244e3a6679b180c30e3',1,'PIVariant::setValue(const PIBitArray &v)'],['../class_p_i_variant.html#a6c3abdf7e5d0eebe4506c8430f509ad8',1,'PIVariant::setValue(const PIByteArray &v)'],['../class_p_i_variant.html#adb68d9f360dc5f60e4e9442da7c983ef',1,'PIVariant::setValue(const PIString &v)'],['../class_p_i_variant.html#a8b664f935ad023991ee626df2abac13e',1,'PIVariant::setValue(const PIStringList &v)'],['../class_p_i_variant.html#a09c393e5e299848c8e1d06c0497bce44',1,'PIVariant::setValue(const PITime &v)'],['../class_p_i_variant.html#a9dbf3e639c99af1780f9c753822d5034',1,'PIVariant::setValue(const PIDate &v)'],['../class_p_i_variant.html#a39d61e31968269464f6023ecd1645241',1,'PIVariant::setValue(const PIDateTime &v)'],['../class_p_i_variant.html#a0f176cc2e51a5ab7e8a275a71f5166c3',1,'PIVariant::setValue(const PISystemTime &v)'],['../class_p_i_config_1_1_entry.html#ab853f549061be73216c6cf9a3b35eb2e',1,'PIConfig::Entry::setValue(const PIString &value)'],['../class_p_i_config_1_1_entry.html#aaa54ae0f45ed6a9a831859bc2f23d19b',1,'PIConfig::Entry::setValue(const PIStringList &value)'],['../class_p_i_config_1_1_entry.html#a6b61be4474ee644b3481c5990ef6f6a9',1,'PIConfig::Entry::setValue(const char *value)'],['../class_p_i_config_1_1_entry.html#a25ef9be02eebed805878cfa0e8e8d1f0',1,'PIConfig::Entry::setValue(const bool value)'],['../class_p_i_config_1_1_entry.html#af7b9092abef7e1817620d87ab77990fc',1,'PIConfig::Entry::setValue(const char value)'],['../class_p_i_config_1_1_entry.html#aa40ae09f7d30dcc31233d0a9a8311fe7',1,'PIConfig::Entry::setValue(const short value)'],['../class_p_i_config_1_1_entry.html#a163fe43914c955a72141519d4b7a456a',1,'PIConfig::Entry::setValue(const int value)'],['../class_p_i_config_1_1_entry.html#a9c4b2139fbf28d9950781a52e1c97bc0',1,'PIConfig::Entry::setValue(const long value)'],['../class_p_i_config_1_1_entry.html#a1fa1e3d6caff65808f19b9ee95950154',1,'PIConfig::Entry::setValue(const uchar value)'],['../class_p_i_config_1_1_entry.html#a7258173c103a96454f171177692d8d28',1,'PIConfig::Entry::setValue(const ushort value)'],['../class_p_i_config_1_1_entry.html#a37ae1f65fcf05808e1327b8ccba1ca38',1,'PIConfig::Entry::setValue(const uint value)'],['../class_p_i_config_1_1_entry.html#a34288a020a8a8eac9ec8d96be22d4456',1,'PIConfig::Entry::setValue(const ulong value)'],['../class_p_i_config_1_1_entry.html#a4c2e5bcbae8fc94d6a02099019dea723',1,'PIConfig::Entry::setValue(const float value)'],['../class_p_i_config_1_1_entry.html#a1fb68e7559ea156c0ad3a1477713d901',1,'PIConfig::Entry::setValue(const double value)'],['../class_p_i_config.html#a21a16d4652c57e310f9e4eb4e40dea39',1,'PIConfig::setValue(const PIString &name, const PIString &value, const PIString &type="s", bool write=true)'],['../class_p_i_config.html#ab0fd0d0f7932d805655908447dddf4ea',1,'PIConfig::setValue(const PIString &name, const PIStringList &value, bool write=true)'],['../class_p_i_config.html#ab321f10c0a70bb1e357a09879431b08c',1,'PIConfig::setValue(const PIString &name, const char *value, bool write=true)'],['../class_p_i_config.html#a47fd7b93880a60ceabaa95401fc006c9',1,'PIConfig::setValue(const PIString &name, const bool value, bool write=true)'],['../class_p_i_config.html#a05152c400b1bcc94154ce54050dfbdd8',1,'PIConfig::setValue(const PIString &name, const short value, bool write=true)'],['../class_p_i_config.html#a11affac002d95972f7023bb02a580d2c',1,'PIConfig::setValue(const PIString &name, const int value, bool write=true)'],['../class_p_i_config.html#acdac45e85e5a9e48301bb66f5e596237',1,'PIConfig::setValue(const PIString &name, const long value, bool write=true)'],['../class_p_i_config.html#aa92620b2af384471e86ed5095643d10a',1,'PIConfig::setValue(const PIString &name, const uchar value, bool write=true)'],['../class_p_i_config.html#a2252cdecef6f23dd22f68482ad2f3aa8',1,'PIConfig::setValue(const PIString &name, const ushort value, bool write=true)'],['../class_p_i_config.html#a727a3a4efbd6d4bd10592acb2e94b35c',1,'PIConfig::setValue(const PIString &name, const uint value, bool write=true)'],['../class_p_i_config.html#ad94dcedcb0e7e08e68729cba293342ff',1,'PIConfig::setValue(const PIString &name, const ulong value, bool write=true)'],['../class_p_i_config.html#ac99bcbe1e6656c15481d2b4e7a6aacae',1,'PIConfig::setValue(const PIString &name, const float value, bool write=true)'],['../class_p_i_config.html#aa45477274950fc3b50f5e6ece6299c7a',1,'PIConfig::setValue(const PIString &name, const double value, bool write=true)']]], + ['setvariable',['setVariable',['../class_p_i_evaluator.html#a066713e986ccf0abbdffc1dd4ab8a487',1,'PIEvaluator::setVariable(const PIString &name, complexd value=0.)'],['../class_p_i_evaluator.html#ad83802b50958b28193a523144b7e8d55',1,'PIEvaluator::setVariable(int index, complexd value=0.)']]], + ['setwritetimeout',['setWriteTimeout',['../class_p_i_ethernet.html#ae15ac03c2fdcab779650759b932c4660',1,'PIEthernet']]], + ['short',['Short',['../class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfa49c4522357ebcea946d477fd78eccd1c',1,'PIVariant']]], + ['showcursor',['ShowCursor',['../namespace_p_i_cout_manipulators.html#a38d041a4e2de4ca6af939837475e9387a03c25915c04fbc819d7267022e49844a',1,'PICoutManipulators']]], + ['size',['Size',['../class_p_i_packet_extractor.html#aab7f856e1fd64e7bdb2507badae99bb6a169d7eb9668b7d6077f6c00c558b12eb',1,'PIPacketExtractor::Size()'],['../class_p_i_vector.html#a5568ad6d26f2392f0a08b6c425774978',1,'PIVector::size()']]], + ['size_5fs',['size_s',['../class_p_i_vector.html#a9c4a32a229a287b5c03b99e58cdb62ee',1,'PIVector']]], + ['sleep',['sleep',['../class_p_i_system_time.html#ad290b000832a523754c315404b36ce9b',1,'PISystemTime']]], + ['sort',['sort',['../class_p_i_vector.html#ad05af044be450c64a351df48a96fea97',1,'PIVector']]], + ['space',['space',['../class_p_i_cout.html#a3ca9fbac2890b6385fa47dc8c6ab189b',1,'PICout']]], + ['specialsymbol',['SpecialSymbol',['../class_p_i_kbd_listener.html#a3e1b468bee20e5a4155f7d99d19eb716',1,'PIKbdListener']]], + ['split',['split',['../class_p_i_string.html#a2befe83e46b8e3764236445132ec023a',1,'PIString']]], + ['splitmode',['splitMode',['../class_p_i_packet_extractor.html#aea556fb1df7074461b7df1e3afa347b9',1,'PIPacketExtractor::splitMode() const '],['../class_p_i_packet_extractor.html#aab7f856e1fd64e7bdb2507badae99bb6',1,'PIPacketExtractor::SplitMode()']]], + ['start',['start',['../class_p_i_connection.html#a296ce68f2f85085bf4ecfb71580587c4',1,'PIConnection::start()'],['../class_p_i_diagnostics.html#a1773afb624fe79976ad9385705f24d02',1,'PIDiagnostics::start()'],['../class_p_i_console.html#a3d5a998c901b37e73c105754135de73f',1,'PIConsole::start()'],['../class_p_i_thread.html#a5fb7161b42840be7fb2f738046887b39',1,'PIThread::start(int timer_delay)'],['../class_p_i_thread.html#a38785bbce4ef9afb7116cea78beffa08',1,'PIThread::start(ThreadFunc func, int timer_delay)'],['../class_p_i_timer.html#afbe09c4d09f0dc897045037c1042cd70',1,'PITimer::start()'],['../class_p_i_timer.html#a9e4971a2f541ebac94057a61046667ce',1,'PITimer::start(int interval_ms_i)'],['../class_p_i_timer.html#a65431888fc569599e6b3ff27c1617e00',1,'PITimer::start(double interval_ms_d)']]], + ['startallsenders',['startAllSenders',['../class_p_i_connection.html#ab4cb20685c610275c31c4c1a4e4de9c6',1,'PIConnection']]], + ['startallthreadedreads',['startAllThreadedReads',['../class_p_i_connection.html#aa0319a04d2b0a72809347b556fbde478',1,'PIConnection']]], + ['started',['started',['../class_p_i_thread.html#a6b91eb8632e75e0f00a625f28a0bedd1',1,'PIThread']]], + ['startonce',['startOnce',['../class_p_i_thread.html#a44a9fe015ea8288a0a336b614ff2962b',1,'PIThread::startOnce()'],['../class_p_i_thread.html#ad50035fe7d3a2557178b6b46f6fa4861',1,'PIThread::startOnce(ThreadFunc func)']]], + ['startsender',['startSender',['../class_p_i_connection.html#ae21103d16eb22cefe68cf5f237f2052a',1,'PIConnection']]], + ['startswith',['startsWith',['../class_p_i_string.html#a273612208fcf37a4075e517eba410920',1,'PIString']]], + ['startthreadedread',['startThreadedRead',['../class_p_i_connection.html#a0172eca55562a296daa6e971d879443d',1,'PIConnection::startThreadedRead(const PIString &full_path)'],['../class_p_i_connection.html#acb0bfcc3c1e36d1d9881e31a331e2d59',1,'PIConnection::startThreadedRead(const PIIODevice *dev)']]], + ['state',['State',['../struct_p_i_state_machine_1_1_state.html#a04544461dd2553e8b275bda02c7ba728',1,'PIStateMachine::State::State()'],['../struct_p_i_state_machine_1_1_state.html#a85a5ee0d2f96d24beb3eb1c6c900dfa9',1,'PIStateMachine::State::State(Type v, const PIString &n="", Handler h=0)']]], + ['state',['State',['../struct_p_i_state_machine_1_1_state.html',1,'PIStateMachine']]], + ['statescount',['statesCount',['../class_p_i_state_machine.html#ab0e424ab27e2edca90cdf1c368f4686f',1,'PIStateMachine']]], + ['stdstring',['stdString',['../class_p_i_string.html#a16e633f140ce9fd27fdddd2369261721',1,'PIString']]], + ['stop',['stop',['../class_p_i_connection.html#afd9148e6424e609eff5e42e456788533',1,'PIConnection::stop()'],['../class_p_i_console.html#afd53d4f09d0bad958f0d2073f56d47c5',1,'PIConsole::stop()'],['../class_p_i_thread.html#a37e179466edd8011aca3a07e10153e62',1,'PIThread::stop()'],['../class_p_i_timer.html#ae43b33b748524fbef3ec5ad705977737',1,'PITimer::stop()']]], + ['stopallsenders',['stopAllSenders',['../class_p_i_connection.html#a96a185e9d93134b8d092265c230158a3',1,'PIConnection']]], + ['stopallthreadedreads',['stopAllThreadedReads',['../class_p_i_connection.html#a48c592b6ce3b7d629a379d3858d3fcfa',1,'PIConnection']]], + ['stopped',['stopped',['../class_p_i_thread.html#aa6350430814f777fdce81f99cbba4c1a',1,'PIThread']]], + ['stopsender',['stopSender',['../class_p_i_connection.html#ab2021a8aadf16591b52196a368700ba6',1,'PIConnection']]], + ['stopthreadedread',['stopThreadedRead',['../class_p_i_connection.html#a57f58250839c50d221d32f8d1fb62737',1,'PIConnection::stopThreadedRead(const PIString &full_path)'],['../class_p_i_connection.html#a5ca12246273a1871fe6c53d535f7ab7f',1,'PIConnection::stopThreadedRead(const PIIODevice *dev)']]], + ['string',['String',['../class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfa96a611933bbf5065a29e72e06196f547',1,'PIVariant']]], + ['stringlist',['StringList',['../class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfae25be87d1c676373a0356aeedf0e6914',1,'PIVariant']]], + ['superclassname',['superClassName',['../class_p_i_object.html#a41060ba64a882ef4c3b24dc868c5635c',1,'PIObject']]], + ['switchtostate',['switchToState',['../class_p_i_state_machine.html#af4aa7b86c70425bfc9690e4c27ab6cf7',1,'PIStateMachine']]], + ['systemtime',['SystemTime',['../class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfa4fc51ffc735800b30adbc4176e3f29e4',1,'PIVariant']]], + ['systemtimeseconds',['SystemTimeSeconds',['../class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579a412b529aeecff9f150ee7d42c32006f2',1,'PIConsole']]], + ['systemtimesplit',['SystemTimeSplit',['../class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579a4d54e68db54f775ca7e17b307c4f7787',1,'PIConsole']]] +]; diff --git a/pip/doc/html/search/all_14.html b/pip/doc/html/search/all_14.html new file mode 100644 index 0000000..05de773 --- /dev/null +++ b/pip/doc/html/search/all_14.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/all_14.js b/pip/doc/html/search/all_14.js new file mode 100644 index 0000000..66406c6 --- /dev/null +++ b/pip/doc/html/search/all_14.js @@ -0,0 +1,71 @@ +var searchData= +[ + ['tab',['Tab',['../namespace_p_i_cout_manipulators.html#a66678520ac7701c016e3e90e17a7dfa2a9d183ab2eef93987077269cad1047bcb',1,'PICoutManipulators']]], + ['tabscount',['tabsCount',['../class_p_i_console.html#a6e1080918dd4d36347fe8e47318a5761',1,'PIConsole']]], + ['take_5fback',['take_back',['../class_p_i_vector.html#ae951eefed7d44357b714224d9f4558b1',1,'PIVector']]], + ['take_5ffront',['take_front',['../class_p_i_vector.html#a69dbb89bfade5d2c6e4ad18c9a33f718',1,'PIVector']]], + ['takecword',['takeCWord',['../class_p_i_string.html#a15391624f236a1c0bf2b1f6c90a42027',1,'PIString']]], + ['takeleft',['takeLeft',['../class_p_i_string.html#abe1d54c60781701c390712193e775129',1,'PIString']]], + ['takeline',['takeLine',['../class_p_i_string.html#a32449c92418db399e96faeb0e67ce6b8',1,'PIString']]], + ['takemid',['takeMid',['../class_p_i_string.html#a923862dee9a73d4fe229f9c7106dd2c3',1,'PIString']]], + ['takenumber',['takeNumber',['../class_p_i_string.html#a39c2f4b34d43c3f2dd2c85eb37959cba',1,'PIString']]], + ['takerange',['takeRange',['../class_p_i_string.html#ada971d7b12743e827811e124c7bb2809',1,'PIString']]], + ['takeright',['takeRight',['../class_p_i_string.html#ab06270cc3639a716d77747f6e0e65a73',1,'PIString']]], + ['takesymbol',['takeSymbol',['../class_p_i_string.html#a2717788f206607e15afa2eaa2466f2fb',1,'PIString']]], + ['takeword',['takeWord',['../class_p_i_string.html#a66dfa56b97db69f1b3046bfed79d8dd9',1,'PIString']]], + ['tcp_5fclient',['TCP_Client',['../class_p_i_ethernet.html#a7abf73f51652b00af7a6198be2fa0f5ca468f2c843283f472aa48487bebc38416',1,'PIEthernet']]], + ['tcp_5fserver',['TCP_Server',['../class_p_i_ethernet.html#a7abf73f51652b00af7a6198be2fa0f5caf2c9526cd4b694f14a0d8a4693a5b76c',1,'PIEthernet']]], + ['terminate',['terminate',['../class_p_i_thread.html#a2004de7b6aa59ecb50321571b932ec20',1,'PIThread']]], + ['thread',['Thread',['../class_p_i_timer.html#a02b36fbf7ae0839eb72c95cde343b719aee4dbda7d96c1ec6bc4a88310e7d4e51',1,'PITimer']]], + ['threadedread',['threadedRead',['../class_p_i_binary_log.html#a78ea56ff4489d441205ded106c63966e',1,'PIBinaryLog::threadedRead()'],['../class_p_i_i_o_device.html#a3c744704af365358af074e1089e20068',1,'PIIODevice::threadedRead()']]], + ['threadrt',['ThreadRT',['../class_p_i_timer.html#a02b36fbf7ae0839eb72c95cde343b719a80970cf7914f7a34ad94fa6620b1f66b',1,'PITimer']]], + ['tick',['tick',['../class_p_i_state_machine.html#a37e8b9df953d6948e84d061bc02e5903',1,'PIStateMachine::tick()'],['../class_p_i_state_machine.html#a6a262d1d71be95b5b5d4f5d7b276c8f7',1,'PIStateMachine::tick(void *data, int delim)'],['../class_p_i_timer.html#af94038669f0798c21cc2208da9945406',1,'PITimer::tick()']]], + ['tickevent',['tickEvent',['../class_p_i_timer.html#a707cb908c36f42dab13338c42ede4a81',1,'PITimer']]], + ['time',['Time',['../class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfa0114b5413f8a42bb71769a22e306e4a1',1,'PIVariant']]], + ['timeout',['Timeout',['../class_p_i_packet_extractor.html#aab7f856e1fd64e7bdb2507badae99bb6a4ea0db7f406eaa97adbacd580b919903',1,'PIPacketExtractor::Timeout()'],['../class_p_i_packet_extractor.html#a369b3bfd48065cf9da70788015d6d020',1,'PIPacketExtractor::timeout() const ']]], + ['timerimplementation',['TimerImplementation',['../class_p_i_timer.html#a02b36fbf7ae0839eb72c95cde343b719',1,'PITimer']]], + ['to',['to',['../struct_p_i_state_machine_1_1_rule.html#a68721e6beda4580b09fe52e80d47b935',1,'PIStateMachine::Rule']]], + ['tobase64',['toBase64',['../class_p_i_byte_array.html#afa9bf40116570c11328f117849180f7f',1,'PIByteArray']]], + ['tobitarray',['toBitArray',['../class_p_i_variant.html#a0b4708bac5608fa3676bf409b76b5d23',1,'PIVariant']]], + ['tobool',['toBool',['../class_p_i_string.html#ab347fe3a167a3a101e5028cc76826353',1,'PIString::toBool()'],['../class_p_i_variant.html#a9adb44018cf731bad2b7dcce2dde3684',1,'PIVariant::toBool()']]], + ['tobytearray',['toByteArray',['../class_p_i_string.html#a6438ae63b451975a06699c2c6c02221a',1,'PIString::toByteArray()'],['../class_p_i_variant.html#acadd0aee889bc4bd59fdd8bae13410df',1,'PIVariant::toByteArray()']]], + ['tochar',['toChar',['../class_p_i_string.html#a33520b70a2236d83f50d5b028497db65',1,'PIString']]], + ['tocharptr',['toCharPtr',['../class_p_i_char.html#a9baee39596206d0977ebfb5e3d12f810',1,'PIChar']]], + ['tocomplexd',['toComplexd',['../class_p_i_variant.html#a95a6405618b51ea226fc1aa788ad2a90',1,'PIVariant']]], + ['tocomplexld',['toComplexld',['../class_p_i_variant.html#a02ed61b14e6a9c71510d5c4f05d218c4',1,'PIVariant']]], + ['todate',['toDate',['../class_p_i_variant.html#af533ce32863a9954e7d761ef56ab582b',1,'PIVariant']]], + ['todatetime',['toDateTime',['../class_p_i_variant.html#a99afae3218f68cc74bda4af6baa467d4',1,'PIVariant']]], + ['todouble',['toDouble',['../class_p_i_string.html#a8a9720daaf84455e7a839a5b8bcf6fa7',1,'PIString::toDouble()'],['../class_p_i_variant.html#a3f92e859630f5c853c644b494a194798',1,'PIVariant::toDouble()']]], + ['tofloat',['toFloat',['../class_p_i_string.html#a4525841adcb8929e486e61d499430559',1,'PIString::toFloat()'],['../class_p_i_variant.html#a7765fde4363c83ef630ca53ea23b447f',1,'PIVariant::toFloat()']]], + ['toint',['toInt',['../class_p_i_string.html#aebe1038b3abcbf976dbffc3f3b0de826',1,'PIString::toInt()'],['../class_p_i_variant.html#aef7526f9ffb911ac818c13a4fa8de923',1,'PIVariant::toInt()']]], + ['toldouble',['toLDouble',['../class_p_i_string.html#af2739348013dfcd75ce88acafafcce73',1,'PIString::toLDouble()'],['../class_p_i_variant.html#aa101193f0a15d6232a8ab6ed39dfcd66',1,'PIVariant::toLDouble()']]], + ['tollong',['toLLong',['../class_p_i_string.html#a18023a92bd2ba5a90dc014cbfd77bc9c',1,'PIString::toLLong()'],['../class_p_i_variant.html#ad6f468658cc0803d7ec532c8ebaf394e',1,'PIVariant::toLLong()']]], + ['tolong',['toLong',['../class_p_i_string.html#a32e0cd5008be019860da2be3c136f9ce',1,'PIString']]], + ['tolower',['toLower',['../class_p_i_char.html#a0d4ae4c2e8e77e21762121f82be79a2e',1,'PIChar']]], + ['tolowercase',['toLowerCase',['../class_p_i_string.html#a658e07bdbf43996c39f545218122989b',1,'PIString']]], + ['tomicroseconds',['toMicroseconds',['../class_p_i_system_time.html#a0cb8a1a609186771ad619620d01c0544',1,'PISystemTime']]], + ['tomilliseconds',['toMilliseconds',['../class_p_i_system_time.html#aff38007b354d3420f25a5d37640e1bf5',1,'PISystemTime']]], + ['tonanoseconds',['toNanoseconds',['../class_p_i_system_time.html#a7732f3585eab387d80eaa3d68b620bc4',1,'PISystemTime']]], + ['toseconds',['toSeconds',['../class_p_i_system_time.html#a296f501657919b2d66747abb82f606cb',1,'PISystemTime']]], + ['toshort',['toShort',['../class_p_i_string.html#a03aa66b2e10d725f8c5310bdec3a9b76',1,'PIString']]], + ['tostring',['toString',['../class_p_i_variant.html#ae9b75422814a712a2c52ecfe19ca13ba',1,'PIVariant']]], + ['tostringlist',['toStringList',['../class_p_i_variant.html#a734a89a0951763bbdeae2cf16004684d',1,'PIVariant']]], + ['tosystemtime',['toSystemTime',['../class_p_i_variant.html#af353cc0fba770fceb61a0dfa4d87eba7',1,'PIVariant']]], + ['totime',['toTime',['../class_p_i_variant.html#a5b25bc3f783d63dad8ee68720dbfa9ed',1,'PIVariant']]], + ['touint',['toUInt',['../class_p_i_string.html#aa243f8732d1ce3187329642025c49623',1,'PIString']]], + ['toullong',['toULLong',['../class_p_i_string.html#a15475a9e2b65a70208534431ee28f75a',1,'PIString']]], + ['toulong',['toULong',['../class_p_i_string.html#a75630ad632c3887e0ec7daf850a4281a',1,'PIString']]], + ['toupper',['toUpper',['../class_p_i_char.html#a48a9400b58447e7a492d346dd75ef09c',1,'PIChar']]], + ['touppercase',['toUpperCase',['../class_p_i_string.html#a54e5e2c6fcf1869228b3fb48a9a8bae1',1,'PIString']]], + ['toushort',['toUShort',['../class_p_i_string.html#a6ab34efa2cf190bfa8309d140308e8eb',1,'PIString']]], + ['tovalue',['toValue',['../class_p_i_variant.html#a5b1b4af9ab4bdd8c5bda7a8223a6b6f5',1,'PIVariant']]], + ['tovector',['toVector',['../class_p_i_set.html#aa922f639869b9556b0ade5a4099fe0de',1,'PISet']]], + ['transferfunction',['TransferFunction',['../struct_transfer_function.html',1,'']]], + ['transition',['transition',['../class_p_i_state_machine.html#ad848623075776b802de3fc22b4a08cea',1,'PIStateMachine']]], + ['trim',['trim',['../class_p_i_string.html#a83a888181b131ccff5854c080ef706ba',1,'PIString::trim()'],['../class_p_i_string_list.html#aebcbef8d88b0081f7081a23331f66364',1,'PIStringList::trim()']]], + ['trimmed',['trimmed',['../class_p_i_string.html#ab1050c0603206d40ec0a1a315cc87ca6',1,'PIString']]], + ['trylock',['tryLock',['../class_p_i_mutex.html#a5c4ed063c5c7d7ee94ff3402d320851a',1,'PIMutex']]], + ['type',['type',['../class_p_i_variant.html#abc974cec179287663d03da76fac7f928',1,'PIVariant::type()'],['../class_p_i_config_1_1_entry.html#af1fcf69cc6be42f06468f59aa2614fb8',1,'PIConfig::Entry::type()'],['../class_p_i_ethernet.html#af42a7ca0266f28bc9a389aca1618f43f',1,'PIEthernet::type()'],['../class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdf',1,'PIVariant::Type()'],['../class_p_i_ethernet.html#a7abf73f51652b00af7a6198be2fa0f5c',1,'PIEthernet::Type()']]], + ['typefromname',['typeFromName',['../class_p_i_variant.html#ab3cdcbbf04745c775c2090b268f54d35',1,'PIVariant']]], + ['typename',['typeName',['../class_p_i_variant.html#ad349e0701add42efffd83fb19dee1216',1,'PIVariant::typeName() const '],['../class_p_i_variant.html#a36b38e5f7e13d1bb3f205a9ff0673490',1,'PIVariant::typeName(PIVariant::Type type)']]] +]; diff --git a/pip/doc/html/search/all_15.html b/pip/doc/html/search/all_15.html new file mode 100644 index 0000000..0c43e50 --- /dev/null +++ b/pip/doc/html/search/all_15.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/all_15.js b/pip/doc/html/search/all_15.js new file mode 100644 index 0000000..67d0769 --- /dev/null +++ b/pip/doc/html/search/all_15.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['uchar',['UChar',['../class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfa513ed493f1e7b30342987c3516f81730',1,'PIVariant']]], + ['udp',['UDP',['../class_p_i_ethernet.html#a7abf73f51652b00af7a6198be2fa0f5ca17c6e599807b02ebaf8ab6decbd17c7b',1,'PIEthernet']]], + ['uint',['UInt',['../class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfa75efd8b4f684b3e23fdca5a3c9ce7616',1,'PIVariant']]], + ['ullong',['ULLong',['../class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfae5edbc0259b17315545edd0949e8a2a8',1,'PIVariant']]], + ['ulong',['ULong',['../class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfaff5169e651a3109ba5ac4de618343fe5',1,'PIVariant']]], + ['underline',['Underline',['../class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579a46936e800bd76246b08d3093cd7b31c9',1,'PIConsole::Underline()'],['../namespace_p_i_cout_manipulators.html#a4d8fa322c1a8b3fa285759056aae1b2aa221437253ff3dc9de5d3762117f5c329',1,'PICoutManipulators::Underline()']]], + ['unknown',['Unknown',['../class_p_i_diagnostics.html#aabf8f59b49ab62435e220106f204712fab50c35309ba981ccc60aa55f4b391976',1,'PIDiagnostics::Unknown()'],['../class_p_i_protocol.html#aef1f5fa8173bcc220b07f084155ec868a53df11ad71f5084b02a504df41fd977a',1,'PIProtocol::Unknown()']]], + ['unknownvariables',['unknownVariables',['../class_p_i_evaluator.html#a7d1a1ce4eea722fde90e487f397cd25c',1,'PIEvaluator']]], + ['unlock',['unlock',['../class_p_i_mutex.html#aae483d17150e38436ca25a1bd26b04c2',1,'PIMutex::unlock()'],['../class_p_i_thread.html#a82baf1fe4608234ba76b68540100ee73',1,'PIThread::unlock()']]], + ['uparrow',['UpArrow',['../class_p_i_kbd_listener.html#a3e1b468bee20e5a4155f7d99d19eb716ae4af7e9101a6ebcca1a0b94f5d389297',1,'PIKbdListener']]], + ['ushort',['UShort',['../class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfa5d69d3e100a348885d1e8c2e70617b79',1,'PIVariant']]] +]; diff --git a/pip/doc/html/search/all_16.html b/pip/doc/html/search/all_16.html new file mode 100644 index 0000000..3206fb4 --- /dev/null +++ b/pip/doc/html/search/all_16.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/all_16.js b/pip/doc/html/search/all_16.js new file mode 100644 index 0000000..dc7339a --- /dev/null +++ b/pip/doc/html/search/all_16.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['validatefooter',['validateFooter',['../class_p_i_packet_extractor.html#ad52e9d11097e5b1d846787fcd1acb5ed',1,'PIPacketExtractor']]], + ['validateheader',['validateHeader',['../class_p_i_packet_extractor.html#a96d2078759a69327089faeb37e09bf69',1,'PIPacketExtractor']]], + ['validatepayload',['validatePayload',['../class_p_i_packet_extractor.html#ab1b8d323e26be97a126f3950e37ba647',1,'PIPacketExtractor']]], + ['value',['value',['../struct_p_i_state_machine_1_1_state.html#a65e79c60532034d5b2be3ee8fe672d43',1,'PIStateMachine::State::value()'],['../class_p_i_config_1_1_entry.html#a247679755f333bfd4398088122940ba3',1,'PIConfig::Entry::value()']]], + ['variableindex',['variableIndex',['../class_p_i_evaluator.html#ac20bb44234749ce227df1b95fcc319ae',1,'PIEvaluator']]] +]; diff --git a/pip/doc/html/search/all_17.html b/pip/doc/html/search/all_17.html new file mode 100644 index 0000000..467bb0c --- /dev/null +++ b/pip/doc/html/search/all_17.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/all_17.js b/pip/doc/html/search/all_17.js new file mode 100644 index 0000000..e827dfb --- /dev/null +++ b/pip/doc/html/search/all_17.js @@ -0,0 +1,20 @@ +var searchData= +[ + ['what_20is_20pip',['What is PIP',['../index.html',1,'']]], + ['wait_5fforever',['WAIT_FOREVER',['../piincludes_8h.html#ac89d2c332821be06166c210249b671e7',1,'piincludes.h']]], + ['waitforfinish',['waitForFinish',['../class_p_i_console.html#ad0a588d352faf1bb39cba0bea8b8d0c0',1,'PIConsole::waitForFinish()'],['../class_p_i_thread.html#ae325266c7f3484ad52c0a5c690cc222c',1,'PIThread::waitForFinish()']]], + ['waitforstart',['waitForStart',['../class_p_i_thread.html#a8bcffcc0d12bdd6d8ddd455a15241313',1,'PIThread']]], + ['weak_5fconnect',['WEAK_CONNECT',['../class_p_i_object.html#a52fc22658e025b4c15c8a2454d81b289',1,'PIObject']]], + ['weak_5fconnect0',['WEAK_CONNECT0',['../class_p_i_object.html#aaaba5b68617a43903056bc175b8cd162',1,'PIObject']]], + ['weak_5fconnect1',['WEAK_CONNECT1',['../class_p_i_object.html#a37d80492e781bf82b9c22c56977da81e',1,'PIObject']]], + ['weak_5fconnect2',['WEAK_CONNECT2',['../class_p_i_object.html#a34134cc70172ef5a8d38ba8eb0db327d',1,'PIObject']]], + ['weak_5fconnect3',['WEAK_CONNECT3',['../class_p_i_object.html#a601eb7e6e4c3c1a2ba741abbaf271fed',1,'PIObject']]], + ['weak_5fconnect4',['WEAK_CONNECT4',['../class_p_i_object.html#a483ad0828f2c221308d95fd07ba1ee6e',1,'PIObject']]], + ['white',['White',['../class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579a754394a1f1591ca656e42292e2e6ccc9',1,'PIConsole::White()'],['../namespace_p_i_cout_manipulators.html#a4d8fa322c1a8b3fa285759056aae1b2aaec78b8c3f9b9c708d6c5a60021c0df51',1,'PICoutManipulators::White()']]], + ['windows',['WINDOWS',['../piincludes_8h.html#a987b73d7cc6da72732af75c5d7872d29',1,'piincludes.h']]], + ['write',['write',['../class_p_i_connection.html#a37960527c1357e6e2e58e2656c21719b',1,'PIConnection::write(const PIString &full_path, const PIByteArray &data)'],['../class_p_i_connection.html#ad659e36901a3b7c1724325c74473157f',1,'PIConnection::write(const PIIODevice *dev, const PIByteArray &data)'],['../class_p_i_ethernet.html#a06c2ca73668cbdefc9fad4749b465ff0',1,'PIEthernet::write(const void *data, int max_size)'],['../class_p_i_ethernet.html#a9dbe618372c2ad3f5a5e02b638b2aaf1',1,'PIEthernet::write(const PIByteArray &data)'],['../class_p_i_packet_extractor.html#aa3348c0df86c7de38ab6cfc02f3cfa2b',1,'PIPacketExtractor::write()'],['../class_p_i_serial.html#a544a191409e7088b1c7e6a35844c8f7b',1,'PISerial::write()']]], + ['writeall',['writeAll',['../class_p_i_config.html#a7d228b9feed1e5a301da526ea4cd4d01',1,'PIConfig']]], + ['writetimeout',['writeTimeout',['../class_p_i_ethernet.html#a377813eb8c2b6c223a543ce8a001ef99',1,'PIEthernet']]], + ['wrongcount',['wrongCount',['../class_p_i_diagnostics.html#a92a18a79947e0322f67d74c045c71682',1,'PIDiagnostics']]], + ['wrongcount_5fptr',['wrongCount_ptr',['../class_p_i_diagnostics.html#adbacd5ebed2dabee1c44f5c2cd8ce48d',1,'PIDiagnostics']]] +]; diff --git a/pip/doc/html/search/all_18.html b/pip/doc/html/search/all_18.html new file mode 100644 index 0000000..b1de499 --- /dev/null +++ b/pip/doc/html/search/all_18.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/all_18.js b/pip/doc/html/search/all_18.js new file mode 100644 index 0000000..088b3c8 --- /dev/null +++ b/pip/doc/html/search/all_18.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['yellow',['Yellow',['../class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579a8fcb095f1009154392e0f0c966d838f6',1,'PIConsole::Yellow()'],['../namespace_p_i_cout_manipulators.html#a4d8fa322c1a8b3fa285759056aae1b2aac9ad26d78d153d33986dd243d79e6704',1,'PICoutManipulators::Yellow()']]] +]; diff --git a/pip/doc/html/search/all_2.html b/pip/doc/html/search/all_2.html new file mode 100644 index 0000000..1ee90b9 --- /dev/null +++ b/pip/doc/html/search/all_2.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/all_2.js b/pip/doc/html/search/all_2.js new file mode 100644 index 0000000..2e7c672 --- /dev/null +++ b/pip/doc/html/search/all_2.js @@ -0,0 +1,27 @@ +var searchData= +[ + ['back',['back',['../class_p_i_vector.html#afb5b4f1521561b82ef18a740b89f3838',1,'PIVector::back()'],['../class_p_i_vector.html#ab6419acbdf9f34da326890b61a6b6888',1,'PIVector::back() const ']]], + ['backblack',['BackBlack',['../class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579a92a8473a8b9197c3a1c13900cc9711b2',1,'PIConsole::BackBlack()'],['../namespace_p_i_cout_manipulators.html#a4d8fa322c1a8b3fa285759056aae1b2aa1f0b497e6f2135f149808e108f25b1d4',1,'PICoutManipulators::BackBlack()']]], + ['backblue',['BackBlue',['../class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579a0b579bc45bf31df6bad7baa3b0e1ce75',1,'PIConsole::BackBlue()'],['../namespace_p_i_cout_manipulators.html#a4d8fa322c1a8b3fa285759056aae1b2aaecc0d0c7be125b3368906502c0e0b355',1,'PICoutManipulators::BackBlue()']]], + ['backcyan',['BackCyan',['../class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579ab34059af712560e14f4720fb33b1ef07',1,'PIConsole::BackCyan()'],['../namespace_p_i_cout_manipulators.html#a4d8fa322c1a8b3fa285759056aae1b2aa585ef724bf93605bbaa3a7e582e9669b',1,'PICoutManipulators::BackCyan()']]], + ['backgreen',['BackGreen',['../class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579a2aca7018a5a425d1a51981e6753d2b9c',1,'PIConsole::BackGreen()'],['../namespace_p_i_cout_manipulators.html#a4d8fa322c1a8b3fa285759056aae1b2aa0056f6bdb9e774d1c251baf736545741',1,'PICoutManipulators::BackGreen()']]], + ['backmagenta',['BackMagenta',['../class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579af98223da559470901eee2a9721647846',1,'PIConsole::BackMagenta()'],['../namespace_p_i_cout_manipulators.html#a4d8fa322c1a8b3fa285759056aae1b2aa21b89f914b3f779f5eefe70a99270471',1,'PICoutManipulators::BackMagenta()']]], + ['backred',['BackRed',['../class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579aa2c0f1e23fb2d5e39f38f768a73c8522',1,'PIConsole::BackRed()'],['../namespace_p_i_cout_manipulators.html#a4d8fa322c1a8b3fa285759056aae1b2aa25a764174c876db1fdfa053435624d12',1,'PICoutManipulators::BackRed()']]], + ['backspace',['Backspace',['../namespace_p_i_cout_manipulators.html#a38d041a4e2de4ca6af939837475e9387a0c59680927066a05eddf8e3ee61c802d',1,'PICoutManipulators']]], + ['backwhite',['BackWhite',['../class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579ab70bbc35133c405030513695fda472bb',1,'PIConsole::BackWhite()'],['../namespace_p_i_cout_manipulators.html#a4d8fa322c1a8b3fa285759056aae1b2aa5534e933dca8208950b17034672a1ca7',1,'PICoutManipulators::BackWhite()']]], + ['backyellow',['BackYellow',['../class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579a8bbeb50121d330e27b27f7a94731a3b5',1,'PIConsole::BackYellow()'],['../namespace_p_i_cout_manipulators.html#a4d8fa322c1a8b3fa285759056aae1b2aa0ed38ef4734192d2772e0e07bd389dec',1,'PICoutManipulators::BackYellow()']]], + ['bad',['Bad',['../class_p_i_diagnostics.html#aabf8f59b49ab62435e220106f204712fac8268eaf57232ad3cf9b2a91ead6748b',1,'PIDiagnostics::Bad()'],['../class_p_i_protocol.html#aef1f5fa8173bcc220b07f084155ec868aab6ef6da8e37ad2a78028a631bc1bd26',1,'PIProtocol::Bad()']]], + ['begin',['begin',['../class_p_i_thread.html#a70d5c858e8b7144280b8b216304ce1d0',1,'PIThread']]], + ['bin',['Bin',['../class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579a35a7fc42f3436533338bd2bfa096afdb',1,'PIConsole::Bin()'],['../namespace_p_i_cout_manipulators.html#a4d8fa322c1a8b3fa285759056aae1b2aa29a58835892a21d07f3b0dc97ef4f44e',1,'PICoutManipulators::Bin()']]], + ['bitarray',['BitArray',['../class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfa150c2f8336b8aa55ba766aeae271a9ef',1,'PIVariant']]], + ['black',['Black',['../class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579a3328cd4af8268e8b4ebf26ce8c230862',1,'PIConsole::Black()'],['../namespace_p_i_cout_manipulators.html#a4d8fa322c1a8b3fa285759056aae1b2aa405fba724b4f9bb57486ef4a328c23ec',1,'PICoutManipulators::Black()']]], + ['blink',['Blink',['../class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579a91eace12e9f59cb0ad6a6b90adb0aac6',1,'PIConsole::Blink()'],['../namespace_p_i_cout_manipulators.html#a4d8fa322c1a8b3fa285759056aae1b2aa8b0945213fe7cca2148bd54938fa16c3',1,'PICoutManipulators::Blink()']]], + ['blue',['Blue',['../class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579a4bba54e63c8d31705a555f43c931bb98',1,'PIConsole::Blue()'],['../namespace_p_i_cout_manipulators.html#a4d8fa322c1a8b3fa285759056aae1b2aa26854a71d7f1dd9439e0114d3961c1e4',1,'PICoutManipulators::Blue()']]], + ['bold',['Bold',['../class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579a78328fa8e10b199523d20b782d6fbc5b',1,'PIConsole::Bold()'],['../namespace_p_i_cout_manipulators.html#a4d8fa322c1a8b3fa285759056aae1b2aa527c1b697df8b9dd74ba337663375149',1,'PICoutManipulators::Bold()']]], + ['bool',['Bool',['../class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfaa3e49597dd8751e48ca20b830d7408bb',1,'PIVariant']]], + ['boundeddevices',['boundedDevices',['../class_p_i_connection.html#a6efb56a368a5498f63b5c6e15dfebcf9',1,'PIConnection']]], + ['branch',['Branch',['../class_p_i_config_1_1_branch.html',1,'PIConfig']]], + ['broadcast',['broadcast',['../struct_p_i_ethernet_1_1_interface.html#a840af238c8f0ec3216b7978d4a896ef8',1,'PIEthernet::Interface::broadcast()'],['../class_p_i_ethernet.html#abd3b6f9ba04b899316f8bd7067ec03e7',1,'PIEthernet::broadcast()'],['../class_p_i_ethernet.html#ae03a64ce3d7d8a1e95b2212ab2497f55af792cda5436050309ee9368d6ac5e6f7',1,'PIEthernet::Broadcast()']]], + ['buffersize',['bufferSize',['../class_p_i_packet_extractor.html#ab9598fdc2e3a641a4d1b4a5c7b62313f',1,'PIPacketExtractor']]], + ['bytearray',['ByteArray',['../class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfaaf9c597dd4d7b17fe96746c96252a16f',1,'PIVariant']]] +]; diff --git a/pip/doc/html/search/all_3.html b/pip/doc/html/search/all_3.html new file mode 100644 index 0000000..85c4a81 --- /dev/null +++ b/pip/doc/html/search/all_3.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/all_3.js b/pip/doc/html/search/all_3.js new file mode 100644 index 0000000..97a9b8f --- /dev/null +++ b/pip/doc/html/search/all_3.js @@ -0,0 +1,62 @@ +var searchData= +[ + ['cc_5fgcc',['CC_GCC',['../piincludes_8h.html#ac1b21a2fcec2c0b8a3c5a463d9296979',1,'piincludes.h']]], + ['cc_5fother',['CC_OTHER',['../piincludes_8h.html#a572d4f1b7fe8cb972e492e9d7fd83cd5',1,'CC_OTHER(): piincludes.h'],['../piincludes_8h.html#a572d4f1b7fe8cb972e492e9d7fd83cd5',1,'CC_OTHER(): piincludes.h']]], + ['cc_5fvc',['CC_VC',['../piincludes_8h.html#a9e439bece2ee7f7fef34febe9b317a8f',1,'piincludes.h']]], + ['channels',['channels',['../class_p_i_connection.html#a9b6d693bd94c74a09b3374cbc9bbf65c',1,'PIConnection']]], + ['char',['Char',['../class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfa45c5f8b793d601954d4a9489370abe64',1,'PIVariant']]], + ['check',['check',['../class_p_i_evaluator.html#a1eae7848dc5d9d740a18acf4538ec34f',1,'PIEvaluator']]], + ['checksumplain32',['checksumPlain32',['../class_p_i_byte_array.html#acbf4fa4d378627d648f6634bbf08349d',1,'PIByteArray']]], + ['checksumplain8',['checksumPlain8',['../class_p_i_byte_array.html#aeec044f424697f902aa2903bc74a889c',1,'PIByteArray']]], + ['child',['child',['../class_p_i_config_1_1_entry.html#a873896bbb710a12d14f0164bb31abc56',1,'PIConfig::Entry']]], + ['childcount',['childCount',['../class_p_i_config_1_1_entry.html#a153b89897dc1f13847f7c2932a68bf9d',1,'PIConfig::Entry']]], + ['children',['children',['../class_p_i_config_1_1_entry.html#ab3009e4da745a3657a0e21f1b37b617d',1,'PIConfig::Entry']]], + ['classname',['className',['../class_p_i_object.html#a5da8208d12e37e5277db308939208150',1,'PIObject']]], + ['clear',['clear',['../class_p_i_vector.html#a1eac8cb055835b44a4d7b718e976fbc3',1,'PIVector::clear()'],['../class_p_i_config.html#a5183a5859cd1006d4e93bf007b28fd2b',1,'PIConfig::clear()']]], + ['clearcustomstatus',['clearCustomStatus',['../class_p_i_console.html#ac2fa6d3e2f715e709c24c557847d0a1c',1,'PIConsole']]], + ['clearcustomvariables',['clearCustomVariables',['../class_p_i_evaluator.html#aa96ba5c4174592341d65eaebffd7fece',1,'PIEvaluator']]], + ['cleardelimiters',['clearDelimiters',['../class_p_i_timer.html#a2968d6a3aefc4c609cbeaf9f301a41f9',1,'PITimer']]], + ['clearrules',['clearRules',['../class_p_i_state_machine.html#a1e44d3e3cacd745413e84272993a6407',1,'PIStateMachine']]], + ['clearscreen',['ClearScreen',['../namespace_p_i_cout_manipulators.html#a38d041a4e2de4ca6af939837475e9387a811e1fa9e5deb33af8bcef5186b482bb',1,'PICoutManipulators']]], + ['clearsenderfixeddata',['clearSenderFixedData',['../class_p_i_connection.html#aea2898a9729c594ab7bd174425ae8dcf',1,'PIConnection']]], + ['clearstates',['clearStates',['../class_p_i_state_machine.html#a18bceb62d18013df1459c3bb442eb7e8',1,'PIStateMachine']]], + ['cleartabs',['clearTabs',['../class_p_i_console.html#aa098e8d9cdc197ce608ff8cd617bab63',1,'PIConsole']]], + ['clearvariables',['clearVariables',['../class_p_i_console.html#aec823e3d7ef7045298efbab12489b239',1,'PIConsole']]], + ['closedevice',['closeDevice',['../class_p_i_binary_log.html#a3a3e8054f70c230c2d1b04b7ddead5d4',1,'PIBinaryLog::closeDevice()'],['../class_p_i_ethernet.html#a5229b3d4d175a6144a189a7204e02204',1,'PIEthernet::closeDevice()'],['../class_p_i_file.html#ad3d944f75bbda0f14f2d9549d92ca614',1,'PIFile::closeDevice()'],['../class_p_i_i_o_device.html#aaf041ac27ee2b9af4828fbe2f4b5b1e2',1,'PIIODevice::closeDevice()'],['../class_p_i_serial.html#aa8f0b19f15100b7bc01c6f87b1eaa587',1,'PISerial::closeDevice()']]], + ['comment',['comment',['../class_p_i_config_1_1_entry.html#ae80c7013f86ad0be64811faa74a88a67',1,'PIConfig::Entry']]], + ['compare_5ffunc',['compare_func',['../class_p_i_vector.html#a3e72f0fc2245a55a29b1a1c3ce0d36e2',1,'PIVector']]], + ['complexd',['Complexd',['../class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfaf163970dcba9d2f587327e38e5e38098',1,'PIVariant']]], + ['complexld',['Complexld',['../class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfad1548d6221af498427f428a93d0af57f',1,'PIVariant']]], + ['condition',['Condition',['../class_p_i_state_machine.html#abc7ad84744d038a0eb598e82ac536ed7',1,'PIStateMachine']]], + ['conditions',['conditions',['../struct_p_i_state_machine_1_1_rule.html#a0c021e87831b92cbbfee9c7d6585cc15',1,'PIStateMachine::Rule']]], + ['configuredevice',['configureDevice',['../class_p_i_ethernet.html#af6a952895c0e75d5420b5671c929721a',1,'PIEthernet::configureDevice()'],['../class_p_i_i_o_device.html#ae7c5a2d7b6ea2409df4e200c8e4b8e32',1,'PIIODevice::configureDevice()'],['../class_p_i_serial.html#a6fa0f2c099da80fe406cd38b7e552d5b',1,'PISerial::configureDevice()']]], + ['configurefromconfig',['configureFromConfig',['../class_p_i_connection.html#a78a788e328f8ec243c8cd6f93aca47bd',1,'PIConnection']]], + ['configurefromfullpath',['configureFromFullPath',['../class_p_i_binary_log.html#ae728df2cfb529e5d3bee2c2a327503cc',1,'PIBinaryLog::configureFromFullPath()'],['../class_p_i_ethernet.html#a884e1f63790d644916fb54da4603ba2d',1,'PIEthernet::configureFromFullPath()'],['../class_p_i_file.html#a8f98ce9e7a6896b7c1dd0ca49a8eb49a',1,'PIFile::configureFromFullPath()'],['../class_p_i_i_o_device.html#aeb3edefa3b78b06e0f293936c15a74ab',1,'PIIODevice::configureFromFullPath()'],['../class_p_i_serial.html#a5c31bf29e311d1ea5e188adab37703e6',1,'PISerial::configureFromFullPath()']]], + ['connect',['CONNECT',['../class_p_i_object.html#a65528c74adc6691eac2c7a2f39328064',1,'PIObject::CONNECT()'],['../class_p_i_ethernet.html#ac09a74cc735c5e80e79b3f771a2a289c',1,'PIEthernet::connect()'],['../class_p_i_ethernet.html#a59b3f77ff2b8d62dacd6366a4d0879d3',1,'PIEthernet::connect(const PIString &ip, int port)'],['../class_p_i_ethernet.html#a262d31ac59d8a3539899be651a6e56e7',1,'PIEthernet::connect(const PIString &ip_port)']]], + ['connect0',['CONNECT0',['../class_p_i_object.html#a38e74a7ce99df00a10517f5ce4aa66c5',1,'PIObject']]], + ['connect1',['CONNECT1',['../class_p_i_object.html#a36132851189bb01db4957595111a28db',1,'PIObject']]], + ['connect2',['CONNECT2',['../class_p_i_object.html#a850bbf4e8361a106c99da4c46f684247',1,'PIObject']]], + ['connect3',['CONNECT3',['../class_p_i_object.html#ab45dbd69bde3cde22d4aba27ed585407',1,'PIObject']]], + ['connect4',['CONNECT4',['../class_p_i_object.html#a34e41d730c07354e07333def3d854019',1,'PIObject']]], + ['connected',['connected',['../class_p_i_ethernet.html#a80df2b0b931858d93065fa32e1682bc7',1,'PIEthernet']]], + ['connectu',['CONNECTU',['../class_p_i_object.html#ac86f9567fcbe10d7e49685e0a01b8427',1,'PIObject']]], + ['constructfullpath',['constructFullPath',['../class_p_i_ethernet.html#ac4bac35deda7848e7c16e770c64b08ee',1,'PIEthernet::constructFullPath()'],['../class_p_i_packet_extractor.html#acbeb7fa7bdb01b164ce81df601bcee23',1,'PIPacketExtractor::constructFullPath()']]], + ['contains',['contains',['../class_p_i_vector.html#a569226732df6c45066820db07e09c87d',1,'PIVector']]], + ['contentsize',['contentSize',['../class_p_i_string_list.html#ab1d6f27922acdb2de9e8b37cd20ccd50',1,'PIStringList']]], + ['convertfrombase64',['convertFromBase64',['../class_p_i_byte_array.html#a3dff2c2171ecbd1b12c0edc232648cf9',1,'PIByteArray']]], + ['converttobase64',['convertToBase64',['../class_p_i_byte_array.html#ae024450dbd082250560b168189a6f043',1,'PIByteArray']]], + ['ctrldownarrow',['CtrlDownArrow',['../class_p_i_kbd_listener.html#a3e1b468bee20e5a4155f7d99d19eb716a06471072c3855f97036cfaceec75ecd7',1,'PIKbdListener']]], + ['ctrlleftarrow',['CtrlLeftArrow',['../class_p_i_kbd_listener.html#a3e1b468bee20e5a4155f7d99d19eb716a9d6d02f0615594d1fbceadb7d68ebc83',1,'PIKbdListener']]], + ['ctrlrightarrow',['CtrlRightArrow',['../class_p_i_kbd_listener.html#a3e1b468bee20e5a4155f7d99d19eb716af997647f0bac2cfe113f58458a71c7ce',1,'PIKbdListener']]], + ['ctrluparrow',['CtrlUpArrow',['../class_p_i_kbd_listener.html#a3e1b468bee20e5a4155f7d99d19eb716a27096906a3e1a35ff46cbeae0412ed8a',1,'PIKbdListener']]], + ['current',['current',['../class_p_i_system_time.html#a9d1cc158167c09bb920ffdc9bf65ad51',1,'PISystemTime']]], + ['currentconditions',['currentConditions',['../class_p_i_state_machine.html#ab49ff1a9fc9b2a354cd5493a5fd3859a',1,'PIStateMachine']]], + ['currentstate',['currentState',['../class_p_i_state_machine.html#a2335fae60078ae68750df3ca50d95850',1,'PIStateMachine']]], + ['currentsystemtime',['currentSystemTime',['../pitime_8h.html#abcad1d713a692c67abf44720aff77abc',1,'pitime.h']]], + ['currenttab',['currentTab',['../class_p_i_console.html#a3261d123b00905e06226b828d7920001',1,'PIConsole']]], + ['custom',['Custom',['../class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfad85616b3a0febed1905a631cfbc9782e',1,'PIVariant']]], + ['cutleft',['cutLeft',['../class_p_i_string.html#a5e6ebd047f481f11bfc7aa5a599f84d9',1,'PIString']]], + ['cutmid',['cutMid',['../class_p_i_string.html#a1329bf4f870ef9417f30baf23a0589f9',1,'PIString']]], + ['cutright',['cutRight',['../class_p_i_string.html#a3f1dea63c0baead80b3700129c2837e3',1,'PIString']]], + ['cyan',['Cyan',['../class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579afad1b218983aa1f775655a30175333af',1,'PIConsole::Cyan()'],['../namespace_p_i_cout_manipulators.html#a4d8fa322c1a8b3fa285759056aae1b2aac1ccdb56cc6bfa3cbe21d9edce17bed4',1,'PICoutManipulators::Cyan()']]] +]; diff --git a/pip/doc/html/search/all_4.html b/pip/doc/html/search/all_4.html new file mode 100644 index 0000000..56eb97c --- /dev/null +++ b/pip/doc/html/search/all_4.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/all_4.js b/pip/doc/html/search/all_4.js new file mode 100644 index 0000000..3b74860 --- /dev/null +++ b/pip/doc/html/search/all_4.js @@ -0,0 +1,27 @@ +var searchData= +[ + ['data',['data',['../class_p_i_string.html#ac1f4d3aad27aa25a5e92f092d2890188',1,'PIString::data()'],['../class_p_i_evaluator.html#ac5d8118fce80c08a8ae3ad2215625839',1,'PIEvaluator::data()'],['../class_p_i_kbd_listener.html#a1b5584b91e3280213b61b31508127598',1,'PIKbdListener::data()'],['../class_p_i_thread.html#aa3c4138dc000e34fb74140d0a5be3afe',1,'PIThread::data()'],['../class_p_i_timer.html#abbe9a559d65b0be6980e77218a05cfe3',1,'PITimer::data()']]], + ['datareceived',['dataReceived',['../class_p_i_connection.html#a0646157ff90676be46c8e96a9dfce78f',1,'PIConnection']]], + ['datareceivedevent',['dataReceivedEvent',['../class_p_i_connection.html#afdec29f2680315ace29a8b8f1c445e00',1,'PIConnection']]], + ['date',['Date',['../class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfaf14a1f410b3c192878fc246b45f45124',1,'PIVariant']]], + ['datetime',['DateTime',['../class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfa265d67fff2b590fb6765b3838a011c34',1,'PIVariant']]], + ['debug',['debug',['../class_p_i_object.html#a286d39fdf2dacf8bc1f26c8744d8bf18',1,'PIObject']]], + ['dec',['Dec',['../class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579a1a14373d10e03ed37c42f17558d6e412',1,'PIConsole::Dec()'],['../namespace_p_i_cout_manipulators.html#a4d8fa322c1a8b3fa285759056aae1b2aa2169666f4b740a04e641ab8c6ca438f0',1,'PICoutManipulators::Dec()']]], + ['default',['Default',['../namespace_p_i_cout_manipulators.html#a4d8fa322c1a8b3fa285759056aae1b2aa651156cbea6768802eb95176611da012',1,'PICoutManipulators']]], + ['defaultalignment',['defaultAlignment',['../class_p_i_console.html#a4e399e64818521932243ee8be392c649',1,'PIConsole']]], + ['delimiter',['delimiter',['../class_p_i_config.html#a3a2943350a0b2304ab8fee406ade16b9',1,'PIConfig']]], + ['deprecated_20list',['Deprecated List',['../deprecated.html',1,'']]], + ['device',['device',['../class_p_i_connection.html#a4bf1efff7318d598d0c47bb474869fe6',1,'PIConnection::device()'],['../class_p_i_packet_extractor.html#a8e926713a3505dd109176b2c572274c9',1,'PIPacketExtractor::device()']]], + ['diagnostic',['diagnostic',['../class_p_i_connection.html#a8331d46bea526c5f74958315d725e14b',1,'PIConnection::diagnostic(const PIString &full_path_name) const '],['../class_p_i_connection.html#a864db6b1ef3905ae761d249f69cbb12b',1,'PIConnection::diagnostic(const PIIODevice *dev) const ']]], + ['disableexitcapture',['disableExitCapture',['../class_p_i_console.html#af7d77f3929c0c0394b76274472141080',1,'PIConsole::disableExitCapture()'],['../class_p_i_kbd_listener.html#acd5b37d732168274a30c678e8373d0dd',1,'PIKbdListener::disableExitCapture()']]], + ['disconnect',['DISCONNECT',['../class_p_i_object.html#a587604e6f3570c0fc32794384d4d0d1f',1,'PIObject']]], + ['disconnect0',['DISCONNECT0',['../class_p_i_object.html#aed7fd8edaccbbca33c51417ca43ac32a',1,'PIObject']]], + ['disconnect1',['DISCONNECT1',['../class_p_i_object.html#ae030e8deb226c636d2df22076391f12c',1,'PIObject']]], + ['disconnect2',['DISCONNECT2',['../class_p_i_object.html#a8f0609bfd7dfcd4512d76480bc114dab',1,'PIObject']]], + ['disconnect3',['DISCONNECT3',['../class_p_i_object.html#af2789f99d1916f231fc579f00370fa6f',1,'PIObject']]], + ['disconnect4',['DISCONNECT4',['../class_p_i_object.html#aedf429d3192da764163c1377cad310e3',1,'PIObject']]], + ['disconnected',['disconnected',['../class_p_i_ethernet.html#a0e7319514519c950760c760f605f330f',1,'PIEthernet']]], + ['disconnecttimeout',['disconnectTimeout',['../class_p_i_diagnostics.html#a58a112660b5a7545c6bb0bb1bf621822',1,'PIDiagnostics']]], + ['double',['Double',['../class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfafee752a615286794d4468c72e886ab38',1,'PIVariant']]], + ['downarrow',['DownArrow',['../class_p_i_kbd_listener.html#a3e1b468bee20e5a4155f7d99d19eb716a2cc10cee6bd5ded7573f4ba9730cde6d',1,'PIKbdListener']]] +]; diff --git a/pip/doc/html/search/all_5.html b/pip/doc/html/search/all_5.html new file mode 100644 index 0000000..d085ca8 --- /dev/null +++ b/pip/doc/html/search/all_5.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/all_5.js b/pip/doc/html/search/all_5.js new file mode 100644 index 0000000..80ab4cf --- /dev/null +++ b/pip/doc/html/search/all_5.js @@ -0,0 +1,49 @@ +var searchData= +[ + ['elapsed',['elapsed',['../class_p_i_time_measurer.html#a9af8e8ee2231a6b62eea549c8d01d1d2',1,'PITimeMeasurer']]], + ['elapsed_5fm',['elapsed_m',['../class_p_i_time_measurer.html#a2421e0d7f623a3181683ad50957d72fe',1,'PITimeMeasurer']]], + ['elapsed_5fn',['elapsed_n',['../class_p_i_time_measurer.html#a7f0832742601a1c6c13e87aca6c9bdc0',1,'PITimeMeasurer']]], + ['elapsed_5fs',['elapsed_s',['../class_p_i_time_measurer.html#a49b04aae807b3d09dc25485f4e47da75',1,'PITimeMeasurer']]], + ['elapsed_5fsystem',['elapsed_system',['../class_p_i_time_measurer.html#a139cb50fc03ebaa88302b7a533d430a9',1,'PITimeMeasurer']]], + ['elapsed_5fsystem_5fm',['elapsed_system_m',['../class_p_i_time_measurer.html#a64fe61ea1ed7b7340a9ed48d7b7d36c1',1,'PITimeMeasurer']]], + ['elapsed_5fsystem_5fn',['elapsed_system_n',['../class_p_i_time_measurer.html#aba3453e037f3e76a909b458281891df1',1,'PITimeMeasurer']]], + ['elapsed_5fsystem_5fs',['elapsed_system_s',['../class_p_i_time_measurer.html#ae9dd5607001eaa7eff15a2b90d2d3eda',1,'PITimeMeasurer']]], + ['elapsed_5fsystem_5fu',['elapsed_system_u',['../class_p_i_time_measurer.html#abcb1951c39b87c0717ade5286dd69dcc',1,'PITimeMeasurer']]], + ['elapsed_5fu',['elapsed_u',['../class_p_i_time_measurer.html#aa00150de5e04b3c7256e620498182380',1,'PITimeMeasurer']]], + ['emitter',['emitter',['../class_p_i_object.html#a2f43644909496ba11ca294a67ed18deb',1,'PIObject']]], + ['enableexitcapture',['enableExitCapture',['../class_p_i_console.html#a54455e3349316eb52679b8d1f9b85f78',1,'PIConsole::enableExitCapture()'],['../class_p_i_kbd_listener.html#a15702f6822a016c0c44c3217ba1a27f8',1,'PIKbdListener::enableExitCapture()']]], + ['end',['end',['../class_p_i_thread.html#af6dacd35973ff834f007d0f6a40f6e9c',1,'PIThread']]], + ['endswith',['endsWith',['../class_p_i_string.html#a9e58076006c085e76b7a139f2b830a7a',1,'PIString']]], + ['enlarge',['enlarge',['../class_p_i_vector.html#a834ee327d55d935cefe8358169bc4aee',1,'PIVector']]], + ['entriescount',['entriesCount',['../class_p_i_config.html#a8ec38c6e59b7d57677ae410ea74d6121',1,'PIConfig']]], + ['entry',['Entry',['../class_p_i_config_1_1_entry.html',1,'PIConfig']]], + ['error',['error',['../class_p_i_evaluator.html#ac3e87ff15b4b04240b133affaf09e72b',1,'PIEvaluator']]], + ['errorstring',['errorString',['../piincludes_8h.html#a0570da4d19817e08dcdd2490308c77c5',1,'piincludes.cpp']]], + ['esc',['Esc',['../namespace_p_i_cout_manipulators.html#a66678520ac7701c016e3e90e17a7dfa2ac32518c74b162effc95d1afff37b4a81',1,'PICoutManipulators']]], + ['etries',['etries',['../class_p_i_vector.html#a6339bac7482c915be6ed983388cfc275',1,'PIVector']]], + ['evaluate',['evaluate',['../class_p_i_evaluator.html#abc6012ab974a16f99b08cc2773142b79',1,'PIEvaluator']]], + ['event',['EVENT',['../class_p_i_object.html#a7877e997621e1161f058fce90febd464',1,'PIObject']]], + ['event0',['EVENT0',['../class_p_i_object.html#a4fa760299649bc8aeaa0dcf4d605be70',1,'PIObject']]], + ['event1',['EVENT1',['../class_p_i_object.html#a7083e0b630c70def2ce05d60d70a45b9',1,'PIObject']]], + ['event2',['EVENT2',['../class_p_i_object.html#a91d380b7235ad11b4830c4c2e8860618',1,'PIObject']]], + ['event3',['EVENT3',['../class_p_i_object.html#a685a85b0791e73158dc0173b4e18dd00',1,'PIObject']]], + ['event4',['EVENT4',['../class_p_i_object.html#a59032ae5e0b94cdfb52be1f24d5e8252',1,'PIObject']]], + ['event_5fhandler',['EVENT_HANDLER',['../class_p_i_object.html#ae92ae8e64fbb4c6fa7d87cc1e93d55c0',1,'PIObject']]], + ['event_5fhandler0',['EVENT_HANDLER0',['../class_p_i_object.html#ab605cf0454d34cc72c65bfed2abd696a',1,'PIObject']]], + ['event_5fhandler1',['EVENT_HANDLER1',['../class_p_i_object.html#a56defa004e9b7efb2db50b3a43ca7225',1,'PIObject']]], + ['event_5fhandler2',['EVENT_HANDLER2',['../class_p_i_object.html#abb64b696544ee4ee8715add9747c1293',1,'PIObject']]], + ['event_5fhandler3',['EVENT_HANDLER3',['../class_p_i_object.html#af90eced49fbdb43f5fc631fa7e7a44fb',1,'PIObject']]], + ['event_5fhandler4',['EVENT_HANDLER4',['../class_p_i_object.html#ae8a8499ba07a4cc16c0b15c51b197d9f',1,'PIObject']]], + ['event_5fvhandler',['EVENT_VHANDLER',['../class_p_i_object.html#a26a0e3181ebb2a90c11e9a7eb906a99e',1,'PIObject']]], + ['event_5fvhandler0',['EVENT_VHANDLER0',['../class_p_i_object.html#a338377c8ec10707dd26a168b8aef5c31',1,'PIObject']]], + ['event_5fvhandler1',['EVENT_VHANDLER1',['../class_p_i_object.html#abf138848427466a7ae91ada5876f926d',1,'PIObject']]], + ['event_5fvhandler2',['EVENT_VHANDLER2',['../class_p_i_object.html#ad0ba4a14c77b8d968dc13918f9b2d384',1,'PIObject']]], + ['event_5fvhandler3',['EVENT_VHANDLER3',['../class_p_i_object.html#a4f47b429ac594cebdca1567e1b9a1021',1,'PIObject']]], + ['event_5fvhandler4',['EVENT_VHANDLER4',['../class_p_i_object.html#a96b2461314db11f3b68942bcd4b9d13d',1,'PIObject']]], + ['execution',['execution',['../class_p_i_state_machine.html#a59c79d761ab1c4b64a655e55c6a93904',1,'PIStateMachine']]], + ['exitcaptured',['exitCaptured',['../class_p_i_console.html#af31cb35a92c0758c33c73a227a096d04',1,'PIConsole::exitCaptured()'],['../class_p_i_kbd_listener.html#a333aaeadb6ca6bfee5aea3378ce7e1f4',1,'PIKbdListener::exitCaptured()']]], + ['exitkey',['exitKey',['../class_p_i_console.html#a9c5a216c60e5b9c1bdf5eda25a346594',1,'PIConsole::exitKey()'],['../class_p_i_kbd_listener.html#a99de0ef4e19dc43b66c3ee42cfb3b5ab',1,'PIKbdListener::exitKey()']]], + ['expandleftto',['expandLeftTo',['../class_p_i_string.html#aeecafb43528159d4d65dc9a5e2ca26e4',1,'PIString']]], + ['expandrightto',['expandRightTo',['../class_p_i_string.html#ad17b4d47401a31557a06490efd9e40e5',1,'PIString']]], + ['expression',['expression',['../class_p_i_evaluator.html#ac9a0a4fd65af2518d8efdaa9c5298991',1,'PIEvaluator']]] +]; diff --git a/pip/doc/html/search/all_6.html b/pip/doc/html/search/all_6.html new file mode 100644 index 0000000..7a31022 --- /dev/null +++ b/pip/doc/html/search/all_6.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/all_6.js b/pip/doc/html/search/all_6.js new file mode 100644 index 0000000..008c0bc --- /dev/null +++ b/pip/doc/html/search/all_6.js @@ -0,0 +1,38 @@ +var searchData= +[ + ['failure',['Failure',['../class_p_i_diagnostics.html#aabf8f59b49ab62435e220106f204712fa7851c3092d436b72bc66b752f73b1d80',1,'PIDiagnostics::Failure()'],['../class_p_i_protocol.html#aef1f5fa8173bcc220b07f084155ec868aedb67e105ac421f87d7c086213041812',1,'PIProtocol::Failure()']]], + ['fill',['fill',['../class_p_i_vector.html#aa6b5cd062e622fa4e3460249c11a2eb2',1,'PIVector']]], + ['filter',['filter',['../class_p_i_connection.html#a556da00110cff970ed19d850b708cf29',1,'PIConnection']]], + ['filterboundeddevices',['filterBoundedDevices',['../class_p_i_connection.html#a7f1910e132f8e9991f89444d0c3ec764',1,'PIConnection']]], + ['filternames',['filterNames',['../class_p_i_connection.html#aa6a4ea015798acdb8b5c0fd52156cd7f',1,'PIConnection']]], + ['filters',['filters',['../class_p_i_connection.html#a3960ea85b7a1fad838fa84772ecf9695',1,'PIConnection']]], + ['filtervalidatefooter',['filterValidateFooter',['../class_p_i_connection.html#a2691ceec3dea8c0588f8afd74359277e',1,'PIConnection']]], + ['filtervalidateheader',['filterValidateHeader',['../class_p_i_connection.html#a6f8f899f40de092639f1e0cefe95c968',1,'PIConnection']]], + ['filtervalidatepayload',['filterValidatePayload',['../class_p_i_connection.html#ad883e4b2174fc086da98b1dbcad69aaf',1,'PIConnection']]], + ['find',['find',['../class_p_i_string.html#a99fbf95d65c51cce60c27d18c4cd5531',1,'PIString::find(const char str, const int start=0) const '],['../class_p_i_string.html#a1a237a5d7836ba1fcaa37087039e7d04',1,'PIString::find(const PIString str, const int start=0) const '],['../class_p_i_string.html#a4590628a19e551470960e7b350f0ff5f',1,'PIString::find(const char *str, const int start=0) const '],['../class_p_i_string.html#a60a4b7cd4bce3f6c8208a713164f1479',1,'PIString::find(const string str, const int start=0) const ']]], + ['findbyname',['findByName',['../class_p_i_object.html#afe05189de1d6ebbf44a2e16cfe200848',1,'PIObject']]], + ['findchild',['findChild',['../class_p_i_config_1_1_entry.html#aa3b36dd3fbf8af0f7bc2cb0e683a0ef1',1,'PIConfig::Entry::findChild(const PIString &name)'],['../class_p_i_config_1_1_entry.html#a63c45328044a43fb9ab7269a08eb0df0',1,'PIConfig::Entry::findChild(const PIString &name) const ']]], + ['findcword',['findCWord',['../class_p_i_string.html#aebd028e4a34e907fb891944b1de4f555',1,'PIString']]], + ['findlast',['findLast',['../class_p_i_string.html#ae19031ecb5e129e2cbc830694b2fe20f',1,'PIString::findLast(const char str, const int start=0) const '],['../class_p_i_string.html#a43c55edb22d030aee0c04dae4c03fa2a',1,'PIString::findLast(const PIString str, const int start=0) const '],['../class_p_i_string.html#a5b846d7fb50ccd548f640681aca4fbf4',1,'PIString::findLast(const char *str, const int start=0) const '],['../class_p_i_string.html#a103ad13acbd263ced666ec07b4e6228d',1,'PIString::findLast(const string str, const int start=0) const ']]], + ['findword',['findWord',['../class_p_i_string.html#a434cb662bfa4af1ccdfd0ed5188d6020',1,'PIString']]], + ['flags',['flags',['../struct_p_i_ethernet_1_1_interface.html#a327b42e5652b8dfd680a3eddec948237',1,'PIEthernet::Interface']]], + ['float',['Float',['../class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfa802d8727c57bf77c21aaefb910cddf50',1,'PIVariant']]], + ['flush',['Flush',['../namespace_p_i_cout_manipulators.html#a38d041a4e2de4ca6af939837475e9387ab830c1a561e2cabe9e7b937a05d04c9f',1,'PICoutManipulators']]], + ['footer',['footer',['../class_p_i_packet_extractor.html#a6382b9238ce84d3c93044dc96748d42a',1,'PIPacketExtractor::footer() const '],['../class_p_i_packet_extractor.html#aab7f856e1fd64e7bdb2507badae99bb6a48ccac0df6bcb7bccaa01eb3df28f096',1,'PIPacketExtractor::Footer()']]], + ['forever',['FOREVER',['../piincludes_8h.html#a75c828ed6c02fcd44084e67a032e422c',1,'piincludes.h']]], + ['forever_5fwait',['FOREVER_WAIT',['../piincludes_8h.html#a39da857669ed22c419a967d5c9acae77',1,'piincludes.h']]], + ['format',['Format',['../class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579',1,'PIConsole']]], + ['free_5fbsd',['FREE_BSD',['../piincludes_8h.html#a436564e12a6f982e63f9a76357146ad6',1,'piincludes.h']]], + ['from',['from',['../struct_p_i_state_machine_1_1_rule.html#af2282cbdc1961296c15afd440696ab4e',1,'PIStateMachine::Rule']]], + ['frombase64',['fromBase64',['../class_p_i_byte_array.html#aa3b756ec5c724a649d90c13c0f104f6b',1,'PIByteArray']]], + ['frombool',['fromBool',['../class_p_i_string.html#a86004795c3c15a6ba246cd02b44f22f5',1,'PIString']]], + ['frommicroseconds',['fromMicroseconds',['../class_p_i_system_time.html#ab39ad2e2092d25972ea849fdbf94d7d9',1,'PISystemTime']]], + ['frommilliseconds',['fromMilliseconds',['../class_p_i_system_time.html#a4b5e241835da7965141e0e1060eb5b81',1,'PISystemTime']]], + ['fromnanoseconds',['fromNanoseconds',['../class_p_i_system_time.html#a9efcf8326e98df508cbf3ee0eb8f7713',1,'PISystemTime']]], + ['fromnumber',['fromNumber',['../class_p_i_string.html#a2e31a81e9f62ac86f9217c8e20642828',1,'PIString::fromNumber(const short value, int base=10, bool *ok=0)'],['../class_p_i_string.html#a1021653c0bebd440811bd90cef33297e',1,'PIString::fromNumber(const ushort value, int base=10, bool *ok=0)'],['../class_p_i_string.html#a9e757a86d4c4d831041b944030adef7c',1,'PIString::fromNumber(const int value, int base=10, bool *ok=0)'],['../class_p_i_string.html#a8111a873979e648ba8c45b373ca6b284',1,'PIString::fromNumber(const uint value, int base=10, bool *ok=0)'],['../class_p_i_string.html#a65f477626868b91471bab571719ed62a',1,'PIString::fromNumber(const long value, int base=10, bool *ok=0)'],['../class_p_i_string.html#a5bb81ee7e3be05ccd3cfc11c88c3cb5f',1,'PIString::fromNumber(const ulong value, int base=10, bool *ok=0)'],['../class_p_i_string.html#a6e7954fb747bb0ae5b8ffcf2f9a4908a',1,'PIString::fromNumber(const llong &value, int base=10, bool *ok=0)'],['../class_p_i_string.html#aea4c3e4327613c3f98170e2925fa3abd',1,'PIString::fromNumber(const ullong &value, int base=10, bool *ok=0)'],['../class_p_i_string.html#a8dd6100d87c12863d5368f1729d96542',1,'PIString::fromNumber(const float value)'],['../class_p_i_string.html#aba672126ad7cc180e14f8040c334ce25',1,'PIString::fromNumber(const double &value)'],['../class_p_i_string.html#a535414bf6c42297179d55c98b99101c3',1,'PIString::fromNumber(const ldouble &value)']]], + ['fromseconds',['fromSeconds',['../class_p_i_system_time.html#ab3a2f936923f05320f47eb581f924bb3',1,'PISystemTime']]], + ['fromvalue',['fromValue',['../class_p_i_variant.html#afb991396df6f61478ba3a314519a6446',1,'PIVariant']]], + ['front',['front',['../class_p_i_vector.html#abf6923dacf515f1f433544717d615999',1,'PIVector::front()'],['../class_p_i_vector.html#a8a35924372d7c30bb030ad7baf7dc450',1,'PIVector::front() const ']]], + ['fullname',['fullName',['../class_p_i_config_1_1_entry.html#a07d301e63f496b64dd18ab697ab1ed8f',1,'PIConfig::Entry']]], + ['fullpathprefix',['fullPathPrefix',['../class_p_i_binary_log.html#aeea31dead45c393c32a5a37e0e55af77',1,'PIBinaryLog::fullPathPrefix()'],['../class_p_i_ethernet.html#ae80b62a0c52c5e0985e4fa3f39aadfea',1,'PIEthernet::fullPathPrefix()'],['../class_p_i_file.html#a68c53a59d5afef2a7c363f987b1a5e1a',1,'PIFile::fullPathPrefix()'],['../class_p_i_i_o_device.html#a568194e78dc8aac94ed6c1d17809a71e',1,'PIIODevice::fullPathPrefix()'],['../class_p_i_serial.html#a618759d595670e96afa8103102e98ec7',1,'PISerial::fullPathPrefix()']]] +]; diff --git a/pip/doc/html/search/all_7.html b/pip/doc/html/search/all_7.html new file mode 100644 index 0000000..f83a280 --- /dev/null +++ b/pip/doc/html/search/all_7.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/all_7.js b/pip/doc/html/search/all_7.js new file mode 100644 index 0000000..41d47f5 --- /dev/null +++ b/pip/doc/html/search/all_7.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['getbyaddress',['getByAddress',['../class_p_i_ethernet_1_1_interface_list.html#a310d9bbcbce604c11e3c3a016f1e449d',1,'PIEthernet::InterfaceList']]], + ['getbyindex',['getByIndex',['../class_p_i_ethernet_1_1_interface_list.html#a2b206fa34041a17fd220dedb8f7f5b23',1,'PIEthernet::InterfaceList']]], + ['getbyname',['getByName',['../class_p_i_ethernet_1_1_interface_list.html#a370ca35bd198f7b5299a8a397648ee98',1,'PIEthernet::InterfaceList']]], + ['getloopback',['getLoopback',['../class_p_i_ethernet_1_1_interface_list.html#aa7d664f29056fba64f8e58f547c739f0',1,'PIEthernet::InterfaceList']]], + ['getvalue',['getValue',['../class_p_i_config_1_1_entry.html#af2e42a391ca7eb215de51af19985de7a',1,'PIConfig::Entry::getValue(const PIString &vname, const PIString &def=PIString(), bool *exists=0)'],['../class_p_i_config_1_1_entry.html#a05bbbeed3dadb60e6bea03c749bfd6e4',1,'PIConfig::Entry::getValue(const PIString &vname, const char *def, bool *exists=0)'],['../class_p_i_config_1_1_entry.html#ae50da453abb433db637f727dc18fd2ea',1,'PIConfig::Entry::getValue(const PIString &vname, const PIStringList &def, bool *exists=0)'],['../class_p_i_config_1_1_entry.html#aa0e0499b5fc68a1d12259da24c7a3c2a',1,'PIConfig::Entry::getValue(const PIString &vname, const bool def, bool *exists=0)'],['../class_p_i_config_1_1_entry.html#a5a6ac80cb3daf664987b8b07f29a85e3',1,'PIConfig::Entry::getValue(const PIString &vname, const short def, bool *exists=0)'],['../class_p_i_config_1_1_entry.html#a819012c8ada9a1d829fa076eed212d07',1,'PIConfig::Entry::getValue(const PIString &vname, const int def, bool *exists=0)'],['../class_p_i_config_1_1_entry.html#a513d067edac5971ac9cb5546cc8ed9b0',1,'PIConfig::Entry::getValue(const PIString &vname, const long def, bool *exists=0)'],['../class_p_i_config_1_1_entry.html#ad92d8722f1390a0d46b194f6557edf02',1,'PIConfig::Entry::getValue(const PIString &vname, const uchar def, bool *exists=0)'],['../class_p_i_config_1_1_entry.html#ae0560a9ee49304088c0192b26e4fbbf5',1,'PIConfig::Entry::getValue(const PIString &vname, const ushort def, bool *exists=0)'],['../class_p_i_config_1_1_entry.html#ab75c9b8261196d24f8eee1183251474f',1,'PIConfig::Entry::getValue(const PIString &vname, const uint def, bool *exists=0)'],['../class_p_i_config_1_1_entry.html#aa373eef636c8a372366bab7ca968a6ae',1,'PIConfig::Entry::getValue(const PIString &vname, const ulong def, bool *exists=0)'],['../class_p_i_config_1_1_entry.html#a7868346fb50b9dc21d950c69e6a96657',1,'PIConfig::Entry::getValue(const PIString &vname, const float def, bool *exists=0)'],['../class_p_i_config_1_1_entry.html#a6fd5ddc7b21c3d0cca6a2e885e8c29bd',1,'PIConfig::Entry::getValue(const PIString &vname, const double def, bool *exists=0)'],['../class_p_i_config.html#afa9ff95ee07a0426a06196cdb0674bb1',1,'PIConfig::getValue(const PIString &vname, const PIString &def=PIString(), bool *exists=0)'],['../class_p_i_config.html#aa58ad8481d1f0280a3bd4c92f47f516f',1,'PIConfig::getValue(const PIString &vname, const char *def, bool *exists=0)'],['../class_p_i_config.html#a59ee8d190f4a82e2fbe4e0320877e0a7',1,'PIConfig::getValue(const PIString &vname, const PIStringList &def, bool *exists=0)'],['../class_p_i_config.html#a5f44b199f4679ee58df0b7e1db44b4f1',1,'PIConfig::getValue(const PIString &vname, const bool def, bool *exists=0)'],['../class_p_i_config.html#ac2fa98010be70e9d7fda3baa56804ad0',1,'PIConfig::getValue(const PIString &vname, const short def, bool *exists=0)'],['../class_p_i_config.html#aa7750ea22e6d133d80070f9ff9328bd7',1,'PIConfig::getValue(const PIString &vname, const int def, bool *exists=0)'],['../class_p_i_config.html#a073bd20b948c3f68b7eb846f4d080006',1,'PIConfig::getValue(const PIString &vname, const long def, bool *exists=0)'],['../class_p_i_config.html#a04ff1fa7aea07e52f1f9b743a7236e0c',1,'PIConfig::getValue(const PIString &vname, const uchar def, bool *exists=0)'],['../class_p_i_config.html#ae359d44525852377fe944f34f3a3aadf',1,'PIConfig::getValue(const PIString &vname, const ushort def, bool *exists=0)'],['../class_p_i_config.html#ab37b341b3468d25beae61112ec0da134',1,'PIConfig::getValue(const PIString &vname, const uint def, bool *exists=0)'],['../class_p_i_config.html#a081565174316b60dc5a6f27ffb0c3118',1,'PIConfig::getValue(const PIString &vname, const ulong def, bool *exists=0)'],['../class_p_i_config.html#a9fc2514ae2881bd0cace552b179e58f7',1,'PIConfig::getValue(const PIString &vname, const float def, bool *exists=0)'],['../class_p_i_config.html#a81a5f8e644ef77db5b85b3d0a1169940',1,'PIConfig::getValue(const PIString &vname, const double def, bool *exists=0)']]], + ['getvalues',['getValues',['../class_p_i_config_1_1_entry.html#a42a7e4e6ccf80f82b2e35de26fcc6274',1,'PIConfig::Entry::getValues()'],['../class_p_i_config.html#a56e9e758d994f2bd5bb0ddbf93b187e0',1,'PIConfig::getValues()']]], + ['good',['Good',['../class_p_i_diagnostics.html#aabf8f59b49ab62435e220106f204712fa65f12843d70ab8f9bc9f711e2776c169',1,'PIDiagnostics::Good()'],['../class_p_i_protocol.html#aef1f5fa8173bcc220b07f084155ec868a79077b969773754677c555ec35c32d9b',1,'PIProtocol::Good()']]], + ['green',['Green',['../class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579ae959969cfc547e2f48dbe3b51056d931',1,'PIConsole::Green()'],['../namespace_p_i_cout_manipulators.html#a4d8fa322c1a8b3fa285759056aae1b2aaf1abd54dd4e1ce4d273e72bf705b276f',1,'PICoutManipulators::Green()']]], + ['groupelements',['groupElements',['../class_p_i_collection.html#a74ed1ec578c1c1749f72a92c714b9243',1,'PICollection']]], + ['groups',['groups',['../class_p_i_collection.html#a84d0050eaeb3187ed61a46ac31aa812f',1,'PICollection']]], + ['getting_20started',['Getting started',['../using_basic.html',1,'']]] +]; diff --git a/pip/doc/html/search/all_8.html b/pip/doc/html/search/all_8.html new file mode 100644 index 0000000..e0bfa82 --- /dev/null +++ b/pip/doc/html/search/all_8.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/all_8.js b/pip/doc/html/search/all_8.js new file mode 100644 index 0000000..539a2d8 --- /dev/null +++ b/pip/doc/html/search/all_8.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['handler',['HANDLER',['../class_p_i_object.html#a3f7b0da6b28ced23e1deee48dde17c98',1,'PIObject::HANDLER()'],['../struct_p_i_state_machine_1_1_rule.html#abedad360951b33a15a01a26ab211860d',1,'PIStateMachine::Rule::handler()'],['../struct_p_i_state_machine_1_1_state.html#a27a357a8b0fdc53910696032e0d5c3fd',1,'PIStateMachine::State::handler()']]], + ['has_5flocale',['HAS_LOCALE',['../piincludes_8h.html#ad5c40e21f5f16ceeb1b98ee2de82a612',1,'piincludes.h']]], + ['header',['Header',['../class_p_i_packet_extractor.html#aab7f856e1fd64e7bdb2507badae99bb6a29b623cae95dfd777979c401d881c57f',1,'PIPacketExtractor::Header()'],['../class_p_i_packet_extractor.html#a8e6ff4a862b5fc4826ceae42d630174c',1,'PIPacketExtractor::header() const ']]], + ['headerandfooter',['HeaderAndFooter',['../class_p_i_packet_extractor.html#aab7f856e1fd64e7bdb2507badae99bb6aa588a5c0306511f74b66e60a24373f01',1,'PIPacketExtractor']]], + ['hex',['Hex',['../class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579aec17c3cf86a35f0a78c1add7ddd4ce3c',1,'PIConsole::Hex()'],['../namespace_p_i_cout_manipulators.html#a4d8fa322c1a8b3fa285759056aae1b2aadc3f097ce8d6fafc80018c2df3afe2b5',1,'PICoutManipulators::Hex()']]], + ['hidecursor',['HideCursor',['../namespace_p_i_cout_manipulators.html#a38d041a4e2de4ca6af939837475e9387add30539d8cc3ea1f1dcc49a0d864f877',1,'PICoutManipulators']]] +]; diff --git a/pip/doc/html/search/all_9.html b/pip/doc/html/search/all_9.html new file mode 100644 index 0000000..5cf41a6 --- /dev/null +++ b/pip/doc/html/search/all_9.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/all_9.js b/pip/doc/html/search/all_9.js new file mode 100644 index 0000000..a168fdc --- /dev/null +++ b/pip/doc/html/search/all_9.js @@ -0,0 +1,52 @@ +var searchData= +[ + ['ifactive',['ifActive',['../class_p_i_ethernet.html#a2e219801b3a6c451c4aca63ad99b6374af0267ac1003b142861da4f3b13cd8eec',1,'PIEthernet']]], + ['ifbroadcast',['ifBroadcast',['../class_p_i_ethernet.html#a2e219801b3a6c451c4aca63ad99b6374a968abc4436cda4f3a7d6f9d5b73a5161',1,'PIEthernet']]], + ['ifloopback',['ifLoopback',['../class_p_i_ethernet.html#a2e219801b3a6c451c4aca63ad99b6374ae5762f8e14d0d44e59d98d40a5e61d47',1,'PIEthernet']]], + ['ifmulticast',['ifMulticast',['../class_p_i_ethernet.html#a2e219801b3a6c451c4aca63ad99b6374a221bac530c63ca6256286ae46d4cf2da',1,'PIEthernet']]], + ['ifptp',['ifPTP',['../class_p_i_ethernet.html#a2e219801b3a6c451c4aca63ad99b6374a57217604fea835e4aaec5ad6f16101a5',1,'PIEthernet']]], + ['ifrunning',['ifRunning',['../class_p_i_ethernet.html#a2e219801b3a6c451c4aca63ad99b6374a1ee5d68a37246b49b542d4e7a35129a5',1,'PIEthernet']]], + ['immediatefrequency',['immediateFrequency',['../class_p_i_diagnostics.html#afc88d4112178d144a4e2bf116809a586',1,'PIDiagnostics']]], + ['immediatefrequency_5fptr',['immediateFrequency_ptr',['../class_p_i_diagnostics.html#ae84c320f15128154968da64a185534f6',1,'PIDiagnostics']]], + ['implementation',['implementation',['../class_p_i_timer.html#a5a0616e0a3db99893098b644cdd58288',1,'PITimer']]], + ['index',['index',['../struct_p_i_ethernet_1_1_interface.html#adabd5e847a09e6d81e5a4f7f8a33d6cc',1,'PIEthernet::Interface']]], + ['init',['init',['../class_p_i_ethernet.html#a9c9a8d104603bcb93b7b5f096b3105bb',1,'PIEthernet::init()'],['../class_p_i_i_o_device.html#a587c32639f2732920338a363ad163d81',1,'PIIODevice::init()']]], + ['insert',['insert',['../class_p_i_string.html#a73eb6e5b422f635f67e7db616639dd26',1,'PIString::insert(const int index, const PIChar &c)'],['../class_p_i_string.html#aa48ee0a414ad57dd9c8db645808f1dd1',1,'PIString::insert(const int index, const char &c)'],['../class_p_i_string.html#aa71f46f0fecf56aef8501c88d41ecd35',1,'PIString::insert(const int index, const PIString &str)'],['../class_p_i_string.html#a8c20b60718cd3ba095012f29ef2af0c7',1,'PIString::insert(const int index, const char *c)']]], + ['int',['Int',['../class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfa2eb3acbd36c03ef70cb7d1faa797e50f',1,'PIVariant']]], + ['integralfrequency',['integralFrequency',['../class_p_i_diagnostics.html#af2bca72346e1440af8e9a225bfd2ad72',1,'PIDiagnostics']]], + ['integralfrequency_5fptr',['integralFrequency_ptr',['../class_p_i_diagnostics.html#acb226efc57b90723c6acd5f07f0e8a1c',1,'PIDiagnostics']]], + ['interface',['Interface',['../struct_p_i_ethernet_1_1_interface.html',1,'PIEthernet']]], + ['interfaceflag',['InterfaceFlag',['../class_p_i_ethernet.html#a2e219801b3a6c451c4aca63ad99b6374',1,'PIEthernet']]], + ['interfaceflags',['InterfaceFlags',['../class_p_i_ethernet.html#a26d086cc06bc533006ac4fca2c3bab33',1,'PIEthernet']]], + ['interfacelist',['InterfaceList',['../class_p_i_ethernet_1_1_interface_list.html',1,'PIEthernet']]], + ['interfaces',['interfaces',['../class_p_i_ethernet.html#a482e4a9f3730768f62eaecc36b82a636',1,'PIEthernet']]], + ['interval',['interval',['../class_p_i_timer.html#a632ce2869f478d0752b0b48cfa399fec',1,'PITimer']]], + ['invalid',['Invalid',['../class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfa45bf798ad32851c9044a3a5755856c5a',1,'PIVariant']]], + ['inverse',['Inverse',['../class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579a0f6700676e0545499b1c669052c07031',1,'PIConsole']]], + ['ip',['ip',['../class_p_i_ethernet.html#ae49bc185dedf39646ea445fd57e21283',1,'PIEthernet']]], + ['isactive',['isActive',['../struct_p_i_ethernet_1_1_interface.html#ab76d86b68f0da23428ea8ecee802354a',1,'PIEthernet::Interface::isActive()'],['../class_p_i_kbd_listener.html#ac5e65b971731b969f162f0daf332280a',1,'PIKbdListener::isActive()']]], + ['isalpha',['isAlpha',['../class_p_i_char.html#a60b68169d49d4d296b03c99d962f2fe0',1,'PIChar']]], + ['isascii',['isAscii',['../class_p_i_char.html#a201aaf6b6cf4406d84ad97879b0df42b',1,'PIChar']]], + ['isbroadcast',['isBroadcast',['../struct_p_i_ethernet_1_1_interface.html#af331db850efe21a7793bbf813f71c0b4',1,'PIEthernet::Interface']]], + ['isconnected',['isConnected',['../class_p_i_ethernet.html#a6917b5530a9b4daa4030e49892db3887',1,'PIEthernet']]], + ['iscontrol',['isControl',['../class_p_i_char.html#a683aebcd7e500fc96c6367dfe6932219',1,'PIChar']]], + ['iscorrect',['isCorrect',['../class_p_i_evaluator.html#ac9a77afecf7a5ca245c920a491f4386f',1,'PIEvaluator']]], + ['isdigit',['isDigit',['../class_p_i_char.html#a56d2cedeabb4c86d8b777d4e1411c25d',1,'PIChar']]], + ['isempty',['isEmpty',['../class_p_i_vector.html#a4b8a3f487b9d1d623133a4c9fea19734',1,'PIVector::isEmpty()'],['../class_p_i_string.html#abc0709f3722cd63230b81f613c0a999e',1,'PIString::isEmpty()'],['../class_p_i_connection.html#a3a3c31ebf6f1613ae421483ea360d7b2',1,'PIConnection::isEmpty()']]], + ['isentryexists',['isEntryExists',['../class_p_i_config_1_1_entry.html#a2a45332b92375f45af0466487d9f9480',1,'PIConfig::Entry::isEntryExists()'],['../class_p_i_config.html#acf088b2430b92387205df5d67b6ca83d',1,'PIConfig::isEntryExists()']]], + ['isgraphical',['isGraphical',['../class_p_i_char.html#ac02e6ddd18b2cb837b772444ee17be2c',1,'PIChar']]], + ['ishex',['isHex',['../class_p_i_char.html#a2730d5567a93f19d6389be7ea07b1168',1,'PIChar']]], + ['isleaf',['isLeaf',['../class_p_i_config_1_1_entry.html#ac5a30b29cfcdde2513719b954a935220',1,'PIConfig::Entry']]], + ['isloopback',['isLoopback',['../struct_p_i_ethernet_1_1_interface.html#a469b2d721c49354fe43117cf75950920',1,'PIEthernet::Interface']]], + ['islower',['isLower',['../class_p_i_char.html#afcf054d8470c333c69f8b7df2c767ecf',1,'PIChar']]], + ['ismulticast',['isMulticast',['../struct_p_i_ethernet_1_1_interface.html#adbfab446dc998e260231b2e7b90f5b29',1,'PIEthernet::Interface']]], + ['isparameterset',['isParameterSet',['../class_p_i_ethernet.html#a2131c00ba019a17cbf68c2b90fc8ec0f',1,'PIEthernet']]], + ['isprint',['isPrint',['../class_p_i_char.html#a55255ed564ce213a1abaf519bd28c1c6',1,'PIChar']]], + ['ispropertyexists',['isPropertyExists',['../class_p_i_object.html#a8d6bd4c57aa01dc41e1b28720f9604a7',1,'PIObject']]], + ['isptp',['isPTP',['../struct_p_i_ethernet_1_1_interface.html#a04ba0d64139f4dc46561a4a4962edbf8',1,'PIEthernet::Interface']]], + ['isrunning',['isRunning',['../struct_p_i_ethernet_1_1_interface.html#a5f603624bc1046421bdc75b25e6f1e78',1,'PIEthernet::Interface::isRunning()'],['../class_p_i_thread.html#a46720d79609ec893d9eb5eaa2354c414',1,'PIThread::isRunning()'],['../class_p_i_timer.html#a5ccbe3dd36ecde88f01b6534659a08d0',1,'PITimer::isRunning()']]], + ['isspace',['isSpace',['../class_p_i_char.html#a08354995df8b6b1897c3c56fb61614f9',1,'PIChar']]], + ['isstopped',['isStopped',['../class_p_i_timer.html#a88a8d0df214cb441321e6884342183e3',1,'PITimer']]], + ['isupper',['isUpper',['../class_p_i_char.html#a9bf6075c65410d1ea24622024246dd42',1,'PIChar']]], + ['isvalid',['isValid',['../class_p_i_variant.html#a80e4379667f46e5a384144e77b9b1aa7',1,'PIVariant']]] +]; diff --git a/pip/doc/html/search/all_a.html b/pip/doc/html/search/all_a.html new file mode 100644 index 0000000..37a0496 --- /dev/null +++ b/pip/doc/html/search/all_a.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/all_a.js b/pip/doc/html/search/all_a.js new file mode 100644 index 0000000..d9b6cd2 --- /dev/null +++ b/pip/doc/html/search/all_a.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['join',['join',['../class_p_i_string_list.html#a05ae2b8fc9909e4c20a1852ee680c381',1,'PIStringList']]], + ['joinmulticastgroup',['joinMulticastGroup',['../class_p_i_ethernet.html#a99df6e4eccbecb0b704678b8df273dec',1,'PIEthernet']]] +]; diff --git a/pip/doc/html/search/all_b.html b/pip/doc/html/search/all_b.html new file mode 100644 index 0000000..75bc645 --- /dev/null +++ b/pip/doc/html/search/all_b.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/all_b.js b/pip/doc/html/search/all_b.js new file mode 100644 index 0000000..29d24dd --- /dev/null +++ b/pip/doc/html/search/all_b.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['keypressed',['keyPressed',['../class_p_i_console.html#acb4dd34fc69180a9ba8bca4816bca130',1,'PIConsole::keyPressed()'],['../class_p_i_kbd_listener.html#a46a45b9ee857b0cdc782ce977471c286',1,'PIKbdListener::keyPressed()']]] +]; diff --git a/pip/doc/html/search/all_c.html b/pip/doc/html/search/all_c.html new file mode 100644 index 0000000..0231081 --- /dev/null +++ b/pip/doc/html/search/all_c.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/all_c.js b/pip/doc/html/search/all_c.js new file mode 100644 index 0000000..8f614a3 --- /dev/null +++ b/pip/doc/html/search/all_c.js @@ -0,0 +1,17 @@ +var searchData= +[ + ['lastresult',['lastResult',['../class_p_i_evaluator.html#a50b2b35e52268072b8b2080f9dcf1d2c',1,'PIEvaluator']]], + ['ldouble',['LDouble',['../class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfa7f382b7fd8d07426b696d69ee7247876',1,'PIVariant']]], + ['leavemulticastgroup',['leaveMulticastGroup',['../class_p_i_ethernet.html#ac0213b620b1b79ee14dd6756bb11175c',1,'PIEthernet']]], + ['left',['Left',['../class_p_i_console.html#a9185c02e667ead89d506730e6fdc1f5da8f1af835c1d302642a0f5d288e7ce6a2',1,'PIConsole::Left()'],['../class_p_i_string.html#aa6614f666f502b2d759bb37c046f6181',1,'PIString::left()']]], + ['leftarrow',['LeftArrow',['../class_p_i_kbd_listener.html#a3e1b468bee20e5a4155f7d99d19eb716a4e2a34c99dbe919ec3405fc629ac228b',1,'PIKbdListener']]], + ['length',['length',['../class_p_i_string.html#a61133c9da8ce47fced3d5f5e26cc0f6d',1,'PIString']]], + ['lengthascii',['lengthAscii',['../class_p_i_string.html#a512a49d09681e5ecc87fb5c2b51c7bba',1,'PIString']]], + ['letobe_5fi',['letobe_i',['../piincludes_8h.html#a2107d4b68fdcfc213defacffefbc6d03',1,'piincludes.h']]], + ['letobe_5fs',['letobe_s',['../piincludes_8h.html#aec6bba617007bb4636bbef74038cd09a',1,'piincludes.h']]], + ['linux',['LINUX',['../piincludes_8h.html#a157a956e14c5c44b3f73ef23a4776f64',1,'piincludes.h']]], + ['listen',['listen',['../class_p_i_ethernet.html#a8b756229579e309044186b776989db16',1,'PIEthernet::listen(bool threaded=false)'],['../class_p_i_ethernet.html#ac01db2157f9518237e915fabb360e40c',1,'PIEthernet::listen(const PIString &ip, int port, bool threaded=false)'],['../class_p_i_ethernet.html#a606a5cac3eca4126a5fd6ad2f29763ab',1,'PIEthernet::listen(const PIString &ip_port, bool threaded=false)']]], + ['llong',['LLong',['../class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfa493d57852c824d39bdcaee57c9bfff92',1,'PIVariant']]], + ['lock',['lock',['../class_p_i_mutex.html#aa571ad61ee7bd5fcf60f6f5032a16441',1,'PIMutex::lock()'],['../class_p_i_thread.html#a221de2cf94a569a223bfc4456c0f4fed',1,'PIThread::lock()']]], + ['long',['Long',['../class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfada92306e4b6207dd807fea3db9569756',1,'PIVariant']]] +]; diff --git a/pip/doc/html/search/all_d.html b/pip/doc/html/search/all_d.html new file mode 100644 index 0000000..97c55da --- /dev/null +++ b/pip/doc/html/search/all_d.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/all_d.js b/pip/doc/html/search/all_d.js new file mode 100644 index 0000000..f2f44dd --- /dev/null +++ b/pip/doc/html/search/all_d.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['mac',['mac',['../struct_p_i_ethernet_1_1_interface.html#a115e97cf7fb6306138c722fdf0d0d711',1,'PIEthernet::Interface']]], + ['mac_5fos',['MAC_OS',['../piincludes_8h.html#a92897222c2229040c842e33404deea72',1,'piincludes.h']]], + ['magenta',['Magenta',['../class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579a839902f788d727e5bfbd56c961cb7504',1,'PIConsole::Magenta()'],['../namespace_p_i_cout_manipulators.html#a4d8fa322c1a8b3fa285759056aae1b2aa7b9abda5e906d86c86d0e48c68608f4f',1,'PICoutManipulators::Magenta()']]], + ['makeconfig',['makeConfig',['../class_p_i_connection.html#aa7333225423095feac73e903dfef3e32',1,'PIConnection']]], + ['mid',['mid',['../class_p_i_string.html#afdeb3714be4ad6a1bf8f2478f657f510',1,'PIString']]], + ['missedbytes',['missedBytes',['../class_p_i_packet_extractor.html#ac5a810fc6551422b92ace27652c24813',1,'PIPacketExtractor']]], + ['missedbytes_5fptr',['missedBytes_ptr',['../class_p_i_packet_extractor.html#ad8cbbb5d99d89629975913b134ad68a8',1,'PIPacketExtractor']]], + ['msleep',['msleep',['../pitime_8h.html#a242b1482cf8e5f7a8c5d087a2d2b5e3b',1,'pitime.h']]], + ['multicastgroups',['multicastGroups',['../class_p_i_ethernet.html#aa7091f6fbba9f955eaba767e5a254f2e',1,'PIEthernet']]], + ['mutex',['mutex',['../class_p_i_thread.html#aeaff22c99b5f5ba444671d658eba2f14',1,'PIThread']]] +]; diff --git a/pip/doc/html/search/all_e.html b/pip/doc/html/search/all_e.html new file mode 100644 index 0000000..3afc519 --- /dev/null +++ b/pip/doc/html/search/all_e.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/all_e.js b/pip/doc/html/search/all_e.js new file mode 100644 index 0000000..75b4ba9 --- /dev/null +++ b/pip/doc/html/search/all_e.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['name',['name',['../struct_p_i_state_machine_1_1_state.html#aa0acfb1b28d4a803f7e896a3fab906f8',1,'PIStateMachine::State::name()'],['../struct_p_i_ethernet_1_1_interface.html#a9994b57e884e2ac345520f5743957a88',1,'PIEthernet::Interface::name()'],['../class_p_i_object.html#aee2242a0210f2a009d63764e01a37338',1,'PIObject::name()'],['../class_p_i_config_1_1_entry.html#a17018e3886c186689c50b5b1523cfe9e',1,'PIConfig::Entry::name()']]], + ['nanoseconds',['nanoseconds',['../class_p_i_system_time.html#a44d03ab983c54f3edfe3f5e57e08b15a',1,'PISystemTime']]], + ['needlockrun',['needLockRun',['../class_p_i_thread.html#a87a8b9315e3e2c0eb8bfeb864474da57',1,'PIThread']]], + ['netmask',['netmask',['../struct_p_i_ethernet_1_1_interface.html#ac20887e6c3e2052f67f057d85d99fca6',1,'PIEthernet::Interface']]], + ['newconnection',['newConnection',['../class_p_i_ethernet.html#aae2f98a5e99d82d5520e352bb2c87a76',1,'PIEthernet']]], + ['newline',['newLine',['../class_p_i_cout.html#a50a7d52c6670f5e693cffd30d565c1af',1,'PICout::newLine()'],['../namespace_p_i_cout_manipulators.html#a66678520ac7701c016e3e90e17a7dfa2a85451af3cb792587c99d576ae3807a67',1,'PICoutManipulators::NewLine()']]], + ['none',['None',['../class_p_i_packet_extractor.html#aab7f856e1fd64e7bdb2507badae99bb6aab134660d4356d548ad2c7e9bb3ecae0',1,'PIPacketExtractor']]], + ['normal',['Normal',['../class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579a045a7b958509dd5c127a6f8abbbe9128',1,'PIConsole']]], + ['nothing',['Nothing',['../class_p_i_console.html#a9185c02e667ead89d506730e6fdc1f5da83cb297e42b088515171ecb83f904bb5',1,'PIConsole']]], + ['null',['Null',['../namespace_p_i_cout_manipulators.html#a66678520ac7701c016e3e90e17a7dfa2a29235e52395eb8951ae13b4136252432',1,'PICoutManipulators']]] +]; diff --git a/pip/doc/html/search/all_f.html b/pip/doc/html/search/all_f.html new file mode 100644 index 0000000..0e2f45e --- /dev/null +++ b/pip/doc/html/search/all_f.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/all_f.js b/pip/doc/html/search/all_f.js new file mode 100644 index 0000000..0dfb42a --- /dev/null +++ b/pip/doc/html/search/all_f.js @@ -0,0 +1,44 @@ +var searchData= +[ + ['oct',['Oct',['../class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579a6c18590e7ad6b405aee530a187231c77',1,'PIConsole::Oct()'],['../namespace_p_i_cout_manipulators.html#a4d8fa322c1a8b3fa285759056aae1b2aaad2a72f3b7eada2a8360bdcf11cbfb80',1,'PICoutManipulators::Oct()']]], + ['opendevice',['openDevice',['../class_p_i_binary_log.html#a8d43d7d13b16fd665d5f814cb5daddfe',1,'PIBinaryLog::openDevice()'],['../class_p_i_ethernet.html#a6168aeef5b82bb0f8befa17366f1b116',1,'PIEthernet::openDevice()'],['../class_p_i_file.html#aeb972f021b5ef835566764f8bb000976',1,'PIFile::openDevice()'],['../class_p_i_i_o_device.html#ae62b3035a9f884d345fd5d071c8089c8',1,'PIIODevice::openDevice()'],['../class_p_i_serial.html#a4341607c7ecd49b68b368a9cbc49207a',1,'PISerial::openDevice()']]], + ['operator_20bool',['operator bool',['../class_p_i_config_1_1_entry.html#aed73af24f8cde6f1b57234a9ce97a920',1,'PIConfig::Entry']]], + ['operator_20char',['operator char',['../class_p_i_config_1_1_entry.html#a4b29ac07d6a8c0e67eb6e4b6c345d157',1,'PIConfig::Entry']]], + ['operator_20const_20char_20_2a',['operator const char *',['../class_p_i_string.html#a3eec9656b507d8d71ab2f58c551a03ff',1,'PIString']]], + ['operator_20const_20string',['operator const string',['../class_p_i_string.html#ab90b8d26f08ff17f5f2302bbd9f3b66a',1,'PIString']]], + ['operator_20double',['operator double',['../class_p_i_config_1_1_entry.html#a2cf9ea4e32c819b2b725560a9ca49171',1,'PIConfig::Entry']]], + ['operator_20float',['operator float',['../class_p_i_config_1_1_entry.html#a5b301d721e422fc57ebd73f2ecc17187',1,'PIConfig::Entry']]], + ['operator_20int',['operator int',['../class_p_i_flags.html#a3338b89805f5035e609939c798e6f7a1',1,'PIFlags::operator int()'],['../class_p_i_config_1_1_entry.html#a325a3c6c64f72cc129d95b56f0d0e2b9',1,'PIConfig::Entry::operator int()']]], + ['operator_20long',['operator long',['../class_p_i_config_1_1_entry.html#a60c00d0029ca1ecc9fc8c709db1e7c7b',1,'PIConfig::Entry']]], + ['operator_20pistring',['operator PIString',['../class_p_i_config_1_1_entry.html#ae2e947832d8a7116cf304a2db130da38',1,'PIConfig::Entry']]], + ['operator_20pistringlist',['operator PIStringList',['../class_p_i_config_1_1_entry.html#a1154d48f87cef1df3bd02cce06006215',1,'PIConfig::Entry']]], + ['operator_20short',['operator short',['../class_p_i_config_1_1_entry.html#abd30994ea9658c723bfe53ad27cdd612',1,'PIConfig::Entry']]], + ['operator_20uchar',['operator uchar',['../class_p_i_config_1_1_entry.html#aabe52ad80e9051d30b40ab30297165cb',1,'PIConfig::Entry']]], + ['operator_20uint',['operator uint',['../class_p_i_config_1_1_entry.html#aac49561de0e3e8c1a6207b7395aad13b',1,'PIConfig::Entry']]], + ['operator_20ulong',['operator ulong',['../class_p_i_config_1_1_entry.html#aedd0654a624229b0a9eac9fc47ecd162',1,'PIConfig::Entry']]], + ['operator_20ushort',['operator ushort',['../class_p_i_config_1_1_entry.html#a80bfe47eb1cf861ea9655d1dc9be7052',1,'PIConfig::Entry']]], + ['operator_21_3d',['operator!=',['../class_p_i_vector.html#abb6e9b8e55b4dc6a4aa639c171f2c9d9',1,'PIVector::operator!=()'],['../class_p_i_char.html#a90f2d92ee153f08c7b850c99fcbc4eac',1,'PIChar::operator!=()'],['../class_p_i_flags.html#a59ae898edaae7ee779cf47985ba97b05',1,'PIFlags::operator!=(const PIFlags &f)'],['../class_p_i_flags.html#a78ba48024fea46cc2d57172bf997e870',1,'PIFlags::operator!=(const Enum &e)'],['../class_p_i_flags.html#aa589988a996ab33adc81f906c7beff11',1,'PIFlags::operator!=(const int i)'],['../class_p_i_string.html#ae1fde0664048d052d23e40c111ebe2d3',1,'PIString::operator!=(const PIString &str) const '],['../class_p_i_string.html#aec766e4f39ef4c581026e932a2e0c60e',1,'PIString::operator!=(const PIChar c) const '],['../class_p_i_string.html#a5410e68d9c7d22527767ea28891c2c69',1,'PIString::operator!=(const char *str) const '],['../class_p_i_string.html#a05f9cb6d8d4540a62daa0bc682c914b1',1,'PIString::operator!=(const string &str) const '],['../class_p_i_string_list.html#a15888f52377f7f88aca65a66a511d3e8',1,'PIStringList::operator!=()'],['../class_p_i_system_time.html#afa5fd1abc702111b388dd20d8069902a',1,'PISystemTime::operator!=()'],['../class_p_i_variant.html#a7e188a954fbc5d18bf3f3e825e463054',1,'PIVariant::operator!=()'],['../class_p_i_byte_array.html#a9db13625502ec190fa40b4155ad136eb',1,'PIByteArray::operator!=()'],['../pibytearray_8h.html#a9db13625502ec190fa40b4155ad136eb',1,'operator!=(): pibytearray.h']]], + ['operator_26',['operator&',['../class_p_i_flags.html#a8794228e06813b904f387d831ff0e9b0',1,'PIFlags::operator&(PIFlags f) const '],['../class_p_i_flags.html#a4159b4116bded6b35ddeec688999b4bc',1,'PIFlags::operator&(Enum e) const '],['../class_p_i_flags.html#a4ab2f09fb40fa0988b968ccb957d7ba1',1,'PIFlags::operator&(int i) const ']]], + ['operator_26_3d',['operator&=',['../class_p_i_flags.html#abddc6b15602a50cb8a43935d32b57cfc',1,'PIFlags::operator&=(const PIFlags &f)'],['../class_p_i_flags.html#a69759343b60a2ded01f9eb603a4ab471',1,'PIFlags::operator&=(const Enum &e)'],['../class_p_i_flags.html#afc767b6874e64209d8d4d204f98b98b6',1,'PIFlags::operator&=(const int i)']]], + ['operator_2a',['operator*',['../class_p_i_system_time.html#a951c593d9a3d7f68edee3499886ab06e',1,'PISystemTime::operator*()'],['../pimath_8h.html#a861b7fa852296cb48167d9e9ada87cef',1,'operator*(const PIMathMatrixT< Rows0, CR, Type > &fm, const PIMathMatrixT< CR, Cols1, Type > &sm): pimath.h'],['../pimath_8h.html#a9acadcce78833d8dd628e779e6269da9',1,'operator*(const PIMathMatrixT< Rows, Cols, Type > &fm, const PIMathVectorT< Rows, Type > &sv): pimath.h'],['../pimath_8h.html#a86f4f85192137ca8ac9730333dd109a9',1,'operator*(const PIMathMatrix< Type > &fm, const PIMathMatrix< Type > &sm): pimath.h'],['../pimath_8h.html#a6362a90d4cb1ff0ae43649d50e9b4ec3',1,'operator*(const PIMathMatrix< Type > &fm, const PIMathVector< Type > &sv): pimath.h']]], + ['operator_2a_3d',['operator*=',['../class_p_i_system_time.html#af24dc2012c4ba4885975bbc4a14c12f0',1,'PISystemTime']]], + ['operator_2b',['operator+',['../class_p_i_system_time.html#a415080b1306b98576a2bd6c38b8de78d',1,'PISystemTime::operator+()'],['../class_p_i_string.html#ab542a906081915a23c5e71e4d272be61',1,'PIString::operator+(const PIString &str, const PIString &f)'],['../class_p_i_string.html#a3c9fd9112bf9bf8add42aa4a1232f02c',1,'PIString::operator+(const PIString &f, const char *str)'],['../class_p_i_string.html#a7feead55bd8c6f9c91da7575870bbb4a',1,'PIString::operator+(const PIString &f, const string &str)'],['../class_p_i_string.html#ac6c5f17dfacd8deb8db814c69390667e',1,'PIString::operator+(const char *str, const PIString &f)'],['../class_p_i_string.html#acb64f0a2a7b71219db76b5d5f498515c',1,'PIString::operator+(const string &str, const PIString &f)'],['../pistring_8h.html#ab542a906081915a23c5e71e4d272be61',1,'operator+(const PIString &str, const PIString &f): pistring.h'],['../pistring_8h.html#a3c9fd9112bf9bf8add42aa4a1232f02c',1,'operator+(const PIString &f, const char *str): pistring.h'],['../pistring_8h.html#a7feead55bd8c6f9c91da7575870bbb4a',1,'operator+(const PIString &f, const string &str): pistring.h'],['../pistring_8h.html#ac6c5f17dfacd8deb8db814c69390667e',1,'operator+(const char *str, const PIString &f): pistring.h'],['../pistring_8h.html#acb64f0a2a7b71219db76b5d5f498515c',1,'operator+(const string &str, const PIString &f): pistring.h']]], + ['operator_2b_3d',['operator+=',['../class_p_i_system_time.html#aa2e044663f23a4456aeac7b472d56d2f',1,'PISystemTime']]], + ['operator_2d',['operator-',['../class_p_i_system_time.html#a4401fa2920eb43cfb89019ef6fc5be6a',1,'PISystemTime']]], + ['operator_2d_3d',['operator-=',['../class_p_i_system_time.html#a9615d99f50b56aaf6a8b10ac96d47422',1,'PISystemTime']]], + ['operator_2f',['operator/',['../class_p_i_system_time.html#a59e752e61f73f625cc46c4613a921ee6',1,'PISystemTime']]], + ['operator_2f_3d',['operator/=',['../class_p_i_system_time.html#a4bb8e7ee161308b4f7ac23fb547fc5c1',1,'PISystemTime']]], + ['operator_3c',['operator<',['../class_p_i_char.html#a4939c02157bfbcb9a3a669ee738ddaa9',1,'PIChar::operator<()'],['../class_p_i_flags.html#a5bedc9803db598b1fe87bd815f1f50c3',1,'PIFlags::operator<(const PIFlags &f)'],['../class_p_i_flags.html#af8ad4abecf7a29b4f33a4cdba0d53a91',1,'PIFlags::operator<(const Enum &e)'],['../class_p_i_flags.html#aea03b049361f891ac03d791d8f889016',1,'PIFlags::operator<(const int i)'],['../class_p_i_string.html#a4b29c79b0cfd8eeea23977cd72f24768',1,'PIString::operator<(const PIString &str) const '],['../class_p_i_string.html#a4b40e4567d6c5b9afabfda25efeb975a',1,'PIString::operator<(const PIChar c) const '],['../class_p_i_string.html#a793f8bb4b64903f9016bfac27b4e21aa',1,'PIString::operator<(const char *str) const '],['../class_p_i_string.html#a2ed901b6668a596013959d9433461b3a',1,'PIString::operator<(const string &str) const '],['../class_p_i_system_time.html#a9f3ebf927584b6577139ebfb6008e8ab',1,'PISystemTime::operator<()'],['../pichar_8h.html#aac63033d050dd251820843b8d3108182',1,'operator<(const char v, const PIChar &c): pichar.h'],['../pichar_8h.html#a767104c71a066ca079cb71e950bfb5ff',1,'operator<(const char *v, const PIChar &c): pichar.h'],['../pichar_8h.html#adece64ba925cbd59a9fa218251556fd5',1,'operator<(const int v, const PIChar &c): pichar.h']]], + ['operator_3c_3c',['operator<<',['../class_p_i_vector.html#a24a59359b4ddeadc529bf35a11f38f6f',1,'PIVector::operator<<()'],['../struct_p_i_byte_array_1_1_raw_data.html#a0473accc805030f209813084ae135f40',1,'PIByteArray::RawData::operator<<()'],['../class_p_i_char.html#a43cad479313327c089e30ae490e01c24',1,'PIChar::operator<<()'],['../class_p_i_cout.html#ae9dacedd8cc32af047fe2cc7dab95e62',1,'PICout::operator<<(const char *v)'],['../class_p_i_cout.html#ac260e89c51ed7c18c73f11d08b6d1207',1,'PICout::operator<<(const string &v)'],['../class_p_i_cout.html#a5aee745aa969f71e82c72dc41dae2b27',1,'PICout::operator<<(const bool v)'],['../class_p_i_cout.html#a0dbe790c14f97691466e81116cce00bf',1,'PICout::operator<<(const char v)'],['../class_p_i_cout.html#ae6cb3028a7d26e39b64fb4e628eb39d9',1,'PICout::operator<<(const uchar v)'],['../class_p_i_cout.html#a4675a5d48fea56b778dac463d86cd7ac',1,'PICout::operator<<(const short v)'],['../class_p_i_cout.html#a5a4a6c12e79d161a4e44b774ce5e66f5',1,'PICout::operator<<(const ushort v)'],['../class_p_i_cout.html#a013582c7c4e95714fb10daccf43f5ca3',1,'PICout::operator<<(const int v)'],['../class_p_i_cout.html#ac8aa9b0501f6e9c9053ec3af22834fad',1,'PICout::operator<<(const uint v)'],['../class_p_i_cout.html#ae4a6ca6b6c5df3862517b5a2a7e33b55',1,'PICout::operator<<(const long v)'],['../class_p_i_cout.html#ae93cccac30d14ba6102c3f0a1e024f7c',1,'PICout::operator<<(const ulong v)'],['../class_p_i_cout.html#af7a07e6abeacd3482d7195d86791465e',1,'PICout::operator<<(const llong v)'],['../class_p_i_cout.html#a5d9d1a68372dbafd71e388353df51dec',1,'PICout::operator<<(const ullong v)'],['../class_p_i_cout.html#aab536506458cbb6310588c4f80863756',1,'PICout::operator<<(const float v)'],['../class_p_i_cout.html#a31664b00b01429c5f58328d5040954d2',1,'PICout::operator<<(const double v)'],['../class_p_i_cout.html#a92a5a13c4cb2ed1b5a72d06c59b266c7',1,'PICout::operator<<(const void *v)'],['../class_p_i_cout.html#a1394f484e833da6ccb460b58914edfd0',1,'PICout::operator<<(const PIObject *v)'],['../class_p_i_cout.html#ae658e35cc785d1d3ddc17d1b10e7283a',1,'PICout::operator<<(const PICoutSpecialChar v)'],['../class_p_i_cout.html#a356e3ae514df581ddb87bb5f10291f53',1,'PICout::operator<<(const PIFlags< PICoutFormat > v)'],['../class_p_i_cout.html#a295b2d98053cf976d5c828fd04cee60c',1,'PICout::operator<<(const PICoutFormat v)'],['../class_p_i_cout.html#a5dfbca3eb4f732919abc24f1d45987da',1,'PICout::operator<<(const PICoutAction v)'],['../class_p_i_string.html#aa9503e3cf1a769ff9969811e794848c9',1,'PIString::operator<<(const PIString &str)'],['../class_p_i_string.html#ae1a767e64e5cd7e8b0bf8f30261e7b51',1,'PIString::operator<<(const PIChar &c)'],['../class_p_i_string.html#ae913da2112cec3234ab25d5998058061',1,'PIString::operator<<(const char *str)'],['../class_p_i_string.html#a637ba3d798aef6d9b0ec1c94bd009eba',1,'PIString::operator<<(const wchar_t *str)'],['../class_p_i_string.html#a37ac4141ad06bace00f45f4199577e43',1,'PIString::operator<<(const string &str)'],['../class_p_i_string.html#a32f84a7c388aa230b00389625b957f3e',1,'PIString::operator<<(const int &num)'],['../class_p_i_string.html#a6fa1fe095dcdf2401fd6aeeeff95bcab',1,'PIString::operator<<(const short &num)'],['../class_p_i_string.html#a2716ff6ff64666a4234b95858705c9a2',1,'PIString::operator<<(const long &num)'],['../class_p_i_string.html#accecec313ba77318942690e11f745ed7',1,'PIString::operator<<(const float &num)'],['../class_p_i_string.html#af585e41702ae09d013b19477c7e1f4ef',1,'PIString::operator<<(const double &num)'],['../class_p_i_byte_array.html#ab1e23cf01f90071f1239fcfc17c8ed3d',1,'PIByteArray::operator<<(std::ostream &s, const PIByteArray &ba)'],['../class_p_i_byte_array.html#a32613363dcf56aac9f693c135fff6f89',1,'PIByteArray::operator<<(PICout s, const PIByteArray &ba)'],['../class_p_i_byte_array.html#ae4152fca25c857d502396fc477dd5b4e',1,'PIByteArray::operator<<(PIByteArray &s, uchar v)'],['../class_p_i_byte_array.html#a27cb4295a655c80c9223e2af2843ac14',1,'PIByteArray::operator<<(PIByteArray &s, const short v)'],['../class_p_i_byte_array.html#ab8951385e7eda4d8d6925b2a519624ae',1,'PIByteArray::operator<<(PIByteArray &s, const int v)'],['../class_p_i_byte_array.html#a750963c1940bf98afb59c6d5ee745f57',1,'PIByteArray::operator<<(PIByteArray &s, const long &v)'],['../class_p_i_byte_array.html#a34e8e853e5ed6beccd359e6cdbbd79ee',1,'PIByteArray::operator<<(PIByteArray &s, const llong &v)'],['../class_p_i_byte_array.html#ab5772ffd8c729df606daef9af4bab33f',1,'PIByteArray::operator<<(PIByteArray &s, const ushort v)'],['../class_p_i_byte_array.html#ad4fedc65364715baf41b635174c5fe8a',1,'PIByteArray::operator<<(PIByteArray &s, const uint v)'],['../class_p_i_byte_array.html#ac808ed51ef9536275a6133abfde4bb83',1,'PIByteArray::operator<<(PIByteArray &s, const ulong &v)'],['../class_p_i_byte_array.html#ab44ea6a59afa51508ff2901d41b627f0',1,'PIByteArray::operator<<(PIByteArray &s, const ullong &v)'],['../class_p_i_byte_array.html#a2a485f703e44ccea18c8638c7c4c5889',1,'PIByteArray::operator<<(PIByteArray &s, const float v)'],['../class_p_i_byte_array.html#a499da27a6b5a3474fff8cda6c723886a',1,'PIByteArray::operator<<(PIByteArray &s, const double &v)'],['../class_p_i_byte_array.html#a959efd617590b844d4dccf73c3565f95',1,'PIByteArray::operator<<(PIByteArray &s, const PIByteArray &v)'],['../class_p_i_byte_array.html#a65a8de355c00ee10f723c0c4a108adcd',1,'PIByteArray::operator<<(PIByteArray &s, const PIByteArray::RawData &v)'],['../class_p_i_byte_array.html#a96190dee065ee5b78285ca129e2adb1d',1,'PIByteArray::operator<<(PIByteArray &s, const PIPair< Type0, Type1 > &v)'],['../class_p_i_byte_array.html#adbbbcf8bf5e3b56e3a114df299fe7c7f',1,'PIByteArray::operator<<(PIByteArray &s, const PIVector< T > &v)'],['../class_p_i_byte_array.html#a068a0bcfbe5b9d2fa4b778ba968f44db',1,'PIByteArray::operator<<(PIByteArray &s, const PIList< T > &v)'],['../class_p_i_byte_array.html#a9b9678e9c4c372565e933d2e3ea99407',1,'PIByteArray::operator<<(PIByteArray &s, const PIDeque< T > &v)'],['../class_p_i_string.html#af86ed54c2bd0e7590db4ca3b6845f50f',1,'PIString::operator<<()'],['../class_p_i_cout.html#ab789440b8ebd894dfd628161254f057a',1,'PICout::operator<<()'],['../class_p_i_byte_array.html#adaf9cbdf9ef8f318a08ff773a54a3d6c',1,'PIByteArray::operator<<(PIByteArray &s, const PIString &v)'],['../class_p_i_byte_array.html#a08f09ee06ada0b3aab326f1c888daf4c',1,'PIByteArray::operator<<(PIByteArray &s, const PIStringList &v)'],['../class_p_i_string_list.html#ab2ace08e93a4de6b184b29bf3d690467',1,'PIStringList::operator<<()'],['../class_p_i_cout.html#a169bfa237f50a26895592fe63e2bccf1',1,'PICout::operator<<()'],['../class_p_i_byte_array.html#a6d0138248acb706f616018e64bbc64c6',1,'PIByteArray::operator<<(PICout s, const PISystemTime &v)'],['../class_p_i_byte_array.html#a43f469a88331d5bf809f97f77a12e019',1,'PIByteArray::operator<<(PIByteArray &s, const PISystemTime &v)'],['../pibytearray_8h.html#ab1e23cf01f90071f1239fcfc17c8ed3d',1,'operator<<(std::ostream &s, const PIByteArray &ba): pibytearray.h'],['../pibytearray_8h.html#a32613363dcf56aac9f693c135fff6f89',1,'operator<<(PICout s, const PIByteArray &ba): pibytearray.h'],['../pibytearray_8h.html#ae4152fca25c857d502396fc477dd5b4e',1,'operator<<(PIByteArray &s, uchar v): pibytearray.h'],['../pibytearray_8h.html#a27cb4295a655c80c9223e2af2843ac14',1,'operator<<(PIByteArray &s, const short v): pibytearray.h'],['../pibytearray_8h.html#ab8951385e7eda4d8d6925b2a519624ae',1,'operator<<(PIByteArray &s, const int v): pibytearray.h'],['../pibytearray_8h.html#a750963c1940bf98afb59c6d5ee745f57',1,'operator<<(PIByteArray &s, const long &v): pibytearray.h'],['../pibytearray_8h.html#a34e8e853e5ed6beccd359e6cdbbd79ee',1,'operator<<(PIByteArray &s, const llong &v): pibytearray.h'],['../pibytearray_8h.html#ab5772ffd8c729df606daef9af4bab33f',1,'operator<<(PIByteArray &s, const ushort v): pibytearray.h'],['../pibytearray_8h.html#ad4fedc65364715baf41b635174c5fe8a',1,'operator<<(PIByteArray &s, const uint v): pibytearray.h'],['../pibytearray_8h.html#ac808ed51ef9536275a6133abfde4bb83',1,'operator<<(PIByteArray &s, const ulong &v): pibytearray.h'],['../pibytearray_8h.html#ab44ea6a59afa51508ff2901d41b627f0',1,'operator<<(PIByteArray &s, const ullong &v): pibytearray.h'],['../pibytearray_8h.html#a2a485f703e44ccea18c8638c7c4c5889',1,'operator<<(PIByteArray &s, const float v): pibytearray.h'],['../pibytearray_8h.html#a499da27a6b5a3474fff8cda6c723886a',1,'operator<<(PIByteArray &s, const double &v): pibytearray.h'],['../pibytearray_8h.html#a959efd617590b844d4dccf73c3565f95',1,'operator<<(PIByteArray &s, const PIByteArray &v): pibytearray.h'],['../pibytearray_8h.html#a65a8de355c00ee10f723c0c4a108adcd',1,'operator<<(PIByteArray &s, const PIByteArray::RawData &v): pibytearray.h'],['../pibytearray_8h.html#a96190dee065ee5b78285ca129e2adb1d',1,'operator<<(PIByteArray &s, const PIPair< Type0, Type1 > &v): pibytearray.h'],['../pibytearray_8h.html#adbbbcf8bf5e3b56e3a114df299fe7c7f',1,'operator<<(PIByteArray &s, const PIVector< T > &v): pibytearray.h'],['../pibytearray_8h.html#a068a0bcfbe5b9d2fa4b778ba968f44db',1,'operator<<(PIByteArray &s, const PIList< T > &v): pibytearray.h'],['../pibytearray_8h.html#a9b9678e9c4c372565e933d2e3ea99407',1,'operator<<(PIByteArray &s, const PIDeque< T > &v): pibytearray.h'],['../pichar_8h.html#abadc4164b551872ca8d636998a638792',1,'operator<<(PICout s, const PIChar &v): pichar.h'],['../pichar_8h.html#a43cad479313327c089e30ae490e01c24',1,'operator<<(PIByteArray &s, const PIChar &v): pichar.h'],['../pistring_8h.html#af86ed54c2bd0e7590db4ca3b6845f50f',1,'operator<<(std::ostream &s, const PIString &v): pistring.h'],['../pistring_8h.html#ab789440b8ebd894dfd628161254f057a',1,'operator<<(PICout s, const PIString &v): pistring.h'],['../pistring_8h.html#adaf9cbdf9ef8f318a08ff773a54a3d6c',1,'operator<<(PIByteArray &s, const PIString &v): pistring.h'],['../pistring_8h.html#a08f09ee06ada0b3aab326f1c888daf4c',1,'operator<<(PIByteArray &s, const PIStringList &v): pistring.h'],['../pistring_8h.html#ab2ace08e93a4de6b184b29bf3d690467',1,'operator<<(std::ostream &s, const PIStringList &v): pistring.h'],['../pistring_8h.html#a169bfa237f50a26895592fe63e2bccf1',1,'operator<<(PICout s, const PIStringList &v): pistring.h'],['../pitime_8h.html#a6d0138248acb706f616018e64bbc64c6',1,'operator<<(PICout s, const PISystemTime &v): pitime.h'],['../pitime_8h.html#a43f469a88331d5bf809f97f77a12e019',1,'operator<<(PIByteArray &s, const PISystemTime &v): pitime.h']]], + ['operator_3c_3d',['operator<=',['../class_p_i_char.html#abf1f0ddb2ea78a58d20b880011c838b1',1,'PIChar::operator<=()'],['../class_p_i_flags.html#a8c58b248b368645075bfe17ca3d89dae',1,'PIFlags::operator<=(const PIFlags &f)'],['../class_p_i_flags.html#ad6db41bdb39487a6527ec61c38731e5f',1,'PIFlags::operator<=(const Enum &e)'],['../class_p_i_flags.html#a846954cedb1fcc2c013c19b97015d673',1,'PIFlags::operator<=(const int i)'],['../class_p_i_string.html#a0bb50e3024c857df57446970f06215f2',1,'PIString::operator<=(const PIString &str) const '],['../class_p_i_string.html#a1caa9a22c08bf1403d7f02ee25391a6a',1,'PIString::operator<=(const PIChar c) const '],['../class_p_i_string.html#ae3636333daa1c30be2e59046234549db',1,'PIString::operator<=(const char *str) const '],['../class_p_i_string.html#a7b8acb21a78caa79efaf202e7e701587',1,'PIString::operator<=(const string &str) const '],['../class_p_i_system_time.html#a5acdaaac43720151791fea0244fee00c',1,'PISystemTime::operator<=()'],['../pichar_8h.html#a13c44bf8680ec528f13a014e23668b93',1,'operator<=(const char v, const PIChar &c): pichar.h'],['../pichar_8h.html#a7fd16bab079996ca2397d3d1f99d01de',1,'operator<=(const char *v, const PIChar &c): pichar.h'],['../pichar_8h.html#a15d502867a42b6495e8ce0586824e389',1,'operator<=(const int v, const PIChar &c): pichar.h']]], + ['operator_3d',['operator=',['../class_p_i_char.html#a1ef5c3ed6b13e9dcf10f23f702dd600e',1,'PIChar::operator=()'],['../class_p_i_flags.html#aa564e466b29c503ffe5fb333477b57e9',1,'PIFlags::operator=(const PIFlags &f)'],['../class_p_i_flags.html#a770bd137d48fc87414d211136e497264',1,'PIFlags::operator=(const Enum &e)'],['../class_p_i_flags.html#a1bd66aa9dcb533ff06872cb60c280bf2',1,'PIFlags::operator=(const int &i)'],['../class_p_i_variant.html#a8348e3800d46b52e3afae8b8be493692',1,'PIVariant::operator=(const PIVariant &v)'],['../class_p_i_variant.html#aae3e2a836db1066ec9a988de171db5bd',1,'PIVariant::operator=(const char *v)'],['../class_p_i_variant.html#a95188408fc11d25360d120e9b974a965',1,'PIVariant::operator=(const bool v)'],['../class_p_i_variant.html#ad8d679e9c3e4ddce28dcbd2191c4a248',1,'PIVariant::operator=(const char v)'],['../class_p_i_variant.html#aaa33f033d5da8c323690347a2138e984',1,'PIVariant::operator=(const uchar v)'],['../class_p_i_variant.html#a6d134cec08d18e014457361bc176362e',1,'PIVariant::operator=(const short v)'],['../class_p_i_variant.html#a9f86b544ed5147ec28ea560a6482c598',1,'PIVariant::operator=(const ushort v)'],['../class_p_i_variant.html#ae45947d53b31848e58df19625738be28',1,'PIVariant::operator=(const int &v)'],['../class_p_i_variant.html#adb43e3361dd35d92587d9a039a907551',1,'PIVariant::operator=(const uint &v)'],['../class_p_i_variant.html#a699e80ad6decf492aff5dd100086484a',1,'PIVariant::operator=(const long &v)'],['../class_p_i_variant.html#a45470050a51f8f5ef7da6a48a3c415f1',1,'PIVariant::operator=(const ulong &v)'],['../class_p_i_variant.html#a586b73957d9bf2c9bc241425fea49fb3',1,'PIVariant::operator=(const llong &v)'],['../class_p_i_variant.html#a4ed52cb18d70695c2c19fa0ace6a37fa',1,'PIVariant::operator=(const ullong &v)'],['../class_p_i_variant.html#af25ec28ea7753a63581a61ff8e3106f0',1,'PIVariant::operator=(const float &v)'],['../class_p_i_variant.html#a8c11a9a6c0d1b9a2898ae0fa5388dd8b',1,'PIVariant::operator=(const double &v)'],['../class_p_i_variant.html#a17757995e61037053092bdb8172de3b6',1,'PIVariant::operator=(const ldouble &v)'],['../class_p_i_variant.html#acda1391727dae83b740e4ef1379af398',1,'PIVariant::operator=(const complexd &v)'],['../class_p_i_variant.html#a9e92c15a29b086618211a42dafc35e7e',1,'PIVariant::operator=(const complexld &v)'],['../class_p_i_variant.html#aea48e5b1ae0b1ab355cd8039241ca0d8',1,'PIVariant::operator=(const PIBitArray &v)'],['../class_p_i_variant.html#affbe4aee3a0113e7a552731a282b18b0',1,'PIVariant::operator=(const PIByteArray &v)'],['../class_p_i_variant.html#ab44d58a4818de512567826c59f7c6521',1,'PIVariant::operator=(const PIString &v)'],['../class_p_i_variant.html#a4f8012d64e5ff5272ec0904d6397ccaa',1,'PIVariant::operator=(const PIStringList &v)'],['../class_p_i_variant.html#a94878ddb843851c3f6b1f2250123584f',1,'PIVariant::operator=(const PITime &v)'],['../class_p_i_variant.html#a1a459fd1b2d325a785ef015ccc415e83',1,'PIVariant::operator=(const PIDate &v)'],['../class_p_i_variant.html#a1a951922fc438f4011676edab67425e7',1,'PIVariant::operator=(const PIDateTime &v)'],['../class_p_i_variant.html#ab0bf9ae63e3f3469a27066f958aa66a6',1,'PIVariant::operator=(const PISystemTime &v)']]], + ['operator_3d_3d',['operator==',['../class_p_i_vector.html#a420281739970e13565154c788b60bf11',1,'PIVector::operator==()'],['../class_p_i_char.html#a394d08896adbc253e919fd662422228c',1,'PIChar::operator==()'],['../class_p_i_flags.html#a92c3b13d611c323253155df10ddb0589',1,'PIFlags::operator==(const PIFlags &f)'],['../class_p_i_flags.html#a81d595884d3625e3f8339515da5142df',1,'PIFlags::operator==(const Enum &e)'],['../class_p_i_flags.html#a7d12ce96db356cf939007094fa8d18ac',1,'PIFlags::operator==(const int i)'],['../class_p_i_string.html#a4bccf4bb40ab454e0acbb72c370f74df',1,'PIString::operator==(const PIString &str) const '],['../class_p_i_string.html#a15a2d2e8205de172d5a1ba9c4e1300b5',1,'PIString::operator==(const PIChar c) const '],['../class_p_i_string.html#ae56247a537ddd4742a5f8830446396fb',1,'PIString::operator==(const char *str) const '],['../class_p_i_string.html#abcb1247b51cb9fb935fe4b7583004d2e',1,'PIString::operator==(const string &str) const '],['../class_p_i_string_list.html#a5933d3895fdf319f7077c7c078a0971e',1,'PIStringList::operator==()'],['../class_p_i_system_time.html#a1f0ca869016e7504ef2ef0d39fb24286',1,'PISystemTime::operator==()'],['../class_p_i_variant.html#ae6447e6fa8b7acc82abb30fd97a60a0e',1,'PIVariant::operator==()'],['../class_p_i_byte_array.html#a30e1b305b0f9bdcfc1d1e9c970e82d5d',1,'PIByteArray::operator==()'],['../pibytearray_8h.html#a30e1b305b0f9bdcfc1d1e9c970e82d5d',1,'operator==(PIByteArray &f, PIByteArray &s): pibytearray.h'],['../pichar_8h.html#aef66e1b5e541cb78e83ee5097c24fb66',1,'operator==(const char v, const PIChar &c): pichar.h'],['../pichar_8h.html#a4254ee10c37d8222dd82d834920ed3b8',1,'operator==(const char *v, const PIChar &c): pichar.h'],['../pichar_8h.html#a1dbcb604177557289791346d2dafc6c4',1,'operator==(const int v, const PIChar &c): pichar.h']]], + ['operator_3e',['operator>',['../class_p_i_char.html#a4610045d91868b899c0065150fe7686d',1,'PIChar::operator>()'],['../class_p_i_flags.html#a7e2e36f073adce8652f8c2bba54c4726',1,'PIFlags::operator>(const PIFlags &f)'],['../class_p_i_flags.html#ab15468c584d812993908f25e082a8a46',1,'PIFlags::operator>(const Enum &e)'],['../class_p_i_flags.html#a465dcf5ad5a0f3ce635a1cc58582ae73',1,'PIFlags::operator>(const int i)'],['../class_p_i_string.html#a559e23e281ff040dc447a47aead1556f',1,'PIString::operator>(const PIString &str) const '],['../class_p_i_string.html#a17725b847ca400d0817f4a89887658d6',1,'PIString::operator>(const PIChar c) const '],['../class_p_i_string.html#a19f4fa9c8c691030543627ba3b04c7fb',1,'PIString::operator>(const char *str) const '],['../class_p_i_string.html#a8f752b9a951be56a6e4bbf15d9683605',1,'PIString::operator>(const string &str) const '],['../class_p_i_system_time.html#a2bbab7edaddad2d31f9782aaf8441023',1,'PISystemTime::operator>()'],['../pichar_8h.html#a87f2cf00cfaf54f2c45e4529d8267523',1,'operator>(const char v, const PIChar &c): pichar.h'],['../pichar_8h.html#a5dc6be462318915b8d938a816c018ea9',1,'operator>(const char *v, const PIChar &c): pichar.h'],['../pichar_8h.html#a53cbd5dfc0e96fdd0d58bffc256d9157',1,'operator>(const int v, const PIChar &c): pichar.h']]], + ['operator_3e_3d',['operator>=',['../class_p_i_char.html#ac68d8b501225795d53adf67b4d9ea2b2',1,'PIChar::operator>=()'],['../class_p_i_flags.html#a7492424bc2aa14d9acc89ed804b43429',1,'PIFlags::operator>=(const PIFlags &f)'],['../class_p_i_flags.html#adbbd42330d0112e0a3027a4fecae5d0d',1,'PIFlags::operator>=(const Enum &e)'],['../class_p_i_flags.html#a9da15d887157a646afd68d397dfe1834',1,'PIFlags::operator>=(const int i)'],['../class_p_i_string.html#a1da2d74fa84f2da3d1632e20d834f0fa',1,'PIString::operator>=(const PIString &str) const '],['../class_p_i_string.html#ae4c9edd7b999ec3b755f584cbd730d93',1,'PIString::operator>=(const PIChar c) const '],['../class_p_i_string.html#a4b9695c703cb3055d9b395a84bbc091c',1,'PIString::operator>=(const char *str) const '],['../class_p_i_string.html#a0368a200e908bee57dabdfb5f8cf8563',1,'PIString::operator>=(const string &str) const '],['../class_p_i_system_time.html#ab6e479036d86834fbdc3eb39ae17f062',1,'PISystemTime::operator>=()'],['../pichar_8h.html#ab4990ff3eadcbc5aab844bc6758c5b8b',1,'operator>=(const char v, const PIChar &c): pichar.h'],['../pichar_8h.html#aed3f8114f5a468d2af576f6570cc3efa',1,'operator>=(const char *v, const PIChar &c): pichar.h'],['../pichar_8h.html#ae178de75f712e81d893a87fbd4d6c5a4',1,'operator>=(const int v, const PIChar &c): pichar.h']]], + ['operator_3e_3e',['operator>>',['../struct_p_i_byte_array_1_1_raw_data.html#ab6da5d995b37fa429d0f3e1288b78393',1,'PIByteArray::RawData::operator>>()'],['../class_p_i_char.html#a697daa3db190238c3cad29b288821ae0',1,'PIChar::operator>>()'],['../class_p_i_byte_array.html#ab13b3356e12200d943eca6fb5914fff3',1,'PIByteArray::operator>>(PIByteArray &s, uchar &v)'],['../class_p_i_byte_array.html#ab169b593f262836b81ef0f1e85742bb5',1,'PIByteArray::operator>>(PIByteArray &s, short &v)'],['../class_p_i_byte_array.html#a9193853f9065d13faa500d7402011e95',1,'PIByteArray::operator>>(PIByteArray &s, int &v)'],['../class_p_i_byte_array.html#a2936831420330a89c932b9378bcb531a',1,'PIByteArray::operator>>(PIByteArray &s, long &v)'],['../class_p_i_byte_array.html#ac2f7009be50024c741ba1e34e2520105',1,'PIByteArray::operator>>(PIByteArray &s, llong &v)'],['../class_p_i_byte_array.html#a6d7b09e8e0ae58e2a0660a95f5297d62',1,'PIByteArray::operator>>(PIByteArray &s, ushort &v)'],['../class_p_i_byte_array.html#a6c4c55eac2a9c3f087e4f86ae8d76104',1,'PIByteArray::operator>>(PIByteArray &s, uint &v)'],['../class_p_i_byte_array.html#a562da0ccdeabb8269757e25955bb3da5',1,'PIByteArray::operator>>(PIByteArray &s, ulong &v)'],['../class_p_i_byte_array.html#a51721eb920f53d0c919eec52cf10cd52',1,'PIByteArray::operator>>(PIByteArray &s, ullong &v)'],['../class_p_i_byte_array.html#a908c8071a8eee9fb7a3752bee614333a',1,'PIByteArray::operator>>(PIByteArray &s, float &v)'],['../class_p_i_byte_array.html#a4f8b92d20e45ebe4e3bac6e2ccedf9f0',1,'PIByteArray::operator>>(PIByteArray &s, double &v)'],['../class_p_i_byte_array.html#aa77ecc852d4e3ba6e4fbe7a7258cfb87',1,'PIByteArray::operator>>(PIByteArray &s, PIByteArray &v)'],['../class_p_i_byte_array.html#afb2b51047b10d19aced414fec7744dd2',1,'PIByteArray::operator>>(PIByteArray &s, PIByteArray::RawData v)'],['../class_p_i_byte_array.html#ab2b77a56ba810e64d937dc4f33438310',1,'PIByteArray::operator>>(PIByteArray &s, PIPair< Type0, Type1 > &v)'],['../class_p_i_byte_array.html#a3ad45b3c81b974189a6c9ab5193e24d5',1,'PIByteArray::operator>>(PIByteArray &s, PIVector< T > &v)'],['../class_p_i_byte_array.html#a35c4ea115bdcb4627fd9fa635d1c681a',1,'PIByteArray::operator>>(PIByteArray &s, PIList< T > &v)'],['../class_p_i_byte_array.html#a6cee541d60566eef92585f50aa9ec436',1,'PIByteArray::operator>>(PIByteArray &s, PIDeque< T > &v)'],['../class_p_i_string.html#a92a7c6060c9a5cea05fc97d6faea53a2',1,'PIString::operator>>()'],['../class_p_i_byte_array.html#a6cd37806e2577611e4a22dc2031fc166',1,'PIByteArray::operator>>(PIByteArray &s, PIString &v)'],['../class_p_i_byte_array.html#a410bed597b49992e265e0941feca5cb8',1,'PIByteArray::operator>>(PIByteArray &s, PIStringList &v)'],['../class_p_i_byte_array.html#ad563e018cb30fbced03966997b2fc65a',1,'PIByteArray::operator>>(PIByteArray &s, PISystemTime &v)'],['../pibytearray_8h.html#ab13b3356e12200d943eca6fb5914fff3',1,'operator>>(PIByteArray &s, uchar &v): pibytearray.h'],['../pibytearray_8h.html#ab169b593f262836b81ef0f1e85742bb5',1,'operator>>(PIByteArray &s, short &v): pibytearray.h'],['../pibytearray_8h.html#a9193853f9065d13faa500d7402011e95',1,'operator>>(PIByteArray &s, int &v): pibytearray.h'],['../pibytearray_8h.html#a2936831420330a89c932b9378bcb531a',1,'operator>>(PIByteArray &s, long &v): pibytearray.h'],['../pibytearray_8h.html#ac2f7009be50024c741ba1e34e2520105',1,'operator>>(PIByteArray &s, llong &v): pibytearray.h'],['../pibytearray_8h.html#a6d7b09e8e0ae58e2a0660a95f5297d62',1,'operator>>(PIByteArray &s, ushort &v): pibytearray.h'],['../pibytearray_8h.html#a6c4c55eac2a9c3f087e4f86ae8d76104',1,'operator>>(PIByteArray &s, uint &v): pibytearray.h'],['../pibytearray_8h.html#a562da0ccdeabb8269757e25955bb3da5',1,'operator>>(PIByteArray &s, ulong &v): pibytearray.h'],['../pibytearray_8h.html#a51721eb920f53d0c919eec52cf10cd52',1,'operator>>(PIByteArray &s, ullong &v): pibytearray.h'],['../pibytearray_8h.html#a908c8071a8eee9fb7a3752bee614333a',1,'operator>>(PIByteArray &s, float &v): pibytearray.h'],['../pibytearray_8h.html#a4f8b92d20e45ebe4e3bac6e2ccedf9f0',1,'operator>>(PIByteArray &s, double &v): pibytearray.h'],['../pibytearray_8h.html#aa77ecc852d4e3ba6e4fbe7a7258cfb87',1,'operator>>(PIByteArray &s, PIByteArray &v): pibytearray.h'],['../pibytearray_8h.html#afb2b51047b10d19aced414fec7744dd2',1,'operator>>(PIByteArray &s, PIByteArray::RawData v): pibytearray.h'],['../pibytearray_8h.html#ab2b77a56ba810e64d937dc4f33438310',1,'operator>>(PIByteArray &s, PIPair< Type0, Type1 > &v): pibytearray.h'],['../pibytearray_8h.html#a3ad45b3c81b974189a6c9ab5193e24d5',1,'operator>>(PIByteArray &s, PIVector< T > &v): pibytearray.h'],['../pibytearray_8h.html#a35c4ea115bdcb4627fd9fa635d1c681a',1,'operator>>(PIByteArray &s, PIList< T > &v): pibytearray.h'],['../pibytearray_8h.html#a6cee541d60566eef92585f50aa9ec436',1,'operator>>(PIByteArray &s, PIDeque< T > &v): pibytearray.h'],['../pichar_8h.html#a697daa3db190238c3cad29b288821ae0',1,'operator>>(PIByteArray &s, PIChar &v): pichar.h'],['../pistring_8h.html#a92a7c6060c9a5cea05fc97d6faea53a2',1,'operator>>(std::istream &s, PIString &v): pistring.h'],['../pistring_8h.html#a6cd37806e2577611e4a22dc2031fc166',1,'operator>>(PIByteArray &s, PIString &v): pistring.h'],['../pistring_8h.html#a410bed597b49992e265e0941feca5cb8',1,'operator>>(PIByteArray &s, PIStringList &v): pistring.h'],['../pitime_8h.html#ad563e018cb30fbced03966997b2fc65a',1,'operator>>(PIByteArray &s, PISystemTime &v): pitime.h']]], + ['operator_5b_5d',['operator[]',['../class_p_i_set.html#ab4b957ab5ad99589a07cea34cce4b4ca',1,'PISet::operator[]()'],['../class_p_i_flags.html#a8db0289c6a2d99736f2ad8cf8ab48aea',1,'PIFlags::operator[]()'],['../class_p_i_string.html#aa367374496df45efba10fd44e52a6777',1,'PIString::operator[](const int pos) const '],['../class_p_i_string.html#a192df04225c734474a74ed92a3be92e4',1,'PIString::operator[](const int pos)']]], + ['operator_5e',['operator^',['../class_p_i_flags.html#a6ba52142f66b679d36c16f7954c87296',1,'PIFlags::operator^(PIFlags f) const '],['../class_p_i_flags.html#ac0526e886b96e22c4e3433eecd7e8682',1,'PIFlags::operator^(Enum e) const '],['../class_p_i_flags.html#a34b1ab652fa134e129c55502c577f10e',1,'PIFlags::operator^(int i) const ']]], + ['operator_5e_3d',['operator^=',['../class_p_i_flags.html#a52cc502ff50daa80c835b830f887e123',1,'PIFlags::operator^=(const PIFlags &f)'],['../class_p_i_flags.html#a786e69005ae156211ea3fbfcfb442c5a',1,'PIFlags::operator^=(const Enum &e)'],['../class_p_i_flags.html#a53d822bbb7e7b3ed6aed90d6b07d96cf',1,'PIFlags::operator^=(const int i)']]], + ['operator_7c',['operator|',['../class_p_i_flags.html#a9b502fbd3bb299efac66cbeb364b3480',1,'PIFlags::operator|(PIFlags f) const '],['../class_p_i_flags.html#a0cfb21b9520162fc35a4e9b55dade176',1,'PIFlags::operator|(Enum e) const '],['../class_p_i_flags.html#a9f7a72e1d42087971ebc2368f2a4819d',1,'PIFlags::operator|(int i) const ']]], + ['operator_7c_3d',['operator|=',['../class_p_i_flags.html#ad75fb5da994327ba3d7c3fc6ec6618a8',1,'PIFlags::operator|=(const PIFlags &f)'],['../class_p_i_flags.html#a875de3331e28f62926b93434d97f0e95',1,'PIFlags::operator|=(const Enum &e)'],['../class_p_i_flags.html#aa2c5fcf51605331ef710d5fa9f9f85dc',1,'PIFlags::operator|=(const int i)']]] +]; diff --git a/pip/doc/html/search/classes_0.html b/pip/doc/html/search/classes_0.html new file mode 100644 index 0000000..a7b6a28 --- /dev/null +++ b/pip/doc/html/search/classes_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/classes_0.js b/pip/doc/html/search/classes_0.js new file mode 100644 index 0000000..0c04879 --- /dev/null +++ b/pip/doc/html/search/classes_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['branch',['Branch',['../class_p_i_config_1_1_branch.html',1,'PIConfig']]] +]; diff --git a/pip/doc/html/search/classes_1.html b/pip/doc/html/search/classes_1.html new file mode 100644 index 0000000..1adf16d --- /dev/null +++ b/pip/doc/html/search/classes_1.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/classes_1.js b/pip/doc/html/search/classes_1.js new file mode 100644 index 0000000..282d6d8 --- /dev/null +++ b/pip/doc/html/search/classes_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['entry',['Entry',['../class_p_i_config_1_1_entry.html',1,'PIConfig']]] +]; diff --git a/pip/doc/html/search/classes_2.html b/pip/doc/html/search/classes_2.html new file mode 100644 index 0000000..b5828d9 --- /dev/null +++ b/pip/doc/html/search/classes_2.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/classes_2.js b/pip/doc/html/search/classes_2.js new file mode 100644 index 0000000..a6947c9 --- /dev/null +++ b/pip/doc/html/search/classes_2.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['interface',['Interface',['../struct_p_i_ethernet_1_1_interface.html',1,'PIEthernet']]], + ['interfacelist',['InterfaceList',['../class_p_i_ethernet_1_1_interface_list.html',1,'PIEthernet']]] +]; diff --git a/pip/doc/html/search/classes_3.html b/pip/doc/html/search/classes_3.html new file mode 100644 index 0000000..c42a9a1 --- /dev/null +++ b/pip/doc/html/search/classes_3.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/classes_3.js b/pip/doc/html/search/classes_3.js new file mode 100644 index 0000000..ab6c107 --- /dev/null +++ b/pip/doc/html/search/classes_3.js @@ -0,0 +1,105 @@ +var searchData= +[ + ['pibinarylog',['PIBinaryLog',['../class_p_i_binary_log.html',1,'']]], + ['pibytearray',['PIByteArray',['../class_p_i_byte_array.html',1,'']]], + ['pichar',['PIChar',['../class_p_i_char.html',1,'']]], + ['picli',['PICLI',['../class_p_i_c_l_i.html',1,'']]], + ['picollection',['PICollection',['../class_p_i_collection.html',1,'']]], + ['piconfig',['PIConfig',['../class_p_i_config.html',1,'']]], + ['piconnection',['PIConnection',['../class_p_i_connection.html',1,'']]], + ['piconsole',['PIConsole',['../class_p_i_console.html',1,'']]], + ['picout',['PICout',['../class_p_i_cout.html',1,'']]], + ['pidiagnostics',['PIDiagnostics',['../class_p_i_diagnostics.html',1,'']]], + ['piethernet',['PIEthernet',['../class_p_i_ethernet.html',1,'']]], + ['pievaluator',['PIEvaluator',['../class_p_i_evaluator.html',1,'']]], + ['pifile',['PIFile',['../class_p_i_file.html',1,'']]], + ['piflags',['PIFlags',['../class_p_i_flags.html',1,'']]], + ['piflags_3c_20attribute_20_3e',['PIFlags< Attribute >',['../class_p_i_flags.html',1,'']]], + ['piflags_3c_20interfaceflag_20_3e',['PIFlags< InterfaceFlag >',['../class_p_i_flags.html',1,'']]], + ['piflags_3c_20picodeinfo_3a_3atypeflag_20_3e',['PIFlags< PICodeInfo::TypeFlag >',['../class_p_i_flags.html',1,'']]], + ['piflags_3c_20piconsole_3a_3aformat_20_3e',['PIFlags< PIConsole::Format >',['../class_p_i_flags.html',1,'']]], + ['piflags_3c_20picoutcontrol_20_3e',['PIFlags< PICoutControl >',['../class_p_i_flags.html',1,'']]], + ['piiodevice',['PIIODevice',['../class_p_i_i_o_device.html',1,'']]], + ['pikbdlistener',['PIKbdListener',['../class_p_i_kbd_listener.html',1,'']]], + ['pimutex',['PIMutex',['../class_p_i_mutex.html',1,'']]], + ['piobject',['PIObject',['../class_p_i_object.html',1,'']]], + ['pipacketextractor',['PIPacketExtractor',['../class_p_i_packet_extractor.html',1,'']]], + ['piprocess',['PIProcess',['../class_p_i_process.html',1,'']]], + ['piprotocol',['PIProtocol',['../class_p_i_protocol.html',1,'']]], + ['piserial',['PISerial',['../class_p_i_serial.html',1,'']]], + ['piset',['PISet',['../class_p_i_set.html',1,'']]], + ['piset_3c_20const_20void_20_2a_20_3e',['PISet< const void * >',['../class_p_i_set.html',1,'']]], + ['piset_3c_20piobject_20_2a_20_3e',['PISet< PIObject * >',['../class_p_i_set.html',1,'']]], + ['piset_3c_20pistring_20_3e',['PISet< PIString >',['../class_p_i_set.html',1,'']]], + ['pistatemachine',['PIStateMachine',['../class_p_i_state_machine.html',1,'']]], + ['pistring',['PIString',['../class_p_i_string.html',1,'']]], + ['pistringlist',['PIStringList',['../class_p_i_string_list.html',1,'']]], + ['pisystemtime',['PISystemTime',['../class_p_i_system_time.html',1,'']]], + ['pithread',['PIThread',['../class_p_i_thread.html',1,'']]], + ['pitimemeasurer',['PITimeMeasurer',['../class_p_i_time_measurer.html',1,'']]], + ['pitimer',['PITimer',['../class_p_i_timer.html',1,'']]], + ['pivariant',['PIVariant',['../class_p_i_variant.html',1,'']]], + ['pivector',['PIVector',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20_5f_5fehdata_20_3e',['PIVector< __EHData >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20_5f_5fehfunc_20_3e',['PIVector< __EHFunc >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20_5fpitimerimp_5fpool_20_2a_20_3e',['PIVector< _PITimerImp_Pool * >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20argument_20_3e',['PIVector< Argument >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20column_20_3e',['PIVector< Column >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20complexd_20_3e',['PIVector< complexd >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20condition_20_3e',['PIVector< Condition >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20connection_20_3e',['PIVector< Connection >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20const_20piobject_20_2a_20_3e',['PIVector< const PIObject * >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20define_20_3e',['PIVector< Define >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20delimiter_20_3e',['PIVector< Delimiter >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20devicedata_20_2a_20_3e',['PIVector< DeviceData * >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20double_20_3e',['PIVector< double >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20entity_20_2a_20_3e',['PIVector< Entity * >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20entry_20_2a_20_3e',['PIVector< Entry * >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20entry_20_3e',['PIVector< Entry >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20enum_20_3e',['PIVector< Enum >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20enumerator_20_3e',['PIVector< Enumerator >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20extractor_20_2a_20_3e',['PIVector< Extractor * >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20group_20_3e',['PIVector< Group >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20int_20_3e',['PIVector< int >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20macro_20_3e',['PIVector< Macro >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20member_20_3e',['PIVector< Member >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20node_20_3e',['PIVector< node >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20peerinfo_20_3e',['PIVector< PeerInfo >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20picodeinfo_3a_3aenumeratorinfo_20_3e',['PIVector< PICodeInfo::EnumeratorInfo >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20picodeinfo_3a_3afunctioninfo_20_3e',['PIVector< PICodeInfo::FunctionInfo >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20picodeinfo_3a_3atypeinfo_20_3e',['PIVector< PICodeInfo::TypeInfo >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20piconnection_20_2a_20_3e',['PIVector< PIConnection * >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20pidiagnostics_20_2a_20_3e',['PIVector< PIDiagnostics * >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20piethernet_20_2a_20_3e',['PIVector< PIEthernet * >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20piethernet_3a_3ainterface_20_3e',['PIVector< PIEthernet::Interface >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20pievaluatortypes_3a_3aelement_20_3e',['PIVector< PIEvaluatorTypes::Element >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20pievaluatortypes_3a_3afunction_20_3e',['PIVector< PIEvaluatorTypes::Function >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20pievaluatortypes_3a_3ainstruction_20_3e',['PIVector< PIEvaluatorTypes::Instruction >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20pievaluatortypes_3a_3avariable_20_3e',['PIVector< PIEvaluatorTypes::Variable >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20piiodevice_20_2a_20_3e',['PIVector< PIIODevice * >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20piiodevice_3a_3adevicemode_20_3e',['PIVector< PIIODevice::DeviceMode >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20pimathvectord_20_3e',['PIVector< PIMathVectord >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20piobject_20_2a_20_3e',['PIVector< PIObject * >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20pipair_3c_20pibytearray_2c_20ullong_20_3e_20_3e',['PIVector< PIPair< PIByteArray, ullong > >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20piprotocol_20_2a_20_3e',['PIVector< PIProtocol * >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20pistatemachine_3a_3arule_20_3e',['PIVector< PIStateMachine::Rule >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20pistatemachine_3a_3astate_20_3e',['PIVector< PIStateMachine::State >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20pistring_20_3e',['PIVector< PIString >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20piusb_3a_3aconfiguration_20_3e',['PIVector< PIUSB::Configuration >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20piusb_3a_3aendpoint_20_3e',['PIVector< PIUSB::Endpoint >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20piusb_3a_3ainterface_20_3e',['PIVector< PIUSB::Interface >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20pivariant_20_3e',['PIVector< PIVariant >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20pivector_3c_20double_20_3e_20_3e',['PIVector< PIVector< double > >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20pivector_3c_20peerinfo_20_2a_20_3e_20_3e',['PIVector< PIVector< PeerInfo * > >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20pivector_3c_20piiodevice_20_2a_20_3e_20_3e',['PIVector< PIVector< PIIODevice * > >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20pivector_3c_20pipacketextractor_20_2a_20_3e_20_3e',['PIVector< PIVector< PIPacketExtractor * > >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20pivector_3c_20type_20_3e_20_3e',['PIVector< PIVector< Type > >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20remoteclient_20_3e',['PIVector< RemoteClient >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20sender_20_2a_20_3e',['PIVector< Sender * >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20socket_20_3e',['PIVector< SOCKET >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20tab_20_3e',['PIVector< Tab >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20type_20_3e',['PIVector< Type >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20typedef_20_3e',['PIVector< Typedef >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20uchar_20_3e',['PIVector< uchar >',['../class_p_i_vector.html',1,'']]], + ['pivector_3c_20variable_20_3e',['PIVector< Variable >',['../class_p_i_vector.html',1,'']]] +]; diff --git a/pip/doc/html/search/classes_4.html b/pip/doc/html/search/classes_4.html new file mode 100644 index 0000000..6a7e824 --- /dev/null +++ b/pip/doc/html/search/classes_4.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/classes_4.js b/pip/doc/html/search/classes_4.js new file mode 100644 index 0000000..dfffffe --- /dev/null +++ b/pip/doc/html/search/classes_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['rawdata',['RawData',['../struct_p_i_byte_array_1_1_raw_data.html',1,'PIByteArray']]], + ['rule',['Rule',['../struct_p_i_state_machine_1_1_rule.html',1,'PIStateMachine']]] +]; diff --git a/pip/doc/html/search/classes_5.html b/pip/doc/html/search/classes_5.html new file mode 100644 index 0000000..baa0bfe --- /dev/null +++ b/pip/doc/html/search/classes_5.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/classes_5.js b/pip/doc/html/search/classes_5.js new file mode 100644 index 0000000..663d384 --- /dev/null +++ b/pip/doc/html/search/classes_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['state',['State',['../struct_p_i_state_machine_1_1_state.html',1,'PIStateMachine']]] +]; diff --git a/pip/doc/html/search/classes_6.html b/pip/doc/html/search/classes_6.html new file mode 100644 index 0000000..d3b1f9b --- /dev/null +++ b/pip/doc/html/search/classes_6.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/classes_6.js b/pip/doc/html/search/classes_6.js new file mode 100644 index 0000000..4079ebc --- /dev/null +++ b/pip/doc/html/search/classes_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['transferfunction',['TransferFunction',['../struct_transfer_function.html',1,'']]] +]; diff --git a/pip/doc/html/search/close.png b/pip/doc/html/search/close.png new file mode 100644 index 0000000000000000000000000000000000000000..9342d3dfeea7b7c4ee610987e717804b5a42ceb9 GIT binary patch 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 literal 0 HcmV?d00001 diff --git a/pip/doc/html/search/defines_0.html b/pip/doc/html/search/defines_0.html new file mode 100644 index 0000000..a450861 --- /dev/null +++ b/pip/doc/html/search/defines_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/defines_0.js b/pip/doc/html/search/defines_0.js new file mode 100644 index 0000000..0c0b984 --- /dev/null +++ b/pip/doc/html/search/defines_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['android',['ANDROID',['../piincludes_8h.html#a84b6d92b7538d9eb6d3cc527c0450558',1,'piincludes.h']]] +]; diff --git a/pip/doc/html/search/defines_1.html b/pip/doc/html/search/defines_1.html new file mode 100644 index 0000000..31100f0 --- /dev/null +++ b/pip/doc/html/search/defines_1.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/defines_1.js b/pip/doc/html/search/defines_1.js new file mode 100644 index 0000000..54c92b3 --- /dev/null +++ b/pip/doc/html/search/defines_1.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['cc_5fgcc',['CC_GCC',['../piincludes_8h.html#ac1b21a2fcec2c0b8a3c5a463d9296979',1,'piincludes.h']]], + ['cc_5fother',['CC_OTHER',['../piincludes_8h.html#a572d4f1b7fe8cb972e492e9d7fd83cd5',1,'CC_OTHER(): piincludes.h'],['../piincludes_8h.html#a572d4f1b7fe8cb972e492e9d7fd83cd5',1,'CC_OTHER(): piincludes.h']]], + ['cc_5fvc',['CC_VC',['../piincludes_8h.html#a9e439bece2ee7f7fef34febe9b317a8f',1,'piincludes.h']]] +]; diff --git a/pip/doc/html/search/defines_2.html b/pip/doc/html/search/defines_2.html new file mode 100644 index 0000000..d5697ac --- /dev/null +++ b/pip/doc/html/search/defines_2.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/defines_2.js b/pip/doc/html/search/defines_2.js new file mode 100644 index 0000000..de3d2a0 --- /dev/null +++ b/pip/doc/html/search/defines_2.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['forever',['FOREVER',['../piincludes_8h.html#a75c828ed6c02fcd44084e67a032e422c',1,'piincludes.h']]], + ['forever_5fwait',['FOREVER_WAIT',['../piincludes_8h.html#a39da857669ed22c419a967d5c9acae77',1,'piincludes.h']]], + ['free_5fbsd',['FREE_BSD',['../piincludes_8h.html#a436564e12a6f982e63f9a76357146ad6',1,'piincludes.h']]] +]; diff --git a/pip/doc/html/search/defines_3.html b/pip/doc/html/search/defines_3.html new file mode 100644 index 0000000..d48a72c --- /dev/null +++ b/pip/doc/html/search/defines_3.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/defines_3.js b/pip/doc/html/search/defines_3.js new file mode 100644 index 0000000..1177abc --- /dev/null +++ b/pip/doc/html/search/defines_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['has_5flocale',['HAS_LOCALE',['../piincludes_8h.html#ad5c40e21f5f16ceeb1b98ee2de82a612',1,'piincludes.h']]] +]; diff --git a/pip/doc/html/search/defines_4.html b/pip/doc/html/search/defines_4.html new file mode 100644 index 0000000..bf41f71 --- /dev/null +++ b/pip/doc/html/search/defines_4.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/defines_4.js b/pip/doc/html/search/defines_4.js new file mode 100644 index 0000000..612ff70 --- /dev/null +++ b/pip/doc/html/search/defines_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['linux',['LINUX',['../piincludes_8h.html#a157a956e14c5c44b3f73ef23a4776f64',1,'piincludes.h']]] +]; diff --git a/pip/doc/html/search/defines_5.html b/pip/doc/html/search/defines_5.html new file mode 100644 index 0000000..e96273c --- /dev/null +++ b/pip/doc/html/search/defines_5.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/defines_5.js b/pip/doc/html/search/defines_5.js new file mode 100644 index 0000000..46df734 --- /dev/null +++ b/pip/doc/html/search/defines_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['mac_5fos',['MAC_OS',['../piincludes_8h.html#a92897222c2229040c842e33404deea72',1,'piincludes.h']]] +]; diff --git a/pip/doc/html/search/defines_6.html b/pip/doc/html/search/defines_6.html new file mode 100644 index 0000000..5c5a431 --- /dev/null +++ b/pip/doc/html/search/defines_6.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/defines_6.js b/pip/doc/html/search/defines_6.js new file mode 100644 index 0000000..7cdf7d6 --- /dev/null +++ b/pip/doc/html/search/defines_6.js @@ -0,0 +1,20 @@ +var searchData= +[ + ['pibreak',['piBreak',['../picontainers_8h.html#aa315501e5bd9c279ad09fd39dccdea4d',1,'picontainers.h']]], + ['picout',['piCout',['../piincludes_8h.html#ad21862cbba89aead064fbef4c825030e',1,'piincludes.h']]], + ['piforeach',['piForeach',['../picontainers_8h.html#aa579232460ca92efa5c1befd41d923ba',1,'picontainers.h']]], + ['piforeachc',['piForeachC',['../picontainers_8h.html#a807914d038e5a193d2e36b4b82b6df96',1,'picontainers.h']]], + ['piforeachcr',['piForeachCR',['../picontainers_8h.html#ad2685d4ca04df1f2154844e5984b41d8',1,'picontainers.h']]], + ['piforeachr',['piForeachR',['../picontainers_8h.html#a0e968bf591ab05721d5ef2ce201e09ed',1,'picontainers.h']]], + ['pimm_5ffor',['PIMM_FOR',['../pimath_8h.html#a119d2152ee2bf3edef4d9e5a641405f7',1,'PIMM_FOR(): pimath.h'],['../pimath_8h.html#a14d1a9088eff4d1065094ba1cabf395d',1,'PIMM_FOR(): pimath.h']]], + ['pimv_5ffor',['PIMV_FOR',['../pimath_8h.html#a2701c7bffde31ab4a96bf4d7fdb6866f',1,'PIMV_FOR(): pimath.h'],['../pimath_8h.html#a2701c7bffde31ab4a96bf4d7fdb6866f',1,'PIMV_FOR(): pimath.h']]], + ['pip_5fbytearray_5fstream_5fany_5ftype',['PIP_BYTEARRAY_STREAM_ANY_TYPE',['../pibytearray_8h.html#ab8da61a42f0f76ae84a347c4a9217b31',1,'pibytearray.h']]], + ['pip_5fcontainers_5fstl',['PIP_CONTAINERS_STL',['../piincludes_8h.html#a3806a9aff68b7e2620f37a79e12fb850',1,'piincludes.h']]], + ['pip_5fdebug',['PIP_DEBUG',['../piincludes_8h.html#a7a5fe60328e1cb0dc0f508506afb4ae9',1,'piincludes.h']]], + ['pip_5ftimer_5frt',['PIP_TIMER_RT',['../piincludes_8h.html#ab866c362b595e2b327a450f6593f639a',1,'piincludes.h']]], + ['pip_5fversion',['PIP_VERSION',['../piincludes_8h.html#acbb7adb82bd5dd3060e2ad0eb604b1bf',1,'piincludes.h']]], + ['pip_5fversion_5fmajor',['PIP_VERSION_MAJOR',['../piincludes_8h.html#a8883b51de92fb8a549d8e78d3db33e59',1,'piincludes.h']]], + ['pip_5fversion_5fminor',['PIP_VERSION_MINOR',['../piincludes_8h.html#a6feaccd6b29e1709448f9adbae63cfef',1,'piincludes.h']]], + ['pip_5fversion_5frevision',['PIP_VERSION_REVISION',['../piincludes_8h.html#a1eab67c2ab5528a13d5a071678a08bc6',1,'piincludes.h']]], + ['pip_5fversion_5fsuffix',['PIP_VERSION_SUFFIX',['../piincludes_8h.html#aa7382f8ef6d40b57db8a29a3ae810feb',1,'piincludes.h']]] +]; diff --git a/pip/doc/html/search/defines_7.html b/pip/doc/html/search/defines_7.html new file mode 100644 index 0000000..5c711df --- /dev/null +++ b/pip/doc/html/search/defines_7.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/defines_7.js b/pip/doc/html/search/defines_7.js new file mode 100644 index 0000000..d9189f8 --- /dev/null +++ b/pip/doc/html/search/defines_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['qnx',['QNX',['../piincludes_8h.html#a167ea11947b8e4a492b2366ca250dbc0',1,'piincludes.h']]] +]; diff --git a/pip/doc/html/search/defines_8.html b/pip/doc/html/search/defines_8.html new file mode 100644 index 0000000..5398220 --- /dev/null +++ b/pip/doc/html/search/defines_8.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/defines_8.js b/pip/doc/html/search/defines_8.js new file mode 100644 index 0000000..4c0aacd --- /dev/null +++ b/pip/doc/html/search/defines_8.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['wait_5fforever',['WAIT_FOREVER',['../piincludes_8h.html#ac89d2c332821be06166c210249b671e7',1,'piincludes.h']]], + ['windows',['WINDOWS',['../piincludes_8h.html#a987b73d7cc6da72732af75c5d7872d29',1,'piincludes.h']]] +]; diff --git a/pip/doc/html/search/enums_0.html b/pip/doc/html/search/enums_0.html new file mode 100644 index 0000000..3242db7 --- /dev/null +++ b/pip/doc/html/search/enums_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/enums_0.js b/pip/doc/html/search/enums_0.js new file mode 100644 index 0000000..5cce1a0 --- /dev/null +++ b/pip/doc/html/search/enums_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['alignment',['Alignment',['../class_p_i_console.html#a9185c02e667ead89d506730e6fdc1f5d',1,'PIConsole']]] +]; diff --git a/pip/doc/html/search/enums_1.html b/pip/doc/html/search/enums_1.html new file mode 100644 index 0000000..d939cc5 --- /dev/null +++ b/pip/doc/html/search/enums_1.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/enums_1.js b/pip/doc/html/search/enums_1.js new file mode 100644 index 0000000..4198a27 --- /dev/null +++ b/pip/doc/html/search/enums_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['format',['Format',['../class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579',1,'PIConsole']]] +]; diff --git a/pip/doc/html/search/enums_2.html b/pip/doc/html/search/enums_2.html new file mode 100644 index 0000000..c3fe4be --- /dev/null +++ b/pip/doc/html/search/enums_2.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/enums_2.js b/pip/doc/html/search/enums_2.js new file mode 100644 index 0000000..fc4fede --- /dev/null +++ b/pip/doc/html/search/enums_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['interfaceflag',['InterfaceFlag',['../class_p_i_ethernet.html#a2e219801b3a6c451c4aca63ad99b6374',1,'PIEthernet']]] +]; diff --git a/pip/doc/html/search/enums_3.html b/pip/doc/html/search/enums_3.html new file mode 100644 index 0000000..80f3179 --- /dev/null +++ b/pip/doc/html/search/enums_3.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/enums_3.js b/pip/doc/html/search/enums_3.js new file mode 100644 index 0000000..e334120 --- /dev/null +++ b/pip/doc/html/search/enums_3.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['parameters',['Parameters',['../class_p_i_ethernet.html#ae03a64ce3d7d8a1e95b2212ab2497f55',1,'PIEthernet']]], + ['picoutaction',['PICoutAction',['../namespace_p_i_cout_manipulators.html#a38d041a4e2de4ca6af939837475e9387',1,'PICoutManipulators']]], + ['picoutcontrol',['PICoutControl',['../namespace_p_i_cout_manipulators.html#a98e765b109cfa5b09ec3b111c449ac87',1,'PICoutManipulators']]], + ['picoutformat',['PICoutFormat',['../namespace_p_i_cout_manipulators.html#a4d8fa322c1a8b3fa285759056aae1b2a',1,'PICoutManipulators']]], + ['picoutspecialchar',['PICoutSpecialChar',['../namespace_p_i_cout_manipulators.html#a66678520ac7701c016e3e90e17a7dfa2',1,'PICoutManipulators']]], + ['priority',['Priority',['../class_p_i_thread.html#a3ddcafb0b09d3ed258a519882986a77b',1,'PIThread']]] +]; diff --git a/pip/doc/html/search/enums_4.html b/pip/doc/html/search/enums_4.html new file mode 100644 index 0000000..d8d5500 --- /dev/null +++ b/pip/doc/html/search/enums_4.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/enums_4.js b/pip/doc/html/search/enums_4.js new file mode 100644 index 0000000..2a8c9a2 --- /dev/null +++ b/pip/doc/html/search/enums_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['quality',['Quality',['../class_p_i_diagnostics.html#aabf8f59b49ab62435e220106f204712f',1,'PIDiagnostics::Quality()'],['../class_p_i_protocol.html#aef1f5fa8173bcc220b07f084155ec868',1,'PIProtocol::Quality()']]] +]; diff --git a/pip/doc/html/search/enums_5.html b/pip/doc/html/search/enums_5.html new file mode 100644 index 0000000..1857be3 --- /dev/null +++ b/pip/doc/html/search/enums_5.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/enums_5.js b/pip/doc/html/search/enums_5.js new file mode 100644 index 0000000..20310fc --- /dev/null +++ b/pip/doc/html/search/enums_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['specialsymbol',['SpecialSymbol',['../class_p_i_kbd_listener.html#a3e1b468bee20e5a4155f7d99d19eb716',1,'PIKbdListener']]], + ['splitmode',['SplitMode',['../class_p_i_packet_extractor.html#aab7f856e1fd64e7bdb2507badae99bb6',1,'PIPacketExtractor']]] +]; diff --git a/pip/doc/html/search/enums_6.html b/pip/doc/html/search/enums_6.html new file mode 100644 index 0000000..e4ef217 --- /dev/null +++ b/pip/doc/html/search/enums_6.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/enums_6.js b/pip/doc/html/search/enums_6.js new file mode 100644 index 0000000..d6ae5bb --- /dev/null +++ b/pip/doc/html/search/enums_6.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['timerimplementation',['TimerImplementation',['../class_p_i_timer.html#a02b36fbf7ae0839eb72c95cde343b719',1,'PITimer']]], + ['type',['Type',['../class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdf',1,'PIVariant::Type()'],['../class_p_i_ethernet.html#a7abf73f51652b00af7a6198be2fa0f5c',1,'PIEthernet::Type()']]] +]; diff --git a/pip/doc/html/search/enumvalues_0.html b/pip/doc/html/search/enumvalues_0.html new file mode 100644 index 0000000..3e216ae --- /dev/null +++ b/pip/doc/html/search/enumvalues_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/enumvalues_0.js b/pip/doc/html/search/enumvalues_0.js new file mode 100644 index 0000000..6a52307 --- /dev/null +++ b/pip/doc/html/search/enumvalues_0.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['addall',['AddAll',['../namespace_p_i_cout_manipulators.html#a98e765b109cfa5b09ec3b111c449ac87a51c3de43daff16e88090f6ccc3eb30b2',1,'PICoutManipulators']]], + ['addnewline',['AddNewLine',['../namespace_p_i_cout_manipulators.html#a98e765b109cfa5b09ec3b111c449ac87a14809fb1b24466983535797f6ed5971c',1,'PICoutManipulators']]], + ['addnone',['AddNone',['../namespace_p_i_cout_manipulators.html#a98e765b109cfa5b09ec3b111c449ac87a9744aa2b16aabc01f70ef53e8a7db7f8',1,'PICoutManipulators']]], + ['addquotes',['AddQuotes',['../namespace_p_i_cout_manipulators.html#a98e765b109cfa5b09ec3b111c449ac87a383bc0cbaca2fb5d5cd98a1e9c3f59ca',1,'PICoutManipulators']]], + ['addspaces',['AddSpaces',['../namespace_p_i_cout_manipulators.html#a98e765b109cfa5b09ec3b111c449ac87ae5fee52fe6ad0dae9a5b953ff3e40152',1,'PICoutManipulators']]], + ['average',['Average',['../class_p_i_diagnostics.html#aabf8f59b49ab62435e220106f204712fa72a5c3ff8a8ae3e43f818db82d730b55',1,'PIDiagnostics::Average()'],['../class_p_i_protocol.html#aef1f5fa8173bcc220b07f084155ec868a0f731aa8807989815ed9936e1bb35147',1,'PIProtocol::Average()']]] +]; diff --git a/pip/doc/html/search/enumvalues_1.html b/pip/doc/html/search/enumvalues_1.html new file mode 100644 index 0000000..c78ae96 --- /dev/null +++ b/pip/doc/html/search/enumvalues_1.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/enumvalues_1.js b/pip/doc/html/search/enumvalues_1.js new file mode 100644 index 0000000..92e207b --- /dev/null +++ b/pip/doc/html/search/enumvalues_1.js @@ -0,0 +1,22 @@ +var searchData= +[ + ['backblack',['BackBlack',['../class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579a92a8473a8b9197c3a1c13900cc9711b2',1,'PIConsole::BackBlack()'],['../namespace_p_i_cout_manipulators.html#a4d8fa322c1a8b3fa285759056aae1b2aa1f0b497e6f2135f149808e108f25b1d4',1,'PICoutManipulators::BackBlack()']]], + ['backblue',['BackBlue',['../class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579a0b579bc45bf31df6bad7baa3b0e1ce75',1,'PIConsole::BackBlue()'],['../namespace_p_i_cout_manipulators.html#a4d8fa322c1a8b3fa285759056aae1b2aaecc0d0c7be125b3368906502c0e0b355',1,'PICoutManipulators::BackBlue()']]], + ['backcyan',['BackCyan',['../class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579ab34059af712560e14f4720fb33b1ef07',1,'PIConsole::BackCyan()'],['../namespace_p_i_cout_manipulators.html#a4d8fa322c1a8b3fa285759056aae1b2aa585ef724bf93605bbaa3a7e582e9669b',1,'PICoutManipulators::BackCyan()']]], + ['backgreen',['BackGreen',['../class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579a2aca7018a5a425d1a51981e6753d2b9c',1,'PIConsole::BackGreen()'],['../namespace_p_i_cout_manipulators.html#a4d8fa322c1a8b3fa285759056aae1b2aa0056f6bdb9e774d1c251baf736545741',1,'PICoutManipulators::BackGreen()']]], + ['backmagenta',['BackMagenta',['../class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579af98223da559470901eee2a9721647846',1,'PIConsole::BackMagenta()'],['../namespace_p_i_cout_manipulators.html#a4d8fa322c1a8b3fa285759056aae1b2aa21b89f914b3f779f5eefe70a99270471',1,'PICoutManipulators::BackMagenta()']]], + ['backred',['BackRed',['../class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579aa2c0f1e23fb2d5e39f38f768a73c8522',1,'PIConsole::BackRed()'],['../namespace_p_i_cout_manipulators.html#a4d8fa322c1a8b3fa285759056aae1b2aa25a764174c876db1fdfa053435624d12',1,'PICoutManipulators::BackRed()']]], + ['backspace',['Backspace',['../namespace_p_i_cout_manipulators.html#a38d041a4e2de4ca6af939837475e9387a0c59680927066a05eddf8e3ee61c802d',1,'PICoutManipulators']]], + ['backwhite',['BackWhite',['../class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579ab70bbc35133c405030513695fda472bb',1,'PIConsole::BackWhite()'],['../namespace_p_i_cout_manipulators.html#a4d8fa322c1a8b3fa285759056aae1b2aa5534e933dca8208950b17034672a1ca7',1,'PICoutManipulators::BackWhite()']]], + ['backyellow',['BackYellow',['../class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579a8bbeb50121d330e27b27f7a94731a3b5',1,'PIConsole::BackYellow()'],['../namespace_p_i_cout_manipulators.html#a4d8fa322c1a8b3fa285759056aae1b2aa0ed38ef4734192d2772e0e07bd389dec',1,'PICoutManipulators::BackYellow()']]], + ['bad',['Bad',['../class_p_i_diagnostics.html#aabf8f59b49ab62435e220106f204712fac8268eaf57232ad3cf9b2a91ead6748b',1,'PIDiagnostics::Bad()'],['../class_p_i_protocol.html#aef1f5fa8173bcc220b07f084155ec868aab6ef6da8e37ad2a78028a631bc1bd26',1,'PIProtocol::Bad()']]], + ['bin',['Bin',['../class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579a35a7fc42f3436533338bd2bfa096afdb',1,'PIConsole::Bin()'],['../namespace_p_i_cout_manipulators.html#a4d8fa322c1a8b3fa285759056aae1b2aa29a58835892a21d07f3b0dc97ef4f44e',1,'PICoutManipulators::Bin()']]], + ['bitarray',['BitArray',['../class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfa150c2f8336b8aa55ba766aeae271a9ef',1,'PIVariant']]], + ['black',['Black',['../class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579a3328cd4af8268e8b4ebf26ce8c230862',1,'PIConsole::Black()'],['../namespace_p_i_cout_manipulators.html#a4d8fa322c1a8b3fa285759056aae1b2aa405fba724b4f9bb57486ef4a328c23ec',1,'PICoutManipulators::Black()']]], + ['blink',['Blink',['../class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579a91eace12e9f59cb0ad6a6b90adb0aac6',1,'PIConsole::Blink()'],['../namespace_p_i_cout_manipulators.html#a4d8fa322c1a8b3fa285759056aae1b2aa8b0945213fe7cca2148bd54938fa16c3',1,'PICoutManipulators::Blink()']]], + ['blue',['Blue',['../class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579a4bba54e63c8d31705a555f43c931bb98',1,'PIConsole::Blue()'],['../namespace_p_i_cout_manipulators.html#a4d8fa322c1a8b3fa285759056aae1b2aa26854a71d7f1dd9439e0114d3961c1e4',1,'PICoutManipulators::Blue()']]], + ['bold',['Bold',['../class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579a78328fa8e10b199523d20b782d6fbc5b',1,'PIConsole::Bold()'],['../namespace_p_i_cout_manipulators.html#a4d8fa322c1a8b3fa285759056aae1b2aa527c1b697df8b9dd74ba337663375149',1,'PICoutManipulators::Bold()']]], + ['bool',['Bool',['../class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfaa3e49597dd8751e48ca20b830d7408bb',1,'PIVariant']]], + ['broadcast',['Broadcast',['../class_p_i_ethernet.html#ae03a64ce3d7d8a1e95b2212ab2497f55af792cda5436050309ee9368d6ac5e6f7',1,'PIEthernet']]], + ['bytearray',['ByteArray',['../class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfaaf9c597dd4d7b17fe96746c96252a16f',1,'PIVariant']]] +]; diff --git a/pip/doc/html/search/enumvalues_10.html b/pip/doc/html/search/enumvalues_10.html new file mode 100644 index 0000000..63bd5f0 --- /dev/null +++ b/pip/doc/html/search/enumvalues_10.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/enumvalues_10.js b/pip/doc/html/search/enumvalues_10.js new file mode 100644 index 0000000..25e03b3 --- /dev/null +++ b/pip/doc/html/search/enumvalues_10.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['savecontol',['SaveContol',['../namespace_p_i_cout_manipulators.html#a38d041a4e2de4ca6af939837475e9387ab016f563340e366b6685045e028f2b0f',1,'PICoutManipulators']]], + ['scientific',['Scientific',['../class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579a138319e4d812b10ef0e49f4c1464dde4',1,'PIConsole']]], + ['short',['Short',['../class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfa49c4522357ebcea946d477fd78eccd1c',1,'PIVariant']]], + ['showcursor',['ShowCursor',['../namespace_p_i_cout_manipulators.html#a38d041a4e2de4ca6af939837475e9387a03c25915c04fbc819d7267022e49844a',1,'PICoutManipulators']]], + ['size',['Size',['../class_p_i_packet_extractor.html#aab7f856e1fd64e7bdb2507badae99bb6a169d7eb9668b7d6077f6c00c558b12eb',1,'PIPacketExtractor']]], + ['string',['String',['../class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfa96a611933bbf5065a29e72e06196f547',1,'PIVariant']]], + ['stringlist',['StringList',['../class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfae25be87d1c676373a0356aeedf0e6914',1,'PIVariant']]], + ['systemtime',['SystemTime',['../class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfa4fc51ffc735800b30adbc4176e3f29e4',1,'PIVariant']]], + ['systemtimeseconds',['SystemTimeSeconds',['../class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579a412b529aeecff9f150ee7d42c32006f2',1,'PIConsole']]], + ['systemtimesplit',['SystemTimeSplit',['../class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579a4d54e68db54f775ca7e17b307c4f7787',1,'PIConsole']]] +]; diff --git a/pip/doc/html/search/enumvalues_11.html b/pip/doc/html/search/enumvalues_11.html new file mode 100644 index 0000000..f8059ce --- /dev/null +++ b/pip/doc/html/search/enumvalues_11.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/enumvalues_11.js b/pip/doc/html/search/enumvalues_11.js new file mode 100644 index 0000000..61130f0 --- /dev/null +++ b/pip/doc/html/search/enumvalues_11.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['tab',['Tab',['../namespace_p_i_cout_manipulators.html#a66678520ac7701c016e3e90e17a7dfa2a9d183ab2eef93987077269cad1047bcb',1,'PICoutManipulators']]], + ['tcp_5fclient',['TCP_Client',['../class_p_i_ethernet.html#a7abf73f51652b00af7a6198be2fa0f5ca468f2c843283f472aa48487bebc38416',1,'PIEthernet']]], + ['tcp_5fserver',['TCP_Server',['../class_p_i_ethernet.html#a7abf73f51652b00af7a6198be2fa0f5caf2c9526cd4b694f14a0d8a4693a5b76c',1,'PIEthernet']]], + ['thread',['Thread',['../class_p_i_timer.html#a02b36fbf7ae0839eb72c95cde343b719aee4dbda7d96c1ec6bc4a88310e7d4e51',1,'PITimer']]], + ['threadrt',['ThreadRT',['../class_p_i_timer.html#a02b36fbf7ae0839eb72c95cde343b719a80970cf7914f7a34ad94fa6620b1f66b',1,'PITimer']]], + ['time',['Time',['../class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfa0114b5413f8a42bb71769a22e306e4a1',1,'PIVariant']]], + ['timeout',['Timeout',['../class_p_i_packet_extractor.html#aab7f856e1fd64e7bdb2507badae99bb6a4ea0db7f406eaa97adbacd580b919903',1,'PIPacketExtractor']]] +]; diff --git a/pip/doc/html/search/enumvalues_12.html b/pip/doc/html/search/enumvalues_12.html new file mode 100644 index 0000000..85730af --- /dev/null +++ b/pip/doc/html/search/enumvalues_12.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/enumvalues_12.js b/pip/doc/html/search/enumvalues_12.js new file mode 100644 index 0000000..964f2e2 --- /dev/null +++ b/pip/doc/html/search/enumvalues_12.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['uchar',['UChar',['../class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfa513ed493f1e7b30342987c3516f81730',1,'PIVariant']]], + ['udp',['UDP',['../class_p_i_ethernet.html#a7abf73f51652b00af7a6198be2fa0f5ca17c6e599807b02ebaf8ab6decbd17c7b',1,'PIEthernet']]], + ['uint',['UInt',['../class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfa75efd8b4f684b3e23fdca5a3c9ce7616',1,'PIVariant']]], + ['ullong',['ULLong',['../class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfae5edbc0259b17315545edd0949e8a2a8',1,'PIVariant']]], + ['ulong',['ULong',['../class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfaff5169e651a3109ba5ac4de618343fe5',1,'PIVariant']]], + ['underline',['Underline',['../class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579a46936e800bd76246b08d3093cd7b31c9',1,'PIConsole::Underline()'],['../namespace_p_i_cout_manipulators.html#a4d8fa322c1a8b3fa285759056aae1b2aa221437253ff3dc9de5d3762117f5c329',1,'PICoutManipulators::Underline()']]], + ['unknown',['Unknown',['../class_p_i_diagnostics.html#aabf8f59b49ab62435e220106f204712fab50c35309ba981ccc60aa55f4b391976',1,'PIDiagnostics::Unknown()'],['../class_p_i_protocol.html#aef1f5fa8173bcc220b07f084155ec868a53df11ad71f5084b02a504df41fd977a',1,'PIProtocol::Unknown()']]], + ['uparrow',['UpArrow',['../class_p_i_kbd_listener.html#a3e1b468bee20e5a4155f7d99d19eb716ae4af7e9101a6ebcca1a0b94f5d389297',1,'PIKbdListener']]], + ['ushort',['UShort',['../class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfa5d69d3e100a348885d1e8c2e70617b79',1,'PIVariant']]] +]; diff --git a/pip/doc/html/search/enumvalues_13.html b/pip/doc/html/search/enumvalues_13.html new file mode 100644 index 0000000..59862b2 --- /dev/null +++ b/pip/doc/html/search/enumvalues_13.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/enumvalues_13.js b/pip/doc/html/search/enumvalues_13.js new file mode 100644 index 0000000..2f60d6a --- /dev/null +++ b/pip/doc/html/search/enumvalues_13.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['white',['White',['../class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579a754394a1f1591ca656e42292e2e6ccc9',1,'PIConsole::White()'],['../namespace_p_i_cout_manipulators.html#a4d8fa322c1a8b3fa285759056aae1b2aaec78b8c3f9b9c708d6c5a60021c0df51',1,'PICoutManipulators::White()']]] +]; diff --git a/pip/doc/html/search/enumvalues_14.html b/pip/doc/html/search/enumvalues_14.html new file mode 100644 index 0000000..d1defa2 --- /dev/null +++ b/pip/doc/html/search/enumvalues_14.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/enumvalues_14.js b/pip/doc/html/search/enumvalues_14.js new file mode 100644 index 0000000..088b3c8 --- /dev/null +++ b/pip/doc/html/search/enumvalues_14.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['yellow',['Yellow',['../class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579a8fcb095f1009154392e0f0c966d838f6',1,'PIConsole::Yellow()'],['../namespace_p_i_cout_manipulators.html#a4d8fa322c1a8b3fa285759056aae1b2aac9ad26d78d153d33986dd243d79e6704',1,'PICoutManipulators::Yellow()']]] +]; diff --git a/pip/doc/html/search/enumvalues_2.html b/pip/doc/html/search/enumvalues_2.html new file mode 100644 index 0000000..3f39b16 --- /dev/null +++ b/pip/doc/html/search/enumvalues_2.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/enumvalues_2.js b/pip/doc/html/search/enumvalues_2.js new file mode 100644 index 0000000..7bbfa99 --- /dev/null +++ b/pip/doc/html/search/enumvalues_2.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['char',['Char',['../class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfa45c5f8b793d601954d4a9489370abe64',1,'PIVariant']]], + ['clearscreen',['ClearScreen',['../namespace_p_i_cout_manipulators.html#a38d041a4e2de4ca6af939837475e9387a811e1fa9e5deb33af8bcef5186b482bb',1,'PICoutManipulators']]], + ['complexd',['Complexd',['../class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfaf163970dcba9d2f587327e38e5e38098',1,'PIVariant']]], + ['complexld',['Complexld',['../class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfad1548d6221af498427f428a93d0af57f',1,'PIVariant']]], + ['ctrldownarrow',['CtrlDownArrow',['../class_p_i_kbd_listener.html#a3e1b468bee20e5a4155f7d99d19eb716a06471072c3855f97036cfaceec75ecd7',1,'PIKbdListener']]], + ['ctrlleftarrow',['CtrlLeftArrow',['../class_p_i_kbd_listener.html#a3e1b468bee20e5a4155f7d99d19eb716a9d6d02f0615594d1fbceadb7d68ebc83',1,'PIKbdListener']]], + ['ctrlrightarrow',['CtrlRightArrow',['../class_p_i_kbd_listener.html#a3e1b468bee20e5a4155f7d99d19eb716af997647f0bac2cfe113f58458a71c7ce',1,'PIKbdListener']]], + ['ctrluparrow',['CtrlUpArrow',['../class_p_i_kbd_listener.html#a3e1b468bee20e5a4155f7d99d19eb716a27096906a3e1a35ff46cbeae0412ed8a',1,'PIKbdListener']]], + ['custom',['Custom',['../class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfad85616b3a0febed1905a631cfbc9782e',1,'PIVariant']]], + ['cyan',['Cyan',['../class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579afad1b218983aa1f775655a30175333af',1,'PIConsole::Cyan()'],['../namespace_p_i_cout_manipulators.html#a4d8fa322c1a8b3fa285759056aae1b2aac1ccdb56cc6bfa3cbe21d9edce17bed4',1,'PICoutManipulators::Cyan()']]] +]; diff --git a/pip/doc/html/search/enumvalues_3.html b/pip/doc/html/search/enumvalues_3.html new file mode 100644 index 0000000..0c76247 --- /dev/null +++ b/pip/doc/html/search/enumvalues_3.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/enumvalues_3.js b/pip/doc/html/search/enumvalues_3.js new file mode 100644 index 0000000..a67153f --- /dev/null +++ b/pip/doc/html/search/enumvalues_3.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['date',['Date',['../class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfaf14a1f410b3c192878fc246b45f45124',1,'PIVariant']]], + ['datetime',['DateTime',['../class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfa265d67fff2b590fb6765b3838a011c34',1,'PIVariant']]], + ['dec',['Dec',['../class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579a1a14373d10e03ed37c42f17558d6e412',1,'PIConsole::Dec()'],['../namespace_p_i_cout_manipulators.html#a4d8fa322c1a8b3fa285759056aae1b2aa2169666f4b740a04e641ab8c6ca438f0',1,'PICoutManipulators::Dec()']]], + ['default',['Default',['../namespace_p_i_cout_manipulators.html#a4d8fa322c1a8b3fa285759056aae1b2aa651156cbea6768802eb95176611da012',1,'PICoutManipulators']]], + ['double',['Double',['../class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfafee752a615286794d4468c72e886ab38',1,'PIVariant']]], + ['downarrow',['DownArrow',['../class_p_i_kbd_listener.html#a3e1b468bee20e5a4155f7d99d19eb716a2cc10cee6bd5ded7573f4ba9730cde6d',1,'PIKbdListener']]] +]; diff --git a/pip/doc/html/search/enumvalues_4.html b/pip/doc/html/search/enumvalues_4.html new file mode 100644 index 0000000..aa72ed1 --- /dev/null +++ b/pip/doc/html/search/enumvalues_4.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/enumvalues_4.js b/pip/doc/html/search/enumvalues_4.js new file mode 100644 index 0000000..869665b --- /dev/null +++ b/pip/doc/html/search/enumvalues_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['esc',['Esc',['../namespace_p_i_cout_manipulators.html#a66678520ac7701c016e3e90e17a7dfa2ac32518c74b162effc95d1afff37b4a81',1,'PICoutManipulators']]] +]; diff --git a/pip/doc/html/search/enumvalues_5.html b/pip/doc/html/search/enumvalues_5.html new file mode 100644 index 0000000..4f56e84 --- /dev/null +++ b/pip/doc/html/search/enumvalues_5.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/enumvalues_5.js b/pip/doc/html/search/enumvalues_5.js new file mode 100644 index 0000000..f631305 --- /dev/null +++ b/pip/doc/html/search/enumvalues_5.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['failure',['Failure',['../class_p_i_diagnostics.html#aabf8f59b49ab62435e220106f204712fa7851c3092d436b72bc66b752f73b1d80',1,'PIDiagnostics::Failure()'],['../class_p_i_protocol.html#aef1f5fa8173bcc220b07f084155ec868aedb67e105ac421f87d7c086213041812',1,'PIProtocol::Failure()']]], + ['float',['Float',['../class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfa802d8727c57bf77c21aaefb910cddf50',1,'PIVariant']]], + ['flush',['Flush',['../namespace_p_i_cout_manipulators.html#a38d041a4e2de4ca6af939837475e9387ab830c1a561e2cabe9e7b937a05d04c9f',1,'PICoutManipulators']]], + ['footer',['Footer',['../class_p_i_packet_extractor.html#aab7f856e1fd64e7bdb2507badae99bb6a48ccac0df6bcb7bccaa01eb3df28f096',1,'PIPacketExtractor']]] +]; diff --git a/pip/doc/html/search/enumvalues_6.html b/pip/doc/html/search/enumvalues_6.html new file mode 100644 index 0000000..6b5912a --- /dev/null +++ b/pip/doc/html/search/enumvalues_6.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/enumvalues_6.js b/pip/doc/html/search/enumvalues_6.js new file mode 100644 index 0000000..aea377f --- /dev/null +++ b/pip/doc/html/search/enumvalues_6.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['good',['Good',['../class_p_i_diagnostics.html#aabf8f59b49ab62435e220106f204712fa65f12843d70ab8f9bc9f711e2776c169',1,'PIDiagnostics::Good()'],['../class_p_i_protocol.html#aef1f5fa8173bcc220b07f084155ec868a79077b969773754677c555ec35c32d9b',1,'PIProtocol::Good()']]], + ['green',['Green',['../class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579ae959969cfc547e2f48dbe3b51056d931',1,'PIConsole::Green()'],['../namespace_p_i_cout_manipulators.html#a4d8fa322c1a8b3fa285759056aae1b2aaf1abd54dd4e1ce4d273e72bf705b276f',1,'PICoutManipulators::Green()']]] +]; diff --git a/pip/doc/html/search/enumvalues_7.html b/pip/doc/html/search/enumvalues_7.html new file mode 100644 index 0000000..53211d5 --- /dev/null +++ b/pip/doc/html/search/enumvalues_7.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/enumvalues_7.js b/pip/doc/html/search/enumvalues_7.js new file mode 100644 index 0000000..72419d9 --- /dev/null +++ b/pip/doc/html/search/enumvalues_7.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['header',['Header',['../class_p_i_packet_extractor.html#aab7f856e1fd64e7bdb2507badae99bb6a29b623cae95dfd777979c401d881c57f',1,'PIPacketExtractor']]], + ['headerandfooter',['HeaderAndFooter',['../class_p_i_packet_extractor.html#aab7f856e1fd64e7bdb2507badae99bb6aa588a5c0306511f74b66e60a24373f01',1,'PIPacketExtractor']]], + ['hex',['Hex',['../class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579aec17c3cf86a35f0a78c1add7ddd4ce3c',1,'PIConsole::Hex()'],['../namespace_p_i_cout_manipulators.html#a4d8fa322c1a8b3fa285759056aae1b2aadc3f097ce8d6fafc80018c2df3afe2b5',1,'PICoutManipulators::Hex()']]], + ['hidecursor',['HideCursor',['../namespace_p_i_cout_manipulators.html#a38d041a4e2de4ca6af939837475e9387add30539d8cc3ea1f1dcc49a0d864f877',1,'PICoutManipulators']]] +]; diff --git a/pip/doc/html/search/enumvalues_8.html b/pip/doc/html/search/enumvalues_8.html new file mode 100644 index 0000000..ad12429 --- /dev/null +++ b/pip/doc/html/search/enumvalues_8.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/enumvalues_8.js b/pip/doc/html/search/enumvalues_8.js new file mode 100644 index 0000000..a8df597 --- /dev/null +++ b/pip/doc/html/search/enumvalues_8.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['ifactive',['ifActive',['../class_p_i_ethernet.html#a2e219801b3a6c451c4aca63ad99b6374af0267ac1003b142861da4f3b13cd8eec',1,'PIEthernet']]], + ['ifbroadcast',['ifBroadcast',['../class_p_i_ethernet.html#a2e219801b3a6c451c4aca63ad99b6374a968abc4436cda4f3a7d6f9d5b73a5161',1,'PIEthernet']]], + ['ifloopback',['ifLoopback',['../class_p_i_ethernet.html#a2e219801b3a6c451c4aca63ad99b6374ae5762f8e14d0d44e59d98d40a5e61d47',1,'PIEthernet']]], + ['ifmulticast',['ifMulticast',['../class_p_i_ethernet.html#a2e219801b3a6c451c4aca63ad99b6374a221bac530c63ca6256286ae46d4cf2da',1,'PIEthernet']]], + ['ifptp',['ifPTP',['../class_p_i_ethernet.html#a2e219801b3a6c451c4aca63ad99b6374a57217604fea835e4aaec5ad6f16101a5',1,'PIEthernet']]], + ['ifrunning',['ifRunning',['../class_p_i_ethernet.html#a2e219801b3a6c451c4aca63ad99b6374a1ee5d68a37246b49b542d4e7a35129a5',1,'PIEthernet']]], + ['int',['Int',['../class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfa2eb3acbd36c03ef70cb7d1faa797e50f',1,'PIVariant']]], + ['invalid',['Invalid',['../class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfa45bf798ad32851c9044a3a5755856c5a',1,'PIVariant']]], + ['inverse',['Inverse',['../class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579a0f6700676e0545499b1c669052c07031',1,'PIConsole']]] +]; diff --git a/pip/doc/html/search/enumvalues_9.html b/pip/doc/html/search/enumvalues_9.html new file mode 100644 index 0000000..cc7dda5 --- /dev/null +++ b/pip/doc/html/search/enumvalues_9.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/enumvalues_9.js b/pip/doc/html/search/enumvalues_9.js new file mode 100644 index 0000000..5839553 --- /dev/null +++ b/pip/doc/html/search/enumvalues_9.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['ldouble',['LDouble',['../class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfa7f382b7fd8d07426b696d69ee7247876',1,'PIVariant']]], + ['left',['Left',['../class_p_i_console.html#a9185c02e667ead89d506730e6fdc1f5da8f1af835c1d302642a0f5d288e7ce6a2',1,'PIConsole']]], + ['leftarrow',['LeftArrow',['../class_p_i_kbd_listener.html#a3e1b468bee20e5a4155f7d99d19eb716a4e2a34c99dbe919ec3405fc629ac228b',1,'PIKbdListener']]], + ['llong',['LLong',['../class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfa493d57852c824d39bdcaee57c9bfff92',1,'PIVariant']]], + ['long',['Long',['../class_p_i_variant.html#acc48ff0479fba2c5be5f491e24f40cdfada92306e4b6207dd807fea3db9569756',1,'PIVariant']]] +]; diff --git a/pip/doc/html/search/enumvalues_a.html b/pip/doc/html/search/enumvalues_a.html new file mode 100644 index 0000000..4ed461b --- /dev/null +++ b/pip/doc/html/search/enumvalues_a.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/enumvalues_a.js b/pip/doc/html/search/enumvalues_a.js new file mode 100644 index 0000000..f9d9f07 --- /dev/null +++ b/pip/doc/html/search/enumvalues_a.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['magenta',['Magenta',['../class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579a839902f788d727e5bfbd56c961cb7504',1,'PIConsole::Magenta()'],['../namespace_p_i_cout_manipulators.html#a4d8fa322c1a8b3fa285759056aae1b2aa7b9abda5e906d86c86d0e48c68608f4f',1,'PICoutManipulators::Magenta()']]] +]; diff --git a/pip/doc/html/search/enumvalues_b.html b/pip/doc/html/search/enumvalues_b.html new file mode 100644 index 0000000..da0192d --- /dev/null +++ b/pip/doc/html/search/enumvalues_b.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/enumvalues_b.js b/pip/doc/html/search/enumvalues_b.js new file mode 100644 index 0000000..704c8dd --- /dev/null +++ b/pip/doc/html/search/enumvalues_b.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['newline',['NewLine',['../namespace_p_i_cout_manipulators.html#a66678520ac7701c016e3e90e17a7dfa2a85451af3cb792587c99d576ae3807a67',1,'PICoutManipulators']]], + ['none',['None',['../class_p_i_packet_extractor.html#aab7f856e1fd64e7bdb2507badae99bb6aab134660d4356d548ad2c7e9bb3ecae0',1,'PIPacketExtractor']]], + ['normal',['Normal',['../class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579a045a7b958509dd5c127a6f8abbbe9128',1,'PIConsole']]], + ['nothing',['Nothing',['../class_p_i_console.html#a9185c02e667ead89d506730e6fdc1f5da83cb297e42b088515171ecb83f904bb5',1,'PIConsole']]], + ['null',['Null',['../namespace_p_i_cout_manipulators.html#a66678520ac7701c016e3e90e17a7dfa2a29235e52395eb8951ae13b4136252432',1,'PICoutManipulators']]] +]; diff --git a/pip/doc/html/search/enumvalues_c.html b/pip/doc/html/search/enumvalues_c.html new file mode 100644 index 0000000..39537ef --- /dev/null +++ b/pip/doc/html/search/enumvalues_c.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/enumvalues_c.js b/pip/doc/html/search/enumvalues_c.js new file mode 100644 index 0000000..19538dc --- /dev/null +++ b/pip/doc/html/search/enumvalues_c.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['oct',['Oct',['../class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579a6c18590e7ad6b405aee530a187231c77',1,'PIConsole::Oct()'],['../namespace_p_i_cout_manipulators.html#a4d8fa322c1a8b3fa285759056aae1b2aaad2a72f3b7eada2a8360bdcf11cbfb80',1,'PICoutManipulators::Oct()']]] +]; diff --git a/pip/doc/html/search/enumvalues_d.html b/pip/doc/html/search/enumvalues_d.html new file mode 100644 index 0000000..cbe8c39 --- /dev/null +++ b/pip/doc/html/search/enumvalues_d.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/enumvalues_d.js b/pip/doc/html/search/enumvalues_d.js new file mode 100644 index 0000000..4bba1f7 --- /dev/null +++ b/pip/doc/html/search/enumvalues_d.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['pihigh',['piHigh',['../class_p_i_thread.html#a3ddcafb0b09d3ed258a519882986a77ba0e6861fee3e57cf6ba026a7553e69576',1,'PIThread']]], + ['pihighest',['piHighest',['../class_p_i_thread.html#a3ddcafb0b09d3ed258a519882986a77ba18babfebe41163fbb810eb41357a6347',1,'PIThread']]], + ['pilow',['piLow',['../class_p_i_thread.html#a3ddcafb0b09d3ed258a519882986a77ba46703d0258b11d41c52a266b2b10b6d9',1,'PIThread']]], + ['pilowerst',['piLowerst',['../class_p_i_thread.html#a3ddcafb0b09d3ed258a519882986a77ba4dbd54fc5158a029c682b718f48312d4',1,'PIThread']]], + ['pinormal',['piNormal',['../class_p_i_thread.html#a3ddcafb0b09d3ed258a519882986a77babd362bfacabbd61d69793cceb449425c',1,'PIThread']]], + ['pool',['Pool',['../class_p_i_timer.html#a02b36fbf7ae0839eb72c95cde343b719afc1ce0b87bd597621116ec5de765b6db',1,'PITimer']]] +]; diff --git a/pip/doc/html/search/enumvalues_e.html b/pip/doc/html/search/enumvalues_e.html new file mode 100644 index 0000000..d076b28 --- /dev/null +++ b/pip/doc/html/search/enumvalues_e.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/enumvalues_e.js b/pip/doc/html/search/enumvalues_e.js new file mode 100644 index 0000000..107558a --- /dev/null +++ b/pip/doc/html/search/enumvalues_e.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['quote',['Quote',['../namespace_p_i_cout_manipulators.html#a66678520ac7701c016e3e90e17a7dfa2adb05a3816f5bd55128af99263b94e15e',1,'PICoutManipulators']]] +]; diff --git a/pip/doc/html/search/enumvalues_f.html b/pip/doc/html/search/enumvalues_f.html new file mode 100644 index 0000000..cf3c3d1 --- /dev/null +++ b/pip/doc/html/search/enumvalues_f.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/enumvalues_f.js b/pip/doc/html/search/enumvalues_f.js new file mode 100644 index 0000000..08c4f60 --- /dev/null +++ b/pip/doc/html/search/enumvalues_f.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['red',['Red',['../class_p_i_console.html#ad19497b9c33393ffe08856c622e3a579aa9e6d56193eac85df4a54bf3ef53b7b7',1,'PIConsole::Red()'],['../namespace_p_i_cout_manipulators.html#a4d8fa322c1a8b3fa285759056aae1b2aa26422e0754e279717e30f36fc9355d39',1,'PICoutManipulators::Red()']]], + ['restorecontrol',['RestoreControl',['../namespace_p_i_cout_manipulators.html#a38d041a4e2de4ca6af939837475e9387a79f6f33c2e149fb3903625c855292600',1,'PICoutManipulators']]], + ['reuseaddress',['ReuseAddress',['../class_p_i_ethernet.html#ae03a64ce3d7d8a1e95b2212ab2497f55a880142bb3993c7839af6d847beee1b34',1,'PIEthernet']]], + ['right',['Right',['../class_p_i_console.html#a9185c02e667ead89d506730e6fdc1f5da5ba51ab04a9644828f79a9e95dfe4382',1,'PIConsole']]], + ['rightarrow',['RightArrow',['../class_p_i_kbd_listener.html#a3e1b468bee20e5a4155f7d99d19eb716a8931e408583ed3ce190e26e4adf523eb',1,'PIKbdListener']]] +]; diff --git a/pip/doc/html/search/files_0.html b/pip/doc/html/search/files_0.html new file mode 100644 index 0000000..73e9ff2 --- /dev/null +++ b/pip/doc/html/search/files_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/files_0.js b/pip/doc/html/search/files_0.js new file mode 100644 index 0000000..46cd2e1 --- /dev/null +++ b/pip/doc/html/search/files_0.js @@ -0,0 +1,44 @@ +var searchData= +[ + ['pibinarylog_2eh',['pibinarylog.h',['../pibinarylog_8h.html',1,'']]], + ['pibytearray_2eh',['pibytearray.h',['../pibytearray_8h.html',1,'']]], + ['pichar_2eh',['pichar.h',['../pichar_8h.html',1,'']]], + ['picli_2eh',['picli.h',['../picli_8h.html',1,'']]], + ['picodeinfo_2eh',['picodeinfo.h',['../picodeinfo_8h.html',1,'']]], + ['picodeparser_2eh',['picodeparser.h',['../picodeparser_8h.html',1,'']]], + ['picollection_2eh',['picollection.h',['../picollection_8h.html',1,'']]], + ['piconfig_2eh',['piconfig.h',['../piconfig_8h.html',1,'']]], + ['piconnection_2eh',['piconnection.h',['../piconnection_8h.html',1,'']]], + ['piconsole_2eh',['piconsole.h',['../piconsole_8h.html',1,'']]], + ['picontainers_2eh',['picontainers.h',['../picontainers_8h.html',1,'']]], + ['picrc_2eh',['picrc.h',['../picrc_8h.html',1,'']]], + ['pideque_2eh',['pideque.h',['../pideque_8h.html',1,'']]], + ['pidiagnostics_2eh',['pidiagnostics.h',['../pidiagnostics_8h.html',1,'']]], + ['piethernet_2eh',['piethernet.h',['../piethernet_8h.html',1,'']]], + ['pievaluator_2eh',['pievaluator.h',['../pievaluator_8h.html',1,'']]], + ['pifile_2eh',['pifile.h',['../pifile_8h.html',1,'']]], + ['piincludes_2eh',['piincludes.h',['../piincludes_8h.html',1,'']]], + ['piinit_2eh',['piinit.h',['../piinit_8h.html',1,'']]], + ['piiodevice_2eh',['piiodevice.h',['../piiodevice_8h.html',1,'']]], + ['pikbdlistener_2eh',['pikbdlistener.h',['../pikbdlistener_8h.html',1,'']]], + ['pimap_2eh',['pimap.h',['../pimap_8h.html',1,'']]], + ['pimath_2eh',['pimath.h',['../pimath_8h.html',1,'']]], + ['pimutex_2eh',['pimutex.h',['../pimutex_8h.html',1,'']]], + ['piobject_2eh',['piobject.h',['../piobject_8h.html',1,'']]], + ['pipacketextractor_2eh',['pipacketextractor.h',['../pipacketextractor_8h.html',1,'']]], + ['pipeer_2eh',['pipeer.h',['../pipeer_8h.html',1,'']]], + ['piprocess_2eh',['piprocess.h',['../piprocess_8h.html',1,'']]], + ['piprotocol_2eh',['piprotocol.h',['../piprotocol_8h.html',1,'']]], + ['piserial_2eh',['piserial.h',['../piserial_8h.html',1,'']]], + ['piset_2eh',['piset.h',['../piset_8h.html',1,'']]], + ['pisignals_2eh',['pisignals.h',['../pisignals_8h.html',1,'']]], + ['pistack_2eh',['pistack.h',['../pistack_8h.html',1,'']]], + ['pistatemachine_2eh',['pistatemachine.h',['../pistatemachine_8h.html',1,'']]], + ['pistring_2eh',['pistring.h',['../pistring_8h.html',1,'']]], + ['pithread_2eh',['pithread.h',['../pithread_8h.html',1,'']]], + ['pitime_2eh',['pitime.h',['../pitime_8h.html',1,'']]], + ['pitimer_2eh',['pitimer.h',['../pitimer_8h.html',1,'']]], + ['piusb_2eh',['piusb.h',['../piusb_8h.html',1,'']]], + ['pivariant_2eh',['pivariant.h',['../pivariant_8h.html',1,'']]], + ['pivector_2eh',['pivector.h',['../pivector_8h.html',1,'']]] +]; diff --git a/pip/doc/html/search/functions_0.html b/pip/doc/html/search/functions_0.html new file mode 100644 index 0000000..36aa6a6 --- /dev/null +++ b/pip/doc/html/search/functions_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/functions_0.js b/pip/doc/html/search/functions_0.js new file mode 100644 index 0000000..f2ebdba --- /dev/null +++ b/pip/doc/html/search/functions_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['_5f_5fpicontainers_5fsimple_5ftype_5f_5f',['__PICONTAINERS_SIMPLE_TYPE__',['../pichar_8h.html#a98c24b190dd598cdebc2e1c884631b13',1,'pichar.h']]] +]; diff --git a/pip/doc/html/search/functions_1.html b/pip/doc/html/search/functions_1.html new file mode 100644 index 0000000..4985f9b --- /dev/null +++ b/pip/doc/html/search/functions_1.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/functions_1.js b/pip/doc/html/search/functions_1.js new file mode 100644 index 0000000..d1ae057 --- /dev/null +++ b/pip/doc/html/search/functions_1.js @@ -0,0 +1,29 @@ +var searchData= +[ + ['abs',['abs',['../class_p_i_system_time.html#a6408d67d0ebe7fc41d8d91f8b886eef6',1,'PISystemTime']]], + ['addargument',['addArgument',['../class_p_i_c_l_i.html#a6091825b4eb1e3e8e336ae9524fa8331',1,'PICLI::addArgument(const PIString &name, bool value=false)'],['../class_p_i_c_l_i.html#ab378101cdb1517da4c430d3b58a3ed79',1,'PICLI::addArgument(const PIString &name, const PIChar &shortKey, bool value=false)'],['../class_p_i_c_l_i.html#a787fd46efaa3f64d57398782e7deb612',1,'PICLI::addArgument(const PIString &name, const char *shortKey, bool value=false)'],['../class_p_i_c_l_i.html#a1335cd90d383e1cdeeb6e6b729d18244',1,'PICLI::addArgument(const PIString &name, const PIChar &shortKey, const PIString &fullKey, bool value=false)'],['../class_p_i_c_l_i.html#a9a69f3dd05852ebdbddb0543ca912faa',1,'PICLI::addArgument(const PIString &name, const char *shortKey, const PIString &fullKey, bool value=false)']]], + ['addbitvariable',['addBitVariable',['../class_p_i_console.html#afafc641d9512134155c491145e8db6dd',1,'PIConsole']]], + ['addchannel',['addChannel',['../class_p_i_connection.html#ac633cbd86559b6c5f39c2de7d02d3c6f',1,'PIConnection::addChannel(const PIString &name_from, const PIString &name_to)'],['../class_p_i_connection.html#a0345dc20954d0cde05504e23b5db9e94',1,'PIConnection::addChannel(const PIString &name_from, const PIIODevice *dev_to)'],['../class_p_i_connection.html#aeee8312bb71cd0417e7079f67f2849e8',1,'PIConnection::addChannel(const PIIODevice *dev_from, const PIString &name_to)'],['../class_p_i_connection.html#a72e9bed935739be4aff88c08df5af73e',1,'PIConnection::addChannel(const PIIODevice *dev_from, const PIIODevice *dev_to)']]], + ['addcondition',['addCondition',['../struct_p_i_state_machine_1_1_rule.html#abfb64b05b1288d48756a6913f7518650',1,'PIStateMachine::Rule']]], + ['addcustomstatus',['addCustomStatus',['../class_p_i_console.html#adec15a8f25d9236622f8868980cd0772',1,'PIConsole']]], + ['adddelimiter',['addDelimiter',['../class_p_i_timer.html#ace072dbf3b4ddbd609b6acf4e058d291',1,'PITimer']]], + ['adddevice',['addDevice',['../class_p_i_connection.html#abef3fbce379e0f8cf01b3c12c1e6b297',1,'PIConnection']]], + ['addemptyline',['addEmptyLine',['../class_p_i_console.html#affc3de9ad31867e4e8002e77c96e8553',1,'PIConsole']]], + ['addfilter',['addFilter',['../class_p_i_connection.html#a1105a544b2018fbee5ccf8bf026991c1',1,'PIConnection::addFilter(const PIString &name, const PIString &full_path_name, PIPacketExtractor::SplitMode mode=PIPacketExtractor::None)'],['../class_p_i_connection.html#aee76c16fda7f9e6f09748caa1e512487',1,'PIConnection::addFilter(const PIString &name, const PIIODevice *dev, PIPacketExtractor::SplitMode mode=PIPacketExtractor::None)']]], + ['addmicroseconds',['addMicroseconds',['../class_p_i_system_time.html#ab7241ee8399e898db3912b6525128ff9',1,'PISystemTime']]], + ['addmilliseconds',['addMilliseconds',['../class_p_i_system_time.html#acd6dbda302fd70a2d27e2bd3af7ae29c',1,'PISystemTime']]], + ['addnanoseconds',['addNanoseconds',['../class_p_i_system_time.html#a8b53a1bf0e40a595b26115369bfb374d',1,'PISystemTime']]], + ['addrule',['addRule',['../class_p_i_state_machine.html#aee180e7f75ece9aef1c3d8a94095ed21',1,'PIStateMachine::addRule(Type from, Type to, const PIString &condition, Handler handler=0, bool autoTransition=false, bool resetAllConditions=false)'],['../class_p_i_state_machine.html#a52703fc2cac4578a7a70b57aeb8742fc',1,'PIStateMachine::addRule(Type from, Type to, Handler handler, bool autoTransition=false, bool resetAllConditions=false)'],['../class_p_i_state_machine.html#a2bda5abc394ca0d479faf01050c5b843',1,'PIStateMachine::addRule(Type from, Type to, const PIStringList &conditions=PIStringList(), Handler handler=0, bool autoTransition=false, bool resetAllConditions=false)'],['../class_p_i_state_machine.html#a60f175d31774c0a01689ebe4a463dd85',1,'PIStateMachine::addRule(const Rule &rule)']]], + ['addseconds',['addSeconds',['../class_p_i_system_time.html#a5e98e183f16631bdec2c019356b2679b',1,'PISystemTime']]], + ['addsender',['addSender',['../class_p_i_connection.html#a51c44629c4a2eb7194bfabf16e8c1f5a',1,'PIConnection::addSender(const PIString &name, const PIString &full_path, float frequency, bool start=false)'],['../class_p_i_connection.html#adbfdd3671eb66e4967312b411a757697',1,'PIConnection::addSender(const PIString &name, const PIIODevice *dev, float frequency, bool start=false)']]], + ['addstate',['addState',['../class_p_i_state_machine.html#ac26f6300f7545b0182e3a52805b04cd6',1,'PIStateMachine']]], + ['addstring',['addString',['../class_p_i_console.html#a8274edea626b4281fe7de309ee8d1b38',1,'PIConsole']]], + ['addtab',['addTab',['../class_p_i_console.html#a119860d9253d00a3fe815bc124076577',1,'PIConsole']]], + ['addvariable',['addVariable',['../class_p_i_console.html#a9ae57b8ab5c4f8538633bf8dc8a15e67',1,'PIConsole::addVariable(const PIString &name, const PIString *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)'],['../class_p_i_console.html#a6389f65b8835a38a60bf5ee2f2a43712',1,'PIConsole::addVariable(const PIString &name, const char *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)'],['../class_p_i_console.html#a3b06530b893c79d11cf875419a834cd0',1,'PIConsole::addVariable(const PIString &name, const bool *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)'],['../class_p_i_console.html#ac53481fa1109e55fc1a6b00c9d963f90',1,'PIConsole::addVariable(const PIString &name, const short *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)'],['../class_p_i_console.html#aee3ced19ce3abda81a1afd1164a1561d',1,'PIConsole::addVariable(const PIString &name, const int *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)'],['../class_p_i_console.html#a27b939e27bc97c10eab59411de9fb526',1,'PIConsole::addVariable(const PIString &name, const long *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)'],['../class_p_i_console.html#a7d7ff34b90be97a0b9cab63419ee26c2',1,'PIConsole::addVariable(const PIString &name, const llong *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)'],['../class_p_i_console.html#afa2c5fbf172ba93197b9b2f5c6653d71',1,'PIConsole::addVariable(const PIString &name, const uchar *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)'],['../class_p_i_console.html#a2326d0f1a333927d2754830cea35a4ac',1,'PIConsole::addVariable(const PIString &name, const ushort *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)'],['../class_p_i_console.html#a5206ecd0cb4d5c17d2f8cece88cbee4e',1,'PIConsole::addVariable(const PIString &name, const uint *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)'],['../class_p_i_console.html#aed85986ef4d195ec22641fc723bc7422',1,'PIConsole::addVariable(const PIString &name, const ulong *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)'],['../class_p_i_console.html#a4a5ef27f2e7dbc0b3a657f543e21e580',1,'PIConsole::addVariable(const PIString &name, const ullong *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)'],['../class_p_i_console.html#aac91f944400e09e1d07c5d6862691078',1,'PIConsole::addVariable(const PIString &name, const float *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)'],['../class_p_i_console.html#ac92363d6e3aff60b8b27215fce4f7cbb',1,'PIConsole::addVariable(const PIString &name, const double *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)'],['../class_p_i_console.html#acf8668140c47e5ee0ac2fc100ebcaf46',1,'PIConsole::addVariable(const PIString &name, const PISystemTime *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)'],['../class_p_i_console.html#a8a71fccd3ad2e19b13045ef6e90d9546',1,'PIConsole::addVariable(const PIString &name, const PIProtocol *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)'],['../class_p_i_console.html#a36d5583199e73951f650f58dfc9bc0f3',1,'PIConsole::addVariable(const PIString &name, const PIDiagnostics *ptr, int column=1, PIFlags< PIConsole::Format > format=PIConsole::Normal)']]], + ['alladdresses',['allAddresses',['../class_p_i_ethernet.html#a91b83d7459a4265bca9362d531dbf773',1,'PIEthernet']]], + ['allconnections',['allConnections',['../class_p_i_connection.html#a0a789c43d56e1949128665366ad764ce',1,'PIConnection']]], + ['alldevices',['allDevices',['../class_p_i_connection.html#a6f84704a2ea8d380444f91104da91ffe',1,'PIConnection']]], + ['allleaves',['allLeaves',['../class_p_i_config.html#a52ba17ebcb28248b1ec4fcedd9deba4b',1,'PIConfig']]], + ['alltree',['allTree',['../class_p_i_config.html#a16f81586debe78f0ad886aac2c5d20f0',1,'PIConfig']]], + ['append',['append',['../class_p_i_byte_array.html#a3f59d6f9e5aa117ebce88de767bdf6a0',1,'PIByteArray::append(const void *data_, int size_)'],['../class_p_i_byte_array.html#a42ccaa717c6341aaf47a3a811c8c6498',1,'PIByteArray::append(const PIByteArray &data_)'],['../class_p_i_string.html#afbccf232307f332e25c7ce577ce58146',1,'PIString::append()']]] +]; diff --git a/pip/doc/html/search/functions_10.html b/pip/doc/html/search/functions_10.html new file mode 100644 index 0000000..51ae591 --- /dev/null +++ b/pip/doc/html/search/functions_10.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/functions_10.js b/pip/doc/html/search/functions_10.js new file mode 100644 index 0000000..ceb48ca --- /dev/null +++ b/pip/doc/html/search/functions_10.js @@ -0,0 +1,62 @@ +var searchData= +[ + ['packetreceived',['packetReceived',['../class_p_i_connection.html#a3883e8b65fccb1b85c810c690bb820c6',1,'PIConnection::packetReceived()'],['../class_p_i_packet_extractor.html#a008181ba36bc58a7dcc137f49fcad261',1,'PIPacketExtractor::packetReceived()']]], + ['packetreceivedevent',['packetReceivedEvent',['../class_p_i_connection.html#a0f25a2e5625a1c33a3cd4d494ea3b9da',1,'PIConnection']]], + ['packetsize',['packetSize',['../class_p_i_packet_extractor.html#a033ac83733f23c61a65ad9c810123219',1,'PIPacketExtractor']]], + ['parameters',['parameters',['../class_p_i_ethernet.html#a69d52300d09db298d90ebcf02b1006d9',1,'PIEthernet']]], + ['parent',['parent',['../class_p_i_config_1_1_entry.html#a4127afcde1fe791a46bbd31ec111b86d',1,'PIConfig::Entry']]], + ['payloadsize',['payloadSize',['../class_p_i_packet_extractor.html#af22580e67cd2601575a7834a4c9b414c',1,'PIPacketExtractor']]], + ['performcondition',['performCondition',['../class_p_i_state_machine.html#a0c51b3d6ffd0a96ae5b24a2c06ae20e3',1,'PIStateMachine']]], + ['performconditions',['performConditions',['../class_p_i_state_machine.html#a0c2a680c0a10c9440bbe89dccc55ee0c',1,'PIStateMachine']]], + ['piabs',['piAbs',['../piincludes_8h.html#a69a3e3d862d6b51feaca8d27686dd876',1,'piincludes.h']]], + ['pibytearray',['PIByteArray',['../class_p_i_byte_array.html#aaff8154b09dfd8f6b42a2ffccf77a417',1,'PIByteArray::PIByteArray()'],['../class_p_i_byte_array.html#a77c41715c48c52ca6fde95e49c398bff',1,'PIByteArray::PIByteArray(const uint size)'],['../class_p_i_byte_array.html#a53393736cdd642d3fb0f68cc762eaf10',1,'PIByteArray::PIByteArray(const void *data, const uint size)']]], + ['piceil',['piCeil',['../piincludes_8h.html#a4956481d8bee1a43e62ce8b1489b72b0',1,'piincludes.h']]], + ['pichar',['PIChar',['../class_p_i_char.html#a9c13f6b3a242d13924b64dbd3deec204',1,'PIChar::PIChar(const char c)'],['../class_p_i_char.html#ac11bc7f521d447ef402a9cb9ef05707f',1,'PIChar::PIChar(const short c)'],['../class_p_i_char.html#a272e1665fe42d557cad91ed3dc416a29',1,'PIChar::PIChar(const int c)'],['../class_p_i_char.html#a610057fd1840516fce1c5fb0955535b9',1,'PIChar::PIChar(const uchar c)'],['../class_p_i_char.html#a2dcff5b1473cc887cff45cb31bb132f5',1,'PIChar::PIChar(const ushort c)'],['../class_p_i_char.html#ae684b56acf78dff045b74bfdd91b0540',1,'PIChar::PIChar(const uint c=0)'],['../class_p_i_char.html#a5507bf7ad8fe1f80ace5f56e3e694ddd',1,'PIChar::PIChar(const char *c)']]], + ['piclamp',['piClamp',['../piincludes_8h.html#a9269f3c0357a9c7e33c8c5f346c47309',1,'piincludes.h']]], + ['picli',['PICLI',['../class_p_i_c_l_i.html#abc57c0e1bb06e1af2087e1ff158039ac',1,'PICLI']]], + ['piconfig',['PIConfig',['../class_p_i_config.html#a283394a8822215eaf98a828df32ae72d',1,'PIConfig']]], + ['piconnection',['PIConnection',['../class_p_i_connection.html#a73a93e8330a2852cf1c76c0fa33b8eff',1,'PIConnection::PIConnection()'],['../class_p_i_connection.html#ad9bf5c0c48488d2576b6545ecb75e22a',1,'PIConnection::PIConnection(const PIString &name)'],['../class_p_i_connection.html#a245a605ddceaf33c0b2a9e66378c0c98',1,'PIConnection::PIConnection(const PIString &config, const PIString &name)']]], + ['piconsole',['PIConsole',['../class_p_i_console.html#ab37989414cad3b54ddd8ab8d2879e386',1,'PIConsole']]], + ['picout',['PICout',['../class_p_i_cout.html#afa5f5b5b95a383a52f286fa80173a77c',1,'PICout']]], + ['pidiagnostics',['PIDiagnostics',['../class_p_i_diagnostics.html#a0ecb4332d5583be9a0c626c6ad8fc92a',1,'PIDiagnostics']]], + ['pidisconnect',['piDisconnect',['../class_p_i_object.html#af4581f822cb17c489e34da1abca2764a',1,'PIObject::piDisconnect(PIObject *src, const PIString &sig)'],['../class_p_i_object.html#a1d556c03cc2ba29fd2515abc470e3393',1,'PIObject::piDisconnect(PIObject *src)']]], + ['piethernet',['PIEthernet',['../class_p_i_ethernet.html#a6a5a47b716613af3c224d1a6909f0751',1,'PIEthernet::PIEthernet()'],['../class_p_i_ethernet.html#aa47c8e516e88c2cb479bd62934bf2660',1,'PIEthernet::PIEthernet(Type type, const PIString &ip_port=PIString(), const PIFlags< Parameters > params=0)']]], + ['pievaluator',['PIEvaluator',['../class_p_i_evaluator.html#a4fe9e776a1db6cc5b55665304764cf20',1,'PIEvaluator']]], + ['piflags',['PIFlags',['../class_p_i_flags.html#a99d2dd72580b4c93b2bd6754cfc5e1b8',1,'PIFlags::PIFlags()'],['../class_p_i_flags.html#a657c6082214f45ae26436517bb12168e',1,'PIFlags::PIFlags(Enum e)'],['../class_p_i_flags.html#a815969c121235a5a1fbfa6cb3d9cc2f4',1,'PIFlags::PIFlags(const PIFlags &f)'],['../class_p_i_flags.html#a3307667726be788df2ddca22e00c590d',1,'PIFlags::PIFlags(const int i)']]], + ['pifloor',['piFloor',['../piincludes_8h.html#ab9e59a89deba3a70f6a7ce9e746eadc6',1,'piincludes.h']]], + ['pikbdlistener',['PIKbdListener',['../class_p_i_kbd_listener.html#a2baa588cd4ae95363c980804b47ed461',1,'PIKbdListener']]], + ['piletobe',['piLetobe',['../piincludes_8h.html#abc830007b90d3beea81c0773811dbc9e',1,'piLetobe(void *data, int size): piincludes.h'],['../piincludes_8h.html#a1de16289b486990a4af21b1faad08e0e',1,'piLetobe(T *v): piincludes.h'],['../piincludes_8h.html#a142038da46a86ef1fc1ab52f57c21010',1,'piLetobe(const T &v): piincludes.h']]], + ['pimax',['piMax',['../piincludes_8h.html#a3b04f3381ca3235a4fe575b4867263c6',1,'piMax(const T &f, const T &s): piincludes.h'],['../piincludes_8h.html#a291a707199f16a78fe41d79a9b89bc00',1,'piMax(const T &f, const T &s, const T &t): piincludes.h']]], + ['pimin',['piMin',['../piincludes_8h.html#afc6d1b1ff01ad00cda9d0df5e8dbf85f',1,'piMin(const T &f, const T &s): piincludes.h'],['../piincludes_8h.html#a342413b3c07aed06a22289a9e0daaead',1,'piMin(const T &f, const T &s, const T &t): piincludes.h']]], + ['pimsleep',['piMSleep',['../pitime_8h.html#a10862d1267284ae224b51ad95f90c931',1,'pitime.h']]], + ['pimutex',['PIMutex',['../class_p_i_mutex.html#ac4d6be4bdac6af45f1db56c4d1a0d971',1,'PIMutex']]], + ['piobject',['PIObject',['../class_p_i_object.html#a779d66bab882a51ef6389d2e212f2bd6',1,'PIObject']]], + ['pipacketextractor',['PIPacketExtractor',['../class_p_i_packet_extractor.html#aa79460b536202e7c877f5eca4f5be089',1,'PIPacketExtractor']]], + ['piprotocol',['PIProtocol',['../class_p_i_protocol.html#ac5aa3e1546b771f82658bdcacb856898',1,'PIProtocol::PIProtocol()'],['../class_p_i_protocol.html#a5d4ccd507627a058c67ceec1d9774247',1,'PIProtocol::PIProtocol(const PIString &config, const PIString &name, void *recHeaderPtr=0, int recHeaderSize=0, void *recDataPtr=0, int recDataSize=0, void *sendDataPtr=0, int sendDataSize=0)']]], + ['pipversion',['PIPVersion',['../piincludes_8h.html#aeb9599e6d2eecbf56d0bf78ec7d07ddf',1,'piincludes.cpp']]], + ['piround',['piRound',['../piincludes_8h.html#a983fb6261220848dead0db5ffba95071',1,'piincludes.h']]], + ['piset',['PISet',['../class_p_i_set.html#a0611208edb84f2529cb2e2782c3239fd',1,'PISet::PISet()'],['../class_p_i_set.html#ab2a248ae703457ca45cfa55972e1252a',1,'PISet::PISet(const T &value)'],['../class_p_i_set.html#aebcd07da3920c925af21ad1634dde44b',1,'PISet::PISet(const T &v0, const T &v1)'],['../class_p_i_set.html#a0da9d93a30b419270d6389433266b376',1,'PISet::PISet(const T &v0, const T &v1, const T &v2)'],['../class_p_i_set.html#a5170af33fced202a149267f84baaa65c',1,'PISet::PISet(const T &v0, const T &v1, const T &v2, const T &v3)']]], + ['pisleep',['piSleep',['../pitime_8h.html#a6c5fbd8c6c0e339600675ce646bb635f',1,'pitime.h']]], + ['pistatemachine',['PIStateMachine',['../class_p_i_state_machine.html#a5a9c75f183207bc366b2f0531473b905',1,'PIStateMachine']]], + ['pistring',['PIString',['../class_p_i_string.html#a5671ba063015ac95a0fc582776424629',1,'PIString::PIString()'],['../class_p_i_string.html#a0a7dbce851e0654c1f46239c60b215d7',1,'PIString::PIString(const PIChar &c)'],['../class_p_i_string.html#a83698956091624f377f9bb7f9f3a6afc',1,'PIString::PIString(const char *str)'],['../class_p_i_string.html#a1c7edbae1d5dd3d123c3f19679c8a105',1,'PIString::PIString(const wchar_t *str)'],['../class_p_i_string.html#adba42068e854520b6fa4e3665055ab90',1,'PIString::PIString(const string &str)'],['../class_p_i_string.html#a09e89cd86ab4b41a6d4f68a4c04ade71',1,'PIString::PIString(const PIByteArray &ba)'],['../class_p_i_string.html#add45a4c9d96be4a7ff91e69b37f7e7f7',1,'PIString::PIString(const PIChar *str, const int len)'],['../class_p_i_string.html#a6c15cfb2ef6a0898ac99a602a4910c92',1,'PIString::PIString(const char *str, const int len)'],['../class_p_i_string.html#a571606d1afac0afb1850f314e5a7f582',1,'PIString::PIString(const int len, const char c)'],['../class_p_i_string.html#ac977eece58d4b01775cb5ec1aa9c0172',1,'PIString::PIString(const int len, const PIChar &c)']]], + ['pistringlist',['PIStringList',['../class_p_i_string_list.html#a2e303b0d998cc4a3d1801a4ae58a095d',1,'PIStringList::PIStringList()'],['../class_p_i_string_list.html#a637847edb01e44dbd98fd636e870d8da',1,'PIStringList::PIStringList(const PIString &str)'],['../class_p_i_string_list.html#a619a3fadd772a3ceb4f7433aaaa707d5',1,'PIStringList::PIStringList(const PIString &s0, const PIString &s1)'],['../class_p_i_string_list.html#a204dafd0021fb841cdb52cf2a01a0ef5',1,'PIStringList::PIStringList(const PIString &s0, const PIString &s1, const PIString &s2)'],['../class_p_i_string_list.html#a79c640961baae9bbf10935245eaf3339',1,'PIStringList::PIStringList(const PIString &s0, const PIString &s1, const PIString &s2, const PIString &s3)']]], + ['piswap',['piSwap',['../piincludes_8h.html#acdace86016235bb97019f0691fb0b2ce',1,'piincludes.h']]], + ['piswapbinary',['piSwapBinary',['../piincludes_8h.html#a077c15d518abc4962091fa666c4bedda',1,'piincludes.h']]], + ['pisystemtime',['PISystemTime',['../class_p_i_system_time.html#a1953b9b01b46f81c9abdda056b586baf',1,'PISystemTime::PISystemTime()'],['../class_p_i_system_time.html#ae21e04bfdf6534b05d0037ed14ee59bc',1,'PISystemTime::PISystemTime(long s, long ns)'],['../class_p_i_system_time.html#acf262a7f3ab39b197bae61c942989271',1,'PISystemTime::PISystemTime(const PISystemTime &t)']]], + ['pithread',['PIThread',['../class_p_i_thread.html#adaa3b942365cb17b3e985648128e5f7e',1,'PIThread::PIThread(void *data, ThreadFunc func, bool startNow=false, int loop_delay=-1)'],['../class_p_i_thread.html#a538752277df4d58134b05ef080ed6b04',1,'PIThread::PIThread(bool startNow=false, int loop_delay=-1)']]], + ['pitimer',['PITimer',['../class_p_i_timer.html#a3cc1d86602eb8d2abd8e0c9a9931cd70',1,'PITimer::PITimer()'],['../class_p_i_timer.html#a0cbb0321a650e4dd4acd046e58a67095',1,'PITimer::PITimer(TimerImplementation ti)'],['../class_p_i_timer.html#a6d3067f66c06ddd21982251f4ed6ec50',1,'PITimer::PITimer(TimerEvent slot, void *data=0, TimerImplementation ti=Thread)']]], + ['piusleep',['piUSleep',['../pitime_8h.html#a905b80a2477dd23f7b2cade100c64385',1,'pitime.cpp']]], + ['pivariant',['PIVariant',['../class_p_i_variant.html#a83432da0a545ad6dd30429c0e1a583da',1,'PIVariant::PIVariant()'],['../class_p_i_variant.html#aad0458975016273ccd939c7aec69b057',1,'PIVariant::PIVariant(const char *v)'],['../class_p_i_variant.html#a14d9afdc7c44865b982f673fa45b83e6',1,'PIVariant::PIVariant(const bool v)'],['../class_p_i_variant.html#ad8e268c9cb15c248e914068417e04ccc',1,'PIVariant::PIVariant(const char v)'],['../class_p_i_variant.html#a0f5a040f137b2e048f75b2e18521eb17',1,'PIVariant::PIVariant(const uchar v)'],['../class_p_i_variant.html#a11042a1ccf1c759055fb604cae320be0',1,'PIVariant::PIVariant(const short v)'],['../class_p_i_variant.html#af7bf9ae6815e438a01b10b2aa546e8c4',1,'PIVariant::PIVariant(const ushort v)'],['../class_p_i_variant.html#aee8eeff2d7a3ff2a478b428b9b2badd8',1,'PIVariant::PIVariant(const int &v)'],['../class_p_i_variant.html#aa670291ca1ec856cdc1887e594b1546f',1,'PIVariant::PIVariant(const uint &v)'],['../class_p_i_variant.html#a1fe8d4126aaf5bdbbd61ef178df488cc',1,'PIVariant::PIVariant(const long &v)'],['../class_p_i_variant.html#a20a6fd9ce7d7de2e20440f722f28f379',1,'PIVariant::PIVariant(const ulong &v)'],['../class_p_i_variant.html#a7ce8905e74c36806ca004e845b67743b',1,'PIVariant::PIVariant(const llong &v)'],['../class_p_i_variant.html#a0a1355062b5b8df0c88542c782a985d8',1,'PIVariant::PIVariant(const ullong &v)'],['../class_p_i_variant.html#a91dc6be82349d2d24cc642abf9c39e2e',1,'PIVariant::PIVariant(const float &v)'],['../class_p_i_variant.html#a4dcc306bce5d0601e9cea679e623d8bd',1,'PIVariant::PIVariant(const double &v)'],['../class_p_i_variant.html#a5a03fdaf8ee128358c289ada2c72686d',1,'PIVariant::PIVariant(const ldouble &v)'],['../class_p_i_variant.html#adb79886a19bb0efb6e9c221eae8fb236',1,'PIVariant::PIVariant(const complexd &v)'],['../class_p_i_variant.html#a7b33912daf30f5e7cc7c333e4c7400c6',1,'PIVariant::PIVariant(const complexld &v)'],['../class_p_i_variant.html#a8882d5bfc67b3ff89e8ee9835cac3693',1,'PIVariant::PIVariant(const PIBitArray &v)'],['../class_p_i_variant.html#aba63a29878c14870b7a045799452d93c',1,'PIVariant::PIVariant(const PIByteArray &v)'],['../class_p_i_variant.html#ac48a86c19a56cd03f1432596d29204d2',1,'PIVariant::PIVariant(const PIString &v)'],['../class_p_i_variant.html#afccb4ddebcf51eb0241cc99ad46fa6e3',1,'PIVariant::PIVariant(const PIStringList &v)'],['../class_p_i_variant.html#a3dd80bbfa434bfa4b470192d728be08e',1,'PIVariant::PIVariant(const PITime &v)'],['../class_p_i_variant.html#a3d14c3eec0653cd7a2a1e2988e805499',1,'PIVariant::PIVariant(const PIDate &v)'],['../class_p_i_variant.html#a1e71b4d50d2054edb27c23cbfc3416c3',1,'PIVariant::PIVariant(const PIDateTime &v)'],['../class_p_i_variant.html#a1fc8d7e876930686d216924473da466e',1,'PIVariant::PIVariant(const PISystemTime &v)']]], + ['pivector',['PIVector',['../class_p_i_vector.html#a1c666fc2ba39eff314508f1420530875',1,'PIVector']]], + ['pop_5fback',['pop_back',['../class_p_i_vector.html#a8f5297d0ee721627ad8c545980756b68',1,'PIVector']]], + ['pop_5ffront',['pop_front',['../class_p_i_vector.html#a94b63d4c818f6e27415b8895f37805b9',1,'PIVector']]], + ['prepend',['prepend',['../class_p_i_string.html#aa21143de8258bbc8698e46a9216c5a26',1,'PIString']]], + ['priority',['priority',['../class_p_i_thread.html#adcc0d49a7914cba2b3edc86c454ee3a6',1,'PIThread']]], + ['programcommand',['programCommand',['../class_p_i_c_l_i.html#a31bf2b18e408514af453029ebc09f00d',1,'PICLI']]], + ['properties',['properties',['../class_p_i_object.html#aeb8178ed4012f204d2c89a8413bbcd2d',1,'PIObject']]], + ['propertiescount',['propertiesCount',['../class_p_i_object.html#a68dbd55885a081be717ff818dcb31bcc',1,'PIObject']]], + ['property',['property',['../class_p_i_object.html#ad0cadfad8b61e8c994abde7d2d4853ac',1,'PIObject']]], + ['propertychanged',['propertyChanged',['../class_p_i_object.html#a2f98c7c43b93f9d636e9119f0a577715',1,'PIObject::propertyChanged()'],['../class_p_i_ethernet.html#aeab32d357e600e3428a3c40db782df1e',1,'PIEthernet::propertyChanged()']]], + ['push_5fback',['push_back',['../class_p_i_vector.html#a6b0cf989ba342d06c8cf21a55d434a8e',1,'PIVector']]], + ['push_5ffront',['push_front',['../class_p_i_vector.html#adadda79d8436c657fd6039e8e090da67',1,'PIVector']]] +]; diff --git a/pip/doc/html/search/functions_11.html b/pip/doc/html/search/functions_11.html new file mode 100644 index 0000000..c53c506 --- /dev/null +++ b/pip/doc/html/search/functions_11.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/functions_11.js b/pip/doc/html/search/functions_11.js new file mode 100644 index 0000000..fa8945f --- /dev/null +++ b/pip/doc/html/search/functions_11.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['quality',['quality',['../class_p_i_diagnostics.html#ab4b373f4d0dfaad6e25cf1d376b2d754',1,'PIDiagnostics']]], + ['quality_5fptr',['quality_ptr',['../class_p_i_diagnostics.html#a4ce10a350d75352320212784193db4fb',1,'PIDiagnostics']]], + ['qualitychanged',['qualityChanged',['../class_p_i_diagnostics.html#a6e0a2d483282afab237e4b1ab9f0b4a4',1,'PIDiagnostics']]], + ['quote',['quote',['../class_p_i_cout.html#a95965e197340e6ebe30b84a89ccc4a71',1,'PICout']]] +]; diff --git a/pip/doc/html/search/functions_12.html b/pip/doc/html/search/functions_12.html new file mode 100644 index 0000000..b4ff9e4 --- /dev/null +++ b/pip/doc/html/search/functions_12.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/functions_12.js b/pip/doc/html/search/functions_12.js new file mode 100644 index 0000000..1ae6279 --- /dev/null +++ b/pip/doc/html/search/functions_12.js @@ -0,0 +1,59 @@ +var searchData= +[ + ['rawargument',['rawArgument',['../class_p_i_c_l_i.html#acfa1357e283fb2fceb69ff93e53cef6f',1,'PICLI']]], + ['rawarguments',['rawArguments',['../class_p_i_c_l_i.html#a48e694f023cd8a8606865b1704583613',1,'PICLI']]], + ['rawdata',['RawData',['../struct_p_i_byte_array_1_1_raw_data.html#a57c5b593f88843f43a2644b742f10838',1,'PIByteArray::RawData::RawData(void *data=0, int size=0)'],['../struct_p_i_byte_array_1_1_raw_data.html#a35220a8724f8a8a803380ae6f4653ae1',1,'PIByteArray::RawData::RawData(const void *data, const int size)']]], + ['read',['read',['../class_p_i_ethernet.html#a28595d8f88cdedf9e5572068ab116fa8',1,'PIEthernet::read()'],['../class_p_i_packet_extractor.html#aa41b9b23ba7a074398687edf82331b40',1,'PIPacketExtractor::read()']]], + ['readablesize',['readableSize',['../class_p_i_string.html#aa439f5ba10fdede14750843f429bd634',1,'PIString']]], + ['readaddress',['readAddress',['../class_p_i_ethernet.html#a53052c78cb24aca1e1a65d8c14e1dd7c',1,'PIEthernet']]], + ['readall',['readAll',['../class_p_i_config.html#ab2bb45897ec17ef66c729dfe7d43a135',1,'PIConfig']]], + ['readdevicesetting',['readDeviceSetting',['../class_p_i_i_o_device.html#add5b851e98d22dd4d7482a8e509113dc',1,'PIIODevice::readDeviceSetting()'],['../piconfig_8h.html#add5b851e98d22dd4d7482a8e509113dc',1,'readDeviceSetting(): piconfig.h']]], + ['readip',['readIP',['../class_p_i_ethernet.html#aa04de0ef1cab98a7bc80cc43ca550f18',1,'PIEthernet']]], + ['readport',['readPort',['../class_p_i_ethernet.html#ac93db4b6831c0304955c74c666d716f4',1,'PIEthernet']]], + ['readtimeout',['readTimeout',['../class_p_i_ethernet.html#a6e2bd7559bfb46784bda61f88ad055b4',1,'PIEthernet']]], + ['receivebytespersec',['receiveBytesPerSec',['../class_p_i_diagnostics.html#a412a3c850f35ae690bf2ee212bace700',1,'PIDiagnostics']]], + ['receivebytespersec_5fptr',['receiveBytesPerSec_ptr',['../class_p_i_diagnostics.html#a3dae97db20de5a1a82559eaf872004ea',1,'PIDiagnostics']]], + ['receivecount',['receiveCount',['../class_p_i_diagnostics.html#a894cb3cd2ec9a395ee217fe0573bfa74',1,'PIDiagnostics']]], + ['receivecount_5fptr',['receiveCount_ptr',['../class_p_i_diagnostics.html#afe4a920694b84936c0fa7d07b14d1dd7',1,'PIDiagnostics']]], + ['receivecountpersec',['receiveCountPerSec',['../class_p_i_diagnostics.html#a81fa49a759f97f23b0e13992c2decd11',1,'PIDiagnostics']]], + ['receivecountpersec_5fptr',['receiveCountPerSec_ptr',['../class_p_i_diagnostics.html#a364f03141facee8162a66de048005807',1,'PIDiagnostics']]], + ['received',['received',['../class_p_i_diagnostics.html#a0cedccc3d6d8dba5238ee3a0f42a74c6',1,'PIDiagnostics::received()'],['../class_p_i_ethernet.html#a2adc07e00ede7ca18bfa93e94290a9f9',1,'PIEthernet::received()'],['../class_p_i_serial.html#aafc6d34cbbdef49fed9454403056a948',1,'PISerial::received()']]], + ['receivespeed',['receiveSpeed',['../class_p_i_diagnostics.html#a01bf2ddc5c60e8156c8c78b49978810d',1,'PIDiagnostics']]], + ['receivespeed_5fptr',['receiveSpeed_ptr',['../class_p_i_diagnostics.html#aa7a24231b0008a27405a92f8f7094277',1,'PIDiagnostics']]], + ['remove',['remove',['../class_p_i_set.html#aeb31ad164a71727de75ee18f7767d07c',1,'PISet::remove()'],['../class_p_i_vector.html#a0e43a8466d800cd8ac31f91dc8f6e6a3',1,'PIVector::remove()']]], + ['removeall',['removeAll',['../class_p_i_vector.html#a5c8b3839e69249aa672e76017af2be1f',1,'PIVector']]], + ['removeallchannels',['removeAllChannels',['../class_p_i_connection.html#a2ef0febef147d0314b8ec312e81d535a',1,'PIConnection']]], + ['removealldevices',['removeAllDevices',['../class_p_i_connection.html#a01600f5a22b49eb796fbf245a0853b6d',1,'PIConnection']]], + ['removeallfilters',['removeAllFilters',['../class_p_i_connection.html#a762b4641d14843628d7af4af8212bbf9',1,'PIConnection']]], + ['removeallsenders',['removeAllSenders',['../class_p_i_connection.html#a0c7c309e54c2c09a779c25843dd13efd',1,'PIConnection']]], + ['removechannel',['removeChannel',['../class_p_i_connection.html#ab512962f328b702d416a13d577937524',1,'PIConnection::removeChannel(const PIString &name_from, const PIString &name_to)'],['../class_p_i_connection.html#af4e276c0cf30890cb7e599ffdbe0b9e8',1,'PIConnection::removeChannel(const PIString &name_from, const PIIODevice *dev_to)'],['../class_p_i_connection.html#acf9fb8b023f09c12b64809928951dfd1',1,'PIConnection::removeChannel(const PIIODevice *dev_from, const PIString &name_to)'],['../class_p_i_connection.html#aa3d4e83032706f342f70f25928a87bfa',1,'PIConnection::removeChannel(const PIIODevice *dev_from, const PIIODevice *dev_to)'],['../class_p_i_connection.html#a95bcc784d1436285666d141955468227',1,'PIConnection::removeChannel(const PIString &name_from)'],['../class_p_i_connection.html#ace1bad69c9498f390fd324f5ec11683c',1,'PIConnection::removeChannel(const PIIODevice *dev_from)']]], + ['removedelimiter',['removeDelimiter',['../class_p_i_timer.html#ab02f5a19cb71a4be4965a1d670c7ff72',1,'PITimer::removeDelimiter(int delim)'],['../class_p_i_timer.html#a2809e63e8678dc914a9b521fa0de7a09',1,'PITimer::removeDelimiter(TimerEvent slot)'],['../class_p_i_timer.html#a093ee618f2beac2794a469c76f8064f1',1,'PITimer::removeDelimiter(int delim, TimerEvent slot)']]], + ['removedevice',['removeDevice',['../class_p_i_connection.html#ab6579532c7de05b4ac379a9ca2ea8ec9',1,'PIConnection']]], + ['removeduplicates',['removeDuplicates',['../class_p_i_string_list.html#af7e798057ddb99a7cca519ccf3aaba8d',1,'PIStringList']]], + ['removefilter',['removeFilter',['../class_p_i_connection.html#a82a9d3c484bbc073ef7d9196343e1368',1,'PIConnection::removeFilter(const PIString &name, const PIString &full_path_name)'],['../class_p_i_connection.html#a870f2081626fa2aa352069a19b1c52ff',1,'PIConnection::removeFilter(const PIString &name, const PIIODevice *dev)'],['../class_p_i_connection.html#a1d486b41013a8cc455a5a07529d2eea3',1,'PIConnection::removeFilter(const PIString &name)']]], + ['removeone',['removeOne',['../class_p_i_vector.html#a016a1c78ec7270e6edccc81d7c8075ef',1,'PIVector']]], + ['removesender',['removeSender',['../class_p_i_connection.html#a0f502ebce46f41bf58975652bac7346c',1,'PIConnection::removeSender(const PIString &name, const PIString &full_path)'],['../class_p_i_connection.html#a6e94e0174cecb9a57571be67ead71381',1,'PIConnection::removeSender(const PIString &name, const PIIODevice *dev)'],['../class_p_i_connection.html#a34af1d09b375682bdcd25590153530d1',1,'PIConnection::removeSender(const PIString &name)']]], + ['removestrings',['removeStrings',['../class_p_i_string_list.html#a7b3c809c1c93ddab639d2163da783043',1,'PIStringList']]], + ['removetab',['removeTab',['../class_p_i_console.html#aa3766f5453f3bb6a90e3e890133b0549',1,'PIConsole::removeTab(uint index)'],['../class_p_i_console.html#a09b921eabc7dfb78527916927d67caf4',1,'PIConsole::removeTab(const PIString &name)']]], + ['removevariable',['removeVariable',['../class_p_i_evaluator.html#a10a2ad62c7636b8c343ca0a60afcb9d0',1,'PIEvaluator']]], + ['repeat',['repeat',['../class_p_i_string.html#a95bc5ca2e401747051eb019101036838',1,'PIString']]], + ['repeated',['repeated',['../class_p_i_string.html#a8cdd3ad7481f765352ff371705e29ff6',1,'PIString']]], + ['replace',['replace',['../class_p_i_string.html#a5409e1aecee919acb3995fe2d98396d2',1,'PIString::replace(const int from, const int count, const PIString &with)'],['../class_p_i_string.html#a1fb70092a8723959b7f0718676dea6ed',1,'PIString::replace(const PIString &what, const PIString &with, bool *ok=0)']]], + ['replaceall',['replaceAll',['../class_p_i_string.html#a02fd96dd8a55a990602ecdbf21a120e0',1,'PIString']]], + ['replaced',['replaced',['../class_p_i_string.html#abdde92d6e5efa3a0f6a53e7a6cb27b64',1,'PIString::replaced(const int from, const int count, const PIString &with) const '],['../class_p_i_string.html#a4e91d076a5c2488986f5e9860e65d8c7',1,'PIString::replaced(const PIString &what, const PIString &with, bool *ok=0) const ']]], + ['reset',['reset',['../class_p_i_state_machine.html#a2dbebcfe51dfd85c568bcc5eab3a4d40',1,'PIStateMachine::reset()'],['../class_p_i_time_measurer.html#a9b9d77de23a343ccabc56d6658f9d874',1,'PITimeMeasurer::reset()'],['../class_p_i_diagnostics.html#a0771a5343fcebfe427876adddae14c34',1,'PIDiagnostics::reset()']]], + ['reset_5ftime',['reset_time',['../class_p_i_time_measurer.html#a1d469ce161b772ce6fffc04e53cea18f',1,'PITimeMeasurer']]], + ['resetcondition',['resetCondition',['../class_p_i_state_machine.html#a8c62341c659ed29e4ba25672162aafc0',1,'PIStateMachine']]], + ['resetconditions',['resetConditions',['../class_p_i_state_machine.html#aa932844b2866a28e24028020c33fe23a',1,'PIStateMachine']]], + ['resize',['resize',['../class_p_i_vector.html#af3dc895f63a2b64927918f1be97e8947',1,'PIVector']]], + ['resized',['resized',['../class_p_i_byte_array.html#a0c59a360cbc7e6a36f6ed13c041ee7f7',1,'PIByteArray']]], + ['restart',['restart',['../class_p_i_timer.html#ae899576c5a8b605a749f9c6f09773087',1,'PITimer']]], + ['restorecontrol',['restoreControl',['../class_p_i_cout.html#a6d6689f35644fba314420d1c218982f1',1,'PICout']]], + ['reverse',['reverse',['../class_p_i_string.html#a57ef668d89de132b1fd27342365c7ac1',1,'PIString']]], + ['reversed',['reversed',['../class_p_i_string.html#ab4e184e66ced5c40307797708a7fa747',1,'PIString']]], + ['right',['right',['../class_p_i_string.html#a84b4d361d9c7bf1d9c467e4a90d0d06b',1,'PIString']]], + ['rootentry',['rootEntry',['../class_p_i_config.html#ab3b501c744eec9526b06509e14e868ec',1,'PIConfig']]], + ['rule',['Rule',['../struct_p_i_state_machine_1_1_rule.html#a72078e5c7842786930ca73022509698c',1,'PIStateMachine::Rule::Rule()'],['../struct_p_i_state_machine_1_1_rule.html#af18c79ccfbc149a7ab7959d0179d0276',1,'PIStateMachine::Rule::Rule(Type f, Type t, const PIStringList &c=PIStringList(), Handler h=0, bool at=false, bool rac=false)']]], + ['rulescount',['rulesCount',['../class_p_i_state_machine.html#af5c2a2973b22c37217a1d74c60aab909',1,'PIStateMachine']]], + ['run',['run',['../class_p_i_thread.html#a8c9cacfd381e0e02eb6e52810d48ce2e',1,'PIThread']]] +]; diff --git a/pip/doc/html/search/functions_13.html b/pip/doc/html/search/functions_13.html new file mode 100644 index 0000000..6986612 --- /dev/null +++ b/pip/doc/html/search/functions_13.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/functions_13.js b/pip/doc/html/search/functions_13.js new file mode 100644 index 0000000..8caddf0 --- /dev/null +++ b/pip/doc/html/search/functions_13.js @@ -0,0 +1,89 @@ +var searchData= +[ + ['savecontrol',['saveControl',['../class_p_i_cout.html#afb789d3710c4bbb56a92e4815bb8fa2b',1,'PICout']]], + ['send',['send',['../class_p_i_ethernet.html#af01b2a4c78bce376ba6cfcf4dd2907c1',1,'PIEthernet::send(const PIString &ip, int port, const void *data, int size, bool threaded=false)'],['../class_p_i_ethernet.html#ae8c88ae9984347a23e2d5743dec5739e',1,'PIEthernet::send(const PIString &ip_port, const void *data, int size, bool threaded=false)'],['../class_p_i_ethernet.html#a77b555fc82243b3e998cf2b008008f0f',1,'PIEthernet::send(const void *data, int size, bool threaded=false)'],['../class_p_i_ethernet.html#a8b42711033d1c21ea978b4c3deed0962',1,'PIEthernet::send(const PIByteArray &data, bool threaded=false)']]], + ['sendaddress',['sendAddress',['../class_p_i_ethernet.html#a9f1c3496e88242f1637666a9a0ac9c86',1,'PIEthernet']]], + ['sendbytespersec',['sendBytesPerSec',['../class_p_i_diagnostics.html#ad24cb17710950995f1be0cf48c150a5e',1,'PIDiagnostics']]], + ['sendbytespersec_5fptr',['sendBytesPerSec_ptr',['../class_p_i_diagnostics.html#a5565c0c6c31f39144ce80c4a68dad08d',1,'PIDiagnostics']]], + ['sendcount',['sendCount',['../class_p_i_diagnostics.html#a896f8406b97fb4eee8fa5fbcd0f4cb18',1,'PIDiagnostics']]], + ['sendcount_5fptr',['sendCount_ptr',['../class_p_i_diagnostics.html#a6c331ad75d8802175b73c2e0f84e2368',1,'PIDiagnostics']]], + ['sendcountpersec',['sendCountPerSec',['../class_p_i_diagnostics.html#a42f008c143eb3aeaa34350b41b471bd9',1,'PIDiagnostics']]], + ['sendcountpersec_5fptr',['sendCountPerSec_ptr',['../class_p_i_diagnostics.html#a34f3d9d9b0560da37f4e3258a2408c6c',1,'PIDiagnostics']]], + ['sended',['sended',['../class_p_i_diagnostics.html#a40db151966a7c48357df5e19de20116f',1,'PIDiagnostics']]], + ['senderdata',['senderData',['../class_p_i_connection.html#a023551841a2209d5ada16c376feb91f9',1,'PIConnection']]], + ['senderfixeddata',['senderFixedData',['../class_p_i_connection.html#a94acbae950358c2d47b6f71048d4ce4a',1,'PIConnection']]], + ['senderfrequency',['senderFrequency',['../class_p_i_connection.html#afc32d50f589771ab51d90df92960a9af',1,'PIConnection']]], + ['sendip',['sendIP',['../class_p_i_ethernet.html#aaa134cd7aecf18f151a09c497b19e0fa',1,'PIEthernet']]], + ['sendport',['sendPort',['../class_p_i_ethernet.html#a428a2e1cdf265f4b363240b4f8f40183',1,'PIEthernet']]], + ['sendspeed',['sendSpeed',['../class_p_i_diagnostics.html#a8fa858dfeda458616b1f5ecbab3baead',1,'PIDiagnostics']]], + ['sendspeed_5fptr',['sendSpeed_ptr',['../class_p_i_diagnostics.html#a36ac4c15726cab43cb1a46ddfd1fc87c',1,'PIDiagnostics']]], + ['setactive',['setActive',['../class_p_i_kbd_listener.html#a13b9bca3e1c73dcdbbd8ea813e7893f4',1,'PIKbdListener']]], + ['setbuffersize',['setBufferSize',['../class_p_i_packet_extractor.html#aa6f77a5a0acf43e7b69354e59c89523a',1,'PIPacketExtractor']]], + ['setcolumnalignment',['setColumnAlignment',['../class_p_i_console.html#a44b8aeea4216e6b514d468f3fcc7e19b',1,'PIConsole']]], + ['setcolumnalignmenttoall',['setColumnAlignmentToAll',['../class_p_i_console.html#a6c0653f78a4c22a7de20656c150d4d7d',1,'PIConsole']]], + ['setcomment',['setComment',['../class_p_i_config_1_1_entry.html#a18f083b2d0fdff86e717938718c8be2b',1,'PIConfig::Entry']]], + ['setcontrol',['setControl',['../class_p_i_cout.html#a5b6614dddc73b36883222e31fda93bf2',1,'PICout::setControl(PICoutControl c, bool on=true)'],['../class_p_i_cout.html#a39ac735489b5deed01f0d71bfc3a6506',1,'PICout::setControl(PICoutControls c, bool save=false)']]], + ['setdata',['setData',['../class_p_i_evaluator.html#a56921d7e9aac1543eeee4d52b220f8ac',1,'PIEvaluator::setData()'],['../class_p_i_kbd_listener.html#a0e0b57b7012db4134a0f72c9cbfa1d07',1,'PIKbdListener::setData()'],['../class_p_i_thread.html#a221e15d1a4093b7db6cc579fc8be69b6',1,'PIThread::setData()'],['../class_p_i_timer.html#aa166b87d70f34ca63b9c39f8f03daea4',1,'PITimer::setData()']]], + ['setdebug',['setDebug',['../class_p_i_object.html#a9a0ec972d4864287fae4d1a0edcd9dc5',1,'PIObject']]], + ['setdefaultalignment',['setDefaultAlignment',['../class_p_i_console.html#ad5bdaa30246c6165fe87bdc3539937f0',1,'PIConsole']]], + ['setdelimiter',['setDelimiter',['../class_p_i_config.html#ae196cc6e271aa930c7c0849150df868c',1,'PIConfig']]], + ['setdevice',['setDevice',['../class_p_i_packet_extractor.html#a82db047d7e3e58f8026028857b6b69c4',1,'PIPacketExtractor']]], + ['setdisconnecttimeout',['setDisconnectTimeout',['../class_p_i_diagnostics.html#a54f87c6f4fc670cbc5c15129bebb3394',1,'PIDiagnostics']]], + ['setflag',['setFlag',['../class_p_i_flags.html#a6673f1d35533de415c32585fa07acc4c',1,'PIFlags::setFlag(const PIFlags &f, bool on=true)'],['../class_p_i_flags.html#af5e4ff71a745cd3480652f9d8073e0c6',1,'PIFlags::setFlag(const Enum &e, bool on=true)'],['../class_p_i_flags.html#ac3698f718594f1937e2c3b75173c0ccc',1,'PIFlags::setFlag(const int &i, bool on=true)']]], + ['setfooter',['setFooter',['../class_p_i_packet_extractor.html#aaf0e85876d15690e47bced1da78efa65',1,'PIPacketExtractor']]], + ['setheader',['setHeader',['../class_p_i_packet_extractor.html#ab35777c26316da887e36b0eeb56ef239',1,'PIPacketExtractor']]], + ['setinitialstate',['setInitialState',['../class_p_i_state_machine.html#a42b22e027a498659282a4838d576eb80',1,'PIStateMachine']]], + ['setinterval',['setInterval',['../class_p_i_timer.html#aceedb334c02e3ad05ec9215aa956b780',1,'PITimer']]], + ['setname',['setName',['../class_p_i_object.html#a8eb211f42dfcf7b7a1f32acabbfd6ada',1,'PIObject::setName()'],['../class_p_i_config_1_1_entry.html#a46ddf99ee1a724a9fb28d0947a4baf84',1,'PIConfig::Entry::setName()']]], + ['setnumber',['setNumber',['../class_p_i_string.html#a03446a900bdce8a41f5be7eee2c732d5',1,'PIString::setNumber(const short value, int base=10, bool *ok=0)'],['../class_p_i_string.html#a70bda23c245790c6a3b50f31a3200aa9',1,'PIString::setNumber(const ushort value, int base=10, bool *ok=0)'],['../class_p_i_string.html#a102c2fcdc4bb92141c01f2108e142991',1,'PIString::setNumber(const int value, int base=10, bool *ok=0)'],['../class_p_i_string.html#aaac03b6d596d958a8e256ccb0eb40f22',1,'PIString::setNumber(const uint value, int base=10, bool *ok=0)'],['../class_p_i_string.html#ad880c23247e4d79d44d215c883fcd766',1,'PIString::setNumber(const long value, int base=10, bool *ok=0)'],['../class_p_i_string.html#ada1c713c5622284efcc3ac1d89977161',1,'PIString::setNumber(const ulong value, int base=10, bool *ok=0)'],['../class_p_i_string.html#a2f54ca3f0ef9dde8df3fb488cbe33f7b',1,'PIString::setNumber(const llong &value, int base=10, bool *ok=0)'],['../class_p_i_string.html#aff868564bdb9e93d028bbe4b034ef74e',1,'PIString::setNumber(const ullong &value, int base=10, bool *ok=0)'],['../class_p_i_string.html#a8ee00154fbc549bd4d0035270001580a',1,'PIString::setNumber(const float value)'],['../class_p_i_string.html#a6fb55d9c34c56a3528303eb9f7419671',1,'PIString::setNumber(const double &value)'],['../class_p_i_string.html#a26f131487f10ee8a13769ae833f81fcb',1,'PIString::setNumber(const ldouble &value)']]], + ['setpacketsize',['setPacketSize',['../class_p_i_packet_extractor.html#a9c0b73a88a7ae8f4c724a4d99e34a783',1,'PIPacketExtractor']]], + ['setparameter',['setParameter',['../class_p_i_ethernet.html#a158851a3cde91615d8feaac4edb805fb',1,'PIEthernet']]], + ['setparameters',['setParameters',['../class_p_i_ethernet.html#aa2edcd2272537c2250b4542c09e7f5d2',1,'PIEthernet']]], + ['setpayloadsize',['setPayloadSize',['../class_p_i_packet_extractor.html#a0c0de7854ff8187b3cd280467a321ea5',1,'PIPacketExtractor']]], + ['setpriority',['setPriority',['../class_p_i_thread.html#ade6ddabe46917c5cef2f5da1dd613a69',1,'PIThread']]], + ['setproperty',['setProperty',['../class_p_i_object.html#a647e2f79b975cf88d636a2ca2dadfb9c',1,'PIObject']]], + ['setreadablesize',['setReadableSize',['../class_p_i_string.html#a08dad783a704578ab82b816f2cd02829',1,'PIString']]], + ['setreadaddress',['setReadAddress',['../class_p_i_ethernet.html#a4da57633bb41886a07a0a01139022ce9',1,'PIEthernet::setReadAddress(const PIString &ip, int port)'],['../class_p_i_ethernet.html#a76652ae5f391e8957c864be224d46937',1,'PIEthernet::setReadAddress(const PIString &ip_port)']]], + ['setreadip',['setReadIP',['../class_p_i_ethernet.html#a281ffec154f8a604da5f8e8494740b63',1,'PIEthernet']]], + ['setreadport',['setReadPort',['../class_p_i_ethernet.html#a13f17f1b0022b15d05879c0228bd4bba',1,'PIEthernet']]], + ['setreadtimeout',['setReadTimeout',['../class_p_i_ethernet.html#a414c18f256488c471093178137526776',1,'PIEthernet']]], + ['setsendaddress',['setSendAddress',['../class_p_i_ethernet.html#afa66a8ec37d66b17e0d1cf52dc3f9f00',1,'PIEthernet::setSendAddress(const PIString &ip, int port)'],['../class_p_i_ethernet.html#aa2f490fa2749860c2d8c58dd691e4663',1,'PIEthernet::setSendAddress(const PIString &ip_port)']]], + ['setsenderfixeddata',['setSenderFixedData',['../class_p_i_connection.html#aa547b4a4e64e9adf0c7c45171160bded',1,'PIConnection']]], + ['setsendip',['setSendIP',['../class_p_i_ethernet.html#a5f90001f1f3b49da411421fc15256a5c',1,'PIEthernet']]], + ['setsendport',['setSendPort',['../class_p_i_ethernet.html#a0866eb6385dda7b6988b29fedc45fc48',1,'PIEthernet']]], + ['setslot',['setSlot',['../class_p_i_kbd_listener.html#a5e8285dbb2c1b04fffff36c6d7db1d84',1,'PIKbdListener::setSlot()'],['../class_p_i_thread.html#a85c22bf31dae02180827f2952e3594ee',1,'PIThread::setSlot()'],['../class_p_i_timer.html#ae55067d29d1491c6e583ca8db45fd0ba',1,'PITimer::setSlot()']]], + ['setsplitmode',['setSplitMode',['../class_p_i_packet_extractor.html#aaa8b6f0d301cd7b73fc6e9570462b6a1',1,'PIPacketExtractor']]], + ['settab',['setTab',['../class_p_i_console.html#afbe2d5ae830d8096e8506114221789f0',1,'PIConsole::setTab(uint index)'],['../class_p_i_console.html#ae4214666e5ae3752189a61d76c73b7ab',1,'PIConsole::setTab(const PIString &name)']]], + ['settabbindkey',['setTabBindKey',['../class_p_i_console.html#ae2abf8fd9b17252e057852fa912565e9',1,'PIConsole::setTabBindKey(uint index, char bind_key)'],['../class_p_i_console.html#ad0826c4d2e8a1e4a1ddff1ad4df355b6',1,'PIConsole::setTabBindKey(const PIString &name, char bind_key)']]], + ['settimeout',['setTimeout',['../class_p_i_packet_extractor.html#ade4301e8cad37f9a2c887913a3b1a69e',1,'PIPacketExtractor']]], + ['settype',['setType',['../class_p_i_config_1_1_entry.html#a8d18745edbfecaf560ee5d7b65dd8aa8',1,'PIConfig::Entry']]], + ['setvalue',['setValue',['../class_p_i_variant.html#aa22bd1cc0c6999120bb3820407a8856d',1,'PIVariant::setValue(const char *v)'],['../class_p_i_variant.html#a7b5d811efd852064247c7f3b98589481',1,'PIVariant::setValue(const bool v)'],['../class_p_i_variant.html#a79fff573e5cc711dfd406cc1b669d6b8',1,'PIVariant::setValue(const char v)'],['../class_p_i_variant.html#a5a8568a8de98e912570d98ebdff9152a',1,'PIVariant::setValue(const uchar v)'],['../class_p_i_variant.html#abe151f6ec7620f2222690c3c1af39f5b',1,'PIVariant::setValue(const short v)'],['../class_p_i_variant.html#a49a9d2ccbb6a1b37ba985ef490f2b7d6',1,'PIVariant::setValue(const ushort v)'],['../class_p_i_variant.html#a5eedf14579aa37e4bd2ab018234569c5',1,'PIVariant::setValue(const int &v)'],['../class_p_i_variant.html#a2a7a792167f163f11c516a39ff91e6ff',1,'PIVariant::setValue(const uint &v)'],['../class_p_i_variant.html#ab8cf4fe353f70dd45489ad9b1c50f9d4',1,'PIVariant::setValue(const long &v)'],['../class_p_i_variant.html#a4255c426d7e88890c8e57794ff0abd09',1,'PIVariant::setValue(const ulong &v)'],['../class_p_i_variant.html#ab517be43715e8ae0f7dcbd17f16c95bc',1,'PIVariant::setValue(const llong &v)'],['../class_p_i_variant.html#abd64b1243486bf3ff8878652b9505d4f',1,'PIVariant::setValue(const ullong &v)'],['../class_p_i_variant.html#a13630b2d2dfdc27107bf357b251e0c80',1,'PIVariant::setValue(const float &v)'],['../class_p_i_variant.html#ab86b97b9877912321941535949a15598',1,'PIVariant::setValue(const double &v)'],['../class_p_i_variant.html#af319e808795d029290f1f687d5d6627d',1,'PIVariant::setValue(const ldouble &v)'],['../class_p_i_variant.html#ad5831d2dd7d2c7d4f570396acbef007b',1,'PIVariant::setValue(const complexd &v)'],['../class_p_i_variant.html#a8ab2f1166f8db46e6e68e141ee8d4063',1,'PIVariant::setValue(const complexld &v)'],['../class_p_i_variant.html#aa29e76a4b699e244e3a6679b180c30e3',1,'PIVariant::setValue(const PIBitArray &v)'],['../class_p_i_variant.html#a6c3abdf7e5d0eebe4506c8430f509ad8',1,'PIVariant::setValue(const PIByteArray &v)'],['../class_p_i_variant.html#adb68d9f360dc5f60e4e9442da7c983ef',1,'PIVariant::setValue(const PIString &v)'],['../class_p_i_variant.html#a8b664f935ad023991ee626df2abac13e',1,'PIVariant::setValue(const PIStringList &v)'],['../class_p_i_variant.html#a09c393e5e299848c8e1d06c0497bce44',1,'PIVariant::setValue(const PITime &v)'],['../class_p_i_variant.html#a9dbf3e639c99af1780f9c753822d5034',1,'PIVariant::setValue(const PIDate &v)'],['../class_p_i_variant.html#a39d61e31968269464f6023ecd1645241',1,'PIVariant::setValue(const PIDateTime &v)'],['../class_p_i_variant.html#a0f176cc2e51a5ab7e8a275a71f5166c3',1,'PIVariant::setValue(const PISystemTime &v)'],['../class_p_i_config_1_1_entry.html#ab853f549061be73216c6cf9a3b35eb2e',1,'PIConfig::Entry::setValue(const PIString &value)'],['../class_p_i_config_1_1_entry.html#aaa54ae0f45ed6a9a831859bc2f23d19b',1,'PIConfig::Entry::setValue(const PIStringList &value)'],['../class_p_i_config_1_1_entry.html#a6b61be4474ee644b3481c5990ef6f6a9',1,'PIConfig::Entry::setValue(const char *value)'],['../class_p_i_config_1_1_entry.html#a25ef9be02eebed805878cfa0e8e8d1f0',1,'PIConfig::Entry::setValue(const bool value)'],['../class_p_i_config_1_1_entry.html#af7b9092abef7e1817620d87ab77990fc',1,'PIConfig::Entry::setValue(const char value)'],['../class_p_i_config_1_1_entry.html#aa40ae09f7d30dcc31233d0a9a8311fe7',1,'PIConfig::Entry::setValue(const short value)'],['../class_p_i_config_1_1_entry.html#a163fe43914c955a72141519d4b7a456a',1,'PIConfig::Entry::setValue(const int value)'],['../class_p_i_config_1_1_entry.html#a9c4b2139fbf28d9950781a52e1c97bc0',1,'PIConfig::Entry::setValue(const long value)'],['../class_p_i_config_1_1_entry.html#a1fa1e3d6caff65808f19b9ee95950154',1,'PIConfig::Entry::setValue(const uchar value)'],['../class_p_i_config_1_1_entry.html#a7258173c103a96454f171177692d8d28',1,'PIConfig::Entry::setValue(const ushort value)'],['../class_p_i_config_1_1_entry.html#a37ae1f65fcf05808e1327b8ccba1ca38',1,'PIConfig::Entry::setValue(const uint value)'],['../class_p_i_config_1_1_entry.html#a34288a020a8a8eac9ec8d96be22d4456',1,'PIConfig::Entry::setValue(const ulong value)'],['../class_p_i_config_1_1_entry.html#a4c2e5bcbae8fc94d6a02099019dea723',1,'PIConfig::Entry::setValue(const float value)'],['../class_p_i_config_1_1_entry.html#a1fb68e7559ea156c0ad3a1477713d901',1,'PIConfig::Entry::setValue(const double value)'],['../class_p_i_config.html#a21a16d4652c57e310f9e4eb4e40dea39',1,'PIConfig::setValue(const PIString &name, const PIString &value, const PIString &type="s", bool write=true)'],['../class_p_i_config.html#ab0fd0d0f7932d805655908447dddf4ea',1,'PIConfig::setValue(const PIString &name, const PIStringList &value, bool write=true)'],['../class_p_i_config.html#ab321f10c0a70bb1e357a09879431b08c',1,'PIConfig::setValue(const PIString &name, const char *value, bool write=true)'],['../class_p_i_config.html#a47fd7b93880a60ceabaa95401fc006c9',1,'PIConfig::setValue(const PIString &name, const bool value, bool write=true)'],['../class_p_i_config.html#a05152c400b1bcc94154ce54050dfbdd8',1,'PIConfig::setValue(const PIString &name, const short value, bool write=true)'],['../class_p_i_config.html#a11affac002d95972f7023bb02a580d2c',1,'PIConfig::setValue(const PIString &name, const int value, bool write=true)'],['../class_p_i_config.html#acdac45e85e5a9e48301bb66f5e596237',1,'PIConfig::setValue(const PIString &name, const long value, bool write=true)'],['../class_p_i_config.html#aa92620b2af384471e86ed5095643d10a',1,'PIConfig::setValue(const PIString &name, const uchar value, bool write=true)'],['../class_p_i_config.html#a2252cdecef6f23dd22f68482ad2f3aa8',1,'PIConfig::setValue(const PIString &name, const ushort value, bool write=true)'],['../class_p_i_config.html#a727a3a4efbd6d4bd10592acb2e94b35c',1,'PIConfig::setValue(const PIString &name, const uint value, bool write=true)'],['../class_p_i_config.html#ad94dcedcb0e7e08e68729cba293342ff',1,'PIConfig::setValue(const PIString &name, const ulong value, bool write=true)'],['../class_p_i_config.html#ac99bcbe1e6656c15481d2b4e7a6aacae',1,'PIConfig::setValue(const PIString &name, const float value, bool write=true)'],['../class_p_i_config.html#aa45477274950fc3b50f5e6ece6299c7a',1,'PIConfig::setValue(const PIString &name, const double value, bool write=true)']]], + ['setvariable',['setVariable',['../class_p_i_evaluator.html#a066713e986ccf0abbdffc1dd4ab8a487',1,'PIEvaluator::setVariable(const PIString &name, complexd value=0.)'],['../class_p_i_evaluator.html#ad83802b50958b28193a523144b7e8d55',1,'PIEvaluator::setVariable(int index, complexd value=0.)']]], + ['setwritetimeout',['setWriteTimeout',['../class_p_i_ethernet.html#ae15ac03c2fdcab779650759b932c4660',1,'PIEthernet']]], + ['size',['size',['../class_p_i_vector.html#a5568ad6d26f2392f0a08b6c425774978',1,'PIVector']]], + ['size_5fs',['size_s',['../class_p_i_vector.html#a9c4a32a229a287b5c03b99e58cdb62ee',1,'PIVector']]], + ['sleep',['sleep',['../class_p_i_system_time.html#ad290b000832a523754c315404b36ce9b',1,'PISystemTime']]], + ['sort',['sort',['../class_p_i_vector.html#ad05af044be450c64a351df48a96fea97',1,'PIVector']]], + ['space',['space',['../class_p_i_cout.html#a3ca9fbac2890b6385fa47dc8c6ab189b',1,'PICout']]], + ['split',['split',['../class_p_i_string.html#a2befe83e46b8e3764236445132ec023a',1,'PIString']]], + ['splitmode',['splitMode',['../class_p_i_packet_extractor.html#aea556fb1df7074461b7df1e3afa347b9',1,'PIPacketExtractor']]], + ['start',['start',['../class_p_i_connection.html#a296ce68f2f85085bf4ecfb71580587c4',1,'PIConnection::start()'],['../class_p_i_diagnostics.html#a1773afb624fe79976ad9385705f24d02',1,'PIDiagnostics::start()'],['../class_p_i_console.html#a3d5a998c901b37e73c105754135de73f',1,'PIConsole::start()'],['../class_p_i_thread.html#a5fb7161b42840be7fb2f738046887b39',1,'PIThread::start(int timer_delay)'],['../class_p_i_thread.html#a38785bbce4ef9afb7116cea78beffa08',1,'PIThread::start(ThreadFunc func, int timer_delay)'],['../class_p_i_timer.html#afbe09c4d09f0dc897045037c1042cd70',1,'PITimer::start()'],['../class_p_i_timer.html#a9e4971a2f541ebac94057a61046667ce',1,'PITimer::start(int interval_ms_i)'],['../class_p_i_timer.html#a65431888fc569599e6b3ff27c1617e00',1,'PITimer::start(double interval_ms_d)']]], + ['startallsenders',['startAllSenders',['../class_p_i_connection.html#ab4cb20685c610275c31c4c1a4e4de9c6',1,'PIConnection']]], + ['startallthreadedreads',['startAllThreadedReads',['../class_p_i_connection.html#aa0319a04d2b0a72809347b556fbde478',1,'PIConnection']]], + ['started',['started',['../class_p_i_thread.html#a6b91eb8632e75e0f00a625f28a0bedd1',1,'PIThread']]], + ['startonce',['startOnce',['../class_p_i_thread.html#a44a9fe015ea8288a0a336b614ff2962b',1,'PIThread::startOnce()'],['../class_p_i_thread.html#ad50035fe7d3a2557178b6b46f6fa4861',1,'PIThread::startOnce(ThreadFunc func)']]], + ['startsender',['startSender',['../class_p_i_connection.html#ae21103d16eb22cefe68cf5f237f2052a',1,'PIConnection']]], + ['startswith',['startsWith',['../class_p_i_string.html#a273612208fcf37a4075e517eba410920',1,'PIString']]], + ['startthreadedread',['startThreadedRead',['../class_p_i_connection.html#a0172eca55562a296daa6e971d879443d',1,'PIConnection::startThreadedRead(const PIString &full_path)'],['../class_p_i_connection.html#acb0bfcc3c1e36d1d9881e31a331e2d59',1,'PIConnection::startThreadedRead(const PIIODevice *dev)']]], + ['state',['State',['../struct_p_i_state_machine_1_1_state.html#a04544461dd2553e8b275bda02c7ba728',1,'PIStateMachine::State::State()'],['../struct_p_i_state_machine_1_1_state.html#a85a5ee0d2f96d24beb3eb1c6c900dfa9',1,'PIStateMachine::State::State(Type v, const PIString &n="", Handler h=0)']]], + ['statescount',['statesCount',['../class_p_i_state_machine.html#ab0e424ab27e2edca90cdf1c368f4686f',1,'PIStateMachine']]], + ['stdstring',['stdString',['../class_p_i_string.html#a16e633f140ce9fd27fdddd2369261721',1,'PIString']]], + ['stop',['stop',['../class_p_i_connection.html#afd9148e6424e609eff5e42e456788533',1,'PIConnection::stop()'],['../class_p_i_console.html#afd53d4f09d0bad958f0d2073f56d47c5',1,'PIConsole::stop()'],['../class_p_i_thread.html#a37e179466edd8011aca3a07e10153e62',1,'PIThread::stop()'],['../class_p_i_timer.html#ae43b33b748524fbef3ec5ad705977737',1,'PITimer::stop()']]], + ['stopallsenders',['stopAllSenders',['../class_p_i_connection.html#a96a185e9d93134b8d092265c230158a3',1,'PIConnection']]], + ['stopallthreadedreads',['stopAllThreadedReads',['../class_p_i_connection.html#a48c592b6ce3b7d629a379d3858d3fcfa',1,'PIConnection']]], + ['stopped',['stopped',['../class_p_i_thread.html#aa6350430814f777fdce81f99cbba4c1a',1,'PIThread']]], + ['stopsender',['stopSender',['../class_p_i_connection.html#ab2021a8aadf16591b52196a368700ba6',1,'PIConnection']]], + ['stopthreadedread',['stopThreadedRead',['../class_p_i_connection.html#a57f58250839c50d221d32f8d1fb62737',1,'PIConnection::stopThreadedRead(const PIString &full_path)'],['../class_p_i_connection.html#a5ca12246273a1871fe6c53d535f7ab7f',1,'PIConnection::stopThreadedRead(const PIIODevice *dev)']]], + ['superclassname',['superClassName',['../class_p_i_object.html#a41060ba64a882ef4c3b24dc868c5635c',1,'PIObject']]], + ['switchtostate',['switchToState',['../class_p_i_state_machine.html#af4aa7b86c70425bfc9690e4c27ab6cf7',1,'PIStateMachine']]] +]; diff --git a/pip/doc/html/search/functions_14.html b/pip/doc/html/search/functions_14.html new file mode 100644 index 0000000..e646583 --- /dev/null +++ b/pip/doc/html/search/functions_14.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/functions_14.js b/pip/doc/html/search/functions_14.js new file mode 100644 index 0000000..2b009e1 --- /dev/null +++ b/pip/doc/html/search/functions_14.js @@ -0,0 +1,62 @@ +var searchData= +[ + ['tabscount',['tabsCount',['../class_p_i_console.html#a6e1080918dd4d36347fe8e47318a5761',1,'PIConsole']]], + ['take_5fback',['take_back',['../class_p_i_vector.html#ae951eefed7d44357b714224d9f4558b1',1,'PIVector']]], + ['take_5ffront',['take_front',['../class_p_i_vector.html#a69dbb89bfade5d2c6e4ad18c9a33f718',1,'PIVector']]], + ['takecword',['takeCWord',['../class_p_i_string.html#a15391624f236a1c0bf2b1f6c90a42027',1,'PIString']]], + ['takeleft',['takeLeft',['../class_p_i_string.html#abe1d54c60781701c390712193e775129',1,'PIString']]], + ['takeline',['takeLine',['../class_p_i_string.html#a32449c92418db399e96faeb0e67ce6b8',1,'PIString']]], + ['takemid',['takeMid',['../class_p_i_string.html#a923862dee9a73d4fe229f9c7106dd2c3',1,'PIString']]], + ['takenumber',['takeNumber',['../class_p_i_string.html#a39c2f4b34d43c3f2dd2c85eb37959cba',1,'PIString']]], + ['takerange',['takeRange',['../class_p_i_string.html#ada971d7b12743e827811e124c7bb2809',1,'PIString']]], + ['takeright',['takeRight',['../class_p_i_string.html#ab06270cc3639a716d77747f6e0e65a73',1,'PIString']]], + ['takesymbol',['takeSymbol',['../class_p_i_string.html#a2717788f206607e15afa2eaa2466f2fb',1,'PIString']]], + ['takeword',['takeWord',['../class_p_i_string.html#a66dfa56b97db69f1b3046bfed79d8dd9',1,'PIString']]], + ['terminate',['terminate',['../class_p_i_thread.html#a2004de7b6aa59ecb50321571b932ec20',1,'PIThread']]], + ['threadedread',['threadedRead',['../class_p_i_binary_log.html#a78ea56ff4489d441205ded106c63966e',1,'PIBinaryLog::threadedRead()'],['../class_p_i_i_o_device.html#a3c744704af365358af074e1089e20068',1,'PIIODevice::threadedRead()']]], + ['tick',['tick',['../class_p_i_state_machine.html#a37e8b9df953d6948e84d061bc02e5903',1,'PIStateMachine::tick()'],['../class_p_i_state_machine.html#a6a262d1d71be95b5b5d4f5d7b276c8f7',1,'PIStateMachine::tick(void *data, int delim)'],['../class_p_i_timer.html#af94038669f0798c21cc2208da9945406',1,'PITimer::tick()']]], + ['tickevent',['tickEvent',['../class_p_i_timer.html#a707cb908c36f42dab13338c42ede4a81',1,'PITimer']]], + ['timeout',['timeout',['../class_p_i_packet_extractor.html#a369b3bfd48065cf9da70788015d6d020',1,'PIPacketExtractor']]], + ['tobase64',['toBase64',['../class_p_i_byte_array.html#afa9bf40116570c11328f117849180f7f',1,'PIByteArray']]], + ['tobitarray',['toBitArray',['../class_p_i_variant.html#a0b4708bac5608fa3676bf409b76b5d23',1,'PIVariant']]], + ['tobool',['toBool',['../class_p_i_string.html#ab347fe3a167a3a101e5028cc76826353',1,'PIString::toBool()'],['../class_p_i_variant.html#a9adb44018cf731bad2b7dcce2dde3684',1,'PIVariant::toBool()']]], + ['tobytearray',['toByteArray',['../class_p_i_string.html#a6438ae63b451975a06699c2c6c02221a',1,'PIString::toByteArray()'],['../class_p_i_variant.html#acadd0aee889bc4bd59fdd8bae13410df',1,'PIVariant::toByteArray()']]], + ['tochar',['toChar',['../class_p_i_string.html#a33520b70a2236d83f50d5b028497db65',1,'PIString']]], + ['tocharptr',['toCharPtr',['../class_p_i_char.html#a9baee39596206d0977ebfb5e3d12f810',1,'PIChar']]], + ['tocomplexd',['toComplexd',['../class_p_i_variant.html#a95a6405618b51ea226fc1aa788ad2a90',1,'PIVariant']]], + ['tocomplexld',['toComplexld',['../class_p_i_variant.html#a02ed61b14e6a9c71510d5c4f05d218c4',1,'PIVariant']]], + ['todate',['toDate',['../class_p_i_variant.html#af533ce32863a9954e7d761ef56ab582b',1,'PIVariant']]], + ['todatetime',['toDateTime',['../class_p_i_variant.html#a99afae3218f68cc74bda4af6baa467d4',1,'PIVariant']]], + ['todouble',['toDouble',['../class_p_i_string.html#a8a9720daaf84455e7a839a5b8bcf6fa7',1,'PIString::toDouble()'],['../class_p_i_variant.html#a3f92e859630f5c853c644b494a194798',1,'PIVariant::toDouble()']]], + ['tofloat',['toFloat',['../class_p_i_string.html#a4525841adcb8929e486e61d499430559',1,'PIString::toFloat()'],['../class_p_i_variant.html#a7765fde4363c83ef630ca53ea23b447f',1,'PIVariant::toFloat()']]], + ['toint',['toInt',['../class_p_i_string.html#aebe1038b3abcbf976dbffc3f3b0de826',1,'PIString::toInt()'],['../class_p_i_variant.html#aef7526f9ffb911ac818c13a4fa8de923',1,'PIVariant::toInt()']]], + ['toldouble',['toLDouble',['../class_p_i_string.html#af2739348013dfcd75ce88acafafcce73',1,'PIString::toLDouble()'],['../class_p_i_variant.html#aa101193f0a15d6232a8ab6ed39dfcd66',1,'PIVariant::toLDouble()']]], + ['tollong',['toLLong',['../class_p_i_string.html#a18023a92bd2ba5a90dc014cbfd77bc9c',1,'PIString::toLLong()'],['../class_p_i_variant.html#ad6f468658cc0803d7ec532c8ebaf394e',1,'PIVariant::toLLong()']]], + ['tolong',['toLong',['../class_p_i_string.html#a32e0cd5008be019860da2be3c136f9ce',1,'PIString']]], + ['tolower',['toLower',['../class_p_i_char.html#a0d4ae4c2e8e77e21762121f82be79a2e',1,'PIChar']]], + ['tolowercase',['toLowerCase',['../class_p_i_string.html#a658e07bdbf43996c39f545218122989b',1,'PIString']]], + ['tomicroseconds',['toMicroseconds',['../class_p_i_system_time.html#a0cb8a1a609186771ad619620d01c0544',1,'PISystemTime']]], + ['tomilliseconds',['toMilliseconds',['../class_p_i_system_time.html#aff38007b354d3420f25a5d37640e1bf5',1,'PISystemTime']]], + ['tonanoseconds',['toNanoseconds',['../class_p_i_system_time.html#a7732f3585eab387d80eaa3d68b620bc4',1,'PISystemTime']]], + ['toseconds',['toSeconds',['../class_p_i_system_time.html#a296f501657919b2d66747abb82f606cb',1,'PISystemTime']]], + ['toshort',['toShort',['../class_p_i_string.html#a03aa66b2e10d725f8c5310bdec3a9b76',1,'PIString']]], + ['tostring',['toString',['../class_p_i_variant.html#ae9b75422814a712a2c52ecfe19ca13ba',1,'PIVariant']]], + ['tostringlist',['toStringList',['../class_p_i_variant.html#a734a89a0951763bbdeae2cf16004684d',1,'PIVariant']]], + ['tosystemtime',['toSystemTime',['../class_p_i_variant.html#af353cc0fba770fceb61a0dfa4d87eba7',1,'PIVariant']]], + ['totime',['toTime',['../class_p_i_variant.html#a5b25bc3f783d63dad8ee68720dbfa9ed',1,'PIVariant']]], + ['touint',['toUInt',['../class_p_i_string.html#aa243f8732d1ce3187329642025c49623',1,'PIString']]], + ['toullong',['toULLong',['../class_p_i_string.html#a15475a9e2b65a70208534431ee28f75a',1,'PIString']]], + ['toulong',['toULong',['../class_p_i_string.html#a75630ad632c3887e0ec7daf850a4281a',1,'PIString']]], + ['toupper',['toUpper',['../class_p_i_char.html#a48a9400b58447e7a492d346dd75ef09c',1,'PIChar']]], + ['touppercase',['toUpperCase',['../class_p_i_string.html#a54e5e2c6fcf1869228b3fb48a9a8bae1',1,'PIString']]], + ['toushort',['toUShort',['../class_p_i_string.html#a6ab34efa2cf190bfa8309d140308e8eb',1,'PIString']]], + ['tovalue',['toValue',['../class_p_i_variant.html#a5b1b4af9ab4bdd8c5bda7a8223a6b6f5',1,'PIVariant']]], + ['tovector',['toVector',['../class_p_i_set.html#aa922f639869b9556b0ade5a4099fe0de',1,'PISet']]], + ['transition',['transition',['../class_p_i_state_machine.html#ad848623075776b802de3fc22b4a08cea',1,'PIStateMachine']]], + ['trim',['trim',['../class_p_i_string.html#a83a888181b131ccff5854c080ef706ba',1,'PIString::trim()'],['../class_p_i_string_list.html#aebcbef8d88b0081f7081a23331f66364',1,'PIStringList::trim()']]], + ['trimmed',['trimmed',['../class_p_i_string.html#ab1050c0603206d40ec0a1a315cc87ca6',1,'PIString']]], + ['trylock',['tryLock',['../class_p_i_mutex.html#a5c4ed063c5c7d7ee94ff3402d320851a',1,'PIMutex']]], + ['type',['type',['../class_p_i_variant.html#abc974cec179287663d03da76fac7f928',1,'PIVariant::type()'],['../class_p_i_config_1_1_entry.html#af1fcf69cc6be42f06468f59aa2614fb8',1,'PIConfig::Entry::type()'],['../class_p_i_ethernet.html#af42a7ca0266f28bc9a389aca1618f43f',1,'PIEthernet::type()']]], + ['typefromname',['typeFromName',['../class_p_i_variant.html#ab3cdcbbf04745c775c2090b268f54d35',1,'PIVariant']]], + ['typename',['typeName',['../class_p_i_variant.html#ad349e0701add42efffd83fb19dee1216',1,'PIVariant::typeName() const '],['../class_p_i_variant.html#a36b38e5f7e13d1bb3f205a9ff0673490',1,'PIVariant::typeName(PIVariant::Type type)']]] +]; diff --git a/pip/doc/html/search/functions_15.html b/pip/doc/html/search/functions_15.html new file mode 100644 index 0000000..06140ae --- /dev/null +++ b/pip/doc/html/search/functions_15.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/functions_15.js b/pip/doc/html/search/functions_15.js new file mode 100644 index 0000000..028cb9f --- /dev/null +++ b/pip/doc/html/search/functions_15.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['unknownvariables',['unknownVariables',['../class_p_i_evaluator.html#a7d1a1ce4eea722fde90e487f397cd25c',1,'PIEvaluator']]], + ['unlock',['unlock',['../class_p_i_mutex.html#aae483d17150e38436ca25a1bd26b04c2',1,'PIMutex::unlock()'],['../class_p_i_thread.html#a82baf1fe4608234ba76b68540100ee73',1,'PIThread::unlock()']]] +]; diff --git a/pip/doc/html/search/functions_16.html b/pip/doc/html/search/functions_16.html new file mode 100644 index 0000000..4f8113f --- /dev/null +++ b/pip/doc/html/search/functions_16.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/functions_16.js b/pip/doc/html/search/functions_16.js new file mode 100644 index 0000000..9358c2e --- /dev/null +++ b/pip/doc/html/search/functions_16.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['validatefooter',['validateFooter',['../class_p_i_packet_extractor.html#ad52e9d11097e5b1d846787fcd1acb5ed',1,'PIPacketExtractor']]], + ['validateheader',['validateHeader',['../class_p_i_packet_extractor.html#a96d2078759a69327089faeb37e09bf69',1,'PIPacketExtractor']]], + ['validatepayload',['validatePayload',['../class_p_i_packet_extractor.html#ab1b8d323e26be97a126f3950e37ba647',1,'PIPacketExtractor']]], + ['value',['value',['../class_p_i_config_1_1_entry.html#a247679755f333bfd4398088122940ba3',1,'PIConfig::Entry']]], + ['variableindex',['variableIndex',['../class_p_i_evaluator.html#ac20bb44234749ce227df1b95fcc319ae',1,'PIEvaluator']]] +]; diff --git a/pip/doc/html/search/functions_17.html b/pip/doc/html/search/functions_17.html new file mode 100644 index 0000000..73c512f --- /dev/null +++ b/pip/doc/html/search/functions_17.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/functions_17.js b/pip/doc/html/search/functions_17.js new file mode 100644 index 0000000..f4fcc30 --- /dev/null +++ b/pip/doc/html/search/functions_17.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['waitforfinish',['waitForFinish',['../class_p_i_console.html#ad0a588d352faf1bb39cba0bea8b8d0c0',1,'PIConsole::waitForFinish()'],['../class_p_i_thread.html#ae325266c7f3484ad52c0a5c690cc222c',1,'PIThread::waitForFinish()']]], + ['waitforstart',['waitForStart',['../class_p_i_thread.html#a8bcffcc0d12bdd6d8ddd455a15241313',1,'PIThread']]], + ['write',['write',['../class_p_i_connection.html#a37960527c1357e6e2e58e2656c21719b',1,'PIConnection::write(const PIString &full_path, const PIByteArray &data)'],['../class_p_i_connection.html#ad659e36901a3b7c1724325c74473157f',1,'PIConnection::write(const PIIODevice *dev, const PIByteArray &data)'],['../class_p_i_ethernet.html#a06c2ca73668cbdefc9fad4749b465ff0',1,'PIEthernet::write(const void *data, int max_size)'],['../class_p_i_ethernet.html#a9dbe618372c2ad3f5a5e02b638b2aaf1',1,'PIEthernet::write(const PIByteArray &data)'],['../class_p_i_packet_extractor.html#aa3348c0df86c7de38ab6cfc02f3cfa2b',1,'PIPacketExtractor::write()'],['../class_p_i_serial.html#a544a191409e7088b1c7e6a35844c8f7b',1,'PISerial::write()']]], + ['writeall',['writeAll',['../class_p_i_config.html#a7d228b9feed1e5a301da526ea4cd4d01',1,'PIConfig']]], + ['writetimeout',['writeTimeout',['../class_p_i_ethernet.html#a377813eb8c2b6c223a543ce8a001ef99',1,'PIEthernet']]], + ['wrongcount',['wrongCount',['../class_p_i_diagnostics.html#a92a18a79947e0322f67d74c045c71682',1,'PIDiagnostics']]], + ['wrongcount_5fptr',['wrongCount_ptr',['../class_p_i_diagnostics.html#adbacd5ebed2dabee1c44f5c2cd8ce48d',1,'PIDiagnostics']]] +]; diff --git a/pip/doc/html/search/functions_2.html b/pip/doc/html/search/functions_2.html new file mode 100644 index 0000000..152b4ed --- /dev/null +++ b/pip/doc/html/search/functions_2.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/functions_2.js b/pip/doc/html/search/functions_2.js new file mode 100644 index 0000000..96feae4 --- /dev/null +++ b/pip/doc/html/search/functions_2.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['back',['back',['../class_p_i_vector.html#afb5b4f1521561b82ef18a740b89f3838',1,'PIVector::back()'],['../class_p_i_vector.html#ab6419acbdf9f34da326890b61a6b6888',1,'PIVector::back() const ']]], + ['begin',['begin',['../class_p_i_thread.html#a70d5c858e8b7144280b8b216304ce1d0',1,'PIThread']]], + ['boundeddevices',['boundedDevices',['../class_p_i_connection.html#a6efb56a368a5498f63b5c6e15dfebcf9',1,'PIConnection']]], + ['buffersize',['bufferSize',['../class_p_i_packet_extractor.html#ab9598fdc2e3a641a4d1b4a5c7b62313f',1,'PIPacketExtractor']]] +]; diff --git a/pip/doc/html/search/functions_3.html b/pip/doc/html/search/functions_3.html new file mode 100644 index 0000000..3c01efa --- /dev/null +++ b/pip/doc/html/search/functions_3.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/functions_3.js b/pip/doc/html/search/functions_3.js new file mode 100644 index 0000000..3900cea --- /dev/null +++ b/pip/doc/html/search/functions_3.js @@ -0,0 +1,41 @@ +var searchData= +[ + ['channels',['channels',['../class_p_i_connection.html#a9b6d693bd94c74a09b3374cbc9bbf65c',1,'PIConnection']]], + ['check',['check',['../class_p_i_evaluator.html#a1eae7848dc5d9d740a18acf4538ec34f',1,'PIEvaluator']]], + ['checksumplain32',['checksumPlain32',['../class_p_i_byte_array.html#acbf4fa4d378627d648f6634bbf08349d',1,'PIByteArray']]], + ['checksumplain8',['checksumPlain8',['../class_p_i_byte_array.html#aeec044f424697f902aa2903bc74a889c',1,'PIByteArray']]], + ['child',['child',['../class_p_i_config_1_1_entry.html#a873896bbb710a12d14f0164bb31abc56',1,'PIConfig::Entry']]], + ['childcount',['childCount',['../class_p_i_config_1_1_entry.html#a153b89897dc1f13847f7c2932a68bf9d',1,'PIConfig::Entry']]], + ['children',['children',['../class_p_i_config_1_1_entry.html#ab3009e4da745a3657a0e21f1b37b617d',1,'PIConfig::Entry']]], + ['classname',['className',['../class_p_i_object.html#a5da8208d12e37e5277db308939208150',1,'PIObject']]], + ['clear',['clear',['../class_p_i_vector.html#a1eac8cb055835b44a4d7b718e976fbc3',1,'PIVector::clear()'],['../class_p_i_config.html#a5183a5859cd1006d4e93bf007b28fd2b',1,'PIConfig::clear()']]], + ['clearcustomstatus',['clearCustomStatus',['../class_p_i_console.html#ac2fa6d3e2f715e709c24c557847d0a1c',1,'PIConsole']]], + ['clearcustomvariables',['clearCustomVariables',['../class_p_i_evaluator.html#aa96ba5c4174592341d65eaebffd7fece',1,'PIEvaluator']]], + ['cleardelimiters',['clearDelimiters',['../class_p_i_timer.html#a2968d6a3aefc4c609cbeaf9f301a41f9',1,'PITimer']]], + ['clearrules',['clearRules',['../class_p_i_state_machine.html#a1e44d3e3cacd745413e84272993a6407',1,'PIStateMachine']]], + ['clearsenderfixeddata',['clearSenderFixedData',['../class_p_i_connection.html#aea2898a9729c594ab7bd174425ae8dcf',1,'PIConnection']]], + ['clearstates',['clearStates',['../class_p_i_state_machine.html#a18bceb62d18013df1459c3bb442eb7e8',1,'PIStateMachine']]], + ['cleartabs',['clearTabs',['../class_p_i_console.html#aa098e8d9cdc197ce608ff8cd617bab63',1,'PIConsole']]], + ['clearvariables',['clearVariables',['../class_p_i_console.html#aec823e3d7ef7045298efbab12489b239',1,'PIConsole']]], + ['closedevice',['closeDevice',['../class_p_i_binary_log.html#a3a3e8054f70c230c2d1b04b7ddead5d4',1,'PIBinaryLog::closeDevice()'],['../class_p_i_ethernet.html#a5229b3d4d175a6144a189a7204e02204',1,'PIEthernet::closeDevice()'],['../class_p_i_file.html#ad3d944f75bbda0f14f2d9549d92ca614',1,'PIFile::closeDevice()'],['../class_p_i_i_o_device.html#aaf041ac27ee2b9af4828fbe2f4b5b1e2',1,'PIIODevice::closeDevice()'],['../class_p_i_serial.html#aa8f0b19f15100b7bc01c6f87b1eaa587',1,'PISerial::closeDevice()']]], + ['comment',['comment',['../class_p_i_config_1_1_entry.html#ae80c7013f86ad0be64811faa74a88a67',1,'PIConfig::Entry']]], + ['compare_5ffunc',['compare_func',['../class_p_i_vector.html#a3e72f0fc2245a55a29b1a1c3ce0d36e2',1,'PIVector']]], + ['configuredevice',['configureDevice',['../class_p_i_ethernet.html#af6a952895c0e75d5420b5671c929721a',1,'PIEthernet::configureDevice()'],['../class_p_i_i_o_device.html#ae7c5a2d7b6ea2409df4e200c8e4b8e32',1,'PIIODevice::configureDevice()'],['../class_p_i_serial.html#a6fa0f2c099da80fe406cd38b7e552d5b',1,'PISerial::configureDevice()']]], + ['configurefromconfig',['configureFromConfig',['../class_p_i_connection.html#a78a788e328f8ec243c8cd6f93aca47bd',1,'PIConnection']]], + ['configurefromfullpath',['configureFromFullPath',['../class_p_i_binary_log.html#ae728df2cfb529e5d3bee2c2a327503cc',1,'PIBinaryLog::configureFromFullPath()'],['../class_p_i_ethernet.html#a884e1f63790d644916fb54da4603ba2d',1,'PIEthernet::configureFromFullPath()'],['../class_p_i_file.html#a8f98ce9e7a6896b7c1dd0ca49a8eb49a',1,'PIFile::configureFromFullPath()'],['../class_p_i_i_o_device.html#aeb3edefa3b78b06e0f293936c15a74ab',1,'PIIODevice::configureFromFullPath()'],['../class_p_i_serial.html#a5c31bf29e311d1ea5e188adab37703e6',1,'PISerial::configureFromFullPath()']]], + ['connect',['connect',['../class_p_i_ethernet.html#ac09a74cc735c5e80e79b3f771a2a289c',1,'PIEthernet::connect()'],['../class_p_i_ethernet.html#a59b3f77ff2b8d62dacd6366a4d0879d3',1,'PIEthernet::connect(const PIString &ip, int port)'],['../class_p_i_ethernet.html#a262d31ac59d8a3539899be651a6e56e7',1,'PIEthernet::connect(const PIString &ip_port)']]], + ['connected',['connected',['../class_p_i_ethernet.html#a80df2b0b931858d93065fa32e1682bc7',1,'PIEthernet']]], + ['constructfullpath',['constructFullPath',['../class_p_i_ethernet.html#ac4bac35deda7848e7c16e770c64b08ee',1,'PIEthernet::constructFullPath()'],['../class_p_i_packet_extractor.html#acbeb7fa7bdb01b164ce81df601bcee23',1,'PIPacketExtractor::constructFullPath()']]], + ['contains',['contains',['../class_p_i_vector.html#a569226732df6c45066820db07e09c87d',1,'PIVector']]], + ['contentsize',['contentSize',['../class_p_i_string_list.html#ab1d6f27922acdb2de9e8b37cd20ccd50',1,'PIStringList']]], + ['convertfrombase64',['convertFromBase64',['../class_p_i_byte_array.html#a3dff2c2171ecbd1b12c0edc232648cf9',1,'PIByteArray']]], + ['converttobase64',['convertToBase64',['../class_p_i_byte_array.html#ae024450dbd082250560b168189a6f043',1,'PIByteArray']]], + ['current',['current',['../class_p_i_system_time.html#a9d1cc158167c09bb920ffdc9bf65ad51',1,'PISystemTime']]], + ['currentconditions',['currentConditions',['../class_p_i_state_machine.html#ab49ff1a9fc9b2a354cd5493a5fd3859a',1,'PIStateMachine']]], + ['currentstate',['currentState',['../class_p_i_state_machine.html#a2335fae60078ae68750df3ca50d95850',1,'PIStateMachine']]], + ['currentsystemtime',['currentSystemTime',['../pitime_8h.html#abcad1d713a692c67abf44720aff77abc',1,'pitime.h']]], + ['currenttab',['currentTab',['../class_p_i_console.html#a3261d123b00905e06226b828d7920001',1,'PIConsole']]], + ['cutleft',['cutLeft',['../class_p_i_string.html#a5e6ebd047f481f11bfc7aa5a599f84d9',1,'PIString']]], + ['cutmid',['cutMid',['../class_p_i_string.html#a1329bf4f870ef9417f30baf23a0589f9',1,'PIString']]], + ['cutright',['cutRight',['../class_p_i_string.html#a3f1dea63c0baead80b3700129c2837e3',1,'PIString']]] +]; diff --git a/pip/doc/html/search/functions_4.html b/pip/doc/html/search/functions_4.html new file mode 100644 index 0000000..c9e43d8 --- /dev/null +++ b/pip/doc/html/search/functions_4.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/functions_4.js b/pip/doc/html/search/functions_4.js new file mode 100644 index 0000000..f0af180 --- /dev/null +++ b/pip/doc/html/search/functions_4.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['data',['data',['../class_p_i_string.html#ac1f4d3aad27aa25a5e92f092d2890188',1,'PIString::data()'],['../class_p_i_evaluator.html#ac5d8118fce80c08a8ae3ad2215625839',1,'PIEvaluator::data()'],['../class_p_i_kbd_listener.html#a1b5584b91e3280213b61b31508127598',1,'PIKbdListener::data()'],['../class_p_i_thread.html#aa3c4138dc000e34fb74140d0a5be3afe',1,'PIThread::data()'],['../class_p_i_timer.html#abbe9a559d65b0be6980e77218a05cfe3',1,'PITimer::data()']]], + ['datareceived',['dataReceived',['../class_p_i_connection.html#a0646157ff90676be46c8e96a9dfce78f',1,'PIConnection']]], + ['datareceivedevent',['dataReceivedEvent',['../class_p_i_connection.html#afdec29f2680315ace29a8b8f1c445e00',1,'PIConnection']]], + ['debug',['debug',['../class_p_i_object.html#a286d39fdf2dacf8bc1f26c8744d8bf18',1,'PIObject']]], + ['defaultalignment',['defaultAlignment',['../class_p_i_console.html#a4e399e64818521932243ee8be392c649',1,'PIConsole']]], + ['delimiter',['delimiter',['../class_p_i_config.html#a3a2943350a0b2304ab8fee406ade16b9',1,'PIConfig']]], + ['device',['device',['../class_p_i_connection.html#a4bf1efff7318d598d0c47bb474869fe6',1,'PIConnection::device()'],['../class_p_i_packet_extractor.html#a8e926713a3505dd109176b2c572274c9',1,'PIPacketExtractor::device()']]], + ['diagnostic',['diagnostic',['../class_p_i_connection.html#a8331d46bea526c5f74958315d725e14b',1,'PIConnection::diagnostic(const PIString &full_path_name) const '],['../class_p_i_connection.html#a864db6b1ef3905ae761d249f69cbb12b',1,'PIConnection::diagnostic(const PIIODevice *dev) const ']]], + ['disableexitcapture',['disableExitCapture',['../class_p_i_console.html#af7d77f3929c0c0394b76274472141080',1,'PIConsole::disableExitCapture()'],['../class_p_i_kbd_listener.html#acd5b37d732168274a30c678e8373d0dd',1,'PIKbdListener::disableExitCapture()']]], + ['disconnected',['disconnected',['../class_p_i_ethernet.html#a0e7319514519c950760c760f605f330f',1,'PIEthernet']]], + ['disconnecttimeout',['disconnectTimeout',['../class_p_i_diagnostics.html#a58a112660b5a7545c6bb0bb1bf621822',1,'PIDiagnostics']]] +]; diff --git a/pip/doc/html/search/functions_5.html b/pip/doc/html/search/functions_5.html new file mode 100644 index 0000000..9e9d5c5 --- /dev/null +++ b/pip/doc/html/search/functions_5.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/functions_5.js b/pip/doc/html/search/functions_5.js new file mode 100644 index 0000000..cf06b87 --- /dev/null +++ b/pip/doc/html/search/functions_5.js @@ -0,0 +1,29 @@ +var searchData= +[ + ['elapsed',['elapsed',['../class_p_i_time_measurer.html#a9af8e8ee2231a6b62eea549c8d01d1d2',1,'PITimeMeasurer']]], + ['elapsed_5fm',['elapsed_m',['../class_p_i_time_measurer.html#a2421e0d7f623a3181683ad50957d72fe',1,'PITimeMeasurer']]], + ['elapsed_5fn',['elapsed_n',['../class_p_i_time_measurer.html#a7f0832742601a1c6c13e87aca6c9bdc0',1,'PITimeMeasurer']]], + ['elapsed_5fs',['elapsed_s',['../class_p_i_time_measurer.html#a49b04aae807b3d09dc25485f4e47da75',1,'PITimeMeasurer']]], + ['elapsed_5fsystem',['elapsed_system',['../class_p_i_time_measurer.html#a139cb50fc03ebaa88302b7a533d430a9',1,'PITimeMeasurer']]], + ['elapsed_5fsystem_5fm',['elapsed_system_m',['../class_p_i_time_measurer.html#a64fe61ea1ed7b7340a9ed48d7b7d36c1',1,'PITimeMeasurer']]], + ['elapsed_5fsystem_5fn',['elapsed_system_n',['../class_p_i_time_measurer.html#aba3453e037f3e76a909b458281891df1',1,'PITimeMeasurer']]], + ['elapsed_5fsystem_5fs',['elapsed_system_s',['../class_p_i_time_measurer.html#ae9dd5607001eaa7eff15a2b90d2d3eda',1,'PITimeMeasurer']]], + ['elapsed_5fsystem_5fu',['elapsed_system_u',['../class_p_i_time_measurer.html#abcb1951c39b87c0717ade5286dd69dcc',1,'PITimeMeasurer']]], + ['elapsed_5fu',['elapsed_u',['../class_p_i_time_measurer.html#aa00150de5e04b3c7256e620498182380',1,'PITimeMeasurer']]], + ['emitter',['emitter',['../class_p_i_object.html#a2f43644909496ba11ca294a67ed18deb',1,'PIObject']]], + ['enableexitcapture',['enableExitCapture',['../class_p_i_console.html#a54455e3349316eb52679b8d1f9b85f78',1,'PIConsole::enableExitCapture()'],['../class_p_i_kbd_listener.html#a15702f6822a016c0c44c3217ba1a27f8',1,'PIKbdListener::enableExitCapture()']]], + ['end',['end',['../class_p_i_thread.html#af6dacd35973ff834f007d0f6a40f6e9c',1,'PIThread']]], + ['endswith',['endsWith',['../class_p_i_string.html#a9e58076006c085e76b7a139f2b830a7a',1,'PIString']]], + ['enlarge',['enlarge',['../class_p_i_vector.html#a834ee327d55d935cefe8358169bc4aee',1,'PIVector']]], + ['entriescount',['entriesCount',['../class_p_i_config.html#a8ec38c6e59b7d57677ae410ea74d6121',1,'PIConfig']]], + ['error',['error',['../class_p_i_evaluator.html#ac3e87ff15b4b04240b133affaf09e72b',1,'PIEvaluator']]], + ['errorstring',['errorString',['../piincludes_8h.html#a0570da4d19817e08dcdd2490308c77c5',1,'piincludes.cpp']]], + ['etries',['etries',['../class_p_i_vector.html#a6339bac7482c915be6ed983388cfc275',1,'PIVector']]], + ['evaluate',['evaluate',['../class_p_i_evaluator.html#abc6012ab974a16f99b08cc2773142b79',1,'PIEvaluator']]], + ['execution',['execution',['../class_p_i_state_machine.html#a59c79d761ab1c4b64a655e55c6a93904',1,'PIStateMachine']]], + ['exitcaptured',['exitCaptured',['../class_p_i_console.html#af31cb35a92c0758c33c73a227a096d04',1,'PIConsole::exitCaptured()'],['../class_p_i_kbd_listener.html#a333aaeadb6ca6bfee5aea3378ce7e1f4',1,'PIKbdListener::exitCaptured()']]], + ['exitkey',['exitKey',['../class_p_i_console.html#a9c5a216c60e5b9c1bdf5eda25a346594',1,'PIConsole::exitKey()'],['../class_p_i_kbd_listener.html#a99de0ef4e19dc43b66c3ee42cfb3b5ab',1,'PIKbdListener::exitKey()']]], + ['expandleftto',['expandLeftTo',['../class_p_i_string.html#aeecafb43528159d4d65dc9a5e2ca26e4',1,'PIString']]], + ['expandrightto',['expandRightTo',['../class_p_i_string.html#ad17b4d47401a31557a06490efd9e40e5',1,'PIString']]], + ['expression',['expression',['../class_p_i_evaluator.html#ac9a0a4fd65af2518d8efdaa9c5298991',1,'PIEvaluator']]] +]; diff --git a/pip/doc/html/search/functions_6.html b/pip/doc/html/search/functions_6.html new file mode 100644 index 0000000..9e23fe5 --- /dev/null +++ b/pip/doc/html/search/functions_6.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/functions_6.js b/pip/doc/html/search/functions_6.js new file mode 100644 index 0000000..08f34a8 --- /dev/null +++ b/pip/doc/html/search/functions_6.js @@ -0,0 +1,29 @@ +var searchData= +[ + ['fill',['fill',['../class_p_i_vector.html#aa6b5cd062e622fa4e3460249c11a2eb2',1,'PIVector']]], + ['filter',['filter',['../class_p_i_connection.html#a556da00110cff970ed19d850b708cf29',1,'PIConnection']]], + ['filterboundeddevices',['filterBoundedDevices',['../class_p_i_connection.html#a7f1910e132f8e9991f89444d0c3ec764',1,'PIConnection']]], + ['filternames',['filterNames',['../class_p_i_connection.html#aa6a4ea015798acdb8b5c0fd52156cd7f',1,'PIConnection']]], + ['filters',['filters',['../class_p_i_connection.html#a3960ea85b7a1fad838fa84772ecf9695',1,'PIConnection']]], + ['filtervalidatefooter',['filterValidateFooter',['../class_p_i_connection.html#a2691ceec3dea8c0588f8afd74359277e',1,'PIConnection']]], + ['filtervalidateheader',['filterValidateHeader',['../class_p_i_connection.html#a6f8f899f40de092639f1e0cefe95c968',1,'PIConnection']]], + ['filtervalidatepayload',['filterValidatePayload',['../class_p_i_connection.html#ad883e4b2174fc086da98b1dbcad69aaf',1,'PIConnection']]], + ['find',['find',['../class_p_i_string.html#a99fbf95d65c51cce60c27d18c4cd5531',1,'PIString::find(const char str, const int start=0) const '],['../class_p_i_string.html#a1a237a5d7836ba1fcaa37087039e7d04',1,'PIString::find(const PIString str, const int start=0) const '],['../class_p_i_string.html#a4590628a19e551470960e7b350f0ff5f',1,'PIString::find(const char *str, const int start=0) const '],['../class_p_i_string.html#a60a4b7cd4bce3f6c8208a713164f1479',1,'PIString::find(const string str, const int start=0) const ']]], + ['findbyname',['findByName',['../class_p_i_object.html#afe05189de1d6ebbf44a2e16cfe200848',1,'PIObject']]], + ['findchild',['findChild',['../class_p_i_config_1_1_entry.html#aa3b36dd3fbf8af0f7bc2cb0e683a0ef1',1,'PIConfig::Entry::findChild(const PIString &name)'],['../class_p_i_config_1_1_entry.html#a63c45328044a43fb9ab7269a08eb0df0',1,'PIConfig::Entry::findChild(const PIString &name) const ']]], + ['findcword',['findCWord',['../class_p_i_string.html#aebd028e4a34e907fb891944b1de4f555',1,'PIString']]], + ['findlast',['findLast',['../class_p_i_string.html#ae19031ecb5e129e2cbc830694b2fe20f',1,'PIString::findLast(const char str, const int start=0) const '],['../class_p_i_string.html#a43c55edb22d030aee0c04dae4c03fa2a',1,'PIString::findLast(const PIString str, const int start=0) const '],['../class_p_i_string.html#a5b846d7fb50ccd548f640681aca4fbf4',1,'PIString::findLast(const char *str, const int start=0) const '],['../class_p_i_string.html#a103ad13acbd263ced666ec07b4e6228d',1,'PIString::findLast(const string str, const int start=0) const ']]], + ['findword',['findWord',['../class_p_i_string.html#a434cb662bfa4af1ccdfd0ed5188d6020',1,'PIString']]], + ['footer',['footer',['../class_p_i_packet_extractor.html#a6382b9238ce84d3c93044dc96748d42a',1,'PIPacketExtractor']]], + ['frombase64',['fromBase64',['../class_p_i_byte_array.html#aa3b756ec5c724a649d90c13c0f104f6b',1,'PIByteArray']]], + ['frombool',['fromBool',['../class_p_i_string.html#a86004795c3c15a6ba246cd02b44f22f5',1,'PIString']]], + ['frommicroseconds',['fromMicroseconds',['../class_p_i_system_time.html#ab39ad2e2092d25972ea849fdbf94d7d9',1,'PISystemTime']]], + ['frommilliseconds',['fromMilliseconds',['../class_p_i_system_time.html#a4b5e241835da7965141e0e1060eb5b81',1,'PISystemTime']]], + ['fromnanoseconds',['fromNanoseconds',['../class_p_i_system_time.html#a9efcf8326e98df508cbf3ee0eb8f7713',1,'PISystemTime']]], + ['fromnumber',['fromNumber',['../class_p_i_string.html#a2e31a81e9f62ac86f9217c8e20642828',1,'PIString::fromNumber(const short value, int base=10, bool *ok=0)'],['../class_p_i_string.html#a1021653c0bebd440811bd90cef33297e',1,'PIString::fromNumber(const ushort value, int base=10, bool *ok=0)'],['../class_p_i_string.html#a9e757a86d4c4d831041b944030adef7c',1,'PIString::fromNumber(const int value, int base=10, bool *ok=0)'],['../class_p_i_string.html#a8111a873979e648ba8c45b373ca6b284',1,'PIString::fromNumber(const uint value, int base=10, bool *ok=0)'],['../class_p_i_string.html#a65f477626868b91471bab571719ed62a',1,'PIString::fromNumber(const long value, int base=10, bool *ok=0)'],['../class_p_i_string.html#a5bb81ee7e3be05ccd3cfc11c88c3cb5f',1,'PIString::fromNumber(const ulong value, int base=10, bool *ok=0)'],['../class_p_i_string.html#a6e7954fb747bb0ae5b8ffcf2f9a4908a',1,'PIString::fromNumber(const llong &value, int base=10, bool *ok=0)'],['../class_p_i_string.html#aea4c3e4327613c3f98170e2925fa3abd',1,'PIString::fromNumber(const ullong &value, int base=10, bool *ok=0)'],['../class_p_i_string.html#a8dd6100d87c12863d5368f1729d96542',1,'PIString::fromNumber(const float value)'],['../class_p_i_string.html#aba672126ad7cc180e14f8040c334ce25',1,'PIString::fromNumber(const double &value)'],['../class_p_i_string.html#a535414bf6c42297179d55c98b99101c3',1,'PIString::fromNumber(const ldouble &value)']]], + ['fromseconds',['fromSeconds',['../class_p_i_system_time.html#ab3a2f936923f05320f47eb581f924bb3',1,'PISystemTime']]], + ['fromvalue',['fromValue',['../class_p_i_variant.html#afb991396df6f61478ba3a314519a6446',1,'PIVariant']]], + ['front',['front',['../class_p_i_vector.html#abf6923dacf515f1f433544717d615999',1,'PIVector::front()'],['../class_p_i_vector.html#a8a35924372d7c30bb030ad7baf7dc450',1,'PIVector::front() const ']]], + ['fullname',['fullName',['../class_p_i_config_1_1_entry.html#a07d301e63f496b64dd18ab697ab1ed8f',1,'PIConfig::Entry']]], + ['fullpathprefix',['fullPathPrefix',['../class_p_i_binary_log.html#aeea31dead45c393c32a5a37e0e55af77',1,'PIBinaryLog::fullPathPrefix()'],['../class_p_i_ethernet.html#ae80b62a0c52c5e0985e4fa3f39aadfea',1,'PIEthernet::fullPathPrefix()'],['../class_p_i_file.html#a68c53a59d5afef2a7c363f987b1a5e1a',1,'PIFile::fullPathPrefix()'],['../class_p_i_i_o_device.html#a568194e78dc8aac94ed6c1d17809a71e',1,'PIIODevice::fullPathPrefix()'],['../class_p_i_serial.html#a618759d595670e96afa8103102e98ec7',1,'PISerial::fullPathPrefix()']]] +]; diff --git a/pip/doc/html/search/functions_7.html b/pip/doc/html/search/functions_7.html new file mode 100644 index 0000000..f7ccd59 --- /dev/null +++ b/pip/doc/html/search/functions_7.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/functions_7.js b/pip/doc/html/search/functions_7.js new file mode 100644 index 0000000..85e92b9 --- /dev/null +++ b/pip/doc/html/search/functions_7.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['getbyaddress',['getByAddress',['../class_p_i_ethernet_1_1_interface_list.html#a310d9bbcbce604c11e3c3a016f1e449d',1,'PIEthernet::InterfaceList']]], + ['getbyindex',['getByIndex',['../class_p_i_ethernet_1_1_interface_list.html#a2b206fa34041a17fd220dedb8f7f5b23',1,'PIEthernet::InterfaceList']]], + ['getbyname',['getByName',['../class_p_i_ethernet_1_1_interface_list.html#a370ca35bd198f7b5299a8a397648ee98',1,'PIEthernet::InterfaceList']]], + ['getloopback',['getLoopback',['../class_p_i_ethernet_1_1_interface_list.html#aa7d664f29056fba64f8e58f547c739f0',1,'PIEthernet::InterfaceList']]], + ['getvalue',['getValue',['../class_p_i_config_1_1_entry.html#af2e42a391ca7eb215de51af19985de7a',1,'PIConfig::Entry::getValue(const PIString &vname, const PIString &def=PIString(), bool *exists=0)'],['../class_p_i_config_1_1_entry.html#a05bbbeed3dadb60e6bea03c749bfd6e4',1,'PIConfig::Entry::getValue(const PIString &vname, const char *def, bool *exists=0)'],['../class_p_i_config_1_1_entry.html#ae50da453abb433db637f727dc18fd2ea',1,'PIConfig::Entry::getValue(const PIString &vname, const PIStringList &def, bool *exists=0)'],['../class_p_i_config_1_1_entry.html#aa0e0499b5fc68a1d12259da24c7a3c2a',1,'PIConfig::Entry::getValue(const PIString &vname, const bool def, bool *exists=0)'],['../class_p_i_config_1_1_entry.html#a5a6ac80cb3daf664987b8b07f29a85e3',1,'PIConfig::Entry::getValue(const PIString &vname, const short def, bool *exists=0)'],['../class_p_i_config_1_1_entry.html#a819012c8ada9a1d829fa076eed212d07',1,'PIConfig::Entry::getValue(const PIString &vname, const int def, bool *exists=0)'],['../class_p_i_config_1_1_entry.html#a513d067edac5971ac9cb5546cc8ed9b0',1,'PIConfig::Entry::getValue(const PIString &vname, const long def, bool *exists=0)'],['../class_p_i_config_1_1_entry.html#ad92d8722f1390a0d46b194f6557edf02',1,'PIConfig::Entry::getValue(const PIString &vname, const uchar def, bool *exists=0)'],['../class_p_i_config_1_1_entry.html#ae0560a9ee49304088c0192b26e4fbbf5',1,'PIConfig::Entry::getValue(const PIString &vname, const ushort def, bool *exists=0)'],['../class_p_i_config_1_1_entry.html#ab75c9b8261196d24f8eee1183251474f',1,'PIConfig::Entry::getValue(const PIString &vname, const uint def, bool *exists=0)'],['../class_p_i_config_1_1_entry.html#aa373eef636c8a372366bab7ca968a6ae',1,'PIConfig::Entry::getValue(const PIString &vname, const ulong def, bool *exists=0)'],['../class_p_i_config_1_1_entry.html#a7868346fb50b9dc21d950c69e6a96657',1,'PIConfig::Entry::getValue(const PIString &vname, const float def, bool *exists=0)'],['../class_p_i_config_1_1_entry.html#a6fd5ddc7b21c3d0cca6a2e885e8c29bd',1,'PIConfig::Entry::getValue(const PIString &vname, const double def, bool *exists=0)'],['../class_p_i_config.html#afa9ff95ee07a0426a06196cdb0674bb1',1,'PIConfig::getValue(const PIString &vname, const PIString &def=PIString(), bool *exists=0)'],['../class_p_i_config.html#aa58ad8481d1f0280a3bd4c92f47f516f',1,'PIConfig::getValue(const PIString &vname, const char *def, bool *exists=0)'],['../class_p_i_config.html#a59ee8d190f4a82e2fbe4e0320877e0a7',1,'PIConfig::getValue(const PIString &vname, const PIStringList &def, bool *exists=0)'],['../class_p_i_config.html#a5f44b199f4679ee58df0b7e1db44b4f1',1,'PIConfig::getValue(const PIString &vname, const bool def, bool *exists=0)'],['../class_p_i_config.html#ac2fa98010be70e9d7fda3baa56804ad0',1,'PIConfig::getValue(const PIString &vname, const short def, bool *exists=0)'],['../class_p_i_config.html#aa7750ea22e6d133d80070f9ff9328bd7',1,'PIConfig::getValue(const PIString &vname, const int def, bool *exists=0)'],['../class_p_i_config.html#a073bd20b948c3f68b7eb846f4d080006',1,'PIConfig::getValue(const PIString &vname, const long def, bool *exists=0)'],['../class_p_i_config.html#a04ff1fa7aea07e52f1f9b743a7236e0c',1,'PIConfig::getValue(const PIString &vname, const uchar def, bool *exists=0)'],['../class_p_i_config.html#ae359d44525852377fe944f34f3a3aadf',1,'PIConfig::getValue(const PIString &vname, const ushort def, bool *exists=0)'],['../class_p_i_config.html#ab37b341b3468d25beae61112ec0da134',1,'PIConfig::getValue(const PIString &vname, const uint def, bool *exists=0)'],['../class_p_i_config.html#a081565174316b60dc5a6f27ffb0c3118',1,'PIConfig::getValue(const PIString &vname, const ulong def, bool *exists=0)'],['../class_p_i_config.html#a9fc2514ae2881bd0cace552b179e58f7',1,'PIConfig::getValue(const PIString &vname, const float def, bool *exists=0)'],['../class_p_i_config.html#a81a5f8e644ef77db5b85b3d0a1169940',1,'PIConfig::getValue(const PIString &vname, const double def, bool *exists=0)']]], + ['getvalues',['getValues',['../class_p_i_config_1_1_entry.html#a42a7e4e6ccf80f82b2e35de26fcc6274',1,'PIConfig::Entry::getValues()'],['../class_p_i_config.html#a56e9e758d994f2bd5bb0ddbf93b187e0',1,'PIConfig::getValues()']]], + ['groupelements',['groupElements',['../class_p_i_collection.html#a74ed1ec578c1c1749f72a92c714b9243',1,'PICollection']]], + ['groups',['groups',['../class_p_i_collection.html#a84d0050eaeb3187ed61a46ac31aa812f',1,'PICollection']]] +]; diff --git a/pip/doc/html/search/functions_8.html b/pip/doc/html/search/functions_8.html new file mode 100644 index 0000000..596279e --- /dev/null +++ b/pip/doc/html/search/functions_8.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/functions_8.js b/pip/doc/html/search/functions_8.js new file mode 100644 index 0000000..6b36e40 --- /dev/null +++ b/pip/doc/html/search/functions_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['header',['header',['../class_p_i_packet_extractor.html#a8e6ff4a862b5fc4826ceae42d630174c',1,'PIPacketExtractor']]] +]; diff --git a/pip/doc/html/search/functions_9.html b/pip/doc/html/search/functions_9.html new file mode 100644 index 0000000..52d4abd --- /dev/null +++ b/pip/doc/html/search/functions_9.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/functions_9.js b/pip/doc/html/search/functions_9.js new file mode 100644 index 0000000..1cbd9b2 --- /dev/null +++ b/pip/doc/html/search/functions_9.js @@ -0,0 +1,37 @@ +var searchData= +[ + ['immediatefrequency',['immediateFrequency',['../class_p_i_diagnostics.html#afc88d4112178d144a4e2bf116809a586',1,'PIDiagnostics']]], + ['immediatefrequency_5fptr',['immediateFrequency_ptr',['../class_p_i_diagnostics.html#ae84c320f15128154968da64a185534f6',1,'PIDiagnostics']]], + ['implementation',['implementation',['../class_p_i_timer.html#a5a0616e0a3db99893098b644cdd58288',1,'PITimer']]], + ['init',['init',['../class_p_i_ethernet.html#a9c9a8d104603bcb93b7b5f096b3105bb',1,'PIEthernet::init()'],['../class_p_i_i_o_device.html#a587c32639f2732920338a363ad163d81',1,'PIIODevice::init()']]], + ['insert',['insert',['../class_p_i_string.html#a73eb6e5b422f635f67e7db616639dd26',1,'PIString::insert(const int index, const PIChar &c)'],['../class_p_i_string.html#aa48ee0a414ad57dd9c8db645808f1dd1',1,'PIString::insert(const int index, const char &c)'],['../class_p_i_string.html#aa71f46f0fecf56aef8501c88d41ecd35',1,'PIString::insert(const int index, const PIString &str)'],['../class_p_i_string.html#a8c20b60718cd3ba095012f29ef2af0c7',1,'PIString::insert(const int index, const char *c)']]], + ['integralfrequency',['integralFrequency',['../class_p_i_diagnostics.html#af2bca72346e1440af8e9a225bfd2ad72',1,'PIDiagnostics']]], + ['integralfrequency_5fptr',['integralFrequency_ptr',['../class_p_i_diagnostics.html#acb226efc57b90723c6acd5f07f0e8a1c',1,'PIDiagnostics']]], + ['interfaces',['interfaces',['../class_p_i_ethernet.html#a482e4a9f3730768f62eaecc36b82a636',1,'PIEthernet']]], + ['interval',['interval',['../class_p_i_timer.html#a632ce2869f478d0752b0b48cfa399fec',1,'PITimer']]], + ['isactive',['isActive',['../struct_p_i_ethernet_1_1_interface.html#ab76d86b68f0da23428ea8ecee802354a',1,'PIEthernet::Interface::isActive()'],['../class_p_i_kbd_listener.html#ac5e65b971731b969f162f0daf332280a',1,'PIKbdListener::isActive()']]], + ['isalpha',['isAlpha',['../class_p_i_char.html#a60b68169d49d4d296b03c99d962f2fe0',1,'PIChar']]], + ['isascii',['isAscii',['../class_p_i_char.html#a201aaf6b6cf4406d84ad97879b0df42b',1,'PIChar']]], + ['isbroadcast',['isBroadcast',['../struct_p_i_ethernet_1_1_interface.html#af331db850efe21a7793bbf813f71c0b4',1,'PIEthernet::Interface']]], + ['isconnected',['isConnected',['../class_p_i_ethernet.html#a6917b5530a9b4daa4030e49892db3887',1,'PIEthernet']]], + ['iscontrol',['isControl',['../class_p_i_char.html#a683aebcd7e500fc96c6367dfe6932219',1,'PIChar']]], + ['iscorrect',['isCorrect',['../class_p_i_evaluator.html#ac9a77afecf7a5ca245c920a491f4386f',1,'PIEvaluator']]], + ['isdigit',['isDigit',['../class_p_i_char.html#a56d2cedeabb4c86d8b777d4e1411c25d',1,'PIChar']]], + ['isempty',['isEmpty',['../class_p_i_vector.html#a4b8a3f487b9d1d623133a4c9fea19734',1,'PIVector::isEmpty()'],['../class_p_i_string.html#abc0709f3722cd63230b81f613c0a999e',1,'PIString::isEmpty()'],['../class_p_i_connection.html#a3a3c31ebf6f1613ae421483ea360d7b2',1,'PIConnection::isEmpty()']]], + ['isentryexists',['isEntryExists',['../class_p_i_config_1_1_entry.html#a2a45332b92375f45af0466487d9f9480',1,'PIConfig::Entry::isEntryExists()'],['../class_p_i_config.html#acf088b2430b92387205df5d67b6ca83d',1,'PIConfig::isEntryExists()']]], + ['isgraphical',['isGraphical',['../class_p_i_char.html#ac02e6ddd18b2cb837b772444ee17be2c',1,'PIChar']]], + ['ishex',['isHex',['../class_p_i_char.html#a2730d5567a93f19d6389be7ea07b1168',1,'PIChar']]], + ['isleaf',['isLeaf',['../class_p_i_config_1_1_entry.html#ac5a30b29cfcdde2513719b954a935220',1,'PIConfig::Entry']]], + ['isloopback',['isLoopback',['../struct_p_i_ethernet_1_1_interface.html#a469b2d721c49354fe43117cf75950920',1,'PIEthernet::Interface']]], + ['islower',['isLower',['../class_p_i_char.html#afcf054d8470c333c69f8b7df2c767ecf',1,'PIChar']]], + ['ismulticast',['isMulticast',['../struct_p_i_ethernet_1_1_interface.html#adbfab446dc998e260231b2e7b90f5b29',1,'PIEthernet::Interface']]], + ['isparameterset',['isParameterSet',['../class_p_i_ethernet.html#a2131c00ba019a17cbf68c2b90fc8ec0f',1,'PIEthernet']]], + ['isprint',['isPrint',['../class_p_i_char.html#a55255ed564ce213a1abaf519bd28c1c6',1,'PIChar']]], + ['ispropertyexists',['isPropertyExists',['../class_p_i_object.html#a8d6bd4c57aa01dc41e1b28720f9604a7',1,'PIObject']]], + ['isptp',['isPTP',['../struct_p_i_ethernet_1_1_interface.html#a04ba0d64139f4dc46561a4a4962edbf8',1,'PIEthernet::Interface']]], + ['isrunning',['isRunning',['../struct_p_i_ethernet_1_1_interface.html#a5f603624bc1046421bdc75b25e6f1e78',1,'PIEthernet::Interface::isRunning()'],['../class_p_i_thread.html#a46720d79609ec893d9eb5eaa2354c414',1,'PIThread::isRunning()'],['../class_p_i_timer.html#a5ccbe3dd36ecde88f01b6534659a08d0',1,'PITimer::isRunning()']]], + ['isspace',['isSpace',['../class_p_i_char.html#a08354995df8b6b1897c3c56fb61614f9',1,'PIChar']]], + ['isstopped',['isStopped',['../class_p_i_timer.html#a88a8d0df214cb441321e6884342183e3',1,'PITimer']]], + ['isupper',['isUpper',['../class_p_i_char.html#a9bf6075c65410d1ea24622024246dd42',1,'PIChar']]], + ['isvalid',['isValid',['../class_p_i_variant.html#a80e4379667f46e5a384144e77b9b1aa7',1,'PIVariant']]] +]; diff --git a/pip/doc/html/search/functions_a.html b/pip/doc/html/search/functions_a.html new file mode 100644 index 0000000..15310b4 --- /dev/null +++ b/pip/doc/html/search/functions_a.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/functions_a.js b/pip/doc/html/search/functions_a.js new file mode 100644 index 0000000..d9b6cd2 --- /dev/null +++ b/pip/doc/html/search/functions_a.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['join',['join',['../class_p_i_string_list.html#a05ae2b8fc9909e4c20a1852ee680c381',1,'PIStringList']]], + ['joinmulticastgroup',['joinMulticastGroup',['../class_p_i_ethernet.html#a99df6e4eccbecb0b704678b8df273dec',1,'PIEthernet']]] +]; diff --git a/pip/doc/html/search/functions_b.html b/pip/doc/html/search/functions_b.html new file mode 100644 index 0000000..c42f064 --- /dev/null +++ b/pip/doc/html/search/functions_b.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/functions_b.js b/pip/doc/html/search/functions_b.js new file mode 100644 index 0000000..29d24dd --- /dev/null +++ b/pip/doc/html/search/functions_b.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['keypressed',['keyPressed',['../class_p_i_console.html#acb4dd34fc69180a9ba8bca4816bca130',1,'PIConsole::keyPressed()'],['../class_p_i_kbd_listener.html#a46a45b9ee857b0cdc782ce977471c286',1,'PIKbdListener::keyPressed()']]] +]; diff --git a/pip/doc/html/search/functions_c.html b/pip/doc/html/search/functions_c.html new file mode 100644 index 0000000..8940020 --- /dev/null +++ b/pip/doc/html/search/functions_c.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/functions_c.js b/pip/doc/html/search/functions_c.js new file mode 100644 index 0000000..d55b7ea --- /dev/null +++ b/pip/doc/html/search/functions_c.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['lastresult',['lastResult',['../class_p_i_evaluator.html#a50b2b35e52268072b8b2080f9dcf1d2c',1,'PIEvaluator']]], + ['leavemulticastgroup',['leaveMulticastGroup',['../class_p_i_ethernet.html#ac0213b620b1b79ee14dd6756bb11175c',1,'PIEthernet']]], + ['left',['left',['../class_p_i_string.html#aa6614f666f502b2d759bb37c046f6181',1,'PIString']]], + ['length',['length',['../class_p_i_string.html#a61133c9da8ce47fced3d5f5e26cc0f6d',1,'PIString']]], + ['lengthascii',['lengthAscii',['../class_p_i_string.html#a512a49d09681e5ecc87fb5c2b51c7bba',1,'PIString']]], + ['letobe_5fi',['letobe_i',['../piincludes_8h.html#a2107d4b68fdcfc213defacffefbc6d03',1,'piincludes.h']]], + ['letobe_5fs',['letobe_s',['../piincludes_8h.html#aec6bba617007bb4636bbef74038cd09a',1,'piincludes.h']]], + ['listen',['listen',['../class_p_i_ethernet.html#a8b756229579e309044186b776989db16',1,'PIEthernet::listen(bool threaded=false)'],['../class_p_i_ethernet.html#ac01db2157f9518237e915fabb360e40c',1,'PIEthernet::listen(const PIString &ip, int port, bool threaded=false)'],['../class_p_i_ethernet.html#a606a5cac3eca4126a5fd6ad2f29763ab',1,'PIEthernet::listen(const PIString &ip_port, bool threaded=false)']]], + ['lock',['lock',['../class_p_i_mutex.html#aa571ad61ee7bd5fcf60f6f5032a16441',1,'PIMutex::lock()'],['../class_p_i_thread.html#a221de2cf94a569a223bfc4456c0f4fed',1,'PIThread::lock()']]] +]; diff --git a/pip/doc/html/search/functions_d.html b/pip/doc/html/search/functions_d.html new file mode 100644 index 0000000..ac0f16a --- /dev/null +++ b/pip/doc/html/search/functions_d.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/functions_d.js b/pip/doc/html/search/functions_d.js new file mode 100644 index 0000000..1a16bdd --- /dev/null +++ b/pip/doc/html/search/functions_d.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['makeconfig',['makeConfig',['../class_p_i_connection.html#aa7333225423095feac73e903dfef3e32',1,'PIConnection']]], + ['mid',['mid',['../class_p_i_string.html#afdeb3714be4ad6a1bf8f2478f657f510',1,'PIString']]], + ['missedbytes',['missedBytes',['../class_p_i_packet_extractor.html#ac5a810fc6551422b92ace27652c24813',1,'PIPacketExtractor']]], + ['missedbytes_5fptr',['missedBytes_ptr',['../class_p_i_packet_extractor.html#ad8cbbb5d99d89629975913b134ad68a8',1,'PIPacketExtractor']]], + ['msleep',['msleep',['../pitime_8h.html#a242b1482cf8e5f7a8c5d087a2d2b5e3b',1,'pitime.h']]], + ['multicastgroups',['multicastGroups',['../class_p_i_ethernet.html#aa7091f6fbba9f955eaba767e5a254f2e',1,'PIEthernet']]], + ['mutex',['mutex',['../class_p_i_thread.html#aeaff22c99b5f5ba444671d658eba2f14',1,'PIThread']]] +]; diff --git a/pip/doc/html/search/functions_e.html b/pip/doc/html/search/functions_e.html new file mode 100644 index 0000000..4ca7201 --- /dev/null +++ b/pip/doc/html/search/functions_e.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/functions_e.js b/pip/doc/html/search/functions_e.js new file mode 100644 index 0000000..47f68ea --- /dev/null +++ b/pip/doc/html/search/functions_e.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['name',['name',['../class_p_i_object.html#aee2242a0210f2a009d63764e01a37338',1,'PIObject::name()'],['../class_p_i_config_1_1_entry.html#a17018e3886c186689c50b5b1523cfe9e',1,'PIConfig::Entry::name()']]], + ['needlockrun',['needLockRun',['../class_p_i_thread.html#a87a8b9315e3e2c0eb8bfeb864474da57',1,'PIThread']]], + ['newconnection',['newConnection',['../class_p_i_ethernet.html#aae2f98a5e99d82d5520e352bb2c87a76',1,'PIEthernet']]], + ['newline',['newLine',['../class_p_i_cout.html#a50a7d52c6670f5e693cffd30d565c1af',1,'PICout']]] +]; diff --git a/pip/doc/html/search/functions_f.html b/pip/doc/html/search/functions_f.html new file mode 100644 index 0000000..5683ff3 --- /dev/null +++ b/pip/doc/html/search/functions_f.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/functions_f.js b/pip/doc/html/search/functions_f.js new file mode 100644 index 0000000..0abf0a3 --- /dev/null +++ b/pip/doc/html/search/functions_f.js @@ -0,0 +1,43 @@ +var searchData= +[ + ['opendevice',['openDevice',['../class_p_i_binary_log.html#a8d43d7d13b16fd665d5f814cb5daddfe',1,'PIBinaryLog::openDevice()'],['../class_p_i_ethernet.html#a6168aeef5b82bb0f8befa17366f1b116',1,'PIEthernet::openDevice()'],['../class_p_i_file.html#aeb972f021b5ef835566764f8bb000976',1,'PIFile::openDevice()'],['../class_p_i_i_o_device.html#ae62b3035a9f884d345fd5d071c8089c8',1,'PIIODevice::openDevice()'],['../class_p_i_serial.html#a4341607c7ecd49b68b368a9cbc49207a',1,'PISerial::openDevice()']]], + ['operator_20bool',['operator bool',['../class_p_i_config_1_1_entry.html#aed73af24f8cde6f1b57234a9ce97a920',1,'PIConfig::Entry']]], + ['operator_20char',['operator char',['../class_p_i_config_1_1_entry.html#a4b29ac07d6a8c0e67eb6e4b6c345d157',1,'PIConfig::Entry']]], + ['operator_20const_20char_20_2a',['operator const char *',['../class_p_i_string.html#a3eec9656b507d8d71ab2f58c551a03ff',1,'PIString']]], + ['operator_20const_20string',['operator const string',['../class_p_i_string.html#ab90b8d26f08ff17f5f2302bbd9f3b66a',1,'PIString']]], + ['operator_20double',['operator double',['../class_p_i_config_1_1_entry.html#a2cf9ea4e32c819b2b725560a9ca49171',1,'PIConfig::Entry']]], + ['operator_20float',['operator float',['../class_p_i_config_1_1_entry.html#a5b301d721e422fc57ebd73f2ecc17187',1,'PIConfig::Entry']]], + ['operator_20int',['operator int',['../class_p_i_flags.html#a3338b89805f5035e609939c798e6f7a1',1,'PIFlags::operator int()'],['../class_p_i_config_1_1_entry.html#a325a3c6c64f72cc129d95b56f0d0e2b9',1,'PIConfig::Entry::operator int()']]], + ['operator_20long',['operator long',['../class_p_i_config_1_1_entry.html#a60c00d0029ca1ecc9fc8c709db1e7c7b',1,'PIConfig::Entry']]], + ['operator_20pistring',['operator PIString',['../class_p_i_config_1_1_entry.html#ae2e947832d8a7116cf304a2db130da38',1,'PIConfig::Entry']]], + ['operator_20pistringlist',['operator PIStringList',['../class_p_i_config_1_1_entry.html#a1154d48f87cef1df3bd02cce06006215',1,'PIConfig::Entry']]], + ['operator_20short',['operator short',['../class_p_i_config_1_1_entry.html#abd30994ea9658c723bfe53ad27cdd612',1,'PIConfig::Entry']]], + ['operator_20uchar',['operator uchar',['../class_p_i_config_1_1_entry.html#aabe52ad80e9051d30b40ab30297165cb',1,'PIConfig::Entry']]], + ['operator_20uint',['operator uint',['../class_p_i_config_1_1_entry.html#aac49561de0e3e8c1a6207b7395aad13b',1,'PIConfig::Entry']]], + ['operator_20ulong',['operator ulong',['../class_p_i_config_1_1_entry.html#aedd0654a624229b0a9eac9fc47ecd162',1,'PIConfig::Entry']]], + ['operator_20ushort',['operator ushort',['../class_p_i_config_1_1_entry.html#a80bfe47eb1cf861ea9655d1dc9be7052',1,'PIConfig::Entry']]], + ['operator_21_3d',['operator!=',['../class_p_i_vector.html#abb6e9b8e55b4dc6a4aa639c171f2c9d9',1,'PIVector::operator!=()'],['../class_p_i_char.html#a90f2d92ee153f08c7b850c99fcbc4eac',1,'PIChar::operator!=()'],['../class_p_i_flags.html#a59ae898edaae7ee779cf47985ba97b05',1,'PIFlags::operator!=(const PIFlags &f)'],['../class_p_i_flags.html#a78ba48024fea46cc2d57172bf997e870',1,'PIFlags::operator!=(const Enum &e)'],['../class_p_i_flags.html#aa589988a996ab33adc81f906c7beff11',1,'PIFlags::operator!=(const int i)'],['../class_p_i_string.html#ae1fde0664048d052d23e40c111ebe2d3',1,'PIString::operator!=(const PIString &str) const '],['../class_p_i_string.html#aec766e4f39ef4c581026e932a2e0c60e',1,'PIString::operator!=(const PIChar c) const '],['../class_p_i_string.html#a5410e68d9c7d22527767ea28891c2c69',1,'PIString::operator!=(const char *str) const '],['../class_p_i_string.html#a05f9cb6d8d4540a62daa0bc682c914b1',1,'PIString::operator!=(const string &str) const '],['../class_p_i_string_list.html#a15888f52377f7f88aca65a66a511d3e8',1,'PIStringList::operator!=()'],['../class_p_i_system_time.html#afa5fd1abc702111b388dd20d8069902a',1,'PISystemTime::operator!=()'],['../class_p_i_variant.html#a7e188a954fbc5d18bf3f3e825e463054',1,'PIVariant::operator!=()'],['../class_p_i_byte_array.html#a9db13625502ec190fa40b4155ad136eb',1,'PIByteArray::operator!=()'],['../pibytearray_8h.html#a9db13625502ec190fa40b4155ad136eb',1,'operator!=(): pibytearray.h']]], + ['operator_26',['operator&',['../class_p_i_flags.html#a8794228e06813b904f387d831ff0e9b0',1,'PIFlags::operator&(PIFlags f) const '],['../class_p_i_flags.html#a4159b4116bded6b35ddeec688999b4bc',1,'PIFlags::operator&(Enum e) const '],['../class_p_i_flags.html#a4ab2f09fb40fa0988b968ccb957d7ba1',1,'PIFlags::operator&(int i) const ']]], + ['operator_26_3d',['operator&=',['../class_p_i_flags.html#abddc6b15602a50cb8a43935d32b57cfc',1,'PIFlags::operator&=(const PIFlags &f)'],['../class_p_i_flags.html#a69759343b60a2ded01f9eb603a4ab471',1,'PIFlags::operator&=(const Enum &e)'],['../class_p_i_flags.html#afc767b6874e64209d8d4d204f98b98b6',1,'PIFlags::operator&=(const int i)']]], + ['operator_2a',['operator*',['../class_p_i_system_time.html#a951c593d9a3d7f68edee3499886ab06e',1,'PISystemTime::operator*()'],['../pimath_8h.html#a861b7fa852296cb48167d9e9ada87cef',1,'operator*(const PIMathMatrixT< Rows0, CR, Type > &fm, const PIMathMatrixT< CR, Cols1, Type > &sm): pimath.h'],['../pimath_8h.html#a9acadcce78833d8dd628e779e6269da9',1,'operator*(const PIMathMatrixT< Rows, Cols, Type > &fm, const PIMathVectorT< Rows, Type > &sv): pimath.h'],['../pimath_8h.html#a86f4f85192137ca8ac9730333dd109a9',1,'operator*(const PIMathMatrix< Type > &fm, const PIMathMatrix< Type > &sm): pimath.h'],['../pimath_8h.html#a6362a90d4cb1ff0ae43649d50e9b4ec3',1,'operator*(const PIMathMatrix< Type > &fm, const PIMathVector< Type > &sv): pimath.h']]], + ['operator_2a_3d',['operator*=',['../class_p_i_system_time.html#af24dc2012c4ba4885975bbc4a14c12f0',1,'PISystemTime']]], + ['operator_2b',['operator+',['../class_p_i_system_time.html#a415080b1306b98576a2bd6c38b8de78d',1,'PISystemTime::operator+()'],['../class_p_i_string.html#ab542a906081915a23c5e71e4d272be61',1,'PIString::operator+(const PIString &str, const PIString &f)'],['../class_p_i_string.html#a3c9fd9112bf9bf8add42aa4a1232f02c',1,'PIString::operator+(const PIString &f, const char *str)'],['../class_p_i_string.html#a7feead55bd8c6f9c91da7575870bbb4a',1,'PIString::operator+(const PIString &f, const string &str)'],['../class_p_i_string.html#ac6c5f17dfacd8deb8db814c69390667e',1,'PIString::operator+(const char *str, const PIString &f)'],['../class_p_i_string.html#acb64f0a2a7b71219db76b5d5f498515c',1,'PIString::operator+(const string &str, const PIString &f)'],['../pistring_8h.html#ab542a906081915a23c5e71e4d272be61',1,'operator+(const PIString &str, const PIString &f): pistring.h'],['../pistring_8h.html#a3c9fd9112bf9bf8add42aa4a1232f02c',1,'operator+(const PIString &f, const char *str): pistring.h'],['../pistring_8h.html#a7feead55bd8c6f9c91da7575870bbb4a',1,'operator+(const PIString &f, const string &str): pistring.h'],['../pistring_8h.html#ac6c5f17dfacd8deb8db814c69390667e',1,'operator+(const char *str, const PIString &f): pistring.h'],['../pistring_8h.html#acb64f0a2a7b71219db76b5d5f498515c',1,'operator+(const string &str, const PIString &f): pistring.h']]], + ['operator_2b_3d',['operator+=',['../class_p_i_system_time.html#aa2e044663f23a4456aeac7b472d56d2f',1,'PISystemTime']]], + ['operator_2d',['operator-',['../class_p_i_system_time.html#a4401fa2920eb43cfb89019ef6fc5be6a',1,'PISystemTime']]], + ['operator_2d_3d',['operator-=',['../class_p_i_system_time.html#a9615d99f50b56aaf6a8b10ac96d47422',1,'PISystemTime']]], + ['operator_2f',['operator/',['../class_p_i_system_time.html#a59e752e61f73f625cc46c4613a921ee6',1,'PISystemTime']]], + ['operator_2f_3d',['operator/=',['../class_p_i_system_time.html#a4bb8e7ee161308b4f7ac23fb547fc5c1',1,'PISystemTime']]], + ['operator_3c',['operator<',['../class_p_i_char.html#a4939c02157bfbcb9a3a669ee738ddaa9',1,'PIChar::operator<()'],['../class_p_i_flags.html#a5bedc9803db598b1fe87bd815f1f50c3',1,'PIFlags::operator<(const PIFlags &f)'],['../class_p_i_flags.html#af8ad4abecf7a29b4f33a4cdba0d53a91',1,'PIFlags::operator<(const Enum &e)'],['../class_p_i_flags.html#aea03b049361f891ac03d791d8f889016',1,'PIFlags::operator<(const int i)'],['../class_p_i_string.html#a4b29c79b0cfd8eeea23977cd72f24768',1,'PIString::operator<(const PIString &str) const '],['../class_p_i_string.html#a4b40e4567d6c5b9afabfda25efeb975a',1,'PIString::operator<(const PIChar c) const '],['../class_p_i_string.html#a793f8bb4b64903f9016bfac27b4e21aa',1,'PIString::operator<(const char *str) const '],['../class_p_i_string.html#a2ed901b6668a596013959d9433461b3a',1,'PIString::operator<(const string &str) const '],['../class_p_i_system_time.html#a9f3ebf927584b6577139ebfb6008e8ab',1,'PISystemTime::operator<()'],['../pichar_8h.html#aac63033d050dd251820843b8d3108182',1,'operator<(const char v, const PIChar &c): pichar.h'],['../pichar_8h.html#a767104c71a066ca079cb71e950bfb5ff',1,'operator<(const char *v, const PIChar &c): pichar.h'],['../pichar_8h.html#adece64ba925cbd59a9fa218251556fd5',1,'operator<(const int v, const PIChar &c): pichar.h']]], + ['operator_3c_3c',['operator<<',['../class_p_i_vector.html#a24a59359b4ddeadc529bf35a11f38f6f',1,'PIVector::operator<<()'],['../class_p_i_cout.html#ae9dacedd8cc32af047fe2cc7dab95e62',1,'PICout::operator<<(const char *v)'],['../class_p_i_cout.html#ac260e89c51ed7c18c73f11d08b6d1207',1,'PICout::operator<<(const string &v)'],['../class_p_i_cout.html#a5aee745aa969f71e82c72dc41dae2b27',1,'PICout::operator<<(const bool v)'],['../class_p_i_cout.html#a0dbe790c14f97691466e81116cce00bf',1,'PICout::operator<<(const char v)'],['../class_p_i_cout.html#ae6cb3028a7d26e39b64fb4e628eb39d9',1,'PICout::operator<<(const uchar v)'],['../class_p_i_cout.html#a4675a5d48fea56b778dac463d86cd7ac',1,'PICout::operator<<(const short v)'],['../class_p_i_cout.html#a5a4a6c12e79d161a4e44b774ce5e66f5',1,'PICout::operator<<(const ushort v)'],['../class_p_i_cout.html#a013582c7c4e95714fb10daccf43f5ca3',1,'PICout::operator<<(const int v)'],['../class_p_i_cout.html#ac8aa9b0501f6e9c9053ec3af22834fad',1,'PICout::operator<<(const uint v)'],['../class_p_i_cout.html#ae4a6ca6b6c5df3862517b5a2a7e33b55',1,'PICout::operator<<(const long v)'],['../class_p_i_cout.html#ae93cccac30d14ba6102c3f0a1e024f7c',1,'PICout::operator<<(const ulong v)'],['../class_p_i_cout.html#af7a07e6abeacd3482d7195d86791465e',1,'PICout::operator<<(const llong v)'],['../class_p_i_cout.html#a5d9d1a68372dbafd71e388353df51dec',1,'PICout::operator<<(const ullong v)'],['../class_p_i_cout.html#aab536506458cbb6310588c4f80863756',1,'PICout::operator<<(const float v)'],['../class_p_i_cout.html#a31664b00b01429c5f58328d5040954d2',1,'PICout::operator<<(const double v)'],['../class_p_i_cout.html#a92a5a13c4cb2ed1b5a72d06c59b266c7',1,'PICout::operator<<(const void *v)'],['../class_p_i_cout.html#a1394f484e833da6ccb460b58914edfd0',1,'PICout::operator<<(const PIObject *v)'],['../class_p_i_cout.html#ae658e35cc785d1d3ddc17d1b10e7283a',1,'PICout::operator<<(const PICoutSpecialChar v)'],['../class_p_i_cout.html#a356e3ae514df581ddb87bb5f10291f53',1,'PICout::operator<<(const PIFlags< PICoutFormat > v)'],['../class_p_i_cout.html#a295b2d98053cf976d5c828fd04cee60c',1,'PICout::operator<<(const PICoutFormat v)'],['../class_p_i_cout.html#a5dfbca3eb4f732919abc24f1d45987da',1,'PICout::operator<<(const PICoutAction v)'],['../class_p_i_string.html#aa9503e3cf1a769ff9969811e794848c9',1,'PIString::operator<<(const PIString &str)'],['../class_p_i_string.html#ae1a767e64e5cd7e8b0bf8f30261e7b51',1,'PIString::operator<<(const PIChar &c)'],['../class_p_i_string.html#ae913da2112cec3234ab25d5998058061',1,'PIString::operator<<(const char *str)'],['../class_p_i_string.html#a637ba3d798aef6d9b0ec1c94bd009eba',1,'PIString::operator<<(const wchar_t *str)'],['../class_p_i_string.html#a37ac4141ad06bace00f45f4199577e43',1,'PIString::operator<<(const string &str)'],['../class_p_i_string.html#a32f84a7c388aa230b00389625b957f3e',1,'PIString::operator<<(const int &num)'],['../class_p_i_string.html#a6fa1fe095dcdf2401fd6aeeeff95bcab',1,'PIString::operator<<(const short &num)'],['../class_p_i_string.html#a2716ff6ff64666a4234b95858705c9a2',1,'PIString::operator<<(const long &num)'],['../class_p_i_string.html#accecec313ba77318942690e11f745ed7',1,'PIString::operator<<(const float &num)'],['../class_p_i_string.html#af585e41702ae09d013b19477c7e1f4ef',1,'PIString::operator<<(const double &num)'],['../class_p_i_byte_array.html#ab1e23cf01f90071f1239fcfc17c8ed3d',1,'PIByteArray::operator<<(std::ostream &s, const PIByteArray &ba)'],['../class_p_i_byte_array.html#a32613363dcf56aac9f693c135fff6f89',1,'PIByteArray::operator<<(PICout s, const PIByteArray &ba)'],['../class_p_i_byte_array.html#ae4152fca25c857d502396fc477dd5b4e',1,'PIByteArray::operator<<(PIByteArray &s, uchar v)'],['../class_p_i_byte_array.html#a27cb4295a655c80c9223e2af2843ac14',1,'PIByteArray::operator<<(PIByteArray &s, const short v)'],['../class_p_i_byte_array.html#ab8951385e7eda4d8d6925b2a519624ae',1,'PIByteArray::operator<<(PIByteArray &s, const int v)'],['../class_p_i_byte_array.html#a750963c1940bf98afb59c6d5ee745f57',1,'PIByteArray::operator<<(PIByteArray &s, const long &v)'],['../class_p_i_byte_array.html#a34e8e853e5ed6beccd359e6cdbbd79ee',1,'PIByteArray::operator<<(PIByteArray &s, const llong &v)'],['../class_p_i_byte_array.html#ab5772ffd8c729df606daef9af4bab33f',1,'PIByteArray::operator<<(PIByteArray &s, const ushort v)'],['../class_p_i_byte_array.html#ad4fedc65364715baf41b635174c5fe8a',1,'PIByteArray::operator<<(PIByteArray &s, const uint v)'],['../class_p_i_byte_array.html#ac808ed51ef9536275a6133abfde4bb83',1,'PIByteArray::operator<<(PIByteArray &s, const ulong &v)'],['../class_p_i_byte_array.html#ab44ea6a59afa51508ff2901d41b627f0',1,'PIByteArray::operator<<(PIByteArray &s, const ullong &v)'],['../class_p_i_byte_array.html#a2a485f703e44ccea18c8638c7c4c5889',1,'PIByteArray::operator<<(PIByteArray &s, const float v)'],['../class_p_i_byte_array.html#a499da27a6b5a3474fff8cda6c723886a',1,'PIByteArray::operator<<(PIByteArray &s, const double &v)'],['../class_p_i_byte_array.html#a959efd617590b844d4dccf73c3565f95',1,'PIByteArray::operator<<(PIByteArray &s, const PIByteArray &v)'],['../class_p_i_byte_array.html#a65a8de355c00ee10f723c0c4a108adcd',1,'PIByteArray::operator<<(PIByteArray &s, const PIByteArray::RawData &v)'],['../class_p_i_byte_array.html#a96190dee065ee5b78285ca129e2adb1d',1,'PIByteArray::operator<<(PIByteArray &s, const PIPair< Type0, Type1 > &v)'],['../class_p_i_byte_array.html#adbbbcf8bf5e3b56e3a114df299fe7c7f',1,'PIByteArray::operator<<(PIByteArray &s, const PIVector< T > &v)'],['../class_p_i_byte_array.html#a068a0bcfbe5b9d2fa4b778ba968f44db',1,'PIByteArray::operator<<(PIByteArray &s, const PIList< T > &v)'],['../class_p_i_byte_array.html#a9b9678e9c4c372565e933d2e3ea99407',1,'PIByteArray::operator<<(PIByteArray &s, const PIDeque< T > &v)'],['../class_p_i_string.html#af86ed54c2bd0e7590db4ca3b6845f50f',1,'PIString::operator<<()'],['../class_p_i_cout.html#ab789440b8ebd894dfd628161254f057a',1,'PICout::operator<<()'],['../class_p_i_byte_array.html#adaf9cbdf9ef8f318a08ff773a54a3d6c',1,'PIByteArray::operator<<(PIByteArray &s, const PIString &v)'],['../class_p_i_byte_array.html#a08f09ee06ada0b3aab326f1c888daf4c',1,'PIByteArray::operator<<(PIByteArray &s, const PIStringList &v)'],['../class_p_i_string_list.html#ab2ace08e93a4de6b184b29bf3d690467',1,'PIStringList::operator<<()'],['../class_p_i_cout.html#a169bfa237f50a26895592fe63e2bccf1',1,'PICout::operator<<()'],['../class_p_i_byte_array.html#a6d0138248acb706f616018e64bbc64c6',1,'PIByteArray::operator<<(PICout s, const PISystemTime &v)'],['../class_p_i_byte_array.html#a43f469a88331d5bf809f97f77a12e019',1,'PIByteArray::operator<<(PIByteArray &s, const PISystemTime &v)'],['../pibytearray_8h.html#ab1e23cf01f90071f1239fcfc17c8ed3d',1,'operator<<(std::ostream &s, const PIByteArray &ba): pibytearray.h'],['../pibytearray_8h.html#a32613363dcf56aac9f693c135fff6f89',1,'operator<<(PICout s, const PIByteArray &ba): pibytearray.h'],['../pibytearray_8h.html#ae4152fca25c857d502396fc477dd5b4e',1,'operator<<(PIByteArray &s, uchar v): pibytearray.h'],['../pibytearray_8h.html#a27cb4295a655c80c9223e2af2843ac14',1,'operator<<(PIByteArray &s, const short v): pibytearray.h'],['../pibytearray_8h.html#ab8951385e7eda4d8d6925b2a519624ae',1,'operator<<(PIByteArray &s, const int v): pibytearray.h'],['../pibytearray_8h.html#a750963c1940bf98afb59c6d5ee745f57',1,'operator<<(PIByteArray &s, const long &v): pibytearray.h'],['../pibytearray_8h.html#a34e8e853e5ed6beccd359e6cdbbd79ee',1,'operator<<(PIByteArray &s, const llong &v): pibytearray.h'],['../pibytearray_8h.html#ab5772ffd8c729df606daef9af4bab33f',1,'operator<<(PIByteArray &s, const ushort v): pibytearray.h'],['../pibytearray_8h.html#ad4fedc65364715baf41b635174c5fe8a',1,'operator<<(PIByteArray &s, const uint v): pibytearray.h'],['../pibytearray_8h.html#ac808ed51ef9536275a6133abfde4bb83',1,'operator<<(PIByteArray &s, const ulong &v): pibytearray.h'],['../pibytearray_8h.html#ab44ea6a59afa51508ff2901d41b627f0',1,'operator<<(PIByteArray &s, const ullong &v): pibytearray.h'],['../pibytearray_8h.html#a2a485f703e44ccea18c8638c7c4c5889',1,'operator<<(PIByteArray &s, const float v): pibytearray.h'],['../pibytearray_8h.html#a499da27a6b5a3474fff8cda6c723886a',1,'operator<<(PIByteArray &s, const double &v): pibytearray.h'],['../pibytearray_8h.html#a959efd617590b844d4dccf73c3565f95',1,'operator<<(PIByteArray &s, const PIByteArray &v): pibytearray.h'],['../pibytearray_8h.html#a65a8de355c00ee10f723c0c4a108adcd',1,'operator<<(PIByteArray &s, const PIByteArray::RawData &v): pibytearray.h'],['../pibytearray_8h.html#a96190dee065ee5b78285ca129e2adb1d',1,'operator<<(PIByteArray &s, const PIPair< Type0, Type1 > &v): pibytearray.h'],['../pibytearray_8h.html#adbbbcf8bf5e3b56e3a114df299fe7c7f',1,'operator<<(PIByteArray &s, const PIVector< T > &v): pibytearray.h'],['../pibytearray_8h.html#a068a0bcfbe5b9d2fa4b778ba968f44db',1,'operator<<(PIByteArray &s, const PIList< T > &v): pibytearray.h'],['../pibytearray_8h.html#a9b9678e9c4c372565e933d2e3ea99407',1,'operator<<(PIByteArray &s, const PIDeque< T > &v): pibytearray.h'],['../pichar_8h.html#abadc4164b551872ca8d636998a638792',1,'operator<<(PICout s, const PIChar &v): pichar.h'],['../pichar_8h.html#a43cad479313327c089e30ae490e01c24',1,'operator<<(PIByteArray &s, const PIChar &v): pichar.h'],['../pistring_8h.html#af86ed54c2bd0e7590db4ca3b6845f50f',1,'operator<<(std::ostream &s, const PIString &v): pistring.h'],['../pistring_8h.html#ab789440b8ebd894dfd628161254f057a',1,'operator<<(PICout s, const PIString &v): pistring.h'],['../pistring_8h.html#adaf9cbdf9ef8f318a08ff773a54a3d6c',1,'operator<<(PIByteArray &s, const PIString &v): pistring.h'],['../pistring_8h.html#a08f09ee06ada0b3aab326f1c888daf4c',1,'operator<<(PIByteArray &s, const PIStringList &v): pistring.h'],['../pistring_8h.html#ab2ace08e93a4de6b184b29bf3d690467',1,'operator<<(std::ostream &s, const PIStringList &v): pistring.h'],['../pistring_8h.html#a169bfa237f50a26895592fe63e2bccf1',1,'operator<<(PICout s, const PIStringList &v): pistring.h'],['../pitime_8h.html#a6d0138248acb706f616018e64bbc64c6',1,'operator<<(PICout s, const PISystemTime &v): pitime.h'],['../pitime_8h.html#a43f469a88331d5bf809f97f77a12e019',1,'operator<<(PIByteArray &s, const PISystemTime &v): pitime.h']]], + ['operator_3c_3d',['operator<=',['../class_p_i_char.html#abf1f0ddb2ea78a58d20b880011c838b1',1,'PIChar::operator<=()'],['../class_p_i_flags.html#a8c58b248b368645075bfe17ca3d89dae',1,'PIFlags::operator<=(const PIFlags &f)'],['../class_p_i_flags.html#ad6db41bdb39487a6527ec61c38731e5f',1,'PIFlags::operator<=(const Enum &e)'],['../class_p_i_flags.html#a846954cedb1fcc2c013c19b97015d673',1,'PIFlags::operator<=(const int i)'],['../class_p_i_string.html#a0bb50e3024c857df57446970f06215f2',1,'PIString::operator<=(const PIString &str) const '],['../class_p_i_string.html#a1caa9a22c08bf1403d7f02ee25391a6a',1,'PIString::operator<=(const PIChar c) const '],['../class_p_i_string.html#ae3636333daa1c30be2e59046234549db',1,'PIString::operator<=(const char *str) const '],['../class_p_i_string.html#a7b8acb21a78caa79efaf202e7e701587',1,'PIString::operator<=(const string &str) const '],['../class_p_i_system_time.html#a5acdaaac43720151791fea0244fee00c',1,'PISystemTime::operator<=()'],['../pichar_8h.html#a13c44bf8680ec528f13a014e23668b93',1,'operator<=(const char v, const PIChar &c): pichar.h'],['../pichar_8h.html#a7fd16bab079996ca2397d3d1f99d01de',1,'operator<=(const char *v, const PIChar &c): pichar.h'],['../pichar_8h.html#a15d502867a42b6495e8ce0586824e389',1,'operator<=(const int v, const PIChar &c): pichar.h']]], + ['operator_3d',['operator=',['../class_p_i_char.html#a1ef5c3ed6b13e9dcf10f23f702dd600e',1,'PIChar::operator=()'],['../class_p_i_flags.html#aa564e466b29c503ffe5fb333477b57e9',1,'PIFlags::operator=(const PIFlags &f)'],['../class_p_i_flags.html#a770bd137d48fc87414d211136e497264',1,'PIFlags::operator=(const Enum &e)'],['../class_p_i_flags.html#a1bd66aa9dcb533ff06872cb60c280bf2',1,'PIFlags::operator=(const int &i)'],['../class_p_i_variant.html#a8348e3800d46b52e3afae8b8be493692',1,'PIVariant::operator=(const PIVariant &v)'],['../class_p_i_variant.html#aae3e2a836db1066ec9a988de171db5bd',1,'PIVariant::operator=(const char *v)'],['../class_p_i_variant.html#a95188408fc11d25360d120e9b974a965',1,'PIVariant::operator=(const bool v)'],['../class_p_i_variant.html#ad8d679e9c3e4ddce28dcbd2191c4a248',1,'PIVariant::operator=(const char v)'],['../class_p_i_variant.html#aaa33f033d5da8c323690347a2138e984',1,'PIVariant::operator=(const uchar v)'],['../class_p_i_variant.html#a6d134cec08d18e014457361bc176362e',1,'PIVariant::operator=(const short v)'],['../class_p_i_variant.html#a9f86b544ed5147ec28ea560a6482c598',1,'PIVariant::operator=(const ushort v)'],['../class_p_i_variant.html#ae45947d53b31848e58df19625738be28',1,'PIVariant::operator=(const int &v)'],['../class_p_i_variant.html#adb43e3361dd35d92587d9a039a907551',1,'PIVariant::operator=(const uint &v)'],['../class_p_i_variant.html#a699e80ad6decf492aff5dd100086484a',1,'PIVariant::operator=(const long &v)'],['../class_p_i_variant.html#a45470050a51f8f5ef7da6a48a3c415f1',1,'PIVariant::operator=(const ulong &v)'],['../class_p_i_variant.html#a586b73957d9bf2c9bc241425fea49fb3',1,'PIVariant::operator=(const llong &v)'],['../class_p_i_variant.html#a4ed52cb18d70695c2c19fa0ace6a37fa',1,'PIVariant::operator=(const ullong &v)'],['../class_p_i_variant.html#af25ec28ea7753a63581a61ff8e3106f0',1,'PIVariant::operator=(const float &v)'],['../class_p_i_variant.html#a8c11a9a6c0d1b9a2898ae0fa5388dd8b',1,'PIVariant::operator=(const double &v)'],['../class_p_i_variant.html#a17757995e61037053092bdb8172de3b6',1,'PIVariant::operator=(const ldouble &v)'],['../class_p_i_variant.html#acda1391727dae83b740e4ef1379af398',1,'PIVariant::operator=(const complexd &v)'],['../class_p_i_variant.html#a9e92c15a29b086618211a42dafc35e7e',1,'PIVariant::operator=(const complexld &v)'],['../class_p_i_variant.html#aea48e5b1ae0b1ab355cd8039241ca0d8',1,'PIVariant::operator=(const PIBitArray &v)'],['../class_p_i_variant.html#affbe4aee3a0113e7a552731a282b18b0',1,'PIVariant::operator=(const PIByteArray &v)'],['../class_p_i_variant.html#ab44d58a4818de512567826c59f7c6521',1,'PIVariant::operator=(const PIString &v)'],['../class_p_i_variant.html#a4f8012d64e5ff5272ec0904d6397ccaa',1,'PIVariant::operator=(const PIStringList &v)'],['../class_p_i_variant.html#a94878ddb843851c3f6b1f2250123584f',1,'PIVariant::operator=(const PITime &v)'],['../class_p_i_variant.html#a1a459fd1b2d325a785ef015ccc415e83',1,'PIVariant::operator=(const PIDate &v)'],['../class_p_i_variant.html#a1a951922fc438f4011676edab67425e7',1,'PIVariant::operator=(const PIDateTime &v)'],['../class_p_i_variant.html#ab0bf9ae63e3f3469a27066f958aa66a6',1,'PIVariant::operator=(const PISystemTime &v)']]], + ['operator_3d_3d',['operator==',['../class_p_i_vector.html#a420281739970e13565154c788b60bf11',1,'PIVector::operator==()'],['../class_p_i_char.html#a394d08896adbc253e919fd662422228c',1,'PIChar::operator==()'],['../class_p_i_flags.html#a92c3b13d611c323253155df10ddb0589',1,'PIFlags::operator==(const PIFlags &f)'],['../class_p_i_flags.html#a81d595884d3625e3f8339515da5142df',1,'PIFlags::operator==(const Enum &e)'],['../class_p_i_flags.html#a7d12ce96db356cf939007094fa8d18ac',1,'PIFlags::operator==(const int i)'],['../class_p_i_string.html#a4bccf4bb40ab454e0acbb72c370f74df',1,'PIString::operator==(const PIString &str) const '],['../class_p_i_string.html#a15a2d2e8205de172d5a1ba9c4e1300b5',1,'PIString::operator==(const PIChar c) const '],['../class_p_i_string.html#ae56247a537ddd4742a5f8830446396fb',1,'PIString::operator==(const char *str) const '],['../class_p_i_string.html#abcb1247b51cb9fb935fe4b7583004d2e',1,'PIString::operator==(const string &str) const '],['../class_p_i_string_list.html#a5933d3895fdf319f7077c7c078a0971e',1,'PIStringList::operator==()'],['../class_p_i_system_time.html#a1f0ca869016e7504ef2ef0d39fb24286',1,'PISystemTime::operator==()'],['../class_p_i_variant.html#ae6447e6fa8b7acc82abb30fd97a60a0e',1,'PIVariant::operator==()'],['../class_p_i_byte_array.html#a30e1b305b0f9bdcfc1d1e9c970e82d5d',1,'PIByteArray::operator==()'],['../pibytearray_8h.html#a30e1b305b0f9bdcfc1d1e9c970e82d5d',1,'operator==(PIByteArray &f, PIByteArray &s): pibytearray.h'],['../pichar_8h.html#aef66e1b5e541cb78e83ee5097c24fb66',1,'operator==(const char v, const PIChar &c): pichar.h'],['../pichar_8h.html#a4254ee10c37d8222dd82d834920ed3b8',1,'operator==(const char *v, const PIChar &c): pichar.h'],['../pichar_8h.html#a1dbcb604177557289791346d2dafc6c4',1,'operator==(const int v, const PIChar &c): pichar.h']]], + ['operator_3e',['operator>',['../class_p_i_char.html#a4610045d91868b899c0065150fe7686d',1,'PIChar::operator>()'],['../class_p_i_flags.html#a7e2e36f073adce8652f8c2bba54c4726',1,'PIFlags::operator>(const PIFlags &f)'],['../class_p_i_flags.html#ab15468c584d812993908f25e082a8a46',1,'PIFlags::operator>(const Enum &e)'],['../class_p_i_flags.html#a465dcf5ad5a0f3ce635a1cc58582ae73',1,'PIFlags::operator>(const int i)'],['../class_p_i_string.html#a559e23e281ff040dc447a47aead1556f',1,'PIString::operator>(const PIString &str) const '],['../class_p_i_string.html#a17725b847ca400d0817f4a89887658d6',1,'PIString::operator>(const PIChar c) const '],['../class_p_i_string.html#a19f4fa9c8c691030543627ba3b04c7fb',1,'PIString::operator>(const char *str) const '],['../class_p_i_string.html#a8f752b9a951be56a6e4bbf15d9683605',1,'PIString::operator>(const string &str) const '],['../class_p_i_system_time.html#a2bbab7edaddad2d31f9782aaf8441023',1,'PISystemTime::operator>()'],['../pichar_8h.html#a87f2cf00cfaf54f2c45e4529d8267523',1,'operator>(const char v, const PIChar &c): pichar.h'],['../pichar_8h.html#a5dc6be462318915b8d938a816c018ea9',1,'operator>(const char *v, const PIChar &c): pichar.h'],['../pichar_8h.html#a53cbd5dfc0e96fdd0d58bffc256d9157',1,'operator>(const int v, const PIChar &c): pichar.h']]], + ['operator_3e_3d',['operator>=',['../class_p_i_char.html#ac68d8b501225795d53adf67b4d9ea2b2',1,'PIChar::operator>=()'],['../class_p_i_flags.html#a7492424bc2aa14d9acc89ed804b43429',1,'PIFlags::operator>=(const PIFlags &f)'],['../class_p_i_flags.html#adbbd42330d0112e0a3027a4fecae5d0d',1,'PIFlags::operator>=(const Enum &e)'],['../class_p_i_flags.html#a9da15d887157a646afd68d397dfe1834',1,'PIFlags::operator>=(const int i)'],['../class_p_i_string.html#a1da2d74fa84f2da3d1632e20d834f0fa',1,'PIString::operator>=(const PIString &str) const '],['../class_p_i_string.html#ae4c9edd7b999ec3b755f584cbd730d93',1,'PIString::operator>=(const PIChar c) const '],['../class_p_i_string.html#a4b9695c703cb3055d9b395a84bbc091c',1,'PIString::operator>=(const char *str) const '],['../class_p_i_string.html#a0368a200e908bee57dabdfb5f8cf8563',1,'PIString::operator>=(const string &str) const '],['../class_p_i_system_time.html#ab6e479036d86834fbdc3eb39ae17f062',1,'PISystemTime::operator>=()'],['../pichar_8h.html#ab4990ff3eadcbc5aab844bc6758c5b8b',1,'operator>=(const char v, const PIChar &c): pichar.h'],['../pichar_8h.html#aed3f8114f5a468d2af576f6570cc3efa',1,'operator>=(const char *v, const PIChar &c): pichar.h'],['../pichar_8h.html#ae178de75f712e81d893a87fbd4d6c5a4',1,'operator>=(const int v, const PIChar &c): pichar.h']]], + ['operator_3e_3e',['operator>>',['../class_p_i_byte_array.html#ab13b3356e12200d943eca6fb5914fff3',1,'PIByteArray::operator>>(PIByteArray &s, uchar &v)'],['../class_p_i_byte_array.html#ab169b593f262836b81ef0f1e85742bb5',1,'PIByteArray::operator>>(PIByteArray &s, short &v)'],['../class_p_i_byte_array.html#a9193853f9065d13faa500d7402011e95',1,'PIByteArray::operator>>(PIByteArray &s, int &v)'],['../class_p_i_byte_array.html#a2936831420330a89c932b9378bcb531a',1,'PIByteArray::operator>>(PIByteArray &s, long &v)'],['../class_p_i_byte_array.html#ac2f7009be50024c741ba1e34e2520105',1,'PIByteArray::operator>>(PIByteArray &s, llong &v)'],['../class_p_i_byte_array.html#a6d7b09e8e0ae58e2a0660a95f5297d62',1,'PIByteArray::operator>>(PIByteArray &s, ushort &v)'],['../class_p_i_byte_array.html#a6c4c55eac2a9c3f087e4f86ae8d76104',1,'PIByteArray::operator>>(PIByteArray &s, uint &v)'],['../class_p_i_byte_array.html#a562da0ccdeabb8269757e25955bb3da5',1,'PIByteArray::operator>>(PIByteArray &s, ulong &v)'],['../class_p_i_byte_array.html#a51721eb920f53d0c919eec52cf10cd52',1,'PIByteArray::operator>>(PIByteArray &s, ullong &v)'],['../class_p_i_byte_array.html#a908c8071a8eee9fb7a3752bee614333a',1,'PIByteArray::operator>>(PIByteArray &s, float &v)'],['../class_p_i_byte_array.html#a4f8b92d20e45ebe4e3bac6e2ccedf9f0',1,'PIByteArray::operator>>(PIByteArray &s, double &v)'],['../class_p_i_byte_array.html#aa77ecc852d4e3ba6e4fbe7a7258cfb87',1,'PIByteArray::operator>>(PIByteArray &s, PIByteArray &v)'],['../class_p_i_byte_array.html#afb2b51047b10d19aced414fec7744dd2',1,'PIByteArray::operator>>(PIByteArray &s, PIByteArray::RawData v)'],['../class_p_i_byte_array.html#ab2b77a56ba810e64d937dc4f33438310',1,'PIByteArray::operator>>(PIByteArray &s, PIPair< Type0, Type1 > &v)'],['../class_p_i_byte_array.html#a3ad45b3c81b974189a6c9ab5193e24d5',1,'PIByteArray::operator>>(PIByteArray &s, PIVector< T > &v)'],['../class_p_i_byte_array.html#a35c4ea115bdcb4627fd9fa635d1c681a',1,'PIByteArray::operator>>(PIByteArray &s, PIList< T > &v)'],['../class_p_i_byte_array.html#a6cee541d60566eef92585f50aa9ec436',1,'PIByteArray::operator>>(PIByteArray &s, PIDeque< T > &v)'],['../class_p_i_string.html#a92a7c6060c9a5cea05fc97d6faea53a2',1,'PIString::operator>>()'],['../class_p_i_byte_array.html#a6cd37806e2577611e4a22dc2031fc166',1,'PIByteArray::operator>>(PIByteArray &s, PIString &v)'],['../class_p_i_byte_array.html#a410bed597b49992e265e0941feca5cb8',1,'PIByteArray::operator>>(PIByteArray &s, PIStringList &v)'],['../class_p_i_byte_array.html#ad563e018cb30fbced03966997b2fc65a',1,'PIByteArray::operator>>(PIByteArray &s, PISystemTime &v)'],['../pibytearray_8h.html#ab13b3356e12200d943eca6fb5914fff3',1,'operator>>(PIByteArray &s, uchar &v): pibytearray.h'],['../pibytearray_8h.html#ab169b593f262836b81ef0f1e85742bb5',1,'operator>>(PIByteArray &s, short &v): pibytearray.h'],['../pibytearray_8h.html#a9193853f9065d13faa500d7402011e95',1,'operator>>(PIByteArray &s, int &v): pibytearray.h'],['../pibytearray_8h.html#a2936831420330a89c932b9378bcb531a',1,'operator>>(PIByteArray &s, long &v): pibytearray.h'],['../pibytearray_8h.html#ac2f7009be50024c741ba1e34e2520105',1,'operator>>(PIByteArray &s, llong &v): pibytearray.h'],['../pibytearray_8h.html#a6d7b09e8e0ae58e2a0660a95f5297d62',1,'operator>>(PIByteArray &s, ushort &v): pibytearray.h'],['../pibytearray_8h.html#a6c4c55eac2a9c3f087e4f86ae8d76104',1,'operator>>(PIByteArray &s, uint &v): pibytearray.h'],['../pibytearray_8h.html#a562da0ccdeabb8269757e25955bb3da5',1,'operator>>(PIByteArray &s, ulong &v): pibytearray.h'],['../pibytearray_8h.html#a51721eb920f53d0c919eec52cf10cd52',1,'operator>>(PIByteArray &s, ullong &v): pibytearray.h'],['../pibytearray_8h.html#a908c8071a8eee9fb7a3752bee614333a',1,'operator>>(PIByteArray &s, float &v): pibytearray.h'],['../pibytearray_8h.html#a4f8b92d20e45ebe4e3bac6e2ccedf9f0',1,'operator>>(PIByteArray &s, double &v): pibytearray.h'],['../pibytearray_8h.html#aa77ecc852d4e3ba6e4fbe7a7258cfb87',1,'operator>>(PIByteArray &s, PIByteArray &v): pibytearray.h'],['../pibytearray_8h.html#afb2b51047b10d19aced414fec7744dd2',1,'operator>>(PIByteArray &s, PIByteArray::RawData v): pibytearray.h'],['../pibytearray_8h.html#ab2b77a56ba810e64d937dc4f33438310',1,'operator>>(PIByteArray &s, PIPair< Type0, Type1 > &v): pibytearray.h'],['../pibytearray_8h.html#a3ad45b3c81b974189a6c9ab5193e24d5',1,'operator>>(PIByteArray &s, PIVector< T > &v): pibytearray.h'],['../pibytearray_8h.html#a35c4ea115bdcb4627fd9fa635d1c681a',1,'operator>>(PIByteArray &s, PIList< T > &v): pibytearray.h'],['../pibytearray_8h.html#a6cee541d60566eef92585f50aa9ec436',1,'operator>>(PIByteArray &s, PIDeque< T > &v): pibytearray.h'],['../pichar_8h.html#a697daa3db190238c3cad29b288821ae0',1,'operator>>(PIByteArray &s, PIChar &v): pichar.h'],['../pistring_8h.html#a92a7c6060c9a5cea05fc97d6faea53a2',1,'operator>>(std::istream &s, PIString &v): pistring.h'],['../pistring_8h.html#a6cd37806e2577611e4a22dc2031fc166',1,'operator>>(PIByteArray &s, PIString &v): pistring.h'],['../pistring_8h.html#a410bed597b49992e265e0941feca5cb8',1,'operator>>(PIByteArray &s, PIStringList &v): pistring.h'],['../pitime_8h.html#ad563e018cb30fbced03966997b2fc65a',1,'operator>>(PIByteArray &s, PISystemTime &v): pitime.h']]], + ['operator_5b_5d',['operator[]',['../class_p_i_set.html#ab4b957ab5ad99589a07cea34cce4b4ca',1,'PISet::operator[]()'],['../class_p_i_flags.html#a8db0289c6a2d99736f2ad8cf8ab48aea',1,'PIFlags::operator[]()'],['../class_p_i_string.html#aa367374496df45efba10fd44e52a6777',1,'PIString::operator[](const int pos) const '],['../class_p_i_string.html#a192df04225c734474a74ed92a3be92e4',1,'PIString::operator[](const int pos)']]], + ['operator_5e',['operator^',['../class_p_i_flags.html#a6ba52142f66b679d36c16f7954c87296',1,'PIFlags::operator^(PIFlags f) const '],['../class_p_i_flags.html#ac0526e886b96e22c4e3433eecd7e8682',1,'PIFlags::operator^(Enum e) const '],['../class_p_i_flags.html#a34b1ab652fa134e129c55502c577f10e',1,'PIFlags::operator^(int i) const ']]], + ['operator_5e_3d',['operator^=',['../class_p_i_flags.html#a52cc502ff50daa80c835b830f887e123',1,'PIFlags::operator^=(const PIFlags &f)'],['../class_p_i_flags.html#a786e69005ae156211ea3fbfcfb442c5a',1,'PIFlags::operator^=(const Enum &e)'],['../class_p_i_flags.html#a53d822bbb7e7b3ed6aed90d6b07d96cf',1,'PIFlags::operator^=(const int i)']]], + ['operator_7c',['operator|',['../class_p_i_flags.html#a9b502fbd3bb299efac66cbeb364b3480',1,'PIFlags::operator|(PIFlags f) const '],['../class_p_i_flags.html#a0cfb21b9520162fc35a4e9b55dade176',1,'PIFlags::operator|(Enum e) const '],['../class_p_i_flags.html#a9f7a72e1d42087971ebc2368f2a4819d',1,'PIFlags::operator|(int i) const ']]], + ['operator_7c_3d',['operator|=',['../class_p_i_flags.html#ad75fb5da994327ba3d7c3fc6ec6618a8',1,'PIFlags::operator|=(const PIFlags &f)'],['../class_p_i_flags.html#a875de3331e28f62926b93434d97f0e95',1,'PIFlags::operator|=(const Enum &e)'],['../class_p_i_flags.html#aa2c5fcf51605331ef710d5fa9f9f85dc',1,'PIFlags::operator|=(const int i)']]] +]; diff --git a/pip/doc/html/search/mag_sel.png b/pip/doc/html/search/mag_sel.png new file mode 100644 index 0000000000000000000000000000000000000000..81f6040a2092402b4d98f9ffa8855d12a0d4ca17 GIT binary patch literal 563 zcmV-30?hr1P)zxx&tqG15pu7)IiiXFflOc2k;dXd>%13GZAy? zRz!q0=|E6a6vV)&ZBS~G9oe0kbqyw1*gvY`{Pop2oKq#FlzgXt@Xh-7fxh>}`Fxg> z$%N%{$!4=5nM{(;=c!aG1Ofr^Do{u%Ih{^&Fc@H2)+a-?TBXrw5DW&z%Nb6mQ!L9O zl}b@6mB?f=tX3;#vl)}ggh(Vpyh(IK z(Mb0D{l{U$FsRjP;!{($+bsaaVi8T#1c0V#qEIOCYa9@UVLV`f__E81L;?WEaRA;Y zUH;rZ;vb;mk7JX|$=i3O~&If0O@oZfLg8gfIjW=dcBsz;gI=!{-r4# z4%6v$&~;q^j7Fo67yJ(NJWuX+I~I!tj^nW3?}^9bq|<3^+vapS5sgM^x7!cs(+mMT z&y%j};&~po+YO)3hoUH4E*E;e9>?R6SS&`X)p`njycAVcg{rEb41T{~Hk(bl-7eSb zmFxA2uIqo#@R?lKm50ND`~6Nfn|-b1|L6O98vt3Tx@gKz#isxO002ovPDHLkV1kyW B_l^Jn literal 0 HcmV?d00001 diff --git a/pip/doc/html/search/namespaces_0.html b/pip/doc/html/search/namespaces_0.html new file mode 100644 index 0000000..cd68930 --- /dev/null +++ b/pip/doc/html/search/namespaces_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/namespaces_0.js b/pip/doc/html/search/namespaces_0.js new file mode 100644 index 0000000..a9d4764 --- /dev/null +++ b/pip/doc/html/search/namespaces_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['picoutmanipulators',['PICoutManipulators',['../namespace_p_i_cout_manipulators.html',1,'']]] +]; diff --git a/pip/doc/html/search/nomatches.html b/pip/doc/html/search/nomatches.html new file mode 100644 index 0000000..b1ded27 --- /dev/null +++ b/pip/doc/html/search/nomatches.html @@ -0,0 +1,12 @@ + + + + + + + +
    +
    No Matches
    +
    + + diff --git a/pip/doc/html/search/pages_0.html b/pip/doc/html/search/pages_0.html new file mode 100644 index 0000000..582ce94 --- /dev/null +++ b/pip/doc/html/search/pages_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/pages_0.js b/pip/doc/html/search/pages_0.js new file mode 100644 index 0000000..5179450 --- /dev/null +++ b/pip/doc/html/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['advanced_20using',['Advanced using',['../using_advanced.html',1,'']]] +]; diff --git a/pip/doc/html/search/pages_1.html b/pip/doc/html/search/pages_1.html new file mode 100644 index 0000000..6b48950 --- /dev/null +++ b/pip/doc/html/search/pages_1.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/pages_1.js b/pip/doc/html/search/pages_1.js new file mode 100644 index 0000000..038da54 --- /dev/null +++ b/pip/doc/html/search/pages_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['deprecated_20list',['Deprecated List',['../deprecated.html',1,'']]] +]; diff --git a/pip/doc/html/search/pages_2.html b/pip/doc/html/search/pages_2.html new file mode 100644 index 0000000..1efc5aa --- /dev/null +++ b/pip/doc/html/search/pages_2.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/pages_2.js b/pip/doc/html/search/pages_2.js new file mode 100644 index 0000000..41a70f8 --- /dev/null +++ b/pip/doc/html/search/pages_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['getting_20started',['Getting started',['../using_basic.html',1,'']]] +]; diff --git a/pip/doc/html/search/pages_3.html b/pip/doc/html/search/pages_3.html new file mode 100644 index 0000000..13b0572 --- /dev/null +++ b/pip/doc/html/search/pages_3.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/pages_3.js b/pip/doc/html/search/pages_3.js new file mode 100644 index 0000000..3351850 --- /dev/null +++ b/pip/doc/html/search/pages_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['what_20is_20pip',['What is PIP',['../index.html',1,'']]] +]; diff --git a/pip/doc/html/search/related_0.html b/pip/doc/html/search/related_0.html new file mode 100644 index 0000000..7077e19 --- /dev/null +++ b/pip/doc/html/search/related_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/related_0.js b/pip/doc/html/search/related_0.js new file mode 100644 index 0000000..d9b1653 --- /dev/null +++ b/pip/doc/html/search/related_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['add_5fnew_5fto_5fcollection',['ADD_NEW_TO_COLLECTION',['../class_p_i_collection.html#a78cc4937360f5e286cdd8baf403edfec',1,'PICollection']]], + ['add_5fto_5fcollection',['ADD_TO_COLLECTION',['../class_p_i_collection.html#a450e8ac720c8b0f6223ad2bf42f83ae2',1,'PICollection']]] +]; diff --git a/pip/doc/html/search/related_1.html b/pip/doc/html/search/related_1.html new file mode 100644 index 0000000..b2f4bf1 --- /dev/null +++ b/pip/doc/html/search/related_1.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/related_1.js b/pip/doc/html/search/related_1.js new file mode 100644 index 0000000..d7cdc21 --- /dev/null +++ b/pip/doc/html/search/related_1.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['connect',['CONNECT',['../class_p_i_object.html#a65528c74adc6691eac2c7a2f39328064',1,'PIObject']]], + ['connect0',['CONNECT0',['../class_p_i_object.html#a38e74a7ce99df00a10517f5ce4aa66c5',1,'PIObject']]], + ['connect1',['CONNECT1',['../class_p_i_object.html#a36132851189bb01db4957595111a28db',1,'PIObject']]], + ['connect2',['CONNECT2',['../class_p_i_object.html#a850bbf4e8361a106c99da4c46f684247',1,'PIObject']]], + ['connect3',['CONNECT3',['../class_p_i_object.html#ab45dbd69bde3cde22d4aba27ed585407',1,'PIObject']]], + ['connect4',['CONNECT4',['../class_p_i_object.html#a34e41d730c07354e07333def3d854019',1,'PIObject']]], + ['connectu',['CONNECTU',['../class_p_i_object.html#ac86f9567fcbe10d7e49685e0a01b8427',1,'PIObject']]] +]; diff --git a/pip/doc/html/search/related_2.html b/pip/doc/html/search/related_2.html new file mode 100644 index 0000000..221500a --- /dev/null +++ b/pip/doc/html/search/related_2.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/related_2.js b/pip/doc/html/search/related_2.js new file mode 100644 index 0000000..60bdfea --- /dev/null +++ b/pip/doc/html/search/related_2.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['disconnect',['DISCONNECT',['../class_p_i_object.html#a587604e6f3570c0fc32794384d4d0d1f',1,'PIObject']]], + ['disconnect0',['DISCONNECT0',['../class_p_i_object.html#aed7fd8edaccbbca33c51417ca43ac32a',1,'PIObject']]], + ['disconnect1',['DISCONNECT1',['../class_p_i_object.html#ae030e8deb226c636d2df22076391f12c',1,'PIObject']]], + ['disconnect2',['DISCONNECT2',['../class_p_i_object.html#a8f0609bfd7dfcd4512d76480bc114dab',1,'PIObject']]], + ['disconnect3',['DISCONNECT3',['../class_p_i_object.html#af2789f99d1916f231fc579f00370fa6f',1,'PIObject']]], + ['disconnect4',['DISCONNECT4',['../class_p_i_object.html#aedf429d3192da764163c1377cad310e3',1,'PIObject']]] +]; diff --git a/pip/doc/html/search/related_3.html b/pip/doc/html/search/related_3.html new file mode 100644 index 0000000..9bab23f --- /dev/null +++ b/pip/doc/html/search/related_3.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/related_3.js b/pip/doc/html/search/related_3.js new file mode 100644 index 0000000..a6eded3 --- /dev/null +++ b/pip/doc/html/search/related_3.js @@ -0,0 +1,21 @@ +var searchData= +[ + ['event',['EVENT',['../class_p_i_object.html#a7877e997621e1161f058fce90febd464',1,'PIObject']]], + ['event0',['EVENT0',['../class_p_i_object.html#a4fa760299649bc8aeaa0dcf4d605be70',1,'PIObject']]], + ['event1',['EVENT1',['../class_p_i_object.html#a7083e0b630c70def2ce05d60d70a45b9',1,'PIObject']]], + ['event2',['EVENT2',['../class_p_i_object.html#a91d380b7235ad11b4830c4c2e8860618',1,'PIObject']]], + ['event3',['EVENT3',['../class_p_i_object.html#a685a85b0791e73158dc0173b4e18dd00',1,'PIObject']]], + ['event4',['EVENT4',['../class_p_i_object.html#a59032ae5e0b94cdfb52be1f24d5e8252',1,'PIObject']]], + ['event_5fhandler',['EVENT_HANDLER',['../class_p_i_object.html#ae92ae8e64fbb4c6fa7d87cc1e93d55c0',1,'PIObject']]], + ['event_5fhandler0',['EVENT_HANDLER0',['../class_p_i_object.html#ab605cf0454d34cc72c65bfed2abd696a',1,'PIObject']]], + ['event_5fhandler1',['EVENT_HANDLER1',['../class_p_i_object.html#a56defa004e9b7efb2db50b3a43ca7225',1,'PIObject']]], + ['event_5fhandler2',['EVENT_HANDLER2',['../class_p_i_object.html#abb64b696544ee4ee8715add9747c1293',1,'PIObject']]], + ['event_5fhandler3',['EVENT_HANDLER3',['../class_p_i_object.html#af90eced49fbdb43f5fc631fa7e7a44fb',1,'PIObject']]], + ['event_5fhandler4',['EVENT_HANDLER4',['../class_p_i_object.html#ae8a8499ba07a4cc16c0b15c51b197d9f',1,'PIObject']]], + ['event_5fvhandler',['EVENT_VHANDLER',['../class_p_i_object.html#a26a0e3181ebb2a90c11e9a7eb906a99e',1,'PIObject']]], + ['event_5fvhandler0',['EVENT_VHANDLER0',['../class_p_i_object.html#a338377c8ec10707dd26a168b8aef5c31',1,'PIObject']]], + ['event_5fvhandler1',['EVENT_VHANDLER1',['../class_p_i_object.html#abf138848427466a7ae91ada5876f926d',1,'PIObject']]], + ['event_5fvhandler2',['EVENT_VHANDLER2',['../class_p_i_object.html#ad0ba4a14c77b8d968dc13918f9b2d384',1,'PIObject']]], + ['event_5fvhandler3',['EVENT_VHANDLER3',['../class_p_i_object.html#a4f47b429ac594cebdca1567e1b9a1021',1,'PIObject']]], + ['event_5fvhandler4',['EVENT_VHANDLER4',['../class_p_i_object.html#a96b2461314db11f3b68942bcd4b9d13d',1,'PIObject']]] +]; diff --git a/pip/doc/html/search/related_4.html b/pip/doc/html/search/related_4.html new file mode 100644 index 0000000..b011d12 --- /dev/null +++ b/pip/doc/html/search/related_4.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/related_4.js b/pip/doc/html/search/related_4.js new file mode 100644 index 0000000..63134e1 --- /dev/null +++ b/pip/doc/html/search/related_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['handler',['HANDLER',['../class_p_i_object.html#a3f7b0da6b28ced23e1deee48dde17c98',1,'PIObject']]] +]; diff --git a/pip/doc/html/search/related_5.html b/pip/doc/html/search/related_5.html new file mode 100644 index 0000000..f8876b5 --- /dev/null +++ b/pip/doc/html/search/related_5.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/related_5.js b/pip/doc/html/search/related_5.js new file mode 100644 index 0000000..6bb5df9 --- /dev/null +++ b/pip/doc/html/search/related_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['operator_3c_3c',['operator<<',['../struct_p_i_byte_array_1_1_raw_data.html#a0473accc805030f209813084ae135f40',1,'PIByteArray::RawData::operator<<()'],['../class_p_i_char.html#a43cad479313327c089e30ae490e01c24',1,'PIChar::operator<<()']]], + ['operator_3e_3e',['operator>>',['../struct_p_i_byte_array_1_1_raw_data.html#ab6da5d995b37fa429d0f3e1288b78393',1,'PIByteArray::RawData::operator>>()'],['../class_p_i_char.html#a697daa3db190238c3cad29b288821ae0',1,'PIChar::operator>>()']]] +]; diff --git a/pip/doc/html/search/related_6.html b/pip/doc/html/search/related_6.html new file mode 100644 index 0000000..9feb5fc --- /dev/null +++ b/pip/doc/html/search/related_6.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/related_6.js b/pip/doc/html/search/related_6.js new file mode 100644 index 0000000..9e6d3fa --- /dev/null +++ b/pip/doc/html/search/related_6.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['picoutobj',['piCoutObj',['../class_p_i_object.html#a722b67a967e55918f6921de66ecffce9',1,'PIObject']]], + ['piiodevice',['PIIODEVICE',['../class_p_i_i_o_device.html#a5adabd429443716b75771317ec43301b',1,'PIIODevice']]], + ['piobject',['PIOBJECT',['../class_p_i_object.html#affa62b02040517a34b3f173d804e487f',1,'PIObject']]], + ['piobject_5fparent',['PIOBJECT_PARENT',['../class_p_i_object.html#a4ce1840f79eac65344a4c5823f5034d4',1,'PIObject']]] +]; diff --git a/pip/doc/html/search/related_7.html b/pip/doc/html/search/related_7.html new file mode 100644 index 0000000..cea3da2 --- /dev/null +++ b/pip/doc/html/search/related_7.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/related_7.js b/pip/doc/html/search/related_7.js new file mode 100644 index 0000000..5bebf6c --- /dev/null +++ b/pip/doc/html/search/related_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['register_5fdevice',['REGISTER_DEVICE',['../class_p_i_i_o_device.html#a672a05d4391737b8fecd4524f1a47bda',1,'PIIODevice']]] +]; diff --git a/pip/doc/html/search/related_8.html b/pip/doc/html/search/related_8.html new file mode 100644 index 0000000..8f51c42 --- /dev/null +++ b/pip/doc/html/search/related_8.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/related_8.js b/pip/doc/html/search/related_8.js new file mode 100644 index 0000000..5c336ae --- /dev/null +++ b/pip/doc/html/search/related_8.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['weak_5fconnect',['WEAK_CONNECT',['../class_p_i_object.html#a52fc22658e025b4c15c8a2454d81b289',1,'PIObject']]], + ['weak_5fconnect0',['WEAK_CONNECT0',['../class_p_i_object.html#aaaba5b68617a43903056bc175b8cd162',1,'PIObject']]], + ['weak_5fconnect1',['WEAK_CONNECT1',['../class_p_i_object.html#a37d80492e781bf82b9c22c56977da81e',1,'PIObject']]], + ['weak_5fconnect2',['WEAK_CONNECT2',['../class_p_i_object.html#a34134cc70172ef5a8d38ba8eb0db327d',1,'PIObject']]], + ['weak_5fconnect3',['WEAK_CONNECT3',['../class_p_i_object.html#a601eb7e6e4c3c1a2ba741abbaf271fed',1,'PIObject']]], + ['weak_5fconnect4',['WEAK_CONNECT4',['../class_p_i_object.html#a483ad0828f2c221308d95fd07ba1ee6e',1,'PIObject']]] +]; diff --git a/pip/doc/html/search/search.css b/pip/doc/html/search/search.css new file mode 100644 index 0000000..82335e0 --- /dev/null +++ b/pip/doc/html/search/search.css @@ -0,0 +1,271 @@ +/*---------------- Search Box */ + +#FSearchBox { + float: left; +} + +#MSearchBox { + white-space : nowrap; + position: absolute; + float: none; + display: inline; + margin-top: 8px; + right: 0px; + width: 170px; + z-index: 102; + background-color: white; +} + +#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:111px; + margin-left:20px; + padding-left:4px; + color: #909090; + outline: none; + font: 9pt Arial, Verdana, sans-serif; +} + +#FSearchBox #MSearchField { + margin-left:15px; +} + +#MSearchBox .right { + display:block; + position:absolute; + right:10px; + top:0px; + 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 #A19CCB; + background-color: #FAFAFC; + z-index: 1; + 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: #50498C; + 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: #F0F0F7; +} + +/* ----------------------------------- */ + + +#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: #564F96; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #564F96; + 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: #F2F2F8; +} + +.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/pip/doc/html/search/search.js b/pip/doc/html/search/search.js new file mode 100644 index 0000000..752955a --- /dev/null +++ b/pip/doc/html/search/search.js @@ -0,0 +1,815 @@ +// Search script generated by doxygen +// Copyright (C) 2009 by Dimitri van Heesch. + +// The code in this file is loosly based on main.js, part of Natural Docs, +// which is Copyright (C) 2003-2008 Greg Valure +// Natural Docs is licensed under the GPL. + +var indexSectionsWithContent = +{ + 0: "_abcdefghijklmnopqrstuvwy", + 1: "beiprst", + 2: "p", + 3: "p", + 4: "_abcdefghijklmnopqrstuvw", + 5: "abcfhimnprstv", + 6: "ci", + 7: "afipqst", + 8: "abcdefghilmnopqrstuwy", + 9: "acdehoprw", + 10: "acfhlmpqw", + 11: "adgw" +}; + +var indexSectionNames = +{ + 0: "all", + 1: "classes", + 2: "namespaces", + 3: "files", + 4: "functions", + 5: "variables", + 6: "typedefs", + 7: "enums", + 8: "enumvalues", + 9: "related", + 10: "defines", + 11: "pages" +}; + +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; ek7RCwB~R6VQOP#AvB$vH7i{6H{96zot$7cZT<7246EF5Np6N}+$IbiG6W zg#87A+NFaX+=_^xM1#gCtshC=E{%9^uQX_%?YwXvo{#q&MnpJ8uh(O?ZRc&~_1%^SsPxG@rfElJg-?U zm!Cz-IOn(qJP3kDp-^~qt+FGbl=5jNli^Wj_xIBG{Rc0en{!oFvyoNC7{V~T8}b>| z=jL2WIReZzX(YN(_9fV;BBD$VXQIxNasAL8ATvEu822WQ%mvv4FO#qs` BFGc_W literal 0 HcmV?d00001 diff --git a/pip/doc/html/search/search_r.png b/pip/doc/html/search/search_r.png new file mode 100644 index 0000000000000000000000000000000000000000..97ee8b439687084201b79c6f776a41f495c6392a GIT binary patch literal 612 zcmV-q0-ODbP)PbXFRCwB?)W514K@j&X?z2*SxFI6-@HT2E2K=9X9%Pb zEK*!TBw&g(DMC;|A)uGlRkOS9vd-?zNs%bR4d$w+ox_iFnE8fvIvv7^5<(>Te12Li z7C)9srCzmK{ZcNM{YIl9j{DePFgOWiS%xG@5CnnnJa4nvY<^glbz7^|-ZY!dUkAwd z{gaTC@_>b5h~;ug#R0wRL0>o5!hxm*s0VW?8dr}O#zXTRTnrQm_Z7z1Mrnx>&p zD4qifUjzLvbVVWi?l?rUzwt^sdb~d!f_LEhsRVIXZtQ=qSxuxqm zEX#tf>$?M_Y1-LSDT)HqG?`%-%ZpY!#{N!rcNIiL;G7F0`l?)mNGTD9;f9F5Up3Kg zw}a<-JylhG&;=!>B+fZaCX+?C+kHYrP%c?X2!Zu_olK|GcS4A70HEy;vn)I0>0kLH z`jc(WIaaHc7!HS@f*^R^Znx8W=_jIl2oWJoQ*h1^$FX!>*PqR1J8k|fw}w_y}TpE>7m8DqDO<3z`OzXt$ccSejbEZCg@0000 + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/typedefs_0.js b/pip/doc/html/search/typedefs_0.js new file mode 100644 index 0000000..dc22313 --- /dev/null +++ b/pip/doc/html/search/typedefs_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['condition',['Condition',['../class_p_i_state_machine.html#abc7ad84744d038a0eb598e82ac536ed7',1,'PIStateMachine']]] +]; diff --git a/pip/doc/html/search/typedefs_1.html b/pip/doc/html/search/typedefs_1.html new file mode 100644 index 0000000..ad5e647 --- /dev/null +++ b/pip/doc/html/search/typedefs_1.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/typedefs_1.js b/pip/doc/html/search/typedefs_1.js new file mode 100644 index 0000000..b21f692 --- /dev/null +++ b/pip/doc/html/search/typedefs_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['interfaceflags',['InterfaceFlags',['../class_p_i_ethernet.html#a26d086cc06bc533006ac4fca2c3bab33',1,'PIEthernet']]] +]; diff --git a/pip/doc/html/search/variables_0.html b/pip/doc/html/search/variables_0.html new file mode 100644 index 0000000..571f394 --- /dev/null +++ b/pip/doc/html/search/variables_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/variables_0.js b/pip/doc/html/search/variables_0.js new file mode 100644 index 0000000..9f5023e --- /dev/null +++ b/pip/doc/html/search/variables_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['address',['address',['../struct_p_i_ethernet_1_1_interface.html#aa753498f5a63938b9218b3ccbd8a01bc',1,'PIEthernet::Interface']]], + ['autotransition',['autoTransition',['../struct_p_i_state_machine_1_1_rule.html#ab1f2afcdaa5ff5308769e5b10930fb73',1,'PIStateMachine::Rule']]] +]; diff --git a/pip/doc/html/search/variables_1.html b/pip/doc/html/search/variables_1.html new file mode 100644 index 0000000..cef7a9e --- /dev/null +++ b/pip/doc/html/search/variables_1.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/variables_1.js b/pip/doc/html/search/variables_1.js new file mode 100644 index 0000000..e011214 --- /dev/null +++ b/pip/doc/html/search/variables_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['broadcast',['broadcast',['../struct_p_i_ethernet_1_1_interface.html#a840af238c8f0ec3216b7978d4a896ef8',1,'PIEthernet::Interface::broadcast()'],['../class_p_i_ethernet.html#abd3b6f9ba04b899316f8bd7067ec03e7',1,'PIEthernet::broadcast()']]] +]; diff --git a/pip/doc/html/search/variables_2.html b/pip/doc/html/search/variables_2.html new file mode 100644 index 0000000..b299c29 --- /dev/null +++ b/pip/doc/html/search/variables_2.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/variables_2.js b/pip/doc/html/search/variables_2.js new file mode 100644 index 0000000..70836d4 --- /dev/null +++ b/pip/doc/html/search/variables_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['conditions',['conditions',['../struct_p_i_state_machine_1_1_rule.html#a0c021e87831b92cbbfee9c7d6585cc15',1,'PIStateMachine::Rule']]] +]; diff --git a/pip/doc/html/search/variables_3.html b/pip/doc/html/search/variables_3.html new file mode 100644 index 0000000..a7d2186 --- /dev/null +++ b/pip/doc/html/search/variables_3.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/variables_3.js b/pip/doc/html/search/variables_3.js new file mode 100644 index 0000000..d20a07d --- /dev/null +++ b/pip/doc/html/search/variables_3.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['flags',['flags',['../struct_p_i_ethernet_1_1_interface.html#a327b42e5652b8dfd680a3eddec948237',1,'PIEthernet::Interface']]], + ['from',['from',['../struct_p_i_state_machine_1_1_rule.html#af2282cbdc1961296c15afd440696ab4e',1,'PIStateMachine::Rule']]] +]; diff --git a/pip/doc/html/search/variables_4.html b/pip/doc/html/search/variables_4.html new file mode 100644 index 0000000..2f6da69 --- /dev/null +++ b/pip/doc/html/search/variables_4.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/variables_4.js b/pip/doc/html/search/variables_4.js new file mode 100644 index 0000000..608fc66 --- /dev/null +++ b/pip/doc/html/search/variables_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['handler',['handler',['../struct_p_i_state_machine_1_1_rule.html#abedad360951b33a15a01a26ab211860d',1,'PIStateMachine::Rule::handler()'],['../struct_p_i_state_machine_1_1_state.html#a27a357a8b0fdc53910696032e0d5c3fd',1,'PIStateMachine::State::handler()']]] +]; diff --git a/pip/doc/html/search/variables_5.html b/pip/doc/html/search/variables_5.html new file mode 100644 index 0000000..6deb056 --- /dev/null +++ b/pip/doc/html/search/variables_5.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/variables_5.js b/pip/doc/html/search/variables_5.js new file mode 100644 index 0000000..8d137dd --- /dev/null +++ b/pip/doc/html/search/variables_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['index',['index',['../struct_p_i_ethernet_1_1_interface.html#adabd5e847a09e6d81e5a4f7f8a33d6cc',1,'PIEthernet::Interface']]], + ['ip',['ip',['../class_p_i_ethernet.html#ae49bc185dedf39646ea445fd57e21283',1,'PIEthernet']]] +]; diff --git a/pip/doc/html/search/variables_6.html b/pip/doc/html/search/variables_6.html new file mode 100644 index 0000000..43a19b6 --- /dev/null +++ b/pip/doc/html/search/variables_6.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/variables_6.js b/pip/doc/html/search/variables_6.js new file mode 100644 index 0000000..7f0e6a1 --- /dev/null +++ b/pip/doc/html/search/variables_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['mac',['mac',['../struct_p_i_ethernet_1_1_interface.html#a115e97cf7fb6306138c722fdf0d0d711',1,'PIEthernet::Interface']]] +]; diff --git a/pip/doc/html/search/variables_7.html b/pip/doc/html/search/variables_7.html new file mode 100644 index 0000000..22b439e --- /dev/null +++ b/pip/doc/html/search/variables_7.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/variables_7.js b/pip/doc/html/search/variables_7.js new file mode 100644 index 0000000..989856b --- /dev/null +++ b/pip/doc/html/search/variables_7.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['name',['name',['../struct_p_i_state_machine_1_1_state.html#aa0acfb1b28d4a803f7e896a3fab906f8',1,'PIStateMachine::State::name()'],['../struct_p_i_ethernet_1_1_interface.html#a9994b57e884e2ac345520f5743957a88',1,'PIEthernet::Interface::name()']]], + ['nanoseconds',['nanoseconds',['../class_p_i_system_time.html#a44d03ab983c54f3edfe3f5e57e08b15a',1,'PISystemTime']]], + ['netmask',['netmask',['../struct_p_i_ethernet_1_1_interface.html#ac20887e6c3e2052f67f057d85d99fca6',1,'PIEthernet::Interface']]] +]; diff --git a/pip/doc/html/search/variables_8.html b/pip/doc/html/search/variables_8.html new file mode 100644 index 0000000..cf7a26e --- /dev/null +++ b/pip/doc/html/search/variables_8.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/variables_8.js b/pip/doc/html/search/variables_8.js new file mode 100644 index 0000000..8c4095f --- /dev/null +++ b/pip/doc/html/search/variables_8.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['pidebug',['piDebug',['../piincludes_8h.html#a4f24177400b625bdd603032fa6e2e14a',1,'piincludes.cpp']]], + ['port',['port',['../class_p_i_ethernet.html#ad6b354929e62f909918d73633ea49135',1,'PIEthernet']]], + ['ptp',['ptp',['../struct_p_i_ethernet_1_1_interface.html#a7255bb721c0f03b4465eefa422e984da',1,'PIEthernet::Interface']]] +]; diff --git a/pip/doc/html/search/variables_9.html b/pip/doc/html/search/variables_9.html new file mode 100644 index 0000000..4efc5aa --- /dev/null +++ b/pip/doc/html/search/variables_9.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/variables_9.js b/pip/doc/html/search/variables_9.js new file mode 100644 index 0000000..39696a6 --- /dev/null +++ b/pip/doc/html/search/variables_9.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['resetallconditions',['resetAllConditions',['../struct_p_i_state_machine_1_1_rule.html#a67df3697d1b5868ec367402d0f7c1cb6',1,'PIStateMachine::Rule']]], + ['reuseaddress',['reuseAddress',['../class_p_i_ethernet.html#a079e3664394cae2bd1a7981bbfd580ee',1,'PIEthernet']]] +]; diff --git a/pip/doc/html/search/variables_a.html b/pip/doc/html/search/variables_a.html new file mode 100644 index 0000000..04a9a32 --- /dev/null +++ b/pip/doc/html/search/variables_a.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/variables_a.js b/pip/doc/html/search/variables_a.js new file mode 100644 index 0000000..5840ef4 --- /dev/null +++ b/pip/doc/html/search/variables_a.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['seconds',['seconds',['../class_p_i_system_time.html#a04b205ecf95921596a68c442b49b34b0',1,'PISystemTime']]] +]; diff --git a/pip/doc/html/search/variables_b.html b/pip/doc/html/search/variables_b.html new file mode 100644 index 0000000..02bb87b --- /dev/null +++ b/pip/doc/html/search/variables_b.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/variables_b.js b/pip/doc/html/search/variables_b.js new file mode 100644 index 0000000..f3cd9e1 --- /dev/null +++ b/pip/doc/html/search/variables_b.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['to',['to',['../struct_p_i_state_machine_1_1_rule.html#a68721e6beda4580b09fe52e80d47b935',1,'PIStateMachine::Rule']]] +]; diff --git a/pip/doc/html/search/variables_c.html b/pip/doc/html/search/variables_c.html new file mode 100644 index 0000000..7118dd0 --- /dev/null +++ b/pip/doc/html/search/variables_c.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/pip/doc/html/search/variables_c.js b/pip/doc/html/search/variables_c.js new file mode 100644 index 0000000..14b58a9 --- /dev/null +++ b/pip/doc/html/search/variables_c.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['value',['value',['../struct_p_i_state_machine_1_1_state.html#a65e79c60532034d5b2be3ee8fe672d43',1,'PIStateMachine::State']]] +]; diff --git a/pip/doc/html/struct_p_i_byte_array_1_1_raw_data-members.html b/pip/doc/html/struct_p_i_byte_array_1_1_raw_data-members.html new file mode 100644 index 0000000..7a36aac --- /dev/null +++ b/pip/doc/html/struct_p_i_byte_array_1_1_raw_data-members.html @@ -0,0 +1,131 @@ + + + + + + +PIP: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    PIByteArray::RawData Member List
    +
    +
    + +

    This is the complete list of members for PIByteArray::RawData, including all inherited members.

    + + + + + +
    operator<<(PIByteArray &s, const PIByteArray::RawData &v)PIByteArray::RawDatafriend
    operator>>(PIByteArray &s, PIByteArray::RawData v)PIByteArray::RawDatafriend
    RawData(void *data=0, int size=0)PIByteArray::RawDatainline
    RawData(const void *data, const int size)PIByteArray::RawDatainline
    +
    + + + + diff --git a/pip/doc/html/struct_p_i_byte_array_1_1_raw_data.html b/pip/doc/html/struct_p_i_byte_array_1_1_raw_data.html new file mode 100644 index 0000000..f2cd2ed --- /dev/null +++ b/pip/doc/html/struct_p_i_byte_array_1_1_raw_data.html @@ -0,0 +1,157 @@ + + + + + + +PIP: PIByteArray::RawData Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    + +
    +
    PIByteArray::RawData Struct Reference
    +
    +
    + +

    Help struct to store/restore custom blocks of data to/from PIByteArray. + More...

    + + + + + + + + +

    +Public Member Functions

    RawData (void *data=0, int size=0)
     Constructs data block.
     
    RawData (const void *data, const int size)
     Constructs data block.
     
    + + + + + + + +

    +Friends

    +PIByteArrayoperator<< (PIByteArray &s, const PIByteArray::RawData &v)
     Store operator, see Attention for details.
     
    +PIByteArrayoperator>> (PIByteArray &s, PIByteArray::RawData v)
     Restore operator, see Attention for details.
     
    +

    Detailed Description

    +

    Help struct to store/restore custom blocks of data to/from PIByteArray.

    +
    +
    + + + + diff --git a/pip/doc/html/struct_p_i_byte_array_1_1_raw_data.js b/pip/doc/html/struct_p_i_byte_array_1_1_raw_data.js new file mode 100644 index 0000000..90b2dac --- /dev/null +++ b/pip/doc/html/struct_p_i_byte_array_1_1_raw_data.js @@ -0,0 +1,7 @@ +var struct_p_i_byte_array_1_1_raw_data = +[ + [ "RawData", "struct_p_i_byte_array_1_1_raw_data.html#a57c5b593f88843f43a2644b742f10838", null ], + [ "RawData", "struct_p_i_byte_array_1_1_raw_data.html#a35220a8724f8a8a803380ae6f4653ae1", null ], + [ "operator<<", "struct_p_i_byte_array_1_1_raw_data.html#a0473accc805030f209813084ae135f40", null ], + [ "operator>>", "struct_p_i_byte_array_1_1_raw_data.html#ab6da5d995b37fa429d0f3e1288b78393", null ] +]; \ No newline at end of file diff --git a/pip/doc/html/struct_p_i_ethernet_1_1_interface-members.html b/pip/doc/html/struct_p_i_ethernet_1_1_interface-members.html new file mode 100644 index 0000000..55a14d2 --- /dev/null +++ b/pip/doc/html/struct_p_i_ethernet_1_1_interface-members.html @@ -0,0 +1,141 @@ + + + + + + +PIP: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + + + + + + diff --git a/pip/doc/html/struct_p_i_ethernet_1_1_interface.html b/pip/doc/html/struct_p_i_ethernet_1_1_interface.html new file mode 100644 index 0000000..06b660f --- /dev/null +++ b/pip/doc/html/struct_p_i_ethernet_1_1_interface.html @@ -0,0 +1,197 @@ + + + + + + +PIP: PIEthernet::Interface Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    + +
    +
    PIEthernet::Interface Struct Reference
    +
    +
    + +

    Network interface descriptor. + More...

    + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    +bool isActive () const
     Returns if interface is active.
     
    +bool isRunning () const
     Returns if interface is running.
     
    +bool isBroadcast () const
     Returns if interface support broadcast.
     
    +bool isMulticast () const
     Returns if interface support multicast.
     
    +bool isLoopback () const
     Returns if interface is loopback.
     
    +bool isPTP () const
     Returns if interface is point-to-point.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    +int index
     System index.
     
    +PIString name
     System name.
     
    +PIString mac
     MAC address in format "hh:hh:hh:hh:hh:hh" or empty if there is no MAC address.
     
    +PIString address
     IP address in format "i.i.i.i" or empty if there is no IP address.
     
    +PIString netmask
     Netmask of IP address in format "i.i.i.i" or empty if there is no netmask.
     
    +PIString broadcast
     Broadcast address in format "i.i.i.i" or empty if there is no broadcast address.
     
    +PIString ptp
     Point-to-point address or empty if there is no point-to-point address.
     
    +InterfaceFlags flags
     Flags of interface.
     
    +

    Detailed Description

    +

    Network interface descriptor.

    +
    +
    + + + + diff --git a/pip/doc/html/struct_p_i_ethernet_1_1_interface.js b/pip/doc/html/struct_p_i_ethernet_1_1_interface.js new file mode 100644 index 0000000..a348b42 --- /dev/null +++ b/pip/doc/html/struct_p_i_ethernet_1_1_interface.js @@ -0,0 +1,17 @@ +var struct_p_i_ethernet_1_1_interface = +[ + [ "isActive", "struct_p_i_ethernet_1_1_interface.html#ab76d86b68f0da23428ea8ecee802354a", null ], + [ "isRunning", "struct_p_i_ethernet_1_1_interface.html#a5f603624bc1046421bdc75b25e6f1e78", null ], + [ "isBroadcast", "struct_p_i_ethernet_1_1_interface.html#af331db850efe21a7793bbf813f71c0b4", null ], + [ "isMulticast", "struct_p_i_ethernet_1_1_interface.html#adbfab446dc998e260231b2e7b90f5b29", null ], + [ "isLoopback", "struct_p_i_ethernet_1_1_interface.html#a469b2d721c49354fe43117cf75950920", null ], + [ "isPTP", "struct_p_i_ethernet_1_1_interface.html#a04ba0d64139f4dc46561a4a4962edbf8", null ], + [ "index", "struct_p_i_ethernet_1_1_interface.html#adabd5e847a09e6d81e5a4f7f8a33d6cc", null ], + [ "name", "struct_p_i_ethernet_1_1_interface.html#a9994b57e884e2ac345520f5743957a88", null ], + [ "mac", "struct_p_i_ethernet_1_1_interface.html#a115e97cf7fb6306138c722fdf0d0d711", null ], + [ "address", "struct_p_i_ethernet_1_1_interface.html#aa753498f5a63938b9218b3ccbd8a01bc", null ], + [ "netmask", "struct_p_i_ethernet_1_1_interface.html#ac20887e6c3e2052f67f057d85d99fca6", null ], + [ "broadcast", "struct_p_i_ethernet_1_1_interface.html#a840af238c8f0ec3216b7978d4a896ef8", null ], + [ "ptp", "struct_p_i_ethernet_1_1_interface.html#a7255bb721c0f03b4465eefa422e984da", null ], + [ "flags", "struct_p_i_ethernet_1_1_interface.html#a327b42e5652b8dfd680a3eddec948237", null ] +]; \ No newline at end of file diff --git a/pip/doc/html/struct_p_i_state_machine_1_1_rule-members.html b/pip/doc/html/struct_p_i_state_machine_1_1_rule-members.html new file mode 100644 index 0000000..bfc9d14 --- /dev/null +++ b/pip/doc/html/struct_p_i_state_machine_1_1_rule-members.html @@ -0,0 +1,136 @@ + + + + + + +PIP: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    PIStateMachine< Type >::Rule Member List
    +
    +
    + +

    This is the complete list of members for PIStateMachine< Type >::Rule, including all inherited members.

    + + + + + + + + + + +
    addCondition(const PIString &name, int times=1)PIStateMachine< Type >::Ruleinline
    autoTransitionPIStateMachine< Type >::Rule
    conditionsPIStateMachine< Type >::Rule
    fromPIStateMachine< Type >::Rule
    handlerPIStateMachine< Type >::Rule
    resetAllConditionsPIStateMachine< Type >::Rule
    Rule()PIStateMachine< Type >::Ruleinline
    Rule(Type f, Type t, const PIStringList &c=PIStringList(), Handler h=0, bool at=false, bool rac=false)PIStateMachine< Type >::Ruleinline
    toPIStateMachine< Type >::Rule
    +
    + + + + diff --git a/pip/doc/html/struct_p_i_state_machine_1_1_rule.html b/pip/doc/html/struct_p_i_state_machine_1_1_rule.html new file mode 100644 index 0000000..c84be72 --- /dev/null +++ b/pip/doc/html/struct_p_i_state_machine_1_1_rule.html @@ -0,0 +1,180 @@ + + + + + + +PIP: PIStateMachine< Type >::Rule Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    + +
    +
    PIStateMachine< Type >::Rule Struct Reference
    +
    +
    + +

    Rule of transition between states of machine + More...

    + + + + + + + + + + + +

    +Public Member Functions

    Rule ()
     Constuctor.
     
    Rule (Type f, Type t, const PIStringList &c=PIStringList(), Handler h=0, bool at=false, bool rac=false)
     Constuctor.
     
    +void addCondition (const PIString &name, int times=1)
     Add condition of transition.
     
    + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    +Type from
     Source state.
     
    +Type to
     Destination state.
     
    +PIVector< Conditionconditions
     Conditions of transition
     
    +bool autoTransition
     Automatic transition.
     
    +bool resetAllConditions
     Reset or not all performed conditions of machine on transition.
     
    +Handler handler
     Pointer to function executed on transition.
     
    +

    Detailed Description

    +

    template<typename Type = int>
    +struct PIStateMachine< Type >::Rule

    + +

    Rule of transition between states of machine

    +
    +
    + + + + diff --git a/pip/doc/html/struct_p_i_state_machine_1_1_rule.js b/pip/doc/html/struct_p_i_state_machine_1_1_rule.js new file mode 100644 index 0000000..0693112 --- /dev/null +++ b/pip/doc/html/struct_p_i_state_machine_1_1_rule.js @@ -0,0 +1,12 @@ +var struct_p_i_state_machine_1_1_rule = +[ + [ "Rule", "struct_p_i_state_machine_1_1_rule.html#a72078e5c7842786930ca73022509698c", null ], + [ "Rule", "struct_p_i_state_machine_1_1_rule.html#af18c79ccfbc149a7ab7959d0179d0276", null ], + [ "addCondition", "struct_p_i_state_machine_1_1_rule.html#abfb64b05b1288d48756a6913f7518650", null ], + [ "from", "struct_p_i_state_machine_1_1_rule.html#af2282cbdc1961296c15afd440696ab4e", null ], + [ "to", "struct_p_i_state_machine_1_1_rule.html#a68721e6beda4580b09fe52e80d47b935", null ], + [ "conditions", "struct_p_i_state_machine_1_1_rule.html#a0c021e87831b92cbbfee9c7d6585cc15", null ], + [ "autoTransition", "struct_p_i_state_machine_1_1_rule.html#ab1f2afcdaa5ff5308769e5b10930fb73", null ], + [ "resetAllConditions", "struct_p_i_state_machine_1_1_rule.html#a67df3697d1b5868ec367402d0f7c1cb6", null ], + [ "handler", "struct_p_i_state_machine_1_1_rule.html#abedad360951b33a15a01a26ab211860d", null ] +]; \ No newline at end of file diff --git a/pip/doc/html/struct_p_i_state_machine_1_1_state-members.html b/pip/doc/html/struct_p_i_state_machine_1_1_state-members.html new file mode 100644 index 0000000..c060187 --- /dev/null +++ b/pip/doc/html/struct_p_i_state_machine_1_1_state-members.html @@ -0,0 +1,132 @@ + + + + + + +PIP: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    PIStateMachine< Type >::State Member List
    +
    +
    + +

    This is the complete list of members for PIStateMachine< Type >::State, including all inherited members.

    + + + + + + +
    handlerPIStateMachine< Type >::State
    namePIStateMachine< Type >::State
    State()PIStateMachine< Type >::Stateinline
    State(Type v, const PIString &n="", Handler h=0)PIStateMachine< Type >::Stateinline
    valuePIStateMachine< Type >::State
    +
    + + + + diff --git a/pip/doc/html/struct_p_i_state_machine_1_1_state.html b/pip/doc/html/struct_p_i_state_machine_1_1_state.html new file mode 100644 index 0000000..b808052 --- /dev/null +++ b/pip/doc/html/struct_p_i_state_machine_1_1_state.html @@ -0,0 +1,164 @@ + + + + + + +PIP: PIStateMachine< Type >::State Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    + +
    +
    PIStateMachine< Type >::State Struct Reference
    +
    +
    + +

    State of machine + More...

    + + + + + + + + +

    +Public Member Functions

    State ()
     Constuctor.
     
    State (Type v, const PIString &n="", Handler h=0)
     Constuctor.
     
    + + + + + + + + + + +

    +Public Attributes

    +Type value
     State value
     
    +PIString name
     State name
     
    +Handler handler
     Pointer to function executed on tick.
     
    +

    Detailed Description

    +

    template<typename Type = int>
    +struct PIStateMachine< Type >::State

    + +

    State of machine

    +
    +
    + + + + diff --git a/pip/doc/html/struct_p_i_state_machine_1_1_state.js b/pip/doc/html/struct_p_i_state_machine_1_1_state.js new file mode 100644 index 0000000..2a777dd --- /dev/null +++ b/pip/doc/html/struct_p_i_state_machine_1_1_state.js @@ -0,0 +1,8 @@ +var struct_p_i_state_machine_1_1_state = +[ + [ "State", "struct_p_i_state_machine_1_1_state.html#a04544461dd2553e8b275bda02c7ba728", null ], + [ "State", "struct_p_i_state_machine_1_1_state.html#a85a5ee0d2f96d24beb3eb1c6c900dfa9", null ], + [ "value", "struct_p_i_state_machine_1_1_state.html#a65e79c60532034d5b2be3ee8fe672d43", null ], + [ "name", "struct_p_i_state_machine_1_1_state.html#aa0acfb1b28d4a803f7e896a3fab906f8", null ], + [ "handler", "struct_p_i_state_machine_1_1_state.html#a27a357a8b0fdc53910696032e0d5c3fd", null ] +]; \ No newline at end of file diff --git a/pip/doc/html/struct_transfer_function-members.html b/pip/doc/html/struct_transfer_function-members.html new file mode 100644 index 0000000..577a295 --- /dev/null +++ b/pip/doc/html/struct_transfer_function-members.html @@ -0,0 +1,127 @@ + + + + + + +PIP: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    TransferFunction Member List
    +
    +
    + +

    This is the complete list of members for TransferFunction, including all inherited members.

    + +
    +
    + + + + diff --git a/pip/doc/html/struct_transfer_function.html b/pip/doc/html/struct_transfer_function.html new file mode 100644 index 0000000..36360d5 --- /dev/null +++ b/pip/doc/html/struct_transfer_function.html @@ -0,0 +1,132 @@ + + + + + + +PIP: TransferFunction Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    + +
    +
    TransferFunction Struct Reference
    +
    +
    + +

    Differential evaluations. + More...

    +

    Detailed Description

    +

    Differential evaluations.

    +
    +
    + + + + diff --git a/pip/doc/html/svgpan.js b/pip/doc/html/svgpan.js new file mode 100644 index 0000000..4218e79 --- /dev/null +++ b/pip/doc/html/svgpan.js @@ -0,0 +1,319 @@ +/** + * The code below is based on SVGPan Library 1.2 and was modified for doxygen + * to support both zooming and panning via the mouse and via embedded bottons. + * + * This code is licensed under the following BSD license: + * + * Copyright 2009-2010 Andrea Leofreddi . All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY Andrea Leofreddi ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Andrea Leofreddi OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of Andrea Leofreddi. + */ + +var root = document.documentElement; +var state = 'none'; +var stateOrigin; +var stateTf = root.createSVGMatrix(); +var cursorGrab = ' url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAMAAAAolt3jAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAlQTFRFAAAA////////c3ilYwAAAAN0Uk5T//8A18oNQQAAAD1JREFUeNp0zlEKACAIA9Bt9z90bZBZkQj29qFBEuBOzQHSnWTTyckEfqUuZgFvslH4ch3qLCO/Kr8cAgwATw4Ax6XRCcoAAAAASUVORK5CYII="), move'; +var zoomSteps = 10; +var zoomInFactor; +var zoomOutFactor; +var windowWidth; +var windowHeight; +var svgDoc; +var minZoom; +var maxZoom; +if (!window) window=this; + +/** + * Show the graph in the middle of the view, scaled to fit + */ +function show() +{ + if (window.innerHeight) // Firefox + { + windowWidth = window.innerWidth; + windowHeight = window.innerHeight; + } + else if (document.documentElement.clientWidth) // Chrome/Safari + { + windowWidth = document.documentElement.clientWidth + windowHeight = document.documentElement.clientHeight + } + if (!windowWidth || !windowHeight) // failsafe + { + windowWidth = 800; + windowHeight = 600; + } + minZoom = Math.min(Math.min(viewHeight,windowHeight)/viewHeight,Math.min(viewWidth,windowWidth)/viewWidth); + maxZoom = minZoom+1.5; + zoomInFactor = Math.pow(maxZoom/minZoom,1.0/zoomSteps); + zoomOutFactor = 1.0/zoomInFactor; + + var g = svgDoc.getElementById('viewport'); + try + { + var bb = g.getBBox(); // this can throw an exception if css { display: none } + var tx = (windowWidth-viewWidth*minZoom+8)/(2*minZoom); + var ty = viewHeight+(windowHeight-viewHeight*minZoom)/(2*minZoom); + var a = 'scale('+minZoom+') rotate(0) translate('+tx+' '+ty+')'; + g.setAttribute('transform',a); + } + catch(e) {} +} + +/** + * Register handlers + */ +function init(evt) +{ + svgDoc = evt.target.ownerDocument; + if (top.window && top.window.registerShow) // register show function in html doc for dynamic sections + { + top.window.registerShow(sectionId,show); + } + show(); + + setAttributes(root, { + "onmousedown" : "handleMouseDown(evt)", + "onmousemove" : "handleMouseMove(evt)", + "onmouseup" : "handleMouseUp(evt)" + }); + + if (window.addEventListener) + { + if (navigator.userAgent.toLowerCase().indexOf('webkit') >= 0 || + navigator.userAgent.toLowerCase().indexOf("opera") >= 0 || + navigator.appVersion.indexOf("MSIE") != -1) + { + window.addEventListener('mousewheel', handleMouseWheel, false); // Chrome/Safari/IE9 + } + else + { + window.addEventListener('DOMMouseScroll', handleMouseWheel, false); // Others + } + } +} + +window.onresize=function() +{ + if (svgDoc) { show(); } +} + +/** + * Instance an SVGPoint object with given event coordinates. + */ +function getEventPoint(evt) +{ + var p = root.createSVGPoint(); + p.x = evt.clientX; + p.y = evt.clientY; + return p; +} + +/** + * Sets the current transform matrix of an element. + */ +function setCTM(element, matrix) +{ + var s = "matrix(" + matrix.a + "," + matrix.b + "," + matrix.c + "," + matrix.d + "," + matrix.e + "," + matrix.f + ")"; + element.setAttribute("transform", s); +} + +/** + * Sets attributes of an element. + */ +function setAttributes(element, attributes) +{ + for (i in attributes) + element.setAttributeNS(null, i, attributes[i]); +} + +function doZoom(g,point,zoomFactor) +{ + var p = point.matrixTransform(g.getCTM().inverse()); + var k = root.createSVGMatrix().translate(p.x, p.y).scale(zoomFactor).translate(-p.x, -p.y); + var n = g.getCTM().multiply(k); + var s = Math.max(n.a,n.d); + if (s>maxZoom) n=n.translate(p.x,p.y).scale(maxZoom/s).translate(-p.x,-p.y); + else if (s'); + d.write('Print SVG'); + d.write(''); + d.write('
    '+xs+'
    '); + d.write(''); + d.write(''); + d.close(); + } catch(e) { + alert('Failed to open popup window needed for printing!\n'+e.message); + } +} + + + + diff --git a/pip/doc/html/sync_off.png b/pip/doc/html/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..ac778a9cd8841731dd937aa2541289ced7d7e422 GIT binary patch literal 863 zcmV-l1EBngP)2iDVK6t6USn#~q)Fq0sfjO5Oq%w| z7hjsR=_S=f6Pu`nKF}yeTTL%$HNiABh!2`56x*`YMbht#JM7FbOQ7NPlW ziMxQQ+XYxJPKcKQX2B=+i&pWz_|o{$2^jlMaefXjH?|z{g*cQfK$G}vhG_$sjgQ4{ z{UW8IPJOf%U43~Lz&ubNdsaNsGdLoO0IYmI4}dMVD`~QR@u6_200m+fVCoKsgVt@~ z$w>8L09%E@Oy2HTj>lsgs7;iq0L|8^@%ue=?uxLYauxwY$_3jAelcVb8))Vb(wd>>c9N_;tE9(E6u|NSOy`Ss3T^F|&~{K-`ZXnGpsh$NRci|>;iHOeYE!UHg9(X=anVS^hJ?h( zij7MXjZqUwAOxGbz(5TIOw?Ke)EJ4@g(lECpca@;%Q?^acyD;q6z%rq{L=UCo4j-H z?Y-x29fyX70n#ZIFNn<|B#K3b_(P0|ufJ-(Qpu=uz{C+PzeIe)i4XcPm<^U{aW+DXF6|--!k%9v4 zFu+54G(ihsiL%wX^zUz?qS9^)0H%0+<#P58Hc(kr2#~5n6KpiMgf^DYyKe(|k7Xv> zYJx>%0bJM4Osd z)AV$}@YLo2wRKuGOzYk0q^)Bu-Mt|)Gd)xB+?v2){2;@@iWNS9|0T=sA;aaomsluL z?5@k-%6LQT^W{9-Rt_X%dU}RCx9{qzGM?w>=kfVm6c%Lz$@u2dB*Uk#5sfAm#iSz zQ2;w%>0uR55D?#s9DpToKemA{$BW%B;sC%BIiw#?J<&eVogb^`0RPo7@m{(U?WpJ% zVSq=Zn`=nCWp0cgIOglS*x{3><<_PX0I5dA8$$OKkc@Q2d|Y&iIn zd6{1`9~*3bKPl?=&iS41rd?qXe7I9Ku}6dX=C1#759V)`YPjB=UR)G^yI(4~BK=Pf P&|U^lS3j3^P6gU~&FnU|Vt{umT<{;I1Bx^BHvtNG=>V`ujpyn4l1 z%Kc^60bb)da}$4a+;-)Obg1w2bSSUm5PVqi;n0~wPCE}RJ-Tga_y$u$w(P?-*MV0^n literal 0 HcmV?d00001 diff --git a/pip/doc/html/tab_s.png b/pip/doc/html/tab_s.png new file mode 100644 index 0000000000000000000000000000000000000000..498a061060228d767549f13679fdf74ecc1208c2 GIT binary patch literal 183 zcmV;o07(CdP)z10001fNkl}y=7#<8o(&MLJE+bpq6#nw<5 lt70aEV6&90=i1_b{sU8DBu5zC;)(zO002ovPDHLkV1nR*OJ4v0 literal 0 HcmV?d00001 diff --git a/pip/doc/html/tabs.css b/pip/doc/html/tabs.css new file mode 100644 index 0000000..c38443e --- /dev/null +++ b/pip/doc/html/tabs.css @@ -0,0 +1,60 @@ +.tabs, .tabs2, .tabs3 { + background-image: url('tab_b.png'); + width: 100%; + z-index: 101; + font-size: 13px; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +} + +.tabs2 { + font-size: 10px; +} +.tabs3 { + font-size: 9px; +} + +.tablist { + margin: 0; + padding: 0; + display: table; +} + +.tablist li { + float: left; + display: table-cell; + background-image: url('tab_b.png'); + line-height: 36px; + list-style: none; +} + +.tablist a { + display: block; + padding: 0 20px; + font-weight: bold; + background-image:url('tab_s.png'); + background-repeat:no-repeat; + background-position:right; + color: #36325F; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; + outline: none; +} + +.tabs3 .tablist a { + padding: 0 10px; +} + +.tablist a:hover { + background-image: url('tab_h.png'); + background-repeat:repeat-x; + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); + text-decoration: none; +} + +.tablist li.current a { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} diff --git a/pip/doc/html/using_advanced.html b/pip/doc/html/using_advanced.html new file mode 100644 index 0000000..e761320 --- /dev/null +++ b/pip/doc/html/using_advanced.html @@ -0,0 +1,117 @@ + + + + + + +PIP: Advanced using + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    Advanced using
    +
    +
    +

    Sorry, creativity crysis xD

    +
    +
    + + + + diff --git a/pip/doc/html/using_basic.html b/pip/doc/html/using_basic.html new file mode 100644 index 0000000..16c9395 --- /dev/null +++ b/pip/doc/html/using_basic.html @@ -0,0 +1,208 @@ + + + + + + +PIP: Getting started + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    PIP +  0.4.1_alpha3 +
    +
    Platform-Independent Primitives
    +
    +
    + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    Getting started
    +
    +
    +

    Many novice programmers are solved many common task with system integrity: output to console, keyboard buttons press detecting, working with serial ports, ethernet or files, and many other. These tasks can solve this library, and code, based only on PIP will be compile and work similar on many systems: Windows, any Linux, Red Hat, FreeBSD, MacOS X and QNX. Typical application on PIP looks like this:
    +

    #include <pip.h>
    +
    +
    +
    // declare key press handler
    +
    void key_event(char key, void * );
    +
    +
    +
    PIConsole console(false, key_event); // don`t start now, key handler is "key_event"
    +
    +
    +
    // some vars
    +
    int i = 2, j = 3;
    +
    +
    +
    // implicit key press handler
    +
    void key_event(char key, void * ) {
    +
    switch (key) {
    +
    case '-':
    +
    i--;
    +
    break;
    +
    case '+':
    +
    i++;
    +
    break;
    +
    case '(':
    +
    j--;
    +
    break;
    +
    case ')':
    +
    j++;
    +
    break;
    +
    };
    +
    };
    +
    +
    +
    class MainClass: public PITimer {
    +
    PIOBJECT(MainClass)
    +
    public:
    +
    MainClass() {}
    +
    protected:
    +
    void tick(void * data, int delimiter) {
    +
    piCout << "timer tick";
    +
    // timer tick
    +
    }
    +
    };
    +
    +
    +
    MainClass main_class;
    +
    +
    +
    int main(int argc, char * argv[]) {
    +
    // enabling auto-detection of exit button press, by default 'Q' (shift+q)
    +
    console.enableExitCapture();
    +
    +
    // if we want to parse command-line arguments
    +
    PICLI cli(argc, argv);
    +
    cli.addArgument("console"); // "-c" or "--console"
    +
    cli.addArgument("debug"); // "-d" or "--debug"
    +
    +
    // enabling or disabling global debug flag
    +
    piDebug = cli.hasArgument("debug");
    +
    +
    // configure console
    +
    console.addTab("first tab", '1');
    +
    console.addString("PIP console", 1, PIConsole::Bold);
    +
    console.addVariable("int var (i)", &i, 1);
    +
    console.addVariable("int green var (j)", &j, 1, PIConsole::Green);
    +
    console.addString("'-' - i--", 2);
    +
    console.addString("'+' - i++", 2);
    +
    console.addString("'(' - j--", 2);
    +
    console.addString("')' - j++", 2);
    +
    console.addTab("second tab", '2');
    +
    console.addString("col 1", 1);
    +
    console.addString("col 2", 2);
    +
    console.addString("col 3", 3);
    +
    console.setTab("first tab");
    +
    +
    // start output to console if "console" argument exists
    +
    if (cli.hasArgument("console"))
    +
    console.start();
    +
    +
    // start main class, e.g. 40 Hz
    +
    main_class.start(25.);
    +
    +
    // wait for 'Q' press, independently if console is started or not
    +
    console.waitForFinish();
    +
    +
    return 0;
    +
    };
    +

    This code demonstrates simple interactive configurable program, which can be started with console display or not, and with debug or not. MainClass is central class that also can be inherited from PIThread and reimplement run() function.
    + Many PIP classes has events and event handlers, which can be connected one to another. Details you can see at PIObject reference page (Events and Event handlers).
    + To configure your program from file use PIConfig.
    + If you want more information see Advanced using

    +
    +
    + + + + diff --git a/pip/doc/images/events_handlers.png b/pip/doc/images/events_handlers.png new file mode 100644 index 0000000000000000000000000000000000000000..c217975e72b538c5952b90d2f988fea424d59b2f GIT binary patch literal 28786 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 literal 0 HcmV?d00001 diff --git a/pip/doc/images/packet_detection.png b/pip/doc/images/packet_detection.png new file mode 100644 index 0000000000000000000000000000000000000000..135796234910dda99d91c002c9925415d1d23ec1 GIT binary patch literal 28193 zcmd3ObySt{wk;}RAff`&pduj%NK1)`fYKnLv~+Lj1{Fam5s~ihcGIaKN_TD8ph$NM zxZ$l&&pGejJI=jtyg%L;4+kKd%@@B|Ypyxx`uvp?q>0W_oyEh$BYODYz6u`R2`)Um zW5cHj;1$n%CR6Z@z(7{|KHd@XFR3;&3|=|&?74)-4MjXbc@bIqS zJ-jcj>N2`C?y23ed(^VtC8!fOl@gbtqS|^dES)9bqExUl3;Etki&Y!CV`e{wi=U@5 zDz|;0j>C@6>H$mgHS*#wp-Kii=HVQQ8nc@RhL#g`o)V!cbi0^k&uYQMO~J(7S)5y< zy^vz!<{phdOTcmDa%yg*eL%kBT}5se?=;*x9^TzI$Nu#d@7_7&r3(iC`|I-yCy*ar zA-DXGuUDFo|KBxFVd*vF)ePrHYqBqoqAeq?oHlSQFUPv&7BTJf@$s?e_HAs+UMip$qf};=}nh)lJ6gFZ_mrhn5j_9Rp;w1^!1et zuJLwQ9_7nrvamKbR#SRpul)$8si`^ml}5mFFi#3AhA)0WM_ZfQa>|qlZtuDvo*FKZ zK_y#NGw$8H$;acKu~AX?`_sLQxu2L!eF;WsI8RVfQJs{Mk{XJh(oodW60Uw2##EkD zjbdld*FJH=XCiuPRJet200lD)a?O$Zzux{o#_+$4 z7ngrlpeGF4y>rh6nksCk-X84j<=^1o804s}si=62>FPpt{92z18TwKOBY%~kfx5M= zZE+Y|>%Od`qvKPcUCAwX0ss5PbQ{)lf9uR>wR2%@X69`1=&%4Do{MeF2fVxT3nQho z#2g$Pu{*01_0N`uixbbhyb?q$VAK22ysy*6)s_8&Ou8hx7=?$o_T%=Y6O-sGp%3o+ z-&ff{iC+tSCbG)@ ztj_<_x>S>do4VwGKQCaLwTk`EB7UwZ9d-#hCQArQ!22A{!W2x-X*el-xTHS2PSC){ z5ZT5vw>!|=-OZ9Th_2RywWCVnIiyX-N{fnEf&v3` zcaB(;Sx60}r2NvV4)XQt>!M;~*|PmLhx()DBf0uG4KpT&jw+{r{CH1BLzAb4xnuh0 zWXjswH!Ho5yyyuD10Oj)t$F+QZDm^|r`}+xX;)#CCmxP#k9{#lv${<}s&Y^wVV7fIt({hR;TqZp;EbLK35GBv~?PZKJLFxIw@9rEO z-Ea67#tdt9&(Yq|QC`gJ_b&nTQ|;p7;#y|K1dnRZgPj9UPtS7Ctsd#mQPy~PIm8;w zC)QfCRatS?m@;cEw8g-IU8T0D$FH^1_V%0ZPEJlOH*em2sk>YFl#z)^h$UR699C!z zte__c&!0d4V)!MqN=l-f?Toh%4hrI}cbHd6t*H@tC@$W}L!X(O%hqbd z-7`8WG}PI-k{ljBP%G|3z|POlU)LUV99db+|2Cpt!I-BZ24N{haGUl)6&Wi%A4@+qDPUr@FgUF z+uhg4Cgkz!*=~unG;F}xEagTTr_t&arkjOB=#1D?`_WN!49+8Y~!r|NRBW5%+|J2(4;*o4C0!7 zrqG{oJ&FD~HDxcx$*CyJ!}G|-$mm0*>!yip4h$>oDP1i}N=kN^AV+D|@UynIwgiO- z>9NP~8UlOL@bN4Neec<7`ee3V>f^QkOeju`|6p59=!&7o!{~G{Nq&FCm z9rQo#%1I(d2sJy9=KgCMd3j|F!r>7C5!D9+7|ffIZ3F7+>b``RZ@&53)ur)4my@5r zth~J3`Cb^4e899_m# z0RdE8`VG%jeeWelv`t&MyC2j@ygr|wYvs*&{gQvw`}YRIuqN?EMMcpsUWgYL7Op-t zA^#JfHM8{Uy|fOt=1H6&gW1f_&-)$hEK`$^k{Z>T^`s=dclIl>F+G(+)UB%} zMzrZF^Yb$^WuHHPo|2Q33tIL$MJxmp&7}YHYv>dkM$a6J#m>5IFOX4@ko0k|vbJ(D zF@1SCauP3z;7!Vd)E=|KJc#crkYu$+rps-{H$Fl%x>+e|(Vun7ex|)r#i>@O+R2)l z*Gy@nbpL^@Y$^OEwCd*$1msJwX-~8k>@Js25a71UH1-Z5bw;vlUH%jY>6({lpt_j#23HC&(Cq5kkB5&;B7Ux+LjRda{Fh` z-atg`Bb8LHg2cf9v#|t0h~3r6sVq%Z?4@RY#Oaq;D5$6|>(zPei9$%2?8O8G2QOQj zn^Up`q@-QLh10gc))~9W&c1h+5)Y3LxA*eGiAlBB6w0KGUDb-Rva&Z>Sy`Q_A+NJ= za7466aZO3xy?b}Du>R03-^b^3eJroJoh)nk z^V_VwdLy3fEG%YO>FMF0^N!;wmELA1Xs~Q-Xt*069c|78S7OC>hE%J}s#x&Z5H|LeHc`Y|B$YScujEp1U%M4sx#S+H*Y=L-?*=Rg!nlK7#o)JZ>E1;~ zW_oYV$aB)uC%VIhad6b;W6DwPyeMpq84|DP#JtA%1qDZ(;IOZ$_^q-yo)ligsX5TV zd`qSF2f$)8XMMy~fVY-qX;K&n9|nPSm*CH^4Yqdmk*9JHLPbp7h(dZ$z7$o9VE* zH36jbC}pd@&&#`M{`Bcpo&XI6SYzFTgO|z9`XXTk@|QIPPrX9j+G~b}Q_QH^ZS|V; zbmJ`ys-D)$(6ID%0AM!N{Gpi#K`a5iQBhIE_ar20yAs7#9dP@OpR1i$Tkk8A=H=yW zz&f-aEwiScD0=#t28Q-=v|L245{n8fk4Hw_Ps;8kyRd|PBxLp1!D_v;e^8LsF8qgDx7H0^mzrw$HZ^t12PXY!I9cNL zGUSC|i;GYtG+0s@s62Xv+27l<{xzSOC^TN{u5p0doj59el&K&C_)wpknp)wjWc+D< zNP;_O&zza3ym+za_aW|}Tl{f_JF>+x@C1iAN{{7D8w=*0%90FiFJruVAo?d-H+8@LKM z@43Z!u91-uCIGgh^NWj%1}IeG_k{(j!E)5ZKwS0l51dR)8K!sdHYj;}A2}^!$`xaI zOgpV0d(dZ}Lx5<_j|*Y(@zy0K9aKj|)cm(cFc?#hz3E6cnBA8w0!m!Sw7KuD#2QEPSn>HW zR%r-Qa36LHkmGeG+*fNCA#v%fe`8K;GBGmxm z+G%-z)bsU3Q`7a7jDws4PZu)WZ6P7QmgZ)`NZrfiHgo~+}#&9`&x-?o)P zP$z=xVc*S~>Q0vM;kOztIyC;&9ze!Mz@c67tSd9oOXvt<@trOVq|+-+HAziP_g_OD zvwE=hnYhpfTQibh@Vh`(-dn%GMnOR#`{~oCI9X0YA|l$!rKR5$*FqE_^xQN@+tLvd z5-tMt9O+09b+>lig?#G1Jkt@ojJ#eiCsymWtyv92eM9W%xBY7b5Y4bdrFy}D^#&VT z+g9x^wt5W)O&iul^nF1~PE*raYB<@l3@04Ga`xxXEllphrX!(9*QHCBHvIklAHK-X zU+$V7M_F1Plol7;Hdflt-tii#Yj1DofN2e$sC9Qf_yZyWa3R4RbGCEu?55kJGe47% zlnSi{0k}c)H+if#lh0zk4wknf&)i~SV!8;};h=S7M6i8qOytM7^8^v5-uviB$zr^a z<3j1N69liIR*(k3t{n%cw+E14RD>?`l`E670s`fm?3y3nJace3HvuuEH*Hzy+1SI$!GOf0;;YyIRDn>rWV8Lm)&sJdH_mdKj?~yh}0B^h4pcU zk4yyIVNTE(3V3^9e(4oQwKD+Y2XJVDy!*d=- zmP^47VUv(^aQN5)39?;1?=ja8V`qbo7`|F{h`$Qis&%W2i`8!M!s^LWr$RVu-zFv| z0$A&FmXem<6@4+6@Mh>j_O(?zo(l)nV zXwCyYGRjSewQdDSEL6$%@P-Sr9LjsrS6YJma3({nqN>UdPVkL~g=H>vc=$1i_yv5J zfgo};5Kf4trKO!O;fv2r)E`y)lQ7dcIXdDF z&2eMZ&Ry0&n*80DmX-{d72=)Ljt zTfM`|*q$>AwfY3YmnIz~4kv(BI5r_^vTPm6!Q8JEY*k`iqmixs1@f`{k)J+)e!Vb1 z-z=Jc^zkEa8;4HSk}_*}e9pqjxVX5nGH28fy@0jQBK5`f*Y;LcexWLRkHuJ7)3Jdz zn}@irv70wZ8&ONKRP_K;?&fFir4ZM69yrMYIkc5CdO`r46ehP@5IoOj+9zmUV+v-=lbDRT-jk&{P? zDpH3*?XGHOHYW`A!oA0jA6Gk1c<#Cx&t&DO8jYzHi-l+FC@8$WFD=bH{{++5)AO+P z+qdlAmlTwgis_4h^G{y)K~V9ra;L=NaTfy9djUbvO&RkyRB^kzTHCEmeB z<|L#BWPPp3weV)utcLRN&66ij8`eF%t}a`Jp5BGhdxEOMk)vDWqT6M6~i zCEDq%z4cD)w!`VN-WAx2&@rZ)H?g;wnDXyQGvAYt_FiM6_Xn`{Dk^hhZEg7b)KsZM zZ(3wM%LqX7ardpc^)8f|cD+}v9@OHhjO7pq9Sebb%h{Tam5`7)TGWm!v&PKm)wuL5 zn(Hx>K;iA=gk?JYvIv-vLg^q1E=+&_7D5jk?I~GWTE@=8M;~Bg;V$;Lj0`1J)$2q3 z{i?NJqY{TSB)=eVtp3b$s4J)MDJga11Dg>O8>^Ssei-qt zZQ8)gtFAzfsm&u42P1>5@|c#^{!XAtZ*g!GOqJe~)7I9Oe)OpCQ;x^6L{WFAl)yk) zKkdUryiJW@zP`A4`5|H9*aA*kt52WkyxgXwO6-k&fWvE8{OL=~<*+nt3lW%&hqWW+HZwEB zUuQSnTI9MpgUjW{sYbw#SZEDrdo3g=hU0@Ggdom zYrpcgDw!d!MlAqn^*Y$Gjt0_VJyOq$QoAI6Lt#=E>Qg^GZyb6VkT}8D>5X&Z7hVyP zb9gK*E*=yD!Pc*lJ8%yIxc!&6wC+h;q1WK|kg~gGp-S26NtLFuK=0RgzHlA=_QN<* zEVnS=?a0K0_cy3M-S2q(QtE4JN^@!ba3d4JT0;Rln|V04E~qmi<>Q6WLon2e^_j`vvX)TB|GV(L7;wM~Ci(hAnR$-A50rD=Xs@0gTr{ z9?j1WAYTRiNR?Drm{@H;tMCZh3Z>!Ij7zY($_!w^=+TI{JSz(iSL+UZ6(uk)P4r@e z^z!9FXFy1!b)E+T)3`}vBcrrgsJkHDfs zZ};U!&mI@|&LIR^%K*P#!jj-e1&3PM7<&_F3vjfFKuuxs&STUusE+X$k> z4u5?<1Z;m!;o-wDqJhZH0aap6Vcouk%{;xh$7LXx$?Rd@ zWJ4*j1t?Eu4&q~#@3M(;eKy+-2whoD;t!mthSu3Q%XSXjza#X?Mx6A=H=!tQ3KR)d-^*iizp%_Gdquf;xVJ4Fb#|T=w}tOm7z8?7MuvQN2$QmWyX+X{1k=RI+hkfN${g zXP>(#e$#5h4rYqK<2icc)~)U&=@2?|2I;qB!e-q`{;B|!ll<<r^*$CBu3m)2Kd!SsH1J}SMiZ)BVcm*n-+e5H3eZBX8)+|q{SE_sNCze1 z>Lp+*Ls%iG*DzhpuuA&F6~iQBVY?JnJ1(kwR%&z9?PA@}tk!HQIKUoIq^6{lB(Yk{ zkcD#EeHAO(A{)u!SPR_fCTtm&prD`tx1A-*2^hysQMawfC@U+EXc^=LGgmWelu`lJ z!re(pN=uiYCL-c{8xk_qKQN$HZZW{x)!u%yueX=G*mmlRxu2h(e=rrF8*rNT|DnMD z8s4o$yRo_H2vxl!)ZU~J@T7o*;8M+2B|1w;Xbc5Q#KVUV2_OcUQ_<5;TmiOQ3wRW3 zC|1p(HYu{7?VN=xtPDtHhnYlQX%b-{PRq=3QG*) zw*&()!SBPv8G-k@5Oh*pjuijQqXPj$aneiK(rUfHcYH*nC1J2wNzbD1C9~uK4O*t(_oCDhYbx``#mtN}UMUN|g|;e7`g`eGCi;unY3{FV3>^hFKf0c9_4UZ*5IW zPDwcrG?M|BX=fZeJ#3jg2*JPUd4PFW61|@CxLSev@%7L&_6w4p89S?Ibg%o9k-xc& zb_=@X|LfzLiro>^^PL@Wf~D@p^m_YsA;2q(mzs3YaXu+YGn{vHTE*5bPd55^64Qy8 zHSw&}-^=*;HdsUAS}5sIxYy#GeU(B7R~P#X1v+&Q1TY<~K+W9Id*Tmrtqt9xnQoFA zSmG#7ihE#jyDQ`No}n#~b%nq+Hp4z&)p3gd@Zp0Kq*O_fiNn5r3v@r!u38uHi>qR5 zYdv-4w=jTNUdGHhLzFthr)&vy2^VDDjC}~ap25F^i%LpzLhCQSyz&Ob%V_j^sUOn_h2x9t?0MhF zaVfxe5XQNSY7Wv=>Y|^h1H$!r^$NdbVPy!REjYH>fG~sM^{B2o7zEkw7F3{}H1%$y zqoX78F}#&(*WLY7Ll?k^D* zWDKDE-r}tO4ct?y?1YoOy}QHKoN~c^pp0Mv>Ar=W)mWfY&3~DUY`{IV#og8Qh8S+E zj}|~rsv2v!*S&l9GTF7tmOhFJL2ml%1xSSC|2ln0tHz~x_dTO*4Fq=QC0N3%mq|(I znwp!p_t#tKcLfCnr*DA?0d)AJdv#EHpz8N#sEL7CJjk2yaE$?eV0&pWA499C*d-6) zXuof8kbeoTbKDEJJ*1pIWC>-U8Hikwu>z_p9h`jsLd#_t?27q6ftP<-B#WTzU~Yq5%o3ae4z zU_KQaws-+_zhyI4@eryn;i>6qv=ZnB1OL$Avo^U^DgD?!sXLJ2C+A){o$6pD}=&&k(njiMohX>agk1p%}v>QPgOu!&*{1T#6k~N+-HIH|H*6AWS98f?{k8|nA zh}GawCGA@X)8#+ zQ(Q)0-+c`MXd+8Q6ntF#!X4*l&xSn#oJauv)G0RYq6-1AhRU)2Ye7i(l1CS#Dm_b38&eRsEO%v%GvbfT6U}QLq|ZX_~z8 zQkuXy`K+UakxE)Fj_Dwn?1_e!gw}YK?IQCI(@uz{fDJ9m(#ZYuNdF$WuXd?J{f_(q97Cv#K5>JsDRu9yG1GWXUxWu&CK|v<(ScCExxjV zQcDZ+^|D6H)56a^WPh^5^P{KZO+vgzs&9D0;RQ5p-+w%rlGW9J zoKKom(j0gVZrHaD;1_}P>If7y`sh?JXpvC~2^`rgUPMGh1Hkt@kdet5{4l zYo4MYFP|Uka|(jwlg7rzD)e$G!E6&=mK`iZPms^Yt9WNX`E~_eK=&Dx2ojar313R_ z)Wkt(EC+CD3{XuEDx&<1Yj|tqbqWM{YDusk^oW4OvjI}(2-bdrDn2J014F7Y>~IpG zAxMCbMn<#d5*TdEd0f^e+kh0GsJ9v^v1bhrC@f3q1<-NmM@0Shqs73&+v@5A6cR?# zSdpoCu3<8m_hh_4uYSc5gb+5UOk2QLas+aFnLv2sCW!xCCkZd#2YU+BG~)S*R8tvnztH!w8rnRrrp%eEISa;Pnh`4)2uAOlLig z$V?I^-L7XTP&D-R^|7n5s-{Ec~Q~V z6^P~AK!vY>^8q7s^4RkW65!d9@;a@~8cqi?@WN$!deq)zrXjD{IzDo9WP+z>J z^YA>vIBd zZ$L<<1?)vfK`{qtgD-4u&a6_7i3Cn*51(Ohw~x?hG$EkzM8JXRP)Xe{o_yv z++8r-u#T;Qy<0TMp{T0Q;+$&r`-#?$|#>>{cf;&hUS zQo&{5`lWB)xRMe8+cDV07%Y^E@cT6?Hd=~S0w_0F0}I2D2><6c^dRv4-kVJva+>SD z3gUp91(-cnfSFFLKRP^ED_KnV@BAUauJ{7O1~7FKWQ=;&g9<48XWa`PEyKA5}0s96C!m@}!$t-~wJ3!)B z1fB!u073Ow`cSN>`_4H|&cZ2Vvwnz=A72B)1P3L!*=^AC9{@1}z~pdYc6Qf%WO;SG zddRft%|&vyQbiE29uW}J)wlo?(qd?6xNHEQcYd#Ze*WUbDUMo)`QE11rN}F%UqVCy z!W9Dx%oY@=FFP=F(+_L-mbzS5H-XsxofI+?m;mND{Wx@W4_Fn?r4R{PUR7a*^ z4IBd|*;{0F-Q3(<9T1~RU~s>4_7DBKZ;w4G_WCiD-qku&^=I z!$pwb%roJ(n6C{O{9WtPBNvwnApECdOWIDIr}v|di(ZpQO&Zen;XXz zpbQj0B(;8V&uef0V?6iTo&H{pH`Yszg`*Jo0IT0-Q25P1oH@+3r z81L`zFTBV6kCu{sTL?w&AVzIU+`DH&cKI^@ujxp=_S%{n6LqIV(zCu*H8_aFOG!#B zthIU|-+3+UxWEQNHi@60!(8{#t02h#3d=z0wTgLPNmCIA9Y3UGF(0}W?bO6UL^6v4SzE=)71k)vc}QrfOB;#ahptsXrMemK0ynMuP5LcO zw60U_iBsp>e;{LcTVW})$LwR3vq3%l{U}&iyJYd!$qk6G*uY9N*&PL(Y0qr>b2s6^ND4uOsjtpr~8 z5v;b7-Zo$=#nb>o;if{w_A}GcKFU6PXkKpI7U6l;_a5!#%R5hucNYN!(7~}e!DN9+ zKnzLp3JPW805FmPqvV|Yd&L3=D9WpTur``3UJ&sZm8hsFOFLMTuhV?^!?mH-v-fvEva&K{8B2gNd&y;uXTT`h@t z|KPd>IA*VhKIjKy^&avGFF#==EeSoIdqUAEcMc`UcT)a*K zTF`Av%SB7@K#Upc>#tS&`AOX&gQD|FQ~!f!-`d(NFOiY)8Nq5a^m+MG6I<=9n30;A zS_bmP0w|k#>FLua0F}A}7tqq(eM=pz7eEeS*St3hIPnV4wZ>DCNFqal zR*buXR0jhvhQMngTy_l>JTO0@31Ayr^weh+ahk+LN9&|;y9|J3YG&>GXHzh_RFaXB znten~9Hu2EPKYBU&1o){NU&o;G*?^%%!~#0f9xy~k>g5tvX5A}xcsYVGB)*dzahSw zc!DqNM213qt6DpNi>m}jmaxgRAcItl4GlR*LiKx{^<|8Su`!v$LjR5OH*eltruSHD zOax*zF$ezQ-Z`*OzJk(*lLjo(N6Szu%rAOi1Hn^r-*I~yJT!FRrO|eKqOBcQ3dSiH z$z8OAJK0ojr`rcp-2OJT-+5Zi6|x2RM)eV(_ckZyHRycc$I6t3jp7HCqqT1SAA0jD zIQTj-7&e!PPc&)#2V5P(sEN5 zz3?McIrZ)R`pr(iAh+!Zz%3@24a8FeLQfM|W8Gk6#~h#}O{{Ns0>A7vh}pa0rKR>! zm6fhd)vI;XWpIhj#zVr63;m|B7f*8u2!s?B7gyc}({d`pud~-GfU_&o#>QqAip-1O zVOr{(SF!1ei$jRk1u(5EBQ5Q5!9gIfT*B`xyFz*))j-K0sg1!d_2b|efo`|($px{3A zMudRhM}()lvby@{G6ltOYED8Sn4QHz8VMSKgf-NqsR;TtF`@fyuYsIE={rXvlNP%x zm`9}lbaf1&c7y)7It*L3FDonG*mePv6*5HafEhEOIcB@KpkRfbvpS#8a&Su%EK)-0 zDtmR{ZeD;FYRGA5MC!JLyu7?tV6je6($bF4!Xm>$F_=TiV`9aDJLU$VH32gB{w_r4 zgJpn0gJ68OZruTP1Q2F=HCP+1p==Sm#mlQ2F@_w`3veNpgh}r9MKZGKI!MSUa5{`l z!-4NGE`B(S8S1OsF}AVs0^3CZ<7{)&moH8O{r#kEx;Fc+hBR{%^kdVhP*7yws9yxNo6BF5~z3UX5-F&46g z;pj*6M8~D!^=H{vcwOLa2VgF$dk8H$`Q=!lYCtWe=?9R1`Vw#3{-6VPVHn8VAeL%+ zfY%b>4WZ-LZ+KpK@_S(+AG>x%w*wSz5{Oup{Y=?TR}R)5a0#F8JhQWtVXyAo{Gv(* zDPF(~#vdcg;R^ahkvno}7r`Zy)9RTmw+s>)y1k>L@Q$TB6mp25m!%et24?;2-c-md z!9=gBqrpSmF8gU_B#Jz0`8hppZfat(pxRspwP{F1owcdyuB8Kz*6%UMUO~(l>ItCV z@!q)cFa|8AVE2Ca;QEos3^?#gI^%^`z177e{LTr+MMPwnqfnd?&ffpl#q#gnDf0(x z+!;9+XldD@{=^mcw*Ax9qE^ZI@BJzUU@?&szu-&8=C-@L`DiQ<40spm4xfER)iah8 z6MOe>d!gqH+nx#4yPQ;&_oGMlXFKoVr?R}aH^&HUR z0fY^dW{u0bENT(9$x3>?kP}>-7Xl8#$IcTI57ol5%j%t-c;)AJI5gA<7&z8@{f8u{ zhQ`op;$R4fru>kmfWY$>HE4P>0tU2lU=I$uPC066VMHK5Br?gzi0oS0#l*ziQ&tYu ze)Q;(8Wsm8#M9t(IeqqQ%$0B%NyNsMzFPP-3Uc00yUHjqrXLI`ziPFFni&fy_#pgH zW(cv<=o#rH@U8rJ29-|0A2UZ|V`B-f=QY&uq5tdo&>4D78CS@~-mtY-wH z{|_IEInr$OFCU5`b>x5YnC#RA1Z7{3+dDYua#t7Y;VK;O_!bT-@oq+A>u=hTOF{3gA-t)ASNabkx8`Qa?YYG z_tw95`UI=aO0x_g6Q^~-?rwF-c=mWjT;5`vltBCT2w1#U^LX0TAN{`-)g zx3xO})MJRS27wTa1@s5|`-h7_jcyNEpt~VO#la^Xi)Y#csK}v*XA`W9#GX**K^4KV z>#T_gn^sUc)v6b0yH;(vu<~Sp2yreBT4(wpzFPRF{L;gTES9vU4{d_6wFEf61h|8K zUM{X1NYmIn_$S8D{R3ZEKXP_aJ4;$R&$LHBobW!X9fA{AiCQ0xkBxOIg5wo2^AD;w z+k3*Ir3QzWf$PT4hob-Ro1A}50s92RV37Ewsh5X~r+mHc7u7s_F`5sh3*vn52J}&X zWAzj#;){Z+K$P#=wUkV-jjXioAmZ=*^0KIWwyG01(pLrr*7K@Yg<;`_%>iTzKqYg7 zX*vlwC>_?9vprx@*G^demFOgsaZiyBZ_Vu>(RYhYvXGB7nQ4-Y`j{Dy%`@hZsm z=V@;18ygyi^+Tc!gZ{r?6)7Q%4M{m*g^h=VjU;Z@i~6vlt`c;e;|9oVISo!*ThN#2 zyP(JBf*z-YBOx&{{ru7r4FF$owR38c{Nw$6h_ORiSy>9`5~O8mtxr+RQ#PtGcL%IE z=b@)h5Ny$UK{{Z!X$4%N74bU@=^2AFF~XI3?ayb<0NSRo2f>4X6-3N$a51TF2WwDYTTtS;6DYwS~cR?3uuKyKnbO7Wo5MreUpmd$SUfC z8>HS@85f4?X*mUGI!ed}nZxdEj>1hib}L?2Y~JB)Jt$Hx0v>wvV(0lkN3# zP9W@a*VEoKul{f0tIq6ucO7vni95o_S6moz(V1G8tny+6RLV;Gg{6y*-J)ZEbd6)W2n`dE!jgOmpZa;japZ2V4CCQnhSCb}PmA(2u6jwC z65a$}$?~J6(k=yje0*L&$l3bal~95Gc`g9yYA`cW_k- z!?q7DDJ^A$X2nPBKsgyF-tnB_VmP`Qkn$1QBNRagm{?P@(vzruvF1)9+vew&ANMoB z#FywC#;A>o>Zhp~M6@UGazbgy2d)V3m1VF_DWhqV5nI4IaEZJ*)q_Avo`epF_fb(4 z`3p-((|$^F@>6BUT{h?!0JbD2A zBw-8X?{u-iW@!e4&A_2hLAD@24-Z?!H=~7^C_~_XKE=$HgU3Mq|$G~53L*c=L zteshS^1w^5zp6ibR>X0Yz{T?pi);e(8p(57po$>x{hI(;Jo_M3SjBOJ37=D-TDp#KgIiiIddOh@6Zx(1!X8>%D z0Lh3M7%vCP>ILXt+c6ZIxp~`qU8z=>C^5UyF~wFs&#l{q>!~fS!J4u2*H7W9s&VC| z(gi$xSBd zj}s!6uKwG=(GhZ12ZMDw8yfHQU3VX*s|3gu9fM5=(Iw|CWZurcl`xq<-ktZ*qnRF= znVG2-UT3YZp9I0nCOI{A^IgCttJD0j^WZ96otE zji7Q8K*vOzY(cvN02eNh3g*e_=&;X6vZ@=Io_R~Xu7BB)x=UwD`m8A<;JB=-^kd$| z8v$n!{qz{t3~c}7rqP~r9QEl_bgm(*q#w;ZwH3#)@GOY;pSyPh+y7M6FK_5NeGsX2sB*dG6gTv-Pn%?uH+u`p$MIaY$J}#R4W}4`^^A$S2 z)n(Ir`Q4W=*q1~v(!J{wt#G=>k(?O|1$WB*YvxDw@SKjO!|q)a6ox)yo$jy4`!v?3bs6>Ilu@nN?l5#K7K91pUV0`rY>Po%E1lhe)=z`27|mVi$P zjR5#}xxNgPnLQ9s^`c^8+;)Lf#nMCLx|93jfz(NA9pg47fq{-MmS0(BAL#O(mHsjGm4f=3#a`%sMyD_E#;J?CBtuqx)4>#!%~4$vEb8S zhMYDlvhkI{dw=@n&x6IuEs`L>5f-*K@s-kXh^ zn_i3AW;%k5?cj6yS-!MPUm;7enpt=FXI%6RnMxmOs_XF=Ejc_H#`d{?#utC^LGbI~ z){K5BJUwATXZ>|pYU+A%3!Qtf?!ii@zF|kUnZU^^bvB(iDv%V-toVcn24lx=Gv=+9 z4#bs}?_NSYE-&RHhc`+Ym)7mswSS)Xi#@JwkEypYM}Li@iKz)}<2Z0*i=#Gv+gsMw zVZGs(!T+R%f&c2^3Bq4Av2|VQ_Ay;=j=`*T8#XcxGgNThBU8S^@3KU^zVJ(t7aN13 z$gi6o!ZHSR6(0kr*}d9Kub^Mqd+~C|1!7O;hSdoEoH`_dT|1NPUGSB6fV-9KOG1pYwb{PIicGE$J6CTChq>tK;|$3Q8$K_ zfIrgXTxS1S$Cc0#Y4vBUQ8+PO+;@;mBGi}p!kpeFLIN=LleF-?t9e>z$n6J}z5{f%R-D5NJ zmv4=EOgw<&H)^L$zU#N_J@WXzk@cyh?K2@KFVXl>@Zk!pM4;ut@AdQ5ndlrW z_wBFF`nrk*(6nP++WZ)kGf{V^eE5si6t=%mj;Y$J@PGoSfn^Kd!3WpTx%Yd*9FJSc z=Bt;3_T+@2m!UD@_;h#mLTT=5(cm%Ng@|JTcT=^wvc5fb|B_yp@-@AI@+lGfT{Y@>Qj65m+`{7Is;~LkGeI?#J9&A@B@I1h zw?o*zbR&=(z``=6z8x z>&_#zIH%>Ob1zQfQ;T<7p!+}-uiXRfVbc|?BZJV}VmbiS=ulHjOJV75vByGo=2nMi}V!nk-8~q zeR1!z{F?br`(W-!kdc)Q1O_$=C^KS6s_|f{vILR5emdGTAv!TUd|Md$@_cLGLet%7 z0u-*ykr5Gohl30iuw9ncN);MVJDkgkeG^B&0!;1*jQ5 zsWulg`0xy{meZfPIY->cR9@jGr)#^nR>R}yL#;_e6T@-%la)_ha6E6PE=pvt^Tflj zFLy9|?!d_>BHa!y?nK-m8@fku=m<@fcHN03zj$%|eCbKNt1y^WC8!2f9 zW&4eNnQg%Mg+hT$we#`u&3izArGl6!0sON$T2lv}LQ$uhI}mMGSrefwsh2jinCc)j zP66`-=CD=%e0A!qzIkov;*S6P=@Zf&(iId`Gxfo_JO3nkY`kcJLlYBkw}i0B{k?F_ z=^Y(pOh7)A2Xo+W^YtIiilY)y@Bj!`7l43;K*#I?y3H`-jqz-!fq*!8rpR2sQZm22 zc;>fZ>1-SMUxaL^Rd>d%ohy+Q*($mAk0xW)| zK+7vfzMO3gQLZTg?kVigQQYl>lO}C1WReu z>K5`-1)s36u|91cD~j%tUF82LC=sKA617f&_&D3#~RFd-7L_f_v01F!OwU5 z2dG`;LjwbXNCUHmj7+Px2@QnfMSO?cjhKw@-fmMET2Wh~K-dI1LyHU!LOLIG3pF&< z)b=#g)!nFrrJm^M#KUjjftTT2R&K8S(we9WK%$6<%l=TBsTnedeH%R@gKP^{m7DeW z9D&*#<0Gq^kg#2$9&9ZJNBS(NE)=<*>qr^z@HHJ{L`mQP~j zStsx;M~W&cy(GWypZsHF6#dk1VcVmoT^Dcp*bDczuE$LE?8_^>0s`(}e)8=x+qy*+ zyy8}SC$FHOvrGS$OL#a?{uJj5fDYmiitm)j>=P{i`0)W4UopH?^0k`z1)y8A_n7gv z0Np4y_bo7a+s(5dp;8e-Iw~OGtYW-ECiH5Y;MA$QzP-80lRL0r0vl;|byaWi`*-El zl@%|jnBpOb!)n;LcM!@`scl1XOaCsrbcdHtQ6&Uh^2u>D@uZd5wUhyiRj7#zS6bWK z&jtAVXKO>;`#f}34-7M#!22ppR5@Dygj&P-DG*?i&^b9GD!L1G+Gn9-bB3cKa^~pK z3ZNj*w{>(7i8(HOK$)9o=iv$$5%UoeC=YQ`I#;ZDsYHRgtwG2-Lojpk!|)7A!qZmZ zc-!zulV%Xg!l{C1T%2iM-0ga`02W94F1Es&_iNxZyNnwBc%x>M8!-x%Jp2CXBzP=E zq4}n_Wu)^@#3M1l8+%8q42wN6ER07GhV45P8ixcvjaR{4U;`9$G(4cdEuSqjW!|A` z9auH*WiS$a2SL0OvXdY52-G0`Wz}HKc(m76jq6$5RwlmlOWy=6ppLLZ9~?|AJD+cB zZFPH2xC%wd@OS1Wyg7BDc$?oaFDhUFy@a@^Sb!Gx0tWSzDQKCqGHsUV(Rp~(nd=HX z2qG9F-zN~C6p^PegdMJ34g94@fi!TmeF>pYtcM~p3#?XFG2oCOf!^m3yG291T0fQm zC$-#@$^WaiD-VaV@Auk!+O!ZM^rZA86d`*Xl`Kj2wd~8J?E6Shv>L5rNy3X{C$f!c zFS{1T79vZ=k}d0SKDT87-o?X%&LS7L(SIn8iH8)W^4Z&c0;*2nP$NrG< zF)zl%im&Oi$%yxK7Vy zNGmZMR|bVeMaj!U0A0plFkrJ2g&jDJNQP_izMdK(Sr__L%Jq4pY@-tU9gp(1#w|z%(VtN8h{9|H}JU5+)WWGFNzvAI*3>@$y#7T`r#tD1M}i_aV)e?-K^DL9H^Ad@yJnR)rIKdeVi-$)(d^_t`0%B)f)T2hhqDx9z{5WmB9Mv9j(5?&nwZ<`+M?jrtUM8t)->Fq*Z}?&xz2j=O>E%tkEdo1%W1MCIVpC zC|V%n@nar-th&0{TndF!@Z`zpKvg**1oYEi^k*)~aM#9fkn$*9!4Y$qEBEsye2XGm z5=BU3-QMmA-e;tvqW^X>x&E%KWxtoPBv)#5{ALDp@n6mI{!r2W6LW})w*T%|kf$qo z5TBMfZQ-PYzK#T~Rf;(R7(D@NuGpxejUX8g`2h=$)KK|!B*w&{Ex8S36cjY%%zx|$ zz5@l#pjWu(hA8A>Jwrp;4^GnZrfJnoT5$T4*TscDTz^>v*nWFu z)19~-(6k4~Ju*85$(~c|AANq0t7<(C^YZY_Ku91vctfUT-(HumM=cK?e6dZNW651L z>-3Ba0Y91&9GK4aH@O{~hDS&Da&dBgW_TBX4_0=QdgYcNdaxolCda1AK)$7}Vu@pS zkF#QKSlo`@R=RCL?gF-EFX9tI7^)+uJlkL!BU;orj-q`Eg7n@rq+4l12}e^_f8sRJ8Ex>TEMv_LC_oFCFl0vwwF7zV+)a;d7E)SN%`x{3lz%zg-! zALui4L`Yv6|6$p!U~7)PzI6|W%2>M(^!j8zNt=pJqWj>D_j!Z!ly89=nF5)1bKOuz z4WO(_GK*|bs*YZWbUdirgn;bkA$_kO>#QUpJKN`9aT zcy}nzM$AC|$ZvS}pD*8<8GiZdZ0gOU4*FN(gqe#`-|L0biNufjs*is#x8vuhHR0be zDE#jTEkZy?yxuQX?Ek`z{l7ldELGsRgRrR4TqRec-nHZA-j(9CxtHnA!#n4m)h!}0 z_=f^3*iTv&vEPvrYjNq@Z@ye2rDbw9{v@mOz}8?No6NEK_oqn6G0AB8_Sk0vyIfZ^ z#exF3&)|AbhOp}`>2zQ^Xf)Q4|wq2tZ2)es&xmf5Yf zN*A!uBxr0L_`LT4Q`82hji{fK4oMd`%eq+ALJIBxg7h`82|j73@Nbv6%=R^W_z>5l zM&5qAlms1C%)`0VJ#8Cy>_idK--07qu79nyDiuKuX=x|pyjk+&T#*rvRH<_ z(6jk7%_+X)4-1CeHu&VMk0X}#{61ynxzOO?rHs+h(Nb$`>k>%3%D$i+(jPxoqXCxRj9-`{ zAx1t*(6Z>~o2WB)8vY&c!h$Xz@@uP@-8$u6=F#u#;OKY=MD;FHd&g&i3+{oy4>nEt z3{2rZ@j9hdl)=Va5m9VCvgv2zH{NcrF3lTUqnhNDFX$e2B}j18?nZca+;+dRa;Y^E zRQ`TXsNqS9v~;u^B)a$#-izd<>9OzMGwb8b53GHKY^|tKUc{!}CMkeKS!#UU9X8{r zw7engew;pJpt;>eaJrVY21yDH4!i)d!ot=@Id#By)9|%B1o7dpu+bC;oR0=H zMC9-~3f*edjq53uYY+xwYStg;r_GT7ldIwc7_Du{NGwN@71~^)m1(eRy<-y(_^gX5 zDUM9=FVQ@_yhVqSPi^!xQ^hU^REV5*njZQ6&=98WFAy)tqPT{#+~sq_E6zSuH#6Eu z-97a7Zq5s;ysX-F#rK0u0cz^xkvEL@F-|ib>RbgEV}%*ANNPi}wzr!WC6~ZSsZ{*~ zTH_GtSwP4={d^J`WyiR^rUGI7Z-=&p`l5xruu-VS!q-Kl%{$;R#~UZ z#iS(Ln~E(pmp_(T$UGp=PTt4XY)C{u-4ESf=!KJX`C;ul#0=>!l?qporynv;SqLJT znS)dP8X&}`_V)H(AW|$-G}cVmn=~|T>_wKch*GA_7_&xie8s0n2hA>po^m za;$lH;O&PGAA&@7?!?%^a|)A~IY#7}PM}q)+qZ3F?N}bv*3n^^oRPua>vcoZH=?pD zfV|T7T7!_nZMTnw50*uat+x$#a>5cM?iN6(#l_9+ zy=7!%vSMSmwE6TyF8@Eb_|03%?wX7@8o!VOqa0EeJ)m}40Z;!8m(0)R#ycPS~)yc`pgOQas-Bs1_ zK|P*yCQmmhqm}WWb#fZTSgXx}wk&Fx{k0A4wi>(+l+@ClP`apN-Ipg}oqI;8Z-0sd z^(V1H5G1lIWRcwBh}XvsnfHYXj<^O+PA*@y04O@jUiVDDGx=KR<;(jdVKt#(p^Ak< z{ZtJ&&y@aZMePJGPjH&JM!;lO)O1GvB7le+fVf#k-@ku7TG_P=8!fN&hYv0607ZBt zoJ?k4wW@d@)XU?}a9I{Z#cziRjC)%hahv|)h$Smy6lUs-okK!wa;ai4X|X>NAVv>pttT=0n75Qn=j;ANAk7nJlKH zL~7yDV1?!9`(f}0MlpMj(AV4asVTjFKAC|eas4#8 zJLAunWo&XQd{65f<7aiHgv?I<(CHAnFFJIU^>Ruf`J#F~_|-1L!R_A~_vw&Ig6@US zoE8v|2*hB5p#lb>`+_NqT5@2*vlUG8goM2O^w5BT?XN?=KZae}H&J7nF;_fX*3$km zgvz}-*uuCtkD&Uh!e^)NQ_RUbtixjTYcKUlXnI+YKv=F_tkYf0-(-?|%2 zx2C$LW>x9Ccb6&P1NTD;xN~RkMKnfVI7?ii0gSfO!eO)!$C%&q_Icv>n%KY>he8%E zK9GN8?VsBQE-s5YwQil%q4su{7aKM_9eZU@i_5GNv^OQ&@ zwRPfSzKYne*CDM@7Cm6MoE(n;HpRmIY32lrM*D=X-Z5F>aV{*}I`pKa)(>-Rc1hR9P~(Zy*yl<} zcJ{%B)E>%C7nek5%5`;GyACymlm)Eeh%h-NOuh@T})}Sh^MIP@N#ds zJ;=H7-eCNDzL7e+556PJ0Y9$n7-zc4@WKNqC)nA_C!9#pQV8h%WSJ+&*{8ac`#{fx zti)m%_rBB5drCahBwqfd zC@akmi4V-W(Us~(-D1{Xd3EMmiHi1}Mu+HWWBSSDCzTuhn;x6z?P&@RaBd4NiMPz5 z4cHz15THgb{dh)t%%Bzi z!@ba*ae9VKl z=Tz-Sme%oNy3hWJMV)2=7j&7p|Bmc2-hS_5_%9~~U~xiroMSvL2N5_MhDKGaF*pbsDXbBLOJYLkw3cr8fgpVL>B-gUl#GI4c#8&j%?#-UxiL#orRaMpO z9Bo^|!;;dk*|S#+iez&u&@fv70b2u{$|W9TVI#=)kp2Y*@S+vF!MK9Dkw&(D{{Ct4 zIYsiZ2&YHM-?KxuN)Q+_0r+t9^P5Q__f8Fs<{`cP=ifzdM%J7-uMBO-AYmp{y4J#- zRJJ*^^|R0M393V`oN?@lJEL7gQrxQ!!T*?q6r5KaoSc^k0sjQSqwPW?29c0M*|eP4 z!0hLmF*qr2Kk_yyhFQ5FF@A%vE5G@;*}$3OqzA@^Ey}b}ADWK4d#>)0cn~+cu(SRH zXsr{jn-T%38MA18poFBPKG7F5Y8@82%SAh$J{_A=YL)%iJlE(mV&1}zV>b7Ol|Li7 zwpX0EUdOz?7x4n~Q)-9QBX&0(mX z2_Og@RU|nc1fkxHlU*7jTj%#g_O+anQb4rejNgzyOjDDW*KK_a0QZO)^C%uo93%>n zK4{JlH=At^`T%x9%LtsZy}O(7Ec)fo$7HOLAk^U>FS09z$6(mlr>JOJ`e=U82{Z#_ za-Iqiod^Sv@}}llZnnUI*CD10pRHaiAV6-ctkfW8q8b+8riE-1{Xj?~c{n&ul^rGS z`-$W3k9qOU3PlA4nYbmSFZjVn`Rn!{2X)jYHd+X3i?`z6=Xl~S{GeQ*m&nL?dO$jR zHzOkhhuRo+C1WHmx+Ab%<^6eCg6rM3Euk5Z1%a(%*RKI+fhi~E3cZ#troR-pls4Mh z+MY+=X(E@I*B7hqJQ%=jh@eB&*b@eDJZwYKp7-1=%eb)7TprC@PgnN_;i@b^Jpu9^ z4zxS0s%{BUgrBX^z$I{^u^Hi0gfFeWuu!fQIw_?G5fRA{0c+SyOTci=D}(WeNT^R7a%dl5*UCp zF;+mUhPt}KNfQ%=VGxw@{N$OTY5|{~*h{AU8SzN<$^d>^f@==(KcG^%aGj)78|Ff` zDN$_>*|a z-XT)i+}wNw-h_eQ)~u=Ot-q(4#4E6V{Vgb8Uq#N!WgIzntn?MeNzE--QEPE_^~n<^ z*@70VD9tnQyl^(*dJaJiPWMncgvOz+W%osvyUY<46&7*HkrD_iqyPiLV3uFsau3E~ z*km8MVKeOJl+@u;H_DjIja1*Rk6dllyq#=pCddd50?3^lwg)hU3bm6lUbXnsOqa!Akd z)Q5r~N;By=w6?3|c3yTovC{9W$pxO#ASE^0=g!W~BcKY*4Nsg1t1n3VS9tJBL-Y9p=Gc+Tv3RW=14u4HX00an z?!>D9SttIvLi{WTxJ8Zo>-HB4_p{9WYq1GbV$LmEn_I;emCX1;{M9iP&BN&jErR|7 Dc4ejz literal 0 HcmV?d00001 diff --git a/pip/doc/images/piconfig.png b/pip/doc/images/piconfig.png new file mode 100644 index 0000000000000000000000000000000000000000..c669750142d6c5c145257c08e573136f18b8aa19 GIT binary patch literal 37880 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�+Sa&ro>v9S$3jxjc54vvpY32!BT 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 K&t;ucLK6ThTT9vi literal 0 HcmV?d00001 diff --git a/pip/doc/images/piconnection.png b/pip/doc/images/piconnection.png new file mode 100644 index 0000000000000000000000000000000000000000..8971ab76c2a4a792b5d965ece363775907e98633 GIT binary patch literal 98609 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 mKBy?K{okzO>2aB!cRV(Q-GSN{zX!nT_L literal 0 HcmV?d00001 diff --git a/pip/doc/images/piconnection_conf.png b/pip/doc/images/piconnection_conf.png new file mode 100644 index 0000000000000000000000000000000000000000..c42eb7de905de9a6d7c73fa73abb1f8c627a4fd5 GIT binary patch literal 88687 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 z%0D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 z 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
    gIL#nJpx=upACi+%T119JwmQY_zO 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 l75~0jcxjcemn03rIJd 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 literal 0 HcmV?d00001 diff --git a/pip/doc/packet_detection.odp b/pip/doc/packet_detection.odp new file mode 100644 index 0000000000000000000000000000000000000000..a80ffb1f0d9dff3e39603337245aa608e68c5b60 GIT binary patch literal 10411 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 CE6gYW literal 0 HcmV?d00001 diff --git a/pip/doc/piconnection_conf.odg b/pip/doc/piconnection_conf.odg new file mode 100644 index 0000000000000000000000000000000000000000..8428ed7c8ee9b60da2d347cdc6ac6b6b7bf7d9d5 GIT binary patch literal 42497 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 literal 0 HcmV?d00001 diff --git a/pip/doc/piconnection_filters.odg b/pip/doc/piconnection_filters.odg new file mode 100644 index 0000000000000000000000000000000000000000..57a5df56e9758b92b2112f79a01356bbbfdd1b8f GIT binary patch literal 23614 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 literal 0 HcmV?d00001 diff --git a/pip/doc/piconnection_senders.odg b/pip/doc/piconnection_senders.odg new file mode 100644 index 0000000000000000000000000000000000000000..5a1fee1b98fb995195fcb4c04e5901ad2f966a32 GIT binary patch literal 26781 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 literal 0 HcmV?d00001 diff --git a/pip/doc/piconsole_layout.odp b/pip/doc/piconsole_layout.odp new file mode 100644 index 0000000000000000000000000000000000000000..e94ce3e047ef8dbcc95b428e175a8dd74761daf3 GIT binary patch literal 14349 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 Ze@Te)Qefb}9z%HloW9q7D3)Kp{vThc_ErD@ literal 0 HcmV?d00001 diff --git a/pip/libpip.dll b/pip/libpip.dll new file mode 100644 index 0000000000000000000000000000000000000000..c50af85a783860123298401a46813c00c3a4ebd6 GIT binary patch literal 2142062 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

    y8ug0*jzk7>1a;o$S1OgsIcSO1E|5~ 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

    *@|5G1h}TzbU{dbpEUtyj4Kk6by@O+ zH7}s6@fCL+Gqx75mZdY1Cl%fx^VEzy87Xhi%9SVbdzQRSdDJY4ypudZmIU(F(aA_c z4^CG~-O~we6CpuQ4JeUKIMtqvKgp>D^iT*bOP&PF$w=qy`Z|mA{<06*DruM+2 zCRZ2*qxUqN_KvAwT%zTavY*loO&7btlrqfTkE9bo&C>}##G0f##F>x$CSk9j~PmghXIzr z8g23RF*Tku8YT_`Om61w;%EBMcs^EHm;o|TNCsu`hB3pMHfaNK0L67ZzoXq zzQl1z(k1XgJMilg#|}Ie$P3iUW0|Dv0&!+HB(6xD013)cuZR1&q*xa_#X52`EO2PV zSYRn8b<@jhjTa)(jymH7Sl}U&8p|~uT1NASZ68_h>PYje>0Pr!o9t$<&Te)S@ieoy9hrwkUlH4dN9Z=ep zbyS%b=i88)E%0C7iJH@JGA36HcN||Cj6|q^GO(pZQtr4vqDKm;N!!9{#1f4Q3}4Y3 zk72~5$O_3Mu;`}Cu=oW|X%$c+X@m->jiYIibRIHNB8gG)G&%w*4w(&%(-46)Y9u=r zP~1QqkL=bfdA9`h4U7S1|Lfen^lM0r#^BRH_oNMl!@!1}+pqS9`Ci4S?a!{FQB{SR z@w$V;`EfE4c|5kdWWstDv~S=0E(38zBJz}4ih=9Gv^SAI+>6JwbFY(ITC7$lMl_q;*=SlK(rn9fqo$msRT9K3nUFw;{?niIWoSY;+D zy+XzfFlmw2vd(4>^Mv5uXAx#KaMTh^Bk@u!JZs0g;-mLG34P;rPpb5IX-NB-A$HK( zdwTD)g-J<5wL~8pOH1d5rRRrrA!Al^#bGT~)T8**P^+=<)p*I%6y036@^R?<`q6&h=3&D3f`6wZsgg=nVbcM3B`Us33_hDrkn3R**A#Xm+Pr^&*|7^b6K!o@Dfvfh65kT5?8j*^45p zv&L^!;&g9`^%c{?EnzPS>Iad!LFVu3ELFHxyUtQgXVH8>J^E|ckPfNOyF}IIhasqrLjzM`SqOw&~wIFfO_CiwyObHm@-^+;mSH|u~6NTG9w&O9(a*r_z zZy@w2&yCXFH`?GL@^mvi9mmH(;*K@6v?%v0s*LmG7SyJV3bu}^QZu5?Aa$xWJ7!ds=2W3p<#RQK z)+ELbtfeOW*T`);Pt|r>yniiY?n|JtJ5jJ>m$VObB#pmckzKU{r2}08ir1i!Y@qHN z5GmE$=^_C&jx}aE!II$#&WSG;S zxS+sWD|*X{Al<1#X1(o)-3A?Gd`^^B0$i0melx~;ryEzvcz@R8X1uTH+?O~S<~kpj z!^DyNpH;N<5FT*gSBeG?l~Fs8?-+Vw>q<~4V!KN)-b`M2BcoK4aRHVD5N%|7DZxaw z{m8xPK?yyJ=tz8OxrccEOv(gLh8J`xd-JDgxH)RL^392H^Q;9ob1s>4P6_xWdXx3lF9t`;b`KJLvQK@uFcuGR=8X%yese(=H-fN|58Ggyw?t0ex}2-e6$=_kfX;zlLJ&kvl6wIRVVpF zvkVr;*337HaZ$kvGWBOwYRl*1LkVl=rw7j75I${;YaPGlMSIi&AJpFzZhcN*_>|ar zdl6IfSb>n62KQ7O_tl(7jTFV}tjg5cBl`E5h?_FoWLCJIT|86E#0>{i3PEN2BBOb* zFEW#DiOBz#<}lk5Z&q3A_WP zPVr091x@y5)!7AF8TmA|+MiWz<&CGADfX*DS#3+qKP8t|)hg>vt5goHs#K}sbXis2 ztm>3bl!OreEPQuTJ5A78`}C%|?8OT29lR^3c5mvF5Z9yxR@N)B)(BHEO(Ki?Q5TE#&WEEA!4WGOWL!NcYlYHcAHd*1?wO1(r z8swu?{+img(Jo#80bA<5PVvMo*SXx2w$(nlsC>ec@yJ$^yMF(-u_jr;YU(U)>yLI! za`UA*-pf6IiTEX6f8iF@&*oQJUux0fl3Pa_jL#?`rx6tnb7lrd)e%$1X*aSt&Y!_K z-qd@byLO#i_#)n79JIKRWzkgsVnRi{t6R!{wRQ)7ebJuhBi<`L&qd;qV+%J9j$s@r z8Q35kW@>S0$d*ix3FkvvvpvKH81vUxRaS`*QAjbl=Y`0mZrN)SkuiyK7OD%)R6MkB z(1^!S*?KP9umS?}G=j(0GzH>=zT0^_xn=CFleVQEgYVM)rE|B)-S!kpbsf8-*DlsP zwoas9taQ_~hnFt1dh1~4w#*ja9s$uV>!TgoxgC!@szw#FuqDHS*h%2JisT<>A{6u@ zims+k6&MNXQlAj-t9?4(fP&GEzmdqFT@=W<8AT#!N?E=_`PxG~%uCpRgZ;y{u)pcolLB# zYYozqx|wfQ(UiPQFIiz*DUcZIm4S4K1RE>Z1HoO8vA4!9KzrdE`)als~ zVJDm#r@8$I=gl72gGT!}%bdI9A?0KWeK}+*RfMqXwd;ajD-!_mI(*x}bkSB=bTH*;_7O2CvSR!{6$U$+qSUb5~?_G&sC0`R||!S8JVcGIFs_tPY1? zCAK390+`fvwE3dB=oY2qy{txxE}spY>X2Gaz%l3GZIGc3wYCnH{3ei&2Nw_u7&$l( z?EiotJ$jBCg!1yE_74Oe9?oJFEZ5`DAMJb(Dc|RoBh;kcT3)n_qrbq4>ATN-=y34` zTlPqY83PU2IK+XH^xl8t1yNOjl6`%1Wp(nW8##60w}i6t%gTY^^+9HwlGM2izu2G{ zb-KVC{T74K(K;uQI|tRc2!`ep{NvL0k;qnT<;n~#Ulx*$m+zuo*s=Bs%lXJ7?O%J7 z78@}-(Xd5vSD|!cBGz8oZX+`8PK-y6SOeWx9L5_st)vW&^~ijRc3mvIZOjUwGhor> z|0Vj2r=q2o}To?-Zu!=q$BHz zB%+bbW~L`}bKHckCE3(#6FSy=DqA$6YiHL6VGItH3$|<0716}6oT!@Zb6HEl@00LM zp2hr+Ba#qR$4=RGIVmk<|!!={x(2_|fzo|4_QOkQ&%S7m>YHcEdnn zLtomucsF7>z+1XmBn6FQI=&AORLG4iX{h zj|hTU6z_NLcVGI}B@PC`;7uUUte{Mke}A#yyz$Yg)+_;0-^^)i4f{3FoDgBngWk`q`2q~KLNe_2U&A*H8E<$J31Y3X%%(YNq?}{KDjktxa zR4T+xnL<4bktU)g8)n$#teQn45y^8Iq*^pkj^qkgV88Og(TUcEr>(jNL>Y>Gp$q(ib(fIepQg zviKsYfiBGM3X~}+liu3Fc|q-h>9Sm|bEccAGc^!O%WS*G?Vrd#pN5lZZdX|@Ys;nW zU$S!0ffNNCdb5@?y`3oi(narQh#lBqJwdf(_T@_zwOQ1|(`>A+HdR#8R`sTqI=Rrz z5GPQc4Yz~8a1sAYM5zCKkn#4KLo&MF2u<)uT1}rCq04MZwoUMloU~y@VvHhs3Z;?Z ze79jsvcDU@RQ}^DC?CP~i#eH`?Y5CE$=c0Voa*%^#?{alsOi`v6XWU$Qqx1z?Spmp z%!u{>Zp#xbuV?X2^%8RNxEM*cqDa#DD;0V8liE}??Z5v)>X)P6ZeZXXp-*J*n0|1A z_CK%N^Ln@+`YydMnjh|mWq z*x7f~+yD-K8j*k7DCxuUmyGf~H~)^T{F|12u8KNo)YGt5&9gi*O&OSIY2JDTz!@eTwD>)IhlOHG5z)e;-Vcd>&qj8=4gTCws(#e@|S6D>o3YSJUfWAZ<>Zq&S81LJ?_=RYbo(s zN^zB7W8rn3A0lsqbrD^QgoKM&Q10EYo!7XF)>mj3;#Fm&zNq}PA1F53r3;*V2VpVs z$RZtR$cbB42g8HYzJMM4LdajJy=STq^!#Nk6Matozn4cO`D8r@Ay~4)SRV)aDT7+u z_8sl2iV7oTY=eKQ0f0+ZEc;y1oYUtO zv^B=rTl5+KaPL;N zk|Ugdt75~c!Gz86;w@UbXV&0xqor^kv-qn#3x_NJ;k;; zb$Z0RC}J;*p60==8p?lq5wUDp>>}i!ErP=+&lHn>dJ(~{$6ZjLdK9%j+9AwClhCcr zyl`uZexbL2kb2zjJ`X}J?jYYmoL!Xq2fg;K!ZiiE*8KW9Ep&tgRvk78){)3{>6S)LIt`JV>0Lb2pTTRitJ;v` zty##$47r)_gIrS{S1HLhM~bY>v@v z!i25yNH(?3Y#oWv7Ex=%=jb|bbGS`Nr{|$lE0ensboy_gM$n1NROzX%4Y8dTNpV}Z zsKLLOke&28Ocy5J+baVSdml{BOkjuB*x(rLuo>c|&j^nx!s8L^494WB(;st*IJ}UC zClzVKM5>5V9ZITnH(X_$p#z2kd3vupI}T|&(2H0*P?`|OGY^kh{8fJ;XYZ~GqUFEV zwdV-H-y5^|9B*iEf4q1tf|ND4SK~7yZuP9Mq3|7*5qs{P37ZSo$Nr4xW90IGa172H zniah72+i?Ro{s zK7$!Yl=mKUwAjALqEk}cdJX48$m>}}lGo3TMNci_s4}w|{^M!LYt}j6o9ULc1EKWl z*xQn%Zu=`|ef5RMSs?%@$(?n@NduhAHnrHhs;IVa(SOm2KFXUvONW+nMEGHH+nrjh zLsQ4Npnp{{M>x*XA*CD%ZuX_fyOv>KNS2UZekv_|Rk1fUVvAM&S5~rNVcG-Cn-RNT z=A%QeZ<@7ZTDwJAcAZSQ(I1mkCzppRA=N@T;fKXR0ti zTR5l+_W%`eOv@5~*)m#zgFlwX5D?zrNV z39q_#7%7!zwPzO`VEAd3?HX-Uj%;erl}+O_cs^i;k7X-_!fCKPb;^40Ps!)AcaTxL5u6^%{nhASDRE>>;`u^t)0vR#ln5RQ0TkHdD9|zlyI;wG8 zgul#E4S@vUoh45+OSvR!Bg1Fe3in~v5e(X*Mcim6a_zx@YeGtAw zAp0Zyr_YXxu%*aB_@@GQ>}vetJ#ZKK`pfR+w|02Z;jo;Az27Uw?{e|c*chSyLl-BJ zOck$d5UmXk)ZeRp8(Ke`m)3WaU?l1`P8^$!x&)KqrO|zvrN|lJcYY>B-Md%Xn!l`D zhzv!S-x=X8pmh)zv-_tW)|($&nkwfcRz&S;i6A7gQ8-Ca*-6TX)m8+WknZ@yQhU1aFnfWcY$z&1h zD~T3Vw}me|$tGwW#m_0oQeNBy=PO0tBc?iCUF1(`^^bEkandzj${s3PzwpnA;4;Z% zCAPDO9nrPxFW()E!j?EtDjOT|wjXvlc5aB5KHgRy*oU<|Q^d-QmSi@k@o^mV0~3mk zEndIUY;wt?9p4a3hvQjJdZtVLL7iOc`nm^EEV(*CLqK6dcP$WzUtEOW{hmdad-uf?HwYlT-FDH1DmQUu$ZnV+$L(df7Ri^H|U_=$a6pBAQEvpI1cTV1q$;`&7S zW0+Y^V_L|yXFtarVkHfZ0mC6XMsFaALx&@0+t=BWZWyj$s#EJ2HC~q(Chb7CBfLMe zO!LEmJ+=M*A`LE+=^$+soO`(?52;@C@^nT9>P{K$p79kn#u8# zJv{{C$a%M={&@)MjKMR-~ZS^^()zXKm6joojL>~ zWj5#vK6}5{uOAMR*9|~HK>vvpY0$k+3GjZnOrYW5f8AJtKASpEk5^Ma(|*=xQ!#C? zdNy?|+~~cRnxzt_vg?vFZ>ayI?mnwB*%YLXz%J@Em~6Eyy8KcAQ@3ZRWlCRarA3$o zb9$lEb=<_^-d$uE>zf&${&rhE>P_9GH(Yz8C9T7jjBST$g-slGeiAXuv9U8~GxXjW zXjn>GQoCc}Q;r*4%lDbmF5NqI=4&A>IN;Mizsz4$9an3Tu z6S0`PGK@4ffAD{+XuHZ0R`svd8w}I&JGIG>4EX9}*IGA%;gbKPamu*Y#r;|dQl8|A zu^=X}i|eBupOgYMqrpF?!C4XRkS6T#sMpNB%U6UOWB|LSL5I5=R(u|gcKj=!<8F2k za29BA{fKa!UMJSS2u!@C4IXbp{%_5Mu%w1d=74Y}g!tKosTbwYoW_d@&Q2*CGn)N# znjK!+4H_1#Nqg5yMFe;?``0vQ@M;!b9ef@YuO{KO?quQB%;Cowyc%=y+Lgge*F8i# zK4Exeu6%gYz01tCN5KFi0pQmiVq7eg$}*&~whG8-Qn40fg66ui*qajZYg6AD$|lJi zR=wa`3tLKBFS8DdTWLxE!iYV zU6G;3Ha8vMWJ{@DHc{~ZvqL<(Srdj|3EOb`5c{#-9Bmxr9}F_&rDb{(j=zA0L9=Dk zs9o3{1$F_A9u&McrQLtf`00!#sjp@jn}%8t?YK2UiL=}MbJ{epMVFtb*3pzJ+Etoq zC;%>QE8MCN&qO<(w9=iC#gH`|X3SUV|9KL$xwy@nG2j1@6?)CQ)VYYoKw;YFW*pHD z8AaV(#J^cH5~zW!zD)HGXDG3M*4q!P7g?PDeS=&bu*))=$@E7%zMR1)iyCeg0!k53 z3j6pCBFK90b|v*aL-4li38&u4;P{49e7RA|a9ktMoAnEh3_afw#X?0n)}glmM}z#n zL8fuk8|~cDM_qy`U^b4X41?pGPo#0YT}ixa^~Jy4w0FZZwKy$_Id;S567Z_jlCG5k z{jPo;6@M?hEf$)_WDg1@q(T1HAlHRd)SD#a7Y##GnzAvxo6l<4-%m(m_-iHcuGJU+ z*G5C{F2bowF_+N-3~izo?f4$rjc-#p|K>XZav17R6BjECm*_2^pdJ_%T zQIkA0yo1leusnm|wH8M^TXsP^Yu1@sE9GL^D*wDye~9p|A!W=W?p#_W>sXP#T)hf` zFl`ksf^@X!cgY^SpH=7ARdD&$tGsC|x!vFozyw15qH=$Fg@1kpwbacY(T zMZb|sv6AhZH0orUb{+D~GFfVw+yW()Njb9EGFkWz&@&nocQgA13^XFG%KD9>kCDcy z^7a_0X-QQfY7uEp7q{s^yagx*2KOD6G^1H*6JeHTD9d1cXw6=NNNE$N`_gBW0>J`* zNmD98eV9C0n$(>DdBe6a9_=_*-NcwMi-_S2EI6M$wLt6n{XvSS#kSU(*(rwIRMYM$ zLGx{-Drt{#9Cr3kVaxC?5e?OsdPyo}h}9RA!ql7WGKO5c2B$WsY9L{{jCa-H-me~W zA?B|OQ{!Q;bWv65UYK1}Fa-?>pr!uwglC(=K}>uICf9kPZ+ zuN$JLq&~*Zwc7W*x4k!`*PTY|rrP+a-ReE-4Mdm!4;ZBq{BTjv8%D!u$C)VCuEpFP zJi&}4mu{7&gL?z1UN#VBC2vbB&j(C?7GQx!zSnydO9{-FdV-%2*BwIs7$Lt`Hj(Ic zJB9p5=?U&mnpfaTYmwB{zXC-4y!WElNwH0x71S`g{36xw`jPcp`oZcq8!!mDH@f`4 zmC2L*xCsTV5R7lBpTpkPQ~`&#Lwv(2ct4!xbJ%)R*I|1pyx`JUQ>KoA{|qKb(?z-2 zdCn(~?DsbD>pGSU|2UhK!^xG&JHO0|GwXfMzn*o6U9DJTYt#i<+g?DpPGSEW^*%wO zbof+_mcX?jI#Jw}x=%l63DU^i*+!XbZolC0y6 z5s+#ipXB#@$Fl=ILfS_DE2Wk*k`3e+A{8RZ_bUEZhA5hqx>s{tsk%xc7{s`B7?LIVwPL z%twyoFZts^?^w)exWnmtPW{P|vKo_f$qGD-=pjD-@?BsXzn5uoRI5GOAM`z9Xt)xu z&(V{_C72wX4J1CXI^J4cQk!VIl;v~EJ(R_J?Or@uLTOr&+}zq2&m#;NxAZ!YLwNKB zEAvx}I-Xc~77_k=TnJL^v3%0I_$v-5`qh za9Q$y5{MCZ`^iY(1-TTLrJkli{PQp%K*Yg5%10Yv`_L6&(778wESiz>n$UOHc5%8$ zZ`>5^`b-ek*Z9OSibkVKMmv7M5E`7DknPNH@rf|>e0JQePF)2A7gW&Yxce?s09{d= zP^|!_k>=BIGd3?T39+s#x@%j2SqsU_psz5x9 zl*b^X)1VOxqs!w;;q*b|aaWE!KJ<~i@_1!=9(k1`k5>RQx;(y|um11z$z%VMRIv)S zmP9mBE{h#ONK+;0aJ1A?6*fCpB7aVq%Gh>{e@?0F=`3Ds*Ac&3!q8?datvj@8*s^z zth7O`T3OTM3Mhsvp@^+vfl((22WzIuXOClV+HP++UiwnoF~N8y`O6ANW3a;U5(SJL zOvsF^nv^;7S!LchNt?79X|ISkF`fB!WX@Pw?d@bZX?V1t?dXAV^L~kMUCs#ZAI?th zV{zyS{Hr%_Z+J4j`GEUQC%OUUNU{TU&>1&KY7quJ12gCi}u*&<4KT~M5%y_ZC{0YXN3q~D(Zf6#SKn=&AY5}It z)5<&kd>l*L6B*+tp^}YC)Ri2=>Z`BFHZQqJ_O@zm~QQLZdk>=Wd&M)9z)1o$I!h1wP95=1M@wD z3PukcXBN9*wJ#V}b@M=M&bFR8iXL%h4PG<0 z(ETBFgNhL&KzwS698+k0+qD|+s9Z*_9+Q|8moTckSJ1nQSp5;a+l92{?Rpn;XAr{< ziXRgsm0&dW`f90Rs?@e8O#w0w9lmaH`$04Zs}`m=R4xl4l_z6INg~p_UB{x@vG?m2 z4#ihi>Jyi=X{P$&``v)=5TsyB7EHq)DP?rX;G0zo0EIe_4iyu?bMUu~LT(cZAGo5P zM1s^G(4u(q5|?e*U_fLwV^%N(@MkR`sowlc=hgPI`^7cf7TorNJpEboa~kd+D8xT= zUf6I)n?Hcm(-EzgRV9MyhH)j3w_?1ztx@}!a*H)aaUFq!isHwSREX|u+sje z^$*@cZ+r72vjT%+^F~Jd9KOY(Jd6l??e z`UG1>#YRET2Jt|?L~``=_?hiu?UnZ&fVF3naTZe(3|X4&uXm*gi%`mb+`->Kl>UGh zkp3Xj68^V^knbMuBt+0`G@msiAoG%c;akWxJdKO^Ansv>!I|M60j6^|UyX@*wpb}n zf&enHGWk7alj&##Z!=T^(I38Kf%rEs6RIwaf9aAefxh5q`=CTV?xAif7Iuc2l;oeu zLDOy|4()F_{UJjFf)?;T^8B&G{$6=5#oXHemj`NpvVC7U{waW5 zU&$h67PVo)j|7tT=2cXgqaDruICAVy!~(&XuU#&!@9z$pg^V*&vi}r`T_+^(Inug| zk|S1JV>@YClha&3DF)#{T5^_#q~($Fw+qEfmbhFJa#qM`{=>^CfVcf5<|c;xY>C;P zBQZ}>sW8d^nZ(@3cB@e(=H^4m`u!!QlZ4>Dger_KG1GE#g33IwoIGD8kCc;X`})ZC zjgKxZzx}oU3)1o(Z8P~m((=C!0q0SrWm#YkPV6Ty?G|8lnQQ;|09~e%+_U;O!2^rT z*A6!L4t&2nE=ycO9TLzFQRX zXBNH$!&)GlJ~mP|g=X1YWspQ!R0wI4(cZwX0+@_!+HL|Zy8OIiW6V5qsUk-%9V}!6 zxx^7Xl1s;>{g3m?C)ZTDik3A8TrgLyhlVnTfpfl;x_Ru}K}5|non~HM`ge{WL4PuV z_$IG&^*cKBoOqL|Kw2cTJ?P69MOZV_DOaOuMnC z`t3nfC+O?l93Ntuk<<6{s&u{@R(<>jKRW|SSg|#S4vToH=^Kydz6`JqZP_1dlU96Tc zh>kj`xn6}$ooB0)M^^#4hFCO}6?QsQ{}WrqgM4_YLs43n;6iV?a3?JUhm^ zwNUe3f%_tlwQ&gi0(8MNf3RPJ)$eZxtKTo))HVN1h7LN?JGsdk1AD z|C!u1&}NV%C@k~`kf@fd6VOBfiB9?>7}66U5ixlTKtzXaNl?-H6L;`GJs;X#n78AP znDcCKFs(`t&$R^kG?Gt4C>(z3V44D$#sFr70J#Sw-DWg?@*qF=tY!HIZA+~=}sQ0j|g&+dQ@Fbt*qcXOVYJf!MA2!DcESV z&h7U}*PjLJD&4RUF>lUntNQT1F)CfDa5Wn%p!E6-ix5t2%GCb`S20_S*p2!d&_!*q zBl8-PNp~KqUX$L?%EX=dRwmp^%jIA}3zXqD_XTCKcRSG9`K z%lprF1JW`m+QL(7>J=Qsth~HF9X~6!`pMO*>w7`i$5F$)FPf+y%sf>&?9a?6QC8^F z0XH8H6w6OlP-{LI&!^j>$sO(Tly=&6ND%fp70#BS=EJIZ`Cf^OTb{+OP4AFDpzzFG zZjGJ=6boohD{Pw*Fnh@SR@jx=;_fdk{fqfl^3 zLuv7KAg#aKV&1&m`mRHB6$MoOLqRyGFEnw5&B2vCPhs2M&eS(m2Mi7X&Pbf;kwI58 zf1i_-y%RbZJ-f;?uUH7JN3IP%(~QYz$3NpA9=QH!kt$m*%~8=V5%rV~?e%HClR8;x zR(^~KG*Xj~BI5|6w`uE5hUov6c})}D$wwz^90{JmQ!)<;`rq1*-uD9O=q+lDGCp8T zeWWOZ2Gsaf<`rsK+po>E_|9m@LwJtnafCWw7`Oysi?0wQ4h7ICUc&a*ra#X!_O`<^UmGK!cNa!&lI7V{MMUbvoY9 zqcA|n-ZTTa#HphIM&CMce>&b3D%yy*56`^j?@x6&MCW1hgD5?xKOG^+(fZRO<_2MZ z`f3o)?N1-a!#qz>-+v>kKaB+@e}DR`b4{`S)E|U%`_qiSGcu)={%rV(X9y>Bjf~=Lie)d7%~iv^^?qNx+7)j z=k%YOIG#Kpp;jBS`%klq-G3~oPF+YE27ஶh`u0-P&B*$xTP0)|hgFr_5;?Gk5 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

    +dyLzFQuv~rj!88RQtNai?AN`Rxj@O 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≶4d5x+f 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