summaryrefslogtreecommitdiff
path: root/src/analysis
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2020-10-10 12:01:40 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2020-10-10 12:01:40 (GMT)
commit0b0f69bd1278b8f5d95c6ea8fb56915148992a77 (patch)
tree0d9ab819a636c6d7bf61e09856283efd1562353a /src/analysis
parent1af362266f616aed07e2661c9676c67dc3365740 (diff)
Updated the basic types definition and its Python bindings.
Diffstat (limited to 'src/analysis')
-rw-r--r--src/analysis/type-int.h6
-rw-r--r--src/analysis/type.c33
-rw-r--r--src/analysis/type.h3
-rw-r--r--src/analysis/types/proto.c30
4 files changed, 65 insertions, 7 deletions
diff --git a/src/analysis/type-int.h b/src/analysis/type-int.h
index f6d931b..f553bf3 100644
--- a/src/analysis/type-int.h
+++ b/src/analysis/type-int.h
@@ -35,6 +35,9 @@ typedef GDataType * (* type_dup_fc) (const GDataType *);
/* Décrit le type fourni sous forme de caractères. */
typedef char * (* type_to_string_fc) (const GDataType *, bool);
+/* Indique si le type assure une gestion des espaces de noms. */
+typedef bool (* type_handle_ns_fc) (const GDataType *);
+
/* Indique si le type est un pointeur. */
typedef bool (* type_is_pointer_fc) (const GDataType *);
@@ -60,11 +63,10 @@ struct _GDataTypeClass
{
GObjectClass parent; /* A laisser en premier */
- bool handle_ns; /* Gestion au niveau de base ? */
-
type_dup_fc dup; /* Copie d'instance existante */
type_to_string_fc to_string; /* Conversion au format texte */
+ type_handle_ns_fc handle_ns; /* Gestion des espaces de noms?*/
type_is_pointer_fc is_pointer; /* Représentation de pointeur ?*/
type_is_reference_fc is_reference; /* Représentation de référence?*/
diff --git a/src/analysis/type.c b/src/analysis/type.c
index 5bcb0e2..f19d846 100644
--- a/src/analysis/type.c
+++ b/src/analysis/type.c
@@ -72,8 +72,6 @@ static void g_data_type_class_init(GDataTypeClass *klass)
object->dispose = (GObjectFinalizeFunc/* ! */)g_data_type_dispose;
object->finalize = (GObjectFinalizeFunc)g_data_type_finalize;
- klass->handle_ns = true;
-
}
@@ -200,7 +198,7 @@ char *g_data_type_to_string(const GDataType *type, bool include)
result = class->to_string(type, include);
- if (include && type->namespace != NULL && class->handle_ns)
+ if (include && type->namespace != NULL && g_data_type_handle_namespaces(type))
{
namespace = g_data_type_to_string(type->namespace, true);
@@ -369,6 +367,35 @@ TypeQualifier g_data_type_get_qualifiers(const GDataType *type)
* *
* Paramètres : type = type à consulter. *
* *
+* Description : Indique si le type assure une gestion des espaces de noms. *
+* *
+* Retour : Bilan de la consultation. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+bool g_data_type_handle_namespaces(const GDataType *type)
+{
+ bool result; /* Bilan à retourner */
+ GDataTypeClass *class; /* Classe du type */
+
+ class = G_DATA_TYPE_GET_CLASS(type);
+
+ if (class->handle_ns != NULL)
+ result = class->handle_ns(type);
+ else
+ result = true;
+
+ return result;
+
+}
+
+
+/******************************************************************************
+* *
+* Paramètres : type = type à consulter. *
+* *
* Description : Indique si le type est un pointeur. *
* *
* Retour : Bilan de la consultation. *
diff --git a/src/analysis/type.h b/src/analysis/type.h
index 431c080..000c557 100644
--- a/src/analysis/type.h
+++ b/src/analysis/type.h
@@ -87,6 +87,9 @@ void g_data_type_add_qualifier(GDataType *, TypeQualifier);
/* Fournit les qualificatifs associés à une instance de type. */
TypeQualifier g_data_type_get_qualifiers(const GDataType *);
+/* Indique si le type assure une gestion des espaces de noms. */
+bool g_data_type_handle_namespaces(const GDataType *);
+
/* Indique si le type est un pointeur. */
bool g_data_type_is_pointer(const GDataType *);
diff --git a/src/analysis/types/proto.c b/src/analysis/types/proto.c
index 362bd88..17f0262 100644
--- a/src/analysis/types/proto.c
+++ b/src/analysis/types/proto.c
@@ -72,6 +72,9 @@ static GDataType *g_proto_type_dup(const GProtoType *);
/* Décrit le type fourni sous forme de caractères. */
static char *g_proto_type_to_string(const GProtoType *, bool);
+/* Indique si le type assure une gestion des espaces de noms. */
+static bool g_proto_type_handle_namespaces(GProtoType *);
+
/* Indique le type défini pour un prototype. */
@@ -102,11 +105,11 @@ static void g_proto_type_class_init(GProtoTypeClass *klass)
type = G_DATA_TYPE_CLASS(klass);
- type->handle_ns = false;
-
type->dup = (type_dup_fc)g_proto_type_dup;
type->to_string = (type_to_string_fc)g_proto_type_to_string;
+ type->handle_ns = (type_handle_ns_fc)g_proto_type_handle_namespaces;
+
}
@@ -321,6 +324,29 @@ static char *g_proto_type_to_string(const GProtoType *type, bool include)
/******************************************************************************
* *
+* Paramètres : type = type à consulter. *
+* *
+* Description : Indique si le type assure une gestion des espaces de noms. *
+* *
+* Retour : Bilan de la consultation. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+static bool g_proto_type_handle_namespaces(GProtoType *type)
+{
+ bool result; /* Bilan à retourner */
+
+ result = false;
+
+ return result;
+
+}
+
+
+/******************************************************************************
+* *
* Paramètres : type = type à mettre à jour. *
* ret = indication sur le type de retour. *
* *