ftp.nice.ch/pub/next/unix/audio/cmusic.bs.N.tar.gz#/src/cmusic/mm.var.c

This is mm.var.c in view mode; [Download] [Up]

#include "mm.head.h"

variable(){
 int i, index;
 float *fptr;
 char *sptr;

    BARE0("var ");
    if(bc != ';'){bc = field(fld,SIGS,SBRK); *(Params+2) = Time = getp2(fld);}
    if(!Merging){
	if(Time > 0 && Time < Now)SEQ(SEC);
	if(Time > Now)synthesize();
    }
    bc = field(fld,SIGS," [,;");
    BARE1("%s ",fld);
    switch(*fld){
     case 'p': if(bc == '['){ 
	         if((bc = field(fld,SIGS,"] ")) != ']'){
		    Error++;
		    PROUT("Illegal p-field subscript\n",index);
		    return;
		 }
		 index = expr(fld);
	       } else index = atoi(&fld[1]);
		if(index > Pmax){
		    Pmax = index;
		    EXTEND(Pp, Params, Pmax+1, float);
		}
	       fptr = (Params + index);
	       if(bc != ';') do{
		    bc = field(fld,SIGS,SBRK);
		    if(index > Pmax){
			Pmax = index;
			EXTEND(Pp, Params, Pmax+1, float);
		    }
		    index++;
		    *fptr++ = expr(fld);
	       } while (bc != ';');
		break;
     case 'v': if(bc == '['){ 
	         if((bc = field(fld,SIGS,"] ")) != ']'){
		    Error++;
		    PROUT("Illegal v-field subscript\n",index);
		    return;
		 }
		 index = expr(fld);
	       } else index = atoi(&fld[1]);
		if(index > Vmax){
		    Vmax = index;
		    EXTEND(Vp, Vars, Vmax+1, float);
		}
	       fptr = (Vars + index);
	       if(bc != ';') do{
		    bc = field(fld,SIGS,SBRK);
		    if(index > Vmax){
			Vmax = index;
			EXTEND(Vp, Vars, Vmax+1, float);
		    }
		    index++;
		    *fptr++ = expr(fld);
	       } while (bc != ';');
		break;
     case 's': if(bc == '['){ 
	         if((bc = field(fld,SIGS,"] ")) != ']'){
		    Error++;
		    PROUT("Illegal string subscript\n",index);
		    return;
		 }
		 index = expr(fld);
	       } else index = atoi(&fld[1]);
		if(index > Strmax){
		    Strmax = index;
		    if(Strvars) Strvars = 
		     (char **) realloc(Strvars,(Strmax+1)*sizeof(char **));
		    else 
		     Strvars = 
		      (char **) malloc((Strmax+1)*sizeof(char **)); 
		     Strp = (Strvars+(Strmax+1)-1);
		     *Strp = NULL;
		}
	       Strp = (Strvars + index);
	       while(bc != ';'){
		    bc = field(fld,SIGS,SBRK);
		    BARE1("\"%s\"", fld);
		    if(index > Strmax){
			Strmax = index;
			if(Strvars) Strvars = 
			 (char **) realloc(Strvars,(Strmax+1)*sizeof(char **));
			else 
			 Strvars = 
			  (char **) malloc((Strmax+1)*sizeof(char **)); 
			 Strp = (Strvars+(Strmax+1)-1);
			 *Strp = NULL;
		    }
	if(*Strp)
	 *Strp = strcpy(realloc(*Strp, (strlen(fld)+1)*sizeof(char *)), fld);
	else
	 *Strp = strcpy(malloc(strlen(fld)+1), fld);
		    index++;
	       }
		break;
     default: PROUT("Illegal Variable %s\n",fld); Error++; return;
    }
    BARE0(";\n");
}

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.