• source navigation  • diff markup  • identifier search  • freetext search  • 

Sources/opkg-lede/tests/opkg_active_list_test.c

  1 /* opkg_active_list.c - the opkg package management system
  2 
  3    Tick Chen <tick@openmoko.com>
  4 
  5    Copyright (C) 2008 Openmoko
  6 
  7    This program is free software; you can redistribute it and/or
  8    modify it under the terms of the GNU General Public License as
  9    published by the Free Software Foundation; either version 2, or (at
 10    your option) any later version.
 11 
 12    This program is distributed in the hope that it will be useful, but
 13    WITHOUT ANY WARRANTY; without even the implied warranty of
 14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 15    General Public License for more details.
 16 */
 17 
 18 #include <stdlib.h>
 19 #include <libopkg/active_list.h>
 20 #include <active_list.h>
 21 #include <stdio.h>
 22 
 23 struct active_test {
 24         char *str;
 25         struct active_list list;
 26 };
 27 
 28 static struct active_test *active_test_new(char *str)
 29 {
 30         struct active_test *ans =
 31             (struct active_test *)calloc(1, sizeof(struct active_test));
 32         ans->str = str;
 33         active_list_init(&ans->list);
 34         return ans;
 35 }
 36 
 37 static void active_test_add(struct active_list *head, struct active_test *node)
 38 {
 39         active_list_add(head, &node->list);
 40 }
 41 
 42 /*
 43 .--A---B----C----D-----E----F
 44     |             |__k---L
 45     |                    |_ N
 46     |__ G ---H ---I---J
 47              |_M      |_O
 48 
 49 Then the sequence will be
 50 +: G M H I O J A B K N L C D E F
 51 -: F E D C L N K B A J O I H M G
 52 */
 53 static void make_list(struct active_list *head)
 54 {
 55         struct active_test *A = active_test_new("A");
 56         struct active_test *B = active_test_new("B");
 57         struct active_test *C = active_test_new("C");
 58         struct active_test *D = active_test_new("D");
 59         struct active_test *E = active_test_new("E");
 60         struct active_test *F = active_test_new("F");
 61         struct active_test *G = active_test_new("G");
 62         struct active_test *H = active_test_new("H");
 63         struct active_test *I = active_test_new("I");
 64         struct active_test *J = active_test_new("J");
 65         struct active_test *K = active_test_new("K");
 66         struct active_test *L = active_test_new("L");
 67         struct active_test *M = active_test_new("M");
 68         struct active_test *N = active_test_new("N");
 69         struct active_test *O = active_test_new("O");
 70 
 71         active_test_add(head, A);
 72         active_test_add(head, B);
 73         active_test_add(head, C);
 74         active_test_add(head, D);
 75         active_test_add(head, E);
 76         active_test_add(head, F);
 77         active_test_add(head, G);
 78         active_test_add(head, H);
 79         active_test_add(head, I);
 80         active_test_add(head, J);
 81         active_test_add(head, K);
 82         active_test_add(head, L);
 83         active_test_add(head, M);
 84         active_test_add(head, N);
 85         active_test_add(head, O);
 86 }
 87 
 88 static void show_list(struct active_list *head)
 89 {
 90         struct active_list *ptr;
 91         struct active_test *test;
 92         for (ptr = active_list_next(head, NULL); ptr;
 93              ptr = active_list_next(head, ptr)) {
 94                 test = list_entry(ptr, struct active_test, list);
 95                 printf("%s ", test->str);
 96         }
 97         printf("\n");
 98 }
 99 
100 int main(void)
101 {
102         struct active_list head;
103         struct active_list *ptr;
104         struct active_test *test;
105         active_list_init(&head);
106         make_list(&head);
107 
108         printf("pos order: ");
109         show_list(&head);
110 /*    for(ptr = active_list_next(&head, &head); ptr ;ptr = active_list_next(&head, ptr)) {
111         test = list_entry(ptr, struct active_test, list);
112         printf ("%s ",test->str);
113     }*/
114         printf("neg order: ");
115         for (ptr = active_list_prev(&head, &head); ptr;
116              ptr = active_list_prev(&head, ptr)) {
117                 test = list_entry(ptr, struct active_test, list);
118                 printf("%s ", test->str);
119         }
120         printf("after clear: ");
121         active_list_clear(&head);
122         for (ptr = active_list_next(&head, NULL); ptr;
123              ptr = active_list_next(&head, ptr)) {
124                 test = list_entry(ptr, struct active_test, list);
125                 printf("%s ", test->str);
126         }
127         printf("\n");
128 
129 }
130 

This page was automatically generated by LXR 0.3.1.  •  OpenWrt