
On Monday 19 May 2008 23:37:25 David Abrahams wrote:
I was just reviewing the filesystem docs and came across "leaf()". I'm sure this isn't the first time I've seen it, but this time I picked up a little semantic dissonance. Normally we think of "leaf" in the context of a tree as being a thing with no children.
Correct.
An interior node like a directory that has files or other directories in it is usually not called a "leaf." I wonder if this is the best possible name?
But it's not the directory itself (identified by some path object) that is a leaf, it is the path component returned by leaf() that is the leaf of a path. Because I assume you talk about basic_path::leaf(). For any given path, the path components form the path tree and the last component is the leaf of that tree respecting the semantics you described. It's not a leaf node in another context, but there is no such context implied since we are talking about basic_path::leaf(), ie a path leaf not something else's leaf.
Is there a precedent we can draw on in some other language/library? In python, it's os.path.basename(p). Perl, php, and the posix basename command seem to do something similar.
"basename" could work too but I never had any confusion in my head of what leaf() means for a given path object. -- Mihai RUSU Email: dizzy@roedu.net "Linux is obsolete" -- AST