GP-2830 Parsing pspec symbols

This commit is contained in:
caheckman 2022-11-10 18:27:51 -05:00
parent 3cf13c2533
commit 8f2450e625
13 changed files with 274 additions and 82 deletions

View file

@ -3224,6 +3224,32 @@ void Database::setPropertyRange(uint4 flags,const Range &range)
}
}
/// The non-zero bits in the \b flags parameter indicate the boolean properties to be cleared.
/// No other properties are altered.
/// \param flags is the set of properties to clear
/// \param range is the memory range to clear
void Database::clearPropertyRange(uint4 flags,const Range &range)
{
Address addr1 = range.getFirstAddr();
Address addr2 = range.getLastAddrOpen(glb);
flagbase.split(addr1);
partmap<Address,uint4>::iterator aiter,biter;
aiter = flagbase.begin(addr1);
if (!addr2.isInvalid()) {
flagbase.split(addr2);
biter = flagbase.begin(addr2);
}
else
biter = flagbase.end();
flags = ~flags;
while(aiter != biter) { // Update bits across whole range
(*aiter).second &= flags;
++aiter;
}
}
/// Encode a single \<db> element to the stream, which contains child elements
/// for each Scope (which contain Symbol children in turn).
/// \param encoder is the stream encoder