diff options
Diffstat (limited to 'src')
| -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.                     *  *                                                                             *  | 
