-- Bernhard Treutwein, IuK, Ref. III A 3 Bernhard.Treutwein(at)verwaltung uni-muenchen de ------------------------------------------------------- cut here --- Date: Fri, 05 Aug 2005 10:08:23 +0800 From: Stewart Greenhill <sgreenhill{([at]})nowhere.xyTo: Treutwein Bernhard <Bernhard.Treutwein{([at]})nowhere.xyHi Bernhard, There are a couple of modes in which it can work. With arguments "--preprocess" it just preprocesses source, outputting tokenised symbols (not very useful). With arguments "--preprocess --text" it preprocesses source, outputting text. Without arguments, it translates "C" definitions, producing Oberon-2 output. For example, if you unpack the first attached archive "misc.tar.gz", you should be able to do: TestH2O misc/test.c It should produce something like this: TestH2O.exe misc/test.c NEW MODULE test for misc/test.c AddImports <Processing misc/test.c> NEW MODULE mod for misc/mod.h AddImports <Processing misc/mod.h> MODULE test IMPORTS mod Processing: mod Processing: test Processed 51 lines in 2 files ...and will output two files (one for each source file): test.Mod, and mod.Mod. Check the definitions in these files, and you'll get a feel for how the C types are translated. Also attached are some more complex examples ("interfaces.tar.gz"). For example, the opengl interface is translated as a set of modules (look under "src" directory for the generated files). There is a configuration file "opengl.h2o" which contains various directives about how the translation is to be done. On the other hand, "opencv.h2o" merges multiple include files into compound modules (using the "Merge" directive). Take a look at the files, and you should get a feel for how it works. There is an outer "H2O" directive. Otherwise, all text is processed as "C" source code. The "OPTIONS" directive is global to the translation, and includes things like: OutputDirectory - where to put the generated module files Include - list of paths to get include files Exclude - list of files to not include (#include ignored) AutoPrefix - prefix for auto-generated type names (default "Auto") TagSuffix - suffix to be added to structure tags (default "_tag") RenameProcedures - when set to "1" (the default) renames procedures using module "StripPrefix" specification. RenameVariables - when set to "1" (default is "0", since this is unsupported in OOC V2) renames variables using module "StripPrefix" specification. ModuleSuffix - suffix for module file names (default "Mod"). In this section, you can also specify the type mappings for scalar types: OPTION symbol C type Default output type ---------------------------------------------------------------- MapChar "char" "CHAR" MapUnsignedChar "unsigned char" "CHAR" MapShort "short" "INTEGER" MapUnsignedShort "unsigned short" "INTEGER" MapLong "long" "LONGINT" MapUnsignedLong "unsigned long" "LONGINT" MapLongLong "long long" "HUGEINT" MapUnsignedLongLong "unsigned long long" "HUGEINT" MapFloat "float" "REAL" MapDouble "double" "LONGREAL" MapLongDouble "long double" "LONGDOUBLE" MapPointer "void *" "SYSTEM.PTR" MapEnum "enum ..." "LONGINT" MapVoid "void" "C_VOID" Each "MODULE" directive controls how to treat the named module. The base module name comes from the name of the corresponding ".h" file. Options per module include: OutputName - Output name for this module (defaults to header name) StripPrefix - list of prefixes to be removed from symbol names LinkLib, LinkFile, LinkFramework - specifies libraries, files and frameworks to link to this module (OOC-specific directive) Prolog - "C" definitions to be processed at the start of this module Epilog - "C" definitions to be processed at the end of this module Merge - when set to "1", causes all files included by this module to be declared within this module, rather than in separate modules. Each "VARIANT" directive specifies how to translate particular symbols. As you would know, there are many ways of interpreting C declarations, and the default rules don't always work. For example: f(char * arg); could be: PROCEDURE f (arg : POINTER TO ARRAY OF CHAR); PROCEDURE f (arg : ARRAY OF CHAR); PROCEDURE f (VAR arg : ARRAY OF CHAR); PROCEDURE f (VAR arg : CHAR); So VARIANT directives allow you to place particular interpretations on the "C" declarations. Normally, you can see some specific patterns, but it varies from API to API. The format of variants is a form of designator. The designators are composed of: strings - which match the names of globally declared objects [n] - which matches item <n> in a compound type or parameter list ^ - which matches the item referenced by a pointer type .symbol - which matches a named item in a type or paramter list Strings or symbols use OOC's regexp string format. Basically, ".*" matches an string of characters, "$" matches the end of a string, and "[]" matches one of a set of characters. Examples: "gl.*v$".params : ARRAY; This means any symbol (here, procedure) starting with "gl" and ending with "v" has its "params" parameter interpreted as an array. "gl.*Matrix[fd]$"[0] : ARRAY; This means any symbol starting with "gl" and ending with "Matrixf" or "Matrixd" has its first parameter interpreted as an array. "String$" : CSTRING POINTER; This means that the type "String" is to be interpreted as a POINTER to a C string (in OOC, it assigns the "CSTRING" attribute to the pointer, which means that you can use a string literal or CHAR array for this type). "glutInit$".argcp : VAR; This means that the "argcp" parameter of function "glutInit" is to be treated as a VAR parameter. "cvRelease[^D].*$"[0] : VAR; This means that symbols starting "cvRelease" followed by any character EXCEPT "D" has its first parameter interpreted as a VAR parameter. Hope this helps you get started. The new H2O is much more flexible, but not as well tested as the old version. If you hit a snag, I am happy to try to help you out. Error reporting is patchy in some places, so it might not be clear exactly what is happening if something goes wrong. Cheers, Stewart --- BlackBox --- send subject HELP or UNSUBSCRIBE to blackbox{([at]})nowhere.xy----boundary-LibPST-iamunique-1444887337_-_- Content-type: application/rtf Content-transfer-encoding: base64 Content-Disposition: attachment; filename="rtf-body.rtf" e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZnJvbXRleHQgXGRlZmYwe1xmb250dGJsDQp7XGYwXGZz d2lzcyBBcmlhbDt9DQp7XGYxXGZtb2Rlcm4gQ291cmllciBOZXc7fQ0Ke1xmMlxmbmlsXGZjaGFy c2V0MiBTeW1ib2w7fQ0Ke1xmM1xmbW9kZXJuXGZjaGFyc2V0MCBDb3VyaWVyIE5ldzt9fQ0Ke1xj b2xvcnRibFxyZWQwXGdyZWVuMFxibHVlMDtccmVkMFxncmVlbjBcYmx1ZTI1NTt9DQpcdWMxXHBh cmRccGxhaW5cZGVmdGFiMzYwIFxmMFxmczIwIFNvcnJ5LCBJIGZvcmdvdCB0byBpbmNsdWRlIFN0 ZXdhcnQncyBxdWljayBzdGFydCBmb3IgSDJPLCBccGFyDQp3aGljaCBmb2xsb3dzIGJlbG93IC4u LlxwYXINCi0tXHBhcg0KXHRhYiBCZXJuaGFyZCBUcmV1dHdlaW4sIEl1SywgUmVmLiBJSUkgQSAz XHBhcg0KXHRhYiBCZXJuaGFyZC5UcmV1dHdlaW4oYXQpdmVyd2FsdHVuZyB1bmktbXVlbmNoZW4g ZGVccGFyDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tIGN1dCBoZXJlIC0tLVxwYXINCkRhdGU6IEZyaSwgMDUgQXVnIDIwMDUgMTA6MDg6MjMg KzA4MDBccGFyDQpGcm9tOiBTdGV3YXJ0IEdyZWVuaGlsbCA8c2dyZWVuaGlsbEBpaW5ldC5uZXQu YXU+XHBhcg0KVG86IFRyZXV0d2VpbiBCZXJuaGFyZCA8QmVybmhhcmQuVHJldXR3ZWluQFZlcndh bHR1bmcuVW5pLU11ZW5jaGVuLkRFPlxwYXINClxwYXINCkhpIEJlcm5oYXJkLFxwYXINClxwYXIN ClRoZXJlIGFyZSBhIGNvdXBsZSBvZiBtb2RlcyBpbiB3aGljaCBpdCBjYW4gd29yay5ccGFyDQpc cGFyDQpXaXRoIGFyZ3VtZW50cyAiLS1wcmVwcm9jZXNzIiBpdCBqdXN0IHByZXByb2Nlc3NlcyBz b3VyY2UsIG91dHB1dHRpbmdccGFyDQp0b2tlbmlzZWQgc3ltYm9scyAobm90IHZlcnkgdXNlZnVs KS5ccGFyDQpccGFyDQpXaXRoIGFyZ3VtZW50cyAiLS1wcmVwcm9jZXNzIC0tdGV4dCIgaXQgcHJl cHJvY2Vzc2VzIHNvdXJjZSwgb3V0cHV0dGluZ1xwYXINCnRleHQuXHBhcg0KXHBhcg0KV2l0aG91 dCBhcmd1bWVudHMsIGl0IHRyYW5zbGF0ZXMgIkMiIGRlZmluaXRpb25zLCBwcm9kdWNpbmcgT2Jl cm9uLTIgIG91dHB1dC5ccGFyDQpGb3IgZXhhbXBsZSwgaWYgeW91IHVucGFjayB0aGUgZmlyc3Qg YXR0YWNoZWQgYXJjaGl2ZSAgIm1pc2MudGFyLmd6IiwgeW91XHBhcg0Kc2hvdWxkIGJlIGFibGUg dG8gZG86XHBhcg0KICAgVGVzdEgyTyBtaXNjL3Rlc3QuY1xwYXINClxwYXINCkl0IHNob3VsZCBw cm9kdWNlIHNvbWV0aGluZyBsaWtlIHRoaXM6XHBhcg0KVGVzdEgyTy5leGUgbWlzYy90ZXN0LmNc cGFyDQpORVcgTU9EVUxFIHRlc3QgZm9yIG1pc2MvdGVzdC5jXHBhcg0KQWRkSW1wb3J0c1xwYXIN CjxQcm9jZXNzaW5nIG1pc2MvdGVzdC5jPlxwYXINCk5FVyBNT0RVTEUgbW9kIGZvciBtaXNjL21v ZC5oXHBhcg0KQWRkSW1wb3J0c1xwYXINCjxQcm9jZXNzaW5nIG1pc2MvbW9kLmg+XHBhcg0KTU9E VUxFIHRlc3QgSU1QT1JUUyBtb2RccGFyDQpQcm9jZXNzaW5nOiBtb2RccGFyDQpQcm9jZXNzaW5n OiB0ZXN0XHBhcg0KUHJvY2Vzc2VkIDUxIGxpbmVzIGluIDIgZmlsZXNccGFyDQpccGFyDQouLi5h bmQgd2lsbCBvdXRwdXQgdHdvIGZpbGVzIChvbmUgZm9yIGVhY2ggc291cmNlIGZpbGUpOiB0ZXN0 Lk1vZCwgYW5kXHBhcg0KbW9kLk1vZC4gQ2hlY2sgdGhlIGRlZmluaXRpb25zIGluIHRoZXNlIGZp bGVzLCBhbmQgeW91J2xsIGdldCBhIGZlZWwgZm9yICBob3dccGFyDQp0aGUgQyB0eXBlcyBhcmUg dHJhbnNsYXRlZC5ccGFyDQpccGFyDQpBbHNvIGF0dGFjaGVkIGFyZSBzb21lIG1vcmUgY29tcGxl eCBleGFtcGxlcyAoImludGVyZmFjZXMudGFyLmd6IikuIEZvclxwYXINCmV4YW1wbGUsIHRoZSBv cGVuZ2wgaW50ZXJmYWNlIGlzIHRyYW5zbGF0ZWQgYXMgYSBzZXQgb2YgbW9kdWxlcyAobG9vayAg dW5kZXJccGFyDQoic3JjIiBkaXJlY3RvcnkgZm9yIHRoZSBnZW5lcmF0ZWQgZmlsZXMpLiBUaGVy ZSBpcyBhIGNvbmZpZ3VyYXRpb24gIGZpbGVccGFyDQoib3BlbmdsLmgybyIgd2hpY2ggY29udGFp bnMgdmFyaW91cyBkaXJlY3RpdmVzIGFib3V0IGhvdyB0aGUgIHRyYW5zbGF0aW9uIGlzXHBhcg0K dG8gYmUgZG9uZS4gT24gdGhlIG90aGVyIGhhbmQsICJvcGVuY3YuaDJvIiBtZXJnZXMgIG11bHRp cGxlIGluY2x1ZGUgZmlsZXNccGFyDQppbnRvIGNvbXBvdW5kIG1vZHVsZXMgKHVzaW5nIHRoZSAi TWVyZ2UiICBkaXJlY3RpdmUpLiBUYWtlIGEgbG9vayBhdCB0aGVccGFyDQpmaWxlcywgYW5kIHlv dSBzaG91bGQgZ2V0IGEgZmVlbCBmb3IgaG93ICBpdCB3b3Jrcy5ccGFyDQpccGFyDQpUaGVyZSBp cyBhbiBvdXRlciAiSDJPIiBkaXJlY3RpdmUuIE90aGVyd2lzZSwgYWxsIHRleHQgaXMgcHJvY2Vz c2VkIGFzICAiQyJccGFyDQpzb3VyY2UgY29kZS5ccGFyDQpccGFyDQpUaGUgIk9QVElPTlMiIGRp cmVjdGl2ZSBpcyBnbG9iYWwgdG8gdGhlIHRyYW5zbGF0aW9uLCBhbmQgaW5jbHVkZXMgIHRoaW5n c1xwYXINCmxpa2U6XHBhcg0KICAgT3V0cHV0RGlyZWN0b3J5IC0gd2hlcmUgdG8gcHV0IHRoZSBn ZW5lcmF0ZWQgbW9kdWxlIGZpbGVzXHBhcg0KICAgSW5jbHVkZSAtIGxpc3Qgb2YgcGF0aHMgdG8g Z2V0IGluY2x1ZGUgZmlsZXNccGFyDQogICBFeGNsdWRlIC0gbGlzdCBvZiBmaWxlcyB0byBub3Qg aW5jbHVkZSAoI2luY2x1ZGUgaWdub3JlZClccGFyDQogICBBdXRvUHJlZml4IC0gcHJlZml4IGZv ciBhdXRvLWdlbmVyYXRlZCB0eXBlIG5hbWVzIChkZWZhdWx0ICJBdXRvIilccGFyDQogICBUYWdT dWZmaXggLSBzdWZmaXggdG8gYmUgYWRkZWQgdG8gc3RydWN0dXJlIHRhZ3MgKGRlZmF1bHQgIl90 YWciKVxwYXINCiAgIFJlbmFtZVByb2NlZHVyZXMgLSB3aGVuIHNldCB0byAiMSIgKHRoZSBkZWZh dWx0KSByZW5hbWVzIHByb2NlZHVyZXMgIHVzaW5nXHBhcg0KbW9kdWxlICJTdHJpcFByZWZpeCIg c3BlY2lmaWNhdGlvbi5ccGFyDQogICBSZW5hbWVWYXJpYWJsZXMgLSB3aGVuIHNldCB0byAiMSIg KGRlZmF1bHQgaXMgIjAiLCBzaW5jZSB0aGlzIGlzXHBhcg0KdW5zdXBwb3J0ZWQgaW4gT09DIFYy KSByZW5hbWVzIHZhcmlhYmxlcyB1c2luZyBtb2R1bGUgIlN0cmlwUHJlZml4IlxwYXINCnNwZWNp ZmljYXRpb24uXHBhcg0KICAgTW9kdWxlU3VmZml4IC0gc3VmZml4IGZvciBtb2R1bGUgZmlsZSBu YW1lcyAoZGVmYXVsdCAiTW9kIikuXHBhcg0KXHBhcg0KSW4gdGhpcyBzZWN0aW9uLCB5b3UgY2Fu IGFsc28gc3BlY2lmeSB0aGUgdHlwZSBtYXBwaW5ncyBmb3Igc2NhbGFyIHR5cGVzOlxwYXINClxw YXINCiAgIE9QVElPTiBzeW1ib2wgICAgICAgICAgQyB0eXBlICAgICAgICAgICAgICAgIERlZmF1 bHQgb3V0cHV0IHR5cGVccGFyDQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHBhcg0KICAgTWFwQ2hhciAgICAgICAgICAg ICAgICAiY2hhciIgICAgICAgICAgICAgICAgIkNIQVIiXHBhcg0KICAgTWFwVW5zaWduZWRDaGFy ICAgICAgICAidW5zaWduZWQgY2hhciIgICAgICAgIkNIQVIiXHBhcg0KICAgTWFwU2hvcnQgICAg ICAgICAgICAgICAic2hvcnQiICAgICAgICAgICAgICAgIklOVEVHRVIiXHBhcg0KICAgTWFwVW5z aWduZWRTaG9ydCAgICAgICAidW5zaWduZWQgc2hvcnQiICAgICAgIklOVEVHRVIiXHBhcg0KICAg TWFwTG9uZyAgICAgICAgICAgICAgICAibG9uZyIgICAgICAgICAgICAgICAgIkxPTkdJTlQiXHBh cg0KICAgTWFwVW5zaWduZWRMb25nICAgICAgICAidW5zaWduZWQgbG9uZyIgICAgICAgIkxPTkdJ TlQiXHBhcg0KICAgTWFwTG9uZ0xvbmcgICAgICAgICAgICAibG9uZyBsb25nIiAgICAgICAgICAg IkhVR0VJTlQiXHBhcg0KICAgTWFwVW5zaWduZWRMb25nTG9uZyAgICAidW5zaWduZWQgbG9uZyBs b25nIiAgIkhVR0VJTlQiXHBhcg0KICAgTWFwRmxvYXQgICAgICAgICAgICAgICAiZmxvYXQiICAg ICAgICAgICAgICAgIlJFQUwiXHBhcg0KICAgTWFwRG91YmxlICAgICAgICAgICAgICAiZG91Ymxl IiAgICAgICAgICAgICAgIkxPTkdSRUFMIlxwYXINCiAgIE1hcExvbmdEb3VibGUgICAgICAgICAg ImxvbmcgZG91YmxlIiAgICAgICAgICJMT05HRE9VQkxFIlxwYXINCiAgIE1hcFBvaW50ZXIgICAg ICAgICAgICAgInZvaWQgKiIgICAgICAgICAgICAgICJTWVNURU0uUFRSIlxwYXINCiAgIE1hcEVu dW0gICAgICAgICAgICAgICAgImVudW0gLi4uIiAgICAgICAgICAgICJMT05HSU5UIlxwYXINCiAg IE1hcFZvaWQgICAgICAgICAgICAgICAgInZvaWQiICAgICAgICAgICAgICAgICJDX1ZPSUQiXHBh cg0KXHBhcg0KRWFjaCAiTU9EVUxFIiBkaXJlY3RpdmUgY29udHJvbHMgaG93IHRvIHRyZWF0IHRo ZSBuYW1lZCBtb2R1bGUuIFRoZSBiYXNlXHBhcg0KbW9kdWxlIG5hbWUgY29tZXMgZnJvbSB0aGUg bmFtZSBvZiB0aGUgY29ycmVzcG9uZGluZyAiLmgiIGZpbGUuIE9wdGlvbnMgIHBlclxwYXINCm1v ZHVsZSBpbmNsdWRlOlxwYXINCiAgIE91dHB1dE5hbWUgLSBPdXRwdXQgbmFtZSBmb3IgdGhpcyBt b2R1bGUgKGRlZmF1bHRzIHRvIGhlYWRlciBuYW1lKVxwYXINCiAgIFN0cmlwUHJlZml4IC0gbGlz dCBvZiBwcmVmaXhlcyB0byBiZSByZW1vdmVkIGZyb20gc3ltYm9sIG5hbWVzXHBhcg0KICAgTGlu a0xpYiwgTGlua0ZpbGUsIExpbmtGcmFtZXdvcmsgLSBzcGVjaWZpZXMgbGlicmFyaWVzLCBmaWxl cyBhbmQgXHBhcg0KZnJhbWV3b3JrcyB0byBsaW5rIHRvIHRoaXMgbW9kdWxlIChPT0Mtc3BlY2lm aWMgZGlyZWN0aXZlKVxwYXINCiAgIFByb2xvZyAtICJDIiBkZWZpbml0aW9ucyB0byBiZSBwcm9j ZXNzZWQgYXQgdGhlIHN0YXJ0IG9mIHRoaXMgbW9kdWxlXHBhcg0KICAgRXBpbG9nIC0gIkMiIGRl ZmluaXRpb25zIHRvIGJlIHByb2Nlc3NlZCBhdCB0aGUgZW5kIG9mIHRoaXMgbW9kdWxlXHBhcg0K ICAgTWVyZ2UgLSB3aGVuIHNldCB0byAiMSIsIGNhdXNlcyBhbGwgZmlsZXMgaW5jbHVkZWQgYnkg dGhpcyBtb2R1bGUgdG8gXHBhcg0KYmUgZGVjbGFyZWQgd2l0aGluIHRoaXMgbW9kdWxlLCByYXRo ZXIgdGhhbiBpbiBzZXBhcmF0ZSBtb2R1bGVzLlxwYXINClxwYXINCkVhY2ggIlZBUklBTlQiIGRp cmVjdGl2ZSBzcGVjaWZpZXMgaG93IHRvIHRyYW5zbGF0ZSBwYXJ0aWN1bGFyIHN5bWJvbHMuIFxw YXINCkFzIHlvdSB3b3VsZCBrbm93LCB0aGVyZSBhcmUgbWFueSB3YXlzIG9mIGludGVycHJldGlu ZyBDIGRlY2xhcmF0aW9ucywgXHBhcg0KYW5kIHRoZSBkZWZhdWx0IHJ1bGVzIGRvbid0IGFsd2F5 cyB3b3JrLiBGb3IgZXhhbXBsZTpccGFyDQogICBmKGNoYXIgKiBhcmcpO1xwYXINCmNvdWxkIGJl OlxwYXINCiAgIFBST0NFRFVSRSBmIChhcmcgOiBQT0lOVEVSIFRPIEFSUkFZIE9GIENIQVIpO1xw YXINCiAgIFBST0NFRFVSRSBmIChhcmcgOiBBUlJBWSBPRiBDSEFSKTtccGFyDQogICBQUk9DRURV UkUgZiAoVkFSIGFyZyA6IEFSUkFZIE9GIENIQVIpO1xwYXINCiAgIFBST0NFRFVSRSBmIChWQVIg YXJnIDogQ0hBUik7XHBhcg0KXHBhcg0KU28gVkFSSUFOVCBkaXJlY3RpdmVzIGFsbG93IHlvdSB0 byBwbGFjZSBwYXJ0aWN1bGFyIGludGVycHJldGF0aW9ucyBvbiAgdGhlXHBhcg0KIkMiIGRlY2xh cmF0aW9ucy4gTm9ybWFsbHksIHlvdSBjYW4gc2VlIHNvbWUgc3BlY2lmaWMgcGF0dGVybnMsIGJ1 dCAgaXRccGFyDQp2YXJpZXMgZnJvbSBBUEkgdG8gQVBJLlxwYXINClxwYXINClRoZSBmb3JtYXQg b2YgdmFyaWFudHMgaXMgYSBmb3JtIG9mIGRlc2lnbmF0b3IuIFRoZSBkZXNpZ25hdG9ycyBhcmUg IGNvbXBvc2VkXHBhcg0Kb2Y6XHBhcg0KICAgc3RyaW5ncyAgLSB3aGljaCBtYXRjaCB0aGUgbmFt ZXMgb2YgZ2xvYmFsbHkgZGVjbGFyZWQgb2JqZWN0c1xwYXINCiAgIFtuXSAtIHdoaWNoIG1hdGNo ZXMgaXRlbSA8bj4gaW4gYSBjb21wb3VuZCB0eXBlIG9yIHBhcmFtZXRlciBsaXN0XHBhcg0KICAg XiAtIHdoaWNoIG1hdGNoZXMgdGhlIGl0ZW0gcmVmZXJlbmNlZCBieSBhIHBvaW50ZXIgdHlwZVxw YXINCiAgIC5zeW1ib2wgLSB3aGljaCBtYXRjaGVzIGEgbmFtZWQgaXRlbSBpbiBhIHR5cGUgb3Ig cGFyYW10ZXIgbGlzdFxwYXINClxwYXINClN0cmluZ3Mgb3Igc3ltYm9scyB1c2UgT09DJ3MgcmVn ZXhwIHN0cmluZyBmb3JtYXQuIEJhc2ljYWxseSwgIi4qIiAgbWF0Y2hlc1xwYXINCmFuIHN0cmlu ZyBvZiBjaGFyYWN0ZXJzLCAiJCIgbWF0Y2hlcyB0aGUgZW5kIG9mIGEgc3RyaW5nLCBhbmQgICJb XSIgbWF0Y2hlc1xwYXINCm9uZSBvZiBhIHNldCBvZiBjaGFyYWN0ZXJzLlxwYXINClxwYXINCkV4 YW1wbGVzOlxwYXINClxwYXINCiAgICJnbC4qdiQiLnBhcmFtcyA6IEFSUkFZO1xwYXINClRoaXMg bWVhbnMgYW55IHN5bWJvbCAoaGVyZSwgcHJvY2VkdXJlKSBzdGFydGluZyB3aXRoICJnbCIgYW5k IGVuZGluZyAgd2l0aFxwYXINCiJ2IiBoYXMgaXRzICJwYXJhbXMiIHBhcmFtZXRlciBpbnRlcnBy ZXRlZCBhcyBhbiBhcnJheS5ccGFyDQpccGFyDQogICAiZ2wuKk1hdHJpeFtmZF0kIlswXSA6IEFS UkFZO1xwYXINClRoaXMgbWVhbnMgYW55IHN5bWJvbCBzdGFydGluZyB3aXRoICJnbCIgYW5kIGVu ZGluZyB3aXRoICJNYXRyaXhmIiBvclxwYXINCiJNYXRyaXhkIiBoYXMgaXRzIGZpcnN0IHBhcmFt ZXRlciBpbnRlcnByZXRlZCBhcyBhbiBhcnJheS5ccGFyDQpccGFyDQogICAiU3RyaW5nJCIgOiBD U1RSSU5HIFBPSU5URVI7XHBhcg0KVGhpcyBtZWFucyB0aGF0IHRoZSB0eXBlICJTdHJpbmciIGlz IHRvIGJlIGludGVycHJldGVkIGFzIGEgUE9JTlRFUiB0byBhICBDXHBhcg0Kc3RyaW5nIChpbiBP T0MsIGl0IGFzc2lnbnMgdGhlICJDU1RSSU5HIiBhdHRyaWJ1dGUgdG8gdGhlIHBvaW50ZXIsICB3 aGljaFxwYXINCm1lYW5zIHRoYXQgeW91IGNhbiB1c2UgYSBzdHJpbmcgbGl0ZXJhbCBvciBDSEFS IGFycmF5IGZvciB0aGlzIHR5cGUpLlxwYXINClxwYXINCiAgICJnbHV0SW5pdCQiLmFyZ2NwIDog VkFSO1xwYXINClRoaXMgbWVhbnMgdGhhdCB0aGUgImFyZ2NwIiBwYXJhbWV0ZXIgb2YgZnVuY3Rp b24gImdsdXRJbml0IiBpcyB0byBiZVxwYXINCnRyZWF0ZWQgYXMgYSBWQVIgcGFyYW1ldGVyLlxw YXINClxwYXINCiAgICJjdlJlbGVhc2VbXkRdLiokIlswXSA6IFZBUjtccGFyDQpUaGlzIG1lYW5z IHRoYXQgc3ltYm9scyBzdGFydGluZyAiY3ZSZWxlYXNlIiBmb2xsb3dlZCBieSBhbnkgY2hhcmFj dGVyXHBhcg0KRVhDRVBUICJEIiBoYXMgaXRzIGZpcnN0IHBhcmFtZXRlciBpbnRlcnByZXRlZCBh cyBhIFZBUiBwYXJhbWV0ZXIuICBccGFyDQpccGFyDQpIb3BlIHRoaXMgaGVscHMgeW91IGdldCBz dGFydGVkLiBUaGUgbmV3IEgyTyBpcyBtdWNoIG1vcmUgZmxleGlibGUsIGJ1dCBccGFyDQpub3Qg YXMgd2VsbCB0ZXN0ZWQgYXMgdGhlIG9sZCB2ZXJzaW9uLiBJZiB5b3UgaGl0IGEgc25hZywgSSBh bSBoYXBweSB0byBccGFyDQp0cnkgdG8gaGVscCB5b3Ugb3V0LiBFcnJvciByZXBvcnRpbmcgaXMg cGF0Y2h5IGluIHNvbWUgcGxhY2VzLCBzbyBpdCBccGFyDQptaWdodCBub3QgYmUgY2xlYXIgZXhh Y3RseSB3aGF0IGlzIGhhcHBlbmluZyBpZiBzb21ldGhpbmcgZ29lcyB3cm9uZy5ccGFyDQpccGFy DQpDaGVlcnMsXHBhcg0KICAgU3Rld2FydFxwYXINClxwYXINCi0tLSBCbGFja0JveFxwYXINCi0t LSBzZW5kIHN1YmplY3QgSEVMUCBvciBVTlNVQlNDUklCRSB0byBibGFja2JveEBvYmVyb24uY2hc cGFyDQpccGFyDQp9 ----boundary-LibPST-iamunique-1444887337_-_---Received on Tue Jul 11 2006 - 09:51:46 UTC
This archive was generated by hypermail 2.3.0 : Thu Sep 26 2013 - 06:27:49 UTC