Refactor: Split the string interning mechanism out of PathDirectory and into a new class named StringPool. Performance of inserting a path into the PathDirectory took a small hit in the process as the namespace hashes for each pooled string are now stored into a local id-hash map (previously stored alongside the strings themselves.
Refactor: Path composition functionality previously implemented by PathDirectoryNode_ComposePath is now handled by the owning PathDirectory. Also improved the implementation so that one can query the length of the composed string without having to actually compose it.
Refactor: Split the string interning mechanism out of PathDirectory and into a
new class named StringPool. Performance of inserting a path into the PathDirectory
took a small hit in the process as the namespace hashes for each pooled string
are now stored into a local id-hash map (previously stored alongside the strings
themselves.
Refactor: Path composition functionality previously implemented by PathDirectoryNode_ComposePath
is now handled by the owning PathDirectory. Also improved the implementation so
that one can query the length of the composed string without having to actually
compose it.