Ciprian this is really cool to see how pushing and enhancing NativeBoost. Really a cool nd warm feeling. Tx for your energy and time. Stef On Dec 11, 2012, at 8:33 PM, Ciprian Teodorov wrote:
Hi guys,
today I have commited to the NativeBoost repository a new core class, the NBExternalEnumerationType, which reifies the enum declarations in C and offers a nice interface (especially in terms of debug/inspect).
To use it just subclass the NBExternalEnumeration and add an #enumDecl method to the class side such as:
Did you add this cool class comment :)
NBExternalEnumeration subclass: #NBTestEnumeration instanceVariableNames: '' classVariableNames: '' poolDictionaries: '' category: 'NativeBoost-Tests'
NBTestEnumeration class>>enumDecl ^ {(#AAA -> 1). (#BBB -> 2). (#CCC -> 3). (#DDD -> 2400)} asDictionary
DO NOT FORGET to call the #initialize method on your class. The rest is automatically done ;)
You can use your new enum in two ways: ⢠add it to a client class poolDictionaries list (see #NBExternalEnumTests for an example), and then just write CCC in your code -- CCC here is an item of your enum ⢠or you can send the name of an item to your class --- NBTestEnumeration DDD The NBExternalEnumeration implements (instance and class) some more API methods like: ⢠#itemAt: retrieves the item having a specific value --- NBTestEnumeration itemAt: 2 ⢠#includes: checks the existence of a specific item in the enum --- NBTestEnumeration includes: #AAA Having this already gives us a nice interface to working with enums. Now I plan to improve a little bit on performance and usage scenarios: ⢠the possibility to accept smalltalk integers as valid input/output for functions(or callbacks) that use enums as arguments/return. ⢠support the different representation types for the enum values (int/uint) So that will be for now. Feel free to try it out and send me any comments and/or improvement ideas, It will be my pleasure to improve it. Cheers, -- Dr. Ciprian TEODOROV Ingénieur Développement CAO
tél : 06 08 54 73 48 mail : ciprian.teodorov@gmail.com www.teodorov.ro