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