| Absolutly, And you know it........
I would like to use them in a number of places, but the current
MSL/Dictionary implementation leaves a lot to be desired.
An example:
Object X has a privelege enumeration, a,b,c,d,e,f,g,h
Object Y, a child of X only supports a subset of the
enumeration, and hence, we would like to define this
as a subrange of the enumeration that X is using.
In addition, (and the reason the current set is broken), is that
the bit values used in the subrange should match those used in the
original enumeration
From my MSL...
TYPE SideLifecycleStates = 107 (
Purchased = 2,
Scratch = 3,
Assigned = 4,
Released = 5,
Discarded = 6,
Exported = 7,
To Be Imported = 8);
TYPE CreateSideStates = 108 (
Purchased = 2,
Exported = 7,
To Be Imported = 8);
the second def should be....
TYPE CreateSideStates = 108 CartLifecycleStates [2,7..8];
As all these object are supported by the same code module,
it is really important that the bits used match. Note that they currently dont.
The first should used bits 0..6, and the second should use
bits 0, and 5..6.
While your at it, make subrange for string datatypes, work, too.
The SRM claims support for all string datatypes, but the code only
really supports Latin1String.
|
| Dave:
I have a couple of questions:
o What priority (high, medium, low) would you assign to the need for
SUBRANGE of ENUMERATION?
o After studying your example I have to ask why 'CreateSideStates' is
defined as a TYPE. What objects are assigned this type in your MSL
example? Can you explain the real example more fully?
Sorry to bother you so much, but we need real justification to invest in this
area and I want to make sure that I fully understand your example.
Thanks in advance...
- Jerry
|
| The actual data objects are states that use these enumerations.
These are defined as types to make the maintainance of the MSL LOTS more straight-
forward.
ALL of the attributes in our MSL are defined as abstracted types, making
changes much more simple. The current MSL is about as big as the current
set of Phase 5 MSL.
The more common use is as a BITSET of the enumeration, where many different
rights are granted, as in....
For me, priority is Medium, for you, probably lower.
Another (FULL) example:
TYPE BranchMediaLibraryPolicies = 300 (
Vol Name Same as Cart Side 1 = 0,
Import Name Exceptions Prohibited = 1,
Owner Initiated Export Prohibited = 2,
Unlabeled Media Prohibited = 3,
Unlabeled Media Prohibited With Import Exceptions = 4,
Defer Prepare Until Load = 5,
Truncate on Prepare = 6,
Initialize on Prepare = 7,
Erase on Prepare = 8,
Assign All Base Sides at Once = 9,
Assign All Compound Sides at Once = 10,
Erase on Discard = 11,
Owner Relocate Prohibited = 12,
Prohibit Scratching Individual Cartridge Sides = 13);
TYPE CartPolicies = 301 BranchMediaLibraryPolicies
[2,5..13];
TYPE SidePolicies = 302 BranchMediaLibraryPolicies
[5..8,11];
TYPE BranchMediaLibraryPolicySet = 400 BITSET OF BranchMediaLibraryPolicies;
TYPE CartPolicySet = 401 BITSET OF CartPolicies;
TYPE SidePolicySet = 402 BITSET OF SidePolicies;
It is important that all the "bits" in these masks "line up" as it makes
the code lots more simple to deal with.
Also...
TYPE CartNameTemplate = 31 Latin1String
[32..34,37..63,65..90,95..95,97..102];
|