Concerning release: 33
Subject: Question
Title: A Char quickie
|
initial message posted by John Eikenberry on 2000/03/16 13:30:04
|
When calling an external function that takes a single char as an argument...
extern void SLsmg_write_char (char);
Is there anything special that needs to be done. Here's what I currently have:
function slsmg_write_char ch
arg Char ch
external slib "SLsmg_write_char"
But this spits out a random character when called. Usually some strange control
character.
I've tried various things, like passing in an address, a single length string,
plus a few others. But with no luck.
Any tips. Thanks.
|
answer posted by Hubert Tonneau on 2000/03/16 13:52:34
|
In Pliant, a 'Char' data is not an atomic data because it's size is not
the same as an 'Int'. As a result, it's always passed by address.
Use something like this:
function my_slsmg_write_char chnum
arg Int chnum
external slib "SLsmg_write_char"
function slsmg_write_char ch
arg Char ch
my_slsmg_write_char ch:number
If you don't like it, you have to define 'CChar', just as I did for 'CStr'.
Should be somethink like this, also I did not test it:
type CChar
field Int number
function 'cast CChar' c -> cc
arg Char c ; arg CChar cc
implicit
cc number := c number
function 'cast Char' cc -> cc
arg CChar cc ; arg Char c
implicit
c := character cc:number
|
answer posted by John Eikenberry on 2000/03/16 14:33:50
|
Great... I knew it'd be something fairly simple. Thanks for the help.
|