[SAGA-RG] Semantics of the ns_entry constructor
Andre Merzky
andre at merzky.net
Mon Aug 17 06:10:33 CDT 2009
Quoting [Ceriel Jacobs] (Aug 17 2009):
>
> Andre Merzky wrote:
>
>> You are right: open should be able to open entries and
>> directories (which *are* entries). open_dir should work
>> only for directories. Same holds then indeed for the entry
>> and dir constructors.
>
> Are you sure? I have an issue with what you are saying about the
> entry constructor. I think that if a ns_entry object represents
> a directory, it should in fact be a ns_directory object.
Well, directory inherits entry, so you can alw2ays do:
saga::url u ("file://localhost/etc/")
saga::file::dir d (u);
saga::file::entry e = d; // downcast should always work
std::cout << u << " is dir: " << e.is_dir () << std::endl;
std::cout << u << " is entry: " << e.is_dir () << std::endl;
is_dir would return true, is_entry would return false.
Sure, sounds strange that is_entry() can return false on an
entry, but it is defined as:
- the method returns false if the entry is a link or a
directory (although an ns_directory IS_A ns_entry, false
is returned on a test on an ns_directory) - otherwise
true is returned.
If the above works, I don't see why
saga::file::entry e (u);
should not work. Or am I missing something? The same then
also holds for the open methods - the origin of Matijs'
complain.
Best, Andre.
> Cheers, Ceriel
--
Nothing is ever easy.
More information about the saga-rg
mailing list