diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2020-10-13 22:17:14 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2020-10-13 22:21:21 (GMT) |
commit | 601b8149bf81231a09e2977dbdbfe8e8e568c1f4 (patch) | |
tree | 9cf7c0e3b6398b4ad24880b3dcd26ef9b013a7fe /src | |
parent | 362ff8ddd7fac8a10c7cccae303d2ce5ea6dd7f2 (diff) |
Defined proper Python bindings for class/enum types.
Diffstat (limited to 'src')
-rw-r--r-- | src/analysis/type.c | 3 | ||||
-rw-r--r-- | src/analysis/types/cse.c | 24 | ||||
-rw-r--r-- | src/analysis/types/cse.h | 24 |
3 files changed, 27 insertions, 24 deletions
diff --git a/src/analysis/type.c b/src/analysis/type.c index f19d846..9a8e85b 100644 --- a/src/analysis/type.c +++ b/src/analysis/type.c @@ -198,6 +198,9 @@ char *g_data_type_to_string(const GDataType *type, bool include) result = class->to_string(type, include); + if (result == NULL) + result = strdup(""); + if (include && type->namespace != NULL && g_data_type_handle_namespaces(type)) { namespace = g_data_type_to_string(type->namespace, true); diff --git a/src/analysis/types/cse.c b/src/analysis/types/cse.c index 54884af..9f9adcd 100644 --- a/src/analysis/types/cse.c +++ b/src/analysis/types/cse.c @@ -37,7 +37,7 @@ struct _GClassEnumType { GDataType parent; /* A laisser en premier */ - ClassEnumType type; /* Type représenté si connu */ + ClassEnumKind kind; /* Type représenté si connu */ char *name; /* Description humaine */ }; @@ -118,7 +118,7 @@ static void g_class_enum_type_class_init(GClassEnumTypeClass *klass) static void g_class_enum_type_init(GClassEnumType *type) { - type->type = CET_COUNT; + type->kind = CEK_COUNT; type->name = NULL; } @@ -167,7 +167,7 @@ static void g_class_enum_type_finalize(GClassEnumType *type) /****************************************************************************** * * -* Paramètres : type = type de structure à représenter. * +* Paramètres : kind = type de structure à représenter. * * name = désignation humaine du type. * * * * Description : Crée une représentation de classe, structure ou énumération. * @@ -178,13 +178,13 @@ static void g_class_enum_type_finalize(GClassEnumType *type) * * ******************************************************************************/ -GDataType *g_class_enum_type_new(ClassEnumType type, char *name) +GDataType *g_class_enum_type_new(ClassEnumKind kind, char *name) { GClassEnumType *result; /* Structure à retourner */ result = g_object_new(G_TYPE_CLASS_ENUM_TYPE, NULL); - result->type = type; + result->kind = kind; result->name = name; return G_DATA_TYPE(result); @@ -211,7 +211,7 @@ static GDataType *g_class_enum_type_dup(const GClassEnumType *type) name = (type->name != NULL ? strdup(type->name) : NULL); - result = g_class_enum_type_new(type->type, name); + result = g_class_enum_type_new(type->kind, name); return result; @@ -235,13 +235,13 @@ static char *g_class_enum_type_to_string(const GClassEnumType *type, bool includ { char *result; /* Valeur à renvoyer */ - switch (type->type) + switch (type->kind) { - case CET_VIRTUAL_TABLE: + case CEK_VIRTUAL_TABLE: result = strdup("vtable"); break; - case CET_VIRTUAL_STRUCT: + case CEK_VIRTUAL_STRUCT: result = strdup("vstruct"); break; @@ -268,11 +268,11 @@ static char *g_class_enum_type_to_string(const GClassEnumType *type, bool includ * * ******************************************************************************/ -ClassEnumType g_class_enum_type_get_base(const GClassEnumType *type) +ClassEnumKind g_class_enum_type_get_kind(const GClassEnumType *type) { - ClassEnumType result; /* Type de base à renvoyer */ + ClassEnumKind result; /* Type de base à renvoyer */ - result = type->type; + result = type->kind; return result; diff --git a/src/analysis/types/cse.h b/src/analysis/types/cse.h index ad0bc58..5831928 100644 --- a/src/analysis/types/cse.h +++ b/src/analysis/types/cse.h @@ -48,29 +48,29 @@ typedef struct _GClassEnumTypeClass GClassEnumTypeClass; /* Type pris en compte */ -typedef enum _ClassEnumType +typedef enum _ClassEnumKind { - CET_UNKNOWN, /* Statut inconnu */ - CET_STRUCT, /* Structure */ - CET_ENUM, /* Enumération */ - CET_CLASS, /* Classe */ - CET_NAMESPACE, /* Espace de nom */ - CET_VIRTUAL_TABLE, /* Table virtuelle */ - CET_VIRTUAL_STRUCT, /* Indice de construction VT */ + CEK_UNKNOWN, /* Statut inconnu */ + CEK_STRUCT, /* Structure */ + CEK_ENUM, /* Enumération */ + CEK_CLASS, /* Classe */ + CEK_NAMESPACE, /* Espace de nom */ + CEK_VIRTUAL_TABLE, /* Table virtuelle */ + CEK_VIRTUAL_STRUCT, /* Indice de construction VT */ - CET_COUNT + CEK_COUNT -} ClassEnumType; +} ClassEnumKind; /* Indique le type défini pour un type classe ou assimilé. */ GType g_class_enum_type_get_type(void); /* Crée une représentation de classe, structure ou énumération. */ -GDataType *g_class_enum_type_new(ClassEnumType, char *); +GDataType *g_class_enum_type_new(ClassEnumKind, char *); /* Fournit le type pris en compte géré par le type. */ -ClassEnumType g_class_enum_type_get_base(const GClassEnumType *); +ClassEnumKind g_class_enum_type_get_kind(const GClassEnumType *); /* Donne la désignation de la classe / structure / énumération. */ const char *g_class_enum_type_get_name(const GClassEnumType *); |