Shared pain

Steve Teale steve.teale at britseyeview.com
Thu Nov 18 10:53:53 PST 2010


On Thu, 18 Nov 2010 08:33:12 -0500, Steven Schveighoffer wrote:

> 
> I think using a class in D is a good idea.  But what you may need is
> global functions which forward to your class methods.  This is how I
> would probably do it.
> 
> -Steve

Steve,

Thanks. I kind of went that way. Having done the laborious C OOP style 
thing, I put most of the methods back into the struct, just leaving the 
extern(Windows) functions at global scope - they referred to the 
__gshare'd object explicitly - I hate that.

Then I hid all of the crap behind a class that sneakily referred to the 
__gshared struct, but at least now to an external user of the module the 
interface looks much the same as it did before.

Now it works OK with the test case example - a service that just writes 
entries in the event log. However, the real service I'm trying to update 
works fine if I run it in debug mode (i.e. basically as just an 
executable), but if I run it as a service it seems to crash the first 
time I use a RegExp.find().

As you can imagine, this is terrible to debug - printf or similar is bad 
enough, but for the service I'm pushing entries into the Windows event 
logger system. Fortunately my D class for doing that has survived the D2 
changes. I'm going to try tweaking the service so it will interact with 
the desktop, then at least I can revert to printf.

But first I think I'll stop and do some carpentry for a couple of days. 
Then eventually something might dawn on me.

Steve



More information about the Digitalmars-d mailing list