[med-svn] [Git][med-team/libxdf][upstream] New upstream version 0.99.10+dfsg
Michael R. Crusoe (@crusoe)
gitlab at salsa.debian.org
Fri May 1 13:18:16 BST 2026
Michael R. Crusoe pushed to branch upstream at Debian Med / libxdf
Commits:
90cfdefb by Michael R. Crusoe at 2026-05-01T13:58:30+02:00
New upstream version 0.99.10+dfsg
- - - - -
8 changed files:
- + .github/dependabot.yml
- .github/workflows/cppcmake.yml
- CMakeLists.txt
- README.md
- + libxdfConfig.cmake.in
- xdf.cpp
- xdf.h
- xdf.pro
Changes:
=====================================
.github/dependabot.yml
=====================================
@@ -0,0 +1,6 @@
+version: 2
+updates:
+ - package-ecosystem: "github-actions"
+ directory: "/"
+ schedule:
+ interval: "weekly"
=====================================
.github/workflows/cppcmake.yml
=====================================
@@ -2,75 +2,79 @@ name: C/C++ CI
on:
push:
+ branches:
+ - main
tags:
- - v*.*
+ - v*.*
pull_request:
branches:
- - master
+ - main
jobs:
build:
name: ${{ matrix.config.name }}
+ permissions:
+ contents: read
runs-on: ${{ matrix.config.os }}
strategy:
matrix:
config:
- - {name: "ubuntu-latest", os: ubuntu-latest, cmake_extra: ""}
- - {name: "windows-x64", os: windows-latest, cmake_extra: "-T v140"}
- - {name: "windows-32", os: windows-latest, cmake_extra: "-T v140 -A Win32"}
- - {name: "macOS-latest", os: macOS-latest, cmake_extra: ""}
+ - { name: "ubuntu-latest", os: ubuntu-latest, cmake_extra: "" }
+ - { name: "windows-x64", os: windows-latest, cmake_extra: "-T v143" }
+ - {
+ name: "windows-x32",
+ os: windows-latest,
+ cmake_extra: "-T v143 -A Win32",
+ }
+ - { name: "macOS-latest", os: macos-latest, cmake_extra: "" }
fail-fast: false
-
+
steps:
- - uses: actions/checkout at v2
-
- - name: CMake version
- run: cmake --version
-
- - name: Configure CMake
- shell: bash
- run: |
- cmake -S . -B build ${{ matrix.config.cmake_extra }} -DCMAKE_INSTALL_PREFIX=${PWD}/build/install -DCPACK_PACKAGE_DIRECTORY=${PWD}/build/package -DCPACK_DEBIAN_PACKAGE_SHLIBDEPS=ON
-
- - name: Make
- run: cmake --build build --config Release -j
-
- - name: Install
- run: cmake --build build --config Release -j --target install
-
- - name: Package
- run: cmake --build build --config Release -j --target package
-
- - name: Upload Artifact
- uses: actions/upload-artifact at master
- # if: "!startsWith(github.ref, 'refs/heads')"
- with:
- name: pkg-${{ matrix.config.name }}
- path: |
+ - uses: actions/checkout at v6
+
+ - name: CMake version
+ run: cmake --version
+
+ - name: Configure CMake
+ shell: bash
+ run: |
+ cmake -S . -B build ${{ matrix.config.cmake_extra }} -DCMAKE_INSTALL_PREFIX=${PWD}/build/install -DCPACK_PACKAGE_DIRECTORY=${PWD}/build/package -DCPACK_DEBIAN_PACKAGE_SHLIBDEPS=ON
+
+ - name: Make
+ run: cmake --build build --config Release -j
+
+ - name: Install
+ run: cmake --build build --config Release -j --target install
+
+ - name: Package
+ run: cmake --build build --config Release -j --target package
+
+ - name: Upload Artifact
+ uses: actions/upload-artifact at v7
+ with:
+ name: pkg-${{ matrix.config.name }}
+ path: |
build/package/*.deb
build/package/*.tar.bz2
build/package/*.zip
-
release:
needs: build
+ if: startsWith(github.ref, 'refs/tags/')
runs-on: ubuntu-latest
+ permissions:
+ contents: write
steps:
-
- - name: Download Artifacts
- if: startsWith(github.ref, 'refs/tags/')
- uses: actions/download-artifact at v2
-
- - name: Create Release
- if: startsWith(github.ref, 'refs/tags/')
- id: create_release
- uses: softprops/action-gh-release at v1
- env:
+ - name: Download Artifacts
+ uses: actions/download-artifact at v8
+
+ - name: Create Release
+ id: create_release
+ uses: softprops/action-gh-release at v2
+ env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- with:
- # tag_name: ${{ github.ref }} # ${{ github.ref }} is default
- name: Release ${{ github.ref }}
- draft: false
- prerelease: false
- # body_path: CHANGELOG.txt
- files: 'pkg-*/*'
+ with:
+ name: ${{ github.ref_name }}
+ draft: false
+ prerelease: false
+ files: "pkg-*/*"
=====================================
CMakeLists.txt
=====================================
@@ -1,14 +1,17 @@
-cmake_minimum_required(VERSION 3.7)
-set(CMAKE_OSX_DEPLOYMENT_TARGET 10.13)
+cmake_minimum_required(VERSION 3.10)
+set(CMAKE_OSX_DEPLOYMENT_TARGET 11)
-project(libxdf
- VERSION 0.99.8
- DESCRIPTION "C++ library for loading multimodal, multi-rate signals stored in XDF files."
- HOMEPAGE_URL https://xdf-modules.github.io/libxdf/)
+project(
+ libxdf
+ VERSION 0.99.10
+ DESCRIPTION "C++ library for loading multimodal, multi-rate signals stored in XDF files"
+ HOMEPAGE_URL https://xdf-modules.github.io/libxdf/
+)
option(XDF_NO_SYSTEM_PUGIXML "Force use of bundled pugixml" OFF)
-set(SOURCES
+set(
+ SOURCES
xdf.h
xdf.cpp
smarc/filtering.h
@@ -29,36 +32,48 @@ add_library(xdf ${SOURCES})
find_package(pugixml 1.9 QUIET)
if(TARGET pugixml AND NOT XDF_NO_SYSTEM_PUGIXML)
- message(STATUS "Using system pugixml")
- target_link_libraries(xdf PRIVATE pugixml)
+ message(STATUS "Using system pugixml")
+ target_link_libraries(xdf PRIVATE pugixml)
else()
- message(STATUS "Using bundled pugixml")
- target_sources(xdf PRIVATE pugixml/pugixml.cpp)
- target_include_directories(xdf PRIVATE pugixml)
+ message(STATUS "Using bundled pugixml")
+ target_sources(xdf PRIVATE pugixml/pugixml.cpp)
+ target_include_directories(xdf PRIVATE pugixml)
endif()
-target_compile_features(xdf PUBLIC cxx_std_11)
+target_compile_features(xdf PUBLIC cxx_std_20)
set_target_properties(xdf PROPERTIES OUTPUT_NAME xdf PUBLIC_HEADER xdf.h)
-target_include_directories(xdf PUBLIC
- $<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}>
- $<INSTALL_INTERFACE:include>
+target_include_directories(
+ xdf PUBLIC
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}>
+ $<INSTALL_INTERFACE:include>
)
+include(CMakePackageConfigHelpers)
include(GNUInstallDirs)
-install(TARGETS xdf
- EXPORT "${PROJECT_NAME}Config"
- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
- PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
+configure_package_config_file(
+ ${CMAKE_CURRENT_LIST_DIR}/libxdfConfig.cmake.in
+ ${CMAKE_CURRENT_BINARY_DIR}/libxdfConfig.cmake
+ INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
+)
+install(
+ TARGETS xdf
+ EXPORT "${PROJECT_NAME}Targets"
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
)
-install(EXPORT "${PROJECT_NAME}Config"
- COMPONENT ${PROJECT_NAME}
- NAMESPACE "XDF::"
- DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
+install(
+ EXPORT "${PROJECT_NAME}Targets"
+ COMPONENT ${PROJECT_NAME}
+ NAMESPACE "XDF::"
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
+)
+install(
+ FILES ${CMAKE_CURRENT_BINARY_DIR}/libxdfConfig.cmake
+ COMPONENT ${PROJECT_NAME}
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
)
-# set(CPACK_STRIP_FILES ON)
-# set(CPACK_ARCHIVE_COMPONENT_INSTALL ON)
-set(CPACK_PACKAGE_CONTACT "yl3842 at columbia.edu")
+set(CPACK_PACKAGE_CONTACT "yida.lin at outlook.com")
if(APPLE)
set(CPACK_GENERATOR TBZ2)
elseif(WIN32)
@@ -69,4 +84,3 @@ elseif(UNIX)
set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS ON)
endif()
include(CPack)
-
=====================================
README.md
=====================================
@@ -1,100 +1,58 @@
-# Libxdf – a C++ library for loading [XDF](https://github.com/sccn/xdf/wiki/Specifications "Extensible Data Format") files
+# LibXDF – a C++ library for loading XDF files
-[](http://www.repostatus.org/#active)
-[](https://opensource.org/licenses/BSD-2-Clause)
+LibXDF is a cross-platform C++ library for loading multimodal signals stored in [XDF](https://github.com/sccn/xdf/wiki/Specifications "Extensible Data Format") files.
+It is used in the biosignal viewing application [SigViewer](https://github.com/cbrnr/sigviewer) and the LSL application [XDFStreamer](https://github.com/labstreaminglayer/App-XDFStreamer/) and can also be integrated into other C++ applications.
-* [Introduction](#intro)
-* [Quick-Start Guide](#quick)
- * [Download](#download)
-* [Documentation](#doc)
-* [Reference](#reference)
-* [Support](#support)
+## Quick start
-## <a name="intro"></a>Introduction
+The source code and prebuilt binaries are available as [releases](https://github.com/Yida-Lin/libxdf/releases) (you may need to expand the list of assets to find the downloads).
-Libxdf is a cross-platform C++ library for loading multimodal, multi-rate signals stored in [XDF](https://github.com/sccn/xdf/wiki/Specifications "Extensible Data Format") files.
-Libxdf is used in the biosignal viewing application [SigViewer](https://github.com/cbrnr/sigviewer) and the LSL application [XDFStreamer](https://github.com/labstreaminglayer/App-XDFStreamer/). It can also be integrated into other C++ applications.
-
-Libxdf is open-source, free, and actively maintained.
-
-## <a name="quick"></a>Quick-Start Guide
-
-### <a name="download"></a>Download
-
-* Find Source and Prebuilt Binaries on the [releases page](https://github.com/Yida-Lin/libxdf/releases).
- * You may need to expand the list of Assets to find the downloads.
-* For Linux Debian (Ubuntu) users: `sudo dpkg -i libxdf-{version}-Linux.deb`
-* For Windows and Mac users: simply extract the archive somewhere convenient.
-
-### Building libxdf
-
-If the release does not have assets for your platform or they do not work for you for some other reason, then
-Libxdf can be conveniently built either using `qmake` or `cmake`. Configuration files for both build tools are included with the source.
-
-To build with cmake from command prompt / terminal:
+If a particular release does not have assets for your platform or they do not work for you for some other reason, then
+libXDF can be built with [CMake](https://cmake.org) using the following two commands:
```sh
-cmake -S . -B build -DCMAKE_INSTALL_PREFIX=${PWD}/build/install
-cmake --build build --config Release -j --target install
+cmake -S . -B build -DCMAKE_INSTALL_PREFIX=${PWD}/build/install -DCMAKE_BUILD_TYPE=Release
+cmake --build build -j --target install
```
-`cmake` builds a static library by default, but you can build a shared library
-by setting the
-[`BUILD_SHARED_LIBS`](https://cmake.org/cmake/help/latest/variable/BUILD_SHARED_LIBS.html)
-variable (e.g. add `-DBUILD_SHARED_LIBS=ON` to the first cmake command above).
+This builds and installs a static library in `./build/install`, but you can build a shared library by adding `-DBUILD_SHARED_LIBS=ON` to the first CMake command.
-### Use in conjunction with [SigViewer](https://github.com/cbrnr/sigviewer)
-Libxdf is a built-in component of [SigViewer](https://github.com/cbrnr/sigviewer). If you wish to build SigViewer from source, follow these steps:
+## Integrating into C++ applications
-1. Download `xdf.h` and `libxdf.a` from the [release](https://github.com/Yida-Lin/libxdf/releases) page.
-2. Copy `xdf.h` into `sigviewer/external/include`
-3. Copy `libxdf.a` into `sigviewer/external/lib`
-4. Build and run Sigviewer
+If you want to use libXDF in C++ applications, follow these steps:
+1. Install a prebuilt binary release or build libXDF from source as described above.
+2. If you use CMake, add the following lines to your `CMakeLists.txt` to find and link against libXDF:
-
+ ```CMake
+ find_package(libxdf REQUIRED
+ HINTS ${XDF_INSTALL_ROOT}
+ PATH_SUFFIXES share
+ )
+ target_link_libraries(${PROJECT_NAME}
+ PRIVATE
+ # ... other dependencies
+ XDF::xdf
+ )
+ ```
-Example: SigViewer using _libxdf_ to display signals in an XDF file.
+ If `libxdf` is not in a standard system library location, pass `-DXDF_INSTALL_ROOT=path/to/libxdf` to specify its path.
+3. In your source code, `#include "xdf.h"`, instantiate an object of the `Xdf` class, and call the `load_xdf` method.
-### Use in other C++ applications
+ For example:
-1. Install a prebuilt binary release or build from source as above.
-2. For CMake users:
- * In your project's CMakeLists.txt, use the following snippet:
- ```CMake
- find_package(libxdf REQUIRED
- HINTS ${XDF_INSTALL_ROOT}
- PATH_SUFFIXES share
- )
- target_link_libraries(${PROJECT_NAME}
- PRIVATE
- # ... other dependencies
- XDF::xdf
- )
- ```
- * If the libxdf package was installed or extracted into a folder other than a standard system library folder, you will have to pass a cmake command line argument to indicate where to find it: `-DXDF_INSTALL_ROOT=path/to/libxdf`
-3. In your source code, `#include "xdf.h"`, instantiate an object of the `Xdf` class and call the `load_xdf` method.
+ ```C++
+ #include "xdf.h"
-Example:
+ Xdf XDFdata;
+ XDFdata.load_xdf("example.xdf");
+ ```
-```C++
-#include "xdf.h"
+Functions must be called in a specific order. For example, calling `subtractMean` before loading data leads to undefined behavior.
-Xdf XDFdata;
-XDFdata.load_xdf("C:/example.xdf");
-```
-
-To resample the signals to e.g. 100Hz:
-
-```C++
-XDFdata.resample(100);
-```
-
-The functions in libxdf must be called following a certain order. For instance, if you call the `subtractMean` function before you load any data, it will cause undefined behavior.
-
-The recommended order is shown here. Only `load_xdf` is mandatory.
+The recommended order is shown below:
```C++
XDFdata.load_xdf(std::string filepath);
@@ -104,31 +62,16 @@ XDFdata.resample(int sampleRate);
XDFdata.freeUpTimeStamps();
```
-Libxdf depends on third party libraries [Pugixml v1.8](http://pugixml.org/) for XML parsing and [Smarc](http://audio-smarc.sourceforge.net/) for resampling.
-## <a name="doc"></a> Documentation
-Detailed documentation was generated via [Doxygen](http://www.stack.nl/~dimitri/doxygen/index.html) and is available [here](docs/html/class_xdf.html).
+## Documentation
-## <a name="SigViewer"></a> SigViewer Online Repo
-SigViewer Online Repository is [here](repository/Updates.xml).
+Detailed documentation is available [here](docs/html/class_xdf.html).
-## <a name="reference"></a> Reference
-If you use this code in your project, please cite:
-```
-Yida Lin, Clemens Brunner, Paul Sajda and Josef Faller. SigViewer: Visualizing Multimodal Signals Stored in XDF (Extensible Data Format) Files. The 39th Annual International Conference of the IEEE Engineering in Medicine and Biology Society.
-```
-Direct link: https://arxiv.org/abs/1708.06333
-Bibtex format:
-```
- at article{lin2017sigviewer,
- title={SigViewer: visualizing multimodal signals stored in XDF (Extensible Data Format) files},
- author={Lin, Yida and Brunner, Clemens and Sajda, Paul and Faller, Josef},
- journal={arXiv},
- pages={arXiv--1708},
- year={2017}
-}
-```
+## References
+
+If you use libXDF in your project, please consider citing the following [conference paper](https://arxiv.org/abs/1708.06333):
+
+> Yida Lin, Clemens Brunner, Paul Sajda and Josef Faller. *SigViewer: Visualizing Multimodal Signals Stored in XDF (Extensible Data Format) Files.* The 39th Annual International Conference of the IEEE Engineering in Medicine and Biology Society.
-## <a name="support"></a>Support
-[Email author](mailto:yl3842 at columbia.edu) or report a new [issue](https://github.com/Yida-Lin/libxdf/issues).
+LibXDF depends on third party libraries [pugixml](http://pugixml.org/) for XML parsing and [Smarc](http://audio-smarc.sourceforge.net/) for resampling.
=====================================
libxdfConfig.cmake.in
=====================================
@@ -0,0 +1,9 @@
+ at PACKAGE_INIT@
+
+include(CMakeFindDependencyMacro)
+
+find_dependency(pugixml)
+
+if(NOT TARGET XDF::xdf)
+ include("${CMAKE_CURRENT_LIST_DIR}/libxdfTargets.cmake")
+endif()
=====================================
xdf.cpp
=====================================
@@ -612,8 +612,10 @@ void Xdf::syncTimeStamps()
}
else
{
- streams[k].info.first_timestamp = streams[k].time_stamps.front();
- streams[k].info.last_timestamp = streams[k].time_stamps.back();
+ if (streams[k].time_stamps.size() > 0) {
+ streams[k].info.first_timestamp = streams[k].time_stamps.front();
+ streams[k].info.last_timestamp = streams[k].time_stamps.back();
+ }
}
}
}
@@ -712,7 +714,7 @@ void Xdf::resample(int userSrate)
//function of reading the length of each chunk
uint64_t Xdf::readLength(std::ifstream &file)
{
- uint8_t bytes;
+ uint8_t bytes = 0;
Xdf::readBin(file, &bytes);
uint64_t length = 0;
@@ -1002,7 +1004,7 @@ int Xdf::writeEventsToXDF(std::string file_path)
}
}
- std::cout << "Succesfully wrote to XDF file." << std::endl;
+ std::cout << "Successfully wrote to XDF file." << std::endl;
return 0; //Success
}
=====================================
xdf.h
=====================================
@@ -26,6 +26,7 @@
#include <vector>
#include <map>
#include <set>
+#include <cstdint>
/*! \class Xdf
*
=====================================
xdf.pro
=====================================
@@ -2,7 +2,7 @@ QT -= gui
TARGET = xdf
TEMPLATE = lib
-CONFIG += c++11 shared_and_static build_all
+CONFIG += c++17 shared_and_static build_all
INCLUDEPATH += pugixml
QMAKE_CFLAGS += -std=c99
@@ -32,5 +32,5 @@ unix {
}
macx {
- QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.13
+ QMAKE_MACOSX_DEPLOYMENT_TARGET = 11
}
View it on GitLab: https://salsa.debian.org/med-team/libxdf/-/commit/90cfdefb0ffa7fdffc98bd0a66de58b543329989
--
View it on GitLab: https://salsa.debian.org/med-team/libxdf/-/commit/90cfdefb0ffa7fdffc98bd0a66de58b543329989
You're receiving this email because of your account on salsa.debian.org. Manage all notifications: https://salsa.debian.org/-/profile/notifications | Help: https://salsa.debian.org/help
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/debian-med-commit/attachments/20260501/3d9838a9/attachment-0001.htm>
More information about the debian-med-commit
mailing list