Flutter Engine
The Flutter Engine
Classes | Functions
fl_value.cc File Reference
#include "flutter/shell/platform/linux/public/flutter_linux/fl_value.h"
#include <gmodule.h>
#include <cstring>

Go to the source code of this file.

Classes

struct  _FlValue
 
struct  FlValueBool
 
struct  FlValueInt
 
struct  FlValueDouble
 
struct  FlValueString
 
struct  FlValueUint8List
 
struct  FlValueInt32List
 
struct  FlValueInt64List
 
struct  FlValueFloat32List
 
struct  FlValueFloatList
 
struct  FlValueList
 
struct  FlValueMap
 
struct  FlValueCustom
 

Functions

static FlValuefl_value_new (FlValueType type, size_t size)
 
static void fl_value_destroy (gpointer value)
 
static ssize_t fl_value_lookup_index (FlValue *self, FlValue *key)
 
static void int_to_string (int64_t value, GString *buffer)
 
static void float_to_string (double value, GString *buffer)
 
static void value_to_string (FlValue *value, GString *buffer)
 
G_MODULE_EXPORT FlValuefl_value_new_null ()
 
G_MODULE_EXPORT FlValuefl_value_new_bool (bool value)
 
G_MODULE_EXPORT FlValuefl_value_new_int (int64_t value)
 
G_MODULE_EXPORT FlValuefl_value_new_float (double value)
 
G_MODULE_EXPORT FlValuefl_value_new_string (const gchar *value)
 
G_MODULE_EXPORT FlValuefl_value_new_string_sized (const gchar *value, size_t value_length)
 
G_MODULE_EXPORT FlValuefl_value_new_uint8_list (const uint8_t *data, size_t data_length)
 
G_MODULE_EXPORT FlValuefl_value_new_uint8_list_from_bytes (GBytes *data)
 
G_MODULE_EXPORT FlValuefl_value_new_int32_list (const int32_t *data, size_t data_length)
 
G_MODULE_EXPORT FlValuefl_value_new_int64_list (const int64_t *data, size_t data_length)
 
G_MODULE_EXPORT FlValuefl_value_new_float32_list (const float *data, size_t data_length)
 
G_MODULE_EXPORT FlValuefl_value_new_float_list (const double *data, size_t data_length)
 
G_MODULE_EXPORT FlValuefl_value_new_list ()
 
G_MODULE_EXPORT FlValuefl_value_new_list_from_strv (const gchar *const *str_array)
 
G_MODULE_EXPORT FlValuefl_value_new_map ()
 
G_MODULE_EXPORT FlValuefl_value_new_custom (int type, gconstpointer value, GDestroyNotify destroy_notify)
 
G_MODULE_EXPORT FlValuefl_value_new_custom_object (int type, GObject *object)
 
G_MODULE_EXPORT FlValuefl_value_new_custom_object_take (int type, GObject *object)
 
G_MODULE_EXPORT FlValuefl_value_ref (FlValue *self)
 
G_MODULE_EXPORT void fl_value_unref (FlValue *self)
 
G_MODULE_EXPORT FlValueType fl_value_get_type (FlValue *self)
 
G_MODULE_EXPORT bool fl_value_equal (FlValue *a, FlValue *b)
 
G_MODULE_EXPORT void fl_value_append (FlValue *self, FlValue *value)
 
G_MODULE_EXPORT void fl_value_append_take (FlValue *self, FlValue *value)
 
G_MODULE_EXPORT void fl_value_set (FlValue *self, FlValue *key, FlValue *value)
 
G_MODULE_EXPORT void fl_value_set_take (FlValue *self, FlValue *key, FlValue *value)
 
G_MODULE_EXPORT void fl_value_set_string (FlValue *self, const gchar *key, FlValue *value)
 
G_MODULE_EXPORT void fl_value_set_string_take (FlValue *self, const gchar *key, FlValue *value)
 
G_MODULE_EXPORT bool fl_value_get_bool (FlValue *self)
 
G_MODULE_EXPORT int64_t fl_value_get_int (FlValue *self)
 
G_MODULE_EXPORT double fl_value_get_float (FlValue *self)
 
G_MODULE_EXPORT const gchar * fl_value_get_string (FlValue *self)
 
G_MODULE_EXPORT const uint8_t * fl_value_get_uint8_list (FlValue *self)
 
G_MODULE_EXPORT const int32_t * fl_value_get_int32_list (FlValue *self)
 
G_MODULE_EXPORT const int64_t * fl_value_get_int64_list (FlValue *self)
 
G_MODULE_EXPORT const float * fl_value_get_float32_list (FlValue *self)
 
G_MODULE_EXPORT const double * fl_value_get_float_list (FlValue *self)
 
G_MODULE_EXPORT size_t fl_value_get_length (FlValue *self)
 
G_MODULE_EXPORT FlValuefl_value_get_list_value (FlValue *self, size_t index)
 
G_MODULE_EXPORT FlValuefl_value_get_map_key (FlValue *self, size_t index)
 
G_MODULE_EXPORT FlValuefl_value_get_map_value (FlValue *self, size_t index)
 
G_MODULE_EXPORT FlValuefl_value_lookup (FlValue *self, FlValue *key)
 
G_MODULE_EXPORT FlValuefl_value_lookup_string (FlValue *self, const gchar *key)
 
G_MODULE_EXPORT int fl_value_get_custom_type (FlValue *self)
 
G_MODULE_EXPORT gconstpointer fl_value_get_custom_value (FlValue *self)
 
G_MODULE_EXPORT GObject * fl_value_get_custom_value_object (FlValue *self)
 
G_MODULE_EXPORT gchar * fl_value_to_string (FlValue *value)
 

Function Documentation

◆ fl_value_append()

G_MODULE_EXPORT void fl_value_append ( FlValue value,
FlValue child 
)

fl_value_append: @value: an FlValue of type FL_VALUE_TYPE_LIST. @child: an FlValue.

Adds @child to the end of @value. Calling this with an FlValue that is not of type FL_VALUE_TYPE_LIST is a programming error.

Definition at line 592 of file fl_value.cc.

592 {
593 g_return_if_fail(self != nullptr);
594 g_return_if_fail(self->type == FL_VALUE_TYPE_LIST);
595 g_return_if_fail(value != nullptr);
596
598}
uint8_t value
G_MODULE_EXPORT FlValue * fl_value_ref(FlValue *self)
Definition: fl_value.cc:394
G_MODULE_EXPORT void fl_value_append_take(FlValue *self, FlValue *value)
Definition: fl_value.cc:600
@ FL_VALUE_TYPE_LIST
Definition: fl_value.h:74

◆ fl_value_append_take()

G_MODULE_EXPORT void fl_value_append_take ( FlValue value,
FlValue child 
)

fl_value_append_take: @value: an FlValue of type FL_VALUE_TYPE_LIST. @child: (transfer full): an FlValue.

Adds @child to the end of @value. Ownership of @child is taken by @value. Calling this with an FlValue that is not of type FL_VALUE_TYPE_LIST is a programming error.

Definition at line 600 of file fl_value.cc.

600 {
601 g_return_if_fail(self != nullptr);
602 g_return_if_fail(self->type == FL_VALUE_TYPE_LIST);
603 g_return_if_fail(value != nullptr);
604
605 FlValueList* v = reinterpret_cast<FlValueList*>(self);
606 g_ptr_array_add(v->values, value);
607}
GPtrArray * values
Definition: fl_value.cc:68

