• New clock !

    From Bonita Montero@Bonita.Montero@gmail.com to comp.lang.c on Sun Sep 7 18:57:38 2025
    From Newsgroup: comp.lang.c

    #pragma once
    #include <cstdint>
    #include <chrono>
    #if defined(_WIN32)
    #include <Windows.h>
    #elif defined(__unix__)
    #include <time.h>
    #else
    #error dasdasd
    #endif

    struct win_time
    {
    using rep = int64_t;
    using period = std::ratio<1, 10000000>;
    using duration = std::chrono::duration<rep, period>;
    using time_point = std::chrono::time_point<win_time, duration>;
    static time_point now() noexcept;
    static constexpr bool is_steady = true;
    private:
    static constexpr int64_t UNIX_START = 116444736000000000;
    };

    inline win_time::time_point win_time::now() noexcept
    {
    #if defined(_WIN32)
    FILETIME ft;
    GetSystemTimePreciseAsFileTime( &ft );
    return time_point( duration( (uint64_t)ft.dwHighDateTime << 32 | ft.dwLowDateTime ) );
    #elif defined(__unix__)
    timespec ts;
    clock_gettime( CLOCK_REALTIME, &ts );
    return time_point( duration( UNIX_START + (uint64_t)ts.tv_sec * 10'000'000u + ((uint64_t)ts.tv_nsec + 50u) / 100u ) );
    #endif
    }

    What does this do ?
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Bonita Montero@Bonita.Montero@gmail.com to comp.lang.c,comp.lang.c++ on Sun Sep 7 19:28:58 2025
    From Newsgroup: comp.lang.c

    Oh, wrong group.

    Am 07.09.2025 um 18:57 schrieb Bonita Montero:
    #pragma once
    #include <cstdint>
    #include <chrono>
    #if defined(_WIN32)
    -a-a-a #include <Windows.h>
    #elif defined(__unix__)
    -a-a-a #include <time.h>
    #else
    -a-a-a #error dasdasd
    #endif

    struct win_time
    {
    -a-a-a using rep = int64_t;
    -a-a-a using period = std::ratio<1, 10000000>;
    -a-a-a using duration = std::chrono::duration<rep, period>;
    -a-a-a using time_point = std::chrono::time_point<win_time, duration>;
    -a-a-a static time_point now() noexcept;
    -a-a-a static constexpr bool is_steady = true;
    private:
    -a-a-a static constexpr int64_t UNIX_START = 116444736000000000;
    };

    inline win_time::time_point win_time::now() noexcept
    {
    #if defined(_WIN32)
    -a-a-a FILETIME ft;
    -a-a-a GetSystemTimePreciseAsFileTime( &ft );
    -a-a-a return time_point( duration( (uint64_t)ft.dwHighDateTime << 32 | ft.dwLowDateTime ) );
    #elif defined(__unix__)
    -a-a-a timespec ts;
    -a-a-a clock_gettime( CLOCK_REALTIME, &ts );
    -a-a-a return time_point( duration( UNIX_START + (uint64_t)ts.tv_sec * 10'000'000u + ((uint64_t)ts.tv_nsec + 50u) / 100u ) );
    #endif
    }

    What does this do ?

    #pragma once
    #include <cstdint>
    #include <chrono>
    #if defined(_WIN32)
    #include <Windows.h>
    #elif defined(__unix__)
    #include <time.h>
    #else
    #error dasdasd
    #endif

    struct win_time
    {
    using rep = int64_t;
    using period = std::ratio<1, 10000000>;
    using duration = std::chrono::duration<rep, period>;
    using time_point = std::chrono::time_point<win_time, duration>;
    static time_point now() noexcept;
    static constexpr bool is_steady = false;
    private:
    static constexpr time_point UNIX_START = time_point( duration( 116444736000000000 ) );
    };

    inline win_time::time_point win_time::now() noexcept
    {
    #if defined(_WIN32)
    FILETIME ft;
    GetSystemTimePreciseAsFileTime( &ft );
    return time_point( duration( (uint64_t)ft.dwHighDateTime << 32 | ft.dwLowDateTime ) );
    #elif defined(__unix__)
    using namespace std::chrono;
    timespec ts;
    clock_gettime( CLOCK_REALTIME, &ts );
    return UNIX_START + duration_cast<win_time::duration>( seconds( ts.tv_sec ) + nanoseconds( ts.tv_nsec + 50 ) );
    #endif
    }

    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From DFS@nospam@dfs.com to comp.lang.c on Thu Oct 2 19:17:35 2025
    From Newsgroup: comp.lang.c

    On 9/7/2025 12:57 PM, Bonita Montero wrote:
    #pragma once
    #include <cstdint>
    #include <chrono>
    #if defined(_WIN32)
    -a-a-a #include <Windows.h>
    #elif defined(__unix__)
    -a-a-a #include <time.h>
    #else
    -a-a-a #error dasdasd
    #endif

    struct win_time
    {
    -a-a-a using rep = int64_t;
    -a-a-a using period = std::ratio<1, 10000000>;
    -a-a-a using duration = std::chrono::duration<rep, period>;
    -a-a-a using time_point = std::chrono::time_point<win_time, duration>;
    -a-a-a static time_point now() noexcept;
    -a-a-a static constexpr bool is_steady = true;
    private:
    -a-a-a static constexpr int64_t UNIX_START = 116444736000000000;
    };

    inline win_time::time_point win_time::now() noexcept
    {
    #if defined(_WIN32)
    -a-a-a FILETIME ft;
    -a-a-a GetSystemTimePreciseAsFileTime( &ft );
    -a-a-a return time_point( duration( (uint64_t)ft.dwHighDateTime << 32 | ft.dwLowDateTime ) );
    #elif defined(__unix__)
    -a-a-a timespec ts;
    -a-a-a clock_gettime( CLOCK_REALTIME, &ts );
    -a-a-a return time_point( duration( UNIX_START + (uint64_t)ts.tv_sec * 10'000'000u + ((uint64_t)ts.tv_nsec + 50u) / 100u ) );
    #endif
    }

    What does this do ?


    Tracks the tiny intervals between your clc anti-C posts.

    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Bonita Montero@Bonita.Montero@gmail.com to comp.lang.c on Fri Oct 3 17:28:12 2025
    From Newsgroup: comp.lang.c

    Am 03.10.2025 um 01:17 schrieb DFS:
    On 9/7/2025 12:57 PM, Bonita Montero wrote:
    #pragma once
    #include <cstdint>
    #include <chrono>
    #if defined(_WIN32)
    -a-a-a-a #include <Windows.h>
    #elif defined(__unix__)
    -a-a-a-a #include <time.h>
    #else
    -a-a-a-a #error dasdasd
    #endif

    struct win_time
    {
    -a-a-a-a using rep = int64_t;
    -a-a-a-a using period = std::ratio<1, 10000000>;
    -a-a-a-a using duration = std::chrono::duration<rep, period>;
    -a-a-a-a using time_point = std::chrono::time_point<win_time, duration>;
    -a-a-a-a static time_point now() noexcept;
    -a-a-a-a static constexpr bool is_steady = true;
    private:
    -a-a-a-a static constexpr int64_t UNIX_START = 116444736000000000;
    };

    inline win_time::time_point win_time::now() noexcept
    {
    #if defined(_WIN32)
    -a-a-a-a FILETIME ft;
    -a-a-a-a GetSystemTimePreciseAsFileTime( &ft );
    -a-a-a-a return time_point( duration( (uint64_t)ft.dwHighDateTime << 32 | >> ft.dwLowDateTime ) );
    #elif defined(__unix__)
    -a-a-a-a timespec ts;
    -a-a-a-a clock_gettime( CLOCK_REALTIME, &ts );
    -a-a-a-a return time_point( duration( UNIX_START + (uint64_t)ts.tv_sec *
    10'000'000u + ((uint64_t)ts.tv_nsec + 50u) / 100u ) );
    #endif
    }

    What does this do ?


    Tracks the tiny intervals between your clc anti-C posts.

    Yes, C sucks.

    --- Synchronet 3.21a-Linux NewsLink 1.2