36 mTimeConstraint.mInitialValue=
"";
37 mTimeConstraint.mStartEvents.
Clear();
38 mTimeConstraint.mStopEvents.Clear();
39 mTimeConstraint.mResetEvents.Clear();
45 FD_DCG(
"AttributeCodeGeneratorEvent(" <<
this <<
"):DoAssign(): assignment from " << &rSrc);
56 (void) rLabel; (void) pContext;
57 FD_DCG(
"AttributeCodeGeneratorEvent::DoWrite()");
58 std::vector<InputTrigger>::const_iterator tit;
59 std::vector<OutputAction>::const_iterator ait;
64 rTw.WriteBegin(
"Input");
65 token.SetEmpty(
"Priority");
68 rTw.WriteBegin(
"Triggers");
70 rTw.WriteString(tit->mAddress);
71 if(tit->mPos && (!tit->mNeg))
72 rTw.WriteOption(
"PosEdge");
73 if((!tit->mPos) && tit->mNeg)
74 rTw.WriteOption(
"NegEdge");
75 if((tit->mPos) && tit->mNeg)
76 rTw.WriteOption(
"AnyEdge");
78 rTw.WriteOption(
"Static");
80 rTw.WriteOption(
"Value");
82 rTw.WriteEnd(
"Triggers");
83 rTw.WriteEnd(
"Input");
87 rTw.WriteBegin(
"Output");
88 token.SetEmpty(
"Priority");
91 rTw.WriteBegin(
"Actions");
93 rTw.WriteString(ait->mAddress);
94 if(ait->mSet) rTw.WriteOption(
"Set");
95 if(ait->mClr) rTw.WriteOption(
"Clr");
96 if(ait->mExe) rTw.WriteOption(
"Exe");
98 rTw.WriteEnd(
"Actions");
99 rTw.WriteEnd(
"Output");
103 rTw.WriteBegin(
"Internal");
104 token.SetEmpty(
"Priority");
105 token.InsAttributeFloat(
"val",
mPriority);
108 token.SetBegin(
"Timer");
114 rTw.WriteEnd(
"Timer");
116 rTw.WriteEnd(
"Internal");
127 (void) rLabel; (void) pContext;
130 FD_DCG(
"AttributeCodeGeneratorEvent::DoRead()");
137 if(token.Type()==Token::Begin)
138 if(token.StringValue()==
"Output") {
143 if(token.Type()==Token::Begin)
144 if(token.StringValue()==
"Input") {
149 if(token.Type()==Token::Begin)
150 if(token.StringValue()==
"Internal") {
155 if(label==
"")
return;
157 while(!rTr.Eos(label)) {
160 if(token.Type()==Token::Begin)
161 if(token.StringValue()==
"Priority") {
162 rTr.ReadBegin(
"Priority");
163 mPriority=(int) token.AttributeFloatValue(
"val");
164 rTr.ReadEnd(
"Priority");
169 if(token.Type()==Token::Begin)
170 if(token.StringValue()==
"Actions") {
171 rTr.ReadBegin(
"Actions");
172 while(!rTr.Eos(
"Actions")) {
181 std::string value=rTr.ReadOption();
184 }
else if(value ==
"Clr") {
186 }
else if(value ==
"Execute") {
196 rTr.ReadEnd(
"Actions");
201 if(token.Type()==Token::Begin)
202 if(token.StringValue()==
"Triggers") {
203 rTr.ReadBegin(
"Triggers");
204 while(!rTr.Eos(
"Triggers")) {
210 std::string value=rTr.ReadOption();
211 if (value ==
"PosEdge") {
215 }
else if (value ==
"NegEdge") {
219 }
else if (value ==
"AnyEdge") {
223 }
else if (value ==
"Value") {
235 if(token.StringValue()==
"Static") {
244 rTr.ReadEnd(
"Triggers");
248 if(
mType==ETInternal)
249 if(token.Type()==Token::Begin)
250 if(token.StringValue()==
"Timer") {
251 rTr.ReadBegin(
"Timer");
255 while(!rTr.Eos(
"Timer")) {
257 if(token.Type()==Token::Begin)
258 if(token.StringValue()==
"StartEvents") {
262 if(token.Type()==Token::Begin)
263 if(token.StringValue()==
"StopEvents") {
267 if(token.Type()==Token::Begin)
268 if(token.StringValue()==
"ResetEvents") {
276 rTr.ReadEnd(
"Timer");
285 std::stringstream errstr;
286 errstr <<
"invalid code generator event property" << rTr.FileLine();
287 throw Exception(
"AttributeCodeGeneratorEvent::Read", errstr.str(), 52);
292 AutoRegisterType<cgEventSet> gRtiRegisterCodeGeneratorAlphabet(
"CodeGeneratorAlphabet");
293 AutoRegisterXElementTag<cgEventSet> gRtiRegisterCodeGeneratorAlphabetElementTagAlphabet(
"CodeGeneratorAlphabet",
"Event");