"I would just change it to GetLastPathComponent() and and leave GetDirectory() alone
or change it to GetContainingDirectory()."
Greg's suggestion maps very cleanly onto DWARF debug information, since
with that we a compilation unit directory, e.g.
/home/mg11/src/projects/browser
and then the notion of paths relative to that compile directory:
main.cpp
server/socket.cpp
server/script_parse.cpp
utils/logger.cpp
if I recall correctly...
Matt
Greg Clayton wrote:
On Aug 26, 2014, at 12:39 PM, Zachary Turner <ztur...@google.com> wrote:
I guess I'm thinking of this as the standard unix basename / dirname paradigm.
Everyone understands this paradigm and there's no confusion about it. And
given that FileSpec already internally stores its components in this format, it
would be a natural fit for m_filename and m_dirname to correspond to basename
and dirname, respectively. In fact, the entire class is already implemented
with this assumption. See, for example, SetFile() which can be used to set
arbitrary paths, which could refer to directories, but which still splits the
last component and stores it in m_filename. Or AppendPathComponent(), which
handles the case where m_filename is not null, hence assuming that it must
refer to a directory.
As for the places that broke as a result of my last change - certainly they need to be
fixed, so "reverting to green" is reasonable until we can decide if there's a
better fix. However, I did run all tests, and none of them failed. I don't think the
new test which checks that GetFilename() is null is particularly useful, because it just
tests an implementation detail of the class, and not a documented behavior of the class.
It should be possible to write a test against whatever failed, which probably would be a
better test.
There was no test and thus why I added one. But I do agree that the API is not
consistent.
In any case, back to my original question: Is there any object to changing
FileSpec::GetDirectory() and FileSpec::GetFilename() to be GetBaseName() and
GetDirName()?
I would just change it to GetLastPathComponent() and and leave GetDirectory()
alone or change it to GetContainingDirectory().
This would require changing the call sites of the places who previously broke
as a result of my original change. I don't actually know what broke since my
test runs were all successful, though.
The other issue with changing things is that we have internal branches that are
based on this code that are constantly requiring merging due to all of these
changes that have been going on. I appreciate all the changes, and changing
things to be better organized is nice.
If this is not appropriate, then I think we need to change
AppendPathComponent(), SetFile(), and various other functions to stop allowing
situations where m_directory + m_filename refers to a directory.
A few core design things:
- no setters can require any stat calls to determine if things are directories
unless someone explicitly asks the FileSpec for this info
- basename and directory must remain separate ConstString values
The Host calls that got the directories were optimized for the use cases where
client asks for directory X and then sets the basename via the GetFilename()
accessor. I would prefer to maintain this if possible to avoid contaminating
the constant string pool and we can do this via APIs.
Greg
_______________________________________________
lldb-commits mailing list
lldb-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits
To report this email as spam click
https://www.mailcontrol.com/sr/MZbqvYs5QwJvpeaetUwhCQ== .
Member of the CSR plc group of companies. CSR plc registered in England and
Wales, registered number 4187346, registered office Churchill House, Cambridge
Business Park, Cowley Road, Cambridge, CB4 0WZ, United Kingdom
More information can be found at www.csr.com. Keep up to date with CSR on our
technical blog, www.csr.com/blog, CSR people blog, www.csr.com/people, YouTube,
www.youtube.com/user/CSRplc, Facebook,
www.facebook.com/pages/CSR/191038434253534, or follow us on Twitter at
www.twitter.com/CSR_plc.
New for 2014, you can now access the wide range of products powered by aptX at
www.aptx.com.
_______________________________________________
lldb-commits mailing list
lldb-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits