<html>
<head>
<style>
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
FONT-SIZE: 10pt;
FONT-FAMILY:Tahoma
}
</style>
</head>
<body class='hmmessage'>Oh I think I see some of how to do this.<BR>
Olaf's path stuff is actually implemented, maybe just not exposed, and perhaps incomplete, but it demonstrates a "trick" of Modula-3.<BR>
 <BR>
You can do this:<BR>
INTERFACE I;<BR>
PROCEDURE F1();<BR>
PROCEDURE F2();<BR>
END I;<BR>
 <BR>
MODULE A EXPORTS I;<BR>
PRODEDURE F1() = ... END F1;<BR>
 <BR>
 <BR>
MODULE B EXPORTS I;<BR>
PRODEDURE F2() = ... END F2;<BR>
<BR> <BR>
The implementation of interface can be distributed among multiple modules.<BR>
To export an interface just means to implement some or all of it. Usually but not necessarily all.<BR>
(I wonder what if you implement none of it?)<BR>
 <BR>
That helps much.<BR>
It doesn't provide a complete idiom I think for what I ask, but it is a start.<BR>
 <BR>
I suspect generics help here.<BR>
But I'm still not sure what the entire answer is.<BR>
 <BR>
- Jay<BR><BR>
<BLOCKQUOTE>
<HR id=EC_stopSpelling>
From: jayk123@hotmail.com<BR>To: m3devel@elegosoft.com<BR>Date: Sun, 24 Feb 2008 00:22:29 +0000<BR>Subject: [M3devel] exposing both path name types?<BR><BR>
<META content="Microsoft SafeHTML" name=Generator>
<STYLE>
.ExternalClass .EC_hmmessage P
{padding:0px;}
.ExternalClass EC_body.hmmessage
{font-size:10pt;font-family:Tahoma;}
</STYLE>
What is the idiom for this:<BR> <BR>Currently:<BR>There is Pathname.i3.<BR>PathnamePosix EXPORTS Pathname<BR>PathnameWin32 EXPORTS Pathname<BR>You can only have one in a link.<BR> <BR>It would seem possibly useful to have:<BR>Pathname.i3 unchanged<BR>PathnamePosix.i3 identical to Pathname.i3 (some what to avoid the duplication?)<BR>PathnameWin32.i3 identical to Pathname.i3 (ditto)<BR> <BR>On Posix targets:<BR>  PathnameWin32.m3 exports just PathnameWin32<BR>  PathnamePosix exports both PathnamePosix and Pathname<BR> <BR>On Windows targets:<BR>  PathnamePosix exports just PathnamePosix<BR>  PathnameWin32 exports both PathnameWin32 and Pathname<BR> <BR>That is Pathname.Foo resolves statically at compile time to the target-specific library.<BR>PathnameWin32.Foo and PathnamePosix.Foo are also both explicitly available.<BR> <BR>These modules each import nothing, except Text. They do all their string manipulation themselves.<BR> <BR>Olaf's recent Quake extensions document but don't implement<BR>    pn_native( pn ) --> text<BR>    pn_posix( pn ) --> text<BR>    pn_win( pn ) --> text<BR><BR>As long as pn is a fullpath, these are easy, I just wrote up prototypes, haven't compiled them.<BR> <BR>I think these functions might suggest doing what I'm asking about as well, maybe.<BR>Or maybe you'd just convert and then never pick back apart.<BR> <BR>I have sleazed by for now by using subst_text / to \ and setting up NTFS junctions.<BR>In this way, I can cross build NT386 <=> NT386GNU either host, either target.<BR>Had I not done anything, the linker interprets /cygdrive/c/foo/bar.lib as a command switch and says it doesn't understand it.<BR>Not a big deal, but I think there might be some easy progress here.<BR> <BR>This is not just about Pathname.<BR> <BR>It is also about File.<BR>Even though NT386GNU File is FilePosix, it would be useful to allow the serial package to use FileWin32 instead.<BR>But FilePosix and FileWin32 both reveal the same types.<BR>It'd be nice if they could expose FilePosix.T and FileWin32.T and then only one of them reveal File.T = FilePosix.T or File.T = FileWin32.T, something like that.<BR> <BR> <BR> - Jay<BR><BR>
<HR>
Climb to the top of the charts! Play the word scramble challenge with star power. <A href="http://club.live.com/star_shuffle.aspx?icid=starshuffle_wlmailtextlink_jan" target=_blank>Play now!</A> </BLOCKQUOTE><br /><hr />Need to know the score, the latest news, or you need your HotmailŪ-get your "fix". <a href='http://www.msnmobilefix.com/Default.aspx' target='_new'>Check it out.</a></body>
</html>