feat(view): D2 Wave 2 — apply managed-lane ops + timer-diff auto-tag new content
Drives fixed-lane C_LANEPLAYS for managed lanes only (name-keyed, ordinal-renumber safe) in the view shell; diffs live track/item GUIDs on the panel timer to auto-tag new content to the active mode, first-poll-guarded. Pure guid_diff + lane_keys modules unit-tested; folds in Wave-1 polish.
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
// lane_keys implementation — pure string convention, no REAPER. See lane_keys.h.
|
||||
|
||||
#include "lane_keys.h"
|
||||
|
||||
#include <cstring>
|
||||
|
||||
namespace reasampler {
|
||||
|
||||
namespace {
|
||||
// Does `s` start with the managed-lane prefix?
|
||||
bool hasManagedPrefix(const std::string& s) {
|
||||
const std::size_t n = std::strlen(kManagedLanePrefix);
|
||||
return s.size() >= n && s.compare(0, n, kManagedLanePrefix) == 0;
|
||||
}
|
||||
} // namespace
|
||||
|
||||
bool isManagedLaneName(const std::string& laneName) {
|
||||
return hasManagedPrefix(laneName);
|
||||
}
|
||||
|
||||
std::optional<std::string> managedLaneKey(const std::string& laneName) {
|
||||
if (!hasManagedPrefix(laneName)) return std::nullopt; // manual/unnamed ⇒ no key
|
||||
// The durable name IS the key (stable across ordinal renumber). Keeping the full
|
||||
// prefixed name — rather than stripping to the mode id — means the key is globally
|
||||
// unambiguous and the ownership index's mode field remains the single source of
|
||||
// truth for which mode owns the lane.
|
||||
return laneName;
|
||||
}
|
||||
|
||||
std::string laneNameForMode(const std::string& modeId) {
|
||||
return std::string(kManagedLanePrefix) + modeId;
|
||||
}
|
||||
|
||||
} // namespace reasampler
|
||||
Reference in New Issue
Block a user