[saga-rg] open_flag and open_dir_flags

Graeme Pound G.E.POUND at soton.ac.uk
Tue Mar 7 04:09:13 CST 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#).

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.
> 
> 





More information about the saga-rg mailing list