CFx SDK Documentation
2026 SP0
Loading...
Searching...
No Matches
SDK
CFx
dd_inc
OdaSTL.h
Go to the documentation of this file.
1
2
// Copyright (C) 2002-2024, Open Design Alliance (the "Alliance").
3
// All rights reserved.
4
//
5
// This software and its documentation and related materials are owned by
6
// the Alliance. The software may only be incorporated into application
7
// programs owned by members of the Alliance, subject to a signed
8
// Membership Agreement and Supplemental Software License Agreement with the
9
// Alliance. The structure and organization of this software are the valuable
10
// trade secrets of the Alliance and its suppliers. The software is also
11
// protected by copyright law and international treaty provisions. Application
12
// programs incorporating this software must include the following statement
13
// with their copyright notices:
14
//
15
// This application incorporates Open Design Alliance software pursuant to a license
16
// agreement with Open Design Alliance.
17
// Open Design Alliance Copyright (C) 2002-2024 by Open Design Alliance.
18
// All rights reserved.
19
//
20
// By use of this software, its documentation or related materials, you
21
// acknowledge and accept the above terms.
23
24
26
// Purpose: Declarations for using STL without warning noise.
27
//
28
// Usage: Include this file and define at least one of the STL_USING_xxx
29
// macros. Currently supported data types from the STL:
30
//
31
// // defines for using the STL
32
// #define STL_USING_ALL
33
// #define STL_USING_MAP
34
// #define STL_USING_VECTOR
35
// #define STL_USING_LIST
36
// #define STL_USING_STRING
37
// #define STL_USING_STREAM
38
// #define STL_USING_IOSTREAM
39
// #define STL_USING_MEMORY
40
// #define STL_USING_STACK
41
// #define STL_USING_ALGORITHM
42
// #define STL_USING_FUNCTIONAL
43
// #define STL_USING_UTILITY
44
// #define STL_USING_SET
45
// #define STL_USING_LIMITS
46
//
47
// Sample:
48
// #define STL_USING_ALL
49
// #include "OdaSTL.h"
50
//
51
// this file based on Oskar Wieland (oskar.wieland@gmx.de) STL.H
53
55
// include guards
57
58
// !!! Do not prevent the multiple include for this file
59
60
//#ifndef _ODA_STLHELPER_INCLUDED_
61
//#define _ODA_STLHELPER_INCLUDED_
62
63
65
// handy define to include all stuff
67
68
#ifdef STL_USING_ALL
69
70
#define STL_USING_MAP
71
#define STL_USING_VECTOR
72
#define STL_USING_LIST
73
#define STL_USING_STRING
74
#define STL_USING_STREAM
75
#define STL_USING_IOSTREAM
76
#define STL_USING_MEMORY
77
#define STL_USING_STACK
78
#define STL_USING_ALGORITHM
79
#define STL_USING_FUNCTIONAL
80
#define STL_USING_UTILITY
81
#define STL_USING_SET
82
#define STL_USING_LIMITS
83
84
#endif
85
86
88
// STL neccessary declaration for map
90
91
#ifdef STL_USING_MAP
92
93
#ifdef _MSC_VER
94
#pragma warning(push)
95
#endif
// _MSC_VER
96
97
#ifdef _MSC_VER
98
#include <yvals.h>
// warning numbers get enabled in yvals.h
99
#endif
100
101
#ifdef _MSC_VER
102
103
104
#pragma warning(disable: 4100)
// unreferenced formal parameter
105
#pragma warning(disable: 4127)
// conditional expression is constant
106
107
108
#pragma warning(disable: 4245)
// conversion from 'type1' to 'type2', signed/unsigned mismatch
109
110
111
112
#pragma warning(disable: 4512)
// 'class' : assignment operator could not be generated
113
114
#pragma warning(disable: 4702)
// unreachable code
115
#pragma warning(disable: 4710)
// 'function' : function not inlined
116
117
118
// BUG: C4786 Warning Is Not Disabled with #pragma Warning
119
// STATUS: Microsoft has confirmed this to be a bug in the Microsoft product.
120
// This warning can be ignored. This occured only in the <map> container.
121
122
// MSVC8 /analyze warnings
123
#if _MSC_VER > 1310
124
#pragma warning( disable : 6011 )
125
#pragma warning( disable : 6219 )
126
#pragma warning( disable : 6221 )
127
#pragma warning( disable : 6255 )
128
#pragma warning( disable : 6308 )
129
#pragma warning( disable : 6320 )
130
#pragma warning( disable : 6321 )
131
#pragma warning( disable : 6387 )
132
#endif
// /analyze
133
#endif
// _MSC_VER
134
135
#include <map>
136
137
#ifdef _MSC_VER
138
#pragma warning(pop)
139
#endif
// _MSC_VER
140
141
#endif
//STL_USING_MAP
142
143
145
// STL neccessary declaration for vector
147
148
#ifdef STL_USING_VECTOR
149
150
#ifdef _MSC_VER
151
#pragma warning(push)
152
#endif
// _MSC_VER
153
154
#ifdef _MSC_VER
155
#include <yvals.h>
// warning numbers get enabled in yvals.h
156
#endif
157
158
#ifdef _MSC_VER
159
#pragma warning(disable: 4100)
// unreferenced formal parameter
160
#pragma warning(disable: 4127)
// conditional expression is constant
161
#pragma warning(disable: 4245)
// conversion from 'type1' to 'type2', signed/unsigned mismatch
162
#pragma warning(disable: 4512)
// 'class' : assignment operator could not be generated
163
#pragma warning(disable: 4702)
// unreachable code
164
#pragma warning(disable: 4710)
// 'function' : function not inlined
165
166
// MSVC8 /analyze warnings
167
#if _MSC_VER > 1310
168
#pragma warning( disable : 6011 )
169
#pragma warning( disable : 6219 )
170
#pragma warning( disable : 6221 )
171
#pragma warning( disable : 6255 )
172
#pragma warning( disable : 6308 )
173
#pragma warning( disable : 6320 )
174
#pragma warning( disable : 6321 )
175
#pragma warning( disable : 6387 )
176
#endif
// /analyze
177
#endif
178
179
#include <vector>
180
181
#ifdef _MSC_VER
182
#pragma warning(pop)
183
#endif
// _MSC_VER
184
185
#endif
// STL_USING_VECTOR
186
187
189
// STL neccessary declaration for list
191
192
#ifdef STL_USING_LIST
193
194
#ifdef _MSC_VER
195
#pragma warning(push)
196
#endif
// _MSC_VER
197
198
#ifdef _MSC_VER
199
#include <yvals.h>
// warning numbers get enabled in yvals.h
200
#endif
201
202
#ifdef _MSC_VER
203
204
#pragma warning(disable: 4100)
// unreferenced formal parameter
205
#pragma warning(disable: 4127)
// conditional expression is constant
206
#pragma warning(disable: 4245)
// conversion from 'type1' to 'type2', signed/unsigned mismatch
207
#pragma warning(disable: 4512)
// 'class' : assignment operator could not be generated
208
#pragma warning(disable: 4702)
// unreachable code
209
#pragma warning(disable: 4710)
// 'function' : function not inlined
210
211
// MSVC8 /analyze warnings
212
#if _MSC_VER > 1310
213
#pragma warning( disable : 6011 )
214
#pragma warning( disable : 6219 )
215
#pragma warning( disable : 6221 )
216
#pragma warning( disable : 6255 )
217
#pragma warning( disable : 6308 )
218
#pragma warning( disable : 6320 )
219
#pragma warning( disable : 6321 )
220
#pragma warning( disable : 6387 )
221
#endif
// /analyze
222
#endif
223
224
#include <list>
225
226
#ifdef _MSC_VER
227
#pragma warning(pop)
228
#endif
// _MSC_VER
229
230
#endif
// STL_USING_LIST
231
232
234
// STL neccessary declaration for string
236
237
#ifdef STL_USING_STRING
238
239
#ifdef _MSC_VER
240
#pragma warning(push)
241
#endif
// _MSC_VER
242
243
#ifdef _MSC_VER
244
#include <yvals.h>
// warning numbers get enabled in yvals.h
245
#endif
246
247
#ifdef _MSC_VER
248
249
#pragma warning(disable: 4100)
// unreferenced formal parameter
250
#pragma warning(disable: 4127)
// conditional expression is constant
251
#pragma warning(disable: 4245)
// conversion from 'type1' to 'type2', signed/unsigned mismatch
252
#pragma warning(disable: 4512)
// 'class' : assignment operator could not be generated
253
#pragma warning(disable: 4702)
// unreachable code
254
#pragma warning(disable: 4710)
// 'function' : function not inlined
255
256
// MSVC8 /analyze warnings
257
#if _MSC_VER > 1310
258
#pragma warning( disable : 6011 )
259
#pragma warning( disable : 6219 )
260
#pragma warning( disable : 6221 )
261
#pragma warning( disable : 6255 )
262
#pragma warning( disable : 6308 )
263
#pragma warning( disable : 6320 )
264
#pragma warning( disable : 6321 )
265
#pragma warning( disable : 6387 )
266
#endif
// /analyze
267
#endif
268
269
#include <string>
270
271
#ifdef _MSC_VER
272
#pragma warning(pop)
273
#endif
// _MSC_VER
274
275
#endif
// STL_USING_STRING
276
277
279
// STL neccessary declaration for streams
281
282
#ifdef STL_USING_STREAM
283
284
#ifdef _MSC_VER
285
#pragma warning(push)
286
#endif
// _MSC_VER
287
288
#ifdef _MSC_VER
289
#include <yvals.h>
// warning numbers get enabled in yvals.h
290
#endif
291
292
#ifdef _MSC_VER
293
294
#pragma warning(disable: 4100)
// unreferenced formal parameter
295
#pragma warning(disable: 4127)
// conditional expression is constant
296
#pragma warning(disable: 4245)
// conversion from 'type1' to 'type2', signed/unsigned mismatch
297
#pragma warning(disable: 4512)
// 'class' : assignment operator could not be generated
298
#pragma warning(disable: 4702)
// unreachable code
299
#pragma warning(disable: 4710)
// 'function' : function not inlined
300
301
// MSVC8 /analyze warnings
302
#if _MSC_VER > 1310
303
#pragma warning( disable : 6011 )
304
#pragma warning( disable : 6219 )
305
#pragma warning( disable : 6221 )
306
#pragma warning( disable : 6255 )
307
#pragma warning( disable : 6308 )
308
#pragma warning( disable : 6320 )
309
#pragma warning( disable : 6321 )
310
#pragma warning( disable : 6387 )
311
#endif
// /analyze
312
#endif
313
314
#ifdef OD_HAVE_SSTREAM_FILE
315
#include <sstream>
316
#endif
317
318
#ifdef OD_HAVE_FSTREAM_FILE
319
#include <fstream>
320
#endif
321
322
#ifdef _MSC_VER
323
#pragma warning(pop)
324
#endif
// _MSC_VER
325
326
#endif
//STL_USING_STREAM
327
328
330
// STL neccessary declaration for input/output streams
332
333
#ifdef STL_USING_IOSTREAM
334
335
#ifdef _MSC_VER
336
#pragma warning(push)
337
#endif
// _MSC_VER
338
339
#ifdef _MSC_VER
340
#include <yvals.h>
// warning numbers get enabled in yvals.h
341
#endif
342
343
#ifdef _MSC_VER
344
345
#pragma warning(disable: 4100)
// unreferenced formal parameter
346
#pragma warning(disable: 4127)
// conditional expression is constant
347
#pragma warning(disable: 4245)
// conversion from 'type1' to 'type2', signed/unsigned mismatch
348
#pragma warning(disable: 4512)
// 'class' : assignment operator could not be generated
349
#pragma warning(disable: 4702)
// unreachable code
350
#pragma warning(disable: 4710)
// 'function' : function not inlined
351
352
// MSVC8 /analyze warnings
353
#if _MSC_VER > 1310
354
#pragma warning( disable : 6011 )
355
#pragma warning( disable : 6219 )
356
#pragma warning( disable : 6221 )
357
#pragma warning( disable : 6255 )
358
#pragma warning( disable : 6308 )
359
#pragma warning( disable : 6320 )
360
#pragma warning( disable : 6321 )
361
#pragma warning( disable : 6387 )
362
#endif
// /analyze
363
#endif
364
365
#include <iostream>
366
#ifdef OD_HAVE_IOMANIP_FILE
367
#include <iomanip>
368
#endif
369
370
#ifdef _MSC_VER
371
#pragma warning(pop)
372
#endif
// _MSC_VER
373
374
#endif
//STL_USING_IOSTREAM
375
377
// STL neccessary declaration for memory
379
380
#ifdef STL_USING_MEMORY
381
382
#ifdef _MSC_VER
383
#pragma warning(push)
384
#endif
// _MSC_VER
385
386
#ifdef _MSC_VER
387
#include <yvals.h>
// warning numbers get enabled in yvals.h
388
#endif
389
390
#ifdef _MSC_VER
391
392
#pragma warning(disable: 4100)
// unreferenced formal parameter
393
#pragma warning(disable: 4127)
// conditional expression is constant
394
#pragma warning(disable: 4245)
// conversion from 'type1' to 'type2', signed/unsigned mismatch
395
#pragma warning(disable: 4512)
// 'class' : assignment operator could not be generated
396
#pragma warning(disable: 4702)
// unreachable code
397
#pragma warning(disable: 4710)
// 'function' : function not inlined
398
399
// MSVC8 /analyze warnings
400
#if _MSC_VER > 1310
401
#pragma warning( disable : 6011 )
402
#pragma warning( disable : 6219 )
403
#pragma warning( disable : 6221 )
404
#pragma warning( disable : 6255 )
405
#pragma warning( disable : 6308 )
406
#pragma warning( disable : 6320 )
407
#pragma warning( disable : 6321 )
408
#pragma warning( disable : 6387 )
409
#endif
// /analyze
410
#endif
411
412
#include <memory>
413
414
#ifdef _MSC_VER
415
#pragma warning(pop)
416
#endif
// _MSC_VER
417
418
#endif
//STL_USING_MEMORY
419
420
422
// STL neccessary declaration for stack
424
425
#ifdef STL_USING_STACK
426
427
#ifdef _MSC_VER
428
#pragma warning(push)
429
#endif
// _MSC_VER
430
431
#ifdef _MSC_VER
432
#include <yvals.h>
// warning numbers get enabled in yvals.h
433
#endif
434
435
#ifdef _MSC_VER
436
437
#pragma warning(disable: 4100)
// unreferenced formal parameter
438
#pragma warning(disable: 4127)
// conditional expression is constant
439
#pragma warning(disable: 4245)
// conversion from 'type1' to 'type2', signed/unsigned mismatch
440
#pragma warning(disable: 4512)
// 'class' : assignment operator could not be generated
441
#pragma warning(disable: 4702)
// unreachable code
442
#pragma warning(disable: 4710)
// 'function' : function not inlined
443
444
// MSVC8 /analyze warnings
445
#if _MSC_VER > 1310
446
#pragma warning( disable : 6011 )
447
#pragma warning( disable : 6219 )
448
#pragma warning( disable : 6221 )
449
#pragma warning( disable : 6255 )
450
#pragma warning( disable : 6308 )
451
#pragma warning( disable : 6320 )
452
#pragma warning( disable : 6321 )
453
#pragma warning( disable : 6387 )
454
#endif
// /analyze
455
#endif
456
457
#include <stack>
458
459
#ifdef _MSC_VER
460
#pragma warning(pop)
461
#endif
// _MSC_VER
462
463
#endif
// STL_USING_STACK
464
465
466
#ifdef STL_USING_QUEUE
467
468
#ifdef _MSC_VER
469
#pragma warning(push)
470
#endif
// _MSC_VER
471
472
#ifdef _MSC_VER
473
#include <yvals.h>
// warning numbers get enabled in yvals.h
474
#endif
475
476
#ifdef _MSC_VER
477
478
#pragma warning(disable: 4100)
// unreferenced formal parameter
479
#pragma warning(disable: 4127)
// conditional expression is constant
480
#pragma warning(disable: 4245)
// conversion from 'type1' to 'type2', signed/unsigned mismatch
481
#pragma warning(disable: 4512)
// 'class' : assignment operator could not be generated
482
#pragma warning(disable: 4702)
// unreachable code
483
#pragma warning(disable: 4710)
// 'function' : function not inlined
484
485
// MSVC8 /analyze warnings
486
#if _MSC_VER > 1310
487
#pragma warning( disable : 6011 )
488
#pragma warning( disable : 6219 )
489
#pragma warning( disable : 6221 )
490
#pragma warning( disable : 6255 )
491
#pragma warning( disable : 6308 )
492
#pragma warning( disable : 6320 )
493
#pragma warning( disable : 6321 )
494
#pragma warning( disable : 6387 )
495
#endif
// /analyze
496
#endif
497
498
#include <queue>
499
500
#ifdef _MSC_VER
501
#pragma warning(pop)
502
#endif
// _MSC_VER
503
504
#endif
// STL_USING_STACK
505
507
// STL neccessary declaration for algorithm
509
510
#ifdef STL_USING_ALGORITHM
511
512
#ifdef _MSC_VER
513
#pragma warning(push)
514
#endif
// _MSC_VER
515
516
#ifdef _MSC_VER
517
#include <yvals.h>
// warning numbers get enabled in yvals.h
518
#endif
519
520
#ifdef _MSC_VER
521
522
#pragma warning(disable: 4100)
// unreferenced formal parameter
523
#pragma warning(disable: 4127)
// conditional expression is constant
524
#pragma warning(disable: 4245)
// conversion from 'type1' to 'type2', signed/unsigned mismatch
525
#pragma warning(disable: 4512)
// 'class' : assignment operator could not be generated
526
#pragma warning(disable: 4702)
// unreachable code
527
#pragma warning(disable: 4710)
// 'function' : function not inlined
528
529
// MSVC8 /analyze warnings
530
#if _MSC_VER > 1310
531
#pragma warning( disable : 6011 )
532
#pragma warning( disable : 6219 )
533
#pragma warning( disable : 6221 )
534
#pragma warning( disable : 6255 )
535
#pragma warning( disable : 6308 )
536
#pragma warning( disable : 6320 )
537
#pragma warning( disable : 6321 )
538
#pragma warning( disable : 6387 )
539
#endif
// /analyze
540
#endif
541
542
#include <algorithm>
543
#include <iterator>
544
545
// in STLPORT used with BCC 5.6 std::remove clashes with remove(char*) from iostream
546
#ifdef __SGI_STL_PORT
552
namespace
std
553
{
554
using
_STLP_STD::remove;
555
}
556
#endif
557
558
#ifdef _MSC_VER
559
#pragma warning(pop)
560
#endif
// _MSC_VER
561
562
#endif
// STL_USING_ALGORITHM
563
565
// STL neccessary declaration for functional
567
568
#ifdef STL_USING_FUNCTIONAL
569
570
#ifdef _MSC_VER
571
#pragma warning(push)
572
#endif
// _MSC_VER
573
574
#ifdef _MSC_VER
575
#include <yvals.h>
// warning numbers get enabled in yvals.h
576
#endif
577
578
#ifdef _MSC_VER
579
580
#pragma warning(disable: 4100)
// unreferenced formal parameter
581
#pragma warning(disable: 4127)
// conditional expression is constant
582
#pragma warning(disable: 4245)
// conversion from 'type1' to 'type2', signed/unsigned mismatch
583
#pragma warning(disable: 4512)
// 'class' : assignment operator could not be generated
584
#pragma warning(disable: 4702)
// unreachable code
585
#pragma warning(disable: 4710)
// 'function' : function not inlined
586
587
// MSVC8 /analyze warnings
588
#if _MSC_VER > 1310
589
#pragma warning( disable : 6011 )
590
#pragma warning( disable : 6219 )
591
#pragma warning( disable : 6221 )
592
#pragma warning( disable : 6255 )
593
#pragma warning( disable : 6308 )
594
#pragma warning( disable : 6320 )
595
#pragma warning( disable : 6321 )
596
#pragma warning( disable : 6387 )
597
#endif
// /analyze
598
#endif
599
600
#include <functional>
601
602
#ifdef _MSC_VER
603
#pragma warning(pop)
604
#endif
// _MSC_VER
605
606
#endif
// STL_USING_FUNCTIONAL
607
608
610
// STL neccessary declaration for utilities
612
613
#ifdef STL_USING_UTILITY
614
615
#ifdef _MSC_VER
616
#pragma warning(push)
617
#endif
// _MSC_VER
618
619
#ifdef _MSC_VER
620
#include <yvals.h>
// warning numbers get enabled in yvals.h
621
#endif
622
623
#ifdef _MSC_VER
624
625
#pragma warning(disable: 4100)
// unreferenced formal parameter
626
#pragma warning(disable: 4127)
// conditional expression is constant
627
#pragma warning(disable: 4245)
// conversion from 'type1' to 'type2', signed/unsigned mismatch
628
#pragma warning(disable: 4512)
// 'class' : assignment operator could not be generated
629
#pragma warning(disable: 4702)
// unreachable code
630
#pragma warning(disable: 4710)
// 'function' : function not inlined
631
632
// MSVC8 /analyze warnings
633
#if _MSC_VER > 1310
634
#pragma warning( disable : 6011 )
635
#pragma warning( disable : 6219 )
636
#pragma warning( disable : 6221 )
637
#pragma warning( disable : 6255 )
638
#pragma warning( disable : 6308 )
639
#pragma warning( disable : 6320 )
640
#pragma warning( disable : 6321 )
641
#pragma warning( disable : 6387 )
642
#endif
// /analyze
643
#endif
644
645
#include <utility>
646
647
#ifdef _MSC_VER
648
#pragma warning(pop)
649
#endif
// _MSC_VER
650
651
#endif
// STL_USING_FUNCTIONAL
652
653
#ifdef STL_USING_SET
654
655
#ifdef _MSC_VER
656
#pragma warning(push)
657
#endif
// _MSC_VER
658
659
#ifdef _MSC_VER
660
#include <yvals.h>
// warning numbers get enabled in yvals.h
661
#endif
662
663
#ifdef _MSC_VER
664
665
#pragma warning(disable: 4100)
// unreferenced formal parameter
666
#pragma warning(disable: 4127)
// conditional expression is constant
667
#pragma warning(disable: 4245)
// conversion from 'type1' to 'type2', signed/unsigned mismatch
668
#pragma warning(disable: 4512)
// 'class' : assignment operator could not be generated
669
#pragma warning(disable: 4702)
// unreachable code
670
#pragma warning(disable: 4710)
// 'function' : function not inlined
671
672
// MSVC8 /analyze warnings
673
#if _MSC_VER > 1310
674
#pragma warning( disable : 6011 )
675
#pragma warning( disable : 6219 )
676
#pragma warning( disable : 6221 )
677
#pragma warning( disable : 6255 )
678
#pragma warning( disable : 6308 )
679
#pragma warning( disable : 6320 )
680
#pragma warning( disable : 6321 )
681
#pragma warning( disable : 6387 )
682
#endif
// /analyze
683
#endif
684
685
#include <set>
686
687
#ifdef _MSC_VER
688
#pragma warning(pop)
689
#endif
// _MSC_VER
690
691
#endif
// STL_USING_SET
692
693
#ifdef STL_USING_LIMITS
694
695
#ifdef _MSC_VER
696
#pragma warning(push)
697
#include <yvals.h>
// warning numbers get enabled in yvals.h
698
699
#undef min
// in windows header min & max are defined
700
#undef max
701
702
#endif
// _MSC_VER
703
704
#include <limits>
705
706
#ifdef _MSC_VER
707
#pragma warning(pop)
708
#endif
// _MSC_VER
709
710
#endif
// STL_USING_LIMITS
711
712
714
// verify proper use of macros
716
717
#if defined(STL_USING_MAP) || defined(STL_USING_VECTOR) || defined(STL_USING_LIST) || \
718
defined(STL_USING_STRING) || defined(STL_USING_STREAM) || defined STL_USING_FUNCTIONAL || \
719
defined(STL_USING_MEMORY) || defined(STL_USING_STACK) || defined STL_USING_ALGORITHM || \
720
defined(STL_USING_UTILITY) || defined(STL_USING_IOSTREAM) || defined(STL_USING_SET) || \
721
defined(STL_USING_LIMITS)
722
723
#define _ODA_STL_
724
725
#else
726
#pragma message( "Warning: You included \"OdaSTL.H\" without using any STL features!" )
727
728
#endif
729
730
//#endif // _ODA_STLHELPER_INCLUDED_
731
Generated on Tue Apr 15 2025 11:30:04