-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathQPSignalItem.cpp
109 lines (84 loc) · 2.9 KB
/
QPSignalItem.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
/*------------------------------------------------------------------------------+
| |
| QP - QSDL Parser |
| |
| (C) 1994-98 Marc Diefenbruch |
| University of Essen, Germany |
| |
+---------------+-------------------+---------------+-------------------+-------+
| Module | File | Created | Project | |
+---------------+-------------------+---------------+-------------------+-------+
| QPSignalItem | QPSignalItem.cpp| 9. Aug 1994 | QP | |
+------------------------------------------------------------------------------*/
/* Lineal
000000000011111111112222222222333333333344444444445555555555666666666677777777778
012345678901234567890123456789012345678901234567890123456789012345678901234567890
*/
#ifdef USE_PRAGMA
#pragma interface
#endif
#include <stdio.h>
#include <DS/DSObject.h>
#include <DS/DSSignal.h>
#include <DS/DSTimer.h>
#include <DS/DSSignalList.h>
#include <DS/DSSignalItemList.h>
#ifdef DMALLOC
#include <dmalloc.h>
#endif
extern DSObjectRefStack p_stack;
extern "C" {
#include "QPError.h"
void signallist_item_1(const char *symbol)
{
DSSignalItemList *p_signalitemlist;
DSSignalRef p_signal_ref;
DSTimerRef p_timer_ref;
char str[120];
assert(symbol);
#ifdef DEBUG
qpDebugLog << "signallist_item_1: " << symbol;
qpDebugLog << " (signal name)" << endl;
#endif
assert(p_stack.Top());
assert((p_stack.Top())->GetType() == DS_SIGNALITEMLIST);
p_signalitemlist = (DSSignalItemList *)p_stack.Top();
p_signal_ref = p_signalitemlist->GetSignalRefByName(symbol);
if (p_signal_ref == NULL)
{
p_timer_ref = p_signalitemlist->GetTimerRefByName(symbol);
if (p_timer_ref == NULL)
{
sprintf(str, "Undefined signallist item '%s'.\n", symbol);
yyerror(str);
}
else
{
p_signalitemlist->InsertTimerRef(p_timer_ref);
}
}
else
{
p_signalitemlist->InsertSignalRef(p_signal_ref);
}
}
void signallist_item_2(const char *symbol)
{
DSSignalslistRef p_signallist_ref;
DSSignalItemList *p_signalitemlist;
assert(symbol);
#ifdef DEBUG
qpDebugLog << "signallist_item_2: " << symbol;
qpDebugLog << " (signallist name)" << endl;
#endif
assert(p_stack.Top());
assert((p_stack.Top())->GetType() == DS_SIGNALITEMLIST);
p_signalitemlist = (DSSignalItemList *)p_stack.Top();
p_signallist_ref = p_signalitemlist->GetSignallistRefByName(symbol);
if (p_signallist_ref == NULL)
{
return;
}
p_signalitemlist->InsertSignallistRef(p_signallist_ref);
}
} // extern "C"