1. automatic dll wrapping

This is a multi-part message in MIME format.

------=_NextPart_000_0042_01C0C5F2.AF194400
	charset="iso-8859-2"

I was thinking that it could be possible to make a program which would =
automatically wrap a dll. It would have .dll and .h file for input, or =
maybe just .h file, and output would be one big .ew file. It =
could/should also handle strings and structures. My WinMania library =
could be automatically generated without any work (hand editing) with =
such program. This is definiteley something that will/should probalby be =
done sometimes for Eu. euAllegro library could also be generated with =
such program. It would be like C to Eu translator, but only for =
functions in dlls. This would be a challenging task for someone to do. =
It would basically be a parser (very powerful, like a C compiler almost) =
for .h files. Then it would be using C libraries in Euphoria very easy, =
you would just generate appropriate .ew file for a dll and you could use =
it like in C but with Euphoria language. Anybody knows of any limits why =
this couldn't be done, anybody thought of this before?

------=_NextPart_000_0042_01C0C5F2.AF194400
Content-Type: text/html;
	charset="iso-8859-2"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META content=3D"text/html; charset=3Diso-8859-2" =
http-equiv=3DContent-Type>
<META content=3D"MSHTML 5.00.2614.3401" name=3DGENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=3D#ffffff>
<DIV><FONT face=3DArial size=3D2>I was thinking that it could be =
possible to make a=20
program which would automatically wrap a dll. It would have .dll and .h =
file for=20
input, or maybe just .h file, and output would be one big .ew file. It=20
could/should also handle&nbsp;strings and structures. My WinMania =
library could=20
be automatically generated without any work (hand editing) =
with&nbsp;such=20
program. This is definiteley something that&nbsp;will/should =
probalby&nbsp;be=20
done sometimes for Eu. euAllegro library could also be&nbsp;generated=20
with&nbsp;such program.&nbsp;It would be like C to Eu translator, but =
only for=20
functions in dlls. This would be a challenging task for someone to do. =
It would=20
basically be a parser (very powerful, like a C compiler almost) for .h=20
files.</FONT><FONT face=3DArial size=3D2> Then it would be using C =
libraries in=20
Euphoria very easy, you would just&nbsp;generate appropriate .ew file =
for a dll=20
and you could use it like in C but with Euphoria language. Anybody knows =
of any=20
limits why this couldn't be done, anybody thought of this=20

------=_NextPart_000_0042_01C0C5F2.AF194400--

new topic     » topic index » view message » categorize

2. Re: automatic dll wrapping

This is a multi-part message in MIME format.

------=_NextPart_000_0055_01C0C596.29A32D60
	charset="iso-8859-2"

Hi,

Yes this has been attempted before.

Look in the archives for SWIG/Euphoria by the great David Cuny!!!
SWIG is an Open Source project that is used to wrap DLL's for
a number of scripting languages (Perl and Python being the Primary =
ones??).

SWIG/Euphoria is/was David Cuny's attempt for a Euphoria version. =20
I can't remember how good it was ... it worked at some level for sure.
It would be a good starting point though and I'm sure full of =
information
for anyone attempting similar things.

I also attempted my own version when I was wrapping Allegro without =
sucess.

If you know pascal the FreePascal people have a H2PAS program which
converts C header files to pascal.  Again this has limiations but might
prove to have useful code or ideas.=20

Once you can parse a C Header file I believe the code generation =
wouldn't
be to difficult.

Ray Smith.

  ----- Original Message -----=20
  From: Tone Skoda=20
  To: EUforum=20
  Sent: Monday, April 16, 2001 5:26 AM
  Subject: automatic dll wrapping



=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
Maximize your email efficiency with My Topica. Searchable
archives, vacation options, and more. Sign up now at
  I was thinking that it could be possible to make a program which would =
automatically wrap a dll. It would have .dll and .h file for input, or =
maybe just .h file, and output would be one big .ew file. It =
could/should also handle strings and structures. My WinMania library =
could be automatically generated without any work (hand editing) with =
such program. This is definiteley something that will/should probalby be =
done sometimes for Eu. euAllegro library could also be generated with =
such program. It would be like C to Eu translator, but only for =
functions in dlls. This would be a challenging task for someone to do. =
It would basically be a parser (very powerful, like a C compiler almost) =
for .h files. Then it would be using C libraries in Euphoria very easy, =
you would just generate appropriate .ew file for a dll and you could use =
it like in C but with Euphoria language. Anybody knows of any limits why =
this couldn't be done, anybody thought of this before?
=3D=3D^=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=

=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D


------=_NextPart_000_0055_01C0C596.29A32D60
Content-Type: text/html;
	charset="iso-8859-2"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META content=3D"text/html; charset=3Diso-8859-2" =
http-equiv=3DContent-Type>
<META content=3D"MSHTML 5.00.2614.3500" name=3DGENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=3D#ffffff>
<DIV><FONT face=3DArial size=3D2>Hi,</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Yes this has been attempted =
before.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Look in the archives for SWIG/Euphoria =
by the great=20
David Cuny!!!</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>SWIG is an Open Source project that is =
used to wrap=20
DLL's for</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>a number of scripting languages (Perl =
and Python=20
being the Primary ones??).</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>SWIG/Euphoria is/was David Cuny's =
attempt for a=20
Euphoria version.&nbsp; </FONT></DIV>
<DIV><FONT face=3DArial size=3D2>I can't remember how good it was ... it =
worked at=20
some level for sure.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>It would be a good starting point =
though and I'm=20
sure full of information</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>for anyone attempting similar =
things.</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>I also attempted my own version when I =
was wrapping=20
</FONT><FONT face=3DArial size=3D2>Allegro without sucess.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>If you know pascal the FreePascal =
people have a=20
H2PAS program which</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>converts C header files to =
pascal.&nbsp; Again this=20
has limiations but might</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>prove to have useful code or ideas. =
</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Once you can parse a C Header file I =
believe the=20
code generation wouldn't</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>be to difficult.</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Ray Smith.</FONT></DIV>
<DIV>&nbsp;</DIV>
<BLOCKQUOTE=20
style=3D"BORDER-LEFT: #000000 2px solid; MARGIN-LEFT: 5px; MARGIN-RIGHT: =
0px; PADDING-LEFT: 5px; PADDING-RIGHT: 0px">
  <DIV style=3D"FONT: 10pt arial">----- Original Message ----- </DIV>
  <DIV=20
  style=3D"BACKGROUND: #e4e4e4; FONT: 10pt arial; font-color: =
black"><B>From:</B>=20
  <A href=3D"mailto:tone.skoda at siol.net" =
title=3Dtone.skoda at siol.net>Tone Skoda</A>=20
  </DIV>
  <DIV style=3D"FONT: 10pt arial"><B>To:</B> <A =
href=3D"mailto:EUforum at topica.com"=20
  title=3DEUforum at topica.com>EUforum</A> </DIV>
  <DIV style=3D"FONT: 10pt arial"><B>Sent:</B> Monday, April 16, 2001 =
5:26=20
AM</DIV>
  <DIV style=3D"FONT: 10pt arial"><B>Subject:</B> automatic dll =
wrapping</DIV>
</PRE><PRE>=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
Maximize your email efficiency with My Topica. Searchable
archives, vacation options, and more. Sign up now at
<A =
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D</PRE>
  <DIV><FONT face=3DArial size=3D2>I was thinking that it could be =
possible to make=20
  a program which would automatically wrap a dll. It would have .dll and =
.h file=20
  for input, or maybe just .h file, and output would be one big .ew =
file. It=20
  could/should also handle&nbsp;strings and structures. My WinMania =
library=20
  could be automatically generated without any work (hand editing)=20
  with&nbsp;such program. This is definiteley something =
that&nbsp;will/should=20
  probalby&nbsp;be done sometimes for Eu. euAllegro library could also=20
  be&nbsp;generated with&nbsp;such program.&nbsp;It would be like C to =
Eu=20
  translator, but only for functions in dlls. This would be a =
challenging task=20
  for someone to do. It would basically be a parser (very powerful, like =
a C=20
  compiler almost) for .h files.</FONT><FONT face=3DArial size=3D2> Then =
it would be=20
  using C libraries in Euphoria very easy, you would just&nbsp;generate=20
  appropriate .ew file for a dll and you could use it like in C but with =

  Euphoria language. Anybody knows of any limits why this couldn't be =
done,=20
  anybody thought of this =
before?</FONT></DIV><PRE>=3D=3D^=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=


<A =
=3D=3D^=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=

------=_NextPart_000_0055_01C0C596.29A32D60--

new topic     » goto parent     » topic index » view message » categorize

3. Re: automatic dll wrapping

This is a multi-part message in MIME format.

------=_NextPart_000_0042_01C0C59D.138FC360
	charset="iso-8859-2"

Hi Tone.

I use a parser I created with help from code by Dave Cuny,
Buddy Hyleberg and others to do a fair bit of the work to wrap=20
Morfit.

It creates an include which wraps all the "define_c_func",
"define_c_proc" stuff and also creates another include with
empty functions (uses function names etc) that are the
actual wrapper functions. These have to be completed by
hand (eg peeks, pokes, atom_to_floats etc). It also "imports"
all completed functions from the previous Morfit version.

It isn't very good code (my parts, not the bits I ripped off
others!) but I will send it to you if you like. The Morfit .h file
also seems to be pretty simple to parse compared to others
I have seen.

Good luck with it.

Mark=20
  ----- Original Message -----=20
  From: Ray Smith=20
  To: EUforum=20
  Sent: Sunday, April 15, 2001 9:53 AM
  Subject: Re: automatic dll wrapping



  Hi,

  Yes this has been attempted before.

  Look in the archives for SWIG/Euphoria by the great David Cuny!!!
  SWIG is an Open Source project that is used to wrap DLL's for
  a number of scripting languages (Perl and Python being the Primary =
ones??).

  SWIG/Euphoria is/was David Cuny's attempt for a Euphoria version. =20
  I can't remember how good it was ... it worked at some level for sure.
  It would be a good starting point though and I'm sure full of =
information
  for anyone attempting similar things.

  I also attempted my own version when I was wrapping Allegro without =
sucess.

  If you know pascal the FreePascal people have a H2PAS program which
  converts C header files to pascal.  Again this has limiations but =
might
  prove to have useful code or ideas.=20

  Once you can parse a C Header file I believe the code generation =
wouldn't
  be to difficult.

  Ray Smith.

    ----- Original Message -----=20
    From: Tone Skoda=20
    To: EUforum=20
    Sent: Monday, April 16, 2001 5:26 AM
    Subject: automatic dll wrapping

=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
Maximize your email efficiency with My Topica. Searchable
archives, vacation options, and more. Sign up now at

  I was thinking that it could be possible to make=20
  a program which would automatically wrap a dll. It would have .dll and =
.h file=20
  for input, or maybe just .h file, and output would be one big .ew =
file. It=20
  could/should also handle strings and structures. My WinMania library=20
  could be automatically generated without any work (hand editing)=20
  with such program. This is definiteley something that will/should=20
  probalby be done sometimes for Eu. euAllegro library could also=20
  be generated with such program. It would be like C to Eu=20
  translator, but only for functions in dlls. This would be a =
challenging task=20
  for someone to do. It would basically be a parser (very powerful, like =
a C=20
  compiler almost) for .h files. Then it would be=20
  using C libraries in Euphoria very easy, you would just generate=20
  appropriate .ew file for a dll and you could use it like in C but with =

  Euphoria language. Anybody knows of any limits why this couldn't be =
done,=20
  anybody thought of this =
before?=3D=3D^=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D

=3D=3D^=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=

=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D


------=_NextPart_000_0042_01C0C59D.138FC360
Content-Type: text/html;
	charset="iso-8859-2"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=3DContent-Type content=3D"text/html; =
charset=3Diso-8859-2">
<META content=3D"MSHTML 5.50.4611.1300" name=3DGENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=3D#ffffff>
<DIV><FONT face=3DArial size=3D2>Hi Tone.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>I use a parser I created with help from =
code by=20
Dave Cuny,</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>Buddy Hyleberg </FONT><FONT =
face=3DArial=20
size=3D2>and&nbsp;others to do a fair bit of the work to wrap =
</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>Morfit.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>It creates an include which wraps all =
the=20
"define_c_func",</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>"define_c_proc" stuff and also creates =
another=20
include with</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>empty functions (uses function names =
etc) that are=20
the</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>actual wrapper functions. These have to =
be=20
completed by</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>hand (eg peeks, pokes, atom_to_floats =
etc). It also=20
"imports"</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>all&nbsp;completed functions from the =
previous=20
Morfit version.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>It isn't very good code (my&nbsp;parts, =
not the=20
bits I ripped off</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>others!) but I will send it to you if =
you like. The=20
Morfit .h file</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>also seems to be pretty simple to parse =
compared to=20
others</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>I have seen.</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Good luck with it.</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Mark</FONT>&nbsp;</DIV>
<BLOCKQUOTE dir=3Dltr=20
style=3D"PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; =
BORDER-LEFT: #000000 2px solid; MARGIN-RIGHT: 0px">
  <DIV style=3D"FONT: 10pt arial">----- Original Message ----- </DIV>
  <DIV=20
  style=3D"BACKGROUND: #e4e4e4; FONT: 10pt arial; font-color: =
black"><B>From:</B>=20
  <A title=3Dsmithr at ix.net.au href=3D"mailto:smithr at ix.net.au">Ray =
Smith</A> </DIV>
  <DIV style=3D"FONT: 10pt arial"><B>To:</B> <A =
title=3DEUforum at topica.com=20
  href=3D"mailto:EUforum at topica.com">EUforum</A> </DIV>
  <DIV style=3D"FONT: 10pt arial"><B>Sent:</B> Sunday, April 15, 2001 =
9:53=20
AM</DIV>
  <DIV style=3D"FONT: 10pt arial"><B>Subject:</B> Re: automatic dll =
wrapping</DIV>
<A =
  <DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
  <DIV><FONT face=3DArial size=3D2>Look in the archives for =
SWIG/Euphoria by the=20
  great David Cuny!!!</FONT></DIV>
  <DIV><FONT face=3DArial size=3D2>SWIG is an Open Source project that =
is used to=20
  wrap DLL's for</FONT></DIV>
  <DIV><FONT face=3DArial size=3D2>a number of scripting languages (Perl =
and Python=20
  being the Primary ones??).</FONT></DIV>
  <DIV>&nbsp;</DIV>
  <DIV><FONT face=3DArial size=3D2>SWIG/Euphoria is/was David Cuny's =
attempt for a=20
  Euphoria version.&nbsp; </FONT></DIV>
  <DIV><FONT face=3DArial size=3D2>I can't remember how good it was ... =
it worked at=20
  some level for sure.</FONT></DIV>
  <DIV><FONT face=3DArial size=3D2>It would be a good starting point =
though and I'm=20
  sure full of information</FONT></DIV>
  <DIV><FONT face=3DArial size=3D2>for anyone attempting similar=20
things.</FONT></DIV>
  <DIV>&nbsp;</DIV>
  <DIV><FONT face=3DArial size=3D2>I also attempted my own version when =
I was=20
  wrapping </FONT><FONT face=3DArial size=3D2>Allegro without =
sucess.</FONT></DIV>
  <DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
  <DIV><FONT face=3DArial size=3D2>If you know pascal the FreePascal =
people have a=20
  H2PAS program which</FONT></DIV>
  <DIV><FONT face=3DArial size=3D2>converts C header files to =
pascal.&nbsp; Again=20
  this has limiations but might</FONT></DIV>
  <DIV><FONT face=3DArial size=3D2>prove to have useful code or ideas. =
</FONT></DIV>
  <DIV>&nbsp;</DIV>
  <DIV><FONT face=3DArial size=3D2>Once you can parse a C Header file I =
believe the=20
  code generation wouldn't</FONT></DIV>
  <DIV><FONT face=3DArial size=3D2>be to difficult.</FONT></DIV>
  <DIV>&nbsp;</DIV>
  <DIV><FONT face=3DArial size=3D2>Ray Smith.</FONT></DIV>
  <DIV>&nbsp;</DIV>
  <BLOCKQUOTE=20
  style=3D"PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; =
BORDER-LEFT: #000000 2px solid; MARGIN-RIGHT: 0px">
    <DIV style=3D"FONT: 10pt arial">----- Original Message ----- </DIV>
    <DIV=20
    style=3D"BACKGROUND: #e4e4e4; FONT: 10pt arial; font-color: =
black"><B>From:</B>=20
    <A title=3Dtone.skoda at siol.net =
href=3D"mailto:tone.skoda at siol.net">Tone=20
    Skoda</A> </DIV>
    <DIV style=3D"FONT: 10pt arial"><B>To:</B> <A =
title=3DEUforum at topica.com=20
    href=3D"mailto:EUforum at topica.com">EUforum</A> </DIV>
    <DIV style=3D"FONT: 10pt arial"><B>Sent:</B> Monday, April 16, 2001 =