◆ fl_value_destroy()

static void fl_value_destroy ( gpointer  value)
static

Definition at line 92 of file fl_value.cc.

92 {
93 fl_value_unref(static_cast<FlValue*>(value));
94}
G_MODULE_EXPORT void fl_value_unref(FlValue *self)
Definition: fl_value.cc:400
typedefG_BEGIN_DECLS struct _FlValue FlValue
Definition: fl_value.h:42

◆ fl_value_equal()

G_MODULE_EXPORT bool fl_value_equal ( FlValue a,
FlValue b 
)

fl_value_equal: : an FlValue. : an FlValue.

Compares two FlValue to see if they are equivalent. Two values are considered equivalent if they are of the same type and their data is the same including any child values. For values of type FL_VALUE_TYPE_MAP the order of the values does not matter.

Returns: TRUE if both values are equivalent.

Definition at line 471 of file fl_value.cc.

471 {
472 g_return_val_if_fail(a != nullptr, false);
473 g_return_val_if_fail(b != nullptr, false);
474
475 if (a->type != b->type) {
476 return false;
477 }
478
479 switch (a->type) {
481 return true;
489 FlValueString* a_ = reinterpret_cast<FlValueString*>(a);
490 FlValueString* b_ = reinterpret_cast<FlValueString*>(b);
491 return g_strcmp0(a_->value, b_->value) == 0;
492 }
495 return false;
496 }
497 const uint8_t* values_a = fl_value_get_uint8_list(a);
498 const uint8_t* values_b = fl_value_get_uint8_list(b);
499 for (size_t i = 0; i < fl_value_get_length(a); i++) {
500 if (values_a[i] != values_b[i]) {
501 return false;
502 }
503 }
504 return true;
505 }
508 return false;
509 }
510 const int32_t* values_a = fl_value_get_int32_list(a);
511 const int32_t* values_b = fl_value_get_int32_list(b);
512 for (size_t i = 0; i < fl_value_get_length(a); i++) {
513 if (values_a[i] != values_b[i]) {
514 return false;
515 }
516 }
517 return true;
518 }
521 return false;
522 }
523 const int64_t* values_a = fl_value_get_int64_list(a);
524 const int64_t* values_b = fl_value_get_int64_list(b);
525 for (size_t i = 0; i < fl_value_get_length(a); i++) {
526 if (values_a[i] != values_b[i]) {
527 return false;
528 }
529 }
530 return true;
531 }
534 return false;
535 }
536 const float* values_a = fl_value_get_float32_list(a);
537 const float* values_b = fl_value_get_float32_list(b);
538 for (size_t i = 0; i < fl_value_get_length(a); i++) {
539 if (values_a[i] != values_b[i]) {
540 return false;
541 }
542 }
543 return true;
544 }
547 return false;
548 }
549 const double* values_a = fl_value_get_float_list(a);
550 const double* values_b = fl_value_get_float_list(b);
551 for (size_t i = 0; i < fl_value_get_length(a); i++) {
552 if (values_a[i] != values_b[i]) {
553 return false;
554 }
555 }
556 return true;
557 }
558 case FL_VALUE_TYPE_LIST: {
560 return false;
561 }
562 for (size_t i = 0; i < fl_value_get_length(a); i++) {
565 return false;
566 }
567 }
568 return true;
569 }
570 case FL_VALUE_TYPE_MAP: {
572 return false;
573 }
574 for (size_t i = 0; i < fl_value_get_length(a); i++) {
576 FlValue* value_b = fl_value_lookup(b, key);
577 if (value_b == nullptr) {
578 return false;
579 }
580 FlValue* value_a = fl_value_get_map_value(a, i);
581 if (!fl_value_equal(value_a, value_b)) {
582 return false;
583 }
584 }
585 return true;
586 }
588 return false;
589 }
590}
static bool b
struct MyStruct a[10]
G_MODULE_EXPORT const double * fl_value_get_float_list(FlValue *self)
Definition: fl_value.cc:717
G_MODULE_EXPORT int64_t fl_value_get_int(FlValue *self)
Definition: fl_value.cc:668
G_MODULE_EXPORT FlValue * fl_value_get_map_key(FlValue *self, size_t index)
Definition: fl_value.cc:784
G_MODULE_EXPORT const uint8_t * fl_value_get_uint8_list(FlValue *self)
Definition: fl_value.cc:689
G_MODULE_EXPORT FlValue * fl_value_lookup(FlValue *self, FlValue *key)
Definition: fl_value.cc:800
G_MODULE_EXPORT FlValue * fl_value_get_list_value(FlValue *self, size_t index)
Definition: fl_value.cc:776
G_MODULE_EXPORT bool fl_value_get_bool(FlValue *self)
Definition: fl_value.cc:661
G_MODULE_EXPORT bool fl_value_equal(FlValue *a, FlValue *b)
Definition: fl_value.cc:471
G_MODULE_EXPORT const float * fl_value_get_float32_list(FlValue *self)
Definition: fl_value.cc:710
G_MODULE_EXPORT FlValue * fl_value_get_map_value(FlValue *self, size_t index)
Definition: fl_value.cc:792
G_MODULE_EXPORT double fl_value_get_float(FlValue *self)
Definition: fl_value.cc:675
G_MODULE_EXPORT size_t fl_value_get_length(FlValue *self)
Definition: fl_value.cc:724
G_MODULE_EXPORT const int32_t * fl_value_get_int32_list(FlValue *self)
Definition: fl_value.cc:696
G_MODULE_EXPORT const int64_t * fl_value_get_int64_list(FlValue *self)
Definition: fl_value.cc:703
@ FL_VALUE_TYPE_STRING
Definition: fl_value.h:69
@ FL_VALUE_TYPE_NULL
Definition: fl_value.h:65
@ FL_VALUE_TYPE_INT
Definition: fl_value.h:67
@ FL_VALUE_TYPE_BOOL
Definition: fl_value.h:66
@ FL_VALUE_TYPE_FLOAT32_LIST
Definition: fl_value.h:76
@ FL_VALUE_TYPE_INT32_LIST
Definition: fl_value.h:71
@ FL_VALUE_TYPE_UINT8_LIST
Definition: fl_value.h:70
@ FL_VALUE_TYPE_MAP
Definition: fl_value.h:75
@ FL_VALUE_TYPE_INT64_LIST
Definition: fl_value.h:72
@ FL_VALUE_TYPE_FLOAT_LIST
Definition: fl_value.h:73
@ FL_VALUE_TYPE_CUSTOM
Definition: fl_value.h:77
@ FL_VALUE_TYPE_FLOAT
Definition: fl_value.h:68
gchar * value
Definition: fl_value.cc:33

◆ fl_value_get_bool()

G_MODULE_EXPORT bool fl_value_get_bool ( FlValue value)

fl_value_get_bool: @value: an FlValue of type FL_VALUE_TYPE_BOOL.

Gets the boolean value of @value. Calling this with an FlValue that is not of type FL_VALUE_TYPE_BOOL is a programming error.

Returns: a boolean value.

Definition at line 661 of file fl_value.cc.

