This repository has been archived on 2020-04-11. You can view files and clone it, but cannot push or open issues or pull requests.
gnoemoe/gnoemoe/mcp/gm-mcp-package.c

141 lines
3.3 KiB
C

#include <glib-object.h>
#include "gm-mcp-session.h"
#include "gm-mcp-package.h"
#include "../gm-support.h"
#define GM_MCP_PACKAGE_GET_PRIVATE(object)( \
G_TYPE_INSTANCE_GET_PRIVATE((object), \
GM_TYPE_MCP_PACKAGE, GmMcpPackagePrivate))
struct _GmMcpPackagePrivate {
GmMcpSession *session;
gdouble version;
};
/* Signals
enum {
PROTO
NUM_SIGNALS
};
static guint gm_mcp_package_signals[NUM_SIGNALS] = {0};*/
G_DEFINE_TYPE(GmMcpPackage, gm_mcp_package, G_TYPE_OBJECT)
static void
gm_mcp_package_finalize(GObject *object) {
//GmMcpPackage *package = GM_MCP_PACKAGE(object);
G_OBJECT_CLASS(gm_mcp_package_parent_class)->finalize(object);
}
static void
gm_mcp_package_class_init(GmMcpPackageClass *klass) {
GObjectClass *object_class = G_OBJECT_CLASS(klass);
object_class->finalize = gm_mcp_package_finalize;
/*gm_mcp_package_signals[PROTO] =
g_signal_new("proto",
G_OBJECT_CLASS_TYPE(object_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET(GmMcpPackageClass, proto),
NULL, NULL,
g_cclosure_marshal_VOID__VOID,
G_TYPE_NONE,
0);*/
klass->handle_simple = NULL;
klass->handle_multi = NULL;
klass->depends = NULL;
klass->overrides = NULL;
klass->name = NULL;
klass->min_version = 1.0;
klass->max_version = 1.0;
g_type_class_add_private(object_class, sizeof(GmMcpPackagePrivate));
}
static void
gm_mcp_package_init(GmMcpPackage *obj) {
obj->priv = GM_MCP_PACKAGE_GET_PRIVATE(obj);
obj->priv->session = NULL;
obj->priv->version = 1.0;
}
/* Public */
GmMcpPackage *
gm_mcp_package_new() {
GmMcpPackage *obj = GM_MCP_PACKAGE(g_object_new(GM_TYPE_MCP_PACKAGE, NULL));
return obj;
}
void
gm_mcp_package_handle_simple(GmMcpPackage *package, gchar *suffix,
GList *fields) {
return GM_MCP_PACKAGE_GET_CLASS(package)->handle_simple(package,
suffix, fields);
}
gboolean
gm_mcp_package_can_handle_simple(GmMcpPackage *package) {
return (GM_MCP_PACKAGE_GET_CLASS(package)->handle_simple != NULL);
}
gboolean
gm_mcp_package_handle_multi(GmMcpPackage *package, gchar *data_tag,
gchar *key, gchar *value, GList *allValues) {
return GM_MCP_PACKAGE_GET_CLASS(package)->handle_multi(package,
data_tag, key, value, allValues);
}
gboolean
gm_mcp_package_can_handle_multi(GmMcpPackage *package) {
return (GM_MCP_PACKAGE_GET_CLASS(package)->handle_multi != NULL);
}
void
gm_mcp_package_set_session(GmMcpPackage *package, GObject *session) {
package->priv->session = GM_MCP_SESSION(session);
}
GObject *
gm_mcp_package_get_session(GmMcpPackage *package) {
return G_OBJECT(package->priv->session);
}
void
gm_mcp_package_set_version(GmMcpPackage *package, gdouble version) {
package->priv->version = version;
}
gdouble
gm_mcp_package_get_version(GmMcpPackage *package) {
return package->priv->version;
}
gchar const *
gm_mcp_package_get_name(GmMcpPackage *package) {
return GM_MCP_PACKAGE_GET_CLASS(package)->name;
}
GList const *
gm_mcp_package_get_depends(GmMcpPackage *package) {
return GM_MCP_PACKAGE_GET_CLASS(package)->depends;
}
GList const *
gm_mcp_package_get_overrides(GmMcpPackage *package) {
return GM_MCP_PACKAGE_GET_CLASS(package)->overrides;
}
gdouble
gm_mcp_package_get_min_version(GmMcpPackage *package) {
return GM_MCP_PACKAGE_GET_CLASS(package)->min_version;
}
gdouble
gm_mcp_package_get_max_version(GmMcpPackage *package) {
return GM_MCP_PACKAGE_GET_CLASS(package)->max_version;
}