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 const char * arv_gc_register_node_get_value_as_string (ArvGcFeatureNode *node, GError **error) { ArvGcRegisterNode *gc_register_node = ARV_GC_REGISTER_NODE (node); GError *local_error = NULL; const char *string; switch (gc_register_node->value_type) { case G_TYPE_INT64: g_snprintf (gc_register_node->v_string, G_ASCII_DTOSTR_BUF_SIZE, "0x%08" G_GINT64_MODIFIER "x", arv_gc_integer_get_value (ARV_GC_INTEGER (node), &local_error)); if (local_error != NULL) { g_propagate_error (error, local_error); return NULL; } return gc_register_node->v_string; case G_TYPE_DOUBLE: g_ascii_dtostr (gc_register_node->v_string, G_ASCII_DTOSTR_BUF_SIZE, arv_gc_float_get_value (ARV_GC_FLOAT (node), &local_error)); if (local_error != NULL) { g_propagate_error (error, local_error); return NULL; } return gc_register_node->v_string; case G_TYPE_STRING: string = arv_gc_string_get_value (ARV_GC_STRING (node), &local_error); if (local_error != NULL) { g_propagate_error (error, local_error); return NULL; } return string; default: break; } arv_warning_genicam ("[GcRegisterNode::get_value_as_string] Invalid value type"); return NULL; }
//! Serialize the tree, used by QArvCamera stream operators. void QArvCamera::QArvFeatureTree::recursiveSerialization( QTextStream& out, QArvCamera* camera, QArvCamera::QArvFeatureTree* tree) { auto node = arv_gc_get_node(camera->genicam, tree->feature()); if (tree->children().count() != 0) { if (QString("Root") != tree->feature()) out << "Category: " << tree->feature() << endl; foreach (auto child, tree->children()) { recursiveSerialization(out, camera, child); } return; } if (ARV_IS_GC_COMMAND(node)) return; out << "\t" << tree->feature() << "\t"; if (ARV_IS_GC_REGISTER_NODE(node) && QString(arv_dom_node_get_node_name(ARV_DOM_NODE(node))) == "IntReg") { QArvRegister r; r.length = arv_gc_register_get_length(ARV_GC_REGISTER(node), NULL); r.value = QByteArray(r.length, 0); arv_gc_register_get(ARV_GC_REGISTER(node), r.value.data(), r.length, NULL); out << "Register\t" << QString::number(r.length) << "\t" << QString("0x") + r.value.toHex() << endl; } else if (ARV_IS_GC_ENUMERATION(node)) { out << "Enumeration\t" << arv_gc_enumeration_get_string_value(ARV_GC_ENUMERATION(node), NULL) << endl; } else if (ARV_IS_GC_STRING(node)) { out << "String\t" << arv_gc_string_get_value(ARV_GC_STRING(node), NULL) << endl; } else if (ARV_IS_GC_FLOAT(node)) { out << "Float\t" << arv_gc_float_get_value(ARV_GC_FLOAT(node), NULL) << "\t" << arv_gc_float_get_unit(ARV_GC_FLOAT(node), NULL) << endl; } else if (ARV_IS_GC_BOOLEAN(node)) { out << "Boolean\t" << arv_gc_boolean_get_value(ARV_GC_BOOLEAN(node), NULL) << endl; } else if (ARV_IS_GC_INTEGER(node)) { out << "Integer\t" << arv_gc_integer_get_value(ARV_GC_INTEGER(node), NULL) << endl; } }
const char * arv_chunk_parser_get_string_value (ArvChunkParser *parser, ArvBuffer *buffer, const char *chunk) { ArvGcNode *node; const char *string = NULL; g_return_val_if_fail (ARV_IS_CHUNK_PARSER (parser), NULL); g_return_val_if_fail (ARV_IS_BUFFER (buffer), NULL); node = arv_gc_get_node (parser->priv->genicam, chunk); arv_gc_set_buffer (parser->priv->genicam, buffer); if (ARV_IS_GC_STRING (node)) string = arv_gc_string_get_value (ARV_GC_STRING (node), NULL); else arv_warning_device ("[ArvChunkParser::get_string_value] Node '%s' is not a string", chunk); return string; }