ebdb4eae66
isOnManualLane predicate now correctly treats unnamed fixed-lane lanes as manual; item-side C_LANEPLAYS loop removed (SDK read-only); explicit #include <set> in view_mode_model.cpp; undo-block omission in detectNewContent documented as intentional.
45 lines
1.6 KiB
C++
45 lines
1.6 KiB
C++
// 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;
|
|
}
|
|
|
|
bool isOnManualLane(bool isFixedLaneTrack, const std::string& laneName) {
|
|
// On a normal (non-fixed-lane) track there is no concept of a manual lane; the
|
|
// item follows the normal auto-tag rule.
|
|
if (!isFixedLaneTrack) return false;
|
|
// On a fixed-lane track: a managed lane (prefixed) is NOT manual; everything else
|
|
// — including the empty/unnamed lane that REAPER creates by default — IS manual
|
|
// (user-minted, off-limits to auto-tag and to the lane-drive path).
|
|
return !hasManagedPrefix(laneName);
|
|
}
|
|
|
|
} // namespace reasampler
|