diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2021-03-07 17:52:38 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2021-03-07 17:52:38 (GMT) |
commit | 7a60504691ebd8b914592e60990cc3526cf26e29 (patch) | |
tree | 8093ae850e6dc720296c71deee3c3eb0a5763ed1 /src/analysis/types | |
parent | a79d209385fca4e74a6a85b2386be71ec23057bb (diff) |
Compact data type definitions.
Diffstat (limited to 'src/analysis/types')
-rw-r--r-- | src/analysis/types/proto.c | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/src/analysis/types/proto.c b/src/analysis/types/proto.c index aa096d8..4df0552 100644 --- a/src/analysis/types/proto.c +++ b/src/analysis/types/proto.c @@ -396,6 +396,7 @@ static char *g_proto_type_to_string(const GProtoType *type, bool include) { char *result; /* Valeur à renvoyer */ GDataType *base; /* Version d'instance parente */ + type_obj_extra *extra; /* Données insérées à modifier */ char *namespace; /* Groupe d'appartenance */ size_t i; /* Boucle de parcours */ char *arg; /* Argument à décrire */ @@ -415,15 +416,25 @@ static char *g_proto_type_to_string(const GProtoType *type, bool include) base = G_DATA_TYPE(type); - if (include && base->namespace != NULL) + if (include) { - namespace = g_data_type_to_string(base->namespace, true); - if (namespace == NULL) goto error; + extra = GET_DATA_TYPE_EXTRA(base); - result = stradd(result, namespace); - result = stradd(result, base->ns_sep); + g_bit_lock(&extra->lock, HOLE_LOCK_BIT); - free(namespace); + if (base->namespace != NULL) + { + namespace = g_data_type_to_string(base->namespace, true); + if (namespace == NULL) goto error; + + result = strprep(result, extra->ns_sep); + result = strprep(result, namespace); + + free(namespace); + + } + + g_bit_unlock(&extra->lock, HOLE_LOCK_BIT); } |