summaryrefslogtreecommitdiff
path: root/src/bin
diff options
context:
space:
mode:
authorGustavo Sverzut Barbieri <barbieri@gmail.com>2010-11-18 08:13:05 +0000
committerGustavo Sverzut Barbieri <barbieri@gmail.com>2010-11-18 08:13:05 +0000
commit9f0685548520103f89f03291f7ac1a3c07e94064 (patch)
tree15e67b4189b826ed46e9725ce3e99b6d74453565 /src/bin
parentc57fd23fcd01c55c343b8d10509b9ee09ac6b3af (diff)
who else agrees that raster should use more eina utilities? :-)
SVN revision: 54670
Diffstat (limited to 'src/bin')
-rw-r--r--src/bin/test_store.c53
1 files changed, 31 insertions, 22 deletions
diff --git a/src/bin/test_store.c b/src/bin/test_store.c
index cff671f7e..facc399ca 100644
--- a/src/bin/test_store.c
+++ b/src/bin/test_store.c
@@ -60,10 +60,10 @@ EAPI const char *elm_store_item_filesystem_path_get(const Elm_Store_
60 60
61#define ELM_STORE_MAGIC 0x3f89ea56 61#define ELM_STORE_MAGIC 0x3f89ea56
62#define ELM_STORE_ITEM_MAGIC 0x5afe8c1d 62#define ELM_STORE_ITEM_MAGIC 0x5afe8c1d
63#define ELM_STORE_CHECK(st) if ((!st) || (st->magic != ELM_STORE_MAGIC)) 63
64struct _Elm_Store 64struct _Elm_Store
65{ 65{
66 int magic; 66 EINA_MAGIC;
67 Evas_Object *genlist; 67 Evas_Object *genlist;
68 Ecore_Thread *list_th; 68 Ecore_Thread *list_th;
69 struct { 69 struct {
@@ -98,7 +98,7 @@ struct _Elm_Store_Item_Filesystem
98struct _Elm_Store_Item 98struct _Elm_Store_Item
99{ 99{
100 EINA_INLIST; 100 EINA_INLIST;
101 int magic; 101 EINA_MAGIC;
102 Elm_Store *store; 102 Elm_Store *store;
103 Elm_Genlist_Item *item; 103 Elm_Genlist_Item *item;
104 Ecore_Thread *fetch_th; 104 Ecore_Thread *fetch_th;
@@ -391,7 +391,7 @@ _store_filesystem_list_do(void *data, Ecore_Thread *th __UNUSED__)
391 const Eina_File_Direct_Info *finf; 391 const Eina_File_Direct_Info *finf;
392 Eina_List *sorted = NULL; 392 Eina_List *sorted = NULL;
393 Elm_Store_Item_Info *info; 393 Elm_Store_Item_Info *info;
394 394
395 // FIXME: need a way to abstract the open, list, feed items from list 395 // FIXME: need a way to abstract the open, list, feed items from list
396 // and maybe get initial sortable key vals etc. 396 // and maybe get initial sortable key vals etc.
397 it = eina_file_stat_ls(st->filesystem.dir); 397 it = eina_file_stat_ls(st->filesystem.dir);
@@ -399,11 +399,11 @@ _store_filesystem_list_do(void *data, Ecore_Thread *th __UNUSED__)
399 EINA_ITERATOR_FOREACH(it, finf) 399 EINA_ITERATOR_FOREACH(it, finf)
400 { 400 {
401 Eina_Bool ok; 401 Eina_Bool ok;
402 402
403 info = calloc(1, sizeof(Elm_Store_Item_Info) + strlen(finf->path) + 1); 403 info = calloc(1, sizeof(Elm_Store_Item_Info) + finf->path_length + 1);
404 if (!info) continue; 404 if (!info) continue;
405 info->type.filesystem.path = ((char *)info) + sizeof(Elm_Store_Item_Info); 405 info->type.filesystem.path = ((char *)info) + sizeof(Elm_Store_Item_Info);
406 strcpy(info->type.filesystem.path, finf->path); 406 memcpy(info->type.filesystem.path, finf->path, finf->path_length + 1);
407 ok = EINA_TRUE; 407 ok = EINA_TRUE;
408 if (st->cb.list.func) 408 if (st->cb.list.func)
409 ok = st->cb.list.func(st->cb.list.data, info); 409 ok = st->cb.list.func(st->cb.list.data, info);
@@ -422,7 +422,7 @@ _store_filesystem_list_do(void *data, Ecore_Thread *th __UNUSED__)
422 eina_iterator_free(it); 422 eina_iterator_free(it);
423 if (sorted) 423 if (sorted)
424 { 424 {
425 sorted = eina_list_sort(sorted, eina_list_count(sorted), 425 sorted = eina_list_sort(sorted, 0,
426 EINA_COMPARE_CB(_store_filesystem_sort_cb)); 426 EINA_COMPARE_CB(_store_filesystem_sort_cb));
427 EINA_LIST_FREE(sorted, info) 427 EINA_LIST_FREE(sorted, info)
428 { 428 {
@@ -459,7 +459,7 @@ _store_filesystem_list_update(void *data, Ecore_Thread *th __UNUSED__, void *msg
459 sti = calloc(1, sizeof(Elm_Store_Item)); 459 sti = calloc(1, sizeof(Elm_Store_Item));
460 if (!sti) goto done; 460 if (!sti) goto done;
461 LKI(sti->lock); 461 LKI(sti->lock);
462 sti->magic = ELM_STORE_ITEM_MAGIC; 462 EINA_MAGIC_SET(sti, ELM_STORE_ITEM_MAGIC);
463 sti->store = st; 463 sti->store = st;
464 sti->type.filesystem.path = eina_stringshare_add(info->type.filesystem.path); 464 sti->type.filesystem.path = eina_stringshare_add(info->type.filesystem.path);
465 sti->data = info->data; 465 sti->data = info->data;
@@ -495,14 +495,18 @@ elm_store_new(void)
495 495
496 st = calloc(1, sizeof(Elm_Store)); 496 st = calloc(1, sizeof(Elm_Store));
497 497
498 // TODO: BEGIN - move to elm_store_init()
499 eina_magic_string_set(ELM_STORE_MAGIC, "Elm_Store");
500 eina_magic_string_set(ELM_STORE_ITEM_MAGIC, "Elm_Store_Item");
498 // setup default item class (always the same) if list cb doesnt provide one 501 // setup default item class (always the same) if list cb doesnt provide one
499 _store_item_class.item_style = "default"; 502 _store_item_class.item_style = "default";
500 _store_item_class.func.label_get = _store_item_label_get; 503 _store_item_class.func.label_get = _store_item_label_get;
501 _store_item_class.func.icon_get = _store_item_icon_get; 504 _store_item_class.func.icon_get = _store_item_icon_get;
502 _store_item_class.func.state_get = NULL; // FIXME: support state gets later 505 _store_item_class.func.state_get = NULL; // FIXME: support state gets later
503 _store_item_class.func.del = _store_item_del; 506 _store_item_class.func.del = _store_item_del;
504 507 // TODO: END - move to elm_store_init()
505 st->magic = ELM_STORE_MAGIC; 508
509 EINA_MAGIC_SET(st, ELM_STORE_MAGIC);
506 st->cache_max = 128; 510 st->cache_max = 128;
507 return st; 511 return st;
508} 512}
@@ -510,7 +514,7 @@ elm_store_new(void)
510EAPI void 514EAPI void
511elm_store_free(Elm_Store *st) 515elm_store_free(Elm_Store *st)
512{ 516{
513 ELM_STORE_CHECK(st) return; 517 if (!EINA_MAGIC_CHECK(st, ELM_STORE_MAGIC)) return;
514 if (st->filesystem.dir) 518 if (st->filesystem.dir)
515 { 519 {
516 eina_stringshare_del(st->filesystem.dir); 520 eina_stringshare_del(st->filesystem.dir);
@@ -564,7 +568,7 @@ elm_store_free(Elm_Store *st)
564EAPI void 568EAPI void
565elm_store_target_genlist_set(Elm_Store *st, Evas_Object *obj) 569elm_store_target_genlist_set(Elm_Store *st, Evas_Object *obj)
566{ 570{
567 ELM_STORE_CHECK(st) return; 571 if (!EINA_MAGIC_CHECK(st, ELM_STORE_MAGIC)) return;
568 if (st->genlist == obj) return; 572 if (st->genlist == obj) return;
569 if (st->genlist) 573 if (st->genlist)
570 { 574 {
@@ -584,7 +588,7 @@ elm_store_target_genlist_set(Elm_Store *st, Evas_Object *obj)
584EAPI void 588EAPI void
585elm_store_source_filesystem_set(Elm_Store *st, const char *dir) 589elm_store_source_filesystem_set(Elm_Store *st, const char *dir)
586{ 590{
587 ELM_STORE_CHECK(st) return; 591 if (!EINA_MAGIC_CHECK(st, ELM_STORE_MAGIC)) return;
588 if (st->list_th) 592 if (st->list_th)
589 { 593 {
590 ecore_thread_cancel(st->list_th); 594 ecore_thread_cancel(st->list_th);
@@ -601,14 +605,14 @@ elm_store_source_filesystem_set(Elm_Store *st, const char *dir)
601EAPI const char * 605EAPI const char *
602elm_store_source_filesystem_get(const Elm_Store *st) 606elm_store_source_filesystem_get(const Elm_Store *st)
603{ 607{
604 ELM_STORE_CHECK(st) return NULL; 608 if (!EINA_MAGIC_CHECK(st, ELM_STORE_MAGIC)) return NULL;
605 return st->filesystem.dir; 609 return st->filesystem.dir;
606} 610}
607 611
608EAPI void 612EAPI void
609elm_store_cache_set(Elm_Store *st, int max) 613elm_store_cache_set(Elm_Store *st, int max)
610{ 614{
611 ELM_STORE_CHECK(st) return; 615 if (!EINA_MAGIC_CHECK(st, ELM_STORE_MAGIC)) return;
612 if (max < 0) max = 0; 616 if (max < 0) max = 0;
613 st->cache_max = max; 617 st->cache_max = max;
614 _store_cache_trim(st); 618 _store_cache_trim(st);
@@ -617,14 +621,14 @@ elm_store_cache_set(Elm_Store *st, int max)
617EAPI int 621EAPI int
618elm_store_cache_get(const Elm_Store *st) 622elm_store_cache_get(const Elm_Store *st)
619{ 623{
620 ELM_STORE_CHECK(st) return 0; 624 if (!EINA_MAGIC_CHECK(st, ELM_STORE_MAGIC)) return 0;
621 return st->cache_max; 625 return st->cache_max;
622} 626}
623 627
624EAPI void 628EAPI void
625elm_store_list_func_set(Elm_Store *st, Elm_Store_Item_List_Cb func, const void *data) 629elm_store_list_func_set(Elm_Store *st, Elm_Store_Item_List_Cb func, const void *data)
626{ 630{
627 ELM_STORE_CHECK(st) return; 631 if (!EINA_MAGIC_CHECK(st, ELM_STORE_MAGIC)) return;
628 st->cb.list.func = func; 632 st->cb.list.func = func;
629 st->cb.list.data = (void *)data; 633 st->cb.list.data = (void *)data;
630} 634}
@@ -632,7 +636,7 @@ elm_store_list_func_set(Elm_Store *st, Elm_Store_Item_List_Cb func, const void *
632EAPI void 636EAPI void
633elm_store_fetch_func_set(Elm_Store *st, Elm_Store_Item_Fetch_Cb func, const void *data) 637elm_store_fetch_func_set(Elm_Store *st, Elm_Store_Item_Fetch_Cb func, const void *data)
634{ 638{
635 ELM_STORE_CHECK(st) return; 639 if (!EINA_MAGIC_CHECK(st, ELM_STORE_MAGIC)) return;
636 st->cb.fetch.func = func; 640 st->cb.fetch.func = func;
637 st->cb.fetch.data = (void *)data; 641 st->cb.fetch.data = (void *)data;
638} 642}
@@ -640,7 +644,7 @@ elm_store_fetch_func_set(Elm_Store *st, Elm_Store_Item_Fetch_Cb func, const void
640EAPI void 644EAPI void
641elm_store_unfetch_func_set(Elm_Store *st, Elm_Store_Item_Unfetch_Cb func, const void *data) 645elm_store_unfetch_func_set(Elm_Store *st, Elm_Store_Item_Unfetch_Cb func, const void *data)
642{ 646{
643 ELM_STORE_CHECK(st) return; 647 if (!EINA_MAGIC_CHECK(st, ELM_STORE_MAGIC)) return;
644 st->cb.unfetch.func = func; 648 st->cb.unfetch.func = func;
645 st->cb.unfetch.data = (void *)data; 649 st->cb.unfetch.data = (void *)data;
646} 650}
@@ -648,20 +652,21 @@ elm_store_unfetch_func_set(Elm_Store *st, Elm_Store_Item_Unfetch_Cb func, const
648EAPI void 652EAPI void
649elm_store_sorted_set(Elm_Store *st, Eina_Bool sorted) 653elm_store_sorted_set(Elm_Store *st, Eina_Bool sorted)
650{ 654{
651 ELM_STORE_CHECK(st) return; 655 if (!EINA_MAGIC_CHECK(st, ELM_STORE_MAGIC)) return;
652 st->sorted = sorted; 656 st->sorted = sorted;
653} 657}
654 658
655EAPI Eina_Bool 659EAPI Eina_Bool
656elm_store_sorted_get(const Elm_Store *st) 660elm_store_sorted_get(const Elm_Store *st)
657{ 661{
658 ELM_STORE_CHECK(st) return EINA_FALSE; 662 if (!EINA_MAGIC_CHECK(st, ELM_STORE_MAGIC)) return EINA_FALSE;
659 return st->sorted; 663 return st->sorted;
660} 664}
661 665
662EAPI void 666EAPI void
663elm_store_item_data_set(Elm_Store_Item *sti, void *data) 667elm_store_item_data_set(Elm_Store_Item *sti, void *data)
664{ 668{
669 if (!EINA_MAGIC_CHECK(sti, ELM_STORE_ITEM_MAGIC)) return;
665 LKL(sti->lock); 670 LKL(sti->lock);
666 sti->data = data; 671 sti->data = data;
667 LKU(sti->lock); 672 LKU(sti->lock);
@@ -670,6 +675,7 @@ elm_store_item_data_set(Elm_Store_Item *sti, void *data)
670EAPI void * 675EAPI void *
671elm_store_item_data_get(Elm_Store_Item *sti) 676elm_store_item_data_get(Elm_Store_Item *sti)
672{ 677{
678 if (!EINA_MAGIC_CHECK(sti, ELM_STORE_ITEM_MAGIC)) return;
673 void *d; 679 void *d;
674 LKL(sti->lock); 680 LKL(sti->lock);
675 d = sti->data; 681 d = sti->data;
@@ -680,6 +686,7 @@ elm_store_item_data_get(Elm_Store_Item *sti)
680EAPI const Elm_Store * 686EAPI const Elm_Store *
681elm_store_item_store_get(const Elm_Store_Item *sti) 687elm_store_item_store_get(const Elm_Store_Item *sti)
682{ 688{
689 if (!EINA_MAGIC_CHECK(sti, ELM_STORE_ITEM_MAGIC)) return;
683 // dont need lock 690 // dont need lock
684 return sti->store; 691 return sti->store;
685} 692}
@@ -687,6 +694,7 @@ elm_store_item_store_get(const Elm_Store_Item *sti)
687EAPI const Elm_Genlist_Item * 694EAPI const Elm_Genlist_Item *
688elm_store_item_genlist_item_get(const Elm_Store_Item *sti) 695elm_store_item_genlist_item_get(const Elm_Store_Item *sti)
689{ 696{
697 if (!EINA_MAGIC_CHECK(sti, ELM_STORE_ITEM_MAGIC)) return;
690 // dont need lock 698 // dont need lock
691 return sti->item; 699 return sti->item;
692} 700}
@@ -694,6 +702,7 @@ elm_store_item_genlist_item_get(const Elm_Store_Item *sti)
694EAPI const char * 702EAPI const char *
695elm_store_item_filesystem_path_get(const Elm_Store_Item *sti) 703elm_store_item_filesystem_path_get(const Elm_Store_Item *sti)
696{ 704{
705 if (!EINA_MAGIC_CHECK(sti, ELM_STORE_ITEM_MAGIC)) return;
697 // dont need lock 706 // dont need lock
698 return sti->type.filesystem.path; 707 return sti->type.filesystem.path;
699} 708}