예제 #1
0
파일: sgml.c 프로젝트: AIDman/Kaldi
TEXT *delete_SGML_tag(SGML *sg, TEXT *str)
{
    TEXT *b;
    int a;

    if (sg->num_tags == 0) return(NULL);
    if (*(str+1) != '/') return(NULL);
    if ((b = TEXT_strchr(str+2,'>')) == NULL) return(NULL);
    if (TEXT_strncmp(sg->tags[sg->num_tags-1].name,str+2,b - (str+2)) != 0)
	return(NULL);
    /* delete the last SGML tag */
    sg->num_tags --;
    for (a=0; a<sg->tags[sg->num_tags].attrib_num; a++){
	free_singarr(sg->tags[sg->num_tags].attrib_value[a],TEXT);
	free_singarr(sg->tags[sg->num_tags].attrib_name[a],TEXT);
    }
    sg->tags[sg->num_tags].attrib_num = 0;
    
    return(sg->tags[sg->num_tags].name);
}
예제 #2
0
파일: word.c 프로젝트: AIDman/Kaldi
void release_WORD(void *p){
    WORD *tw = (WORD *)p;    
    if (tw == NULL_WORD)
	return;
    tw->use --;
    if (tw->use != 0)
	return;
    if (tw->value != NULL_TEXT)	TEXT_free(tw->value);
    if (tw->intern_value != NULL_TEXT) TEXT_free(tw->intern_value);
    if (tw->tag1 != NULL_TEXT)	TEXT_free(tw->tag1);
    if (tw->tag2 != NULL_TEXT)	TEXT_free(tw->tag2);
    free_singarr(tw,WORD);

}
예제 #3
0
파일: net_dp.c 프로젝트: AIDman/Kaldi
static void destroy_NET_ALIGN(NET_ALIGN **net_ali){
    char *proc = "destroy_NET_ALIGN";

    if (db >= 1) printf("Entering %s:\n",proc);

    /* free the cell array */
    free_2dimarr((*net_ali)->cell,(*net_ali)->arcset_a.max,CELL);

    /* the arcsets */
    free_ARCSET(&((*net_ali)->arcset_a));
    free_ARCSET(&((*net_ali)->arcset_b));

    /* the structure */
    free_singarr((*net_ali),NET_ALIGN);

    *net_ali = (NET_ALIGN *)0;
}
예제 #4
0
파일: range.c 프로젝트: usnistgov/SCTK
static void print_gnu_range_graph(RANK *rank, char *percent_desc, char *testname, char *base, int for_blks, int feedback)
{
    int b,t;
    FILE *fp_dat, *fp_mean, *fp_plt, *fp_median;
    double sum;
    TEXT *mean_name = (TEXT *)0, *dat_name = (TEXT *)0;
    TEXT *plt_name = (TEXT *)0, *basename = (TEXT *)0;
    TEXT *median_name = (TEXT *)0;
    double *pctt, *rnkk;
    int *ind;

    alloc_singarr(pctt,MAX( rank->n_blk , rank->n_trt ),double);
    alloc_singarr(rnkk,MAX( rank->n_blk , rank->n_trt ),double);
    alloc_singarr(ind,MAX( rank->n_blk , rank->n_trt ),int);

    basename = TEXT_strdup((TEXT *)rsprintf("%s%s",(strcmp(base,"-")==0) ? "STATS" : base,
	    (for_blks) ? ".spk" : ".sys"));
    dat_name = TEXT_strdup((TEXT *)rsprintf("%s%s",basename,".dat"));
    /* make the datafiles for the treatements */
    if ((fp_dat = fopen(dat_name,"w")) == (FILE *)0){
	fprintf(stderr,"Error: unable to open GNUPLOT data file %s\n",
		dat_name);
	exit(1);
    } else
	if (feedback >= 1) printf("        Output written to '%s.*'\n",basename);

    mean_name = TEXT_strdup((TEXT *)rsprintf("%s%s",basename,".mean"));
    if ((fp_mean = fopen(mean_name,"w")) == (FILE *)0){
	fprintf(stderr,"Error: unable to open GNUPLOT data file %s\n",
		mean_name);
	exit(1);
    }
    median_name = TEXT_strdup((TEXT *)rsprintf("%s%s",basename,".median"));
    if ((fp_median = fopen(median_name,"w")) == (FILE *)0){
	fprintf(stderr,"Error: unable to open GNUPLOT data file %s\n",
		median_name);
	exit(1);
    }
    plt_name = TEXT_strdup((TEXT *)rsprintf("%s%s",basename,".plt"));
    if ((fp_plt = fopen(plt_name,"w")) == (FILE *)0){
	fprintf(stderr,"Error: unable to open GNUPLOT file %s\n",
		plt_name);
	exit(1);
    } 
    fprintf(fp_plt,"set yrange [%d:0]\n",
	    1 + ((for_blks) ?rank->n_blk  :rank->n_trt ));
    fprintf(fp_plt,"set xrange [0:100]\n");
    fprintf(fp_plt,"set title \"%s\"\n",testname);
    fprintf(fp_plt,"set key\n");
    fprintf(fp_plt,"set ylabel \"%s\"\n",(for_blks) ? "Speaker ID" :"Systems");
    fprintf(fp_plt,"set xlabel \"%s\"\n",percent_desc);
    fprintf(fp_plt,"set ytics (");

    if (for_blks){
	for (b=0;b< rank->n_blk ;b++){
	    double medianval=0.0;
	    sum = 0.0;
	    for (t=0;t< rank->n_trt ;t++){
		fprintf(fp_dat,"%d %f\n",
			b+1,rank->pcts [ rank->trt_srt_ind [ b ]  ][ t ] );
		pctt[t] = rank->pcts [ rank->trt_srt_ind [ b ]  ][ t ] ;
		sum += rank->pcts [ rank->trt_srt_ind [ b ]  ][ t ] ;
	    }

	    rank_double_arr(pctt, rank->n_trt ,ind,rnkk,INCREASING);
	    if ( rank->n_trt  % 2 == 0) { /* handle the even arr len */
		medianval = (pctt[ind[ rank->n_trt  / 2]] + 
			     pctt[ind[( rank->n_trt  / 2) - 1]]) / 2.0;
	    } else { /* handle the odd arr len */
		medianval = pctt[ind[ rank->n_trt  / 2]];
	    }
	    fprintf(fp_mean,"%d %f\n",b+1,sum / (double)( rank->n_trt ));
	    fprintf(fp_median,"%d %f\n",b+1,medianval);
	    fprintf(fp_plt,"\"%s\" %d",rank->blk_name[rank->trt_srt_ind[b]],
		    b+1);
	    if (b !=rank->n_blk -1)
		fprintf(fp_plt,",");
	}
	fprintf(fp_plt,")\n");
    } else {
	for (t=0;t< rank->n_trt ;t++){
	    double medianval=0.0;
	    sum = 0.0;

	    for (b=0;b< rank->n_blk ;b++){
		fprintf(fp_dat,"%d %f\n",
			t+1,rank->pcts [ b ][ rank->blk_srt_ind [ t ]  ] );
		pctt[b] = rank->pcts [ b ][ rank->blk_srt_ind [ t ]  ] ;
		sum += rank->pcts [ b ][ rank->blk_srt_ind [ t ]  ] ;
	    }
    rank_double_arr(pctt, rank->n_blk ,ind,rnkk,INCREASING);
	    if ( rank->n_blk  % 2 == 0) { /* handle the even arr len */
		medianval = (pctt[ind[ rank->n_blk  / 2]] + 
			     pctt[ind[( rank->n_blk  / 2) - 1]]) / 2.0;
	    } else { /* handle the odd arr len */
		medianval = pctt[ind[ rank->n_blk  / 2]];
	    }
	    fprintf(fp_mean,"%d %f\n",t+1,sum / (double)(rank->n_blk ));
	    fprintf(fp_median,"%d %f\n",t+1,medianval);
	    fprintf(fp_plt,"\"%s\" %d",rank->trt_name[rank->blk_srt_ind[t]],
		    t+1);
	    if (t !=rank->n_trt -1)
		fprintf(fp_plt,",");
	}
	fprintf(fp_plt,")\n");
    }

    fprintf(fp_plt,"plot \"%s\" using 2:1 title \"Mean %s\" with lines,",
	    mean_name, percent_desc);
    fprintf(fp_plt,"\"%s\" using 2:1 title \"Median %s\" with lines,",
	    median_name, percent_desc);
    fprintf(fp_plt,"\"%s\" using 2:1 title \"Individual %s\"\n",dat_name,
	    percent_desc);
    fclose(fp_dat);
    fclose(fp_mean);
    fclose(fp_median);
    fclose(fp_plt);

    free_singarr(mean_name  , TEXT);
    free_singarr(dat_name   , TEXT);
    free_singarr(plt_name   , TEXT);
    free_singarr(basename   , TEXT);
    free_singarr(median_name, TEXT);

    free_singarr(pctt,double);
    free_singarr(rnkk,double);
    free_singarr(ind,int);
}