Muhammad, your code looks very close to me. Note that I haven't tried this
code, but try something like this:
https://gist.github.com/TooTallNate/d1f8ee799e9764c0ab18

I've only changed:

 * The "pointer" argument type to "string"
 * Don't call `free()` on the passed in char *, V8/node will take care of
that for us and we don't want a double-free

Let me know if that works for you. Cheers!


On Thu, Jul 3, 2014 at 1:36 AM, Muhammad S Maromi <[email protected]>
wrote:

> Hi Nathan,  I want to do is, let's say I have object:
>
> var obj = {foo:1, bar: 2}
>
> then pass that object to ffi function.
> What is the parameter of function (in C module) should be?
>
>
> Thanks ryan, let me check what'll it goes.
>
>
> On Thursday, July 3, 2014 4:52:56 AM UTC+7, ryandesign wrote:
>
>>
>> On Jul 1, 2014, at 10:18 PM, Muhammad S Maromi wrote:
>>
>> > I tried the "straightforward" way, but it produces this error:
>> >
>> > $ node learn.js
>> > /Users/msmaromi/learnnode/trenupp/node_modules/ffi/lib/_foreign_function.js:55
>>
>> >       throw e
>> >             ^
>> > TypeError: error setting argument 0 - writePointer: Buffer instance
>> expected as third argument
>> >     at Object.writePointer (/Users/msmaromi/learnnode/
>> trenupp/node_modules/ffi/node_modules/ref/lib/ref.js:740:11)
>> >     at Object.set (/Users/msmaromi/learnnode/
>> trenupp/node_modules/ffi/node_modules/ref/lib/ref.js:482:13)
>> >     at Object.alloc (/Users/msmaromi/learnnode/
>> trenupp/node_modules/ffi/node_modules/ref/lib/ref.js:514:13)
>> >     at Object.ForeignFunction.proxy [as tesJson]
>> (/Users/msmaromi/learnnode/trenupp/node_modules/ffi/lib/_foreign_function.js:50:22)
>>
>> >     at Object.<anonymous> (/Users/msmaromi/learnnode/trenupp/learn.js:18:9)
>>
>> >     at Module._compile (module.js:456:26)
>> >     at Object.Module._extensions..js (module.js:474:10)
>> >     at Module.load (module.js:356:32)
>> >     at Function.Module._load (module.js:312:12)
>> >     at Function.Module.runMain (module.js:497:10)
>>
>> What do you mean exactly when you say "json object"? Do you mean a
>> JavaScript object like this:
>>
>>
>> var o = {foo: 5};
>>
>>
>> Or do you mean a string representation of that object in JavaScript
>> object notation (JSON) like this:
>>
>>
>> var j = '{foo: 5}';
>>
>>
>> For the latter, I would think you could pass the buffer representation of
>> the string j to an ffi function. That function would need to know how to
>> decode JSON-formatted strings.
>>
>> For the former, you would need to convert o to JSON first (e.g. using
>> JSON.stringify(o)).
>>
>>  --
> Job board: http://jobs.nodejs.org/
> New group rules:
> https://gist.github.com/othiym23/9886289#file-moderation-policy-md
> Old group rules:
> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
> ---
> You received this message because you are subscribed to the Google Groups
> "nodejs" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/nodejs/d1499527-2524-4552-bd14-5465fc1fd894%40googlegroups.com
> <https://groups.google.com/d/msgid/nodejs/d1499527-2524-4552-bd14-5465fc1fd894%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>
> For more options, visit https://groups.google.com/d/optout.
>

-- 
Job board: http://jobs.nodejs.org/
New group rules: 
https://gist.github.com/othiym23/9886289#file-moderation-policy-md
Old group rules: 
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
--- 
You received this message because you are subscribed to the Google Groups 
"nodejs" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/nodejs/CAN5MXofcP7zLEFJduYJSua%2B9Fgm59XJmKC0bNWA1-jDKg5BNfQ%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to