Prepare to fully canonicalize views

This commit is contained in:
2024-05-28 21:38:08 -07:00
parent 93ff83e422
commit f1f4d66678
6 changed files with 20 additions and 15 deletions

View File

@@ -86,16 +86,13 @@ struct __attribute__((__visibility__("default"))) VersionedMap {
/** The version of the most recent call to `setOldestVersion`. */
int64_t getOldestVersion() const;
/** Iterates through a canonicalized[1] view of all the mutations
/** Iterates through a canonicalized view of all the mutations
* from `oldestVersion` to the iterator's version. There may be mutations from
* versions < `oldestVersion`, but they won't affect the result, and can be
* ignored if desired. It's thread-safe to operate on an iterator concurrently
* with any method of `VersionedMap`, as long as it's not invalidated by
* `setOldestVersion`.
* @warning must not outlive its `VersionedMap`.
*
* [1]: Clears at different versions may be adjacent. This is necessary for
* precisely tracking at what version the mutations take effect.
*/
struct Iterator {
@@ -114,7 +111,10 @@ struct __attribute__((__visibility__("default"))) VersionedMap {
int param1Len;
int param2Len;
MutationType type;
int64_t version;
/** The set of keys modified by this mutation have not been modified since
* this version. They were not necessarily modified at this version
* though. */
int64_t notModifiedSince;
};
/** iter must not be `end()`. Memory pointed-to by return value is valid as