EAPI Eina_Accessor* efl_model_list_slice(Eina_List *list, unsigned start, unsigned count) { if (!list) return NULL; if ((start == 0) && (count == 0)) /* this is full data */ { /* * children_accessor will be set to NULL by * eina_list_accessor_new if the later fails. */ return eina_list_accessor_new(list); } Eo *child; Eina_List *l, *ln, *lr = NULL; ln = eina_list_nth_list(list, (start-1)); if (!ln) { return NULL; } EINA_LIST_FOREACH(ln, l, child) { efl_ref(child); lr = eina_list_append(lr, child); if (eina_list_count(lr) == count) break; }
int main(int argc, char **argv) { (void)argc; (void)argv; Eina_List *list = NULL, *r_list; Eina_List *l; Eina_Iterator *itr; void *list_data; eina_init(); list = eina_list_append(list, "caprica"); list = eina_list_append(list, "sagitarius"); list = eina_list_append(list, "aerilon"); list = eina_list_append(list, "gemenon"); list = eina_list_promote_list(list, eina_list_nth_list(list, 2)); list = eina_list_demote_list(list, eina_list_nth_list(list, 2)); list = eina_list_remove(list, "sagitarius"); l = eina_list_data_find_list(list, "aerilon"); eina_list_data_set(l, "aquarius"); printf("size: %d\n", eina_list_count(list)); r_list = eina_list_reverse_clone(list); itr = eina_list_iterator_new(r_list); EINA_ITERATOR_FOREACH(itr, list_data) printf("%s\n", (char*)list_data); eina_iterator_free(itr); eina_list_free(list); eina_list_free(r_list); eina_shutdown(); return 0; }
EINTERN void e_xinerama_fake_screen_del(int num) { Eina_List *l; E_Screen *scr, *lscr; int n = 0, x = 0; /* this assumes X number of identical horizontal screens */ EINA_SAFETY_ON_NULL_RETURN(fake_screens); l = eina_list_nth_list(fake_screens, num); EINA_SAFETY_ON_NULL_RETURN(l); scr = eina_list_data_get(l); free(scr); fake_screens = eina_list_remove_list(fake_screens, l); EINA_LIST_FOREACH(fake_screens, l, lscr) { lscr->screen = n++; lscr->x = x; lscr->w = e_comp->w / eina_list_count(fake_screens); x = lscr->x + lscr->w; }
/* callbacks */ static void _enscribi_input_frame_cb_matches(void *data, Evas_Object *obj, const char *emission, const char *source) { Match *match; Eina_List *matches, *l; int i; Edje_Message_String_Set *msg; Edje_Message_Int_Set *msg2; Smart_Data *sd; sd = data; matches = enscribi_canvas_matches_get(sd->canvas); if (!matches) return; msg = calloc(1, sizeof(Edje_Message_String_Set) + ((9-1) * sizeof(char *))); msg->count = 9; msg2 = calloc(1, sizeof(Edje_Message_String_Set) + ((9-1) * sizeof(int))); msg2->count = 9; for (i = 0; i < 8; i++) { l = eina_list_nth_list(matches, i); match = l->data; msg->str[i] = match->str; // Get and send the unicode value of the glyph as well int glyph; evas_string_char_next_get(match->str, 0, &(glyph)); msg2->val[i] = glyph; printf("%s\t(%d)\n", msg->str[i], msg2->val[i]); } msg->str[8] = ""; // Why do we have to set a 9th element to not get scrap in 8th? msg2->val[8] = 0; edje_object_message_send(obj, EDJE_MESSAGE_STRING_SET, 1, msg); edje_object_message_send(obj, EDJE_MESSAGE_INT_SET, 1, msg2); free(msg); free(msg2); }