Make NodePath copy-on-write, to avoid it changing accidentally by owned copies.

This commit is contained in:
Lukas Tenbrink
2025-11-26 20:20:17 +01:00
parent bc192293b1
commit 60ab73cd1e
2 changed files with 33 additions and 0 deletions
+8
View File
@@ -35,6 +35,10 @@
#include <climits>
// Represents a path to a node or property in a hierarchy of nodes
// Note that NodePath is (effectively) const: If you hold a NodePath,
// you can expect it to remain unchanged, even if you make copies of
// it. This is achieved through copy-on-write (CoW).
class [[nodiscard]] NodePath {
struct Data {
SafeRefCount refcount;
@@ -52,6 +56,10 @@ class [[nodiscard]] NodePath {
void _update_hash_cache() const;
// Copies the underlying data.
// Every non-const function must call this before starting to mutate data.
void _copy_on_write();
public:
bool is_absolute() const;
int get_name_count() const;