Enable CXX_GUARDEDALLOC support through SCons.
[blender.git] / source / gameengine / Expressions / ErrorValue.cpp
1 // ErrorValue.cpp: implementation of the CErrorValue class.
2 /*
3  * Copyright (c) 1996-2000 Erwin Coumans <coockie@acm.org>
4  *
5  * Permission to use, copy, modify, distribute and sell this software
6  * and its documentation for any purpose is hereby granted without fee,
7  * provided that the above copyright notice appear in all copies and
8  * that both that copyright notice and this permission notice appear
9  * in supporting documentation.  Erwin Coumans makes no
10  * representations about the suitability of this software for any
11  * purpose.  It is provided "as is" without express or implied warranty.
12  *
13  */
14
15 #include "ErrorValue.h"
16
17 //////////////////////////////////////////////////////////////////////
18 // Construction/Destruction
19 //////////////////////////////////////////////////////////////////////
20
21 CErrorValue::CErrorValue()
22 /*
23 pre:
24 effect: constructs a new CErrorValue containing errormessage "Error"
25 */
26 {
27         m_strErrorText = "Error";
28         SetError(true);
29 }
30
31
32
33 CErrorValue::CErrorValue(const char *errmsg)
34 /*
35 pre:
36 effect: constructs a new CErrorValue containing errormessage errmsg
37 */
38 {
39   m_strErrorText = "[";
40   m_strErrorText += errmsg;
41   m_strErrorText += "]";
42   SetError(true);
43 }
44
45
46
47 CErrorValue::~CErrorValue()
48 /*
49 pre:
50 effect: deletes the object
51 */
52 {
53
54 }
55
56
57
58 CValue* CErrorValue::Calc(VALUE_OPERATOR op, CValue *val)
59 /*
60 pre:
61 ret: a new object containing the result of applying operator op to this
62          object and val
63 */
64 {
65         CValue* errorval;
66
67         switch (op)
68         {
69         case VALUE_POS_OPERATOR:
70         case VALUE_NEG_OPERATOR:
71         case VALUE_NOT_OPERATOR:
72                 {
73                         errorval = new CErrorValue (op2str(op) + GetText());
74                         break;
75                 }
76         default:
77                 {
78                         errorval = val->CalcFinal(VALUE_ERROR_TYPE, op, this);
79                         break;
80                 }
81         }
82         
83         return errorval;
84 }
85
86
87
88 CValue* CErrorValue::CalcFinal(VALUE_DATA_TYPE dtype, VALUE_OPERATOR op, CValue *val)
89 /*
90 pre: the type of val is dtype
91 ret: a new object containing the result of applying operator op to val and
92          this object
93 */
94 {
95         return new CErrorValue (val->GetText() + op2str(op) + GetText());
96 }
97
98
99
100 double CErrorValue::GetNumber()
101 {
102         return -1;
103 }
104
105
106
107 const STR_String & CErrorValue::GetText()
108 {
109         return m_strErrorText;
110 }
111
112
113
114 CValue* CErrorValue::GetReplica()
115
116         // who would want a copy of an error ?
117         trace ("Error: ErrorValue::GetReplica() not implemented yet");
118         assertd(false);
119
120         return NULL;
121 }