|
|
|
@ -23,30 +23,30 @@ typedef std::vector<byte> Buffer;
|
|
|
|
|
|
|
|
|
|
static void WriteVLI(Buffer &b, uint i)
|
|
|
|
|
{
|
|
|
|
|
uint lsmask = 0x7F;
|
|
|
|
|
uint msmask = ~0x7F;
|
|
|
|
|
while(i & msmask) {
|
|
|
|
|
byte part = (i & lsmask) | 0x80;
|
|
|
|
|
b.push_back(part);
|
|
|
|
|
i >>= 7;
|
|
|
|
|
}
|
|
|
|
|
b.push_back((byte) i);
|
|
|
|
|
uint lsmask = 0x7F;
|
|
|
|
|
uint msmask = ~0x7F;
|
|
|
|
|
while(i & msmask) {
|
|
|
|
|
byte part = (i & lsmask) | 0x80;
|
|
|
|
|
b.push_back(part);
|
|
|
|
|
i >>= 7;
|
|
|
|
|
}
|
|
|
|
|
b.push_back((byte) i);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static uint ReadVLI()
|
|
|
|
|
{
|
|
|
|
|
uint shift = 0;
|
|
|
|
|
uint val = 0;
|
|
|
|
|
byte b;
|
|
|
|
|
|
|
|
|
|
b = SlReadByte();
|
|
|
|
|
while(b & 0x80) {
|
|
|
|
|
val |= uint(b & 0x7F) << shift;
|
|
|
|
|
shift += 7;
|
|
|
|
|
b = SlReadByte();
|
|
|
|
|
}
|
|
|
|
|
val |= uint(b) << shift;
|
|
|
|
|
return val;
|
|
|
|
|
uint shift = 0;
|
|
|
|
|
uint val = 0;
|
|
|
|
|
byte b;
|
|
|
|
|
|
|
|
|
|
b = SlReadByte();
|
|
|
|
|
while(b & 0x80) {
|
|
|
|
|
val |= uint(b & 0x7F) << shift;
|
|
|
|
|
shift += 7;
|
|
|
|
|
b = SlReadByte();
|
|
|
|
|
}
|
|
|
|
|
val |= uint(b) << shift;
|
|
|
|
|
return val;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static void WriteCondition(Buffer &b, SignalCondition *c)
|
|
|
|
@ -117,7 +117,6 @@ static void Save_SPRG()
|
|
|
|
|
WriteVLI(b, _signal_programs.size());
|
|
|
|
|
for(ProgramList::iterator i = _signal_programs.begin(), e = _signal_programs.end();
|
|
|
|
|
i != e; ++i) {
|
|
|
|
|
SignalReference ref = i->first;
|
|
|
|
|
SignalProgram *prog = i->second;
|
|
|
|
|
|
|
|
|
|
prog->DebugPrintProgram();
|
|
|
|
@ -170,8 +169,9 @@ static void Save_SPRG()
|
|
|
|
|
|
|
|
|
|
uint size = b.size();
|
|
|
|
|
SlSetLength(size);
|
|
|
|
|
for(uint i = 0; i < size; i++)
|
|
|
|
|
for(uint i = 0; i < size; i++) {
|
|
|
|
|
SlWriteByte(b[i]); // TODO Gotta be a better way
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// We don't know the pointer values that need to be stored in various
|
|
|
|
|