File:  [LON-CAPA] / capa / capa51 / pProj / capaRQO.c
Revision 1.3: download - view: text, annotated - select for diffs
Fri Jul 7 18:33:03 2000 UTC (23 years, 10 months ago) by albertel
Branches: MAIN
CVS tags: version5-1-2-first_release, HEAD
- updating GPL notices

    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
    5:    modify it under the terms of the GNU Library General Public License as
    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
   12:    Library General Public License for more details.
   13: 
   14:    You should have received a copy of the GNU Library General Public
   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,
   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: */
   24: 
   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>