summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2020-10-13 22:17:14 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2020-10-13 22:21:21 (GMT)
commit601b8149bf81231a09e2977dbdbfe8e8e568c1f4 (patch)
tree9cf7c0e3b6398b4ad24880b3dcd26ef9b013a7fe /src
parent362ff8ddd7fac8a10c7cccae303d2ce5ea6dd7f2 (diff)
Defined proper Python bindings for class/enum types.
Diffstat (limited to 'src')
-rw-r--r--src/analysis/type.c3
-rw-r--r--src/analysis/types/cse.c24
-rw-r--r--src/analysis/types/cse.h24
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 *);