├── docs ├── requirements.txt ├── ref │ ├── inlet.rst │ ├── outlet.rst │ ├── streaminfo.rst │ ├── enums.rst │ └── freefuncs.rst ├── index.rst ├── Makefile ├── make.bat ├── Doxyfile └── Doxyfile_API ├── testing ├── lslcfgs │ ├── default.cfg │ ├── ipv4only.cfg │ ├── ipv6only.cfg │ ├── ipv4_lsl100.cfg │ ├── ipv6_lsl100.cfg │ └── debuglog.cfg ├── lslver.c ├── ext │ ├── bench_common.cpp │ ├── bench_bounce.cpp │ ├── streaminfo.cpp │ └── time.cpp ├── common │ ├── bytecmp.hpp │ ├── create_streampair.hpp │ └── lsltypes.hpp ├── int │ ├── bench_sleep.cpp │ ├── loguruthreadnames.cpp │ ├── bench_timesync.cpp │ └── inireader.cpp └── catch_main.cpp ├── .artifactignore ├── .readthedocs.yml ├── .editorconfig ├── .gitignore ├── src ├── buildinfo.cpp ├── util │ ├── endian.cpp │ ├── cast.hpp │ ├── inireader.hpp │ ├── cast.cpp │ └── endian.hpp ├── netinterfaces.h ├── legacy │ └── readme.txt ├── cancellation.cpp ├── api_types.hpp ├── forward.h ├── socket_utils.h ├── portable_archive │ ├── license.txt │ └── change_log.txt └── socket_utils.cpp ├── lslboost └── boost │ ├── config │ ├── abi │ │ ├── msvc_suffix.hpp │ │ ├── borland_suffix.hpp │ │ ├── msvc_prefix.hpp │ │ └── borland_prefix.hpp │ ├── platform │ │ ├── amigaos.hpp │ │ ├── cray.hpp │ │ ├── cloudabi.hpp │ │ ├── wasm.hpp │ │ ├── beos.hpp │ │ ├── vms.hpp │ │ ├── qnxnto.hpp │ │ ├── zos.hpp │ │ ├── irix.hpp │ │ ├── haiku.hpp │ │ ├── solaris.hpp │ │ └── aix.hpp │ ├── compiler │ │ ├── compaq_cxx.hpp │ │ ├── pgi.hpp │ │ ├── sgi_mipspro.hpp │ │ ├── greenhills.hpp │ │ ├── diab.hpp │ │ └── kai.hpp │ ├── abi_prefix.hpp │ ├── abi_suffix.hpp │ ├── no_tr1 │ │ ├── cmath.hpp │ │ ├── memory.hpp │ │ ├── complex.hpp │ │ ├── utility.hpp │ │ └── functional.hpp │ ├── header_deprecated.hpp │ ├── assert_cxx98.hpp │ ├── pragma_message.hpp │ └── helper_macros.hpp │ ├── endian │ └── detail │ │ ├── static_assert.hpp │ │ ├── is_integral.hpp │ │ ├── is_scoped_enum.hpp │ │ ├── is_trivially_copyable.hpp │ │ └── integral_by_size.hpp │ ├── smart_ptr │ └── detail │ │ ├── requires_cxx11.hpp │ │ ├── sp_nullptr_t.hpp │ │ └── sp_noexcept.hpp │ └── version.hpp ├── thirdparty ├── loguru │ └── LICENSE ├── asio_objects.cpp └── asio │ └── asio │ ├── unyield.hpp │ ├── yield.hpp │ ├── ts │ ├── io_context.hpp │ ├── buffer.hpp │ ├── net.hpp │ ├── timer.hpp │ ├── socket.hpp │ ├── executor.hpp │ └── internet.hpp │ ├── io_service_strand.hpp │ ├── buffered_stream_fwd.hpp │ ├── version.hpp │ ├── buffered_read_stream_fwd.hpp │ ├── buffered_write_stream_fwd.hpp │ ├── signal_set.hpp │ ├── detail │ ├── limits.hpp │ ├── cstddef.hpp │ ├── date_time_fwd.hpp │ ├── dependent_type.hpp │ ├── win_iocp_thread_info.hpp │ ├── impl │ │ ├── thread_context.ipp │ │ ├── posix_mutex.ipp │ │ └── posix_tss_ptr.ipp │ ├── assert.hpp │ ├── operation.hpp │ ├── array_fwd.hpp │ ├── array.hpp │ ├── noncopyable.hpp │ ├── fd_set_adapter.hpp │ ├── scheduler_thread_info.hpp │ ├── null_fenced_block.hpp │ ├── resolve_op.hpp │ ├── signal_init.hpp │ ├── exception.hpp │ ├── functional.hpp │ ├── wait_op.hpp │ ├── future.hpp │ ├── timer_scheduler.hpp │ ├── regex_fwd.hpp │ ├── null_mutex.hpp │ ├── scheduler_task.hpp │ ├── signal_op.hpp │ ├── timer_scheduler_fwd.hpp │ ├── mutex.hpp │ ├── null_static_mutex.hpp │ ├── event.hpp │ ├── signal_blocker.hpp │ ├── global.hpp │ ├── handler_cont_helpers.hpp │ ├── null_global.hpp │ ├── null_tss_ptr.hpp │ ├── select_interrupter.hpp │ └── source_location.hpp │ ├── ssl.hpp │ ├── static_thread_pool.hpp │ ├── streambuf.hpp │ ├── io_service.hpp │ ├── ssl │ ├── impl │ │ └── src.hpp │ ├── detail │ │ └── openssl_types.hpp │ └── stream_base.hpp │ ├── impl │ ├── system_context.hpp │ ├── executor.ipp │ └── multiple_exceptions.ipp │ ├── associator.hpp │ ├── stream_file.hpp │ ├── basic_streambuf_fwd.hpp │ ├── readable_pipe.hpp │ ├── writable_pipe.hpp │ ├── experimental │ ├── append.hpp │ ├── prepend.hpp │ ├── as_tuple.hpp │ └── deferred.hpp │ ├── random_access_file.hpp │ ├── serial_port.hpp │ ├── posix │ ├── descriptor.hpp │ └── stream_descriptor.hpp │ ├── execution │ ├── impl │ │ ├── bad_executor.ipp │ │ └── receiver_invocation_error.ipp │ ├── bad_executor.hpp │ └── receiver_invocation_error.hpp │ ├── windows │ ├── stream_handle.hpp │ ├── object_handle.hpp │ ├── random_access_handle.hpp │ └── overlapped_handle.hpp │ ├── ip │ ├── host_name.hpp │ ├── resolver_query_base.hpp │ ├── impl │ │ ├── basic_endpoint.hpp │ │ └── host_name.ipp │ └── bad_address_cast.hpp │ ├── deadline_timer.hpp │ ├── steady_timer.hpp │ ├── system_timer.hpp │ ├── is_executor.hpp │ ├── is_contiguous_iterator.hpp │ └── high_resolution_timer.hpp ├── .clang-format ├── cmake ├── TargetOther.cmake ├── ProjectOptions.cmake ├── CompilerSettings.cmake ├── GitVersion.cmake └── Dependencies.cmake ├── pi.cmake ├── azure-pipelines.yml ├── .clang-tidy ├── update_lslboost.sh ├── conda └── meta.yaml ├── examples ├── ReceiveDataSimple.cpp ├── SendDataMinimal.cpp ├── SendDataSimple.cpp ├── LICENSE.txt ├── SendMultipleStreams.cpp ├── ReceiveStringMarkers.cpp └── ReceiveStringMarkersC.c ├── CMakeLists.txt ├── standalone_compilation_linux.sh ├── include └── lsl_c.h └── LICENSE /docs/requirements.txt: -------------------------------------------------------------------------------- 1 | breathe 2 | -------------------------------------------------------------------------------- /testing/lslcfgs/default.cfg: -------------------------------------------------------------------------------- 1 | [ports] 2 | IPv6=allow 3 | [lab] 4 | KnownPeers=127.0.0.1 5 | [log] 6 | level=9 7 | -------------------------------------------------------------------------------- /testing/lslcfgs/ipv4only.cfg: -------------------------------------------------------------------------------- 1 | [ports] 2 | IPv6=disable 3 | [multicast] 4 | ResolveScope=link 5 | [log] 6 | level=9 7 | -------------------------------------------------------------------------------- /testing/lslcfgs/ipv6only.cfg: -------------------------------------------------------------------------------- 1 | [ports] 2 | IPv6=force 3 | [multicast] 4 | ResolveScope=link 5 | [log] 6 | level=9 7 | -------------------------------------------------------------------------------- /.artifactignore: -------------------------------------------------------------------------------- 1 | **/* 2 | !build/*.deb 3 | !build/*.tar.bz2 4 | !build/*.dmg 5 | !build/*.7z 6 | !build/*.so 7 | !build/install/** 8 | -------------------------------------------------------------------------------- /testing/lslcfgs/ipv4_lsl100.cfg: -------------------------------------------------------------------------------- 1 | [ports] 2 | IPv6=disable 3 | [multicast] 4 | ResolveScope=link 5 | [tuning] 6 | use_protocol_version=100 7 | [log] 8 | level=9 9 | -------------------------------------------------------------------------------- /testing/lslcfgs/ipv6_lsl100.cfg: -------------------------------------------------------------------------------- 1 | [ports] 2 | IPv6=force 3 | [multicast] 4 | ResolveScope=link 5 | [tuning] 6 | use_protocol_version=100 7 | [log] 8 | level=9 9 | -------------------------------------------------------------------------------- /testing/lslcfgs/debuglog.cfg: -------------------------------------------------------------------------------- 1 | ; log all debug log messages if enabled in build to "lsldebuglog.txt" 2 | [log] 3 | file=lsldebuglog.txt 4 | ; raise the log level 5 | level=3 6 | -------------------------------------------------------------------------------- /.readthedocs.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | sphinx: 3 | configuration: docs/conf.py 4 | # formats: all 5 | python: 6 | version: 3 7 | install: 8 | - requirements: docs/requirements.txt 9 | 10 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | end_of_line = lf 5 | insert_final_newline = true 6 | charset = utf-8 7 | indent_style = tab 8 | 9 | [*.yaml] 10 | indent_style = space 11 | indent_size = 2 12 | 13 | -------------------------------------------------------------------------------- /testing/lslver.c: -------------------------------------------------------------------------------- 1 | #include "../include/lsl_c.h" 2 | #include 3 | 4 | int main() { 5 | printf("LSL version: %d\n%s\n%f\n", lsl_library_version(), lsl_library_info(), lsl_local_clock()); 6 | return 0; 7 | } 8 | -------------------------------------------------------------------------------- /docs/ref/inlet.rst: -------------------------------------------------------------------------------- 1 | Stream Inlets 2 | ============= 3 | 4 | Another text here 5 | 6 | :term:`lsl:Stream Inlet` 7 | 8 | Doxygen output 9 | -------------- 10 | 11 | .. doxygenclass:: lsl::stream_inlet 12 | :members: 13 | -------------------------------------------------------------------------------- /docs/ref/outlet.rst: -------------------------------------------------------------------------------- 1 | Stream Outlets 2 | ============== 3 | 4 | Text here 5 | 6 | :term:`lsl:Stream Outlet` 7 | 8 | Doxygen output 9 | -------------- 10 | 11 | 12 | .. doxygenclass:: lsl::stream_outlet 13 | :members: 14 | -------------------------------------------------------------------------------- /testing/ext/bench_common.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | // clazy:excludeall=non-pod-global-static 5 | 6 | TEST_CASE("common") { 7 | BENCHMARK("lsl_clock") { return lsl_local_clock(); }; 8 | } 9 | -------------------------------------------------------------------------------- /docs/ref/streaminfo.rst: -------------------------------------------------------------------------------- 1 | Stream Info 2 | =========== 3 | 4 | A stream info object stores the stream's :term:`lsl:Metadata`. 5 | 6 | Doxygen output 7 | -------------- 8 | 9 | .. doxygenclass:: lsl::stream_info 10 | :members: 11 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /build*/ 2 | /install/ 3 | /package/ 4 | /CMakeLists.txt.user 5 | /CMakeLists.json 6 | /CMakeSettings.json 7 | /docs/liblsl_* 8 | /docs/_build 9 | /.vs/ 10 | /.cache/ 11 | .DS_Store 12 | /out/ 13 | # CLion 14 | .idea/ 15 | /cmake-build-*/ 16 | /examples/build*/ 17 | -------------------------------------------------------------------------------- /src/buildinfo.cpp: -------------------------------------------------------------------------------- 1 | extern "C" { 2 | #include "../include/lsl/common.h" 3 | 4 | LIBLSL_C_API const char *lsl_library_info(void) { 5 | #ifdef LSL_LIBRARY_INFO_STR 6 | return LSL_LIBRARY_INFO_STR; 7 | #else 8 | return "Unknown (not set by build system)"; 9 | #endif 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /docs/ref/enums.rst: -------------------------------------------------------------------------------- 1 | Enumerations / Flags 2 | ==================== 3 | 4 | Postprocessing options: 5 | 6 | .. doxygenenum:: lsl_processing_options_t 7 | 8 | Channel formats: 9 | 10 | .. doxygenenum:: lsl_channel_format_t 11 | 12 | Error codes: 13 | 14 | .. doxygenenum:: lsl_error_code_t -------------------------------------------------------------------------------- /lslboost/boost/config/abi/msvc_suffix.hpp: -------------------------------------------------------------------------------- 1 | // (C) Copyright John Maddock 2003. 2 | // Use, modification and distribution are subject to the 3 | // Boost Software License, Version 1.0. (See accompanying file 4 | // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 5 | 6 | #pragma pack(pop) 7 | 8 | 9 | -------------------------------------------------------------------------------- /thirdparty/loguru/LICENSE: -------------------------------------------------------------------------------- 1 | This software is in the public domain. Where that dedication is not recognized, you are granted a perpetual, irrevocable license to copy, modify and distribute it as you see fit. 2 | 3 | That being said, I would appreciate credit! If you find Loguru useful, tweet me at @ernerfeldt mail me at emil.ernerfeldt@gmail.com. 4 | -------------------------------------------------------------------------------- /thirdparty/asio_objects.cpp: -------------------------------------------------------------------------------- 1 | // This puts most asio functions in this object file instead of everywhere 2 | // it is called when compiled with BOOST_ASIO_SEPARATE_COMPILATION in lslboost 3 | // Normally, one would just compile boost/asio/impl/src.hpp but some compilers 4 | // think they should generate a precompiled header. 5 | 6 | #include 7 | -------------------------------------------------------------------------------- /testing/common/bytecmp.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | 4 | /// convert a binary string to the equivalent C-escaped string, e.g. "Hello\xaf\xbcWorld\0" 5 | std::string bytes_to_hexstr(const std::string &str); 6 | /// compare two binary strings, printing the location around the first mismatch 7 | void cmp_binstr(const std::string &a, const std::string b); 8 | -------------------------------------------------------------------------------- /lslboost/boost/config/abi/borland_suffix.hpp: -------------------------------------------------------------------------------- 1 | // (C) Copyright John Maddock 2003. 2 | // Use, modification and distribution are subject to the 3 | // Boost Software License, Version 1.0. (See accompanying file 4 | // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 5 | 6 | # pragma option pop 7 | #pragma nopushoptwarn 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.clang-format: -------------------------------------------------------------------------------- 1 | --- 2 | BasedOnStyle: LLVM 3 | ColumnLimit: 100 4 | UseTab: Always 5 | TabWidth: 4 6 | IndentWidth: 4 7 | AccessModifierOffset: -4 8 | AllowShortBlocksOnASingleLine: true 9 | AllowShortCaseLabelsOnASingleLine: true 10 | AllowShortIfStatementsOnASingleLine: true 11 | AllowShortLoopsOnASingleLine: true 12 | AlignAfterOpenBracket: false 13 | MaxEmptyLinesToKeep: 2 14 | ... 15 | -------------------------------------------------------------------------------- /src/util/endian.cpp: -------------------------------------------------------------------------------- 1 | #include "endian.hpp" 2 | #include "../common.h" 3 | 4 | double lsl::measure_endian_performance() { 5 | const double measure_duration = 0.01; 6 | const double t_end = lsl_clock() + measure_duration; 7 | uint64_t data = 0x01020304; 8 | double k; 9 | for (k = 0; ((int)k & 0xFF) != 0 || lsl_clock() < t_end; k++) 10 | lslboost::endian::endian_reverse_inplace(data); 11 | return k; 12 | } 13 | -------------------------------------------------------------------------------- /docs/ref/freefuncs.rst: -------------------------------------------------------------------------------- 1 | LSL freestanding functions 2 | ========================== 3 | 4 | .. doxygenfunction:: lsl_local_clock 5 | 6 | Here we talk about `lsl_time_correction_ex`: 7 | 8 | .. doxygenfunction:: lsl_time_correction_ex() 9 | 10 | And here we list some other functions: 11 | 12 | .. doxygenfunction:: lsl_library_version() 13 | .. doxygenfunction:: lsl_library_info() 14 | .. doxygenfunction:: lsl_protocol_version() 15 | 16 | -------------------------------------------------------------------------------- /src/netinterfaces.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | #include 4 | #include 5 | #include 6 | 7 | namespace lsl { 8 | 9 | class netif { 10 | public: 11 | asio::ip::address addr; 12 | uint32_t ifindex; 13 | std::string name; 14 | }; 15 | 16 | /// Enumerate all local interface addresses (IPv6 index, IPv4 address)-pairs 17 | std::vector get_local_interfaces(); 18 | } // namespace lsl 19 | -------------------------------------------------------------------------------- /src/legacy/readme.txt: -------------------------------------------------------------------------------- 1 | These two files are included to allow the liblsl library to export the same C++ binary interface as in previous versions. This allows the library to be copied into application installations that currently use an older version without the need for recompiling. 2 | 3 | This older C++ ABI has been superseded by a new one that wraps the C interface, which 4 | does not suffer from compiler compatibility issues as much, particularly on Windows. -------------------------------------------------------------------------------- /src/util/cast.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | 4 | namespace lsl { 5 | template std::string to_string(T val) { return std::to_string(val); } 6 | template <> std::string to_string(double val); 7 | template <> std::string to_string(float val); 8 | 9 | template T from_string(const std::string &str); 10 | template <> inline bool from_string(const std::string &str) { return str == "1"; } 11 | 12 | } // namespace lsl 13 | -------------------------------------------------------------------------------- /lslboost/boost/endian/detail/static_assert.hpp: -------------------------------------------------------------------------------- 1 | #ifndef BOOST_ENDIAN_DETAIL_STATIC_ASSERT_HPP_INCLUDED 2 | #define BOOST_ENDIAN_DETAIL_STATIC_ASSERT_HPP_INCLUDED 3 | 4 | // Copyright 2023 Peter Dimov 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // https://www.boost.org/LICENSE_1_0.txt 7 | 8 | #define BOOST_ENDIAN_STATIC_ASSERT(...) static_assert(__VA_ARGS__, #__VA_ARGS__) 9 | 10 | #endif // BOOST_ENDIAN_DETAIL_STATIC_ASSERT_HPP_INCLUDED 11 | -------------------------------------------------------------------------------- /cmake/TargetOther.cmake: -------------------------------------------------------------------------------- 1 | include(cmake/LSLCMake.cmake) # Needed for `installLSLApp` 2 | 3 | # Build utilities 4 | add_executable(lslver testing/lslver.c) 5 | target_link_libraries(lslver PRIVATE lsl) 6 | installLSLApp(lslver) 7 | 8 | if(NOT WIN32 AND LSL_TOOLS) 9 | add_executable(blackhole testing/blackhole.cpp) 10 | target_link_libraries(blackhole PRIVATE Threads::Threads) 11 | target_include_directories(blackhole PRIVATE "thirdparty/asio/") 12 | installLSLApp(blackhole) 13 | endif() 14 | -------------------------------------------------------------------------------- /thirdparty/asio/asio/unyield.hpp: -------------------------------------------------------------------------------- 1 | // 2 | // unyield.hpp 3 | // ~~~~~~~~~~~ 4 | // 5 | // Copyright (c) 2003-2023 Christopher M. Kohlhoff (chris at kohlhoff dot com) 6 | // 7 | // Distributed under the Boost Software License, Version 1.0. (See accompanying 8 | // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 9 | // 10 | 11 | #ifdef reenter 12 | # undef reenter 13 | #endif 14 | 15 | #ifdef yield 16 | # undef yield 17 | #endif 18 | 19 | #ifdef fork 20 | # undef fork 21 | #endif 22 | -------------------------------------------------------------------------------- /testing/int/bench_sleep.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | 6 | // clazy:excludeall=non-pod-global-static 7 | 8 | TEST_CASE("sleep") { 9 | BENCHMARK("sleep1ms") { std::this_thread::sleep_for(std::chrono::milliseconds(1)); }; 10 | } 11 | 12 | TEST_CASE("read system clock"){ 13 | BENCHMARK("lsl_local_clock") { return lsl_local_clock(); }; 14 | BENCHMARK("lsl_local_clock_ns") { return lsl::lsl_local_clock_ns(); }; 15 | } 16 | -------------------------------------------------------------------------------- /lslboost/boost/config/platform/amigaos.hpp: -------------------------------------------------------------------------------- 1 | // (C) Copyright John Maddock 2002. 2 | // Use, modification and distribution are subject to the 3 | // Boost Software License, Version 1.0. (See accompanying file 4 | // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 5 | 6 | // See http://www.boost.org for most recent version. 7 | 8 | #define BOOST_PLATFORM "AmigaOS" 9 | 10 | #define BOOST_DISABLE_THREADS 11 | #define BOOST_NO_CWCHAR 12 | #define BOOST_NO_STD_WSTRING 13 | #define BOOST_NO_INTRINSIC_WCHAR_T 14 | 15 | 16 | -------------------------------------------------------------------------------- /pi.cmake: -------------------------------------------------------------------------------- 1 | SET(CMAKE_SYSTEM_NAME Linux) 2 | SET(CMAKE_SYSTEM_VERSION 1) 3 | SET(CMAKE_C_COMPILER $ENV{PITOOLS}/arm-bcm2708/arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc) 4 | SET(CMAKE_CXX_COMPILER $ENV{PITOOLS}/arm-bcm2708/arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc) 5 | SET(CMAKE_FIND_ROOT_PATH $ENV{PITOOLS}/arm-bcm2708/arm-linux-gnueabihf/arm-linux-gnueabihf/sysroot/) 6 | SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) 7 | SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) 8 | SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) 9 | add_definitions(-Wall) 10 | -------------------------------------------------------------------------------- /azure-pipelines.yml: -------------------------------------------------------------------------------- 1 | trigger: 2 | branches: {include: ['*'] } 3 | paths: 4 | include: ['*'] 5 | exclude: ['docs/*', '.github/**'] 6 | 7 | stages: 8 | - stage: build 9 | jobs: 10 | - job: manylinux2010 11 | pool: { vmImage: 'ubuntu-latest' } 12 | container: quay.io/pypa/manylinux2010_x86_64:latest 13 | steps: 14 | - bash: CFLAGS="-flto -static-libstdc++ -std=c++14" ./standalone_compilation_linux.sh 15 | - bash: strip --strip-unneeded liblsl.so 16 | - publish: liblsl.so 17 | artifact: manylinux2010 18 | 19 | -------------------------------------------------------------------------------- /lslboost/boost/config/platform/cray.hpp: -------------------------------------------------------------------------------- 1 | // (C) Copyright John Maddock 2011. 2 | // Use, modification and distribution are subject to the 3 | // Boost Software License, Version 1.0. (See accompanying file 4 | // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 5 | 6 | 7 | // See http://www.boost.org for most recent version. 8 | 9 | // SGI Irix specific config options: 10 | 11 | #define BOOST_PLATFORM "Cray" 12 | 13 | // boilerplate code: 14 | #define BOOST_HAS_UNISTD_H 15 | #include 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /docs/index.rst: -------------------------------------------------------------------------------- 1 | liblsl documentation 2 | ==================== 3 | 4 | This is the in-progress API documentation for liblsl. 5 | 6 | The complete labstreaminglayer documentation with concepts, a 7 | :doc:`quickstart guide ` 8 | and links to precompiled packages is at the :doc:`lsl:index`. 9 | 10 | 11 | .. toctree:: 12 | :maxdepth: 1 13 | :caption: API reference: 14 | :glob: 15 | 16 | ref/* 17 | 18 | 19 | Indices and tables 20 | ================== 21 | 22 | * :ref:`genindex` 23 | * :ref:`modindex` 24 | * :ref:`search` 25 | 26 | 27 | -------------------------------------------------------------------------------- /src/util/inireader.hpp: -------------------------------------------------------------------------------- 1 | #include "cast.hpp" 2 | #include 3 | #include 4 | #include 5 | 6 | // Reads an INI file from a stream into a map 7 | class INI { 8 | std::unordered_map values; 9 | 10 | public: 11 | void load(std::istream &infile); 12 | template T get(const char *key, T defaultval = T()); 13 | }; 14 | 15 | // specialization for const char*, returns an empty string ("") by default instead of nullptr 16 | template <> const char *INI::get(const char *key, const char *defaultval); 17 | -------------------------------------------------------------------------------- /testing/catch_main.cpp: -------------------------------------------------------------------------------- 1 | #define CATCH_CONFIG_RUNNER 2 | #include 3 | 4 | extern "C" { 5 | const char *lsl_library_info() { return LSL_VERSION_INFO; } 6 | } 7 | 8 | int main(int argc, char *argv[]) { 9 | Catch::Session session; 10 | #ifdef _WIN32 11 | session.configData().waitForKeypress = Catch::WaitForKeypress::BeforeExit; 12 | #endif 13 | session.configData().runOrder = Catch::TestRunOrder::Randomized; 14 | int returnCode = session.applyCommandLine(argc, argv); 15 | if (returnCode != 0) return returnCode; 16 | return session.run(); 17 | } 18 | -------------------------------------------------------------------------------- /thirdparty/asio/asio/yield.hpp: -------------------------------------------------------------------------------- 1 | // 2 | // yield.hpp 3 | // ~~~~~~~~~ 4 | // 5 | // Copyright (c) 2003-2023 Christopher M. Kohlhoff (chris at kohlhoff dot com) 6 | // 7 | // Distributed under the Boost Software License, Version 1.0. (See accompanying 8 | // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 9 | // 10 | 11 | #include "coroutine.hpp" 12 | 13 | #ifndef reenter 14 | # define reenter(c) ASIO_CORO_REENTER(c) 15 | #endif 16 | 17 | #ifndef yield 18 | # define yield ASIO_CORO_YIELD 19 | #endif 20 | 21 | #ifndef fork 22 | # define fork ASIO_CORO_FORK 23 | #endif 24 | -------------------------------------------------------------------------------- /testing/int/loguruthreadnames.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | // Include loguru before catch 4 | #include 5 | 6 | // clazy:excludeall=non-pod-global-static 7 | 8 | TEST_CASE("loguru_thread_local_storage", "[threading]") { 9 | char name[16] = "0"; 10 | loguru::set_thread_name("1"); 11 | std::thread([&]() { 12 | loguru::set_thread_name("2"); 13 | loguru::get_thread_name(name, sizeof(name), false); 14 | }).join(); 15 | REQUIRE(name[0] == '2'); 16 | loguru::get_thread_name(name, sizeof(name), false); 17 | REQUIRE(name[0] == '1'); 18 | } 19 | -------------------------------------------------------------------------------- /src/cancellation.cpp: -------------------------------------------------------------------------------- 1 | #include "cancellation.h" 2 | #include 3 | #include 4 | 5 | lsl::cancellable_registry::~cancellable_registry() = default; 6 | 7 | lsl::cancellable_obj::~cancellable_obj() { unregister_from_all(); } 8 | 9 | void lsl::cancellable_obj::unregister_from_all() { 10 | try { 11 | for (auto *obj : registered_at_) obj->unregister_cancellable(this); 12 | registered_at_.clear(); 13 | } catch (std::exception &e) { 14 | LOG_F(ERROR, 15 | "Unexpected error trying to unregister a cancellable object from its registry: %s", 16 | e.what()); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /lslboost/boost/config/compiler/compaq_cxx.hpp: -------------------------------------------------------------------------------- 1 | // (C) Copyright John Maddock 2001 - 2003. 2 | // Use, modification and distribution are subject to the 3 | // Boost Software License, Version 1.0. (See accompanying file 4 | // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 5 | 6 | // See http://www.boost.org for most recent version. 7 | 8 | // Tru64 C++ compiler setup (now HP): 9 | 10 | #define BOOST_COMPILER "HP Tru64 C++ " BOOST_STRINGIZE(__DECCXX_VER) 11 | 12 | #include 13 | 14 | // 15 | // versions check: 16 | // Nothing to do here? 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /thirdparty/asio/asio/ts/io_context.hpp: -------------------------------------------------------------------------------- 1 | // 2 | // ts/io_context.hpp 3 | // ~~~~~~~~~~~~~~~~~ 4 | // 5 | // Copyright (c) 2003-2023 Christopher M. Kohlhoff (chris at kohlhoff dot com) 6 | // 7 | // Distributed under the Boost Software License, Version 1.0. (See accompanying 8 | // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 9 | // 10 | 11 | #ifndef ASIO_TS_IO_CONTEXT_HPP 12 | #define ASIO_TS_IO_CONTEXT_HPP 13 | 14 | #if defined(_MSC_VER) && (_MSC_VER >= 1200) 15 | # pragma once 16 | #endif // defined(_MSC_VER) && (_MSC_VER >= 1200) 17 | 18 | #include "asio/io_context.hpp" 19 | 20 | #endif // ASIO_TS_IO_CONTEXT_HPP 21 | -------------------------------------------------------------------------------- /lslboost/boost/config/platform/cloudabi.hpp: -------------------------------------------------------------------------------- 1 | // Copyright Nuxi, https://nuxi.nl/ 2015. 2 | // Distributed under the Boost Software License, Version 1.0. 3 | // (See accompanying file LICENSE_1_0.txt or copy at 4 | // http://www.boost.org/LICENSE_1_0.txt) 5 | 6 | #define BOOST_PLATFORM "CloudABI" 7 | 8 | #define BOOST_HAS_DIRENT_H 9 | #define BOOST_HAS_STDINT_H 10 | #define BOOST_HAS_UNISTD_H 11 | 12 | #define BOOST_HAS_CLOCK_GETTIME 13 | #define BOOST_HAS_EXPM1 14 | #define BOOST_HAS_GETTIMEOFDAY 15 | #define BOOST_HAS_LOG1P 16 | #define BOOST_HAS_NANOSLEEP 17 | #define BOOST_HAS_PTHREADS 18 | #define BOOST_HAS_SCHED_YIELD 19 | -------------------------------------------------------------------------------- /testing/ext/bench_bounce.cpp: -------------------------------------------------------------------------------- 1 | #include "../common/create_streampair.hpp" 2 | #include "../common/lsltypes.hpp" 3 | #include 4 | #include 5 | 6 | // clazy:excludeall=non-pod-global-static 7 | 8 | TEST_CASE("bounce", "[basic][latency]") { 9 | auto sp = create_streampair(lsl::stream_info("bounce", "Test")); 10 | 11 | float data = .0; 12 | BENCHMARK("single bounce") { 13 | sp.out_.push_sample(&data); 14 | sp.in_.pull_sample(&data, 1.); 15 | }; 16 | 17 | sp.out_.push_sample(&data); 18 | BENCHMARK("primed bounce") { 19 | sp.out_.push_sample(&data); 20 | sp.in_.pull_sample(&data, 1.); 21 | }; 22 | } 23 | -------------------------------------------------------------------------------- /.clang-tidy: -------------------------------------------------------------------------------- 1 | --- 2 | Checks: | 3 | modernize-*, 4 | -modernize-use-trailing-return-type, 5 | -modernize-avoid-c-arrays, 6 | -modernize-use-nodiscard, 7 | isc-*, 8 | performance-*, 9 | readability-*, 10 | -readability-braces-around-statements, 11 | -readability-implicit-bool-conversion, 12 | -readability-magic-numbers, 13 | -readability-isolate-declaration, 14 | -readability-function-cognitive-complexity, 15 | -readability-identifier-length, 16 | bugprone-*, 17 | -bugprone-easily-swappable-parameters, 18 | concurrency-*, 19 | portability-* 20 | ... 21 | -------------------------------------------------------------------------------- /thirdparty/asio/asio/io_service_strand.hpp: -------------------------------------------------------------------------------- 1 | // 2 | // io_service_strand.hpp 3 | // ~~~~~~~~~~~~~~~~~~~~~ 4 | // 5 | // Copyright (c) 2003-2023 Christopher M. Kohlhoff (chris at kohlhoff dot com) 6 | // 7 | // Distributed under the Boost Software License, Version 1.0. (See accompanying 8 | // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 9 | // 10 | 11 | #ifndef ASIO_IO_SERVICE_STRAND_HPP 12 | #define ASIO_IO_SERVICE_STRAND_HPP 13 | 14 | #if defined(_MSC_VER) && (_MSC_VER >= 1200) 15 | # pragma once 16 | #endif // defined(_MSC_VER) && (_MSC_VER >= 1200) 17 | 18 | #include "asio/io_context_strand.hpp" 19 | 20 | #endif // ASIO_IO_SERVICE_STRAND_HPP 21 | -------------------------------------------------------------------------------- /update_lslboost.sh: -------------------------------------------------------------------------------- 1 | # the absolute path to the extracted boost source archive (https://www.boost.org/users/download/) 2 | set -e 3 | set -x 4 | BOOSTPATH=/tmp/boost_1_84_0 5 | TMPPATH=/tmp/lslboost 6 | 7 | # copy all needed boost files and rename all mentions of boost to lslboost 8 | mkdir -p $TMPPATH 9 | bcp --unix-lines --boost=$BOOSTPATH --namespace=lslboost --scan `find src -regex ".+\.[ch]p*"` $TMPPATH 10 | # remove superfluous directories: 11 | rm -f $TMPPATH/Jamroot 12 | find $TMPPATH -type d -and \( -name build -o -name test -o -name edg -o -name dmc -o -name msvc?0 -o -name bcc* \) -print0 | xargs -0 rm -rf 13 | 14 | rsync -HAXavr --del $TMPPATH/boost lslboost 15 | 16 | -------------------------------------------------------------------------------- /lslboost/boost/config/platform/wasm.hpp: -------------------------------------------------------------------------------- 1 | // (C) Copyright John Maddock 2020. 2 | // Use, modification and distribution are subject to the 3 | // Boost Software License, Version 1.0. (See accompanying file 4 | // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 5 | 6 | // See http://www.boost.org for most recent version. 7 | 8 | // WASM specific config options: 9 | 10 | #define BOOST_PLATFORM "Wasm" 11 | 12 | #ifdef __has_include 13 | #if __has_include() 14 | # define BOOST_HAS_UNISTD_H 15 | #endif 16 | #endif 17 | 18 | // boilerplate code: 19 | #include 20 | // 21 | // fenv lacks the C++11 macros: 22 | // 23 | #define BOOST_NO_FENV_H 24 | -------------------------------------------------------------------------------- /docs/Makefile: -------------------------------------------------------------------------------- 1 | # Minimal makefile for Sphinx documentation 2 | # 3 | 4 | # You can set these variables from the command line, and also 5 | # from the environment for the first two. 6 | SPHINXOPTS ?= 7 | SPHINXBUILD ?= sphinx-build 8 | SOURCEDIR = . 9 | BUILDDIR = _build 10 | 11 | # Put it first so that "make" without argument is like "make help". 12 | help: 13 | @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) 14 | 15 | .PHONY: help Makefile 16 | 17 | # Catch-all target: route all unknown targets to Sphinx using the new 18 | # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). 19 | %: Makefile 20 | @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) 21 | -------------------------------------------------------------------------------- /testing/common/create_streampair.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | 4 | struct Streampair { 5 | lsl::stream_outlet out_; 6 | lsl::stream_inlet in_; 7 | 8 | Streampair(lsl::stream_outlet &&out, lsl::stream_inlet &&in) 9 | : out_(std::move(out)), in_(std::move(in)) {} 10 | }; 11 | 12 | inline Streampair create_streampair(const lsl::stream_info &info) { 13 | lsl::stream_outlet out(info); 14 | auto found_stream_info(lsl::resolve_stream("name", info.name(), 1, 2.0)); 15 | if (found_stream_info.empty()) throw std::runtime_error("outlet not found"); 16 | lsl::stream_inlet in(found_stream_info[0]); 17 | 18 | in.open_stream(2); 19 | out.wait_for_consumers(2); 20 | return Streampair(std::move(out), std::move(in)); 21 | } 22 | -------------------------------------------------------------------------------- /lslboost/boost/config/platform/beos.hpp: -------------------------------------------------------------------------------- 1 | // (C) Copyright John Maddock 2001. 2 | // Use, modification and distribution are subject to the 3 | // Boost Software License, Version 1.0. (See accompanying file 4 | // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 5 | 6 | // See http://www.boost.org for most recent version. 7 | 8 | // BeOS specific config options: 9 | 10 | #define BOOST_PLATFORM "BeOS" 11 | 12 | #define BOOST_NO_CWCHAR 13 | #define BOOST_NO_CWCTYPE 14 | #define BOOST_HAS_UNISTD_H 15 | 16 | #define BOOST_HAS_BETHREADS 17 | 18 | #ifndef BOOST_DISABLE_THREADS 19 | # define BOOST_HAS_THREADS 20 | #endif 21 | 22 | // boilerplate code: 23 | #include 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /thirdparty/asio/asio/ts/buffer.hpp: -------------------------------------------------------------------------------- 1 | // 2 | // ts/buffer.hpp 3 | // ~~~~~~~~~~~~~ 4 | // 5 | // Copyright (c) 2003-2023 Christopher M. Kohlhoff (chris at kohlhoff dot com) 6 | // 7 | // Distributed under the Boost Software License, Version 1.0. (See accompanying 8 | // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 9 | // 10 | 11 | #ifndef ASIO_TS_BUFFER_HPP 12 | #define ASIO_TS_BUFFER_HPP 13 | 14 | #if defined(_MSC_VER) && (_MSC_VER >= 1200) 15 | # pragma once 16 | #endif // defined(_MSC_VER) && (_MSC_VER >= 1200) 17 | 18 | #include "asio/buffer.hpp" 19 | #include "asio/completion_condition.hpp" 20 | #include "asio/read.hpp" 21 | #include "asio/write.hpp" 22 | #include "asio/read_until.hpp" 23 | 24 | #endif // ASIO_TS_BUFFER_HPP 25 | -------------------------------------------------------------------------------- /thirdparty/asio/asio/buffered_stream_fwd.hpp: -------------------------------------------------------------------------------- 1 | // 2 | // buffered_stream_fwd.hpp 3 | // ~~~~~~~~~~~~~~~~~~~~~~~ 4 | // 5 | // Copyright (c) 2003-2023 Christopher M. Kohlhoff (chris at kohlhoff dot com) 6 | // 7 | // Distributed under the Boost Software License, Version 1.0. (See accompanying 8 | // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 9 | // 10 | 11 | #ifndef ASIO_BUFFERED_STREAM_FWD_HPP 12 | #define ASIO_BUFFERED_STREAM_FWD_HPP 13 | 14 | #if defined(_MSC_VER) && (_MSC_VER >= 1200) 15 | # pragma once 16 | #endif // defined(_MSC_VER) && (_MSC_VER >= 1200) 17 | 18 | namespace asio { 19 | 20 | template 21 | class buffered_stream; 22 | 23 | } // namespace asio 24 | 25 | #endif // ASIO_BUFFERED_STREAM_FWD_HPP 26 | -------------------------------------------------------------------------------- /thirdparty/asio/asio/version.hpp: -------------------------------------------------------------------------------- 1 | // 2 | // version.hpp 3 | // ~~~~~~~~~~~ 4 | // 5 | // Copyright (c) 2003-2023 Christopher M. Kohlhoff (chris at kohlhoff dot com) 6 | // 7 | // Distributed under the Boost Software License, Version 1.0. (See accompanying 8 | // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 9 | // 10 | 11 | #ifndef ASIO_VERSION_HPP 12 | #define ASIO_VERSION_HPP 13 | 14 | #if defined(_MSC_VER) && (_MSC_VER >= 1200) 15 | # pragma once 16 | #endif // defined(_MSC_VER) && (_MSC_VER >= 1200) 17 | 18 | // ASIO_VERSION % 100 is the sub-minor version 19 | // ASIO_VERSION / 100 % 1000 is the minor version 20 | // ASIO_VERSION / 100000 is the major version 21 | #define ASIO_VERSION 102800 // 1.28.0 22 | 23 | #endif // ASIO_VERSION_HPP 24 | -------------------------------------------------------------------------------- /thirdparty/asio/asio/buffered_read_stream_fwd.hpp: -------------------------------------------------------------------------------- 1 | // 2 | // buffered_read_stream_fwd.hpp 3 | // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4 | // 5 | // Copyright (c) 2003-2023 Christopher M. Kohlhoff (chris at kohlhoff dot com) 6 | // 7 | // Distributed under the Boost Software License, Version 1.0. (See accompanying 8 | // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 9 | // 10 | 11 | #ifndef ASIO_BUFFERED_READ_STREAM_FWD_HPP 12 | #define ASIO_BUFFERED_READ_STREAM_FWD_HPP 13 | 14 | #if defined(_MSC_VER) && (_MSC_VER >= 1200) 15 | # pragma once 16 | #endif // defined(_MSC_VER) && (_MSC_VER >= 1200) 17 | 18 | namespace asio { 19 | 20 | template 21 | class buffered_read_stream; 22 | 23 | } // namespace asio 24 | 25 | #endif // ASIO_BUFFERED_READ_STREAM_FWD_HPP 26 | -------------------------------------------------------------------------------- /thirdparty/asio/asio/buffered_write_stream_fwd.hpp: -------------------------------------------------------------------------------- 1 | // 2 | // buffered_write_stream_fwd.hpp 3 | // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4 | // 5 | // Copyright (c) 2003-2023 Christopher M. Kohlhoff (chris at kohlhoff dot com) 6 | // 7 | // Distributed under the Boost Software License, Version 1.0. (See accompanying 8 | // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 9 | // 10 | 11 | #ifndef ASIO_BUFFERED_WRITE_STREAM_FWD_HPP 12 | #define ASIO_BUFFERED_WRITE_STREAM_FWD_HPP 13 | 14 | #if defined(_MSC_VER) && (_MSC_VER >= 1200) 15 | # pragma once 16 | #endif // defined(_MSC_VER) && (_MSC_VER >= 1200) 17 | 18 | namespace asio { 19 | 20 | template 21 | class buffered_write_stream; 22 | 23 | } // namespace asio 24 | 25 | #endif // ASIO_BUFFERED_WRITE_STREAM_FWD_HPP 26 | -------------------------------------------------------------------------------- /thirdparty/asio/asio/ts/net.hpp: -------------------------------------------------------------------------------- 1 | // 2 | // ts/net.hpp 3 | // ~~~~~~~~~~ 4 | // 5 | // Copyright (c) 2003-2023 Christopher M. Kohlhoff (chris at kohlhoff dot com) 6 | // 7 | // Distributed under the Boost Software License, Version 1.0. (See accompanying 8 | // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 9 | // 10 | 11 | #ifndef ASIO_TS_NET_HPP 12 | #define ASIO_TS_NET_HPP 13 | 14 | #if defined(_MSC_VER) && (_MSC_VER >= 1200) 15 | # pragma once 16 | #endif // defined(_MSC_VER) && (_MSC_VER >= 1200) 17 | 18 | #include "asio/ts/netfwd.hpp" 19 | #include "asio/ts/executor.hpp" 20 | #include "asio/ts/io_context.hpp" 21 | #include "asio/ts/timer.hpp" 22 | #include "asio/ts/buffer.hpp" 23 | #include "asio/ts/socket.hpp" 24 | #include "asio/ts/internet.hpp" 25 | 26 | #endif // ASIO_TS_NET_HPP 27 | -------------------------------------------------------------------------------- /cmake/ProjectOptions.cmake: -------------------------------------------------------------------------------- 1 | # Project build options 2 | option(LSL_DEBUGLOG "Enable (lots of) additional debug messages" OFF) 3 | option(LSL_UNIXFOLDERS "Use the unix folder layout for install targets" ON) 4 | option(LSL_BUILD_STATIC "Build LSL as a static library." OFF) 5 | option(LSL_LEGACY_CPP_ABI "Build legacy C++ ABI into lsl-static" OFF) 6 | option(LSL_OPTIMIZATIONS "Enable some more compiler optimizations" ON) 7 | option(LSL_BUNDLED_BOOST "Use the bundled Boost by default" ON) 8 | option(LSL_BUNDLED_PUGIXML "Use the bundled pugixml by default" ON) 9 | option(LSL_TOOLS "Build some experimental tools for in-depth tests" OFF) 10 | option(LSL_UNITTESTS "Build LSL library unit tests" OFF) 11 | option(LSL_FORCE_FANCY_LIBNAME "Add library name decorations (32/64/-debug)" OFF) 12 | mark_as_advanced(LSL_FORCE_FANCY_LIBNAME) 13 | -------------------------------------------------------------------------------- /thirdparty/asio/asio/ts/timer.hpp: -------------------------------------------------------------------------------- 1 | // 2 | // ts/timer.hpp 3 | // ~~~~~~~~~~~~ 4 | // 5 | // Copyright (c) 2003-2023 Christopher M. Kohlhoff (chris at kohlhoff dot com) 6 | // 7 | // Distributed under the Boost Software License, Version 1.0. (See accompanying 8 | // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 9 | // 10 | 11 | #ifndef ASIO_TS_TIMER_HPP 12 | #define ASIO_TS_TIMER_HPP 13 | 14 | #if defined(_MSC_VER) && (_MSC_VER >= 1200) 15 | # pragma once 16 | #endif // defined(_MSC_VER) && (_MSC_VER >= 1200) 17 | 18 | #include "asio/detail/chrono.hpp" 19 | 20 | #include "asio/wait_traits.hpp" 21 | #include "asio/basic_waitable_timer.hpp" 22 | #include "asio/system_timer.hpp" 23 | #include "asio/steady_timer.hpp" 24 | #include "asio/high_resolution_timer.hpp" 25 | 26 | #endif // ASIO_TS_TIMER_HPP 27 | -------------------------------------------------------------------------------- /thirdparty/asio/asio/signal_set.hpp: -------------------------------------------------------------------------------- 1 | // 2 | // signal_set.hpp 3 | // ~~~~~~~~~~~~~~ 4 | // 5 | // Copyright (c) 2003-2023 Christopher M. Kohlhoff (chris at kohlhoff dot com) 6 | // 7 | // Distributed under the Boost Software License, Version 1.0. (See accompanying 8 | // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 9 | // 10 | 11 | #ifndef ASIO_SIGNAL_SET_HPP 12 | #define ASIO_SIGNAL_SET_HPP 13 | 14 | #if defined(_MSC_VER) && (_MSC_VER >= 1200) 15 | # pragma once 16 | #endif // defined(_MSC_VER) && (_MSC_VER >= 1200) 17 | 18 | #include "asio/detail/config.hpp" 19 | #include "asio/basic_signal_set.hpp" 20 | 21 | namespace asio { 22 | 23 | /// Typedef for the typical usage of a signal set. 24 | typedef basic_signal_set<> signal_set; 25 | 26 | } // namespace asio 27 | 28 | #endif // ASIO_SIGNAL_SET_HPP 29 | -------------------------------------------------------------------------------- /lslboost/boost/config/abi_prefix.hpp: -------------------------------------------------------------------------------- 1 | // abi_prefix header -------------------------------------------------------// 2 | 3 | // (c) Copyright John Maddock 2003 4 | 5 | // Use, modification and distribution are subject to the Boost Software License, 6 | // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt). 8 | 9 | #ifndef BOOST_CONFIG_ABI_PREFIX_HPP 10 | # define BOOST_CONFIG_ABI_PREFIX_HPP 11 | #else 12 | # error double inclusion of header boost/config/abi_prefix.hpp is an error 13 | #endif 14 | 15 | #include 16 | 17 | // this must occur after all other includes and before any code appears: 18 | #ifdef BOOST_HAS_ABI_HEADERS 19 | # include BOOST_ABI_PREFIX 20 | #endif 21 | 22 | #if defined( BOOST_BORLANDC ) 23 | #pragma nopushoptwarn 24 | #endif 25 | 26 | -------------------------------------------------------------------------------- /thirdparty/asio/asio/detail/limits.hpp: -------------------------------------------------------------------------------- 1 | // 2 | // detail/limits.hpp 3 | // ~~~~~~~~~~~~~~~~~ 4 | // 5 | // Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) 6 | // 7 | // Distributed under the Boost Software License, Version 1.0. (See accompanying 8 | // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 9 | // 10 | 11 | #ifndef ASIO_DETAIL_LIMITS_HPP 12 | #define ASIO_DETAIL_LIMITS_HPP 13 | 14 | #if defined(_MSC_VER) && (_MSC_VER >= 1200) 15 | # pragma once 16 | #endif // defined(_MSC_VER) && (_MSC_VER >= 1200) 17 | 18 | #include "asio/detail/config.hpp" 19 | 20 | #if defined(ASIO_HAS_BOOST_LIMITS) 21 | # include 22 | #else // defined(ASIO_HAS_BOOST_LIMITS) 23 | # include 24 | #endif // defined(ASIO_HAS_BOOST_LIMITS) 25 | 26 | #endif // ASIO_DETAIL_LIMITS_HPP 27 | -------------------------------------------------------------------------------- /lslboost/boost/config/platform/vms.hpp: -------------------------------------------------------------------------------- 1 | // (C) Copyright Artyom Beilis 2010. 2 | // Use, modification and distribution are subject to the 3 | // Boost Software License, Version 1.0. (See accompanying file 4 | // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 5 | 6 | #ifndef BOOST_CONFIG_PLATFORM_VMS_HPP 7 | #define BOOST_CONFIG_PLATFORM_VMS_HPP 8 | 9 | #define BOOST_PLATFORM "OpenVMS" 10 | 11 | #undef BOOST_HAS_STDINT_H 12 | #define BOOST_HAS_UNISTD_H 13 | #define BOOST_HAS_NL_TYPES_H 14 | #define BOOST_HAS_GETTIMEOFDAY 15 | #define BOOST_HAS_DIRENT_H 16 | #define BOOST_HAS_PTHREADS 17 | #define BOOST_HAS_NANOSLEEP 18 | #define BOOST_HAS_CLOCK_GETTIME 19 | #define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE 20 | #define BOOST_HAS_LOG1P 21 | #define BOOST_HAS_EXPM1 22 | #define BOOST_HAS_THREADS 23 | #undef BOOST_HAS_SCHED_YIELD 24 | 25 | #endif 26 | -------------------------------------------------------------------------------- /lslboost/boost/endian/detail/is_integral.hpp: -------------------------------------------------------------------------------- 1 | #ifndef BOOST_ENDIAN_DETAIL_IS_INTEGRAL_HPP_INCLUDED 2 | #define BOOST_ENDIAN_DETAIL_IS_INTEGRAL_HPP_INCLUDED 3 | 4 | // Copyright 2023 Peter Dimov 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // http://www.boost.org/LICENSE_1_0.txt 7 | 8 | #include 9 | 10 | namespace lslboost 11 | { 12 | namespace endian 13 | { 14 | namespace detail 15 | { 16 | 17 | template struct is_integral: std::is_integral 18 | { 19 | }; 20 | 21 | #if defined(__SIZEOF_INT128__) 22 | 23 | template<> struct is_integral<__int128_t>: std::true_type 24 | { 25 | }; 26 | 27 | template<> struct is_integral<__uint128_t>: std::true_type 28 | { 29 | }; 30 | 31 | #endif 32 | 33 | } // namespace detail 34 | } // namespace endian 35 | } // namespace lslboost 36 | 37 | #endif // BOOST_ENDIAN_DETAIL_IS_INTEGRAL_HPP_INCLUDED 38 | -------------------------------------------------------------------------------- /src/api_types.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | /** @file api_types.hpp API type forwards 4 | * 5 | * The C API uses pointers to opaque structs to hide implementation details. 6 | * 7 | * This header defines the actual typedefs so the C++ implementation doesn't 8 | * have to do error-prone type casts between internal and API types. 9 | */ 10 | 11 | #define LSL_TYPES 12 | 13 | namespace lsl { 14 | class continuous_resolver_impl; 15 | class resolver_impl; 16 | class stream_info_impl; 17 | class stream_inlet_impl; 18 | class stream_outlet_impl; 19 | } // namespace lsl 20 | 21 | namespace pugi { 22 | struct xml_node_struct; 23 | } 24 | using lsl_continuous_resolver = lsl::resolver_impl *; 25 | using lsl_streaminfo = lsl::stream_info_impl *; 26 | using lsl_outlet = lsl::stream_outlet_impl *; 27 | using lsl_inlet = lsl::stream_inlet_impl *; 28 | using lsl_xml_ptr = pugi::xml_node_struct *; 29 | -------------------------------------------------------------------------------- /lslboost/boost/config/compiler/pgi.hpp: -------------------------------------------------------------------------------- 1 | // (C) Copyright Noel Belcourt 2007. 2 | // Copyright 2017, NVIDIA CORPORATION. 3 | // Use, modification and distribution are subject to the 4 | // Boost Software License, Version 1.0. (See accompanying file 5 | // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 6 | 7 | // See http://www.boost.org for most recent version. 8 | 9 | // PGI C++ compiler setup: 10 | 11 | #define BOOST_COMPILER_VERSION __PGIC__##__PGIC_MINOR__ 12 | #define BOOST_COMPILER "PGI compiler version " BOOST_STRINGIZE(BOOST_COMPILER_VERSION) 13 | 14 | // PGI is mostly GNU compatible. So start with that. 15 | #include 16 | 17 | // Now adjust for things that are different. 18 | 19 | // __float128 is a typedef, not a distinct type. 20 | #undef BOOST_HAS_FLOAT128 21 | 22 | // __int128 is not supported. 23 | #undef BOOST_HAS_INT128 24 | -------------------------------------------------------------------------------- /thirdparty/asio/asio/detail/cstddef.hpp: -------------------------------------------------------------------------------- 1 | // 2 | // detail/cstddef.hpp 3 | // ~~~~~~~~~~~~~~~~~~ 4 | // 5 | // Copyright (c) 2003-2023 Christopher M. Kohlhoff (chris at kohlhoff dot com) 6 | // 7 | // Distributed under the Boost Software License, Version 1.0. (See accompanying 8 | // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 9 | // 10 | 11 | #ifndef ASIO_DETAIL_CSTDDEF_HPP 12 | #define ASIO_DETAIL_CSTDDEF_HPP 13 | 14 | #if defined(_MSC_VER) && (_MSC_VER >= 1200) 15 | # pragma once 16 | #endif // defined(_MSC_VER) && (_MSC_VER >= 1200) 17 | 18 | #include "asio/detail/config.hpp" 19 | #include 20 | 21 | namespace asio { 22 | 23 | #if defined(ASIO_HAS_NULLPTR) 24 | using std::nullptr_t; 25 | #else // defined(ASIO_HAS_NULLPTR) 26 | struct nullptr_t {}; 27 | #endif // defined(ASIO_HAS_NULLPTR) 28 | 29 | } // namespace asio 30 | 31 | #endif // ASIO_DETAIL_CSTDDEF_HPP 32 | -------------------------------------------------------------------------------- /lslboost/boost/config/abi_suffix.hpp: -------------------------------------------------------------------------------- 1 | // abi_sufffix header -------------------------------------------------------// 2 | 3 | // (c) Copyright John Maddock 2003 4 | 5 | // Use, modification and distribution are subject to the Boost Software License, 6 | // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at 7 | // http://www.boost.org/LICENSE_1_0.txt). 8 | 9 | // This header should be #included AFTER code that was preceded by a #include 10 | // . 11 | 12 | #ifndef BOOST_CONFIG_ABI_PREFIX_HPP 13 | # error Header boost/config/abi_suffix.hpp must only be used after boost/config/abi_prefix.hpp 14 | #else 15 | # undef BOOST_CONFIG_ABI_PREFIX_HPP 16 | #endif 17 | 18 | // the suffix header occurs after all of our code: 19 | #ifdef BOOST_HAS_ABI_HEADERS 20 | # include BOOST_ABI_SUFFIX 21 | #endif 22 | 23 | #if defined( BOOST_BORLANDC ) 24 | #pragma nopushoptwarn 25 | #endif 26 | -------------------------------------------------------------------------------- /lslboost/boost/endian/detail/is_scoped_enum.hpp: -------------------------------------------------------------------------------- 1 | #ifndef BOOST_ENDIAN_DETAIL_IS_SCOPED_ENUM_HPP_INCLUDED 2 | #define BOOST_ENDIAN_DETAIL_IS_SCOPED_ENUM_HPP_INCLUDED 3 | 4 | // Copyright 2020 Peter Dimov 5 | // 6 | // Distributed under the Boost Software License, Version 1.0. 7 | // https://www.boost.org/LICENSE_1_0.txt 8 | 9 | #include 10 | 11 | namespace lslboost 12 | { 13 | namespace endian 14 | { 15 | namespace detail 16 | { 17 | 18 | template struct negation: std::integral_constant {}; 19 | 20 | template struct is_scoped_enum: 21 | std::conditional< 22 | std::is_enum::value, 23 | negation< std::is_convertible >, 24 | std::false_type 25 | >::type 26 | { 27 | }; 28 | 29 | } // namespace detail 30 | } // namespace endian 31 | } // namespace lslboost 32 | 33 | #endif // BOOST_ENDIAN_DETAIL_IS_SCOPED_ENUM_HPP_INCLUDED 34 | -------------------------------------------------------------------------------- /thirdparty/asio/asio/ssl.hpp: -------------------------------------------------------------------------------- 1 | // 2 | // ssl.hpp 3 | // ~~~~~~~ 4 | // 5 | // Copyright (c) 2003-2023 Christopher M. Kohlhoff (chris at kohlhoff dot com) 6 | // 7 | // Distributed under the Boost Software License, Version 1.0. (See accompanying 8 | // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 9 | // 10 | 11 | #ifndef ASIO_SSL_HPP 12 | #define ASIO_SSL_HPP 13 | 14 | #if defined(_MSC_VER) && (_MSC_VER >= 1200) 15 | # pragma once 16 | #endif // defined(_MSC_VER) && (_MSC_VER >= 1200) 17 | 18 | #include "asio/ssl/context.hpp" 19 | #include "asio/ssl/context_base.hpp" 20 | #include "asio/ssl/error.hpp" 21 | #include "asio/ssl/rfc2818_verification.hpp" 22 | #include "asio/ssl/host_name_verification.hpp" 23 | #include "asio/ssl/stream.hpp" 24 | #include "asio/ssl/stream_base.hpp" 25 | #include "asio/ssl/verify_context.hpp" 26 | #include "asio/ssl/verify_mode.hpp" 27 | 28 | #endif // ASIO_SSL_HPP 29 | -------------------------------------------------------------------------------- /thirdparty/asio/asio/static_thread_pool.hpp: -------------------------------------------------------------------------------- 1 | // 2 | // static_thread_pool.hpp 3 | // ~~~~~~~~~~~~~~~~~~~~~~ 4 | // 5 | // Copyright (c) 2003-2023 Christopher M. Kohlhoff (chris at kohlhoff dot com) 6 | // 7 | // Distributed under the Boost Software License, Version 1.0. (See accompanying 8 | // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 9 | // 10 | 11 | #ifndef ASIO_STATIC_THREAD_POOL_HPP 12 | #define ASIO_STATIC_THREAD_POOL_HPP 13 | 14 | #if defined(_MSC_VER) && (_MSC_VER >= 1200) 15 | # pragma once 16 | #endif // defined(_MSC_VER) && (_MSC_VER >= 1200) 17 | 18 | #include "asio/detail/config.hpp" 19 | #include "asio/thread_pool.hpp" 20 | 21 | #include "asio/detail/push_options.hpp" 22 | 23 | namespace asio { 24 | 25 | typedef thread_pool static_thread_pool; 26 | 27 | } // namespace asio 28 | 29 | #include "asio/detail/pop_options.hpp" 30 | 31 | #endif // ASIO_STATIC_THREAD_POOL_HPP 32 | -------------------------------------------------------------------------------- /thirdparty/asio/asio/streambuf.hpp: -------------------------------------------------------------------------------- 1 | // 2 | // streambuf.hpp 3 | // ~~~~~~~~~~~~~ 4 | // 5 | // Copyright (c) 2003-2023 Christopher M. Kohlhoff (chris at kohlhoff dot com) 6 | // 7 | // Distributed under the Boost Software License, Version 1.0. (See accompanying 8 | // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 9 | // 10 | 11 | #ifndef ASIO_STREAMBUF_HPP 12 | #define ASIO_STREAMBUF_HPP 13 | 14 | #if defined(_MSC_VER) && (_MSC_VER >= 1200) 15 | # pragma once 16 | #endif // defined(_MSC_VER) && (_MSC_VER >= 1200) 17 | 18 | #include "asio/detail/config.hpp" 19 | 20 | #if !defined(ASIO_NO_IOSTREAM) 21 | 22 | #include "asio/basic_streambuf.hpp" 23 | 24 | namespace asio { 25 | 26 | /// Typedef for the typical usage of basic_streambuf. 27 | typedef basic_streambuf<> streambuf; 28 | 29 | } // namespace asio 30 | 31 | #endif // !defined(ASIO_NO_IOSTREAM) 32 | 33 | #endif // ASIO_STREAMBUF_HPP 34 | -------------------------------------------------------------------------------- /thirdparty/asio/asio/ts/socket.hpp: -------------------------------------------------------------------------------- 1 | // 2 | // ts/socket.hpp 3 | // ~~~~~~~~~~~~~ 4 | // 5 | // Copyright (c) 2003-2023 Christopher M. Kohlhoff (chris at kohlhoff dot com) 6 | // 7 | // Distributed under the Boost Software License, Version 1.0. (See accompanying 8 | // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 9 | // 10 | 11 | #ifndef ASIO_TS_SOCKET_HPP 12 | #define ASIO_TS_SOCKET_HPP 13 | 14 | #if defined(_MSC_VER) && (_MSC_VER >= 1200) 15 | # pragma once 16 | #endif // defined(_MSC_VER) && (_MSC_VER >= 1200) 17 | 18 | #include "asio/socket_base.hpp" 19 | #include "asio/basic_socket.hpp" 20 | #include "asio/basic_datagram_socket.hpp" 21 | #include "asio/basic_stream_socket.hpp" 22 | #include "asio/basic_socket_acceptor.hpp" 23 | #include "asio/basic_socket_streambuf.hpp" 24 | #include "asio/basic_socket_iostream.hpp" 25 | #include "asio/connect.hpp" 26 | 27 | #endif // ASIO_TS_SOCKET_HPP 28 | -------------------------------------------------------------------------------- /lslboost/boost/config/compiler/sgi_mipspro.hpp: -------------------------------------------------------------------------------- 1 | // (C) Copyright John Maddock 2001 - 2002. 2 | // Use, modification and distribution are subject to the 3 | // Boost Software License, Version 1.0. (See accompanying file 4 | // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 5 | 6 | // See http://www.boost.org for most recent version. 7 | 8 | // SGI C++ compiler setup: 9 | 10 | #define BOOST_COMPILER "SGI Irix compiler version " BOOST_STRINGIZE(_COMPILER_VERSION) 11 | 12 | #include 13 | 14 | // 15 | // Threading support: 16 | // Turn this on unconditionally here, it will get turned off again later 17 | // if no threading API is detected. 18 | // 19 | #define BOOST_HAS_THREADS 20 | #define BOOST_NO_TWO_PHASE_NAME_LOOKUP 21 | 22 | #undef BOOST_NO_SWPRINTF 23 | #undef BOOST_DEDUCED_TYPENAME 24 | 25 | // 26 | // version check: 27 | // probably nothing to do here? 28 | 29 | 30 | -------------------------------------------------------------------------------- /lslboost/boost/config/abi/msvc_prefix.hpp: -------------------------------------------------------------------------------- 1 | // (C) Copyright John Maddock 2003. 2 | // Use, modification and distribution are subject to the 3 | // Boost Software License, Version 1.0. (See accompanying file 4 | // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 5 | 6 | // 7 | // Boost binaries are built with the compiler's default ABI settings, 8 | // if the user changes their default alignment in the VS IDE then their 9 | // code will no longer be binary compatible with the bjam built binaries 10 | // unless this header is included to force Boost code into a consistent ABI. 11 | // 12 | // Note that inclusion of this header is only necessary for libraries with 13 | // separate source, header only libraries DO NOT need this as long as all 14 | // translation units are built with the same options. 15 | // 16 | #if defined(_M_X64) 17 | # pragma pack(push,16) 18 | #else 19 | # pragma pack(push,8) 20 | #endif 21 | 22 | 23 | -------------------------------------------------------------------------------- /lslboost/boost/config/platform/qnxnto.hpp: -------------------------------------------------------------------------------- 1 | // (C) Copyright Jim Douglas 2005. 2 | // Use, modification and distribution are subject to the 3 | // Boost Software License, Version 1.0. (See accompanying file 4 | // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 5 | 6 | // See http://www.boost.org for most recent version. 7 | 8 | // QNX specific config options: 9 | 10 | #define BOOST_PLATFORM "QNX" 11 | 12 | #define BOOST_HAS_UNISTD_H 13 | #include 14 | 15 | // QNX claims XOpen version 5 compatibility, but doesn't have an nl_types.h 16 | // or log1p and expm1: 17 | #undef BOOST_HAS_NL_TYPES_H 18 | #undef BOOST_HAS_LOG1P 19 | #undef BOOST_HAS_EXPM1 20 | 21 | #define BOOST_HAS_PTHREADS 22 | #define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE 23 | 24 | #define BOOST_HAS_GETTIMEOFDAY 25 | #define BOOST_HAS_CLOCK_GETTIME 26 | #define BOOST_HAS_NANOSLEEP 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /src/forward.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include 6 | 7 | namespace asio { 8 | namespace ip { 9 | class tcp; 10 | class udp; 11 | } // namespace ip 12 | class io_context; 13 | } // namespace asio 14 | 15 | namespace eos { 16 | class portable_oarchive; 17 | class portable_iarchive; 18 | } // namespace eos 19 | 20 | namespace lsl { 21 | /// shared pointers to various classes 22 | using factory_p = std::shared_ptr; 23 | using sample_p = lslboost::intrusive_ptr; 24 | using send_buffer_p = std::shared_ptr; 25 | using stream_info_impl_p = std::shared_ptr; 26 | using io_context_p = std::shared_ptr; 27 | using string_p = std::shared_ptr; 28 | using tcp_server_p = std::shared_ptr; 29 | using udp_server_p = std::shared_ptr; 30 | } // namespace lsl 31 | -------------------------------------------------------------------------------- /thirdparty/asio/asio/io_service.hpp: -------------------------------------------------------------------------------- 1 | // 2 | // io_service.hpp 3 | // ~~~~~~~~~~~~~~ 4 | // 5 | // Copyright (c) 2003-2023 Christopher M. Kohlhoff (chris at kohlhoff dot com) 6 | // 7 | // Distributed under the Boost Software License, Version 1.0. (See accompanying 8 | // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 9 | // 10 | 11 | #ifndef ASIO_IO_SERVICE_HPP 12 | #define ASIO_IO_SERVICE_HPP 13 | 14 | #if defined(_MSC_VER) && (_MSC_VER >= 1200) 15 | # pragma once 16 | #endif // defined(_MSC_VER) && (_MSC_VER >= 1200) 17 | 18 | #include "asio/io_context.hpp" 19 | 20 | #include "asio/detail/push_options.hpp" 21 | 22 | namespace asio { 23 | 24 | #if !defined(ASIO_NO_DEPRECATED) 25 | /// Typedef for backwards compatibility. 26 | typedef io_context io_service; 27 | #endif // !defined(ASIO_NO_DEPRECATED) 28 | 29 | } // namespace asio 30 | 31 | #include "asio/detail/pop_options.hpp" 32 | 33 | #endif // ASIO_IO_SERVICE_HPP 34 | -------------------------------------------------------------------------------- /conda/meta.yaml: -------------------------------------------------------------------------------- 1 | # Conda build recipe for liblsl 2 | # 3 | {% set name = "liblsl" %} 4 | 5 | package: 6 | name: {{ name|lower }} 7 | version: {{ GIT_DESCRIBE_TAG | replace('-', '.') }} 8 | 9 | source: 10 | git_url: .. 11 | 12 | build: 13 | number: {{ GIT_DESCRIBE_NUMBER }} 14 | string: {{ GIT_BUILD_STR }} 15 | script: 16 | - mkdir build 17 | - 'cmake -DLSL_UNIXFOLDERS=1 -DCMAKE_INSTALL_PREFIX:PATH="{{ PREFIX }}" -DCMAKE_INSTALL_RPATH:PATH="{{ PREFIX }}/lib" -S . -B build -G Ninja' 18 | - 'cmake --build build -j --target install' 19 | 20 | requirements: 21 | build: 22 | - cmake >=3.12 23 | - {{ compiler("cxx") }} 24 | - git 25 | - ninja 26 | host: 27 | 28 | tests: 29 | commands: 30 | - lslver 31 | 32 | about: 33 | home: https://github.com/sccn/liblsl 34 | license: MIT 35 | license_family: MIT 36 | license_file: LICENSE 37 | summary: 'Multi-modal time-synched data transmission over local network' 38 | 39 | -------------------------------------------------------------------------------- /docs/make.bat: -------------------------------------------------------------------------------- 1 | @ECHO OFF 2 | 3 | pushd %~dp0 4 | 5 | REM Command file for Sphinx documentation 6 | 7 | if "%SPHINXBUILD%" == "" ( 8 | set SPHINXBUILD=sphinx-build 9 | ) 10 | set SOURCEDIR=. 11 | set BUILDDIR=_build 12 | 13 | if "%1" == "" goto help 14 | 15 | %SPHINXBUILD% >NUL 2>NUL 16 | if errorlevel 9009 ( 17 | echo. 18 | echo.The 'sphinx-build' command was not found. Make sure you have Sphinx 19 | echo.installed, then set the SPHINXBUILD environment variable to point 20 | echo.to the full path of the 'sphinx-build' executable. Alternatively you 21 | echo.may add the Sphinx directory to PATH. 22 | echo. 23 | echo.If you don't have Sphinx installed, grab it from 24 | echo.http://sphinx-doc.org/ 25 | exit /b 1 26 | ) 27 | 28 | %SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% 29 | goto end 30 | 31 | :help 32 | %SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% 33 | 34 | :end 35 | popd 36 | -------------------------------------------------------------------------------- /lslboost/boost/config/platform/zos.hpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2017 Dynatrace 2 | // 3 | // Distributed under the Boost Software License, Version 1.0. 4 | // See accompanying file LICENSE_1_0.txt or copy at 5 | // http://www.boost.org/LICENSE_1_0.txt 6 | 7 | // See http://www.boost.org for most recent version. 8 | 9 | // Platform setup for IBM z/OS. 10 | 11 | #define BOOST_PLATFORM "IBM z/OS" 12 | 13 | #include // For __UU, __C99, __TR1, ... 14 | 15 | #if defined(__UU) 16 | # define BOOST_HAS_GETTIMEOFDAY 17 | #endif 18 | 19 | #if defined(_OPEN_THREADS) || defined(__SUSV3_THR) 20 | # define BOOST_HAS_PTHREADS 21 | # define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE 22 | # define BOOST_HAS_THREADS 23 | #endif 24 | 25 | #if defined(__SUSV3) || defined(__SUSV3_THR) 26 | # define BOOST_HAS_SCHED_YIELD 27 | #endif 28 | 29 | #define BOOST_HAS_SIGACTION 30 | #define BOOST_HAS_UNISTD_H 31 | #define BOOST_HAS_DIRENT_H 32 | #define BOOST_HAS_NL_TYPES_H 33 | -------------------------------------------------------------------------------- /thirdparty/asio/asio/detail/date_time_fwd.hpp: -------------------------------------------------------------------------------- 1 | // 2 | // detail/date_time_fwd.hpp 3 | // ~~~~~~~~~~~~~~~~~~~~~~~~ 4 | // 5 | // Copyright (c) 2003-2023 Christopher M. Kohlhoff (chris at kohlhoff dot com) 6 | // 7 | // Distributed under the Boost Software License, Version 1.0. (See accompanying 8 | // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 9 | // 10 | 11 | #ifndef ASIO_DETAIL_DATE_TIME_FWD_HPP 12 | #define ASIO_DETAIL_DATE_TIME_FWD_HPP 13 | 14 | #if defined(_MSC_VER) && (_MSC_VER >= 1200) 15 | # pragma once 16 | #endif // defined(_MSC_VER) && (_MSC_VER >= 1200) 17 | 18 | #include "asio/detail/config.hpp" 19 | 20 | namespace boost { 21 | namespace date_time { 22 | 23 | template 24 | class base_time; 25 | 26 | } // namespace date_time 27 | namespace posix_time { 28 | 29 | class ptime; 30 | 31 | } // namespace posix_time 32 | } // namespace boost 33 | 34 | #endif // ASIO_DETAIL_DATE_TIME_FWD_HPP 35 | -------------------------------------------------------------------------------- /lslboost/boost/config/platform/irix.hpp: -------------------------------------------------------------------------------- 1 | // (C) Copyright John Maddock 2001 - 2003. 2 | // (C) Copyright Jens Maurer 2003. 3 | // Use, modification and distribution are subject to the 4 | // Boost Software License, Version 1.0. (See accompanying file 5 | // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 6 | 7 | 8 | // See http://www.boost.org for most recent version. 9 | 10 | // SGI Irix specific config options: 11 | 12 | #define BOOST_PLATFORM "SGI Irix" 13 | 14 | #define BOOST_NO_SWPRINTF 15 | // 16 | // these are not auto detected by POSIX feature tests: 17 | // 18 | #define BOOST_HAS_GETTIMEOFDAY 19 | #define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE 20 | 21 | #ifdef __GNUC__ 22 | // GNU C on IRIX does not support threads (checked up to gcc 3.3) 23 | # define BOOST_DISABLE_THREADS 24 | #endif 25 | 26 | // boilerplate code: 27 | #define BOOST_HAS_UNISTD_H 28 | #include 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /thirdparty/asio/asio/ssl/impl/src.hpp: -------------------------------------------------------------------------------- 1 | // 2 | // impl/ssl/src.hpp 3 | // ~~~~~~~~~~~~~~~~ 4 | // 5 | // Copyright (c) 2003-2023 Christopher M. Kohlhoff (chris at kohlhoff dot com) 6 | // 7 | // Distributed under the Boost Software License, Version 1.0. (See accompanying 8 | // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 9 | // 10 | 11 | #ifndef ASIO_SSL_IMPL_SRC_HPP 12 | #define ASIO_SSL_IMPL_SRC_HPP 13 | 14 | #define ASIO_SOURCE 15 | 16 | #include "asio/detail/config.hpp" 17 | 18 | #if defined(ASIO_HEADER_ONLY) 19 | # error Do not compile Asio library source with ASIO_HEADER_ONLY defined 20 | #endif 21 | 22 | #include "asio/ssl/impl/context.ipp" 23 | #include "asio/ssl/impl/error.ipp" 24 | #include "asio/ssl/detail/impl/engine.ipp" 25 | #include "asio/ssl/detail/impl/openssl_init.ipp" 26 | #include "asio/ssl/impl/host_name_verification.ipp" 27 | #include "asio/ssl/impl/rfc2818_verification.ipp" 28 | 29 | #endif // ASIO_SSL_IMPL_SRC_HPP 30 | -------------------------------------------------------------------------------- /lslboost/boost/config/platform/haiku.hpp: -------------------------------------------------------------------------------- 1 | // (C) Copyright Jessica Hamilton 2014. 2 | // Use, modification and distribution are subject to the 3 | // Boost Software License, Version 1.0. (See accompanying file 4 | // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 5 | 6 | // See http://www.boost.org for most recent version. 7 | 8 | // Haiku specific config options: 9 | 10 | #define BOOST_PLATFORM "Haiku" 11 | 12 | #define BOOST_HAS_UNISTD_H 13 | #define BOOST_HAS_STDINT_H 14 | 15 | #ifndef BOOST_DISABLE_THREADS 16 | # define BOOST_HAS_THREADS 17 | #endif 18 | 19 | #define BOOST_NO_CXX11_HDR_TYPE_TRAITS 20 | #define BOOST_NO_CXX11_ATOMIC_SMART_PTR 21 | #define BOOST_NO_CXX11_STATIC_ASSERT 22 | #define BOOST_NO_CXX11_VARIADIC_MACROS 23 | 24 | // 25 | // thread API's not auto detected: 26 | // 27 | #define BOOST_HAS_SCHED_YIELD 28 | #define BOOST_HAS_GETTIMEOFDAY 29 | 30 | // boilerplate code: 31 | #include 32 | -------------------------------------------------------------------------------- /lslboost/boost/smart_ptr/detail/requires_cxx11.hpp: -------------------------------------------------------------------------------- 1 | #ifndef BOOST_SMART_PTR_DETAIL_REQUIRES_CXX11_HPP_INCLUDED 2 | #define BOOST_SMART_PTR_DETAIL_REQUIRES_CXX11_HPP_INCLUDED 3 | 4 | // Copyright 2023 Peter Dimov 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // https://www.boost.org/LICENSE_1_0.txt 7 | 8 | #include 9 | #include 10 | 11 | #if defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) || \ 12 | defined(BOOST_NO_CXX11_RVALUE_REFERENCES) || \ 13 | defined(BOOST_NO_CXX11_DECLTYPE) || \ 14 | defined(BOOST_NO_CXX11_CONSTEXPR) || \ 15 | defined(BOOST_NO_CXX11_NOEXCEPT) || \ 16 | defined(BOOST_NO_CXX11_NULLPTR) || \ 17 | defined(BOOST_NO_CXX11_SMART_PTR) 18 | 19 | BOOST_PRAGMA_MESSAGE("C++03 support was deprecated in Boost.SmartPtr 1.82 and will be removed in Boost.SmartPtr 1.85.") 20 | 21 | #endif 22 | 23 | #endif // #ifndef BOOST_SMART_PTR_DETAIL_REQUIRES_CXX11_HPP_INCLUDED 24 | -------------------------------------------------------------------------------- /lslboost/boost/config/compiler/greenhills.hpp: -------------------------------------------------------------------------------- 1 | // (C) Copyright John Maddock 2001. 2 | // Use, modification and distribution are subject to the 3 | // Boost Software License, Version 1.0. (See accompanying file 4 | // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 5 | 6 | // See http://www.boost.org for most recent version. 7 | 8 | // Greenhills C++ compiler setup: 9 | 10 | #define BOOST_COMPILER "Greenhills C++ version " BOOST_STRINGIZE(__ghs) 11 | 12 | #include 13 | 14 | // 15 | // versions check: 16 | // we don't support Greenhills prior to version 0: 17 | #if __ghs < 0 18 | # error "Compiler not supported or configured - please reconfigure" 19 | #endif 20 | // 21 | // last known and checked version is 0: 22 | #if (__ghs > 0) 23 | # if defined(BOOST_ASSERT_CONFIG) 24 | # error "boost: Unknown compiler version - please run the configure tests and report the results" 25 | # endif 26 | #endif 27 | 28 | 29 | -------------------------------------------------------------------------------- /thirdparty/asio/asio/impl/system_context.hpp: -------------------------------------------------------------------------------- 1 | // 2 | // impl/system_context.hpp 3 | // ~~~~~~~~~~~~~~~~~~~~~~~ 4 | // 5 | // Copyright (c) 2003-2023 Christopher M. Kohlhoff (chris at kohlhoff dot com) 6 | // 7 | // Distributed under the Boost Software License, Version 1.0. (See accompanying 8 | // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 9 | // 10 | 11 | #ifndef ASIO_IMPL_SYSTEM_CONTEXT_HPP 12 | #define ASIO_IMPL_SYSTEM_CONTEXT_HPP 13 | 14 | #if defined(_MSC_VER) && (_MSC_VER >= 1200) 15 | # pragma once 16 | #endif // defined(_MSC_VER) && (_MSC_VER >= 1200) 17 | 18 | #include "asio/system_executor.hpp" 19 | 20 | #include "asio/detail/push_options.hpp" 21 | 22 | namespace asio { 23 | 24 | inline system_context::executor_type 25 | system_context::get_executor() ASIO_NOEXCEPT 26 | { 27 | return system_executor(); 28 | } 29 | 30 | } // namespace asio 31 | 32 | #include "asio/detail/pop_options.hpp" 33 | 34 | #endif // ASIO_IMPL_SYSTEM_CONTEXT_HPP 35 | -------------------------------------------------------------------------------- /lslboost/boost/config/no_tr1/cmath.hpp: -------------------------------------------------------------------------------- 1 | // (C) Copyright John Maddock 2008. 2 | // Use, modification and distribution are subject to the 3 | // Boost Software License, Version 1.0. (See accompanying file 4 | // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 5 | // 6 | // The aim of this header is just to include but to do 7 | // so in a way that does not result in recursive inclusion of 8 | // the Boost TR1 components if boost/tr1/tr1/cmath is in the 9 | // include search path. We have to do this to avoid circular 10 | // dependencies: 11 | // 12 | 13 | #ifndef BOOST_CONFIG_CMATH 14 | # define BOOST_CONFIG_CMATH 15 | 16 | # ifndef BOOST_TR1_NO_RECURSION 17 | # define BOOST_TR1_NO_RECURSION 18 | # define BOOST_CONFIG_NO_CMATH_RECURSION 19 | # endif 20 | 21 | # include 22 | 23 | # ifdef BOOST_CONFIG_NO_CMATH_RECURSION 24 | # undef BOOST_TR1_NO_RECURSION 25 | # undef BOOST_CONFIG_NO_CMATH_RECURSION 26 | # endif 27 | 28 | #endif 29 | -------------------------------------------------------------------------------- /lslboost/boost/config/header_deprecated.hpp: -------------------------------------------------------------------------------- 1 | #ifndef BOOST_CONFIG_HEADER_DEPRECATED_HPP_INCLUDED 2 | #define BOOST_CONFIG_HEADER_DEPRECATED_HPP_INCLUDED 3 | 4 | // Copyright 2017 Peter Dimov. 5 | // 6 | // Distributed under the Boost Software License, Version 1.0. 7 | // 8 | // See accompanying file LICENSE_1_0.txt or copy at 9 | // http://www.boost.org/LICENSE_1_0.txt 10 | // 11 | // BOOST_HEADER_DEPRECATED("") 12 | // 13 | // Expands to the equivalent of 14 | // BOOST_PRAGMA_MESSAGE("This header is deprecated. Use instead.") 15 | // 16 | // Note that this header is C compatible. 17 | 18 | #include 19 | 20 | #if defined(BOOST_ALLOW_DEPRECATED_HEADERS) || defined(BOOST_ALLOW_DEPRECATED) 21 | # define BOOST_HEADER_DEPRECATED(a) 22 | #else 23 | # define BOOST_HEADER_DEPRECATED(a) BOOST_PRAGMA_MESSAGE("This header is deprecated. Use " a " instead.") 24 | #endif 25 | 26 | #endif // BOOST_CONFIG_HEADER_DEPRECATED_HPP_INCLUDED 27 | -------------------------------------------------------------------------------- /lslboost/boost/config/no_tr1/memory.hpp: -------------------------------------------------------------------------------- 1 | // (C) Copyright John Maddock 2005. 2 | // Use, modification and distribution are subject to the 3 | // Boost Software License, Version 1.0. (See accompanying file 4 | // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 5 | // 6 | // The aim of this header is just to include but to do 7 | // so in a way that does not result in recursive inclusion of 8 | // the Boost TR1 components if boost/tr1/tr1/memory is in the 9 | // include search path. We have to do this to avoid circular 10 | // dependencies: 11 | // 12 | 13 | #ifndef BOOST_CONFIG_MEMORY 14 | # define BOOST_CONFIG_MEMORY 15 | 16 | # ifndef BOOST_TR1_NO_RECURSION 17 | # define BOOST_TR1_NO_RECURSION 18 | # define BOOST_CONFIG_NO_MEMORY_RECURSION 19 | # endif 20 | 21 | # include 22 | 23 | # ifdef BOOST_CONFIG_NO_MEMORY_RECURSION 24 | # undef BOOST_TR1_NO_RECURSION 25 | # undef BOOST_CONFIG_NO_MEMORY_RECURSION 26 | # endif 27 | 28 | #endif 29 | -------------------------------------------------------------------------------- /lslboost/boost/endian/detail/is_trivially_copyable.hpp: -------------------------------------------------------------------------------- 1 | #ifndef BOOST_ENDIAN_DETAIL_IS_TRIVIALLY_COPYABLE_HPP_INCLUDED 2 | #define BOOST_ENDIAN_DETAIL_IS_TRIVIALLY_COPYABLE_HPP_INCLUDED 3 | 4 | // Copyright 2019, 2023 Peter Dimov 5 | // Distributed under the Boost Software License, Version 1.0. 6 | // http://www.boost.org/LICENSE_1_0.txt 7 | 8 | #include 9 | #include 10 | 11 | namespace lslboost 12 | { 13 | namespace endian 14 | { 15 | namespace detail 16 | { 17 | 18 | #if defined( BOOST_LIBSTDCXX_VERSION ) && BOOST_LIBSTDCXX_VERSION < 50000 19 | 20 | template struct is_trivially_copyable: std::integral_constant {}; 22 | 23 | #else 24 | 25 | using std::is_trivially_copyable; 26 | 27 | #endif 28 | 29 | } // namespace detail 30 | } // namespace endian 31 | } // namespace lslboost 32 | 33 | #endif // BOOST_ENDIAN_DETAIL_IS_TRIVIALLY_COPYABLE_HPP_INCLUDED 34 | -------------------------------------------------------------------------------- /thirdparty/asio/asio/associator.hpp: -------------------------------------------------------------------------------- 1 | // 2 | // associator.hpp 3 | // ~~~~~~~~~~~~~~ 4 | // 5 | // Copyright (c) 2003-2023 Christopher M. Kohlhoff (chris at kohlhoff dot com) 6 | // 7 | // Distributed under the Boost Software License, Version 1.0. (See accompanying 8 | // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 9 | // 10 | 11 | #ifndef ASIO_ASSOCIATOR_HPP 12 | #define ASIO_ASSOCIATOR_HPP 13 | 14 | #if defined(_MSC_VER) && (_MSC_VER >= 1200) 15 | # pragma once 16 | #endif // defined(_MSC_VER) && (_MSC_VER >= 1200) 17 | 18 | #include "asio/detail/config.hpp" 19 | 20 | #include "asio/detail/push_options.hpp" 21 | 22 | namespace asio { 23 | 24 | /// Used to generically specialise associators for a type. 25 | template