From 616c49a5053830a5e0a31c71fd6114926e43235f Mon Sep 17 00:00:00 2001 From: Přemysl Janouch Date: Mon, 10 Jan 2011 16:49:13 +0100 Subject: Make a separate library. This is required for gtkdoc-scangobj. So far it's much like it's been before, the main differences are that source files are in two directories from now on and the build process has two stages. --- liblogdiag/ld-lua-symbol.c | 138 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 138 insertions(+) create mode 100644 liblogdiag/ld-lua-symbol.c (limited to 'liblogdiag/ld-lua-symbol.c') diff --git a/liblogdiag/ld-lua-symbol.c b/liblogdiag/ld-lua-symbol.c new file mode 100644 index 0000000..27a6279 --- /dev/null +++ b/liblogdiag/ld-lua-symbol.c @@ -0,0 +1,138 @@ +/* + * ld-lua-symbol.c + * + * This file is a part of logdiag. + * Copyright Přemysl Janouch 2010 - 2011. All rights reserved. + * + * See the file LICENSE for licensing information. + * + */ + +#include "liblogdiag.h" +#include "config.h" + +#include "ld-lua-private.h" +#include "ld-lua-symbol-private.h" + + +/** + * SECTION:ld-lua-symbol + * @short_description: A symbol. + * @see_also: #LdSymbol + * + * #LdLuaSymbol is an implementation of #LdSymbol. + */ + +static void ld_lua_symbol_finalize (GObject *gobject); + +static const gchar *ld_lua_symbol_real_get_name (LdSymbol *symbol); +static const gchar *ld_lua_symbol_real_get_human_name (LdSymbol *symbol); +static void ld_lua_symbol_real_get_area (LdSymbol *symbol, LdRectangle *area); +static const LdPointArray *ld_lua_symbol_real_get_terminals (LdSymbol *symbol); +static void ld_lua_symbol_real_draw (LdSymbol *symbol, cairo_t *cr); + + +G_DEFINE_TYPE (LdLuaSymbol, ld_lua_symbol, LD_TYPE_SYMBOL); + +static void +ld_lua_symbol_class_init (LdLuaSymbolClass *klass) +{ + GObjectClass *object_class; + + object_class = G_OBJECT_CLASS (klass); + object_class->finalize = ld_lua_symbol_finalize; + + klass->parent_class.get_name = ld_lua_symbol_real_get_name; + klass->parent_class.get_human_name = ld_lua_symbol_real_get_human_name; + klass->parent_class.get_area = ld_lua_symbol_real_get_area; + klass->parent_class.get_terminals = ld_lua_symbol_real_get_terminals; + klass->parent_class.draw = ld_lua_symbol_real_draw; + + g_type_class_add_private (klass, sizeof (LdLuaSymbolPrivate)); +} + +static void +ld_lua_symbol_init (LdLuaSymbol *self) +{ + self->priv = G_TYPE_INSTANCE_GET_PRIVATE + (self, LD_TYPE_LUA_SYMBOL, LdLuaSymbolPrivate); +} + +static void +ld_lua_symbol_finalize (GObject *gobject) +{ + LdLuaSymbol *self; + + self = LD_LUA_SYMBOL (gobject); + + if (self->priv->lua) + { + ld_lua_private_unregister (self->priv->lua, self); + g_object_unref (self->priv->lua); + } + + if (self->priv->name) + g_free (self->priv->name); + if (self->priv->human_name) + g_free (self->priv->human_name); + + if (self->priv->terminals) + ld_point_array_free (self->priv->terminals); + + /* Chain up to the parent class. */ + G_OBJECT_CLASS (ld_lua_symbol_parent_class)->finalize (gobject); +} + + +static const gchar * +ld_lua_symbol_real_get_name (LdSymbol *symbol) +{ + g_return_val_if_fail (LD_IS_LUA_SYMBOL (symbol), NULL); + return LD_LUA_SYMBOL (symbol)->priv->name; +} + +static const gchar * +ld_lua_symbol_real_get_human_name (LdSymbol *symbol) +{ + g_return_val_if_fail (LD_IS_LUA_SYMBOL (symbol), NULL); + return LD_LUA_SYMBOL (symbol)->priv->human_name; +} + +static void +ld_lua_symbol_real_get_area (LdSymbol *symbol, LdRectangle *area) +{ + LdLuaSymbol *self; + + g_return_if_fail (LD_IS_LUA_SYMBOL (symbol)); + g_return_if_fail (area != NULL); + + self = LD_LUA_SYMBOL (symbol); + *area = self->priv->area; +} + +static const LdPointArray * +ld_lua_symbol_real_get_terminals (LdSymbol *symbol) +{ + LdLuaSymbol *self; + + g_return_val_if_fail (LD_IS_LUA_SYMBOL (symbol), NULL); + + self = LD_LUA_SYMBOL (symbol); + return self->priv->terminals; +} + +static void +ld_lua_symbol_real_draw (LdSymbol *symbol, cairo_t *cr) +{ + LdLuaSymbol *self; + + g_return_if_fail (LD_IS_LUA_SYMBOL (symbol)); + g_return_if_fail (cr != NULL); + + self = LD_LUA_SYMBOL (symbol); + + cairo_save (cr); + ld_lua_private_draw (self->priv->lua, self, cr); + cairo_restore (cr); +} + -- cgit v1.2.3-54-g00ecf