Ne.app NeANT
The Ne.app NeANT User module of the NeANT distribution.
rw_any.h
Go to the documentation of this file.
1// -*- C++ -*-
2
30#ifndef RW_ANY_H_INCLUDED
31#define RW_ANY_H_INCLUDED
32
33
34#include <rw_testdefs.h>
35
36
38{
39public:
40
41#ifndef _RWSTD_NO_BOOL
42 rw_any_t (bool);
43#endif // _RWSTD_NO_BOOL
44
45 rw_any_t (char);
46 rw_any_t (signed char);
47 rw_any_t (unsigned char);
48
49 rw_any_t (signed short);
50 rw_any_t (unsigned short);
51
52 rw_any_t (signed int);
53 rw_any_t (unsigned int);
54
55 rw_any_t (signed long);
56 rw_any_t (unsigned long);
57
58#ifdef _RWSTD_LONG_LONG
60 rw_any_t (unsigned _RWSTD_LONG_LONG);
61#endif // _RWSTD_LONG_LONG
62
63 rw_any_t (float);
64 rw_any_t (double);
65
66#ifndef _RWSTD_NO_LONG_DOUBLE
67 rw_any_t (long double);
68#endif // _RWSTD_NO_LONG_DOUBLE
69
70 rw_any_t (void*);
71 rw_any_t (volatile void*);
72 rw_any_t (const void*);
73 rw_any_t (const volatile void*);
74
75 rw_any_t (char*);
76 rw_any_t (const char*);
77 rw_any_t (volatile char*);
78 rw_any_t (const volatile char*);
79
80#ifndef _RWSTD_NO_NATIVE_WCHAR_T
81 rw_any_t (wchar_t);
82#endif // _RWSTD_NO_NATIVE_WCHAR_T
83
84#ifndef _RWSTD_NO_WCHAR_T
85 rw_any_t (wchar_t*);
86 rw_any_t (const wchar_t*);
87 rw_any_t (volatile wchar_t*);
88 rw_any_t (const volatile wchar_t*);
89#endif // _RWSTD_NO_WCHAR_T
90
91 rw_any_t (const rw_any_t&);
92
93 ~rw_any_t ();
94
95 rw_any_t& operator= (const rw_any_t&);
96
97 const char* tostr (const char* = 0);
98 const char* type_name () const;
99
102 t_bool, t_schar, t_uchar, t_char,
103 t_sshrt, t_ushrt, t_sint, t_uint, t_slong, t_ulong,
104 t_sllong, t_ullong,
105 t_flt, t_dbl, t_ldbl,
107 t_pvoid, t_c_pvoid, t_v_pvoid, t_cv_pvoid,
108 t_str, t_c_str, t_v_str, t_cv_str,
109 t_wstr, t_c_wstr, t_v_wstr, t_cv_wstr
110 };
111
112private:
113
114 union uval_t {
115
116#ifndef _RWSTD_NO_LONG_DOUBLE
117 long double ldbl_;
118#endif // _RWSTD_NO_LONG_DOUBLE
119 const volatile void *pvoid_;
120 double dbl_;
121#ifdef _RWSTD_LONG_LONG
122 signed _RWSTD_LONG_LONG sllong_;
123 unsigned _RWSTD_LONG_LONG ullong_;
124#endif // _RWSTD_LONG_LONG
125 float flt_;
126#ifndef _RWSTD_NO_NATIVE_WCHAR_T
127 wchar_t wchar_;
128#endif // _RWSTD_NO_NATIVE_WCHAR_T
129 signed long slong_;
130 unsigned long ulong_;
131 signed int sint_;
132 unsigned int uint_;
133 signed short sshrt_;
134 unsigned short ushrt_;
135 signed char schar_;
136 unsigned char uchar_;
137 char char_;
138#ifndef _RWSTD_NO_BOOL
139 bool bool_;
140#endif // _RWSTD_NO_BOOL
141 } val_;
142
143 char *str_;
144 type_id_t tid_;
145};
146
147
148#define TOSTR(x) rw_any_t (x).tostr ()
149
150
151#endif // RW_ANY_H_INCLUDED
const char * type_name()
#define _RWSTD_LONG_LONG
rw_any_t(wchar_t)
@ t_dbl
Definition rw_any.h:105
@ t_c_str
Definition rw_any.h:108
@ t_sint
Definition rw_any.h:103
@ t_c_wstr
Definition rw_any.h:109
@ t_c_pvoid
Definition rw_any.h:107
@ t_sllong
Definition rw_any.h:104
@ t_bool
Definition rw_any.h:102
@ t_wchar
Definition rw_any.h:106
@ t_none
Definition rw_any.h:101
#define _TEST_EXPORT
Definition rw_testdefs.h:55