[Vala] How to properly define struct in manually written VAPI?
- From: "marcin saepia net" <marcin saepia net>
- To: vala <vala-list gnome org>
- Subject: [Vala] How to properly define struct in manually written VAPI?
- Date: Wed, 2 Mar 2016 11:19:23 +0100
Hello,
I need to write VAPI for jansson JSON library. I have already started (
https://github.com/akheron/jansson/pull/273) and generally speaking it
works fine but I have an issue with covering one struct.
In C code there's the following struct:
#define JSON_ERROR_TEXT_LENGTH 160
#define JSON_ERROR_SOURCE_LENGTH 80
typedef struct {
int line;
int column;
int position;
char source[JSON_ERROR_SOURCE_LENGTH];
char text[JSON_ERROR_TEXT_LENGTH];
} json_error_t;
it is an output parameter to function that should have the following syntax
in Vala:
loads(string input, LoadFlags flags, out Error error)
I struggle to properly define it in VAPI. When I define it like this:
[CCode (cname = "json_error_t", has_type_id = false)]
public struct Error {
public string text;
public string source;
public int line;
public int column;
public size_t position;
}
it complains about missing copy function during C compilation phase
when I add
[CCode (cname = "json_error_t", has_copy_function = false, has_type_id =
false)]
public struct Error {
public string text;
public string source;
public int line;
public int column;
public size_t position;
}
it then throws
api/auth/oauth2.c:939:2: error: array type 'char [160]' is not assignable
_g_free0 ((*dest).text);
^ ~~~~~~~~~~~~
api/auth/oauth2.c:51:28: note: expanded from macro '_g_free0'
api/auth/oauth2.c:940:15: error: array type 'char [160]' is not assignable
(*dest).text = _tmp1_;
~~~~~~~~~~~~ ^
api/auth/oauth2.c:943:2: error: array type 'char [80]' is not assignable
_g_free0 ((*dest).source);
^ ~~~~~~~~~~~~~~
How to define it properly? Underlying API does not provide any destroy/copy
functions.
I also tried to convert it to the compact class but then Vala Compiler
creates pointer-to-pointer for underlying C code for the parameter which is
improper.
Thanks,
Marcin
[Date Prev][
Date Next] [Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]