mirror of
https://github.com/Ryujinx/GtkSharp.git
synced 2024-12-23 09:35:28 +00:00
generator: Handle different gapi content if from bindinator or our parser
Basically our "parser" does not generate <field> for instance structure parent wherease bindinator generate (broken ones, being pointers instead of plain structures)
This commit is contained in:
parent
c88946e213
commit
7d7036c9c6
|
@ -75,7 +75,7 @@ namespace GtkSharp.Generation {
|
||||||
deprecated = elem.GetAttributeAsBoolean ("deprecated");
|
deprecated = elem.GetAttributeAsBoolean ("deprecated");
|
||||||
isabstract = elem.GetAttributeAsBoolean ("abstract");
|
isabstract = elem.GetAttributeAsBoolean ("abstract");
|
||||||
abi_fields_valid = true;
|
abi_fields_valid = true;
|
||||||
bool has_parent = Elem.GetAttribute("parent") != "";
|
string parent_type = Elem.GetAttribute("parent");
|
||||||
|
|
||||||
int num_abi_fields = 0;
|
int num_abi_fields = 0;
|
||||||
foreach (XmlNode node in elem.ChildNodes) {
|
foreach (XmlNode node in elem.ChildNodes) {
|
||||||
|
@ -86,7 +86,13 @@ namespace GtkSharp.Generation {
|
||||||
// Make sure ABI fields are taken into account, even when hidden.
|
// Make sure ABI fields are taken into account, even when hidden.
|
||||||
if (node.Name == "field") {
|
if (node.Name == "field") {
|
||||||
num_abi_fields += 1;
|
num_abi_fields += 1;
|
||||||
if (num_abi_fields != 1 || !has_parent) { // Skip instance parent struct
|
// Skip instance parent struct if present, taking into account
|
||||||
|
// bindinator broken behaviour concerning parent field (ie.
|
||||||
|
// marking it as pointer, somehow risky but good enough for now.)
|
||||||
|
if (num_abi_fields != 1 ||
|
||||||
|
parent_type == "" ||
|
||||||
|
(member.GetAttribute("type").Replace("*", "") != parent_type
|
||||||
|
)) {
|
||||||
abi_field = new StructABIField (member, this, "abi_info");
|
abi_field = new StructABIField (member, this, "abi_info");
|
||||||
abi_fields.Add (abi_field);
|
abi_fields.Add (abi_field);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue