annotate foosdk/sdk/pfc/pfc-lite.h @ 1:20d02a178406 default tip

*: check in everything else yay
author Paper <paper@tflc.us>
date Mon, 05 Jan 2026 02:15:46 -0500
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1 #pragma once
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
2
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
3
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
4 #ifdef _MSC_VER // MSVC sucks, doesn't set __cplusplus properly by default
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
5 #if _MSVC_LANG < 201703L
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
6 #error C++17 please
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
7 #endif
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
8 #else // not MSVC
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
9 #if __cplusplus < 201703L
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
10 #error C++17 please
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
11 #endif
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
12 #endif
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
13
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
14 // Global flag - whether it's OK to leak static objects as they'll be released anyway by process death
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
15 #ifndef PFC_LEAK_STATIC_OBJECTS
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
16 #define PFC_LEAK_STATIC_OBJECTS 1
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
17 #endif
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
18
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
19
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
20 #ifdef __clang__
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
21 // Suppress a warning for a common practice in pfc/fb2k code
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
22 #pragma clang diagnostic ignored "-Wdelete-non-virtual-dtor"
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
23 #endif
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
24
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
25 #if !defined(_WINDOWS) && (defined(WIN32) || defined(_WIN32) || defined(WIN64) || defined(_WIN64) || defined(_WIN32_WCE))
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
26 #define _WINDOWS
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
27 #endif
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
28
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
29
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
30 #ifdef _WINDOWS
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
31 #include "targetver.h"
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
32
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
33 #ifndef STRICT
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
34 #define STRICT
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
35 #endif
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
36
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
37 #ifndef _SYS_GUID_OPERATOR_EQ_
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
38 #define _NO_SYS_GUID_OPERATOR_EQ_ //fix retarded warning with operator== on GUID returning int
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
39 #endif
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
40
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
41 // WinSock2.h *before* Windows.h or else VS2017 15.3 breaks
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
42 #include <WinSock2.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
43 #include <windows.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
44
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
45 #if !defined(PFC_WINDOWS_STORE_APP) && !defined(PFC_WINDOWS_DESKTOP_APP)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
46
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
47 #ifdef WINAPI_FAMILY_PARTITION
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
48 #if ! WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
49 #define PFC_WINDOWS_STORE_APP // Windows store or Windows phone app, not a desktop app
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
50 #endif // #if ! WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
51 #endif // #ifdef WINAPI_FAMILY_PARTITION
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
52
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
53 #ifndef PFC_WINDOWS_STORE_APP
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
54 #define PFC_WINDOWS_DESKTOP_APP
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
55 #endif
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
56
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
57 #endif // #if !defined(PFC_WINDOWS_STORE_APP) && !defined(PFC_WINDOWS_DESKTOP_APP)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
58
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
59 #ifndef _SYS_GUID_OPERATOR_EQ_
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
60 __inline bool __InlineIsEqualGUID(REFGUID rguid1, REFGUID rguid2)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
61 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
62 return (
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
63 ((unsigned long*)&rguid1)[0] == ((unsigned long*)&rguid2)[0] &&
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
64 ((unsigned long*)&rguid1)[1] == ((unsigned long*)&rguid2)[1] &&
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
65 ((unsigned long*)&rguid1)[2] == ((unsigned long*)&rguid2)[2] &&
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
66 ((unsigned long*)&rguid1)[3] == ((unsigned long*)&rguid2)[3]);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
67 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
68
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
69 inline bool operator==(REFGUID guidOne, REFGUID guidOther) { return __InlineIsEqualGUID(guidOne, guidOther); }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
70 inline bool operator!=(REFGUID guidOne, REFGUID guidOther) { return !__InlineIsEqualGUID(guidOne, guidOther); }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
71 #endif
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
72
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
73 #include <tchar.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
74
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
75 #else // not Windows
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
76
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
77 #include <stdint.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
78 #include <stdlib.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
79 #include <stdarg.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
80 #include <string.h> // memcmp
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
81
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
82 #ifndef GUID_DEFINED
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
83 #define GUID_DEFINED
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
84
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
85
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
86 struct GUID {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
87 uint32_t Data1;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
88 uint16_t Data2;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
89 uint16_t Data3;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
90 uint8_t Data4[ 8 ];
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
91 } __attribute__((packed));
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
92
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
93 inline bool operator==(const GUID & p_item1,const GUID & p_item2) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
94 return memcmp(&p_item1,&p_item2,sizeof(GUID)) == 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
95 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
96
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
97 inline bool operator!=(const GUID & p_item1,const GUID & p_item2) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
98 return memcmp(&p_item1,&p_item2,sizeof(GUID)) != 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
99 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
100
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
101 #endif // GUID_DEFINED
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
102
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
103 #endif
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
104
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
105
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
106
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
107 #define PFC_MEMORY_SPACE_LIMIT ((t_uint64)1<<(sizeof(void*)*8-1))
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
108
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
109 #define PFC_ALLOCA_LIMIT (4096)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
110
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
111 #include <exception>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
112 #include <stdexcept>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
113 #include <new>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
114
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
115 #define _PFC_WIDESTRING(_String) L ## _String
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
116 #define PFC_WIDESTRING(_String) _PFC_WIDESTRING(_String)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
117
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
118 #if defined(_DEBUG) || defined(DEBUG)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
119 #define PFC_DEBUG 1
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
120 #else
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
121 #define PFC_DEBUG 0
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
122 #endif
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
123
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
124 #if ! PFC_DEBUG
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
125
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
126 #ifndef NDEBUG
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
127 #pragma message("WARNING: release build without NDEBUG")
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
128 #endif
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
129
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
130 #define PFC_ASSERT(_Expression) ((void)0)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
131 #define PFC_ASSERT_SUCCESS(_Expression) (void)( (_Expression), 0)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
132 #define PFC_ASSERT_NO_EXCEPTION(_Expression) { _Expression; }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
133 #else
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
134
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
135 #ifdef _WIN32
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
136 namespace pfc { void myassert_win32(const wchar_t* _Message, const wchar_t* _File, unsigned _Line); }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
137 #define PFC_ASSERT(_Expression) (void)( (!!(_Expression)) || (pfc::myassert_win32(PFC_WIDESTRING(#_Expression), PFC_WIDESTRING(__FILE__), __LINE__), 0) )
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
138 #define PFC_ASSERT_SUCCESS(_Expression) PFC_ASSERT(_Expression)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
139 #else
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
140 namespace pfc { void myassert(const char* _Message, const char* _File, unsigned _Line); }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
141 #define PFC_ASSERT(_Expression) (void)( (!!(_Expression)) || (pfc::myassert(#_Expression, __FILE__, __LINE__), 0) )
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
142 #define PFC_ASSERT_SUCCESS(_Expression) PFC_ASSERT( _Expression )
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
143 #endif
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
144
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
145 #define PFC_ASSERT_NO_EXCEPTION(_Expression) { try { _Expression; } catch(...) { PFC_ASSERT(!"Should not get here - unexpected exception"); } }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
146 #endif
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
147
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
148 #ifdef _MSC_VER
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
149
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
150 #if PFC_DEBUG
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
151 #define NOVTABLE
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
152 #else
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
153 #define NOVTABLE _declspec(novtable)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
154 #endif
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
155
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
156 #if PFC_DEBUG
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
157 #define ASSUME(X) PFC_ASSERT(X)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
158 #else
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
159 #define ASSUME(X) __assume(X)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
160 #endif
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
161
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
162 #define PFC_DEPRECATE(X) // __declspec(deprecated(X)) don't do this since VS2015 defaults to erroring these
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
163 #define PFC_NORETURN __declspec(noreturn)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
164 #define PFC_NOINLINE __declspec(noinline)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
165 #else // else not MSVC
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
166
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
167 #define NOVTABLE
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
168 #define ASSUME(X) PFC_ASSERT(X)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
169 #define PFC_DEPRECATE(X)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
170 #define PFC_NORETURN __attribute__ ((noreturn))
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
171 #define PFC_NOINLINE
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
172
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
173 #endif // end not MSVC
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
174
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
175 #include "int_types.h"
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
176 #include "string-interface.h"
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
177 #include "string-lite.h"
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
178
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
179 namespace pfc {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
180 // forward types
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
181 class bit_array;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
182 class bit_array_var;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
183
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
184 template<typename T> class list_base_const_t;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
185 template<typename T> class list_base_t;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
186 }