5:26=20
    AM</DIV>
    <DIV style=3D"FONT: 10pt arial"><B>Subject:</B> automatic dll =
wrapping</DIV><PRE></PRE><PRE>=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D
Maximize your email efficiency with My Topica. Searchable
archives, vacation options, and more. Sign up now at
<A =3D"=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D</PRE">
  <DIV><FONT face=3DArial size=3D2>I was thinking that it could be =
possible to make=20
  a program which would automatically wrap a dll. It would have .dll and =
.h file=20
  for input, or maybe just .h file, and output would be one big .ew =
file. It=20
  could/should also handle&nbsp;strings and structures. My WinMania =
library=20
  could be automatically generated without any work (hand editing)=20
  with&nbsp;such program. This is definiteley something =
that&nbsp;will/should=20
  probalby&nbsp;be done sometimes for Eu. euAllegro library could also=20
  be&nbsp;generated with&nbsp;such program.&nbsp;It would be like C to =
Eu=20
  translator, but only for functions in dlls. This would be a =
challenging task=20
  for someone to do. It would basically be a parser (very powerful, like =
a C=20
  compiler almost) for .h files.</FONT><FONT face=3DArial size=3D2> Then =
it would be=20
  using C libraries in Euphoria very easy, you would just&nbsp;generate=20
  appropriate .ew file for a dll and you could use it like in C but with =

  Euphoria language. Anybody knows of any limits why this couldn't be =
done,=20
  anybody thought of this =
before?</FONT></DIV><PRE>=3D=3D^=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=


<A =
=3D"=3D^=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
" =
<PRE>=3D=3D^=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=

<A =
=3D=3D^=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=

------=_NextPart_000_0042_01C0C59D.138FC360--

new topic     » goto parent     » topic index » view message » categorize

4. Re: automatic dll wrapping

Tone Skoda wrote:

> I was thinking that it could be possible to make
> a program which would automatically wrap a dll.

Yes, this can be done. at one point, I had written module for SWIG (Simple
Wrapper Interface Generator) that would automatically generate DLLs for C
and C++ modules. It wasn't very good at handling custom datatypes, though -
it treated them all as pointers.

A better approach than trying to be able to parse any C/C++ file would to
simplify the grammar that the program accepted. For example, you could
restrict it to only being able to read function prototypes, and simple
structs. It's a lot easier to clean up the code by hand than it is to make
the code smarter, and the result it the same. It's a lot easier to maintain
the code, too.

I had written another wrapper generator along the lines that I just
described, but I seem to have misplaced it. I'll have to dig it up, because
even thought it was incomplete, it did a nice job of wrapping inherited C++
methods...

-- David Cuny

new topic     » goto parent     » topic index » view message » categorize

5. Re: automatic dll wrapping

This is a multi-part message in MIME format.

------=_NextPart_000_00CB_01C0C5EA.1C5DC3A0
	charset="iso-8859-2"

Yes, I'm interested in your code.
I wrote 20 kb .h parser yesterday, no testing yet, I think i'll be =
debugging it 3 weeks :), and I think I got to deep, because I also =
consider #ifdef and macros and here evaluating of expressions is needed.
I want to acomplish that there wouldn't be any hand editing needed of =
.ew files translated.


----- Original Message -----=20
  From: Mark Brown=20
  To: EUforum=20
  Sent: Sunday, April 15, 2001 3:43 AM
  Subject: Re: automatic dll wrapping



=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
"Before myTopica, I was buried in an avalanche of email.
Now, thanks to this free solution, I am on top of my inbox."
Get rescued at
  Hi Tone.
  =20
  I use a parser I created with help from code by Dave Cuny,
  Buddy Hyleberg and others to do a fair bit of the work to wrap=20
  Morfit.
  =20
  It creates an include which wraps all the "define_c_func",
  "define_c_proc" stuff and also creates another include with
  empty functions (uses function names etc) that are the
  actual wrapper functions. These have to be completed by
  hand (eg peeks, pokes, atom_to_floats etc). It also "imports"
  all completed functions from the previous Morfit version.
  =20
  It isn't very good code (my parts, not the bits I ripped off
  others!) but I will send it to you if you like. The Morfit .h file
  also seems to be pretty simple to parse compared to others
  I have seen.

  Good luck with it.

  Mark=20
    ----- Original Message -----=20
    From: Ray Smith=20
    To: EUforum=20
    Sent: Sunday, April 15, 2001 9:53 AM
    Subject: Re: automatic dll wrapping
    =20
    Look in the archives for SWIG/Euphoria by the great David Cuny!!!
    SWIG is an Open Source project that is used to wrap DLL's for
    a number of scripting languages (Perl and Python being the Primary =
ones??).

    SWIG/Euphoria is/was David Cuny's attempt for a Euphoria version. =20
    I can't remember how good it was ... it worked at some level for =
