Skip to content

Commit d878235

Browse files
committed
Reduces amount of macros user has to define to use custom map types.
1 parent a77b04f commit d878235

1 file changed

Lines changed: 12 additions & 18 deletions

File tree

CXXGraphConfig.h.in

Lines changed: 12 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,33 +3,27 @@
33
#define CXXGraph_VERSION_MINOR @CXXGraph_VERSION_MINOR@
44
#define CXXGraph_VERSION_PATCH @CXXGraph_VERSION_PATCH@
55

6-
#include <string_view>
7-
8-
#if defined(CXXGraph_CUSTOM_MAP) || defined(CXXGraph_CUSTOM_MAP_HEADER)
6+
#pragma once
7+
#if defined(CXXGraph_CUSTOM_MAP_HEADER)
98
// Very custom types, not explictly supported.
109
// Should be usable as a replacement std::unordered_map and set.
11-
# if !__has_include( CXXGraph_CUSTOM_MAP_HEADER )
12-
# error "CXXGraph_CUSTOM_MAP is defined but CXXGraph_CUSTOM_MAP_HEADER is not valid"
13-
# elif !defined(CXXGraph_CUSTOM_MAP)
14-
# error "CXXGraph_CUSTOM_MAP is defined but CXXGraph_CUSTOM_MAP is not set."
10+
# if defined(CXXGraph_NO_CUSTOM_MAP_HEADER_INCLUDE)
11+
// User does not want us to include the custom map header
12+
// They might not want to define lots of macros
13+
// They will have to do all the includes themselves
14+
# elif !__has_include( CXXGraph_CUSTOM_MAP_HEADER )
15+
# error "CXXGraph_CUSTOM_MAP_HEADER is defined but is not a valid include path. \
16+
Use CXXGraph_NO_CUSTOM_MAP_HEADER_INCLUDE to disable this check"
1517
# else
18+
// If one include is fine, assume the rest are also fine.
1619
# include CXXGraph_CUSTOM_MAP_HEADER
1720
# include CXXGraph_CUSTOM_SET_HEADER
1821
# include CXXGraph_CUSTOM_ORDERED_SET_HEADER
1922
# include CXXGraph_CUSTOM_ORDERED_MAP_HEADER
20-
21-
namespace CXXGraph {
22-
template<typename Key, typename Value, typename... Args>
23-
using Map = CXXGraph_CUSTOM_MAP<Key, Value, Args...>;
24-
template<typename Key, typename Value, typename... Args>
25-
using OrderedMap = CXXGraph_CUSTOM_ORDERED_MAP<Key, Value, Args...>;
26-
template<typename Key, typename... Args>
27-
using OrderedSet = CXXGraph_CUSTOM_ORDERED_SET<Key, Args...>;
28-
template<typename Key, typename... Args>
29-
using Set = CXXGraph_CUSTOM_SET<Key, Args...>;
30-
}
23+
// Users are expected to declare types in our namespace (saves us gessing what they are)
3124
# endif
3225
#elif __has_include(<frozen/set.h>)
26+
// Frozen library is available, use it for better performance
3327
# include <frozen/set.h>
3428
# include <frozen/unordered_set.h>
3529
# include <frozen/unordered_map.h>

0 commit comments

Comments
 (0)