mirror of
https://github.com/varun-r-mallya/sysprof.git
synced 2026-02-09 06:30:54 +00:00
libsysprof-analyze: add mark catalog kind
We can use this to separate catalogs for names vs groups when building tree models of them.
This commit is contained in:
@ -1492,12 +1492,12 @@ sysprof_document_catalog_marks (SysprofDocument *self)
|
|||||||
while (g_hash_table_iter_next (&name_iter, (gpointer *)&name, (gpointer *)&marks))
|
while (g_hash_table_iter_next (&name_iter, (gpointer *)&name, (gpointer *)&marks))
|
||||||
{
|
{
|
||||||
g_autoptr(GListModel) model = _sysprof_document_bitset_index_new (G_LIST_MODEL (self), marks);
|
g_autoptr(GListModel) model = _sysprof_document_bitset_index_new (G_LIST_MODEL (self), marks);
|
||||||
g_autoptr(SysprofMarkCatalog) names_catalog = _sysprof_mark_catalog_new (name, model);
|
g_autoptr(SysprofMarkCatalog) names_catalog = _sysprof_mark_catalog_new (name, model, SYSPROF_MARK_CATALOG_KIND_NAME);
|
||||||
|
|
||||||
g_list_store_append (names_store, names_catalog);
|
g_list_store_append (names_store, names_catalog);
|
||||||
}
|
}
|
||||||
|
|
||||||
group = _sysprof_mark_catalog_new (group_name, G_LIST_MODEL (names_store));
|
group = _sysprof_mark_catalog_new (group_name, G_LIST_MODEL (names_store), SYSPROF_MARK_CATALOG_KIND_GROUP);
|
||||||
|
|
||||||
g_list_store_append (store, group);
|
g_list_store_append (store, group);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -26,7 +26,8 @@
|
|||||||
|
|
||||||
G_BEGIN_DECLS
|
G_BEGIN_DECLS
|
||||||
|
|
||||||
SysprofMarkCatalog *_sysprof_mark_catalog_new (const char *name,
|
SysprofMarkCatalog *_sysprof_mark_catalog_new (const char *name,
|
||||||
GListModel *items);
|
GListModel *items,
|
||||||
|
SysprofMarkCatalogKind kind);
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|||||||
@ -27,11 +27,13 @@ struct _SysprofMarkCatalog
|
|||||||
GObject parent_instance;
|
GObject parent_instance;
|
||||||
GListModel *items;
|
GListModel *items;
|
||||||
char *name;
|
char *name;
|
||||||
|
SysprofMarkCatalogKind kind : 1;
|
||||||
} SysprofMarkCatalogPrivate;
|
} SysprofMarkCatalogPrivate;
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
PROP_0,
|
PROP_0,
|
||||||
PROP_NAME,
|
PROP_NAME,
|
||||||
|
PROP_KIND,
|
||||||
N_PROPS
|
N_PROPS
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -88,6 +90,10 @@ sysprof_mark_catalog_get_property (GObject *object,
|
|||||||
|
|
||||||
switch (prop_id)
|
switch (prop_id)
|
||||||
{
|
{
|
||||||
|
case PROP_KIND:
|
||||||
|
g_value_set_enum (value, sysprof_mark_catalog_get_kind (self));
|
||||||
|
break;
|
||||||
|
|
||||||
case PROP_NAME:
|
case PROP_NAME:
|
||||||
g_value_set_string (value, sysprof_mark_catalog_get_name (self));
|
g_value_set_string (value, sysprof_mark_catalog_get_name (self));
|
||||||
break;
|
break;
|
||||||
@ -105,6 +111,12 @@ sysprof_mark_catalog_class_init (SysprofMarkCatalogClass *klass)
|
|||||||
object_class->dispose = sysprof_mark_catalog_dispose;
|
object_class->dispose = sysprof_mark_catalog_dispose;
|
||||||
object_class->get_property = sysprof_mark_catalog_get_property;
|
object_class->get_property = sysprof_mark_catalog_get_property;
|
||||||
|
|
||||||
|
properties[PROP_KIND] =
|
||||||
|
g_param_spec_enum ("kind", NULL, NULL,
|
||||||
|
SYSPROF_TYPE_MARK_CATALOG_KIND,
|
||||||
|
SYSPROF_MARK_CATALOG_KIND_GROUP,
|
||||||
|
(G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
|
||||||
|
|
||||||
properties[PROP_NAME] =
|
properties[PROP_NAME] =
|
||||||
g_param_spec_string ("name", NULL, NULL,
|
g_param_spec_string ("name", NULL, NULL,
|
||||||
NULL,
|
NULL,
|
||||||
@ -127,8 +139,9 @@ sysprof_mark_catalog_get_name (SysprofMarkCatalog *self)
|
|||||||
}
|
}
|
||||||
|
|
||||||
SysprofMarkCatalog *
|
SysprofMarkCatalog *
|
||||||
_sysprof_mark_catalog_new (const char *name,
|
_sysprof_mark_catalog_new (const char *name,
|
||||||
GListModel *items)
|
GListModel *items,
|
||||||
|
SysprofMarkCatalogKind kind)
|
||||||
{
|
{
|
||||||
SysprofMarkCatalog *self;
|
SysprofMarkCatalog *self;
|
||||||
|
|
||||||
@ -138,6 +151,19 @@ _sysprof_mark_catalog_new (const char *name,
|
|||||||
self = g_object_new (SYSPROF_TYPE_MARK_CATALOG, NULL);
|
self = g_object_new (SYSPROF_TYPE_MARK_CATALOG, NULL);
|
||||||
self->name = g_strdup (name);
|
self->name = g_strdup (name);
|
||||||
self->items = g_object_ref (items);
|
self->items = g_object_ref (items);
|
||||||
|
self->kind = kind;
|
||||||
|
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SysprofMarkCatalogKind
|
||||||
|
sysprof_mark_catalog_get_kind (SysprofMarkCatalog *self)
|
||||||
|
{
|
||||||
|
g_return_val_if_fail (SYSPROF_IS_MARK_CATALOG (self), 0);
|
||||||
|
|
||||||
|
return self->kind;
|
||||||
|
}
|
||||||
|
|
||||||
|
G_DEFINE_ENUM_TYPE (SysprofMarkCatalogKind, sysprof_mark_catalog_kind,
|
||||||
|
G_DEFINE_ENUM_VALUE (SYSPROF_MARK_CATALOG_KIND_GROUP, "group"),
|
||||||
|
G_DEFINE_ENUM_VALUE (SYSPROF_MARK_CATALOG_KIND_NAME, "name"))
|
||||||
|
|||||||
@ -27,11 +27,22 @@
|
|||||||
G_BEGIN_DECLS
|
G_BEGIN_DECLS
|
||||||
|
|
||||||
#define SYSPROF_TYPE_MARK_CATALOG (sysprof_mark_catalog_get_type())
|
#define SYSPROF_TYPE_MARK_CATALOG (sysprof_mark_catalog_get_type())
|
||||||
|
#define SYSPROF_TYPE_MARK_CATALOG_KIND (sysprof_mark_catalog_kind_get_type())
|
||||||
|
|
||||||
|
typedef enum _SysprofMarkCatalogKind
|
||||||
|
{
|
||||||
|
SYSPROF_MARK_CATALOG_KIND_GROUP,
|
||||||
|
SYSPROF_MARK_CATALOG_KIND_NAME,
|
||||||
|
} SysprofMarkCatalogKind;
|
||||||
|
|
||||||
SYSPROF_AVAILABLE_IN_ALL
|
SYSPROF_AVAILABLE_IN_ALL
|
||||||
G_DECLARE_FINAL_TYPE (SysprofMarkCatalog, sysprof_mark_catalog, SYSPROF, MARK_CATALOG, GObject)
|
G_DECLARE_FINAL_TYPE (SysprofMarkCatalog, sysprof_mark_catalog, SYSPROF, MARK_CATALOG, GObject)
|
||||||
|
|
||||||
SYSPROF_AVAILABLE_IN_ALL
|
SYSPROF_AVAILABLE_IN_ALL
|
||||||
const char *sysprof_mark_catalog_get_name (SysprofMarkCatalog *self);
|
GType sysprof_mark_catalog_kind_get_type (void) G_GNUC_CONST;
|
||||||
|
SYSPROF_AVAILABLE_IN_ALL
|
||||||
|
const char *sysprof_mark_catalog_get_name (SysprofMarkCatalog *self);
|
||||||
|
SYSPROF_AVAILABLE_IN_ALL
|
||||||
|
SysprofMarkCatalogKind sysprof_mark_catalog_get_kind (SysprofMarkCatalog *self);
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|||||||
@ -58,6 +58,7 @@ main (int argc,
|
|||||||
|
|
||||||
g_assert (SYSPROF_IS_MARK_CATALOG (catalog));
|
g_assert (SYSPROF_IS_MARK_CATALOG (catalog));
|
||||||
g_assert (G_IS_LIST_MODEL (catalog));
|
g_assert (G_IS_LIST_MODEL (catalog));
|
||||||
|
g_assert (sysprof_mark_catalog_get_kind (catalog) == SYSPROF_MARK_CATALOG_KIND_GROUP);
|
||||||
|
|
||||||
g_print ("%s\n", group);
|
g_print ("%s\n", group);
|
||||||
|
|
||||||
@ -67,8 +68,9 @@ main (int argc,
|
|||||||
const char *name = sysprof_mark_catalog_get_name (name_catalog);
|
const char *name = sysprof_mark_catalog_get_name (name_catalog);
|
||||||
guint n_marks = g_list_model_get_n_items (G_LIST_MODEL (name_catalog));
|
guint n_marks = g_list_model_get_n_items (G_LIST_MODEL (name_catalog));
|
||||||
|
|
||||||
g_assert (SYSPROF_IS_MARK_CATALOG (catalog));
|
g_assert (SYSPROF_IS_MARK_CATALOG (name_catalog));
|
||||||
g_assert (G_IS_LIST_MODEL (catalog));
|
g_assert (G_IS_LIST_MODEL (name_catalog));
|
||||||
|
g_assert (sysprof_mark_catalog_get_kind (name_catalog) == SYSPROF_MARK_CATALOG_KIND_NAME);
|
||||||
|
|
||||||
g_print (" %s\n", name);
|
g_print (" %s\n", name);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user