Use g_ascii_strtod, use G_DEFINE_TYPE
This commit is contained in:
parent
bba515d983
commit
3d41f951f6
1 changed files with 17 additions and 63 deletions
|
@ -33,41 +33,7 @@ static guint gm_mcp_negotiate_signals[NUM_SIGNALS] = {0};*/
|
||||||
void gm_mcp_negotiate_handle_simple(GmMcpPackage *package, gchar *suffix,
|
void gm_mcp_negotiate_handle_simple(GmMcpPackage *package, gchar *suffix,
|
||||||
GList *fields);
|
GList *fields);
|
||||||
|
|
||||||
static void gm_mcp_negotiate_init(GmMcpNegotiate *self);
|
G_DEFINE_TYPE(GmMcpNegotiate, gm_mcp_negotiate, GM_TYPE_MCP_PACKAGE);
|
||||||
static void gm_mcp_negotiate_class_init(GmMcpNegotiateClass *klass);
|
|
||||||
//static void gm_mcp_negotiate_class_finalize(gpointer klass,
|
|
||||||
// gpointer klass_data);
|
|
||||||
static gpointer gm_mcp_negotiate_parent_class = NULL;
|
|
||||||
|
|
||||||
static void gm_mcp_negotiate_class_intern_init(gpointer klass) {
|
|
||||||
gm_mcp_negotiate_parent_class = g_type_class_peek_parent(klass);
|
|
||||||
gm_mcp_negotiate_class_init((GmMcpNegotiateClass *) klass);
|
|
||||||
}
|
|
||||||
|
|
||||||
GType
|
|
||||||
gm_mcp_negotiate_get_type() {
|
|
||||||
static GType g_define_type_id = 0;
|
|
||||||
|
|
||||||
if (G_UNLIKELY(g_define_type_id == 0)) {
|
|
||||||
static const GTypeInfo g_define_type_info = {
|
|
||||||
sizeof (GmMcpNegotiateClass),
|
|
||||||
(GBaseInitFunc) NULL,
|
|
||||||
(GBaseFinalizeFunc) NULL,
|
|
||||||
(GClassInitFunc) gm_mcp_negotiate_class_intern_init,
|
|
||||||
(GClassFinalizeFunc) NULL, //gm_mcp_negotiate_class_finalize,
|
|
||||||
NULL, /* class_data */
|
|
||||||
sizeof (GmMcpNegotiate),
|
|
||||||
0, /* n_preallocs */
|
|
||||||
(GInstanceInitFunc) gm_mcp_negotiate_init,
|
|
||||||
NULL /* value_table */
|
|
||||||
};
|
|
||||||
|
|
||||||
g_define_type_id = g_type_register_static(GM_TYPE_MCP_PACKAGE,
|
|
||||||
"GmMcpNegotiate", &g_define_type_info, (GTypeFlags) 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
return g_define_type_id; \
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gm_mcp_negotiate_finalize(GObject *object) {
|
gm_mcp_negotiate_finalize(GObject *object) {
|
||||||
|
@ -76,14 +42,6 @@ gm_mcp_negotiate_finalize(GObject *object) {
|
||||||
G_OBJECT_CLASS(gm_mcp_negotiate_parent_class)->finalize(object);
|
G_OBJECT_CLASS(gm_mcp_negotiate_parent_class)->finalize(object);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*static void
|
|
||||||
gm_mcp_negotiate_class_finalize(gpointer klass, gpointer klass_data) {
|
|
||||||
GmMcpPackageClass *pklass = GM_MCP_PACKAGE_CLASS(klass);
|
|
||||||
|
|
||||||
g_list_free(pklass->depends);
|
|
||||||
g_list_free(pklass->overrides);
|
|
||||||
}*/
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gm_mcp_negotiate_class_init(GmMcpNegotiateClass *klass) {
|
gm_mcp_negotiate_class_init(GmMcpNegotiateClass *klass) {
|
||||||
GObjectClass *object_class = G_OBJECT_CLASS(klass);
|
GObjectClass *object_class = G_OBJECT_CLASS(klass);
|
||||||
|
@ -139,7 +97,7 @@ gm_mcp_negotiate_fix_overrides(GmMcpNegotiate *package) {
|
||||||
l = g_list_copy(package->priv->packages);
|
l = g_list_copy(package->priv->packages);
|
||||||
|
|
||||||
for (item = l; item; item = item->next) {
|
for (item = l; item; item = item->next) {
|
||||||
pinfo = (PackageInfo *)(item);
|
pinfo = (PackageInfo *)(item->data);
|
||||||
|
|
||||||
for (over = pinfo->klass->overrides; over; over = over->next) {
|
for (over = pinfo->klass->overrides; over; over = over->next) {
|
||||||
name = (gchar *)(over->data);
|
name = (gchar *)(over->data);
|
||||||
|
@ -206,21 +164,15 @@ gm_mcp_negotiate_new() {
|
||||||
gboolean
|
gboolean
|
||||||
gm_mcp_negotiate_send_can(GmMcpPackageClass *klass, gpointer user_data) {
|
gm_mcp_negotiate_send_can(GmMcpPackageClass *klass, gpointer user_data) {
|
||||||
GmMcpNegotiate *package = GM_MCP_NEGOTIATE(user_data);
|
GmMcpNegotiate *package = GM_MCP_NEGOTIATE(user_data);
|
||||||
gchar *min_v, *max_v;
|
gchar min_v[16], max_v[16];
|
||||||
|
|
||||||
min_v = g_strdup_printf("%'.1f", klass->min_version);
|
g_ascii_formatd(min_v, 16, "%.1f", klass->min_version);
|
||||||
gm_fix_decimal_point_rev(min_v, strlen(min_v));
|
g_ascii_formatd(max_v, 16, "%.1f", klass->max_version);
|
||||||
|
|
||||||
max_v = g_strdup_printf("%'.1f", klass->max_version);
|
|
||||||
gm_fix_decimal_point_rev(max_v, strlen(max_v));
|
|
||||||
|
|
||||||
gm_mcp_session_send_simple(GM_MCP_PACKAGE_SESSION(package),
|
gm_mcp_session_send_simple(GM_MCP_PACKAGE_SESSION(package),
|
||||||
"mcp-negotiate-can", "package", klass->name, "min-version",
|
"mcp-negotiate-can", "package", klass->name, "min-version",
|
||||||
min_v, "max-version", max_v, NULL);
|
min_v, "max-version", max_v, NULL);
|
||||||
|
|
||||||
g_free(min_v);
|
|
||||||
g_free(max_v);
|
|
||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -233,7 +185,7 @@ gm_mcp_negotiate_handle_simple(GmMcpPackage *package, gchar *suffix,
|
||||||
PackageInfo *pinfo;
|
PackageInfo *pinfo;
|
||||||
double version;
|
double version;
|
||||||
gchar const *min_v, *max_v;
|
gchar const *min_v, *max_v;
|
||||||
gchar *cmin, *cmax;
|
gdouble cmin = 0.0, cmax = 0.0;
|
||||||
GList *elem;
|
GList *elem;
|
||||||
|
|
||||||
if (strcasecmp(suffix, "can") == 0) {
|
if (strcasecmp(suffix, "can") == 0) {
|
||||||
|
@ -243,17 +195,19 @@ gm_mcp_negotiate_handle_simple(GmMcpPackage *package, gchar *suffix,
|
||||||
|
|
||||||
if (pklass) {
|
if (pklass) {
|
||||||
min_v = gm_mcp_find_value(fields, "min-version");
|
min_v = gm_mcp_find_value(fields, "min-version");
|
||||||
cmin = gm_fix_decimal_point(g_strdup(min_v), strlen(min_v));
|
|
||||||
|
if (min_v) {
|
||||||
|
cmin = g_ascii_strtod(min_v, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
max_v = gm_mcp_find_value(fields, "max-version");
|
max_v = gm_mcp_find_value(fields, "max-version");
|
||||||
cmax = gm_fix_decimal_point(g_strdup(max_v), strlen(max_v));
|
|
||||||
|
if (max_v) {
|
||||||
|
cmax = g_ascii_strtod(max_v, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
version = gm_mcp_get_version(pklass->min_version,
|
version = gm_mcp_get_version(pklass->min_version,
|
||||||
pklass->max_version, g_ascii_strtod(min_v, NULL),
|
pklass->max_version, cmin, cmax);
|
||||||
g_ascii_strtod(max_v, NULL));
|
|
||||||
|
|
||||||
g_free(cmin);
|
|
||||||
g_free(cmax);
|
|
||||||
|
|
||||||
if (version > 0.0) {
|
if (version > 0.0) {
|
||||||
gm_debug_msg(DEBUG_MCP, "GmMcpNegotiate.HandleSimple: %s, "
|
gm_debug_msg(DEBUG_MCP, "GmMcpNegotiate.HandleSimple: %s, "
|
||||||
|
|
Reference in a new issue