static void arv_gc_float_node_post_new_child (ArvDomNode *self, ArvDomNode *child) { ArvGcFloatNode *node = ARV_GC_FLOAT_NODE (self); if (ARV_IS_GC_PROPERTY_NODE (child)) { ArvGcPropertyNode *property_node = ARV_GC_PROPERTY_NODE (child); switch (arv_gc_property_node_get_node_type (property_node)) { case ARV_GC_PROPERTY_NODE_TYPE_VALUE: case ARV_GC_PROPERTY_NODE_TYPE_P_VALUE: node->value = property_node; break; case ARV_GC_PROPERTY_NODE_TYPE_MINIMUM: case ARV_GC_PROPERTY_NODE_TYPE_P_MINIMUM: node->minimum = property_node; break; case ARV_GC_PROPERTY_NODE_TYPE_MAXIMUM: case ARV_GC_PROPERTY_NODE_TYPE_P_MAXIMUM: node->maximum = property_node; break; case ARV_GC_PROPERTY_NODE_TYPE_INCREMENT: case ARV_GC_PROPERTY_NODE_TYPE_P_INCREMENT: node->increment = property_node; break; case ARV_GC_PROPERTY_NODE_TYPE_UNIT: node->unit = property_node; break; default: ARV_DOM_NODE_CLASS (parent_class)->post_new_child (self, child); break; } } }
static void arv_gc_boolean_post_new_child (ArvDomNode *self, ArvDomNode *child) { ArvGcBoolean *node = ARV_GC_BOOLEAN (self); if (ARV_IS_GC_PROPERTY_NODE (child)) { ArvGcPropertyNode *property_node = ARV_GC_PROPERTY_NODE (child); switch (arv_gc_property_node_get_node_type (property_node)) { case ARV_GC_PROPERTY_NODE_TYPE_VALUE: case ARV_GC_PROPERTY_NODE_TYPE_P_VALUE: node->value = property_node; break; case ARV_GC_PROPERTY_NODE_TYPE_ON_VALUE: node->on_value = property_node; break; case ARV_GC_PROPERTY_NODE_TYPE_OFF_VALUE: node->off_value = property_node; break; default: ARV_DOM_NODE_CLASS (parent_class)->post_new_child (self, child); break; } } }
void arv_gc_property_node_set_double (ArvGcPropertyNode *node, double v_double, GError **error) { ArvDomNode *pvalue_node; g_return_if_fail (ARV_IS_GC_PROPERTY_NODE (node)); g_return_if_fail (error == NULL || *error == NULL); pvalue_node = _get_pvalue_node (node); if (pvalue_node == NULL) { char buffer[G_ASCII_DTOSTR_BUF_SIZE]; g_ascii_dtostr (buffer, G_ASCII_DTOSTR_BUF_SIZE, v_double); _set_value_data (node, buffer); return ; } if (ARV_IS_GC_FLOAT (pvalue_node)) { GError *local_error = NULL; arv_gc_float_set_value (ARV_GC_FLOAT (pvalue_node), v_double, &local_error); if (local_error != NULL) g_propagate_error (error, local_error); return; } arv_warning_genicam ("[GcPropertyNode::set_double] Invalid linked node '%s'", arv_gc_feature_node_get_name (ARV_GC_FEATURE_NODE (pvalue_node))); }
static void arv_gc_feature_node_pre_remove_child (ArvDomNode *self, ArvDomNode *child) { ArvGcFeatureNode *node = ARV_GC_FEATURE_NODE (self); if (ARV_IS_GC_PROPERTY_NODE (child)) { ArvGcPropertyNode *property_node = ARV_GC_PROPERTY_NODE (child); switch (arv_gc_property_node_get_node_type (property_node)) { case ARV_GC_PROPERTY_NODE_TYPE_TOOLTIP: node->priv->tooltip = NULL; break; case ARV_GC_PROPERTY_NODE_TYPE_DESCRIPTION: node->priv->description = NULL; break; case ARV_GC_PROPERTY_NODE_TYPE_DISPLAY_NAME: node->priv->description = NULL; break; case ARV_GC_PROPERTY_NODE_TYPE_P_IS_AVAILABLE: node->priv->is_available = NULL; break; case ARV_GC_PROPERTY_NODE_TYPE_P_IS_IMPLEMENTED: node->priv->is_implemented = NULL; break; case ARV_GC_PROPERTY_NODE_TYPE_P_IS_LOCKED: node->priv->is_locked = NULL; break; default: break; } } }
static void arv_gc_swiss_knife_post_new_child (ArvDomNode *self, ArvDomNode *child) { ArvGcSwissKnife *node = ARV_GC_SWISS_KNIFE (self); if (ARV_IS_GC_PROPERTY_NODE (child)) { ArvGcPropertyNode *property_node = ARV_GC_PROPERTY_NODE (child); switch (arv_gc_property_node_get_node_type (property_node)) { case ARV_GC_PROPERTY_NODE_TYPE_P_VARIABLE: node->variables = g_slist_prepend (node->variables, property_node); break; case ARV_GC_PROPERTY_NODE_TYPE_FORMULA: node->formula_node = property_node; break; case ARV_GC_PROPERTY_NODE_TYPE_EXPRESSION: case ARV_GC_PROPERTY_NODE_TYPE_CONSTANT: arv_warning_genicam ("[GcSwissKnife::post_new_child] Constant and Expression not yet implemented"); break; default: ARV_DOM_NODE_CLASS (parent_class)->post_new_child (self, child); break; } } }
void arv_gc_property_node_set_int64 (ArvGcPropertyNode *node, gint64 v_int64, GError **error) { ArvDomNode *pvalue_node; g_return_if_fail (ARV_IS_GC_PROPERTY_NODE (node)); g_return_if_fail (error == NULL || *error == NULL); pvalue_node = _get_pvalue_node (node); if (pvalue_node == NULL) { char *buffer; buffer = g_strdup_printf ("%" G_GINT64_FORMAT, v_int64); _set_value_data (node, buffer); g_free (buffer); return ; } if (ARV_IS_GC_INTEGER (pvalue_node)) { GError *local_error = NULL; arv_gc_integer_set_value (ARV_GC_INTEGER (pvalue_node), v_int64, &local_error); if (local_error != NULL) g_propagate_error (error, local_error); return; } arv_warning_genicam ("[GcPropertyNode::set_int64] Invalid linked node '%s'", arv_gc_feature_node_get_name (ARV_GC_FEATURE_NODE (pvalue_node))); }
double arv_gc_property_node_get_double (ArvGcPropertyNode *node, GError **error) { ArvDomNode *pvalue_node; g_return_val_if_fail (ARV_IS_GC_PROPERTY_NODE (node), 0.0); g_return_val_if_fail (error == NULL || *error == NULL, 0.0); pvalue_node = _get_pvalue_node (node); if (pvalue_node == NULL) return g_ascii_strtod (_get_value_data (node), NULL); if (ARV_IS_GC_FLOAT (pvalue_node)) { GError *local_error = NULL; double value; value = arv_gc_float_get_value (ARV_GC_FLOAT (pvalue_node), &local_error); if (local_error != NULL) g_propagate_error (error, local_error); return value; } arv_warning_genicam ("[GcPropertyNode::get_double] Invalid node '%s'", arv_gc_feature_node_get_name (ARV_GC_FEATURE_NODE (pvalue_node))); return 0.0; }
gint64 arv_gc_property_node_get_int64 (ArvGcPropertyNode *node, GError **error) { ArvDomNode *pvalue_node; g_return_val_if_fail (ARV_IS_GC_PROPERTY_NODE (node), 0); g_return_val_if_fail (error == NULL || *error == NULL, 0); pvalue_node = _get_pvalue_node (node); if (pvalue_node == NULL) return g_ascii_strtoll (_get_value_data (node), NULL, 0); if (ARV_IS_GC_INTEGER (pvalue_node)) { GError *local_error = NULL; gint64 value; value = arv_gc_integer_get_value (ARV_GC_INTEGER (pvalue_node), &local_error); if (local_error != NULL) g_propagate_error (error, local_error); return value; } arv_warning_genicam ("[GcPropertyNode::get_int64] Invalid node '%s'", arv_gc_feature_node_get_name (ARV_GC_FEATURE_NODE (pvalue_node))); return 0; }
void arv_gc_property_node_set_string (ArvGcPropertyNode *node, const char *string, GError **error) { ArvDomNode *pvalue_node; g_return_if_fail (ARV_IS_GC_PROPERTY_NODE (node)); g_return_if_fail (error == NULL || *error == NULL); pvalue_node = _get_pvalue_node (node); if (pvalue_node == NULL) { _set_value_data (node, string); return; } if (ARV_IS_GC_STRING (pvalue_node)) { GError *local_error = NULL; arv_gc_string_set_value (ARV_GC_STRING (pvalue_node), string, &local_error); if (local_error != NULL) g_propagate_error (error, local_error); return; } arv_warning_genicam ("[GcPropertyNode::set_string] Invalid linked node '%s'", arv_gc_feature_node_get_name (ARV_GC_FEATURE_NODE (pvalue_node))); }
const char * arv_gc_property_node_get_string (ArvGcPropertyNode *node, GError **error) { ArvDomNode *pvalue_node; g_return_val_if_fail (ARV_IS_GC_PROPERTY_NODE (node), NULL); g_return_val_if_fail (error == NULL || *error == NULL, NULL); pvalue_node = _get_pvalue_node (node); if (pvalue_node == NULL) return _get_value_data (node); if (ARV_IS_GC_STRING (pvalue_node)) { GError *local_error = NULL; const char *value; value = arv_gc_string_get_value (ARV_GC_STRING (pvalue_node), &local_error); if (local_error != NULL) g_propagate_error (error, local_error); return value; } arv_warning_genicam ("[GcPropertyNode::get_string] Invalid node '%s'", arv_gc_feature_node_get_name (ARV_GC_FEATURE_NODE (pvalue_node))); return NULL; }
static void arv_gc_struct_entry_node_post_new_child (ArvDomNode *self, ArvDomNode *child) { ArvGcStructEntryNode *node = ARV_GC_STRUCT_ENTRY_NODE (self); if (ARV_IS_GC_PROPERTY_NODE (child)) { ArvGcPropertyNode *property_node = ARV_GC_PROPERTY_NODE (child); switch (arv_gc_property_node_get_node_type (property_node)) { case ARV_GC_PROPERTY_NODE_TYPE_SIGN: /* TODO */ node->sign = property_node; break; case ARV_GC_PROPERTY_NODE_TYPE_LSB: node->lsb = property_node; break; case ARV_GC_PROPERTY_NODE_TYPE_MSB: node->msb = property_node; break; case ARV_GC_PROPERTY_NODE_TYPE_BIT: node->msb = property_node; node->lsb = property_node; break; default: ARV_DOM_NODE_CLASS (parent_class)->post_new_child (self, child); break; } } }
ArvGcPropertyNodeType arv_gc_property_node_get_node_type (ArvGcPropertyNode *node) { g_return_val_if_fail (ARV_IS_GC_PROPERTY_NODE (node), ARV_GC_PROPERTY_NODE_TYPE_UNKNOWN); return node->type; }
ArvGcNode * arv_gc_property_node_get_linked_node (ArvGcPropertyNode *node) { ArvGc *genicam; g_return_val_if_fail (ARV_IS_GC_PROPERTY_NODE (node), NULL); g_return_val_if_fail (node->type > ARV_GC_PROPERTY_NODE_TYPE_P_UNKNONW, NULL); genicam = arv_gc_node_get_genicam (ARV_GC_NODE (node)); return arv_gc_get_node (genicam, _get_value_data (node)); }
static void arv_gc_enumeration_post_new_child (ArvDomNode *self, ArvDomNode *child) { ArvGcEnumeration *node = ARV_GC_ENUMERATION (self); if (ARV_IS_GC_PROPERTY_NODE (child)) { ArvGcPropertyNode *property_node = ARV_GC_PROPERTY_NODE (child); switch (arv_gc_property_node_get_node_type (property_node)) { case ARV_GC_PROPERTY_NODE_TYPE_VALUE: case ARV_GC_PROPERTY_NODE_TYPE_P_VALUE: node->value = property_node; break; default: ARV_DOM_NODE_CLASS (parent_class)->post_new_child (self, child); break; } } else if (ARV_IS_GC_ENUM_ENTRY (child)) node->entries = g_slist_prepend (node->entries, child); }
static void arv_gc_converter_post_new_child (ArvDomNode *self, ArvDomNode *child) { ArvGcConverter *node = ARV_GC_CONVERTER (self); if (ARV_IS_GC_PROPERTY_NODE (child)) { ArvGcPropertyNode *property_node = ARV_GC_PROPERTY_NODE (child); switch (arv_gc_property_node_get_node_type (property_node)) { case ARV_GC_PROPERTY_NODE_TYPE_P_VARIABLE: node->variables = g_slist_prepend (node->variables, property_node); break; case ARV_GC_PROPERTY_NODE_TYPE_P_VALUE: node->value = property_node; break; case ARV_GC_PROPERTY_NODE_TYPE_FORMULA_TO: node->formula_to_node = property_node; break; case ARV_GC_PROPERTY_NODE_TYPE_FORMULA_FROM: node->formula_from_node = property_node; break; case ARV_GC_PROPERTY_NODE_TYPE_EXPRESSION: node->expressions = g_slist_prepend (node->expressions, property_node); break; case ARV_GC_PROPERTY_NODE_TYPE_CONSTANT: node->constants = g_slist_prepend (node->constants, property_node); break; case ARV_GC_PROPERTY_NODE_TYPE_UNIT: node->unit = property_node; break; default: ARV_DOM_NODE_CLASS (parent_class)->post_new_child (self, child); break; } } }
static void arv_gc_register_node_post_new_child (ArvDomNode *self, ArvDomNode *child) { ArvGcRegisterNode *node = ARV_GC_REGISTER_NODE (self); if (ARV_IS_GC_PROPERTY_NODE (child)) { ArvGcPropertyNode *property_node = ARV_GC_PROPERTY_NODE (child); switch (arv_gc_property_node_get_node_type (property_node)) { case ARV_GC_PROPERTY_NODE_TYPE_ADDRESS: case ARV_GC_PROPERTY_NODE_TYPE_P_ADDRESS: node->addresses = g_slist_prepend (node->addresses, child); break; case ARV_GC_PROPERTY_NODE_TYPE_P_INDEX: node->index = property_node; break; case ARV_GC_PROPERTY_NODE_TYPE_LENGTH: case ARV_GC_PROPERTY_NODE_TYPE_P_LENGTH: node->length = property_node; break; case ARV_GC_PROPERTY_NODE_TYPE_P_PORT: node->port = property_node; break; case ARV_GC_PROPERTY_NODE_TYPE_ACCESS_MODE: /* TODO */ node->access_mode = property_node; break; case ARV_GC_PROPERTY_NODE_TYPE_CACHABLE: node->cachable = property_node; break; case ARV_GC_PROPERTY_NODE_TYPE_POLLING_TIME: /* TODO */ node->polling_time = property_node; break; case ARV_GC_PROPERTY_NODE_TYPE_ENDIANESS: node->endianess = property_node; break; case ARV_GC_PROPERTY_NODE_TYPE_SIGN: /* TODO */ node->sign = property_node; break; case ARV_GC_PROPERTY_NODE_TYPE_LSB: node->lsb = property_node; break; case ARV_GC_PROPERTY_NODE_TYPE_MSB: node->msb = property_node; break; case ARV_GC_PROPERTY_NODE_TYPE_BIT: node->msb = property_node; node->lsb = property_node; break; case ARV_GC_PROPERTY_NODE_TYPE_P_INVALIDATOR: node->invalidators = g_slist_prepend (node->invalidators, property_node); break; default: ARV_DOM_NODE_CLASS (parent_class)->post_new_child (self, child); break; } } else if (ARV_IS_GC_SWISS_KNIFE (child)) node->swiss_knives = g_slist_prepend (node->swiss_knives, child); else ARV_DOM_NODE_CLASS (parent_class)->post_new_child (self, child); }
static gboolean arv_gc_enumeration_can_append_child (ArvDomNode *node, ArvDomNode *child) { return (ARV_IS_GC_ENUM_ENTRY (child) || ARV_IS_GC_PROPERTY_NODE (child)); }