Changeset 16631
- Timestamp:
- Feb 23, 2008, 11:29:20 AM (18 years ago)
- Location:
- trunk/Ohana/src/opihi
- Files:
-
- 5 edited
-
cmd.data/book.c (modified) (3 diffs)
-
cmd.data/book_commands.c (modified) (1 diff)
-
include/data.h (modified) (2 diffs)
-
lib.data/book.c (modified) (2 diffs)
-
lib.data/page.c (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Ohana/src/opihi/cmd.data/book.c
r16434 r16631 7 7 int book_getbook (int argc, char **argv); 8 8 int book_listbook (int argc, char **argv); 9 int book_shuffle (int argc, char **argv); 9 10 int book_npages (int argc, char **argv); 10 11 int book_newpage (int argc, char **argv); … … 22 23 {1, "getbook", book_getbook, "get book name by location"}, 23 24 {1, "listbook", book_listbook, "list pages in a book"}, 25 {1, "shuffle", book_shuffle, "shuffle pages in a book"}, 24 26 {1, "npages", book_npages, "return number of pages in a book"}, 25 27 {1, "newpage", book_newpage, "create a new page in a book"}, … … 43 45 gprint (GP_ERR, " book getbook (where) [-var var] : get book name\n"); 44 46 gprint (GP_ERR, " book listbook (book) : list a book\n"); 47 gprint (GP_ERR, " book shuffle (book) : randomize pages in a book\n"); 45 48 gprint (GP_ERR, " book npages (book) [-var var] [-key key] : return number of pages in a book\n"); 46 49 gprint (GP_ERR, " book newpage (book) (page) : create a new page in a book\n"); -
trunk/Ohana/src/opihi/cmd.data/book_commands.c
r16139 r16631 378 378 } 379 379 380 int book_shuffle (int argc, char **argv) { 381 382 int where, N; 383 char *varName, *keyName, *keyValue; 384 Book *book; 385 Page *page; 386 387 if (argc != 2) { 388 gprint (GP_ERR, "USAGE: book shuffle (book)\n"); 389 return FALSE; 390 } 391 392 book = FindBook (argv[1]); 393 if (book == NULL) { 394 gprint (GP_ERR, "book %s not found\n", argv[1]); 395 return FALSE; 396 } 397 398 ShufflePages (book); 399 return TRUE; 400 } 401 380 402 int book_setword (int argc, char **argv) { 381 403 -
trunk/Ohana/src/opihi/include/data.h
r16119 r16631 29 29 int Npages; 30 30 Page **pages; 31 int *index;31 // int *index; (why did I define this? is it not used?) 32 32 char **pageIDs; 33 33 } Book; … … 52 52 Page *GetPageRestricted (Book *book, int where, char *keyName, char *keyValue); 53 53 Page *CreatePage (Book *book, char *name); 54 int ShufflePages (Book *book); 54 55 int DeletePage (Book *book, Page *page); 55 56 void ListPages (Book *book); -
trunk/Ohana/src/opihi/lib.data/book.c
r16466 r16631 29 29 ALLOCATE (book[0].pages, Page *, book[0].NPAGES); 30 30 ALLOCATE (book[0].pageIDs, char *, book[0].NPAGES); 31 ALLOCATE (book[0].index, int, book[0].NPAGES);31 // ALLOCATE (book[0].index, int, book[0].NPAGES); 32 32 } 33 33 … … 43 43 free (book[0].pages); 44 44 free (book[0].pageIDs); 45 free (book[0].index);45 // free (book[0].index); 46 46 free (book); 47 47 } -
trunk/Ohana/src/opihi/lib.data/page.c
r16459 r16631 106 106 REALLOCATE (book[0].pages, Page *, book[0].NPAGES); 107 107 REALLOCATE (book[0].pageIDs, char *, book[0].NPAGES); 108 REALLOCATE (book[0].index, int, book[0].NPAGES);108 // REALLOCATE (book[0].index, int, book[0].NPAGES); 109 109 } 110 110 ALLOCATE (page, Page, 1); … … 112 112 book[0].pages[N] = page; 113 113 book[0].pageIDs[N] = strcreate(name); 114 book[0].index[N] = N;114 // book[0].index[N] = N; 115 115 116 116 /* at this point, I should sort the index */ 117 118 return (page); 119 } 120 121 void sortpages (int *seq, Page **pages, char **pageIDs, int N) { 122 123 # define SWAPFUNC(A,B){ Page *tmpPage; char *tmpID; \ 124 tmpPage = pages[A]; pages[A] = pages[B]; pages[B] = tmpPage; \ 125 tmpID = pageIDs[A]; pageIDs[A] = pageIDs[B]; pageIDs[B] = tmpID; \ 126 } 127 # define COMPARE(A,B)(seq[A] < seq[B]) 128 129 OHANA_SORT (N, COMPARE, SWAPFUNC); 130 131 # undef SWAPFUNC 132 # undef COMPARE 133 } 134 135 /* make a new named page */ 136 int ShufflePages (Book *book) { 137 138 int i, N, *seq; 139 Page *page; 140 141 N = book[0].Npages; 142 143 // generate a random index 144 ALLOCATE (seq, int, N); 145 for (i = 0; i < N; i++) { 146 seq[i] = N * drand48(); 147 } 148 149 // sort the pages by the random index 150 sortpages (seq, book[0].pages, book[0].pageIDs, N); 151 free (seq); 117 152 118 153 return (page); … … 140 175 book[0].pages[i] = book[0].pages[i + 1]; 141 176 book[0].pageIDs[i] = book[0].pageIDs[i + 1]; 142 book[0].index[i] = book[0].index[i + 1];177 // book[0].index[i] = book[0].index[i + 1]; 143 178 } 144 179 book[0].Npages --; … … 148 183 REALLOCATE (book[0].pages, Page *, book[0].NPAGES); 149 184 REALLOCATE (book[0].pageIDs, char *, book[0].NPAGES); 150 REALLOCATE (book[0].index, int, book[0].NPAGES);185 // REALLOCATE (book[0].index, int, book[0].NPAGES); 151 186 } 152 187
Note:
See TracChangeset
for help on using the changeset viewer.
