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 
35 static 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";
49  case TC_GreaterOrEqual:
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 {
71  MHVariable::Initialise(p, engine);
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 
81 void 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 
100  MHVariable::Preparation(engine);
101 }
102 
103 // Implement the TestVariable action. Triggers a TestEvent event on the result.
104 void 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 {
139  value.CheckType(MHUnion::U_Bool);
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 
158 void 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 
177  MHVariable::Preparation(engine);
178 }
179 
180 // Implement the TestVariable action. Triggers a TestEvent event on the result.
181 void 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;
203  case TC_GreaterOrEqual:
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  {
261  value.CheckType(MHUnion::U_Int);
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  {
278  pInitial->GetArgN(0)->GetStringValue(m_originalValue);
279  }
280 }
281 
282 void 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 
303  MHVariable::Preparation(engine);
304 }
305 
306 // Implement the TestVariable action. Triggers a TestEvent event on the result.
307 void 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 
382 void 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 
403  MHVariable::Preparation(engine);
404 }
405 
406 // Implement the TestVariable action. Triggers a TestEvent event on the result.
407 void 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  {
453  MHParseNode *pArg = pInitial->GetNamedArg(C_CONTENT_REFERENCE);
454 
455  if (pArg)
456  {
457  m_originalValue.Initialise(pArg->GetArgN(0), engine);
458  }
459  }
460 }
461 
462 void 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 
483  MHVariable::Preparation(engine);
484 }
485 
486 // Implement the TestVariable action. Triggers a TestEvent event on the result.
487 void 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 
547 void 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 }
MHRoot::Activation
virtual void Activation(MHEngine *engine)
Definition: Root.cpp:70
MHContentRefVar::Preparation
void Preparation(MHEngine *engine) override
Definition: Variables.cpp:475
TestToText
static const char * TestToText(int tc)
Definition: Variables.cpp:35
TestCodes
TestCodes
Definition: Variables.cpp:33
MHObjectRef
Definition: BaseClasses.h:153
TC_GreaterOrEqual
@ TC_GreaterOrEqual
Definition: Variables.cpp:33
MHObjectRef::Copy
void Copy(const MHObjectRef &objr)
Definition: BaseClasses.cpp:308
MHSetVariable::m_newValue
MHParameter m_newValue
Definition: Variables.h:160
MHTestVariable::m_comparison
MHParameter m_comparison
Definition: Variables.h:173
MHVariable::Activation
void Activation(MHEngine *engine) override
Definition: Variables.cpp:57
MHObjectRef::Initialise
void Initialise(MHParseNode *p, MHEngine *engine)
Definition: BaseClasses.cpp:263
TC_LessOrEqual
@ TC_LessOrEqual
Definition: Variables.cpp:33
MHOctetStrVar::GetVariableValue
void GetVariableValue(MHUnion &value, MHEngine *engine) override
Definition: Variables.cpp:338
MHIngredient::Preparation
void Preparation(MHEngine *engine) override
Definition: Ingredients.cpp:160
MHSetVariable::Perform
void Perform(MHEngine *engine) override
Definition: Variables.cpp:530
MHRoot::m_fAvailable
bool m_fAvailable
Definition: Root.h:252
MHSetVariable::Initialise
void Initialise(MHParseNode *p, MHEngine *engine) override
Definition: Variables.cpp:524
MHUnion::CheckType
void CheckType(enum UnionTypes t) const
Definition: BaseClasses.cpp:666
MHObjectRefVar::m_value
MHObjectRef m_value
Definition: Variables.h:125
MHParameter::PrintMe
void PrintMe(FILE *fd, int nTabs) const
Definition: BaseClasses.cpp:719
ASN1Codes.h
MHEngine
Definition: Engine.h:72
MHParseNode::GetIntValue
int GetIntValue()
Definition: ParseNode.cpp:170
MHBooleanVar::TestVariable
void TestVariable(int nOp, const MHUnion &parm, MHEngine *engine) override
Definition: Variables.cpp:104
MHIngredient::Initialise
void Initialise(MHParseNode *p, MHEngine *engine) override
Definition: Ingredients.cpp:50
MHUnion::m_nIntVal
int m_nIntVal
Definition: BaseClasses.h:302
MHUnion::U_String
@ U_String
Definition: BaseClasses.h:298
MHOctetString::GetAt
unsigned char GetAt(int i) const
Definition: BaseClasses.h:124
MHBooleanVar::GetVariableValue
void GetVariableValue(MHUnion &value, MHEngine *engine) override
Definition: Variables.cpp:130
MHBooleanVar::Initialise
void Initialise(MHParseNode *p, MHEngine *engine) override
Definition: Variables.cpp:69
MHGenericInteger::Initialise
void Initialise(MHParseNode *p, MHEngine *engine)
Definition: BaseClasses.cpp:382
EventTestEvent
@ EventTestEvent
Definition: Root.h:38
MHIntegerAction::Initialise
void Initialise(MHParseNode *p, MHEngine *engine) override
Definition: Variables.cpp:562
C_OBJECT_REFERENCE
@ C_OBJECT_REFERENCE
Definition: ASN1Codes.h:104
MHOctetString::Compare
int Compare(const MHOctetString &str) const
Definition: BaseClasses.cpp:165
MHRoot::SetVariableValue
virtual void SetVariableValue(const MHUnion &)
Definition: Root.h:109
MHElemAction::Initialise
virtual void Initialise(MHParseNode *p, MHEngine *engine)
Definition: BaseActions.cpp:31
MHOctetString
Definition: BaseClasses.h:107
MHRoot::TestVariable
virtual void TestVariable(int, const MHUnion &, MHEngine *)
Definition: Root.h:105
MHObjectRefVar::PrintMe
void PrintMe(FILE *fd, int nTabs) const override
Definition: Variables.cpp:382
mythburn.FILE
int FILE
Definition: mythburn.py:139
MHOctetString::PrintMe
void PrintMe(FILE *fd, int nTabs) const
Definition: BaseClasses.cpp:142
TC_Greater
@ TC_Greater
Definition: Variables.cpp:33
TC_Less
@ TC_Less
Definition: Variables.cpp:33
MHUnion::m_fBoolVal
bool m_fBoolVal
Definition: BaseClasses.h:303
MHBooleanVar::m_fValue
bool m_fValue
Definition: Variables.h:61
MHObjectRef::Equal
bool Equal(const MHObjectRef &objr, MHEngine *engine) const
Definition: BaseClasses.cpp:316
MHRoot::m_fRunning
bool m_fRunning
Definition: Root.h:253
MHUnion::U_Int
@ U_Int
Definition: BaseClasses.h:298
MHRoot::m_ObjectReference
MHObjectRef m_ObjectReference
Definition: Root.h:248
MHContentRef::Initialise
void Initialise(MHParseNode *p, MHEngine *engine)
Definition: BaseClasses.cpp:778
MHIntegerVar::Initialise
void Initialise(MHParseNode *p, MHEngine *engine) override
Definition: Variables.cpp:146
MHAppend::Initialise
void Initialise(MHParseNode *p, MHEngine *engine) override
Definition: Variables.cpp:585
MHIntegerVar::m_nValue
int m_nValue
Definition: Variables.h:83
MHEngine::EventTriggered
void EventTriggered(MHRoot *pSource, enum EventType ev)
Definition: Engine.h:94
MHTestVariable::Initialise
void Initialise(MHParseNode *p, MHEngine *engine) override
Definition: Variables.cpp:540
MHUnion
Definition: BaseClasses.h:283
MHBooleanVar::m_fOriginalValue
bool m_fOriginalValue
Definition: Variables.h:60
hardwareprofile.config.p
p
Definition: config.py:33
Variables.h
MHAppend::m_operand
MHGenericOctetString m_operand
Definition: Variables.h:244
ParseNode.h
MHOctetStrVar::m_value
MHOctetString m_value
Definition: Variables.h:104
MHContentRefVar::SetVariableValue
void SetVariableValue(const MHUnion &value) override
Definition: Variables.cpp:515
MHContentRefVar::Initialise
void Initialise(MHParseNode *p, MHEngine *engine) override
Definition: Variables.cpp:444
MHOctetStrVar::Initialise
void Initialise(MHParseNode *p, MHEngine *engine) override
Definition: Variables.cpp:270
MHUnion::m_objRefVal
MHObjectRef m_objRefVal
Definition: BaseClasses.h:305
MHBooleanVar::SetVariableValue
void SetVariableValue(const MHUnion &value) override
Definition: Variables.cpp:137
PrintTabs
void PrintTabs(FILE *fd, int n)
Definition: ParseNode.cpp:34
MHGenericOctetString::GetValue
void GetValue(MHOctetString &str, MHEngine *engine) const
Definition: BaseClasses.cpp:490
MHParseNode::GetArgN
MHParseNode * GetArgN(int n)
Definition: ParseNode.cpp:78
MHLogDetail
@ MHLogDetail
Definition: freemheg.h:77
MHOctetStrVar::m_originalValue
MHOctetString m_originalValue
Definition: Variables.h:104
MHObjectRefVar::Initialise
void Initialise(MHParseNode *p, MHEngine *engine) override
Definition: Variables.cpp:364
MHIngredient::PrintMe
void PrintMe(FILE *fd, int nTabs) const override
Definition: Ingredients.cpp:108
EventIsRunning
@ EventIsRunning
Definition: Root.h:34
MHTestVariable::m_nOperator
int m_nOperator
Definition: Variables.h:172
C_CONTENT_REFERENCE
@ C_CONTENT_REFERENCE
Definition: ASN1Codes.h:105
MHObjectRefVar::Preparation
void Preparation(MHEngine *engine) override
Definition: Variables.cpp:395
MHEngine::FindObject
MHRoot * FindObject(const MHObjectRef &oRef, bool failOnNotFound=true)
Definition: Engine.cpp:573
MHContentRefVar::PrintMe
void PrintMe(FILE *fd, int nTabs) const override
Definition: Variables.cpp:462
MHUnion::U_ContentRef
@ U_ContentRef
Definition: BaseClasses.h:298
MHIntegerAction::Perform
void Perform(MHEngine *engine) override
Definition: Variables.cpp:569
MHLOG
#define MHLOG(__level, __text)
Definition: Logging.h:36
MHContentRef::Printable
QString Printable() const
Definition: BaseClasses.h:187
MHObjectRefVar::m_originalValue
MHObjectRef m_originalValue
Definition: Variables.h:125
MHContentRefVar::m_originalValue
MHContentRef m_originalValue
Definition: Variables.h:146
Engine.h
Ingredients.h
MHIntegerAction::m_operand
MHGenericInteger m_operand
Definition: Variables.h:189
MHIntegerVar::m_nOriginalValue
int m_nOriginalValue
Definition: Variables.h:82
MHIntegerAction::DoOp
virtual int DoOp(int arg1, int arg2)=0
MHUnion::GetValueFrom
void GetValueFrom(const MHParameter &value, MHEngine *engine)
Definition: BaseClasses.cpp:615
MHGenericOctetString::Initialise
void Initialise(MHParseNode *p, MHEngine *engine)
Definition: BaseClasses.cpp:461
MHUnion::m_contentRefVal
MHContentRef m_contentRefVal
Definition: BaseClasses.h:306
MHOctetString::Printable
QString Printable() const
Definition: BaseClasses.h:128
MHParseNode::GetNamedArg
MHParseNode * GetNamedArg(int nTag)
Definition: ParseNode.cpp:110
MHUnion::U_ObjRef
@ U_ObjRef
Definition: BaseClasses.h:298
MHParseNode::GetBoolValue
bool GetBoolValue()
Definition: ParseNode.cpp:192
Root.h
MHContentRefVar::GetVariableValue
void GetVariableValue(MHUnion &value, MHEngine *engine) override
Definition: Variables.cpp:508
MHOctetString::Size
int Size() const
Definition: BaseClasses.h:120
MHContentRefVar::TestVariable
void TestVariable(int nOp, const MHUnion &parm, MHEngine *engine) override
Definition: Variables.cpp:487
MHOctetStrVar::PrintMe
void PrintMe(FILE *fd, int nTabs) const override
Definition: Variables.cpp:282
MHContentRefVar::m_value
MHContentRef m_value
Definition: Variables.h:146
MHParameter::Initialise
void Initialise(MHParseNode *p, MHEngine *engine)
Definition: BaseClasses.cpp:690
BaseClasses.h
MHTestVariable::PrintArgs
void PrintArgs(FILE *fd, int nTabs) const override
Definition: Variables.cpp:547
MHIntegerVar::PrintMe
void PrintMe(FILE *fd, int nTabs) const override
Definition: Variables.cpp:158
MHIntegerVar::TestVariable
void TestVariable(int nOp, const MHUnion &parmm, MHEngine *engine) override
Definition: Variables.cpp:181
TC_NotEqual
@ TC_NotEqual
Definition: Variables.cpp:33
MHParseNode
Definition: ParseNode.h:38
MHGenericInteger::GetValue
int GetValue(MHEngine *engine) const
Definition: BaseClasses.cpp:411
MHUnion::U_Bool
@ U_Bool
Definition: BaseClasses.h:298
MHElemAction::m_target
MHGenericObjectRef m_target
Definition: BaseActions.h:46
MHParseNode::GetStringValue
void GetStringValue(MHOctetString &str)
Definition: ParseNode.cpp:203
MHBooleanVar::PrintMe
void PrintMe(FILE *fd, int nTabs) const override
Definition: Variables.cpp:81
MHERROR
#define MHERROR(__text)
Definition: Logging.h:42
MHAppend::Perform
void Perform(MHEngine *engine) override
Definition: Variables.cpp:591
Logging.h
MHOctetStrVar::Preparation
void Preparation(MHEngine *engine) override
Definition: Variables.cpp:295
MHGenericObjectRef::GetValue
void GetValue(MHObjectRef &ref, MHEngine *engine) const
Definition: BaseClasses.cpp:547
MHContentRef::Equal
bool Equal(const MHContentRef &cr, MHEngine *engine) const
Definition: BaseClasses.cpp:321
MHObjectRefVar::TestVariable
void TestVariable(int nOp, const MHUnion &parm, MHEngine *engine) override
Definition: Variables.cpp:407
MHUnion::m_strVal
MHOctetString m_strVal
Definition: BaseClasses.h:304
MHContentRef::PrintMe
void PrintMe(FILE *fd, int nTabs) const
Definition: BaseClasses.h:182
MHObjectRefVar::GetVariableValue
void GetVariableValue(MHUnion &value, MHEngine *engine) override
Definition: Variables.cpp:428
MHContentRef::Copy
void Copy(const MHContentRef &cr)
Definition: BaseClasses.h:183
MHOctetString::Append
void Append(const MHOctetString &str)
Definition: BaseClasses.cpp:198
MHIntegerVar::GetVariableValue
void GetVariableValue(MHUnion &value, MHEngine *engine) override
Definition: Variables.cpp:216
TC_Equal
@ TC_Equal
Definition: Variables.cpp:33
MHObjectRef::PrintMe
void PrintMe(FILE *fd, int nTabs) const
Definition: BaseClasses.cpp:284
C_ORIGINAL_VALUE
@ C_ORIGINAL_VALUE
Definition: ASN1Codes.h:103
MHIntegerVar::SetVariableValue
void SetVariableValue(const MHUnion &value) override
Definition: Variables.cpp:223
MHOctetStrVar::TestVariable
void TestVariable(int nOp, const MHUnion &parm, MHEngine *engine) override
Definition: Variables.cpp:307
MHTestVariable::Perform
void Perform(MHEngine *engine) override
Definition: Variables.cpp:553
MHOctetStrVar::SetVariableValue
void SetVariableValue(const MHUnion &value) override
Definition: Variables.cpp:345
MHObjectRefVar::SetVariableValue
void SetVariableValue(const MHUnion &value) override
Definition: Variables.cpp:435
MHIntegerVar::Preparation
void Preparation(MHEngine *engine) override
Definition: Variables.cpp:169
MHOctetString::Copy
void Copy(const MHOctetString &str)
Definition: BaseClasses.cpp:119
MHRoot
Definition: Root.h:44
MHRoot::GetVariableValue
virtual void GetVariableValue(MHUnion &, MHEngine *)
Definition: Root.h:107
MHBooleanVar::Preparation
void Preparation(MHEngine *engine) override
Definition: Variables.cpp:92
MHObjectRef::Printable
QString Printable() const
Definition: BaseClasses.cpp:298