I'm trying to understand how I may use the OpenDACS API to work with complex logical combinations of permission entities (PEs).
The DACSLOCK_devguide section 3.4 (Compression of DACS Locks) suggests that both AND and OR operators may be used in a single compound lock:
1027 & (456 | 985) & 5000
The document goes on to explain how such compounds are compressed in binary coded decimal.
I can't see any way to compose nor decompose such a compound using the API (C++).
The logical operator can be specified in the AuthorizationLock class, but it only operates on type long PEs. I can use this to compose (1027&5000) and, separately, (456|985).
The AuthorizationLockData class allows for combining multiple AuthorizationLockData instances, but has no way to specify the logical operator.
How may I use the APIs to compose a lock of PEs: 1027 & (456 | 985) & 5000.
Or another example to compose: (123 & 456) | (321 & 654)
Will I instead have to work on the raw char* lock data buffer?