CFx SDK Documentation 2024 SP0
Loading...
Searching...
No Matches
OdaSTL.h
Go to the documentation of this file.
1
2// Copyright (C) 2002-2022, 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-2022 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#pragma warning(disable: 4018) // signed/unsigned mismatch
103#pragma warning(disable: 4097) // typedef-name 'identifier1' used as synonym for class-name 'identifier2'
104#pragma warning(disable: 4100) // unreferenced formal parameter
105#pragma warning(disable: 4127) // conditional expression is constant
106#pragma warning(disable: 4146) // unary minus operator applied to unsigned type, result still unsigned
107#pragma warning(disable: 4244) // 'conversion' conversion from 'type1' to 'type2', possible loss of data
108#pragma warning(disable: 4245) // conversion from 'type1' to 'type2', signed/unsigned mismatch
109#pragma warning(disable: 4284) // return type for 'identifier::operator ->' is not a UDT or reference
110 // to a UDT. Will produce errors if applied using infix notation
111#pragma warning(disable: 4511) // 'class' : copy constructor could not be generated
112#pragma warning(disable: 4512) // 'class' : assignment operator could not be generated
113#pragma warning(disable: 4663) // C++ language change: to explicitly specialize class template 'vector'
114#pragma warning(disable: 4702) // unreachable code
115#pragma warning(disable: 4710) // 'function' : function not inlined
116#pragma warning(disable: 4786) // identifier was truncated to 'number' characters in the debug information
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: 4018) // signed/unsigned mismatch
160#pragma warning(disable: 4097) // typedef-name 'identifier1' used as synonym for class-name 'identifier2'
161#pragma warning(disable: 4100) // unreferenced formal parameter
162#pragma warning(disable: 4127) // conditional expression is constant
163#pragma warning(disable: 4146) // unary minus operator applied to unsigned type, result still unsigned
164#pragma warning(disable: 4244) // 'conversion' conversion from 'type1' to 'type2', possible loss of data
165#pragma warning(disable: 4245) // conversion from 'type1' to 'type2', signed/unsigned mismatch
166#pragma warning(disable: 4284) // return type for 'identifier::operator ->' is not a UDT or reference
167 // to a UDT. Will produce errors if applied using infix notation
168#pragma warning(disable: 4511) // 'class' : copy constructor could not be generated
169#pragma warning(disable: 4512) // 'class' : assignment operator could not be generated
170#pragma warning(disable: 4663) // C++ language change: to explicitly specialize class template 'vector'
171#pragma warning(disable: 4702) // unreachable code
172#pragma warning(disable: 4710) // 'function' : function not inlined
173#pragma warning(disable: 4786) // identifier was truncated to 'number' characters in the debug information
174
175// MSVC8 /analyze warnings
176#if _MSC_VER > 1310
177#pragma warning( disable : 6011 )
178#pragma warning( disable : 6219 )
179#pragma warning( disable : 6221 )
180#pragma warning( disable : 6255 )
181#pragma warning( disable : 6308 )
182#pragma warning( disable : 6320 )
183#pragma warning( disable : 6321 )
184#pragma warning( disable : 6387 )
185#endif // /analyze
186#endif
187
188#include <vector>
189
190#ifdef _MSC_VER
191#pragma warning(pop)
192#endif // _MSC_VER
193
194#endif // STL_USING_VECTOR
195
196
198// STL neccessary declaration for list
200
201#ifdef STL_USING_LIST
202
203#ifdef _MSC_VER
204#pragma warning(push)
205#endif // _MSC_VER
206
207#ifdef _MSC_VER
208#include <yvals.h> // warning numbers get enabled in yvals.h
209#endif
210
211#ifdef _MSC_VER
212#pragma warning(disable: 4018) // signed/unsigned mismatch
213#pragma warning(disable: 4097) // typedef-name 'identifier1' used as synonym for class-name 'identifier2'
214#pragma warning(disable: 4100) // unreferenced formal parameter
215#pragma warning(disable: 4127) // conditional expression is constant
216#pragma warning(disable: 4146) // unary minus operator applied to unsigned type, result still unsigned
217#pragma warning(disable: 4244) // 'conversion' conversion from 'type1' to 'type2', possible loss of data
218#pragma warning(disable: 4245) // conversion from 'type1' to 'type2', signed/unsigned mismatch
219#pragma warning(disable: 4284) // return type for 'identifier::operator ->' is not a UDT or reference
220 // to a UDT. Will produce errors if applied using infix notation
221#pragma warning(disable: 4511) // 'class' : copy constructor could not be generated
222#pragma warning(disable: 4512) // 'class' : assignment operator could not be generated
223#pragma warning(disable: 4663) // C++ language change: to explicitly specialize class template 'vector'
224#pragma warning(disable: 4702) // unreachable code
225#pragma warning(disable: 4710) // 'function' : function not inlined
226#pragma warning(disable: 4786) // identifier was truncated to 'number' characters in the debug information
227// MSVC8 /analyze warnings
228#if _MSC_VER > 1310
229#pragma warning( disable : 6011 )
230#pragma warning( disable : 6219 )
231#pragma warning( disable : 6221 )
232#pragma warning( disable : 6255 )
233#pragma warning( disable : 6308 )
234#pragma warning( disable : 6320 )
235#pragma warning( disable : 6321 )
236#pragma warning( disable : 6387 )
237#endif // /analyze
238#endif
239
240#include <list>
241
242#ifdef _MSC_VER
243#pragma warning(pop)
244#endif // _MSC_VER
245
246#endif // STL_USING_LIST
247
248
250// STL neccessary declaration for string
252
253#ifdef STL_USING_STRING
254
255#ifdef _MSC_VER
256#pragma warning(push)
257#endif // _MSC_VER
258
259#ifdef _MSC_VER
260#include <yvals.h> // warning numbers get enabled in yvals.h
261#endif
262
263#ifdef _MSC_VER
264#pragma warning(disable: 4018) // signed/unsigned mismatch
265#pragma warning(disable: 4097) // typedef-name 'identifier1' used as synonym for class-name 'identifier2'
266#pragma warning(disable: 4100) // unreferenced formal parameter
267#pragma warning(disable: 4127) // conditional expression is constant
268#pragma warning(disable: 4146) // unary minus operator applied to unsigned type, result still unsigned
269#pragma warning(disable: 4244) // 'conversion' conversion from 'type1' to 'type2', possible loss of data
270#pragma warning(disable: 4245) // conversion from 'type1' to 'type2', signed/unsigned mismatch
271#pragma warning(disable: 4284) // return type for 'identifier::operator ->' is not a UDT or reference
272 // to a UDT. Will produce errors if applied using infix notation
273#pragma warning(disable: 4511) // 'class' : copy constructor could not be generated
274#pragma warning(disable: 4512) // 'class' : assignment operator could not be generated
275#pragma warning(disable: 4663) // C++ language change: to explicitly specialize class template 'vector'
276#pragma warning(disable: 4702) // unreachable code
277#pragma warning(disable: 4710) // 'function' : function not inlined
278#pragma warning(disable: 4786) // identifier was truncated to 'number' characters in the debug information
279// MSVC8 /analyze warnings
280#if _MSC_VER > 1310
281#pragma warning( disable : 6011 )
282#pragma warning( disable : 6219 )
283#pragma warning( disable : 6221 )
284#pragma warning( disable : 6255 )
285#pragma warning( disable : 6308 )
286#pragma warning( disable : 6320 )
287#pragma warning( disable : 6321 )
288#pragma warning( disable : 6387 )
289#endif // /analyze
290#endif
291
292#include <string>
293
294#ifdef _MSC_VER
295#pragma warning(pop)
296#endif // _MSC_VER
297
298#ifdef _MSC_VER
299#pragma warning(disable: 4514) // unreferenced inline/local function has been removed
300#pragma warning(disable: 4710) // 'function' : function not inlined
301#pragma warning(disable: 4786) // identifier was truncated to 'number' characters
302 // in the debug information
303#endif
304
305#endif // STL_USING_STRING
306
307
309// STL neccessary declaration for streams
311
312#ifdef STL_USING_STREAM
313
314#ifdef _MSC_VER
315#pragma warning(push)
316#endif // _MSC_VER
317
318#ifdef _MSC_VER
319#include <yvals.h> // warning numbers get enabled in yvals.h
320#endif
321
322#ifdef _MSC_VER
323#pragma warning(disable: 4018) // signed/unsigned mismatch
324#pragma warning(disable: 4097) // typedef-name 'identifier1' used as synonym for class-name 'identifier2'
325#pragma warning(disable: 4100) // unreferenced formal parameter
326#pragma warning(disable: 4127) // conditional expression is constant
327#pragma warning(disable: 4146) // unary minus operator applied to unsigned type, result still unsigned
328#pragma warning(disable: 4244) // 'conversion' conversion from 'type1' to 'type2', possible loss of data
329#pragma warning(disable: 4245) // conversion from 'type1' to 'type2', signed/unsigned mismatch
330#pragma warning(disable: 4284) // return type for 'identifier::operator ->' is not a UDT or reference
331 // to a UDT. Will produce errors if applied using infix notation
332#pragma warning(disable: 4511) // 'class' : copy constructor could not be generated
333#pragma warning(disable: 4512) // 'class' : assignment operator could not be generated
334#pragma warning(disable: 4663) // C++ language change: to explicitly specialize class template 'vector'
335#pragma warning(disable: 4702) // unreachable code
336#pragma warning(disable: 4710) // 'function' : function not inlined
337#pragma warning(disable: 4786) // identifier was truncated to 'number' characters in the debug information
338// MSVC8 /analyze warnings
339#if _MSC_VER > 1310
340#pragma warning( disable : 6011 )
341#pragma warning( disable : 6219 )
342#pragma warning( disable : 6221 )
343#pragma warning( disable : 6255 )
344#pragma warning( disable : 6308 )
345#pragma warning( disable : 6320 )
346#pragma warning( disable : 6321 )
347#pragma warning( disable : 6387 )
348#endif // /analyze
349#endif
350
351#ifdef OD_HAVE_SSTREAM_FILE
352#include <sstream>
353#endif
354
355#ifdef OD_HAVE_FSTREAM_FILE
356#include <fstream>
357#endif
358
359#ifdef _MSC_VER
360#pragma warning(pop)
361#endif // _MSC_VER
362
363#endif //STL_USING_STREAM
364
365
367// STL neccessary declaration for input/output streams
369
370#ifdef STL_USING_IOSTREAM
371
372#ifdef _MSC_VER
373#pragma warning(push)
374#endif // _MSC_VER
375
376#ifdef _MSC_VER
377#include <yvals.h> // warning numbers get enabled in yvals.h
378#endif
379
380#ifdef _MSC_VER
381#pragma warning(disable: 4018) // signed/unsigned mismatch
382#pragma warning(disable: 4097) // typedef-name 'identifier1' used as synonym for class-name 'identifier2'
383#pragma warning(disable: 4100) // unreferenced formal parameter
384#pragma warning(disable: 4127) // conditional expression is constant
385#pragma warning(disable: 4146) // unary minus operator applied to unsigned type, result still unsigned
386#pragma warning(disable: 4244) // 'conversion' conversion from 'type1' to 'type2', possible loss of data
387#pragma warning(disable: 4245) // conversion from 'type1' to 'type2', signed/unsigned mismatch
388#pragma warning(disable: 4284) // return type for 'identifier::operator ->' is not a UDT or reference
389 // to a UDT. Will produce errors if applied using infix notation
390#pragma warning(disable: 4511) // 'class' : copy constructor could not be generated
391#pragma warning(disable: 4512) // 'class' : assignment operator could not be generated
392#pragma warning(disable: 4663) // C++ language change: to explicitly specialize class template 'vector'
393#pragma warning(disable: 4702) // unreachable code
394#pragma warning(disable: 4710) // 'function' : function not inlined
395#pragma warning(disable: 4786) // identifier was truncated to 'number' characters in the debug information
396// MSVC8 /analyze warnings
397#if _MSC_VER > 1310
398#pragma warning( disable : 6011 )
399#pragma warning( disable : 6219 )
400#pragma warning( disable : 6221 )
401#pragma warning( disable : 6255 )
402#pragma warning( disable : 6308 )
403#pragma warning( disable : 6320 )
404#pragma warning( disable : 6321 )
405#pragma warning( disable : 6387 )
406#endif // /analyze
407#endif
408
409#include <iostream>
410#ifdef OD_HAVE_IOMANIP_FILE
411#include <iomanip>
412#endif
413
414#ifdef _MSC_VER
415#pragma warning(pop)
416#endif // _MSC_VER
417
418#endif //STL_USING_IOSTREAM
419
421// STL neccessary declaration for memory
423
424#ifdef STL_USING_MEMORY
425
426#ifdef _MSC_VER
427#pragma warning(push)
428#endif // _MSC_VER
429
430#ifdef _MSC_VER
431#include <yvals.h> // warning numbers get enabled in yvals.h
432#endif
433
434#ifdef _MSC_VER
435#pragma warning(disable: 4018) // signed/unsigned mismatch
436#pragma warning(disable: 4097) // typedef-name 'identifier1' used as synonym for class-name 'identifier2'
437#pragma warning(disable: 4100) // unreferenced formal parameter
438#pragma warning(disable: 4127) // conditional expression is constant
439#pragma warning(disable: 4146) // unary minus operator applied to unsigned type, result still unsigned
440#pragma warning(disable: 4244) // 'conversion' conversion from 'type1' to 'type2', possible loss of data
441#pragma warning(disable: 4245) // conversion from 'type1' to 'type2', signed/unsigned mismatch
442#pragma warning(disable: 4284) // return type for 'identifier::operator ->' is not a UDT or reference
443 // to a UDT. Will produce errors if applied using infix notation
444#pragma warning(disable: 4511) // 'class' : copy constructor could not be generated
445#pragma warning(disable: 4512) // 'class' : assignment operator could not be generated
446#pragma warning(disable: 4663) // C++ language change: to explicitly specialize class template 'vector'
447#pragma warning(disable: 4702) // unreachable code
448#pragma warning(disable: 4710) // 'function' : function not inlined
449#pragma warning(disable: 4786) // identifier was truncated to 'number' characters in the debug information
450// MSVC8 /analyze warnings
451#if _MSC_VER > 1310
452#pragma warning( disable : 6011 )
453#pragma warning( disable : 6219 )
454#pragma warning( disable : 6221 )
455#pragma warning( disable : 6255 )
456#pragma warning( disable : 6308 )
457#pragma warning( disable : 6320 )
458#pragma warning( disable : 6321 )
459#pragma warning( disable : 6387 )
460#endif // /analyze
461#endif
462
463#include <memory>
464
465#ifdef _MSC_VER
466#pragma warning(pop)
467#endif // _MSC_VER
468
469
470
471#endif //STL_USING_MEMORY
472
473
475// STL neccessary declaration for stack
477
478#ifdef STL_USING_STACK
479
480#ifdef _MSC_VER
481#pragma warning(push)
482#endif // _MSC_VER
483
484#ifdef _MSC_VER
485#include <yvals.h> // warning numbers get enabled in yvals.h
486#endif
487
488#ifdef _MSC_VER
489#pragma warning(disable: 4018) // signed/unsigned mismatch
490#pragma warning(disable: 4097) // typedef-name 'identifier1' used as synonym for class-name 'identifier2'
491#pragma warning(disable: 4100) // unreferenced formal parameter
492#pragma warning(disable: 4127) // conditional expression is constant
493#pragma warning(disable: 4146) // unary minus operator applied to unsigned type, result still unsigned
494#pragma warning(disable: 4244) // 'conversion' conversion from 'type1' to 'type2', possible loss of data
495#pragma warning(disable: 4245) // conversion from 'type1' to 'type2', signed/unsigned mismatch
496#pragma warning(disable: 4284) // return type for 'identifier::operator ->' is not a UDT or reference
497 // to a UDT. Will produce errors if applied using infix notation
498#pragma warning(disable: 4511) // 'class' : copy constructor could not be generated
499#pragma warning(disable: 4512) // 'class' : assignment operator could not be generated
500#pragma warning(disable: 4663) // C++ language change: to explicitly specialize class template 'vector'
501#pragma warning(disable: 4702) // unreachable code
502#pragma warning(disable: 4710) // 'function' : function not inlined
503#pragma warning(disable: 4786) // identifier was truncated to 'number' characters in the debug information
504// MSVC8 /analyze warnings
505#if _MSC_VER > 1310
506#pragma warning( disable : 6011 )
507#pragma warning( disable : 6219 )
508#pragma warning( disable : 6221 )
509#pragma warning( disable : 6255 )
510#pragma warning( disable : 6308 )
511#pragma warning( disable : 6320 )
512#pragma warning( disable : 6321 )
513#pragma warning( disable : 6387 )
514#endif // /analyze
515#endif
516
517#include <stack>
518
519#ifdef _MSC_VER
520#pragma warning(pop)
521#endif // _MSC_VER
522
523#endif // STL_USING_STACK
524
525
526#ifdef STL_USING_QUEUE
527
528#ifdef _MSC_VER
529#pragma warning(push)
530#endif // _MSC_VER
531
532#ifdef _MSC_VER
533#include <yvals.h> // warning numbers get enabled in yvals.h
534#endif
535
536#ifdef _MSC_VER
537#pragma warning(disable: 4018) // signed/unsigned mismatch
538#pragma warning(disable: 4097) // typedef-name 'identifier1' used as synonym for class-name 'identifier2'
539#pragma warning(disable: 4100) // unreferenced formal parameter
540#pragma warning(disable: 4127) // conditional expression is constant
541#pragma warning(disable: 4146) // unary minus operator applied to unsigned type, result still unsigned
542#pragma warning(disable: 4244) // 'conversion' conversion from 'type1' to 'type2', possible loss of data
543#pragma warning(disable: 4245) // conversion from 'type1' to 'type2', signed/unsigned mismatch
544#pragma warning(disable: 4284) // return type for 'identifier::operator ->' is not a UDT or reference
545// to a UDT. Will produce errors if applied using infix notation
546#pragma warning(disable: 4511) // 'class' : copy constructor could not be generated
547#pragma warning(disable: 4512) // 'class' : assignment operator could not be generated
548#pragma warning(disable: 4663) // C++ language change: to explicitly specialize class template 'vector'
549#pragma warning(disable: 4702) // unreachable code
550#pragma warning(disable: 4710) // 'function' : function not inlined
551#pragma warning(disable: 4786) // identifier was truncated to 'number' characters in the debug information
552// MSVC8 /analyze warnings
553#if _MSC_VER > 1310
554#pragma warning( disable : 6011 )
555#pragma warning( disable : 6219 )
556#pragma warning( disable : 6221 )
557#pragma warning( disable : 6255 )
558#pragma warning( disable : 6308 )
559#pragma warning( disable : 6320 )
560#pragma warning( disable : 6321 )
561#pragma warning( disable : 6387 )
562#endif // /analyze
563#endif
564
565#include <queue>
566
567#ifdef _MSC_VER
568#pragma warning(pop)
569#endif // _MSC_VER
570
571#endif // STL_USING_STACK
572
574// STL neccessary declaration for algorithm
576
577#ifdef STL_USING_ALGORITHM
578
579#ifdef _MSC_VER
580#pragma warning(push)
581#endif // _MSC_VER
582
583#ifdef _MSC_VER
584#include <yvals.h> // warning numbers get enabled in yvals.h
585#endif
586
587#ifdef _MSC_VER
588#pragma warning(disable: 4018) // signed/unsigned mismatch
589#pragma warning(disable: 4097) // typedef-name 'identifier1' used as synonym for class-name 'identifier2'
590#pragma warning(disable: 4100) // unreferenced formal parameter
591#pragma warning(disable: 4127) // conditional expression is constant
592#pragma warning(disable: 4146) // unary minus operator applied to unsigned type, result still unsigned
593#pragma warning(disable: 4244) // 'conversion' conversion from 'type1' to 'type2', possible loss of data
594#pragma warning(disable: 4245) // conversion from 'type1' to 'type2', signed/unsigned mismatch
595#pragma warning(disable: 4284) // return type for 'identifier::operator ->' is not a UDT or reference
596 // to a UDT. Will produce errors if applied using infix notation
597#pragma warning(disable: 4511) // 'class' : copy constructor could not be generated
598#pragma warning(disable: 4512) // 'class' : assignment operator could not be generated
599#pragma warning(disable: 4663) // C++ language change: to explicitly specialize class template 'vector'
600#pragma warning(disable: 4702) // unreachable code
601#pragma warning(disable: 4710) // 'function' : function not inlined
602#pragma warning(disable: 4786) // identifier was truncated to 'number' characters in the debug information
603// MSVC8 /analyze warnings
604#if _MSC_VER > 1310
605#pragma warning( disable : 6011 )
606#pragma warning( disable : 6219 )
607#pragma warning( disable : 6221 )
608#pragma warning( disable : 6255 )
609#pragma warning( disable : 6308 )
610#pragma warning( disable : 6320 )
611#pragma warning( disable : 6321 )
612#pragma warning( disable : 6387 )
613#endif // /analyze
614#endif
615
616#include <algorithm>
617#include <iterator>
618
619// in STLPORT used with BCC 5.6 std::remove clashes with remove(char*) from iostream
620#ifdef __SGI_STL_PORT
626namespace std
627{
628 using _STLP_STD::remove;
629}
630#endif
631
632#ifdef _MSC_VER
633#pragma warning(pop)
634#endif // _MSC_VER
635
636#endif // STL_USING_ALGORITHM
637
639// STL neccessary declaration for functional
641
642#ifdef STL_USING_FUNCTIONAL
643
644#ifdef _MSC_VER
645#pragma warning(push)
646#endif // _MSC_VER
647
648#ifdef _MSC_VER
649#include <yvals.h> // warning numbers get enabled in yvals.h
650#endif
651
652#ifdef _MSC_VER
653#pragma warning(disable: 4018) // signed/unsigned mismatch
654#pragma warning(disable: 4097) // typedef-name 'identifier1' used as synonym for class-name 'identifier2'
655#pragma warning(disable: 4100) // unreferenced formal parameter
656#pragma warning(disable: 4127) // conditional expression is constant
657#pragma warning(disable: 4146) // unary minus operator applied to unsigned type, result still unsigned
658#pragma warning(disable: 4244) // 'conversion' conversion from 'type1' to 'type2', possible loss of data
659#pragma warning(disable: 4245) // conversion from 'type1' to 'type2', signed/unsigned mismatch
660#pragma warning(disable: 4284) // return type for 'identifier::operator ->' is not a UDT or reference
661 // to a UDT. Will produce errors if applied using infix notation
662#pragma warning(disable: 4511) // 'class' : copy constructor could not be generated
663#pragma warning(disable: 4512) // 'class' : assignment operator could not be generated
664#pragma warning(disable: 4663) // C++ language change: to explicitly specialize class template 'vector'
665#pragma warning(disable: 4702) // unreachable code
666#pragma warning(disable: 4710) // 'function' : function not inlined
667#pragma warning(disable: 4786) // identifier was truncated to 'number' characters in the debug information
668// MSVC8 /analyze warnings
669#if _MSC_VER > 1310
670#pragma warning( disable : 6011 )
671#pragma warning( disable : 6219 )
672#pragma warning( disable : 6221 )
673#pragma warning( disable : 6255 )
674#pragma warning( disable : 6308 )
675#pragma warning( disable : 6320 )
676#pragma warning( disable : 6321 )
677#pragma warning( disable : 6387 )
678#endif // /analyze
679#endif
680
681#include <functional>
682
683#ifdef _MSC_VER
684#pragma warning(pop)
685#endif // _MSC_VER
686
687#endif // STL_USING_FUNCTIONAL
688
689
691// STL neccessary declaration for utilities
693
694#ifdef STL_USING_UTILITY
695
696#ifdef _MSC_VER
697#pragma warning(push)
698#endif // _MSC_VER
699
700#ifdef _MSC_VER
701#include <yvals.h> // warning numbers get enabled in yvals.h
702#endif
703
704#ifdef _MSC_VER
705#pragma warning(disable: 4018) // signed/unsigned mismatch
706#pragma warning(disable: 4097) // typedef-name 'identifier1' used as synonym for class-name 'identifier2'
707#pragma warning(disable: 4100) // unreferenced formal parameter
708#pragma warning(disable: 4127) // conditional expression is constant
709#pragma warning(disable: 4146) // unary minus operator applied to unsigned type, result still unsigned
710#pragma warning(disable: 4244) // 'conversion' conversion from 'type1' to 'type2', possible loss of data
711#pragma warning(disable: 4245) // conversion from 'type1' to 'type2', signed/unsigned mismatch
712#pragma warning(disable: 4284) // return type for 'identifier::operator ->' is not a UDT or reference
713 // to a UDT. Will produce errors if applied using infix notation
714#pragma warning(disable: 4511) // 'class' : copy constructor could not be generated
715#pragma warning(disable: 4512) // 'class' : assignment operator could not be generated
716#pragma warning(disable: 4663) // C++ language change: to explicitly specialize class template 'vector'
717#pragma warning(disable: 4702) // unreachable code
718#pragma warning(disable: 4710) // 'function' : function not inlined
719#pragma warning(disable: 4786) // identifier was truncated to 'number' characters in the debug information
720// MSVC8 /analyze warnings
721#if _MSC_VER > 1310
722#pragma warning( disable : 6011 )
723#pragma warning( disable : 6219 )
724#pragma warning( disable : 6221 )
725#pragma warning( disable : 6255 )
726#pragma warning( disable : 6308 )
727#pragma warning( disable : 6320 )
728#pragma warning( disable : 6321 )
729#pragma warning( disable : 6387 )
730#endif // /analyze
731#endif
732
733#include <utility>
734
735#ifdef _MSC_VER
736#pragma warning(pop)
737#endif // _MSC_VER
738
739#endif // STL_USING_FUNCTIONAL
740
741#ifdef STL_USING_SET
742
743#ifdef _MSC_VER
744#pragma warning(push)
745#endif // _MSC_VER
746
747#ifdef _MSC_VER
748#include <yvals.h> // warning numbers get enabled in yvals.h
749#endif
750
751#ifdef _MSC_VER
752#pragma warning(disable: 4018) // signed/unsigned mismatch
753#pragma warning(disable: 4097) // typedef-name 'identifier1' used as synonym for class-name 'identifier2'
754#pragma warning(disable: 4100) // unreferenced formal parameter
755#pragma warning(disable: 4127) // conditional expression is constant
756#pragma warning(disable: 4146) // unary minus operator applied to unsigned type, result still unsigned
757#pragma warning(disable: 4244) // 'conversion' conversion from 'type1' to 'type2', possible loss of data
758#pragma warning(disable: 4245) // conversion from 'type1' to 'type2', signed/unsigned mismatch
759#pragma warning(disable: 4284) // return type for 'identifier::operator ->' is not a UDT or reference
760 // to a UDT. Will produce errors if applied using infix notation
761#pragma warning(disable: 4511) // 'class' : copy constructor could not be generated
762#pragma warning(disable: 4512) // 'class' : assignment operator could not be generated
763#pragma warning(disable: 4702) // unreachable code
764#pragma warning(disable: 4710) // 'function' : function not inlined
765#pragma warning(disable: 4786) // identifier was truncated to 'number' characters in the debug information
766// MSVC8 /analyze warnings
767#if _MSC_VER > 1310
768#pragma warning( disable : 6011 )
769#pragma warning( disable : 6219 )
770#pragma warning( disable : 6221 )
771#pragma warning( disable : 6255 )
772#pragma warning( disable : 6308 )
773#pragma warning( disable : 6320 )
774#pragma warning( disable : 6321 )
775#pragma warning( disable : 6387 )
776#endif // /analyze
777#endif
778
779#include <set>
780
781#ifdef _MSC_VER
782#pragma warning(pop)
783#endif // _MSC_VER
784
785#endif // STL_USING_SET
786
787#ifdef STL_USING_LIMITS
788
789#ifdef _MSC_VER
790#pragma warning(push)
791#include <yvals.h> // warning numbers get enabled in yvals.h
792#pragma warning(disable: 4663) // C++ language change: to explicitly specialize class template ...
793
794#undef min // in windows header min & max are defined
795#undef max
796
797#endif // _MSC_VER
798
799#include <limits>
800
801#ifdef _MSC_VER
802#pragma warning(pop)
803#endif // _MSC_VER
804
805#endif // STL_USING_LIMITS
806
807
809// verify proper use of macros
811
812#if defined(STL_USING_MAP) || defined(STL_USING_VECTOR) || defined(STL_USING_LIST) || \
813 defined(STL_USING_STRING) || defined(STL_USING_STREAM) || defined STL_USING_FUNCTIONAL || \
814 defined(STL_USING_MEMORY) || defined(STL_USING_STACK) || defined STL_USING_ALGORITHM || \
815 defined(STL_USING_UTILITY) || defined(STL_USING_IOSTREAM) || defined(STL_USING_SET) || \
816 defined(STL_USING_LIMITS)
817
818#define _ODA_STL_
819
820#else
821#pragma message( "Warning: You included \"OdaSTL.H\" without using any STL features!" )
822
823#endif
824
825//#endif // _ODA_STLHELPER_INCLUDED_
826