661 {
662 g_return_val_if_fail(self != nullptr, FALSE);
663 g_return_val_if_fail(self->type == FL_VALUE_TYPE_BOOL, FALSE);
664 FlValueBool* v = reinterpret_cast<FlValueBool*>(self);
665 return v->value;
666}
return FALSE
bool value
Definition: fl_value.cc:18

◆ fl_value_get_custom_type()

G_MODULE_EXPORT int fl_value_get_custom_type ( FlValue value)

fl_value_get_custom_type: @value: an FlValue of type FL_VALUE_TYPE_CUSTOM.

Gets the type ID for this custom type.

Returns: a type ID.

Definition at line 822 of file fl_value.cc.

822 {
823 g_return_val_if_fail(self != nullptr, -1);
824 g_return_val_if_fail(self->type == FL_VALUE_TYPE_CUSTOM, -1);
825
826 FlValueCustom* v = reinterpret_cast<FlValueCustom*>(self);
827 return v->type;
828}

◆ fl_value_get_custom_value()

G_MODULE_EXPORT gconstpointer fl_value_get_custom_value ( FlValue value)

fl_value_get_custom_value: @value: an FlValue of type FL_VALUE_TYPE_CUSTOM.

Gets the address of the custom value.

Returns: a pointer to the custom value.

Definition at line 830 of file fl_value.cc.

830 {
831 g_return_val_if_fail(self != nullptr, nullptr);
832 g_return_val_if_fail(self->type == FL_VALUE_TYPE_CUSTOM, nullptr);
833
834 FlValueCustom* v = reinterpret_cast<FlValueCustom*>(self);
835 return v->value;
836}
gconstpointer value
Definition: fl_value.cc:80

◆ fl_value_get_custom_value_object()

G_MODULE_EXPORT GObject * fl_value_get_custom_value_object ( FlValue value)

fl_value_get_custom_value_object: @value: an FlValue of type FL_VALUE_TYPE_CUSTOM.

Gets the custom value as an object.

Returns: an object.

Definition at line 838 of file fl_value.cc.

838 {
839 g_return_val_if_fail(self != nullptr, nullptr);
840 g_return_val_if_fail(self->type == FL_VALUE_TYPE_CUSTOM, nullptr);
841
842 FlValueCustom* v = reinterpret_cast<FlValueCustom*>(self);
843 return G_OBJECT(v->value);
844}

◆ fl_value_get_float()

G_MODULE_EXPORT double fl_value_get_float ( FlValue value)

fl_value_get_float: @value: an FlValue of type FL_VALUE_TYPE_FLOAT.

Gets the floating point number of @value. Calling this with an FlValue that is not of type FL_VALUE_TYPE_FLOAT is a programming error.

Returns: a floating point number.

Definition at line 675 of file fl_value.cc.

675 {
676 g_return_val_if_fail(self != nullptr, 0.0);
677 g_return_val_if_fail(self->type == FL_VALUE_TYPE_FLOAT, 0.0);
678 FlValueDouble* v = reinterpret_cast<FlValueDouble*>(self);
679 return v->value;
680}
double value
Definition: fl_value.cc:28

◆ fl_value_get_float32_list()

G_MODULE_EXPORT const float * fl_value_get_float32_list ( FlValue value)

fl_value_get_float32_list: @value: an FlValue of type FL_VALUE_TYPE_FLOAT32_LIST.

Gets the array of floating point numbers @value contains. The data contains fl_value_get_length() elements. Calling this with an FlValue that is not of type FL_VALUE_TYPE_FLOAT32_LIST is a programming error.

Returns: an array of floating point numbers.

Definition at line 710 of file fl_value.cc.

710 {
711 g_return_val_if_fail(self != nullptr, nullptr);
712 g_return_val_if_fail(self->type == FL_VALUE_TYPE_FLOAT32_LIST, nullptr);
713 FlValueFloat32List* v = reinterpret_cast<FlValueFloat32List*>(self);
714 return v->values;
715}

◆ fl_value_get_float_list()

G_MODULE_EXPORT const double * fl_value_get_float_list ( FlValue value)

fl_value_get_float_list: @value: an FlValue of type FL_VALUE_TYPE_FLOAT_LIST.

Gets the array of floating point numbers @value contains. The data contains fl_value_get_length() elements. Calling this with an FlValue that is not of type FL_VALUE_TYPE_FLOAT_LIST is a programming error.

Returns: an array of floating point numbers.

Definition at line 717 of file fl_value.cc.

717 {
718 g_return_val_if_fail(self != nullptr, nullptr);
719 g_return_val_if_fail(self->type == FL_VALUE_TYPE_FLOAT_LIST, nullptr);
720 FlValueFloatList* v = reinterpret_cast<FlValueFloatList*>(self);
721 return v->values;
722}
double * values
Definition: fl_value.cc:62

◆ fl_value_get_int()

G_MODULE_EXPORT int64_t fl_value_get_int ( FlValue value)

fl_value_get_int: @value: an FlValue of type FL_VALUE_TYPE_INT.

Gets the integer number of @value. Calling this with an FlValue that is not of type FL_VALUE_TYPE_INT is a programming error.

Returns: an integer number.

Definition at line 668 of file fl_value.cc.

668 {
669 g_return_val_if_fail(self != nullptr, 0);
670 g_return_val_if_fail(self->type == FL_VALUE_TYPE_INT, 0);
671 FlValueInt* v = reinterpret_cast<FlValueInt*>(self);
672 return v->value;
673}
int64_t value
Definition: fl_value.cc:23

◆ fl_value_get_int32_list()

G_MODULE_EXPORT const int32_t * fl_value_get_int32_list ( FlValue value)

fl_value_get_int32_list: @value: an FlValue of type FL_VALUE_TYPE_INT32_LIST.

Gets the array of 32 bit integers @value contains. The data contains fl_value_get_length() elements. Calling this with an FlValue that is not of type FL_VALUE_TYPE_INT32_LIST is a programming error.

Returns: an array of 32 bit integers.

Definition at line 696 of file fl_value.cc.

696 {
697 g_return_val_if_fail(self != nullptr, nullptr);
698 g_return_val_if_fail(self->type == FL_VALUE_TYPE_INT32_LIST, nullptr);
699 FlValueInt32List* v = reinterpret_cast<FlValueInt32List*>(self);
700 return v->values;
701}
int32_t * values
Definition: fl_value.cc:44

◆ fl_value_get_int64_list()

G_MODULE_EXPORT const int64_t * fl_value_get_int64_list ( FlValue value)

fl_value_get_int64_list: @value: an FlValue of type FL_VALUE_TYPE_INT64_LIST.

Gets the array of 64 bit integers @value contains. The data contains fl_value_get_length() elements. Calling this with an FlValue that is not of type FL_VALUE_TYPE_INT64_LIST is a programming error.

Returns: an array of 64 bit integers.

Definition at line 703 of file fl_value.cc.

703 {
704 g_return_val_if_fail(self != nullptr, nullptr);
705 g_return_val_if_fail(self->type == FL_VALUE_TYPE_INT64_LIST, nullptr);
706 FlValueInt64List* v = reinterpret_cast<FlValueInt64List*>(self);
707 return v->values;
708}
int64_t * values
Definition: fl_value.cc:50

◆ fl_value_get_length()

G_MODULE_EXPORT size_t fl_value_get_length ( FlValue value)