sure.
    It would be a good starting point though and I'm sure full of =
information
    for anyone attempting similar things.

    I also attempted my own version when I was wrapping Allegro without =
sucess.
    =20
    If you know pascal the FreePascal people have a H2PAS program which
    converts C header files to pascal.  Again this has limiations but =
might
    prove to have useful code or ideas.=20

    Once you can parse a C Header file I believe the code generation =
wouldn't
    be to difficult.

    Ray Smith.

      ----- Original Message -----=20
      From: Tone Skoda=20
      To: EUforum=20
      Sent: Monday, April 16, 2001 5:26 AM
      Subject: automatic dll wrapping

=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
Maximize your email efficiency with My Topica. Searchable
archives, vacation options, and more. Sign up now at

  I was thinking that it could be possible to make=20
  a program which would automatically wrap a dll. It would have .dll and =
.h file=20
  for input, or maybe just .h file, and output would be one big .ew =
file. It=20
  could/should also handle strings and structures. My WinMania library=20
  could be automatically generated without any work (hand editing)=20
  with such program. This is definiteley something that will/should=20
  probalby be done sometimes for Eu. euAllegro library could also=20
  be generated with such program. It would be like C to Eu=20
  translator, but only for functions in dlls. This would be a =
challenging task=20
  for someone to do. It would basically be a parser (very powerful, like =
a C=20
  compiler almost) for .h files. Then it would be=20
  using C libraries in Euphoria very easy, you would just generate=20
  appropriate .ew file for a dll and you could use it like in C but with =

  Euphoria language. Anybody knows of any limits why this couldn't be =
done,=20
  anybody thought of this =
before?=3D=3D^=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D

=3D=3D^=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
=3D=3D^=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=

=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D


------=_NextPart_000_00CB_01C0C5EA.1C5DC3A0
Content-Type: text/html;
	charset="iso-8859-2"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META content=3D"text/html; charset=3Diso-8859-2" =
http-equiv=3DContent-Type>
<META content=3D"MSHTML 5.00.2614.3401" name=3DGENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=3D#ffffff>
<DIV><FONT face=3DArial size=3D2>Yes, I'm interested in your =
code.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>I wrote 20 kb .h parser yesterday, no =
testing yet,=20
I think i'll be debugging it 3 weeks :), and I think I got to deep, =
because I=20
also consider #ifdef and&nbsp;macros and here evaluating of expressions =
is=20
needed.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>I want to acomplish that there wouldn't =
be any hand=20
editing needed of .ew files&nbsp;translated.</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV>----- Original Message ----- </DIV>
<BLOCKQUOTE dir=3Dltr=20
style=3D"BORDER-LEFT: #000000 2px solid; MARGIN-LEFT: 5px; MARGIN-RIGHT: =
0px; PADDING-LEFT: 5px; PADDING-RIGHT: 0px">
  <DIV=20
  style=3D"BACKGROUND: #e4e4e4; FONT: 10pt arial; font-color: =
black"><B>From:</B>=20
  <A href=3D"mailto:mabrown at SENET.COM.AU" =
title=3Dmabrown at SENET.COM.AU>Mark=20
  Brown</A> </DIV>
  <DIV style=3D"FONT: 10pt arial"><B>To:</B> <A =
href=3D"mailto:EUforum at topica.com"=20
  title=3DEUforum at topica.com>EUforum</A> </DIV>
  <DIV style=3D"FONT: 10pt arial"><B>Sent:</B> Sunday, April 15, 2001 =
3:43=20
AM</DIV>
  <DIV style=3D"FONT: 10pt arial"><B>Subject:</B> Re: automatic dll =
wrapping</DIV>
</PRE><PRE>=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
"Before myTopica, I was buried in an avalanche of email.
Now, thanks to this free solution, I am on top of my inbox."
Get rescued at
<A =
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D</PRE>
  <DIV><FONT face=3DArial size=3D2>Hi Tone.</FONT></DIV>
  <DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
  <DIV><FONT face=3DArial size=3D2>I use a parser I created with help =
