Annotation of capa/capa51/pProj/capaRQO.c, revision 1.4

1.2       albertel    1: /* broken start to a module to support questions appearing in a randomized order
                      2:    Copyright (C) 1992-2000 Michigan State University
                      3: 
                      4:    The CAPA system is free software; you can redistribute it and/or
1.4     ! albertel    5:    modify it under the terms of the GNU General Public License as
1.2       albertel    6:    published by the Free Software Foundation; either version 2 of the
                      7:    License, or (at your option) any later version.
                      8: 
                      9:    The CAPA system is distributed in the hope that it will be useful,
                     10:    but WITHOUT ANY WARRANTY; without even the implied warranty of
                     11:    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
1.4     ! albertel   12:    General Public License for more details.
1.2       albertel   13: 
1.4     ! albertel   14:    You should have received a copy of the GNU General Public
1.2       albertel   15:    License along with the CAPA system; see the file COPYING.  If not,
                     16:    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
1.3       albertel   17:    Boston, MA 02111-1307, USA.
                     18: 
                     19:    As a special exception, you have permission to link this program
                     20:    with the TtH/TtM library and distribute executables, as long as you
                     21:    follow the requirements of the GNU GPL in regard to all of the
                     22:    software in the executable aside from TtH/TtM.
                     23: */
1.2       albertel   24: 
1.1       albertel   25: #include <stdio.h>
                     26: #include "capaCommon.h"
                     27: #include "capaParser.h"
                     28: #include "capaRQO.h"
                     29: extern RandQO_t          *QuestionOrder;
                     30: 
                     31: /*FIXME I don't actually do anything yet*/
                     32: void rqo_finish()
                     33: {
                     34:   printf("rqo_finish\n");
                     35: }
                     36: 
                     37: void rqo_1spec()
                     38: {
                     39:   printf("rqo_1spec\n");
                     40: }
                     41: 
                     42: void rqo_2spec()
                     43: {
                     44:   printf("rqo_2spec\n");
                     45: }
                     46: 
                     47: void init_rqo()
                     48: {
                     49:   QuestionOrder=(RandQO_t*) capa_malloc(sizeof(RandQO_t),1);
                     50:   QuestionOrder->num=0;
                     51:   QuestionOrder->used=(int *) capa_malloc(sizeof(int)*MAX_BUFFER_SIZE,1);
                     52:   QuestionOrder->length=MAX_BUFFER_SIZE;
                     53:   QuestionOrder->groups=(RandGroup_t**)capa_malloc(sizeof(RandGroup_t*)*MAX_BUFFER_SIZE,1);
                     54:   QuestionOrder->length=MAX_BUFFER_SIZE;
                     55: }
                     56: 
                     57: int rqo_used(int a)
                     58: {
                     59:   if (QuestionOrder->used[a]) return 1;
                     60:   QuestionOrder->used[a]=1;
                     61:   return 0;
                     62: }
                     63: 
                     64: void rqo_expand_range()
                     65: {
                     66:   /*int num=QuestionOrder->num-1;*/
                     67: }
                     68: 
                     69: void start_rqo_type(int type)
                     70: {
                     71:   int num;
                     72:   printf("start_rqo_type,%d\n",type);
                     73:   if (!QuestionOrder) {init_rqo();}
                     74:   if (QuestionOrder->groups[(QuestionOrder->num)-1]->type == RANGE) rqo_expand_range();
                     75:   num=QuestionOrder->num;
                     76:   QuestionOrder->groups[num]=(RandGroup_t*)capa_malloc(sizeof(RandGroup_t),1);
                     77:   QuestionOrder->groups[num]->type=type;
                     78:   QuestionOrder->groups[num]->length=0;
                     79:   QuestionOrder->groups[num]->list=(int *) capa_malloc(sizeof(int)*MAX_BUFFER_SIZE,1);
                     80:   QuestionOrder->num++;
                     81: }
                     82: 
                     83: void append_rqo(Symbol*s)
                     84: {
                     85:   int num=QuestionOrder->num-1;
                     86:   printf("append_rqo,%ld\n",s->s_int);
                     87:   QuestionOrder->groups[num]->list[QuestionOrder->groups[num]->length]=s->s_int;
                     88:   QuestionOrder->groups[num]->length++;
                     89:   if (rqo_used(s->s_int)) {
                     90:     char warn_msg[WARN_MSG_LENGTH];
                     91:     sprintf(warn_msg,"Question %ld, used twice in /RQO",s->s_int);
                     92:     capa_msg(MESSAGE_ERROR,warn_msg);
                     93:   }
                     94:   capa_mfree((char*)s);
                     95: }
                     96: 
                     97: void prefix_rqo(Symbol*s)
                     98: {
                     99:   int i, num=QuestionOrder->num-1;
                    100:   printf("prefix_rqo,%ld\n",s->s_int);
                    101:   for(i=(QuestionOrder->groups[num]->length);i>0;i--) {
                    102:       QuestionOrder->groups[num]->list[i]=QuestionOrder->groups[num]->list[i-1];
                    103:   }
                    104:   QuestionOrder->groups[num]->list[0]=s->s_int;
                    105:   QuestionOrder->groups[num]->length++;
                    106:   if (rqo_used(s->s_int)) {
                    107:     char warn_msg[WARN_MSG_LENGTH];
                    108:     sprintf(warn_msg,"Question %ld, used twice in /RQO",s->s_int);
                    109:     capa_msg(MESSAGE_ERROR,warn_msg);
                    110:   }
                    111:   capa_mfree((char*)s);
                    112: }
                    113: 

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>