예제 #1
0
파일: xm_lib.c 프로젝트: deater/vmw-meter
int xm_to_text(FILE *fff,struct xm_info_struct *xm,
		int which1, int which2, int which3) {

	int i;

	fprintf(fff,"\'\n");
	fprintf(fff,"\' TITLE:\t%s\n",xm->module_name);
	fprintf(fff,"\'\n");
	fprintf(fff,"\' LOOP:\t\t%d\n",xm->restart_position);
	fprintf(fff,"\' BPM:\t\t%d\n",xm->default_bpm);
	fprintf(fff,"\' TEMPO:\t%d\n",xm->default_tempo);
	fprintf(fff,"\' FREQ:\t\t1000000\n");
	fprintf(fff,"\' IRQ:\t\t50\n");
	fprintf(fff,"\'\n");
	fprintf(fff,"\' ENDHEADER\n");
	fprintf(fff,"\'\n");

	for(i=0;i < xm->song_length;i++) {
		dump_pattern( fff, xm->pattern_order[i],
				&(xm->pattern[xm->pattern_order[i]]),
				xm->number_of_channels,
				which1,which2,which3);
	}

	return 0;
}
예제 #2
0
static void
dump_pattern (struct Pattern *pattern, unsigned indent)
{
  printf ("%*s", indent, "");
  switch (pattern->type)
    {
    case PATTERN_LITERAL:
      printf ("literal: ");
      print_char_class (pattern->info.literal);
      printf ("\n");
      break;
    case PATTERN_CONCAT:
      printf ("concat:\n");
      dump_pattern (pattern->info.concat.a, indent+1);
      dump_pattern (pattern->info.concat.b, indent+1);
      break;
    case PATTERN_ALT:
      printf ("alternation:\n");
      dump_pattern (pattern->info.alternation.a, indent+1);
      dump_pattern (pattern->info.alternation.b, indent+1);
      break;
    case PATTERN_OPTIONAL:
      printf ("optional:\n");
      dump_pattern (pattern->info.optional, indent+1);
      break;
    case PATTERN_STAR:
      printf ("star:\n");
      dump_pattern (pattern->info.optional, indent+1);
      break;
    case PATTERN_PLUS:
      printf ("plus:\n");
      dump_pattern (pattern->info.optional, indent+1);
      break;
    case PATTERN_EMPTY:
      printf ("[empty]\n");
    }
}