[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
 
-[![Project Status: Active – The project has reached a stable, usable state and is being actively developed.](http://www.repostatus.org/badges/latest/active.svg)](http://www.repostatus.org/#active)
-[![License](https://img.shields.io/github/license/xdf-modules/libxdf)](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:
 
-![SigViewer using _libxdf_ to display signals in XDF files](docs/Example.png)
+    ```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