diff options
author | David Walter Seikel | 2012-04-22 09:19:23 +1000 |
---|---|---|
committer | David Walter Seikel | 2012-04-22 09:19:23 +1000 |
commit | c963d75dfdeec11f82e79e727062fbf89afa2c04 (patch) | |
tree | 895633dbf641110be46f117c29890c49b3ffc0bd /libraries/eina/src/lib/eina_stringshare.c | |
parent | Adding the new extantz viewer and grid manager. (diff) | |
download | SledjHamr-c963d75dfdeec11f82e79e727062fbf89afa2c04.zip SledjHamr-c963d75dfdeec11f82e79e727062fbf89afa2c04.tar.gz SledjHamr-c963d75dfdeec11f82e79e727062fbf89afa2c04.tar.bz2 SledjHamr-c963d75dfdeec11f82e79e727062fbf89afa2c04.tar.xz |
Update EFL to latest beta.
Diffstat (limited to '')
-rw-r--r-- | libraries/eina/src/lib/eina_stringshare.c | 77 |
1 files changed, 59 insertions, 18 deletions
diff --git a/libraries/eina/src/lib/eina_stringshare.c b/libraries/eina/src/lib/eina_stringshare.c index 478b300..f371fcd 100644 --- a/libraries/eina/src/lib/eina_stringshare.c +++ b/libraries/eina/src/lib/eina_stringshare.c | |||
@@ -55,12 +55,30 @@ void *alloca (size_t); | |||
55 | #include "eina_private.h" | 55 | #include "eina_private.h" |
56 | #include "eina_error.h" | 56 | #include "eina_error.h" |
57 | #include "eina_log.h" | 57 | #include "eina_log.h" |
58 | #include "eina_stringshare.h" | ||
59 | #include "eina_lock.h" | 58 | #include "eina_lock.h" |
59 | #include "eina_share_common.h" | ||
60 | 60 | ||
61 | /* undefs EINA_ARG_NONULL() so NULL checks are not compiled out! */ | 61 | /* undefs EINA_ARG_NONULL() so NULL checks are not compiled out! */ |
62 | #include "eina_safety_checks.h" | 62 | #include "eina_safety_checks.h" |
63 | #include "eina_share_common.h" | 63 | #include "eina_stringshare.h" |
64 | |||
65 | |||
66 | #ifdef CRITICAL | ||
67 | #undef CRITICAL | ||
68 | #endif | ||
69 | #define CRITICAL(...) EINA_LOG_DOM_CRIT(_eina_share_stringshare_log_dom, __VA_ARGS__) | ||
70 | |||
71 | #ifdef ERR | ||
72 | #undef ERR | ||
73 | #endif | ||
74 | #define ERR(...) EINA_LOG_DOM_ERR(_eina_share_stringshare_log_dom, __VA_ARGS__) | ||
75 | |||
76 | #ifdef DBG | ||
77 | #undef DBG | ||
78 | #endif | ||
79 | #define DBG(...) EINA_LOG_DOM_DBG(_eina_share_stringshare_log_dom, __VA_ARGS__) | ||
80 | |||
81 | static int _eina_share_stringshare_log_dom = -1; | ||
64 | 82 | ||
65 | /* The actual share */ | 83 | /* The actual share */ |
66 | static Eina_Share *stringshare_share; | 84 | static Eina_Share *stringshare_share; |
@@ -447,11 +465,8 @@ _eina_stringshare_small_bucket_dump(Eina_Stringshare_Small_Bucket *bucket, | |||
447 | for (i = 0; i < bucket->count; i++, s++, l++, r++) | 465 | for (i = 0; i < bucket->count; i++, s++, l++, r++) |
448 | { | 466 | { |
449 | int dups; | 467 | int dups; |
450 | #ifdef _WIN32 | 468 | |
451 | printf("DDD: %5hu %5hu '%s'\n", *l, *r, *s); | ||
452 | #else | ||
453 | printf("DDD: %5hhu %5hu '%s'\n", *l, *r, *s); | 469 | printf("DDD: %5hhu %5hu '%s'\n", *l, *r, *s); |
454 | #endif | ||
455 | 470 | ||
456 | dups = (*r - 1); | 471 | dups = (*r - 1); |
457 | 472 | ||
@@ -500,11 +515,29 @@ Eina_Bool | |||
500 | eina_stringshare_init(void) | 515 | eina_stringshare_init(void) |
501 | { | 516 | { |
502 | Eina_Bool ret; | 517 | Eina_Bool ret; |
518 | |||
519 | if (_eina_share_stringshare_log_dom < 0) | ||
520 | { | ||
521 | _eina_share_stringshare_log_dom = eina_log_domain_register | ||
522 | ("eina_stringshare", EINA_LOG_COLOR_DEFAULT); | ||
523 | |||
524 | if (_eina_share_stringshare_log_dom < 0) | ||
525 | { | ||
526 | EINA_LOG_ERR("Could not register log domain: eina_stringshare"); | ||
527 | return EINA_FALSE; | ||
528 | } | ||
529 | } | ||
530 | |||
503 | ret = eina_share_common_init(&stringshare_share, | 531 | ret = eina_share_common_init(&stringshare_share, |
504 | EINA_MAGIC_STRINGSHARE_NODE, | 532 | EINA_MAGIC_STRINGSHARE_NODE, |
505 | EINA_MAGIC_STRINGSHARE_NODE_STR); | 533 | EINA_MAGIC_STRINGSHARE_NODE_STR); |
506 | if (ret) | 534 | if (ret) |
507 | _eina_stringshare_small_init(); | 535 | _eina_stringshare_small_init(); |
536 | else | ||
537 | { | ||
538 | eina_log_domain_unregister(_eina_share_stringshare_log_dom); | ||
539 | _eina_share_stringshare_log_dom = -1; | ||
540 | } | ||
508 | 541 | ||
509 | return ret; | 542 | return ret; |
510 | } | 543 | } |
@@ -526,6 +559,13 @@ eina_stringshare_shutdown(void) | |||
526 | Eina_Bool ret; | 559 | Eina_Bool ret; |
527 | _eina_stringshare_small_shutdown(); | 560 | _eina_stringshare_small_shutdown(); |
528 | ret = eina_share_common_shutdown(&stringshare_share); | 561 | ret = eina_share_common_shutdown(&stringshare_share); |
562 | |||
563 | if (_eina_share_stringshare_log_dom >= 0) | ||
564 | { | ||
565 | eina_log_domain_unregister(_eina_share_stringshare_log_dom); | ||
566 | _eina_share_stringshare_log_dom = -1; | ||
567 | } | ||
568 | |||
529 | return ret; | 569 | return ret; |
530 | } | 570 | } |
531 | 571 | ||
@@ -534,7 +574,7 @@ eina_stringshare_shutdown(void) | |||
534 | *============================================================================*/ | 574 | *============================================================================*/ |
535 | 575 | ||
536 | EAPI void | 576 | EAPI void |
537 | eina_stringshare_del(const char *str) | 577 | eina_stringshare_del(Eina_Stringshare *str) |
538 | { | 578 | { |
539 | int slen; | 579 | int slen; |
540 | 580 | ||
@@ -564,16 +604,17 @@ eina_stringshare_del(const char *str) | |||
564 | return; | 604 | return; |
565 | } | 605 | } |
566 | 606 | ||
567 | eina_share_common_del(stringshare_share, str); | 607 | if (!eina_share_common_del(stringshare_share, str)) |
608 | CRITICAL("EEEK trying to del non-shared stringshare \"%s\"", str); | ||
568 | } | 609 | } |
569 | 610 | ||
570 | EAPI const char * | 611 | EAPI Eina_Stringshare * |
571 | eina_stringshare_add_length(const char *str, unsigned int slen) | 612 | eina_stringshare_add_length(const char *str, unsigned int slen) |
572 | { | 613 | { |
573 | if ((!str) || (slen <= 0)) | 614 | if ((!str) || (slen <= 0)) |
574 | return ""; | 615 | return ""; |
575 | else if (slen == 1) | 616 | else if (slen == 1) |
576 | return (const char *)_eina_stringshare_single + ((*str) << 1); | 617 | return (Eina_Stringshare *) _eina_stringshare_single + ((*str) << 1); |
577 | else if (slen < 4) | 618 | else if (slen < 4) |
578 | { | 619 | { |
579 | const char *s; | 620 | const char *s; |
@@ -588,7 +629,7 @@ eina_stringshare_add_length(const char *str, unsigned int slen) | |||
588 | sizeof(char), sizeof(char)); | 629 | sizeof(char), sizeof(char)); |
589 | } | 630 | } |
590 | 631 | ||
591 | EAPI const char * | 632 | EAPI Eina_Stringshare * |
592 | eina_stringshare_add(const char *str) | 633 | eina_stringshare_add(const char *str) |
593 | { | 634 | { |
594 | int slen; | 635 | int slen; |
@@ -609,7 +650,7 @@ eina_stringshare_add(const char *str) | |||
609 | return eina_stringshare_add_length(str, slen); | 650 | return eina_stringshare_add_length(str, slen); |
610 | } | 651 | } |
611 | 652 | ||
612 | EAPI const char * | 653 | EAPI Eina_Stringshare * |
613 | eina_stringshare_printf(const char *fmt, ...) | 654 | eina_stringshare_printf(const char *fmt, ...) |
614 | { | 655 | { |
615 | va_list args; | 656 | va_list args; |
@@ -633,7 +674,7 @@ eina_stringshare_printf(const char *fmt, ...) | |||
633 | return ret; | 674 | return ret; |
634 | } | 675 | } |
635 | 676 | ||
636 | EAPI const char * | 677 | EAPI Eina_Stringshare * |
637 | eina_stringshare_vprintf(const char *fmt, va_list args) | 678 | eina_stringshare_vprintf(const char *fmt, va_list args) |
638 | { | 679 | { |
639 | char *tmp; | 680 | char *tmp; |
@@ -654,7 +695,7 @@ eina_stringshare_vprintf(const char *fmt, va_list args) | |||
654 | return ret; | 695 | return ret; |
655 | } | 696 | } |
656 | 697 | ||
657 | EAPI const char * | 698 | EAPI Eina_Stringshare * |
658 | eina_stringshare_nprintf(unsigned int len, const char *fmt, ...) | 699 | eina_stringshare_nprintf(unsigned int len, const char *fmt, ...) |
659 | { | 700 | { |
660 | va_list args; | 701 | va_list args; |
@@ -679,8 +720,8 @@ eina_stringshare_nprintf(unsigned int len, const char *fmt, ...) | |||
679 | return eina_stringshare_add_length(tmp, len); | 720 | return eina_stringshare_add_length(tmp, len); |
680 | } | 721 | } |
681 | 722 | ||
682 | EAPI const char * | 723 | EAPI Eina_Stringshare * |
683 | eina_stringshare_ref(const char *str) | 724 | eina_stringshare_ref(Eina_Stringshare *str) |
684 | { | 725 | { |
685 | int slen; | 726 | int slen; |
686 | 727 | ||
@@ -721,7 +762,7 @@ eina_stringshare_ref(const char *str) | |||
721 | } | 762 | } |
722 | 763 | ||
723 | EAPI int | 764 | EAPI int |
724 | eina_stringshare_strlen(const char *str) | 765 | eina_stringshare_strlen(Eina_Stringshare *str) |
725 | { | 766 | { |
726 | int len; | 767 | int len; |
727 | /* special cases */ | 768 | /* special cases */ |
@@ -737,7 +778,7 @@ eina_stringshare_strlen(const char *str) | |||
737 | if (str[3] == '\0') | 778 | if (str[3] == '\0') |
738 | return 3; | 779 | return 3; |
739 | 780 | ||
740 | len = eina_share_common_length(stringshare_share, (const char *)str); | 781 | len = eina_share_common_length(stringshare_share, (Eina_Stringshare *) str); |
741 | len = (len > 0) ? len / (int)sizeof(char) : -1; | 782 | len = (len > 0) ? len / (int)sizeof(char) : -1; |
742 | return len; | 783 | return len; |
743 | } | 784 | } |