diff options
Diffstat (limited to '')
-rw-r--r-- | libraries/eina/src/include/eina_inline_value.x | 281 |
1 files changed, 183 insertions, 98 deletions
diff --git a/libraries/eina/src/include/eina_inline_value.x b/libraries/eina/src/include/eina_inline_value.x index 59ec315..33c83f5 100644 --- a/libraries/eina/src/include/eina_inline_value.x +++ b/libraries/eina/src/include/eina_inline_value.x | |||
@@ -19,8 +19,8 @@ | |||
19 | #ifndef EINA_INLINE_VALUE_X_ | 19 | #ifndef EINA_INLINE_VALUE_X_ |
20 | #define EINA_INLINE_VALUE_X_ | 20 | #define EINA_INLINE_VALUE_X_ |
21 | 21 | ||
22 | #include <stdlib.h> | ||
22 | #include <string.h> | 23 | #include <string.h> |
23 | #include <alloca.h> | ||
24 | 24 | ||
25 | #include "eina_stringshare.h" | 25 | #include "eina_stringshare.h" |
26 | 26 | ||
@@ -210,7 +210,7 @@ eina_value_compare(const Eina_Value *a, const Eina_Value *b) | |||
210 | return 1; | 210 | return 1; |
211 | return 0; | 211 | return 0; |
212 | } | 212 | } |
213 | else if (type == EINA_VALUE_TYPE_ULONG) | 213 | else if ((type == EINA_VALUE_TYPE_ULONG) || (type == EINA_VALUE_TYPE_TIMESTAMP)) |
214 | { | 214 | { |
215 | unsigned long *ta = (unsigned long *) pa, *tb = (unsigned long *) pb; | 215 | unsigned long *ta = (unsigned long *) pa, *tb = (unsigned long *) pb; |
216 | if (*ta < *tb) | 216 | if (*ta < *tb) |
@@ -362,7 +362,7 @@ eina_value_vset(Eina_Value *value, va_list args) | |||
362 | *tmem = va_arg(args, unsigned int); | 362 | *tmem = va_arg(args, unsigned int); |
363 | return EINA_TRUE; | 363 | return EINA_TRUE; |
364 | } | 364 | } |
365 | else if (type == EINA_VALUE_TYPE_ULONG) | 365 | else if ((type == EINA_VALUE_TYPE_ULONG) || (type == EINA_VALUE_TYPE_TIMESTAMP)) |
366 | { | 366 | { |
367 | unsigned long *tmem = (unsigned long *) mem; | 367 | unsigned long *tmem = (unsigned long *) mem; |
368 | *tmem = va_arg(args, unsigned long); | 368 | *tmem = va_arg(args, unsigned long); |
@@ -424,17 +424,22 @@ eina_value_vset(Eina_Value *value, va_list args) | |||
424 | else if (type == EINA_VALUE_TYPE_STRING) | 424 | else if (type == EINA_VALUE_TYPE_STRING) |
425 | { | 425 | { |
426 | const char *str = (const char *) va_arg(args, const char *); | 426 | const char *str = (const char *) va_arg(args, const char *); |
427 | free(value->value.ptr); | 427 | if (value->value.ptr == str) return EINA_TRUE; |
428 | if (!str) | 428 | if (!str) |
429 | value->value.ptr = NULL; | 429 | { |
430 | free(value->value.ptr); | ||
431 | value->value.ptr = NULL; | ||
432 | } | ||
430 | else | 433 | else |
431 | { | 434 | { |
432 | value->value.ptr = strdup(str); | 435 | char *tmp = strdup(str); |
433 | if (!value->value.ptr) | 436 | if (!tmp) |
434 | { | 437 | { |
435 | eina_error_set(EINA_ERROR_OUT_OF_MEMORY); | 438 | eina_error_set(EINA_ERROR_OUT_OF_MEMORY); |
436 | return EINA_FALSE; | 439 | return EINA_FALSE; |
437 | } | 440 | } |
441 | free(value->value.ptr); | ||
442 | value->value.ptr = tmp; | ||
438 | } | 443 | } |
439 | return EINA_TRUE; | 444 | return EINA_TRUE; |
440 | } | 445 | } |
@@ -494,18 +499,22 @@ eina_value_pset(Eina_Value *value, const void *ptr) | |||
494 | { | 499 | { |
495 | const char * const * pstr = (const char * const *) ptr; | 500 | const char * const * pstr = (const char * const *) ptr; |
496 | const char *str = *pstr; | 501 | const char *str = *pstr; |
497 | 502 | if (value->value.ptr == str) return EINA_TRUE; | |
498 | free(value->value.ptr); | ||
499 | if (!str) | 503 | if (!str) |
500 | value->value.ptr = NULL; | 504 | { |
505 | free(value->value.ptr); | ||
506 | value->value.ptr = NULL; | ||
507 | } | ||
501 | else | 508 | else |
502 | { | 509 | { |
503 | value->value.ptr = strdup(str); | 510 | char *tmp = strdup(str); |
504 | if (!value->value.ptr) | 511 | if (!tmp) |
505 | { | 512 | { |
506 | eina_error_set(EINA_ERROR_OUT_OF_MEMORY); | 513 | eina_error_set(EINA_ERROR_OUT_OF_MEMORY); |
507 | return EINA_FALSE; | 514 | return EINA_FALSE; |
508 | } | 515 | } |
516 | free(value->value.ptr); | ||
517 | value->value.ptr = tmp; | ||
509 | } | 518 | } |
510 | return EINA_TRUE; | 519 | return EINA_TRUE; |
511 | } | 520 | } |
@@ -607,16 +616,7 @@ eina_value_array_vset(Eina_Value *value, unsigned int position, va_list args) | |||
607 | if (!mem) | 616 | if (!mem) |
608 | return EINA_FALSE; | 617 | return EINA_FALSE; |
609 | 618 | ||
610 | eina_value_type_flush(desc.subtype, mem); | 619 | return eina_value_type_vset(desc.subtype, mem, args); |
611 | |||
612 | if (!eina_value_type_setup(desc.subtype, mem)) goto error_setup; | ||
613 | if (!eina_value_type_vset(desc.subtype, mem, args)) goto error_set; | ||
614 | return EINA_TRUE; | ||
615 | |||
616 | error_set: | ||
617 | eina_value_type_flush(desc.subtype, mem); | ||
618 | error_setup: | ||
619 | return EINA_FALSE; | ||
620 | } | 620 | } |
621 | 621 | ||
622 | static inline Eina_Bool | 622 | static inline Eina_Bool |
@@ -749,16 +749,7 @@ eina_value_array_pset(Eina_Value *value, unsigned int position, const void *ptr) | |||
749 | if (!mem) | 749 | if (!mem) |
750 | return EINA_FALSE; | 750 | return EINA_FALSE; |
751 | 751 | ||
752 | eina_value_type_flush(desc.subtype, mem); | 752 | return eina_value_type_pset(desc.subtype, mem, ptr); |
753 | |||
754 | if (!eina_value_type_setup(desc.subtype, mem)) goto error_setup; | ||
755 | if (!eina_value_type_pset(desc.subtype, mem, ptr)) goto error_set; | ||
756 | return EINA_TRUE; | ||
757 | |||
758 | error_set: | ||
759 | eina_value_type_flush(desc.subtype, mem); | ||
760 | error_setup: | ||
761 | return EINA_FALSE; | ||
762 | } | 753 | } |
763 | 754 | ||
764 | static inline Eina_Bool | 755 | static inline Eina_Bool |
@@ -832,6 +823,29 @@ eina_value_array_pappend(Eina_Value *value, const void *ptr) | |||
832 | return EINA_FALSE; | 823 | return EINA_FALSE; |
833 | } | 824 | } |
834 | 825 | ||
826 | static inline Eina_Bool | ||
827 | eina_value_array_value_get(const Eina_Value *src, unsigned int position, Eina_Value *dst) | ||
828 | { | ||
829 | Eina_Value_Array desc; | ||
830 | |||
831 | EINA_VALUE_TYPE_ARRAY_CHECK_RETURN_VAL(src, EINA_FALSE); | ||
832 | EINA_SAFETY_ON_NULL_RETURN_VAL(dst, EINA_FALSE); | ||
833 | |||
834 | if (!eina_value_pget(src, &desc)) | ||
835 | return EINA_FALSE; | ||
836 | if (position >= eina_inarray_count(desc.array)) | ||
837 | return EINA_FALSE; | ||
838 | if (!eina_value_setup(dst, desc.subtype)) | ||
839 | return EINA_FALSE; | ||
840 | if (!eina_value_pset(dst, eina_inarray_nth(desc.array, position))) | ||
841 | { | ||
842 | eina_value_flush(dst); | ||
843 | return EINA_FALSE; | ||
844 | } | ||
845 | |||
846 | return EINA_TRUE; | ||
847 | } | ||
848 | |||
835 | #undef EINA_VALUE_TYPE_ARRAY_CHECK_RETURN_VAL | 849 | #undef EINA_VALUE_TYPE_ARRAY_CHECK_RETURN_VAL |
836 | 850 | ||
837 | #define EINA_VALUE_TYPE_LIST_CHECK_RETURN_VAL(value, retval) \ | 851 | #define EINA_VALUE_TYPE_LIST_CHECK_RETURN_VAL(value, retval) \ |
@@ -929,16 +943,7 @@ eina_value_list_vset(Eina_Value *value, unsigned int position, va_list args) | |||
929 | if (!mem) | 943 | if (!mem) |
930 | return EINA_FALSE; | 944 | return EINA_FALSE; |
931 | 945 | ||
932 | eina_value_type_flush(desc->subtype, mem); | 946 | return eina_value_type_vset(desc->subtype, mem, args); |
933 | |||
934 | if (!eina_value_type_setup(desc->subtype, mem)) goto error_setup; | ||
935 | if (!eina_value_type_vset(desc->subtype, mem, args)) goto error_set; | ||
936 | return EINA_TRUE; | ||
937 | |||
938 | error_set: | ||
939 | eina_value_type_flush(desc->subtype, mem); | ||
940 | error_setup: | ||
941 | return EINA_FALSE; | ||
942 | } | 947 | } |
943 | 948 | ||
944 | static inline Eina_Bool | 949 | static inline Eina_Bool |
@@ -1105,16 +1110,7 @@ eina_value_list_pset(Eina_Value *value, unsigned int position, const void *ptr) | |||
1105 | if (!mem) | 1110 | if (!mem) |
1106 | return EINA_FALSE; | 1111 | return EINA_FALSE; |
1107 | 1112 | ||
1108 | eina_value_type_flush(desc->subtype, mem); | 1113 | return eina_value_type_pset(desc->subtype, mem, ptr); |
1109 | |||
1110 | if (!eina_value_type_setup(desc->subtype, mem)) goto error_setup; | ||
1111 | if (!eina_value_type_pset(desc->subtype, mem, ptr)) goto error_set; | ||
1112 | return EINA_TRUE; | ||
1113 | |||
1114 | error_set: | ||
1115 | eina_value_type_flush(desc->subtype, mem); | ||
1116 | error_setup: | ||
1117 | return EINA_FALSE; | ||
1118 | } | 1114 | } |
1119 | 1115 | ||
1120 | static inline Eina_Bool | 1116 | static inline Eina_Bool |
@@ -1284,9 +1280,7 @@ eina_value_hash_vset(Eina_Value *value, const char *key, va_list args) | |||
1284 | return EINA_FALSE; | 1280 | return EINA_FALSE; |
1285 | 1281 | ||
1286 | mem = eina_hash_find(desc->hash, key); | 1282 | mem = eina_hash_find(desc->hash, key); |
1287 | if (mem) | 1283 | if (!mem) |
1288 | eina_value_type_flush(desc->subtype, mem); | ||
1289 | else | ||
1290 | { | 1284 | { |
1291 | mem = malloc(desc->subtype->value_size); | 1285 | mem = malloc(desc->subtype->value_size); |
1292 | if (!mem) | 1286 | if (!mem) |
@@ -1299,18 +1293,15 @@ eina_value_hash_vset(Eina_Value *value, const char *key, va_list args) | |||
1299 | free(mem); | 1293 | free(mem); |
1300 | return EINA_FALSE; | 1294 | return EINA_FALSE; |
1301 | } | 1295 | } |
1296 | if (!eina_value_type_setup(desc->subtype, mem)) | ||
1297 | { | ||
1298 | eina_value_type_flush(desc->subtype, mem); | ||
1299 | eina_hash_del_by_key(desc->hash, key); | ||
1300 | free(mem); | ||
1301 | } | ||
1302 | } | 1302 | } |
1303 | 1303 | ||
1304 | if (!eina_value_type_setup(desc->subtype, mem)) goto error_setup; | 1304 | return eina_value_type_vset(desc->subtype, mem, args); |
1305 | if (!eina_value_type_vset(desc->subtype, mem, args)) goto error_set; | ||
1306 | return EINA_TRUE; | ||
1307 | |||
1308 | error_set: | ||
1309 | eina_value_type_flush(desc->subtype, mem); | ||
1310 | error_setup: | ||
1311 | eina_hash_del_by_key(desc->hash, key); | ||
1312 | free(mem); | ||
1313 | return EINA_FALSE; | ||
1314 | } | 1305 | } |
1315 | 1306 | ||
1316 | static inline Eina_Bool | 1307 | static inline Eina_Bool |
@@ -1371,9 +1362,7 @@ eina_value_hash_pset(Eina_Value *value, const char *key, const void *ptr) | |||
1371 | return EINA_FALSE; | 1362 | return EINA_FALSE; |
1372 | 1363 | ||
1373 | mem = eina_hash_find(desc->hash, key); | 1364 | mem = eina_hash_find(desc->hash, key); |
1374 | if (mem) | 1365 | if (!mem) |
1375 | eina_value_type_flush(desc->subtype, mem); | ||
1376 | else | ||
1377 | { | 1366 | { |
1378 | mem = malloc(desc->subtype->value_size); | 1367 | mem = malloc(desc->subtype->value_size); |
1379 | if (!mem) | 1368 | if (!mem) |
@@ -1386,18 +1375,15 @@ eina_value_hash_pset(Eina_Value *value, const char *key, const void *ptr) | |||
1386 | free(mem); | 1375 | free(mem); |
1387 | return EINA_FALSE; | 1376 | return EINA_FALSE; |
1388 | } | 1377 | } |
1378 | if (!eina_value_type_setup(desc->subtype, mem)) | ||
1379 | { | ||
1380 | eina_value_type_flush(desc->subtype, mem); | ||
1381 | eina_hash_del_by_key(desc->hash, key); | ||
1382 | free(mem); | ||
1383 | } | ||
1389 | } | 1384 | } |
1390 | 1385 | ||
1391 | if (!eina_value_type_setup(desc->subtype, mem)) goto error_setup; | 1386 | return eina_value_type_pset(desc->subtype, mem, ptr); |
1392 | if (!eina_value_type_pset(desc->subtype, mem, ptr)) goto error_set; | ||
1393 | return EINA_TRUE; | ||
1394 | |||
1395 | error_set: | ||
1396 | eina_value_type_flush(desc->subtype, mem); | ||
1397 | error_setup: | ||
1398 | eina_hash_del_by_key(desc->hash, key); | ||
1399 | free(mem); | ||
1400 | return EINA_FALSE; | ||
1401 | } | 1387 | } |
1402 | 1388 | ||
1403 | static inline Eina_Bool | 1389 | static inline Eina_Bool |
@@ -1474,15 +1460,7 @@ eina_value_struct_vset(Eina_Value *value, const char *name, va_list args) | |||
1474 | if (!mem) | 1460 | if (!mem) |
1475 | return EINA_FALSE; | 1461 | return EINA_FALSE; |
1476 | 1462 | ||
1477 | eina_value_type_flush(member->type, mem); | 1463 | return eina_value_type_vset(member->type, mem, args); |
1478 | if (!eina_value_type_setup(member->type, mem)) goto error_setup; | ||
1479 | if (!eina_value_type_vset(member->type, mem, args)) goto error_set; | ||
1480 | return EINA_TRUE; | ||
1481 | |||
1482 | error_set: | ||
1483 | eina_value_type_flush(member->type, mem); | ||
1484 | error_setup: | ||
1485 | return EINA_FALSE; | ||
1486 | } | 1464 | } |
1487 | 1465 | ||
1488 | static inline Eina_Bool | 1466 | static inline Eina_Bool |
@@ -1540,8 +1518,9 @@ eina_value_struct_pset(Eina_Value *value, const char *name, const void *ptr) | |||
1540 | Eina_Value_Struct *st; | 1518 | Eina_Value_Struct *st; |
1541 | void *mem; | 1519 | void *mem; |
1542 | 1520 | ||
1543 | EINA_VALUE_TYPE_STRUCT_CHECK_RETURN_VAL(value, 0); | 1521 | EINA_VALUE_TYPE_STRUCT_CHECK_RETURN_VAL(value, EINA_FALSE); |
1544 | EINA_SAFETY_ON_NULL_RETURN_VAL(name, EINA_FALSE); | 1522 | EINA_SAFETY_ON_NULL_RETURN_VAL(name, EINA_FALSE); |
1523 | EINA_SAFETY_ON_NULL_RETURN_VAL(ptr, EINA_FALSE); | ||
1545 | st = (Eina_Value_Struct *)eina_value_memory_get(value); | 1524 | st = (Eina_Value_Struct *)eina_value_memory_get(value); |
1546 | if (!st) | 1525 | if (!st) |
1547 | return EINA_FALSE; | 1526 | return EINA_FALSE; |
@@ -1552,15 +1531,7 @@ eina_value_struct_pset(Eina_Value *value, const char *name, const void *ptr) | |||
1552 | if (!mem) | 1531 | if (!mem) |
1553 | return EINA_FALSE; | 1532 | return EINA_FALSE; |
1554 | 1533 | ||
1555 | eina_value_type_flush(member->type, mem); | 1534 | return eina_value_type_pset(member->type, mem, ptr); |
1556 | if (!eina_value_type_setup(member->type, mem)) goto error_setup; | ||
1557 | if (!eina_value_type_pset(member->type, mem, ptr)) goto error_set; | ||
1558 | return EINA_TRUE; | ||
1559 | |||
1560 | error_set: | ||
1561 | eina_value_type_flush(member->type, mem); | ||
1562 | error_setup: | ||
1563 | return EINA_FALSE; | ||
1564 | } | 1535 | } |
1565 | 1536 | ||
1566 | static inline Eina_Bool | 1537 | static inline Eina_Bool |
@@ -1571,8 +1542,9 @@ eina_value_struct_pget(const Eina_Value *value, const char *name, void *ptr) | |||
1571 | const void *mem; | 1542 | const void *mem; |
1572 | Eina_Bool ret; | 1543 | Eina_Bool ret; |
1573 | 1544 | ||
1574 | EINA_VALUE_TYPE_STRUCT_CHECK_RETURN_VAL(value, 0); | 1545 | EINA_VALUE_TYPE_STRUCT_CHECK_RETURN_VAL(value, EINA_FALSE); |
1575 | EINA_SAFETY_ON_NULL_RETURN_VAL(name, EINA_FALSE); | 1546 | EINA_SAFETY_ON_NULL_RETURN_VAL(name, EINA_FALSE); |
1547 | EINA_SAFETY_ON_NULL_RETURN_VAL(ptr, EINA_FALSE); | ||
1576 | st = (const Eina_Value_Struct *)eina_value_memory_get(value); | 1548 | st = (const Eina_Value_Struct *)eina_value_memory_get(value); |
1577 | if (!st) | 1549 | if (!st) |
1578 | return EINA_FALSE; | 1550 | return EINA_FALSE; |
@@ -1586,6 +1558,119 @@ eina_value_struct_pget(const Eina_Value *value, const char *name, void *ptr) | |||
1586 | ret = eina_value_type_pget(member->type, mem, ptr); | 1558 | ret = eina_value_type_pget(member->type, mem, ptr); |
1587 | return ret; | 1559 | return ret; |
1588 | } | 1560 | } |
1561 | |||
1562 | static inline Eina_Bool | ||
1563 | eina_value_struct_value_get(const Eina_Value *src, const char *name, Eina_Value *dst) | ||
1564 | { | ||
1565 | const Eina_Value_Struct_Member *member; | ||
1566 | const Eina_Value_Struct *st; | ||
1567 | const void *mem; | ||
1568 | |||
1569 | EINA_VALUE_TYPE_STRUCT_CHECK_RETURN_VAL(src, EINA_FALSE); | ||
1570 | EINA_SAFETY_ON_NULL_RETURN_VAL(name, EINA_FALSE); | ||
1571 | EINA_SAFETY_ON_NULL_RETURN_VAL(dst, EINA_FALSE); | ||
1572 | st = (const Eina_Value_Struct *)eina_value_memory_get(src); | ||
1573 | if (!st) | ||
1574 | return EINA_FALSE; | ||
1575 | member = eina_value_struct_member_find(st, name); | ||
1576 | if (!member) | ||
1577 | return EINA_FALSE; | ||
1578 | mem = eina_value_struct_member_memory_get(st, member); | ||
1579 | if (!mem) | ||
1580 | return EINA_FALSE; | ||
1581 | if (!eina_value_setup(dst, member->type)) | ||
1582 | return EINA_FALSE; | ||
1583 | if (!eina_value_pset(dst, mem)) | ||
1584 | { | ||
1585 | eina_value_flush(dst); | ||
1586 | return EINA_FALSE; | ||
1587 | } | ||
1588 | return EINA_TRUE; | ||
1589 | } | ||
1590 | |||
1591 | static inline Eina_Bool | ||
1592 | eina_value_struct_value_set(Eina_Value *dst, const char *name, const Eina_Value *src) | ||
1593 | { | ||
1594 | const Eina_Value_Struct_Member *member; | ||
1595 | Eina_Value_Struct *st; | ||
1596 | void *mem; | ||
1597 | const void *ptr; | ||
1598 | |||
1599 | EINA_VALUE_TYPE_STRUCT_CHECK_RETURN_VAL(dst, EINA_FALSE); | ||
1600 | EINA_SAFETY_ON_NULL_RETURN_VAL(name, EINA_FALSE); | ||
1601 | EINA_SAFETY_ON_NULL_RETURN_VAL(src, EINA_FALSE); | ||
1602 | |||
1603 | st = (Eina_Value_Struct *)eina_value_memory_get(dst); | ||
1604 | if (!st) | ||
1605 | return EINA_FALSE; | ||
1606 | member = eina_value_struct_member_find(st, name); | ||
1607 | if (!member) | ||
1608 | return EINA_FALSE; | ||
1609 | EINA_SAFETY_ON_FALSE_RETURN_VAL(src->type == member->type, EINA_FALSE); | ||
1610 | |||
1611 | mem = eina_value_struct_member_memory_get(st, member); | ||
1612 | if (!mem) | ||
1613 | return EINA_FALSE; | ||
1614 | |||
1615 | ptr = eina_value_memory_get(src); | ||
1616 | if (!ptr) | ||
1617 | return EINA_FALSE; | ||
1618 | |||
1619 | return eina_value_type_pset(member->type, mem, ptr); | ||
1620 | } | ||
1621 | |||
1622 | static inline Eina_Bool | ||
1623 | eina_value_struct_member_value_get(const Eina_Value *src, const Eina_Value_Struct_Member *member, Eina_Value *dst) | ||
1624 | { | ||
1625 | const Eina_Value_Struct *st; | ||
1626 | const void *mem; | ||
1627 | |||
1628 | EINA_VALUE_TYPE_STRUCT_CHECK_RETURN_VAL(src, EINA_FALSE); | ||
1629 | EINA_SAFETY_ON_NULL_RETURN_VAL(member, EINA_FALSE); | ||
1630 | EINA_SAFETY_ON_NULL_RETURN_VAL(dst, EINA_FALSE); | ||
1631 | st = (const Eina_Value_Struct *)eina_value_memory_get(src); | ||
1632 | if (!st) | ||
1633 | return EINA_FALSE; | ||
1634 | mem = eina_value_struct_member_memory_get(st, member); | ||
1635 | if (!mem) | ||
1636 | return EINA_FALSE; | ||
1637 | if (!eina_value_setup(dst, member->type)) | ||
1638 | return EINA_FALSE; | ||
1639 | if (!eina_value_pset(dst, mem)) | ||
1640 | { | ||
1641 | eina_value_flush(dst); | ||
1642 | return EINA_FALSE; | ||
1643 | } | ||
1644 | return EINA_TRUE; | ||
1645 | } | ||
1646 | |||
1647 | static inline Eina_Bool | ||
1648 | eina_value_struct_member_value_set(Eina_Value *dst, const Eina_Value_Struct_Member *member, const Eina_Value *src) | ||
1649 | { | ||
1650 | Eina_Value_Struct *st; | ||
1651 | void *mem; | ||
1652 | const void *ptr; | ||
1653 | |||
1654 | EINA_VALUE_TYPE_STRUCT_CHECK_RETURN_VAL(dst, EINA_FALSE); | ||
1655 | EINA_SAFETY_ON_NULL_RETURN_VAL(member, EINA_FALSE); | ||
1656 | EINA_SAFETY_ON_NULL_RETURN_VAL(src, EINA_FALSE); | ||
1657 | |||
1658 | st = (Eina_Value_Struct *)eina_value_memory_get(dst); | ||
1659 | if (!st) | ||
1660 | return EINA_FALSE; | ||
1661 | EINA_SAFETY_ON_FALSE_RETURN_VAL(src->type == member->type, EINA_FALSE); | ||
1662 | |||
1663 | mem = eina_value_struct_member_memory_get(st, member); | ||
1664 | if (!mem) | ||
1665 | return EINA_FALSE; | ||
1666 | |||
1667 | ptr = eina_value_memory_get(src); | ||
1668 | if (!ptr) | ||
1669 | return EINA_FALSE; | ||
1670 | |||
1671 | return eina_value_type_pset(member->type, mem, ptr); | ||
1672 | } | ||
1673 | |||
1589 | #undef EINA_VALUE_TYPE_STRUCT_CHECK_RETURN_VAL | 1674 | #undef EINA_VALUE_TYPE_STRUCT_CHECK_RETURN_VAL |
1590 | 1675 | ||
1591 | 1676 | ||