from code by=20
  Dave Cuny,</FONT></DIV>
  <DIV><FONT face=3DArial size=3D2>Buddy Hyleberg </FONT><FONT =
face=3DArial=20
  size=3D2>and&nbsp;others to do a fair bit of the work to wrap =
</FONT></DIV>
  <DIV><FONT face=3DArial size=3D2>Morfit.</FONT></DIV>
  <DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
  <DIV><FONT face=3DArial size=3D2>It creates an include which wraps all =
the=20
  "define_c_func",</FONT></DIV>
  <DIV><FONT face=3DArial size=3D2>"define_c_proc" stuff and also =
creates another=20
  include with</FONT></DIV>
  <DIV><FONT face=3DArial size=3D2>empty functions (uses function names =
etc) that=20
  are the</FONT></DIV>
  <DIV><FONT face=3DArial size=3D2>actual wrapper functions. These have =
to be=20
  completed by</FONT></DIV>
  <DIV><FONT face=3DArial size=3D2>hand (eg peeks, pokes, atom_to_floats =
etc). It=20
  also "imports"</FONT></DIV>
  <DIV><FONT face=3DArial size=3D2>all&nbsp;completed functions from the =
previous=20
  Morfit version.</FONT></DIV>
  <DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
  <DIV><FONT face=3DArial size=3D2>It isn't very good code =
(my&nbsp;parts, not the=20
  bits I ripped off</FONT></DIV>
  <DIV><FONT face=3DArial size=3D2>others!) but I will send it to you if =
you like.=20
  The Morfit .h file</FONT></DIV>
  <DIV><FONT face=3DArial size=3D2>also seems to be pretty simple to =
parse compared=20
  to others</FONT></DIV>
  <DIV><FONT face=3DArial size=3D2>I have seen.</FONT></DIV>
  <DIV>&nbsp;</DIV>
  <DIV><FONT face=3DArial size=3D2>Good luck with it.</FONT></DIV>
  <DIV>&nbsp;</DIV>
  <DIV><FONT face=3DArial size=3D2>Mark</FONT>&nbsp;</DIV>
  <BLOCKQUOTE dir=3Dltr=20
  style=3D"BORDER-LEFT: #000000 2px solid; MARGIN-LEFT: 5px; =
MARGIN-RIGHT: 0px; PADDING-LEFT: 5px; PADDING-RIGHT: 0px">
    <DIV style=3D"FONT: 10pt arial">----- Original Message ----- </DIV>
    <DIV=20
    style=3D"BACKGROUND: #e4e4e4; FONT: 10pt arial; font-color: =
black"><B>From:</B>=20
    <A href=3D"mailto:smithr at ix.net.au" title=3Dsmithr at ix.net.au>Ray =
Smith</A>=20
</DIV>
    <DIV style=3D"FONT: 10pt arial"><B>To:</B> <A =
href=3D"mailto:EUforum at topica.com"=20
    title=3DEUforum at topica.com>EUforum</A> </DIV>
    <DIV style=3D"FONT: 10pt arial"><B>Sent:</B> Sunday, April 15, 2001 =
9:53=20
    AM</DIV>
    <DIV style=3D"FONT: 10pt arial"><B>Subject:</B> Re: automatic dll=20
    wrapping</DIV><A <DIV><FONT face=3DArial size=3D2></FONT>&nbsp;
    <DIV></DIV>
    <DIV><FONT face=3DArial size=3D2>Look in the archives for =
SWIG/Euphoria by the=20
    great David Cuny!!!</FONT></DIV>
    <DIV><FONT face=3DArial size=3D2>SWIG is an Open Source project that =
is used to=20
    wrap DLL's for</FONT></DIV>
    <DIV><FONT face=3DArial size=3D2>a number of scripting languages =
(Perl and=20
    Python being the Primary ones??).</FONT></DIV>
    <DIV>&nbsp;</DIV>
    <DIV><FONT face=3DArial size=3D2>SWIG/Euphoria is/was David Cuny's =
attempt for a=20
    Euphoria version.&nbsp; </FONT></DIV>
    <DIV><FONT face=3DArial size=3D2>I can't remember how good it was =