fl_value_get_length: @value: an FlValue of type FL_VALUE_TYPE_UINT8_LIST, FL_VALUE_TYPE_INT32_LIST, FL_VALUE_TYPE_INT64_LIST, FL_VALUE_TYPE_FLOAT32_LIST, FL_VALUE_TYPE_FLOAT_LIST, FL_VALUE_TYPE_LIST or FL_VALUE_TYPE_MAP.

Gets the number of elements @value contains. This is only valid for list and map types. Calling this with other types is a programming error.

Returns: the number of elements inside @value.

Definition at line 724 of file fl_value.cc.

724 {
725 g_return_val_if_fail(self != nullptr, 0);
726 g_return_val_if_fail(self->type == FL_VALUE_TYPE_UINT8_LIST ||
731 self->type == FL_VALUE_TYPE_LIST ||
732 self->type == FL_VALUE_TYPE_MAP,
733 0);
734
735 switch (self->type) {
737 FlValueUint8List* v = reinterpret_cast<FlValueUint8List*>(self);
738 return v->values_length;
739 }
741 FlValueInt32List* v = reinterpret_cast<FlValueInt32List*>(self);
742 return v->values_length;
743 }
745 FlValueInt64List* v = reinterpret_cast<FlValueInt64List*>(self);
746 return v->values_length;
747 }
749 FlValueFloat32List* v = reinterpret_cast<FlValueFloat32List*>(self);
750 return v->values_length;
751 }
753 FlValueFloatList* v = reinterpret_cast<FlValueFloatList*>(self);
754 return v->values_length;
755 }
756 case FL_VALUE_TYPE_LIST: {
757 FlValueList* v = reinterpret_cast<FlValueList*>(self);
758 return v->values->len;
759 }
760 case FL_VALUE_TYPE_MAP: {
761 FlValueMap* v = reinterpret_cast<FlValueMap*>(self);
762 return v->keys->len;
763 }
770 return 0;
771 }
772
773 return 0;
774}
size_t values_length
Definition: fl_value.cc:57
size_t values_length
Definition: fl_value.cc:63
size_t values_length
Definition: fl_value.cc:45
size_t values_length
Definition: fl_value.cc:51
GPtrArray * keys
Definition: fl_value.cc:73
size_t values_length
Definition: fl_value.cc:39

◆ fl_value_get_list_value()

G_MODULE_EXPORT FlValue * fl_value_get_list_value ( FlValue value,
size_t  index 
)

fl_value_get_list_value: @value: an FlValue of type FL_VALUE_TYPE_LIST. @index: an index in the list.

Gets a child element of the list. It is a programming error to request an index that is outside the size of the list as returned from fl_value_get_length(). Calling this with an FlValue that is not of type FL_VALUE_TYPE_LIST is a programming error.

Returns: an FlValue.

Definition at line 776 of file fl_value.cc.

776 {
777 g_return_val_if_fail(self != nullptr, nullptr);
778 g_return_val_if_fail(self->type == FL_VALUE_TYPE_LIST, nullptr);
779
780 FlValueList* v = reinterpret_cast<FlValueList*>(self);
781 return static_cast<FlValue*>(g_ptr_array_index(v->values, index));
782}

◆ fl_value_get_map_key()

G_MODULE_EXPORT FlValue * fl_value_get_map_key ( FlValue value,
size_t  index 
)

fl_value_get_map_key: @value: an FlValue of type FL_VALUE_TYPE_MAP. @index: an index in the map.

Gets a key from the map. It is a programming error to request an index that is outside the size of the list as returned from fl_value_get_length(). Calling this with an FlValue that is not of type FL_VALUE_TYPE_MAP is a programming error.

Returns: an FlValue.

Definition at line 784 of file fl_value.cc.

784 {
785 g_return_val_if_fail(self != nullptr, nullptr);
786 g_return_val_if_fail(self->type == FL_VALUE_TYPE_MAP, nullptr);
787
788 FlValueMap* v = reinterpret_cast<FlValueMap*>(self);
789 return static_cast<FlValue*>(g_ptr_array_index(v->keys, index));
790}

◆ fl_value_get_map_value()

G_MODULE_EXPORT FlValue * fl_value_get_map_value ( FlValue value,
size_t  index 
)

fl_value_get_map_value: @value: an FlValue of type FL_VALUE_TYPE_MAP. @index: an index in the map.

Gets a value from the map. It is a programming error to request an index that is outside the size of the list as returned from fl_value_get_length(). Calling this with an FlValue that is not of type FL_VALUE_TYPE_MAP is a programming error.

Returns: an FlValue.

Definition at line 792 of file fl_value.cc.

792 {
793 g_return_val_if_fail(self != nullptr, nullptr);
794 g_return_val_if_fail(self->type == FL_VALUE_TYPE_MAP, nullptr);
795
796 FlValueMap* v = reinterpret_cast<FlValueMap*>(self);
797 return static_cast<FlValue*>(g_ptr_array_index(v->values, index));
798}
GPtrArray * values
Definition: fl_value.cc:74

◆ fl_value_get_string()

G_MODULE_EXPORT const gchar * fl_value_get_string ( FlValue value)

fl_value_get_string: @value: an FlValue of type FL_VALUE_TYPE_STRING.

Gets the UTF-8 text contained in @value. Calling this with an FlValue that is not of type FL_VALUE_TYPE_STRING is a programming error.

Returns: a UTF-8 encoded string.

Definition at line 682 of file fl_value.cc.

682 {
683 g_return_val_if_fail(self != nullptr, nullptr);
684 g_return_val_if_fail(self->type == FL_VALUE_TYPE_STRING, nullptr);
685 FlValueString* v = reinterpret_cast<FlValueString*>(self);
686 return v->value;
687}

◆ fl_value_get_type()

G_MODULE_EXPORT FlValueType fl_value_get_type ( FlValue value)

fl_value_get_type: @value: an FlValue.

Gets the type of @value.

Returns: an FlValueType.

Definition at line 466 of file fl_value.cc.

466 {
467 g_return_val_if_fail(self != nullptr, FL_VALUE_TYPE_NULL);
468 return self->type;
469}

◆ fl_value_get_uint8_list()

G_MODULE_EXPORT const uint8_t * fl_value_get_uint8_list ( FlValue value)

fl_value_get_uint8_list: @value: an FlValue of type FL_VALUE_TYPE_UINT8_LIST.

Gets the array of unisigned 8 bit integers @value contains. The data contains fl_value_get_length() elements. Calling this with an FlValue that is not of type FL_VALUE_TYPE_UINT8_LIST is a programming error.

Returns: an array of unsigned 8 bit integers.

Definition at line 689 of file fl_value.cc.

689 {
690 g_return_val_if_fail(self != nullptr, nullptr);
691 g_return_val_if_fail(self->type == FL_VALUE_TYPE_UINT8_LIST, nullptr);
692 FlValueUint8List* v = reinterpret_cast<FlValueUint8List*>(self);
693 return v->values;
694}
uint8_t * values
Definition: fl_value.cc:38

◆ fl_value_lookup()

G_MODULE_EXPORT FlValue * fl_value_lookup ( FlValue value,
FlValue key 
)

fl_value_lookup: @value: an FlValue of type FL_VALUE_TYPE_MAP. @key: a key value.

Gets the map entry that matches @key. Keys are checked using fl_value_equal(). Calling this with an FlValue that is not of type FL_VALUE_TYPE_MAP is a programming error.

