• Brad King's avatar
    String: Add str_if_stable() as a const alternative to str() · 2d68b2c5
    Brad King authored
    The `str()` method must be non-const because it may need to internally
    mutate the representation of the string in order to have an owned
    `std::string` instance holding the exact string (not a superstring).
    This is inconvenient in contexts where we can ensure that no mutation
    is needed to get a `std::string const&`.
    Add a `str_if_stable() const` method that returns `std::string const*`
    so we can return `nullptr` if if mutation would be necessary to get a
    `std::string const&`.  Add supporting `is_stable() const` and
    `stabilize()` methods to check and enforce stable availability of
    `std::string const&`.  These can be used to create `String const`
    instances from which we can still get a `std::string const&` via
    `*str_if_stable()` by maintaining the stability invariant at runtime.
cmString.cxx 3.37 KB