summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2018-07-08 19:48:30 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2018-07-08 19:48:30 (GMT)
commit6f3c4bc6ec571dcca8e25b9f82a0c2e72310900c (patch)
tree35d5e178a8c93f69956d76e46ed2a2fa9ec84577 /src
parent70fe3101ebd8fe28ef821a0c9097ea51d4e0691b (diff)
Changed the type of namespace separators.
Diffstat (limited to 'src')
-rw-r--r--src/analysis/routine.c7
-rw-r--r--src/analysis/routine.h2
-rw-r--r--src/analysis/type-int.h2
-rw-r--r--src/analysis/type.c15
-rw-r--r--src/analysis/type.h2
5 files changed, 21 insertions, 7 deletions
diff --git a/src/analysis/routine.c b/src/analysis/routine.c
index d223165..19782c7 100644
--- a/src/analysis/routine.c
+++ b/src/analysis/routine.c
@@ -51,7 +51,7 @@ struct _GBinRoutine
GDataType *ret_type; /* Type retourné */
GDataType *namespace; /* Espace de noms / classe */
- const char *ns_sep; /* Séparateur d'éléments */
+ char *ns_sep; /* Séparateur d'éléments */
char *name; /* Désignation humaine */
GDataType *full_name; /* Désignation très complète */
@@ -250,11 +250,14 @@ void g_binary_routine_set_type(GBinRoutine *routine, RoutineType type)
* *
******************************************************************************/
-void g_binary_routine_set_namespace(GBinRoutine *routine, GDataType *namespace, const char *sep)
+void g_binary_routine_set_namespace(GBinRoutine *routine, GDataType *namespace, char *sep)
{
if (routine->namespace != NULL)
g_object_unref(G_OBJECT(routine->namespace));
+ if (routine->ns_sep != NULL)
+ free(routine->ns_sep);
+
routine->namespace = namespace;
routine->ns_sep = sep;
diff --git a/src/analysis/routine.h b/src/analysis/routine.h
index 9671c92..e1512a8 100644
--- a/src/analysis/routine.h
+++ b/src/analysis/routine.h
@@ -75,7 +75,7 @@ GBinRoutine *g_binary_routine_new_constructor(GDataType *);
void g_binary_routine_set_type(GBinRoutine *, RoutineType);
/* Définit le groupe d'appartenance d'une routine donnée. */
-void g_binary_routine_set_namespace(GBinRoutine *, GDataType *, const char *);
+void g_binary_routine_set_namespace(GBinRoutine *, GDataType *, char *);
/* Fournit le groupe d'appartenance d'une routine donnée. */
GDataType *g_binary_routine_get_namespace(const GBinRoutine *);
diff --git a/src/analysis/type-int.h b/src/analysis/type-int.h
index 3c34680..08b6338 100644
--- a/src/analysis/type-int.h
+++ b/src/analysis/type-int.h
@@ -49,7 +49,7 @@ struct _GDataType
GObject parent; /* A laisser en premier */
GDataType *namespace; /* Espace de noms / classe */
- const char *ns_sep; /* Séparateur d'éléments */
+ char *ns_sep; /* Séparateur d'éléments */
TypeQualifier qualifiers; /* Eventuels qualificatifs */
diff --git a/src/analysis/type.c b/src/analysis/type.c
index 5c1878f..d0ab4f5 100644
--- a/src/analysis/type.c
+++ b/src/analysis/type.c
@@ -25,6 +25,7 @@
#include <malloc.h>
+#include <string.h>
#include "type-int.h"
@@ -130,6 +131,9 @@ static void g_data_type_dispose(GDataType *type)
static void g_data_type_finalize(GDataType *type)
{
+ if (type->ns_sep != NULL)
+ free(type->ns_sep);
+
G_OBJECT_CLASS(g_data_type_parent_class)->finalize(G_OBJECT(type));
}
@@ -152,6 +156,7 @@ GDataType *g_data_type_dup(const GDataType *type)
GDataType *result; /* Copie à retourner */
GDataTypeClass *class; /* Classe du type */
GDataType *ns; /* Eventuel espace de noms */
+ char *ns_sep; /* Séparation des espaces */
class = G_DATA_TYPE_GET_CLASS(type);
@@ -160,7 +165,10 @@ GDataType *g_data_type_dup(const GDataType *type)
if (type->namespace != NULL)
{
ns = g_data_type_dup(type->namespace);
- g_data_type_set_namespace(result, ns, type->ns_sep);
+ ns_sep = type->ns_sep != NULL ? strdup(type->ns_sep) : NULL;
+
+ g_data_type_set_namespace(result, ns, ns_sep);
+
}
result->qualifiers = type->qualifiers;
@@ -232,11 +240,14 @@ char *g_data_type_to_string(const GDataType *type, bool include)
* *
******************************************************************************/
-void g_data_type_set_namespace(GDataType *type, GDataType *namespace, const char *sep)
+void g_data_type_set_namespace(GDataType *type, GDataType *namespace, char *sep)
{
if (type->namespace != NULL)
g_object_unref(G_OBJECT(type->namespace));
+ if (type->ns_sep != NULL)
+ free(type->ns_sep);
+
type->namespace = namespace;
type->ns_sep = sep;
diff --git a/src/analysis/type.h b/src/analysis/type.h
index a8a9d5f..108256e 100644
--- a/src/analysis/type.h
+++ b/src/analysis/type.h
@@ -70,7 +70,7 @@ GDataType *g_data_type_dup(const GDataType *);
char *g_data_type_to_string(const GDataType *, bool);
/* Définit le groupe d'appartenance d'un type donné. */
-void g_data_type_set_namespace(GDataType *, GDataType *, const char *);
+void g_data_type_set_namespace(GDataType *, GDataType *, char *);
/* Fournit le groupe d'appartenance d'un type donné. */
GDataType *g_data_type_get_namespace(const GDataType *);