/* This file is part of odin, a memory profiler with fragmentation analysis. Copyright (C) 2007 Chris Wilson odin is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. odin is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with odin. If not, see / The GNU General Public License is contained in the file COPYING. */ #ifndef FRAMES_H #define FRAMES_H #include "odin.h" G_BEGIN_DECLS struct _frame { gulong ip; gboolean has_function; const gchar *function; const gchar *object; const gchar *file; const gchar *path; gint line; const gchar *function_srcloc; guint alloc_fns_serial; gboolean is_alloc_fn; Frame *ht_next, *ht_srcloc_next; }; struct _frames { Client *client; struct { guint size; guint nnodes; Frame **nodes; } frames, srcloc; GList *alloc_fns; guint alloc_fns_serial; }; void frames_add (Frames *frames, gulong ip, const gchar *object, const gchar *function, const gchar *file, const gchar *path, gint line); void frames_add_and_describe (Frames *frames, gulong eip, SharedObject *so, gulong offset); gboolean frames_has_ip (Frames *frames, gulong ip); gboolean frames_is_alloc_fn (Frames *frames, Frame *f); Frame * frames_get (Frames *frames, gulong ip); guint frames_get_unique_count (Frames *frames); gchar * frames_get_source_path (Frames *frames, gulong ip); gboolean frames_add_alloc_fn (Frames *frames, const gchar *pattern, GError **error); guint frames_get_alloc_fns_serial (Frames *frames); const gchar * frames_get_string (Frames *frames, const gchar *str); void frames_init (Frames *frames, Client *client); void frames_fini (Frames *frames); G_END_DECLS #endif /* FRAMES */