Map lookups are not optimized for performance - if you have a large map or need frequent access you should copy the data into another structure, e.g. #GHashTable.

Returns: (allow-none): the value with this key or NULL if not one present.

Definition at line 800 of file fl_value.cc.

800 {
801 g_return_val_if_fail(self != nullptr, nullptr);
802 g_return_val_if_fail(self->type == FL_VALUE_TYPE_MAP, nullptr);
803
804 ssize_t index = fl_value_lookup_index(self, key);
805 if (index < 0) {
806 return nullptr;
807 }
808 return fl_value_get_map_value(self, index);
809}
static ssize_t fl_value_lookup_index(FlValue *self, FlValue *key)
Definition: fl_value.cc:99

◆ fl_value_lookup_index()

static ssize_t fl_value_lookup_index ( FlValue self,
FlValue key 
)
static

Definition at line 99 of file fl_value.cc.

99 {
100 g_return_val_if_fail(self->type == FL_VALUE_TYPE_MAP, -1);
101
102 for (size_t i = 0; i < fl_value_get_length(self); i++) {
104 if (fl_value_equal(k, key)) {
105 return i;
106 }
107 }
108 return -1;
109}

◆ fl_value_lookup_string()

G_MODULE_EXPORT FlValue * fl_value_lookup_string ( FlValue value,
const gchar *  key 
)

fl_value_lookup_string: @value: an FlValue of type FL_VALUE_TYPE_MAP. @key: a key value.

Gets the map entry that matches @key. Keys are checked using fl_value_equal(). Calling this with an FlValue that is not of type FL_VALUE_TYPE_MAP is a programming error.

Map lookups are not optimized for performance - if you have a large map or need frequent access you should copy the data into another structure, e.g. #GHashTable.

Returns: (allow-none): the value with this key or NULL if not one present.

Definition at line 811 of file fl_value.cc.

812 {
813 g_return_val_if_fail(self != nullptr, nullptr);
814 FlValue* string_key = fl_value_new_string(key);
815 FlValue* value = fl_value_lookup(self, string_key);
816 // Explicit unref used because the g_autoptr is triggering a false positive
817 // with clang-tidy.
818 fl_value_unref(string_key);
819 return value;
820}
G_MODULE_EXPORT FlValue * fl_value_new_string(const gchar *value)
Definition: fl_value.cc:276

◆ fl_value_new()

static FlValue * fl_value_new ( FlValueType  type,
size_t  size 
)
static

Definition at line 84 of file fl_value.cc.

84 {
85 FlValue* self = static_cast<FlValue*>(g_malloc0(size));
86 self->type = type;
87 self->ref_count = 1;
88 return self;
89}
GLenum type
it will be possible to load the file into Perfetto s trace viewer disable asset Prevents usage of any non test fonts unless they were explicitly Loaded via prefetched default font Indicates whether the embedding started a prefetch of the default font manager before creating the engine run In non interactive keep the shell running after the Dart script has completed enable serial On low power devices with low core running concurrent GC tasks on threads can cause them to contend with the UI thread which could potentially lead to jank This option turns off all concurrent GC activities domain network JSON encoded network policy per domain This overrides the DisallowInsecureConnections switch Embedder can specify whether to allow or disallow insecure connections at a domain level old gen heap size
Definition: switches.h:259

◆ fl_value_new_bool()

G_MODULE_EXPORT FlValue * fl_value_new_bool ( bool  value)

fl_value_new_bool: @value: the value.

Creates an FlValue that contains a boolean value. The equivalent Dart type is a bool.

Returns: a new FlValue.

Definition at line 255 of file fl_value.cc.

