Discussion:
va_list
Victor Bombi
2014-07-01 08:54:30 UTC
Permalink
Hello,

I am setting a print function as this:

ffi.cdef[[typedef int (*PrintFunc)(const char *format, va_list ap);]]

local function PrintFunc(fmt,...)
print(fmt,...)
--print(string.format(ffi.string(fmt),...))
return 0
end

cbbb = ffi.cast("PrinterFFI",PrintFunc)
lib.SetPrintFunc(cbbb)

this is the output:
cdata<const char *>: 0x63ad8890 cdata<void *>: 0x0022f914

How I should use the va_list : cdata<void *>: 0x0022f914 ?

Thanks
victor
Victor Bombi
2014-07-01 08:57:49 UTC
Permalink
correction:

I am setting a print function as this:

ffi.cdef[[typedef int (*PrintFunc)(const char *format, va_list ap);]]

local function PrintFunc(fmt,...)
print(fmt,...)
--print(string.format(ffi.string(fmt),...))
return 0
end

cbbb = ffi.cast("PrintFunc",PrintFunc)
lib.SetPrintFunc(cbbb)

this is the output:
cdata<const char *>: 0x63ad8890 cdata<void *>: 0x0022f914

How I should use the va_list : cdata<void *>: 0x0022f914 ?

Thanks
victor

----- Original Message -----
From: "Victor Bombi" <sonoro-***@public.gmane.org>
To: <luajit-***@public.gmane.org>
Sent: Tuesday, July 01, 2014 10:54 AM
Subject: va_list
Post by Victor Bombi
Hello,
ffi.cdef[[typedef int (*PrintFunc)(const char *format, va_list ap);]]
local function PrintFunc(fmt,...)
print(fmt,...)
--print(string.format(ffi.string(fmt),...))
return 0
end
cbbb = ffi.cast("PrinterFFI",PrintFunc)
lib.SetPrintFunc(cbbb)
cdata<const char *>: 0x63ad8890 cdata<void *>: 0x0022f914
How I should use the va_list : cdata<void *>: 0x0022f914 ?
Thanks
victor
Victor Bombi
2014-07-01 09:59:31 UTC
Permalink
solved?

local ffi = require("ffi")
ffi.cdef[[typedef int (*PrintFunc)(const char *format, va_list ap);]]
ffi.cdef[[ int vsnprintf(char *target, size_t n, const char *format,
va_list arg_ptr);]]

local buf = ffi.new("char[1024]")
local function PrintFunc(fmt,...)
local ret = ffi.C.vsnprintf(buf,1024,fmt,...)
if ret > 0 then
print(ffi.string(buf))
else
print"failure in vsnprintf"
end
return 0
end

cbbb = ffi.cast("PrintFunc",PrintFunc)
lib.SetPrintFunc(cbbb)

----- Original Message -----
From: "Victor Bombi" <sonoro-***@public.gmane.org>
To: <luajit-***@public.gmane.org>
Sent: Tuesday, July 01, 2014 10:57 AM
Subject: Re: va_list
Post by Victor Bombi
ffi.cdef[[typedef int (*PrintFunc)(const char *format, va_list ap);]]
local function PrintFunc(fmt,...) print(fmt,...)
--print(string.format(ffi.string(fmt),...))
return 0
end
cbbb = ffi.cast("PrintFunc",PrintFunc)
lib.SetPrintFunc(cbbb)
cdata<const char *>: 0x63ad8890 cdata<void *>: 0x0022f914
How I should use the va_list : cdata<void *>: 0x0022f914 ?
Thanks
victor
----- Original Message -----
Sent: Tuesday, July 01, 2014 10:54 AM
Subject: va_list
Post by Victor Bombi
Hello,
ffi.cdef[[typedef int (*PrintFunc)(const char *format, va_list ap);]]
local function PrintFunc(fmt,...) print(fmt,...)
--print(string.format(ffi.string(fmt),...))
return 0
end
cbbb = ffi.cast("PrinterFFI",PrintFunc)
lib.SetPrintFunc(cbbb)
cdata<const char *>: 0x63ad8890 cdata<void *>: 0x0022f914
How I should use the va_list : cdata<void *>: 0x0022f914 ?
Thanks
victor
Loading...