diff options
Diffstat (limited to 'src/analysis')
-rw-r--r-- | src/analysis/type-int.h | 6 | ||||
-rw-r--r-- | src/analysis/type.c | 33 | ||||
-rw-r--r-- | src/analysis/type.h | 3 | ||||
-rw-r--r-- | src/analysis/types/proto.c | 30 |
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. * * * |