[saga-rg] open_flag and open_dir_flags
Andre Merzky
andre at merzky.net
Tue Mar 7 06:56:51 CST 2006
Quoting [Graeme Pound] (Mar 07 2006):
>
> Andre,
>
> Your change to the enumerations resolves the problem with respect to the
> Java bindings (using typesafe enumerations in Java 1.4.2). However you
> may wish to do a sanity check that it is is possible/necessary to
> inherit enumerations in other strongly typed languages (C++, C#).
For perl its a no-brainer. For C++ we think its
unneccessary to inherit/extend flags, it seems simplier to
just redefine them. In C they are global flags anyway I
guess. For other languages I don't know.
Cheers, Andre.
> Graeme
>
>
>
>
> Andre Merzky wrote:
> >Hi Graeme,
> >
> >Quoting [Graeme Pound] (Mar 01 2006):
> >>Hi,
> >>
> >>The relationship between the enumerations open_flag and open_dir_flags
> >>in the various packages of the API is a little problematic.
> >>
> >>Graeme
> >>
> >>
> >> -3.35 How should interfaces inheriting from ns_directory and ns_entry
> >>inherit/override the enumerations open_flag and open_dir_flags? The
> >>methods of ns_directory open_dir() and open() will require the
> >>enumerations defined in the name_space package (or sub-classes of these
> >>enumerations).
> >
> >The reason for the various incarnations of open_flags are
> >that these have different meanings for the various classes.
> >We wanted to keep the ability to introdice a flag for
> >opening logical files (e.g. UseVersioning) which might not
> >needed or might have no meaning in namespace or for physical
> >files.
> >
> >If that at the end should be too troublesome, a global
> >open_flag enum in name_space would probably do the trick -
> >we would need to verbosely specify what flags are to be
> >ignored in logical files or physical files though.
> >
> >However...
> >
> >
> >>With Java enumerations it would be possible to extend the original
> >>enumerations by sub-classing, but it is not possible to not remove
> >>fields. Unfortunately saga.logical_file.open_flags removes fields from
> >>saga.name_space.open_flags.
> >
> >... that should have been cleaned. I had a pending commit,
> >is in CVS now, which fixes that. The flags are now:
> >
> >
> > +-------------------+-------------------+--------------------+
> > | name_space | physical_file | logical_file |
> > +-------------------+-------------------+--------------------+
> > | Unknown = -1, | Unknown = -1, | Unknown = -1, |
> > | Create = 1, | Create = 1, | Create = 1, |
> > | Excl = 2, | Excl = 2, | Excl = 2, |
> > | Lock = 4 | Lock = 4, | Lock = 4, |
> > | | Truncate = 8, | Truncate = 8, |
> > | | Append = 16, | Append = 16, |
> > | | Read = 32, | Read = 32, |
> > | | Write = 64, | Write = 64, |
> > | | ReadWrite = 128 | ReadWrite = 128 |
> > +-------------------+-------------------+--------------------+
> >
> >Note that Truncate, Append, Read, Write and ReadWrite have
> >different semantics for the latter two.
> >
> >Does that make sense to you?
> >
> >Cheers, Andre.
> >
> >
--
"So much time, so little to do..." -- Garfield
More information about the saga-rg
mailing list