My Project
Main Page
Modules
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
cppvalue.h
Go to the documentation of this file.
1
/******************************************************************************
2
*
3
*
4
*
5
*
6
* Copyright (C) 1997-2015 by Dimitri van Heesch.
7
*
8
* Permission to use, copy, modify, and distribute this software and its
9
* documentation under the terms of the GNU General Public License is hereby
10
* granted. No representations are made about the suitability of this software
11
* for any purpose. It is provided "as is" without express or implied warranty.
12
* See the GNU General Public License for more details.
13
*
14
* Documents produced by Doxygen are derivative works derived from the
15
* input used in their production; they are not affected by this license.
16
*
17
*/
18
19
#ifndef _CPPVALUE_H
20
#define _CPPVALUE_H
21
22
#include <stdio.h>
23
#include <qglobal.h>
24
26
class
CPPValue
27
{
28
public
:
29
enum
Type
{
Int
,
Float
};
30
31
CPPValue
(
long
val=0) :
type
(
Int
) {
v
.l = val; }
32
CPPValue
(
double
val) :
type
(
Float
) {
v
.d = val; }
33
34
operator
double ()
const
{
return
type
==
Int
? (double)
v
.l :
v
.d; }
35
operator
long ()
const
{
return
type
==
Int
?
v
.l : (long)
v
.d; }
36
37
bool
isInt
()
const
{
return
type
==
Int
; }
38
39
void
print
()
const
40
{
41
if
(
type
==
Int
)
42
printf(
"(%ld)\n"
,
v
.l);
43
else
44
printf(
"(%f)\n"
,
v
.d);
45
}
46
47
private
:
48
Type
type
;
49
union
{
50
double
d
;
51
long
l
;
52
}
v
;
53
};
54
55
extern
CPPValue
parseOctal
();
56
extern
CPPValue
parseDecimal
();
57
extern
CPPValue
parseHexadecimal
();
58
extern
CPPValue
parseCharacter
();
59
extern
CPPValue
parseFloat
();
60
61
#endif