Vanetza
Loading...
Searching...
No Matches
macros.ipp
1#pragma once
2
3#define ASN1_RELEASE2_PREFIX Vanetza_ITS2_
4#define ASN1_RELEASE1_PREFIX
5
6#define ASN1_CONCAT(x, y) ASN1_CONCAT_AGAIN(x, y)
7#define ASN1_CONCAT_AGAIN(x, y) x ## y
8
9#define ASN1_RELEASE1_NAME(name) ASN1_CONCAT(ASN1_RELEASE1_PREFIX, name)
10#define ASN1_RELEASE2_NAME(name) ASN1_CONCAT(ASN1_RELEASE2_PREFIX, name)
11
12/**
13 * Prepend code generation prefix to an ASN.1 name or type.
14 */
15#define ASN1_PREFIXED(name) ASN1_CONCAT(ASN1_PREFIX, name)
16
17/**
18 * Check that enum name has equal value in both releases.
19 */
20#define ASSERT_EQUAL_ENUM(name) \
21 static_assert(int(ASN1_RELEASE1_NAME(name)) == int(ASN1_RELEASE2_NAME(name)), \
22 #name " mismatch between release 1 and 2");
23
24/**
25 * Check that types are equal in both releases
26 */
27#define ASSERT_EQUAL_TYPE(name) \
28 static_assert(std::is_same<ASN1_RELEASE1_NAME(name), ASN1_RELEASE2_NAME(name)>::value, \
29 #name " type mismatch between release 1 and 2");