[M3devel] C math interop..

Jay K jay.krell at cornell.edu
Sat Sep 8 11:54:32 CEST 2012


hm. The advantage of not having wrappers, is you can declare things that don't exist.Maybe only on some platforms.So I'll probably fix the declarations.For scaleb/ldexp/sqrt too.(similar to what I did for strcat/strcpy in Cstring.i3 -- no wrappers, to avoid OpenBSD link warning/error)
Later, - Jay

From: jay.krell at cornell.edu
To: m3devel at elegosoft.com
Date: Sat, 8 Sep 2012 09:50:19 +0000
Subject: [M3devel] C math interop..




This also occured in FPU.ic
Math.ic.c:217: error: conflicting types for ‘signgam’/usr/include/architecture/i386/math.h:543: error: previous declaration of ‘signgam’ was hereMath.ic.c:298: warning: conflicting types for built-in function ‘cabs’Math.ic.c:302: error: conflicting types for ‘frexp’Math.ic.c:306: error: conflicting types for ‘ldexp’Math.ic.c:310: error: conflicting types for ‘modf’Math.ic.c:329: error: conflicting types for ‘jn’Math.ic.c:339: error: conflicting types for ‘yn’

Generally int vs. INTEGER confusion.To fix these errors, I'm going to provide C wrappers for these functions, and everything else in the file.

This hints at some new way to do interop, fast like the old way, but with static checking,where the generated C #includes the relevant .h files.But this is a bit abstraction bending -- the backend isn't supposed to be doing these checks.The frontend does.You'd have to have changes in the <* extern *> pragma like  - this isn't an actual function signature, necessarily..and the address can'tnecessarily be taken, but something close enough to this will materialize from a C header   - specify the C header 

Imagine a world with a good C backend, and a good other one.Modules that interoperate with C could be sent off to the C backend automatically.

Anyway, just crazy stuff, nothing really happening here beyond I'll add C wrappers. :)

When I get to it, #include <Xlib.h> along with our declarations..it will be interestingto see if things match. And <windows.h>...There will be problems. We have one UINT32 type in the generated C.Win32 has unsigned int and unsigned long used kind of interchangably.There will be clashes.

 - Jay 		 	   		   		 	   		  
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://m3lists.elegosoft.com/pipermail/m3devel/attachments/20120908/a17b5c00/attachment-0002.html>


More information about the M3devel mailing list