MythTV master
Variables.cpp
Go to the documentation of this file.
1/* Variables.cpp
2
3 Copyright (C) David C. J. Matthews 2004 dm at prolingua.co.uk
4
5 This program is free software; you can redistribute it and/or
6 modify it under the terms of the GNU General Public License
7 as published by the Free Software Foundation; either version 2
8 of the License, or (at your option) any later version.
9
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
18 Or, point your browser to http://www.gnu.org/copyleft/gpl.html
19
20*/
21#include "Variables.h"
22
23#include <cstdio>
24
25#include "Ingredients.h"
26#include "Root.h"
27#include "BaseClasses.h"
28#include "ParseNode.h"
29#include "ASN1Codes.h"
30#include "Engine.h"
31#include "Logging.h"
32
34
35static const char *TestToText(int tc)
36{
37 switch (tc)
38 {
39 case TC_Equal:
40 return "Equal";
41 case TC_NotEqual:
42 return "NotEqual";
43 case TC_Less:
44 return "Less";
45 case TC_LessOrEqual:
46 return "LessOrEqual";
47 case TC_Greater:
48 return "Greater";
50 return "GreaterOrEqual";
51 }
52
53 return nullptr; // To keep the compiler happy
54}
55
56// Normal activation behaviour.
58{
59 if (m_fRunning)
60 {
61 return;
62 }
63
65 m_fRunning = true;
66 engine->EventTriggered(this, EventIsRunning);
67}
68
70{
72 // Original value should be a bool.
73 MHParseNode *pInitial = p->GetNamedArg(C_ORIGINAL_VALUE);
74
75 if (pInitial)
76 {
77 m_fOriginalValue = pInitial->GetArgN(0)->GetBoolValue();
78 }
79}
80
81void MHBooleanVar::PrintMe(FILE *fd, int nTabs) const
82{
83 PrintTabs(fd, nTabs);
84 fprintf(fd, "{:BooleanVar");
85 MHVariable::PrintMe(fd, nTabs + 1);
86 PrintTabs(fd, nTabs + 1);
87 fprintf(fd, ":OrigValue %s\n", m_fOriginalValue ? "true" : "false");
88 PrintTabs(fd, nTabs);
89 fprintf(fd, "}\n");
90}
91
93{
94 if (m_fAvailable)
95 {
96 return;
97 }
98
101}
102
103// Implement the TestVariable action. Triggers a TestEvent event on the result.
104void MHBooleanVar::TestVariable(int nOp, const MHUnion &parm, MHEngine *engine)
105{
107 bool fRes = false;
108
109 switch (nOp)
110 {
111 case TC_Equal:
112 fRes = m_fValue == parm.m_fBoolVal;
113 break;
114 case TC_NotEqual:
115 fRes = m_fValue != parm.m_fBoolVal;
116 break;
117 default:
118 MHERROR("Invalid comparison for bool");
119 }
120
121 MHLOG(MHLogDetail, QString("Comparison %1 between %2 and %3 => %4")
122 .arg(TestToText(nOp),
123 m_fValue ? "true" : "false",
124 parm.m_fBoolVal ? "true" : "false",
125 fRes ? "true" : "false"));
126 engine->EventTriggered(this, EventTestEvent, fRes);
127}
128
129// Get the variable value. Used in IndirectRef.
131{
132 value.m_Type = MHUnion::U_Bool;
133 value.m_fBoolVal = m_fValue;
134}
135
136// Implement the SetVariable action.
138{
140 m_fValue = value.m_fBoolVal;
141 MHLOG(MHLogDetail, QString("Update %1 := %2")
142 .arg(m_ObjectReference.Printable(), m_fValue ? "true" : "false"));
143}
144
145
147{
148 MHVariable::Initialise(p, engine);
149 // Original value should be an int.
150 MHParseNode *pInitial = p->GetNamedArg(C_ORIGINAL_VALUE);
151
152 if (pInitial)
153 {
154 m_nOriginalValue = pInitial->GetArgN(0)->GetIntValue();
155 }
156}
157
158void MHIntegerVar::PrintMe(FILE *fd, int nTabs) const
159{
160 PrintTabs(fd, nTabs);
161 fprintf(fd, "{:IntegerVar");
162 MHVariable::PrintMe(fd, nTabs + 1);
163 PrintTabs(fd, nTabs + 1);
164 fprintf(fd, ":OrigValue %d\n", m_nOriginalValue);
165 PrintTabs(fd, nTabs);
166 fprintf(fd, "}\n");
167}
168
170{
171 if (m_fAvailable)
172 {
173 return;
174 }
175
178}
179
180// Implement the TestVariable action. Triggers a TestEvent event on the result.
181void MHIntegerVar::TestVariable(int nOp, const MHUnion &parm, MHEngine *engine)
182{
184 bool fRes = false;
185
186 switch (nOp)
187 {
188 case TC_Equal:
189 fRes = m_nValue == parm.m_nIntVal;
190 break;
191 case TC_NotEqual:
192 fRes = m_nValue != parm.m_nIntVal;
193 break;
194 case TC_Less:
195 fRes = m_nValue < parm.m_nIntVal;
196 break;
197 case TC_LessOrEqual:
198 fRes = m_nValue <= parm.m_nIntVal;
199 break;
200 case TC_Greater:
201 fRes = m_nValue > parm.m_nIntVal;
202 break;
204 fRes = m_nValue >= parm.m_nIntVal;
205 break;
206 default:
207 MHERROR("Invalid comparison for int"); // Shouldn't ever happen
208 }
209
210 MHLOG(MHLogDetail, QString("Comparison %1 between %2 and %3 => %4").arg(TestToText(nOp))
211 .arg(m_nValue).arg(parm.m_nIntVal).arg(fRes ? "true" : "false"));
212 engine->EventTriggered(this, EventTestEvent, fRes);
213}
214
215// Get the variable value. Used in IndirectRef.
217{
218 value.m_Type = MHUnion::U_Int;
219 value.m_nIntVal = m_nValue;
220}
221
222// Implement the SetVariable action. Also used as part of Add, Subtract etc
224{
225 if (value.m_Type == MHUnion::U_String)
226 {
227 // Implicit conversion of string to integer.
228 int v = 0;
229 int p = 0;
230 bool fNegative = false;
231
232 if (value.m_strVal.Size() > 0 && value.m_strVal.GetAt(0) == '-')
233 {
234 p++;
235 fNegative = true;
236 }
237
238 for (; p < value.m_strVal.Size(); p++)
239 {
240 unsigned char ch = value.m_strVal.GetAt(p);
241
242 if (ch < '0' || ch > '9')
243 {
244 break;
245 }
246
247 v = (v * 10) + ch - '0';
248 }
249
250 if (fNegative)
251 {
252 m_nValue = -v;
253 }
254 else
255 {
256 m_nValue = v;
257 }
258 }
259 else
260 {
262 m_nValue = value.m_nIntVal;
263 }
264
265 MHLOG(MHLogDetail, QString("Update %1 := %2").arg(m_ObjectReference.Printable()).arg(m_nValue));
266}
267
268
269
271{
272 MHVariable::Initialise(p, engine);
273 // Original value should be a string.
274 MHParseNode *pInitial = p->GetNamedArg(C_ORIGINAL_VALUE);
275
276 if (pInitial)
277 {
279 }
280}
281
282void MHOctetStrVar::PrintMe(FILE *fd, int nTabs) const
283{
284 PrintTabs(fd, nTabs);
285 fprintf(fd, "{:OStringVar");
286 MHVariable::PrintMe(fd, nTabs + 1);
287 PrintTabs(fd, nTabs + 1);
288 fprintf(fd, ":OrigValue ");
289 m_originalValue.PrintMe(fd, nTabs + 1);
290 fprintf(fd, "\n");
291 PrintTabs(fd, nTabs);
292 fprintf(fd, "}\n");
293}
294
296{
297 if (m_fAvailable)
298 {
299 return;
300 }
301
304}
305
306// Implement the TestVariable action. Triggers a TestEvent event on the result.
307void MHOctetStrVar::TestVariable(int nOp, const MHUnion &parm, MHEngine *engine)
308{
310 int nRes = m_value.Compare(parm.m_strVal);
311 bool fRes = false;
312
313 switch (nOp)
314 {
315 case TC_Equal:
316 fRes = nRes == 0;
317 break;
318 case TC_NotEqual:
319 fRes = nRes != 0;
320 break;
321 /* case TC_Less: fRes = nRes < 0; break;
322 case TC_LessOrEqual: fRes = nRes <= 0; break;
323 case TC_Greater: fRes = nRes > 0; break;
324 case TC_GreaterOrEqual: fRes = nRes >= 0; break;*/
325 default:
326 MHERROR("Invalid comparison for string"); // Shouldn't ever happen
327 }
328
329 MHOctetString sample1(m_value, 0, 10);
330 MHOctetString sample2(parm.m_strVal, 0, 10);
331 MHLOG(MHLogDetail, QString("Comparison %1 %2 and %3 => %4")
332 .arg(TestToText(nOp), sample1.Printable(), sample2.Printable(),
333 fRes ? "true" : "false"));
334 engine->EventTriggered(this, EventTestEvent, fRes);
335}
336
337// Get the variable value. Used in IndirectRef.
339{
340 value.m_Type = MHUnion::U_String;
341 value.m_strVal.Copy(m_value);
342}
343
344// Implement the SetVariable action.
346{
347 if (value.m_Type == MHUnion::U_Int)
348 {
349 m_value.Copy(std::to_string(value.m_nIntVal).data());
350 }
351 else
352 {
354 m_value.Copy(value.m_strVal);
355 }
356
357 // Debug
358 MHOctetString sample(m_value, 0, 60);
359 MHLOG(MHLogDetail, QString("Update %1 := %2")
360 .arg(m_ObjectReference.Printable(), sample.Printable()));
361}
362
363
365{
366 MHVariable::Initialise(p, engine);
367 // Original value should be an object reference.
368 MHParseNode *pInitial = p->GetNamedArg(C_ORIGINAL_VALUE);
369
370 // and this should be a ObjRef node.
371 if (pInitial)
372 {
373 MHParseNode *pArg = pInitial->GetNamedArg(C_OBJECT_REFERENCE);
374
375 if (pArg)
376 {
377 m_originalValue.Initialise(pArg->GetArgN(0), engine);
378 }
379 }
380}
381
382void MHObjectRefVar::PrintMe(FILE *fd, int nTabs) const
383{
384 PrintTabs(fd, nTabs);
385 fprintf(fd, "{:ObjectRefVar");
386 MHVariable::PrintMe(fd, nTabs + 1);
387 PrintTabs(fd, nTabs + 1);
388 fprintf(fd, ":OrigValue ");
389 m_originalValue.PrintMe(fd, nTabs + 1);
390 fprintf(fd, "\n");
391 PrintTabs(fd, nTabs);
392 fprintf(fd, "}\n");
393}
394
396{
397 if (m_fAvailable)
398 {
399 return;
400 }
401
404}
405
406// Implement the TestVariable action. Triggers a TestEvent event on the result.
407void MHObjectRefVar::TestVariable(int nOp, const MHUnion &parm, MHEngine *engine)
408{
410 bool fRes = false;
411
412 switch (nOp)
413 {
414 case TC_Equal:
415 fRes = m_value.Equal(parm.m_objRefVal, engine);
416 break;
417 case TC_NotEqual:
418 fRes = ! m_value.Equal(parm.m_objRefVal, engine);
419 break;
420 default:
421 MHERROR("Invalid comparison for object ref");
422 }
423
424 engine->EventTriggered(this, EventTestEvent, fRes);
425}
426
427// Get the variable value. Used in IndirectRef.
429{
430 value.m_Type = MHUnion::U_ObjRef;
431 value.m_objRefVal.Copy(m_value);
432}
433
434// Implement the SetVariable action.
436{
438 m_value.Copy(value.m_objRefVal);
439 MHLOG(MHLogDetail, QString("Update %1 := %2")
441}
442
443
445{
446 MHVariable::Initialise(p, engine);
447 // Original value should be a content reference.
448 MHParseNode *pInitial = p->GetNamedArg(C_ORIGINAL_VALUE);
449
450 // and this should be a ContentRef node.
451 if (pInitial)
452 {
454
455 if (pArg)
456 {
457 m_originalValue.Initialise(pArg->GetArgN(0), engine);
458 }
459 }
460}
461
462void MHContentRefVar::PrintMe(FILE *fd, int nTabs) const
463{
464 PrintTabs(fd, nTabs);
465 fprintf(fd, "{:ContentRefVar");
466 MHVariable::PrintMe(fd, nTabs + 1);
467 PrintTabs(fd, nTabs + 1);
468 fprintf(fd, ":OrigValue ");
469 m_originalValue.PrintMe(fd, nTabs + 1);
470 fprintf(fd, "\n");
471 PrintTabs(fd, nTabs);
472 fprintf(fd, "}\n");
473}
474
476{
477 if (m_fAvailable)
478 {
479 return;
480 }
481
484}
485
486// Implement the TestVariable action. Triggers a TestEvent event on the result.
487void MHContentRefVar::TestVariable(int nOp, const MHUnion &parm, MHEngine *engine)
488{
490 bool fRes = false;
491
492 switch (nOp)
493 {
494 case TC_Equal:
495 fRes = m_value.Equal(parm.m_contentRefVal, engine);
496 break;
497 case TC_NotEqual:
498 fRes = !m_value.Equal(parm.m_contentRefVal, engine);
499 break;
500 default:
501 MHERROR("Invalid comparison for content ref");
502 }
503
504 engine->EventTriggered(this, EventTestEvent, fRes);
505}
506
507// Get the variable value. Used in IndirectRef.
509{
510 value.m_Type = MHUnion::U_ContentRef;
512}
513
514// Implement the SetVariable action.
516{
519 MHLOG(MHLogDetail, QString("Update %1 := %2")
521}
522
523// Actions
525{
526 MHElemAction::Initialise(p, engine); // Target
527 m_newValue.Initialise(p->GetArgN(1), engine); // Value to store
528}
529
531{
532 MHObjectRef target;
533 m_target.GetValue(target, engine); // Get the target
534 MHUnion newValue;
535 newValue.GetValueFrom(m_newValue, engine); // Get the actual value to set.
536 engine->FindObject(target)->SetVariableValue(newValue); // Set the value.
537}
538
539
541{
542 MHElemAction::Initialise(p, engine); // Target
543 m_nOperator = p->GetArgN(1)->GetIntValue(); // Test to perform
544 m_comparison.Initialise(p->GetArgN(2), engine); // Value to compare against
545}
546
547void MHTestVariable::PrintArgs(FILE *fd, int /*nTabs*/) const
548{
549 fprintf(fd, " %d ", m_nOperator);
550 m_comparison.PrintMe(fd, 0);
551}
552
554{
555 MHObjectRef target;
556 m_target.GetValue(target, engine); // Get the target
557 MHUnion testValue;
558 testValue.GetValueFrom(m_comparison, engine); // Get the actual value to compare.
559 engine->FindObject(target)->TestVariable(m_nOperator, testValue, engine); // Do the test.
560}
561
563{
564 MHElemAction::Initialise(p, engine); // Target
565 MHParseNode *pOp = p->GetArgN(1);
566 m_operand.Initialise(pOp, engine); // Operand to add, subtract etc.
567}
568
570{
571 MHUnion targetVal;
572 // Find the target and get its current value. The target can be an indirect reference.
573 MHObjectRef parm;
574 m_target.GetValue(parm, engine);
575 MHRoot *pTarget = engine->FindObject(parm);
576 pTarget->GetVariableValue(targetVal, engine);
577 targetVal.CheckType(MHUnion::U_Int);
578 // Get the value of the operand.
579 int nOperand = m_operand.GetValue(engine);
580 // Set the value of targetVal to the new value and store it.
581 targetVal.m_nIntVal = DoOp(targetVal.m_nIntVal, nOperand);
582 pTarget->SetVariableValue(targetVal);
583}
584
586{
587 MHElemAction::Initialise(p, engine); // Target
588 m_operand.Initialise(p->GetArgN(1), engine); // Operand to append
589}
590
592{
593 MHUnion targetVal;
594 // Find the target and get its current value. The target can be an indirect reference.
595 MHObjectRef parm;
596 m_target.GetValue(parm, engine);
597 MHRoot *pTarget = engine->FindObject(parm);
598 pTarget->GetVariableValue(targetVal, engine);
599 targetVal.CheckType(MHUnion::U_String);
600 // Get the string to append.
601 MHOctetString toAppend;
602 m_operand.GetValue(toAppend, engine);
603 targetVal.m_strVal.Append(toAppend); // Add it on the end
604 pTarget->SetVariableValue(targetVal); // Set the target to the result.
605}
@ C_OBJECT_REFERENCE
Definition: ASN1Codes.h:104
@ C_ORIGINAL_VALUE
Definition: ASN1Codes.h:103
@ C_CONTENT_REFERENCE
Definition: ASN1Codes.h:105
#define MHERROR(__text)
Definition: Logging.h:42
#define MHLOG(__level, __text)
Definition: Logging.h:36
void PrintTabs(FILE *fd, int n)
Definition: ParseNode.cpp:34
@ EventTestEvent
Definition: Root.h:38
@ EventIsRunning
Definition: Root.h:34
static const char * TestToText(int tc)
Definition: Variables.cpp:35
TestCodes
Definition: Variables.cpp:33
@ TC_Greater
Definition: Variables.cpp:33
@ TC_GreaterOrEqual
Definition: Variables.cpp:33
@ TC_NotEqual
Definition: Variables.cpp:33
@ TC_Equal
Definition: Variables.cpp:33
@ TC_Less
Definition: Variables.cpp:33
@ TC_LessOrEqual
Definition: Variables.cpp:33
void Perform(MHEngine *engine) override
Definition: Variables.cpp:591
MHGenericOctetString m_operand
Definition: Variables.h:244
void Initialise(MHParseNode *p, MHEngine *engine) override
Definition: Variables.cpp:585
void TestVariable(int nOp, const MHUnion &parm, MHEngine *engine) override
Definition: Variables.cpp:104
void PrintMe(FILE *fd, int nTabs) const override
Definition: Variables.cpp:81
void Initialise(MHParseNode *p, MHEngine *engine) override
Definition: Variables.cpp:69
void SetVariableValue(const MHUnion &value) override
Definition: Variables.cpp:137
void Preparation(MHEngine *engine) override
Definition: Variables.cpp:92
bool m_fValue
Definition: Variables.h:61
bool m_fOriginalValue
Definition: Variables.h:60
void GetVariableValue(MHUnion &value, MHEngine *engine) override
Definition: Variables.cpp:130
void PrintMe(FILE *fd, int nTabs) const override
Definition: Variables.cpp:462
void Initialise(MHParseNode *p, MHEngine *engine) override
Definition: Variables.cpp:444
void SetVariableValue(const MHUnion &value) override
Definition: Variables.cpp:515
void TestVariable(int nOp, const MHUnion &parm, MHEngine *engine) override
Definition: Variables.cpp:487
void Preparation(MHEngine *engine) override
Definition: Variables.cpp:475
void GetVariableValue(MHUnion &value, MHEngine *engine) override
Definition: Variables.cpp:508
MHContentRef m_originalValue
Definition: Variables.h:146
MHContentRef m_value
Definition: Variables.h:146
void Initialise(MHParseNode *p, MHEngine *engine)
void Copy(const MHContentRef &cr)
Definition: BaseClasses.h:183
void PrintMe(FILE *fd, int nTabs) const
Definition: BaseClasses.h:182
bool Equal(const MHContentRef &cr, MHEngine *engine) const
QString Printable() const
Definition: BaseClasses.h:187
virtual void Initialise(MHParseNode *p, MHEngine *engine)
Definition: BaseActions.cpp:31
MHGenericObjectRef m_target
Definition: BaseActions.h:46
MHRoot * FindObject(const MHObjectRef &oRef, bool failOnNotFound=true)
Definition: Engine.cpp:574
void EventTriggered(MHRoot *pSource, enum EventType ev)
Definition: Engine.h:94
void Initialise(MHParseNode *p, MHEngine *engine)
int GetValue(MHEngine *engine) const
void GetValue(MHObjectRef &ref, MHEngine *engine) const
void Initialise(MHParseNode *p, MHEngine *engine)
void GetValue(MHOctetString &str, MHEngine *engine) const
void Preparation(MHEngine *engine) override
void Initialise(MHParseNode *p, MHEngine *engine) override
Definition: Ingredients.cpp:50
void PrintMe(FILE *fd, int nTabs) const override
MHGenericInteger m_operand
Definition: Variables.h:189
virtual int DoOp(int arg1, int arg2)=0
void Initialise(MHParseNode *p, MHEngine *engine) override
Definition: Variables.cpp:562
void Perform(MHEngine *engine) override
Definition: Variables.cpp:569
void GetVariableValue(MHUnion &value, MHEngine *engine) override
Definition: Variables.cpp:216
void TestVariable(int nOp, const MHUnion &parmm, MHEngine *engine) override
Definition: Variables.cpp:181
void Preparation(MHEngine *engine) override
Definition: Variables.cpp:169
void PrintMe(FILE *fd, int nTabs) const override
Definition: Variables.cpp:158
int m_nValue
Definition: Variables.h:83
int m_nOriginalValue
Definition: Variables.h:82
void SetVariableValue(const MHUnion &value) override
Definition: Variables.cpp:223
void Initialise(MHParseNode *p, MHEngine *engine) override
Definition: Variables.cpp:146
void Preparation(MHEngine *engine) override
Definition: Variables.cpp:395
void SetVariableValue(const MHUnion &value) override
Definition: Variables.cpp:435
void GetVariableValue(MHUnion &value, MHEngine *engine) override
Definition: Variables.cpp:428
MHObjectRef m_value
Definition: Variables.h:125
MHObjectRef m_originalValue
Definition: Variables.h:125
void PrintMe(FILE *fd, int nTabs) const override
Definition: Variables.cpp:382
void TestVariable(int nOp, const MHUnion &parm, MHEngine *engine) override
Definition: Variables.cpp:407
void Initialise(MHParseNode *p, MHEngine *engine) override
Definition: Variables.cpp:364
bool Equal(const MHObjectRef &objr, MHEngine *engine) const
QString Printable() const
void PrintMe(FILE *fd, int nTabs) const
void Initialise(MHParseNode *p, MHEngine *engine)
void Copy(const MHObjectRef &objr)
void GetVariableValue(MHUnion &value, MHEngine *engine) override
Definition: Variables.cpp:338
void Initialise(MHParseNode *p, MHEngine *engine) override
Definition: Variables.cpp:270
void PrintMe(FILE *fd, int nTabs) const override
Definition: Variables.cpp:282
MHOctetString m_value
Definition: Variables.h:104
void TestVariable(int nOp, const MHUnion &parm, MHEngine *engine) override
Definition: Variables.cpp:307
void Preparation(MHEngine *engine) override
Definition: Variables.cpp:295
void SetVariableValue(const MHUnion &value) override
Definition: Variables.cpp:345
MHOctetString m_originalValue
Definition: Variables.h:104
void Copy(const MHOctetString &str)
int Size() const
Definition: BaseClasses.h:120
unsigned char GetAt(int i) const
Definition: BaseClasses.h:124
void Append(const MHOctetString &str)
void PrintMe(FILE *fd, int nTabs) const
QString Printable() const
Definition: BaseClasses.h:128
int Compare(const MHOctetString &str) const
void Initialise(MHParseNode *p, MHEngine *engine)
void PrintMe(FILE *fd, int nTabs) const
MHParseNode * GetArgN(int n)
Definition: ParseNode.cpp:78
void GetStringValue(MHOctetString &str)
Definition: ParseNode.cpp:203
bool GetBoolValue()
Definition: ParseNode.cpp:192
MHParseNode * GetNamedArg(int nTag)
Definition: ParseNode.cpp:110
int GetIntValue()
Definition: ParseNode.cpp:170
Definition: Root.h:45
virtual void Activation(MHEngine *engine)
Definition: Root.cpp:70
MHObjectRef m_ObjectReference
Definition: Root.h:248
bool m_fRunning
Definition: Root.h:253
virtual void TestVariable(int, const MHUnion &, MHEngine *)
Definition: Root.h:105
virtual void GetVariableValue(MHUnion &, MHEngine *)
Definition: Root.h:107
bool m_fAvailable
Definition: Root.h:252
virtual void SetVariableValue(const MHUnion &)
Definition: Root.h:109
void Perform(MHEngine *engine) override
Definition: Variables.cpp:530
MHParameter m_newValue
Definition: Variables.h:160
void Initialise(MHParseNode *p, MHEngine *engine) override
Definition: Variables.cpp:524
void Initialise(MHParseNode *p, MHEngine *engine) override
Definition: Variables.cpp:540
MHParameter m_comparison
Definition: Variables.h:173
void Perform(MHEngine *engine) override
Definition: Variables.cpp:553
void PrintArgs(FILE *fd, int nTabs) const override
Definition: Variables.cpp:547
bool m_fBoolVal
Definition: BaseClasses.h:303
int m_nIntVal
Definition: BaseClasses.h:302
MHObjectRef m_objRefVal
Definition: BaseClasses.h:305
MHContentRef m_contentRefVal
Definition: BaseClasses.h:306
void GetValueFrom(const MHParameter &value, MHEngine *engine)
void CheckType(enum UnionTypes t) const
@ U_ContentRef
Definition: BaseClasses.h:298
MHOctetString m_strVal
Definition: BaseClasses.h:304
void Activation(MHEngine *engine) override
Definition: Variables.cpp:57
@ MHLogDetail
Definition: freemheg.h:83
int FILE
Definition: mythburn.py:138