195 def merge(self,mobj,override=False):
196 "Merge the given StatusObj into the list, ANDing (default) or override"
197 if (mobj.start>=mobj.stop):
198 return
199
200 ix=0
201 oldstop=0
202 while (ix<len(self._seq)):
203
204
205 if (mobj.start<self._seq[ix].start and mobj.stop>oldstop):
206
207 nstart=
max(oldstop,mobj.start)
208 nstop=
min(self._seq[ix].start,mobj.stop)
209
210 if (nstop>nstart):
211
212 self._seq.insert(ix,StatusObj(nstart,nstop,mobj.code,mobj.deadfrac,mobj.thrust,mobj.nconfig,mobj.nworking,mobj.comment))
213 ix+=1
214
215 if (mobj.start<self._seq[ix].stop and mobj.stop>self._seq[ix].start):
216
217
218
219 if (override or
220 (mobj.code<=self._seq[ix].code and mobj.code!=0) or
221 (self._seq[ix].code==0)):
222
223 ecode=self._seq[ix].code
224 edeadfrac=self._seq[ix].deadfrac
225 ethrust=self._seq[ix].thrust
226 enconfig=self._seq[ix].nconfig
227 enworking=self._seq[ix].nworking
228 ecomment=self._seq[ix].comment
229 estart=self._seq[ix].start
230 estop=self._seq[ix].stop
231
232 iy=ix
233 if (mobj.start>estart):
234
235 self._seq.insert(ix,StatusObj(estart,mobj.start,ecode,edeadfrac,ethrust,enconfig,enworking,ecomment))
236 ix+=1
237 iy+=1
238 if (mobj.stop<estop):
239
240 self._seq.insert(ix+1,StatusObj(mobj.stop,estop,ecode,edeadfrac,ethrust,enconfig,enworking,ecomment))
241 ix+=1
242
243 self._seq[iy]=StatusObj(
max(mobj.start,estart),
min(mobj.stop,estop),mobj.code,mobj.deadfrac,mobj.thrust,mobj.nconfig,mobj.nworking,mobj.comment)
244
245 oldstop=self._seq[ix].stop
246 ix+=1
247
248
249 if (len(self._seq)>0):
250 oldstop=self._seq[-1].stop
251 if (mobj.stop>oldstop):
252 nstart=
max(oldstop,mobj.start)
253 self._seq+=[StatusObj(nstart,mobj.stop,mobj.code,mobj.deadfrac,mobj.thrust,mobj.nconfig,mobj.nworking,mobj.comment)]
254