dotgnu-general
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [DotGNU]Getting the latest version?


From: James Michael DuPont
Subject: Re: [DotGNU]Getting the latest version?
Date: Mon, 10 Mar 2003 09:47:00 -0800 (PST)

--- Fergus Henderson <address@hidden> wrote:
> On 10-Mar-2003, James Michael DuPont <address@hidden> wrote:
> > Wow! a denial of service attack!
> 
> Well, "attack" is putting it a bit too strongly... as the saying
> goes,
> never attribute to malice that which can be adequately explained by
> incompetence :-)
> 
> > hey Fergus, did you check out my autostubber results for mercury?
> 
> Not until just now.  My social life this week-end has been
> interfering
> with my email reading ;-)

hehe, yeah tell me about it.  I was trying to find time to sit on the
computer between parties. :)

> 
> It looks like the autostubber is for each DLL generating stubs for
> every class *referenced* by that DLL, rather than just generating
> stubs for classes *defined* by that DLL.  

Yes. The stubs are created just for the interface used.
The idea is to stub external modules that are used that we use from non
free software. That is so they can be replaced.

> For example array.dll.il.cs
> includes a definition for mercury.math.mercury_code, and so does
> math.dll.il.cs.  That class is defined in math.dll not array.dll,
> so presumably the stub for it should be defined only in
> math.dll.il.cs.

Yes. Each IL file is self contained, all the modules used are stubbed.
One of the things that I did was just grep out all the calls from all
the dlls into one big file, and run the stubber on it.

> But I guess that is another problem with generating C# stubs:
> C# doesn't permit circular references, does it?
I think it does, because it waits untill all the 
// run with   cscc -S test.cs -nostdlib
namespace System
{
        class Object{}
}
class A { B myb;};
class B {A mya;};

--------------------------------------------------------
.namespace 'System'
{
.class private auto ansi 'Object'{}
} // namespace System
.class private auto ansi 'A' extends 'System'.'Object'{
.field private class 'B' 'myb'
} // class A
.class private auto ansi 'B' extends 'System'.'Object'{
.field private class 'A' 'mya'
} // class B

> So if the DLLs that you are trying to generate stubs for
> have interfaces which depend on each other in a cyclic manner,
> as is the case for the Mercury DLLs, it might cause problems.

Hmm, that has not been a problem, just the naming conventions, how
should I name some of the method names... Also i have to look into the
field usage as well...

I think the next step will be to add some filtering, basically, the
idea of the ILStubberConstruct is to extract the usage of a non-free
class so it can be replaced.

mike

=====
James Michael DuPont
http://introspector.sourceforge.net/

__________________________________________________
Do you Yahoo!?
Yahoo! Tax Center - forms, calculators, tips, more
http://taxes.yahoo.com/


reply via email to

[Prev in Thread] Current Thread [Next in Thread]