... it worked=20
    at some level for sure.</FONT></DIV>
    <DIV><FONT face=3DArial size=3D2>It would be a good starting point =
though and=20
    I'm sure full of information</FONT></DIV>
    <DIV><FONT face=3DArial size=3D2>for anyone attempting similar=20
    things.</FONT></DIV>
    <DIV>&nbsp;</DIV>
    <DIV><FONT face=3DArial size=3D2>I also attempted my own version =
when I was=20
    wrapping </FONT><FONT face=3DArial size=3D2>Allegro without =
sucess.</FONT></DIV>
    <DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
    <DIV><FONT face=3DArial size=3D2>If you know pascal the FreePascal =
people have a=20
    H2PAS program which</FONT></DIV>
    <DIV><FONT face=3DArial size=3D2>converts C header files to =
pascal.&nbsp; Again=20
    this has limiations but might</FONT></DIV>
    <DIV><FONT face=3DArial size=3D2>prove to have useful code or ideas. =

    </FONT></DIV>
    <DIV>&nbsp;</DIV>
    <DIV><FONT face=3DArial size=3D2>Once you can parse a C Header file =
I believe=20
    the code generation wouldn't</FONT></DIV>
    <DIV><FONT face=3DArial size=3D2>be to difficult.</FONT></DIV>
    <DIV>&nbsp;</DIV>
    <DIV><FONT face=3DArial size=3D2>Ray Smith.</FONT></DIV>
    <DIV>&nbsp;</DIV>
    <BLOCKQUOTE=20
    style=3D"BORDER-LEFT: #000000 2px solid; MARGIN-LEFT: 5px; =
MARGIN-RIGHT: 0px; PADDING-LEFT: 5px; PADDING-RIGHT: 0px">
      <DIV style=3D"FONT: 10pt arial">----- Original Message ----- =
</DIV>
      <DIV=20
      style=3D"BACKGROUND: #e4e4e4; FONT: 10pt arial; font-color: =
black"><B>From:</B>=20
      <A href=3D"mailto:tone.skoda at siol.net" =
title=3Dtone.skoda at siol.net>Tone=20
      Skoda</A> </DIV>
      <DIV style=3D"FONT: 10pt arial"><B>To:</B> <A=20
      href=3D"mailto:EUforum at topica.com" =
title=3DEUforum at topica.com>EUforum</A>=20
      </DIV>
      <DIV style=3D"FONT: 10pt arial"><B>Sent:</B> Monday, April 16, =
2001 5:26=20
      AM</DIV>
      <DIV style=3D"FONT: 10pt arial"><B>Subject:</B> automatic dll =
wrapping</DIV><PRE></PRE><PRE>=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D
Maximize your email efficiency with My Topica. Searchable
archives, vacation options, and more. Sign up now at
<A =3D"=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D</PRE">
  <DIV><FONT face=3DArial size=3D2>I was thinking that it could be =
possible to make=20
  a program which would automatically wrap a dll. It would have .dll and =
.h file=20
  for input, or maybe just .h file, and output would be one big .ew =
file. It=20
  could/should also handle&nbsp;strings and structures. My WinMania =
library=20
  could be automatically generated without any work (hand editing)=20
  with&nbsp;such program. This is definiteley something =
that&nbsp;will/should=20
  probalby&nbsp;be done sometimes for Eu. euAllegro library could also=20
  be&nbsp;generated with&nbsp;such program.&nbsp;It would be like C to =
Eu=20
  translator, but only for functions in dlls. This would be a =
challenging task=20
  for someone to do. It would basically be a parser (very powerful, like =
a C=20
  compiler almost) for .h files.</FONT><FONT face=3DArial size=3D2> Then =
it would be=20
  using C libraries in Euphoria very easy, you would just&nbsp;generate=20
  appropriate .ew file for a dll and you could use it like in C but with =

  Euphoria language. Anybody knows of any limits why this couldn't be =
done,=20
  anybody thought of this =
before?</FONT></DIV><PRE>=3D=3D^=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=


<A =
=3D"=3D^=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
" =
<PRE>=3D=3D^=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=

<A =
=3D"=3D^=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
" =
<PRE>=3D=3D^=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=

<A =
=3D=3D^=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=

------=_NextPart_000_00CB_01C0C5EA.1C5DC3A0--

new topic     » goto parent     » topic index » view message » categorize

Search



Quick Links

User menu

Not signed in.

Misc Menu