home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / misc / volume36 / formes / part01 / quizset.c < prev    next >
C/C++ Source or Header  |  1993-04-01  |  2KB  |  104 lines

  1.  
  2. /*
  3.  *  Copyright (C) 1992-1993 Jeffrey Chilton
  4.  *
  5.  *  Permission is granted to anyone to make or distribute copies of
  6.  *  this program, in any medium, provided that the copyright notice
  7.  *  and permission notice are preserved, and that the distributor
  8.  *  grants the recipient permission for further redistribution as
  9.  *  permitted by this notice.
  10.  *  
  11.  *  Author's E-mail address:  172-9221@mcimail.com
  12.  *  
  13.  */
  14.  
  15. static char *whatstring = "@(#)quizset.c    2.2 JWC";
  16.  
  17. #include <stdio.h>
  18. #include <time.h>
  19.  
  20. #include "class.h"
  21. #include "quizset.h"
  22. #include "random.h"
  23.  
  24. extern Random *Squizzer;
  25.  
  26. QuizSet *
  27. QuizSet_new()
  28. {
  29.     QuizSet *self;
  30.  
  31.     self = (QuizSet *)malloc(sizeof (QuizSet));
  32.     if (!self)
  33.     {
  34.     fprintf(stderr, "QuizSet_new: malloc fails\n");
  35.     goto out;
  36.     }
  37.  
  38.     self->allQuizs = Collection_new(NULLMATCH, Quiz_destroy);
  39.     if (!self->allQuizs)
  40.     {
  41.     free(self);
  42.     self = (QuizSet *)0;
  43.     fprintf(stderr, "QuizSet_new: Collection new fails\n");
  44.     goto out;
  45.     }
  46.  
  47. out:
  48.  
  49.     return self;
  50.  
  51. }
  52.  
  53. void 
  54. QuizSet_addOne(self, quiz)
  55. QuizSet *self;
  56. Quiz *quiz;
  57. {
  58.     Collection_add(self->allQuizs, (char *)quiz);
  59. }
  60.  
  61. Quiz *
  62. QuizSet_getOneAtRandom(self)
  63. QuizSet *self;
  64. {
  65.     unsigned long n;
  66.     Quiz *quiz;
  67.  
  68.     n = Random_long(Squizzer) % Collection_size(self->allQuizs);
  69.     quiz = (Quiz *)Collection_atGet(self->allQuizs, (int )n);
  70.  
  71.     return quiz;
  72.  
  73. }
  74.  
  75. Quiz *
  76. QuizSet_getOneFromClass(self, class)
  77. QuizSet *self;
  78. int class;
  79. {
  80.     Quiz *quiz;
  81.  
  82.     /* TEMPORARY [crude beyond words] */
  83.  
  84.     quiz = QuizSet_getOneAtRandom(self);
  85.     while (Quiz_getClass(quiz) != class)
  86.     {
  87.     quiz = QuizSet_getOneAtRandom(self);
  88.     }
  89.  
  90.     return quiz;
  91.  
  92. }
  93.  
  94. void 
  95. QuizSet_destroy(self)
  96. QuizSet *self;
  97. {
  98.  
  99.     Collection_destroy(self->allQuizs);
  100.     free(self);
  101.  
  102. }
  103.  
  104.