<html>
<head>
<style>
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Verdana
}
</style>
</head>
<body class='hmmessage'>
uh oh.<BR>I sense a possible big vocabulary difference.<BR>
<BR>There are, indeed, two ways of cloning headers.<BR>
<BR>One way is with super tight fidelity.<BR>Declaring the types in Modula-3 to match exactly what it is in the .h files.<BR>.h files that you don't write yourself, that vary from system to system,<BR>and may be full of #ifdefs and hard to read (but sure, preprocess them).<BR>This is what I don't like.<BR>It is tedious, error prone, dangerous.<BR>This is historically what was done.<BR>
 <BR>
The alternative is, well, also cloning headers.<BR>You write your own.<BR>But you don't put any #ifdefs in them.<BR>You make them easy to read.<BR>They are the same for Solaris, Linux, little endian, big endian (no bit fields), etc.<BR>
<BR>The ones you write yourself, you write in both Modula-3 and C.<BR>You have your Modula-3 code call your C code, and then your C calls "the OS", via<BR>its headers, that you no longer have to read and clone.<BR>
<BR>This is what I have been doing.<BR>
 <BR>
In fact, maybe the ones you write yourself you write in xml or some other<BR>constrained language/schema, and write a tool to spit out Modula .i3 and C .h files.<BR>
 <BR>
We are on the same page, right?<BR>
Bad to clone /usr/include.<BR>
Ok to clone stuff you write yourself.<BR>
 <BR>
 - Jay<BR><BR><BR><BR><BR><BR><BR><BR>> From: hosking@cs.purdue.edu<BR>> To: jkrell@elego.de<BR>> Date: Mon, 12 Jan 2009 22:41:56 +1100<BR>> CC: m3commit@elegosoft.com<BR>> Subject: Re: [M3commit] CVS Update: cm3<BR>> <BR>> PS I would love to avoid cloning the headers. waitpid would be <BR>> invocable without any wrapper -- it's up to the client code to <BR>> interpret the status word properly as needs.<BR>> <BR>> <BR>> On 12 Jan 2009, at 12:28, Jay Krell wrote:<BR>> <BR>> > CVSROOT: /usr/cvs<BR>> > Changes by: jkrell@birch. 09/01/12 12:28:31<BR>> ><BR>> > Modified files:<BR>> > cm3/m3-libs/m3core/src/unix/big-endian/: m3makefile<BR>> > cm3/m3-libs/m3core/src/unix/little-endian/: m3makefile<BR>> > cm3/m3-libs/m3core/src/unix/Common/: m3makefile<BR>> > Added files:<BR>> > cm3/m3-libs/m3core/src/unix/big-endian/: Uexec.i3<BR>> > cm3/m3-libs/m3core/src/unix/little-endian/: Uexec.i3<BR>> ><BR>> > Log message:<BR>> > clone more headers to account for non portable waitpid <BR>> > reintroduction; what was wrong with what was here? Aren't several <BR>> > ports wrong e.g. {I386,AMD64}_DARWIN, PPC_LINUX? I guess the point <BR>> > is to stop anyone from using this data at all, so as to not need to <BR>> > return it one way or the other?<BR>> <BR><BR></body>
</html>