42 lines
1.5 KiB
C
42 lines
1.5 KiB
C
|
|
#pragma once
|
||
|
|
|
||
|
|
#include "private/macros.h"
|
||
|
|
#include "private/std.h"
|
||
|
|
|
||
|
|
#ifdef __cplusplus
|
||
|
|
extern "C" {
|
||
|
|
#endif
|
||
|
|
|
||
|
|
typedef struct clap_version {
|
||
|
|
// This is the major ABI and API design
|
||
|
|
// Version 0.X.Y correspond to the development stage, API and ABI are not stable
|
||
|
|
// Version 1.X.Y correspond to the release stage, API and ABI are stable
|
||
|
|
uint32_t major;
|
||
|
|
uint32_t minor;
|
||
|
|
uint32_t revision;
|
||
|
|
} clap_version_t;
|
||
|
|
|
||
|
|
#ifdef __cplusplus
|
||
|
|
}
|
||
|
|
#endif
|
||
|
|
|
||
|
|
#define CLAP_VERSION_MAJOR 1
|
||
|
|
#define CLAP_VERSION_MINOR 2
|
||
|
|
#define CLAP_VERSION_REVISION 6
|
||
|
|
|
||
|
|
#define CLAP_VERSION_INIT \
|
||
|
|
{ (uint32_t)CLAP_VERSION_MAJOR, (uint32_t)CLAP_VERSION_MINOR, (uint32_t)CLAP_VERSION_REVISION }
|
||
|
|
|
||
|
|
#define CLAP_VERSION_LT(maj,min,rev) ((CLAP_VERSION_MAJOR < (maj)) || \
|
||
|
|
((maj) == CLAP_VERSION_MAJOR && CLAP_VERSION_MINOR < (min)) || \
|
||
|
|
((maj) == CLAP_VERSION_MAJOR && (min) == CLAP_VERSION_MINOR && CLAP_VERSION_REVISION < (rev)))
|
||
|
|
#define CLAP_VERSION_EQ(maj,min,rev) (((maj) == CLAP_VERSION_MAJOR) && ((min) == CLAP_VERSION_MINOR) && ((rev) == CLAP_VERSION_REVISION))
|
||
|
|
#define CLAP_VERSION_GE(maj,min,rev) (!CLAP_VERSION_LT(maj,min,rev))
|
||
|
|
|
||
|
|
static const CLAP_CONSTEXPR clap_version_t CLAP_VERSION = CLAP_VERSION_INIT;
|
||
|
|
|
||
|
|
CLAP_NODISCARD static inline CLAP_CONSTEXPR bool
|
||
|
|
clap_version_is_compatible(const clap_version_t v) {
|
||
|
|
// versions 0.x.y were used during development stage and aren't compatible
|
||
|
|
return v.major >= 1;
|
||
|
|
}
|