255 {
256 FlValueBool* self = reinterpret_cast<FlValueBool*>(
258 self->value = value ? true : false;
259 return reinterpret_cast<FlValue*>(self);
260}
static FlValue * fl_value_new(FlValueType type, size_t size)
Definition: fl_value.cc:84

◆ fl_value_new_custom()

G_MODULE_EXPORT FlValue * fl_value_new_custom ( int  type,
gconstpointer  value,
GDestroyNotify  destroy_notify 
)

fl_value_new_custom: @type: an ID for this type. @value: pointer to the custom value. @destroy_notify: function to call when @value is no longer required.

Creates a new custom data type. The Dart side of the channel must have equivalent custom code to access this object.

Returns: a new FlValue.

Definition at line 374 of file fl_value.cc.

376 {
377 FlValueCustom* self = reinterpret_cast<FlValueCustom*>(
379 self->type = type;
380 self->value = value;
381 self->destroy_notify = destroy_notify;
382 return reinterpret_cast<FlValue*>(self);
383}

◆ fl_value_new_custom_object()

G_MODULE_EXPORT FlValue * fl_value_new_custom_object ( int  type,
GObject *  object 
)

fl_value_new_custom_object: @type: an ID for this type. @object: the custom object.

Creates a new custom data type. The Dart side of the channel must have equivalent custom code to access this object.

Returns: a new FlValue.

Definition at line 385 of file fl_value.cc.

385 {
386 return fl_value_new_custom(type, g_object_ref(object), g_object_unref);
387}
G_MODULE_EXPORT FlValue * fl_value_new_custom(int type, gconstpointer value, GDestroyNotify destroy_notify)
Definition: fl_value.cc:374

◆ fl_value_new_custom_object_take()

G_MODULE_EXPORT FlValue * fl_value_new_custom_object_take ( int  type,
GObject *  object 
)

fl_value_new_custom_object_take: @type: an ID for this type. @object: (transfer full): the custom object.

Creates a new custom data type. The Dart side of the channel must have equivalent custom code to access this object. Ownership of @object is taken.

Returns: a new FlValue.

Definition at line 389 of file fl_value.cc.

390 {
391 return fl_value_new_custom(type, object, g_object_unref);
392}

◆ fl_value_new_float()

G_MODULE_EXPORT FlValue * fl_value_new_float ( double  value)

fl_value_new_float: @value: the value.

Creates an FlValue that contains a floating point number. The equivalent Dart type is a num.

Returns: a new FlValue.

Definition at line 269 of file fl_value.cc.

269 {
270 FlValueDouble* self = reinterpret_cast<FlValueDouble*>(
272 self->value = value;
273 return reinterpret_cast<FlValue*>(self);
274}

◆ fl_value_new_float32_list()

G_MODULE_EXPORT FlValue * fl_value_new_float32_list ( const float *  value,
size_t  value_length 
)

fl_value_new_float32_list: @value: an array of floating point numbers. @value_length: number of elements in @value.

Creates an ordered list containing 32 bit floating point numbers. The equivalent Dart type is a Float32List.

Returns: a new FlValue.

Definition at line 329 of file fl_value.cc.

330 {
331 FlValueFloat32List* self = reinterpret_cast<FlValueFloat32List*>(
333 self->values_length = data_length;
334 self->values = static_cast<float*>(g_malloc(sizeof(float) * data_length));
335 memcpy(self->values, data, sizeof(float) * data_length);
336 return reinterpret_cast<FlValue*>(self);
337}
std::shared_ptr< const fml::Mapping > data
Definition: texture_gles.cc:63

◆ fl_value_new_float_list()

G_MODULE_EXPORT FlValue * fl_value_new_float_list ( const double *  value,
size_t  value_length 
)

fl_value_new_float_list: @value: an array of floating point numbers. @value_length: number of elements in @value.

Creates an ordered list containing floating point numbers. The equivalent Dart type is a Float64List.

Returns: a new FlValue.

Definition at line 339 of file fl_value.cc.

340 {
341 FlValueFloatList* self = reinterpret_cast<FlValueFloatList*>(
343 self->values_length = data_length;
344 self->values = static_cast<double*>(g_malloc(sizeof(double) * data_length));
345 memcpy(self->values, data, sizeof(double) * data_length);
346 return reinterpret_cast<FlValue*>(self);
347}

◆ fl_value_new_int()

G_MODULE_EXPORT FlValue * fl_value_new_int ( int64_t  value)

fl_value_new_int: @value: the value.

Creates an FlValue that contains an integer number. The equivalent Dart type is a num.

Returns: a new FlValue.

Definition at line 262 of file fl_value.cc.

262 {
263 FlValueInt* self = reinterpret_cast<FlValueInt*>(
265 self->value = value;
266 return reinterpret_cast<FlValue*>(self);
267}

◆ fl_value_new_int32_list()

G_MODULE_EXPORT FlValue * fl_value_new_int32_list ( const int32_t *  value,
size_t  value_length 
)

fl_value_new_int32_list: @value: an array of signed 32 bit integers. @value_length: number of elements in @value.

Creates an ordered list containing 32 bit integers. The equivalent Dart type is a Int32List.

Returns: a new FlValue.

Definition at line 309 of file fl_value.cc.

310 {
311 FlValueInt32List* self = reinterpret_cast<FlValueInt32List*>(
313 self->values_length = data_length;
314 self->values = static_cast<int32_t*>(g_malloc(sizeof(int32_t) * data_length));
315 memcpy(self->values, data, sizeof(int32_t) * data_length);
316 return reinterpret_cast<FlValue*>(self);
317}

◆ fl_value_new_int64_list()

G_MODULE_EXPORT FlValue * fl_value_new_int64_list ( const int64_t *  value,
size_t  value_length 
)

fl_value_new_int64_list: @value: an array of signed 64 bit integers. @value_length: number of elements in @value.

Creates an ordered list containing 64 bit integers. The equivalent Dart type is a Int64List.

Returns: a new FlValue.

Definition at line 319 of file fl_value.cc.

320 {
321 FlValueInt64List* self = reinterpret_cast<FlValueInt64List*>(
323 self->values_length = data_length;
324 self->values = static_cast<int64_t*>(g_malloc(sizeof(int64_t) * data_length));
325 memcpy(self->values, data, sizeof(int64_t) * data_length);
326 return reinterpret_cast<FlValue*>(self);
327}

◆ fl_value_new_list()

G_MODULE_EXPORT FlValue * fl_value_new_list ( )

fl_value_new_list:

Creates an ordered list. Children can be added to the list using fl_value_append(). The children are accessed using fl_value_get_length() and fl_value_get_list_value(). The equivalent Dart type is a List<dynamic>.

The following example shows a simple list of values:

|[ g_autoptr(FlValue) value = fl_value_new_list (); fl_value_append_take (value, fl_value_new_string ("one"); fl_value_append_take (value, fl_value_new_int (2); fl_value_append_take (value, fl_value_new_float (3.0); ]|

This value can be decoded using:

|[ g_assert (fl_value_get_type (value) == FL_VALUE_TYPE_LIST); for (size_t i = 0; i < fl_value_get_length (value); i++) { FlValue *child = fl_value_get_list_value (value, i); process_value (child); } ]|

Returns: a new FlValue.

Definition at line 349 of file fl_value.cc.

349 {
350 FlValueList* self = reinterpret_cast<FlValueList*>(
352 self->values = g_ptr_array_new_with_free_func(fl_value_destroy);
353 return reinterpret_cast<FlValue*>(self);
354}
static void fl_value_destroy(gpointer value)
Definition: fl_value.cc:92

◆ fl_value_new_list_from_strv()

G_MODULE_EXPORT FlValue * fl_value_new_list_from_strv ( const gchar *const *  value)

fl_value_new_list_from_strv: @value: a NULL-terminated array of strings.

Creates an ordered list containing #FlString values.

Returns: a new FlValue.

Definition at line 356 of file fl_value.cc.

357 {
358 g_return_val_if_fail(str_array != nullptr, nullptr);
359 g_autoptr(FlValue) value = fl_value_new_list();
360 for (int i = 0; str_array[i] != nullptr; i++) {
362 }
363 return fl_value_ref(value);
364}
G_MODULE_EXPORT FlValue * fl_value_new_list()
Definition: fl_value.cc:349

◆ fl_value_new_map()

G_MODULE_EXPORT FlValue * fl_value_new_map ( )

fl_value_new_map:

Creates an ordered associative array. Children can be added to the map using fl_value_set(), fl_value_set_take(), fl_value_set_string(), fl_value_set_string_take(). The children are accessed using fl_value_get_length(), fl_value_get_map_key(), fl_value_get_map_value(), fl_value_lookup() and fl_value_lookup_string(). The equivalent Dart type is a Map<dynamic>.

The following example shows how to create a map of values keyed by strings:

|[ g_autoptr(FlValue) value = fl_value_new_map (); fl_value_set_string_take (value, "name", fl_value_new_string ("Gandalf")); fl_value_set_string_take (value, "occupation", fl_value_new_string ("Wizard")); fl_value_set_string_take (value, "age", fl_value_new_int (2019)); ]|

This value can be decoded using: |[ g_assert (fl_value_get_type (value) == FL_VALUE_TYPE_MAP); FlValue *name = fl_value_lookup_string (value, "name"); g_assert (fl_value_get_type (name) == FL_VALUE_TYPE_STRING); FlValue *age = fl_value_lookup_string (value, "age"); g_assert (fl_value_get_type (age) == FL_VALUE_TYPE_INT); g_message ("Next customer is %s (%d years old)", fl_value_get_string (name), fl_value_get_int (age)); ]|

Returns: a new FlValue.

Definition at line 366 of file fl_value.cc.

366 {
367 FlValueMap* self = reinterpret_cast<FlValueMap*>(
369 self->keys = g_ptr_array_new_with_free_func(fl_value_destroy);
370 self->values = g_ptr_array_new_with_free_func(fl_value_destroy);
371 return reinterpret_cast<FlValue*>(self);
372}

◆ fl_value_new_null()

G_MODULE_EXPORT FlValue * fl_value_new_null ( )

fl_value_new_null:

Creates an FlValue that contains a null value. The equivalent Dart type is null.

Returns: a new FlValue.

Definition at line 251 of file fl_value.cc.

251 {
252 return fl_value_new(FL_VALUE_TYPE_NULL, sizeof(FlValue));
253}

◆ fl_value_new_string()

G_MODULE_EXPORT FlValue * fl_value_new_string ( const gchar *  value)

fl_value_new_string: @value: a NULL-terminated UTF-8 string.

Creates an FlValue that contains UTF-8 text. The equivalent Dart type is a String.

Returns: a new FlValue.

Definition at line 276 of file fl_value.cc.

276 {
277 FlValueString* self = reinterpret_cast<FlValueString*>(
279 self->value = g_strdup(value);
280 return reinterpret_cast<FlValue*>(self);
281}

◆ fl_value_new_string_sized()

G_MODULE_EXPORT FlValue * fl_value_new_string_sized ( const gchar *  value,
size_t  value_length 
)

fl_value_new_string_sized: @value: a buffer containing UTF-8 text. It does not require a nul terminator. @value_length: the number of bytes to use from @value.

Creates an FlValue that contains UTF-8 text. The equivalent Dart type is a String.

Returns: a new FlValue.

Definition at line 283 of file fl_value.cc.

284 {
285 FlValueString* self = reinterpret_cast<FlValueString*>(
287 self->value =
288 value_length == 0 ? g_strdup("") : g_strndup(value, value_length);
289 return reinterpret_cast<FlValue*>(self);
290}

◆ fl_value_new_uint8_list()

G_MODULE_EXPORT FlValue * fl_value_new_uint8_list ( const uint8_t *  value,
size_t  value_length 
)

fl_value_new_uint8_list: @value: an array of unsigned 8 bit integers. @value_length: number of elements in @value.

Creates an ordered list containing 8 bit unsigned integers. The data is copied. The equivalent Dart type is a Uint8List.

Returns: a new FlValue.

Definition at line 292 of file fl_value.cc.

293 {
294 FlValueUint8List* self = reinterpret_cast<FlValueUint8List*>(
296 self->values_length = data_length;
297 self->values = static_cast<uint8_t*>(g_malloc(sizeof(uint8_t) * data_length));
298 memcpy(self->values, data, sizeof(uint8_t) * data_length);
299 return reinterpret_cast<FlValue*>(self);
300}

◆ fl_value_new_uint8_list_from_bytes()

G_MODULE_EXPORT FlValue * fl_value_new_uint8_list_from_bytes ( GBytes *  value)

fl_value_new_uint8_list_from_bytes: @value: a #GBytes.

Creates an ordered list containing 8 bit unsigned integers. The data is copied. The equivalent Dart type is a Uint8List.

Returns: a new FlValue.

Definition at line 302 of file fl_value.cc.

302 {
303 gsize length;
304 const uint8_t* d =
305 static_cast<const uint8_t*>(g_bytes_get_data(data, &length));
307}
VULKAN_HPP_DEFAULT_DISPATCH_LOADER_DYNAMIC_STORAGE auto & d
Definition: main.cc:19
G_MODULE_EXPORT FlValue * fl_value_new_uint8_list(const uint8_t *data, size_t data_length)
Definition: fl_value.cc:292
size_t length

◆ fl_value_ref()

G_MODULE_EXPORT FlValue * fl_value_ref ( FlValue value)

fl_value_ref: @value: an FlValue.

Increases the reference count of an FlValue.

Returns: the value that was referenced.

Definition at line 394 of file fl_value.cc.

394 {
395 g_return_val_if_fail(self != nullptr, nullptr);
396 self->ref_count++;
397 return self;
398}

◆ fl_value_set()

G_MODULE_EXPORT void fl_value_set ( FlValue value,
FlValue key,
FlValue child_value 
)

fl_value_set: @value: an FlValue of type FL_VALUE_TYPE_MAP. @key: an FlValue. @child_value: an FlValue.

Sets @key in @value to @child_value. If an existing value was in the map with the same key it is replaced. Calling this with an FlValue that is not of type FL_VALUE_TYPE_MAP is a programming error.

Definition at line 609 of file fl_value.cc.

609 {
610 g_return_if_fail(self != nullptr);
611 g_return_if_fail(self->type == FL_VALUE_TYPE_MAP);
612 g_return_if_fail(key != nullptr);
613 g_return_if_fail(value != nullptr);
614
616}
G_MODULE_EXPORT void fl_value_set_take(FlValue *self, FlValue *key, FlValue *value)
Definition: fl_value.cc:618

◆ fl_value_set_string()

G_MODULE_EXPORT void fl_value_set_string ( FlValue value,
const gchar *  key,
FlValue child_value 
)

fl_value_set_string: @value: an FlValue of type FL_VALUE_TYPE_MAP. @key: a UTF-8 text key. @child_value: an FlValue.

Sets a value in the map with a text key. If an existing value was in the map with the same key it is replaced. Calling this with an FlValue that is not of type FL_VALUE_TYPE_MAP is a programming error.

Definition at line 639 of file fl_value.cc.

641 {
642 g_return_if_fail(self != nullptr);
643 g_return_if_fail(self->type == FL_VALUE_TYPE_MAP);
644 g_return_if_fail(key != nullptr);
645 g_return_if_fail(value != nullptr);
646
648}

◆ fl_value_set_string_take()

G_MODULE_EXPORT void fl_value_set_string_take ( FlValue value,
const gchar *  key,
FlValue child_value 
)

fl_value_set_string_take: @value: an FlValue of type FL_VALUE_TYPE_MAP. @key: a UTF-8 text key. @child_value: (transfer full): an FlValue.

Sets a value in the map with a text key, taking ownership of the value. If an existing value was in the map with the same key it is replaced. Calling this with an FlValue that is not of type FL_VALUE_TYPE_MAP is a programming error.

Definition at line 650 of file fl_value.cc.

652 {
653 g_return_if_fail(self != nullptr);
654 g_return_if_fail(self->type == FL_VALUE_TYPE_MAP);
655 g_return_if_fail(key != nullptr);
656 g_return_if_fail(value != nullptr);
657
659}

◆ fl_value_set_take()

G_MODULE_EXPORT void fl_value_set_take ( FlValue value,
FlValue key,
FlValue child_value 
)

fl_value_set_take: @value: an FlValue of type FL_VALUE_TYPE_MAP. @key: (transfer full): an FlValue. @child_value: (transfer full): an FlValue.

Sets @key in @value to @child_value. Ownership of both @key and @child_value is taken by @value. If an existing value was in the map with the same key it is replaced. Calling this with an FlValue that is not of type FL_VALUE_TYPE_MAP is a programming error.

Definition at line 618 of file fl_value.cc.

620 {
621 g_return_if_fail(self != nullptr);
622 g_return_if_fail(self->type == FL_VALUE_TYPE_MAP);
623 g_return_if_fail(key != nullptr);
624 g_return_if_fail(value != nullptr);
625
626 FlValueMap* v = reinterpret_cast<FlValueMap*>(self);
627 ssize_t index = fl_value_lookup_index(self, key);
628 if (index < 0) {
629 g_ptr_array_add(v->keys, key);
630 g_ptr_array_add(v->values, value);
631 } else {
632 fl_value_destroy(v->keys->pdata[index]);
633 v->keys->pdata[index] = key;
634 fl_value_destroy(v->values->pdata[index]);
635 v->values->pdata[index] = value;
636 }
637}

◆ fl_value_to_string()

G_MODULE_EXPORT gchar * fl_value_to_string ( FlValue value)

fl_value_to_string: @value: an FlValue.

Converts an FlValue to a text representation, suitable for logging purposes. The text is formatted to be the equivalent of Dart toString() methods.

Returns: UTF-8 text.

Definition at line 846 of file fl_value.cc.

846 {
847 GString* buffer = g_string_new("");
849 return g_string_free(buffer, FALSE);
850}
static void value_to_string(FlValue *value, GString *buffer)
Definition: fl_value.cc:136
DEF_SWITCHES_START aot vmservice shared library Name of the *so containing AOT compiled Dart assets for launching the service isolate vm snapshot The VM snapshot data that will be memory mapped as read only SnapshotAssetPath must be present isolate snapshot The isolate snapshot data that will be memory mapped as read only SnapshotAssetPath must be present cache dir Path to the cache directory This is different from the persistent_cache_path in embedder which is used for Skia shader cache icu native lib Path to the library file that exports the ICU data vm service The hostname IP address on which the Dart VM Service should be served If not defaults to or::depending on whether ipv6 is specified vm service A custom Dart VM Service port The default is to pick a randomly available open port disable vm Disable the Dart VM Service The Dart VM Service is never available in release mode disable vm service Disable mDNS Dart VM Service publication Bind to the IPv6 localhost address for the Dart VM Service Ignored if vm service host is set endless trace buffer
Definition: switches.h:126

◆ fl_value_unref()

G_MODULE_EXPORT void fl_value_unref ( FlValue value)

fl_value_unref: @value: an FlValue.

Decreases the reference count of an FlValue. When the reference count hits zero @value is destroyed and no longer valid.

Definition at line 400 of file fl_value.cc.

400 {
401 g_return_if_fail(self != nullptr);
402 g_return_if_fail(self->ref_count > 0);
403 self->ref_count--;
404 if (self->ref_count != 0) {
405 return;
406 }
407
408 switch (self->type) {
410 FlValueString* v = reinterpret_cast<FlValueString*>(self);
411 g_free(v->value);
412 break;
413 }
415 FlValueUint8List* v = reinterpret_cast<FlValueUint8List*>(self);
416 g_free(v->values);
417 break;
418 }
420 FlValueInt32List* v = reinterpret_cast<FlValueInt32List*>(self);
421 g_free(v->values);
422 break;
423 }
425 FlValueInt64List* v = reinterpret_cast<FlValueInt64List*>(self);
426 g_free(v->values);
427 break;
428 }
430 FlValueFloat32List* v = reinterpret_cast<FlValueFloat32List*>(self);
431 g_free(v->values);
432 break;
433 }
435 FlValueFloatList* v = reinterpret_cast<FlValueFloatList*>(self);
436 g_free(v->values);
437 break;
438 }
439 case FL_VALUE_TYPE_LIST: {
440 FlValueList* v = reinterpret_cast<FlValueList*>(self);
441 g_ptr_array_unref(v->values);
442 break;
443 }
444 case FL_VALUE_TYPE_MAP: {
445 FlValueMap* v = reinterpret_cast<FlValueMap*>(self);
446 g_ptr_array_unref(v->keys);
447 g_ptr_array_unref(v->values);
448 break;
449 }
451 FlValueCustom* v = reinterpret_cast<FlValueCustom*>(self);
452 if (v->destroy_notify != nullptr) {
453 v->destroy_notify((gpointer)v->value);
454 }
455 break;
456 }
461 break;
462 }
463 g_free(self);
464}
GDestroyNotify destroy_notify
Definition: fl_value.cc:81

◆ float_to_string()

static void float_to_string ( double  value,
GString *  buffer 
)
static

Definition at line 117 of file fl_value.cc.

117 {
118 g_string_append_printf(buffer, "%.16f", value);
119
120 // Strip trailing zeros.
121 int zero_count = 0;
122 for (int i = buffer->len - 1; i >= 0; i--) {
123 // Leave one zero after a decimal point.
124 if (buffer->str[i] == '.') {
125 zero_count = zero_count == 0 ? 0 : zero_count - 1;
126 break;
127 }
128 if (buffer->str[i] != '0') {
129 break;
130 }
131 zero_count++;
132 }
133 g_string_truncate(buffer, buffer->len - zero_count);
134}

◆ int_to_string()

static void int_to_string ( int64_t  value,
GString *  buffer 
)
static

Definition at line 112 of file fl_value.cc.

112 {
113 g_string_append_printf(buffer, "%" G_GINT64_FORMAT, value);
114}

◆ value_to_string()

static void value_to_string ( FlValue value,
GString *  buffer 
)
static

Definition at line 136 of file fl_value.cc.

136 {
137 switch (value->type) {
139 g_string_append(buffer, "null");
140 return;
143 g_string_append(buffer, "true");
144 } else {
145 g_string_append(buffer, "false");
146 }
147 return;
150 return;
153 return;
155 g_string_append(buffer, fl_value_get_string(value));
156 return;
157 }
159 g_string_append(buffer, "[");
160 const uint8_t* values = fl_value_get_uint8_list(value);
161 for (size_t i = 0; i < fl_value_get_length(value); i++) {
162 if (i != 0) {
163 g_string_append(buffer, ", ");
164 }
166 }
167 g_string_append(buffer, "]");
168 return;
169 }
171 g_string_append(buffer, "[");
172 const int32_t* values = fl_value_get_int32_list(value);
173 for (size_t i = 0; i < fl_value_get_length(value); i++) {
174 if (i != 0) {
175 g_string_append(buffer, ", ");
176 }
178 }
179 g_string_append(buffer, "]");
180 return;
181 }
183 g_string_append(buffer, "[");
184 const int64_t* values = fl_value_get_int64_list(value);
185 for (size_t i = 0; i < fl_value_get_length(value); i++) {
186 if (i != 0) {
187 g_string_append(buffer, ", ");
188 }
190 }
191 g_string_append(buffer, "]");
192 return;
193 }
195 g_string_append(buffer, "[");
196 const float* values = fl_value_get_float32_list(value);
197 for (size_t i = 0; i < fl_value_get_length(value); i++) {
198 if (i != 0) {
199 g_string_append(buffer, ", ");
200 }
202 }
203 g_string_append(buffer, "]");
204 return;
205 }
207 g_string_append(buffer, "[");
208 const double* values = fl_value_get_float_list(value);
209 for (size_t i = 0; i < fl_value_get_length(value); i++) {
210 if (i != 0) {
211 g_string_append(buffer, ", ");
212 }
214 }
215 g_string_append(buffer, "]");
216 return;
217 }
218 case FL_VALUE_TYPE_LIST: {
219 g_string_append(buffer, "[");
220 for (size_t i = 0; i < fl_value_get_length(value); i++) {
221 if (i != 0) {
222 g_string_append(buffer, ", ");
223 }
225 }
226 g_string_append(buffer, "]");
227 return;
228 }
229 case FL_VALUE_TYPE_MAP: {
230 g_string_append(buffer, "{");
231 for (size_t i = 0; i < fl_value_get_length(value); i++) {
232 if (i != 0) {
233 g_string_append(buffer, ", ");
234 }
236 g_string_append(buffer, ": ");
238 }
239 g_string_append(buffer, "}");
240 return;
241 }
243 g_string_append_printf(buffer, "(custom %d)",
245 return;
246 default:
247 g_string_append_printf(buffer, "<unknown type %d>", value->type);
248 }
249}
static void int_to_string(int64_t value, GString *buffer)
Definition: fl_value.cc:112
G_MODULE_EXPORT const gchar * fl_value_get_string(FlValue *self)
Definition: fl_value.cc:682
G_MODULE_EXPORT int fl_value_get_custom_type(FlValue *self)
Definition: fl_value.cc:822
static void float_to_string(double value, GString *buffer)
Definition: fl_value.cc:117