示例#1
0
AlcDLPList *HGU_XmFileListCreateList(
  String	resourceFile,
  WlzErrorNum	*dstErr)
{
  AlcDLPList	*list=NULL;
  FILE		*fp;
  HGU_XmFileListCallbackStruct	*cbs;
  int		index;
  WlzErrorNum	errNum=WLZ_ERR_NONE;
  AlcErrno	alcErrno;

  /* check input parameters */
  if( resourceFile == NULL ){
    errNum = WLZ_ERR_PARAM_NULL;
  }

  /* create list */
  list = AlcDLPListNew(&alcErrno);

  /* read file to get menu items */
  if( errNum == WLZ_ERR_NONE ){
    if( (fp = fopen(resourceFile, "r")) ){
      BibFileRecord	*bibfileRecord;
      BibFileError	bibFileErr;

      /* search for file list entry */
      bibFileErr = BibFileRecordRead(&bibfileRecord, NULL, fp);
      while( bibFileErr == BIBFILE_ER_NONE ){

	/* create items and add to list */
	if( !strncmp(bibfileRecord->name, "HGU_XmFileListFileRecord", 23) ){
	  cbs = (HGU_XmFileListCallbackStruct *)
	    AlcMalloc(sizeof(HGU_XmFileListCallbackStruct));
	  errNum = WlzEffBibParseFileRecord(bibfileRecord, &index,
					    &(cbs->file), &(cbs->format));
	  AlcDLPListEntryAppend(list, NULL, (void *) cbs,
				HGU_XmFileListItemFree);
	}

	BibFileRecordFree(&bibfileRecord);
	bibFileErr = BibFileRecordRead(&bibfileRecord, NULL, fp);
      }
    }
    else {
      errNum = WLZ_ERR_FILE_OPEN;
    }
  }

  if( dstErr ){
    *dstErr = errNum;
  }
  return list;
}
void postProcMajorPageSelectCb(
  Widget	w,
  XtPointer	client_data,
  XtPointer	call_data)
{
  /* we have shifted to post-processing,
     clear undo/redo lists */
  if( sgnlPostProcUndoList ){
    /* free list and all entries */
    AlcDLPListFree(sgnlPostProcUndoList);
  }
  /* create the list */
  sgnlPostProcUndoList = AlcDLPListNew(NULL);
  
  if( sgnlPostProcRedoList ){
    /* free list and all entries */
    AlcDLPListFree(sgnlPostProcRedoList);
  }
  /* create the list */
  sgnlPostProcRedoList = AlcDLPListNew(NULL);
  
  return;
}
示例#3
0
static void     AlcDLPListTest(void)
{
  AlcDLPList	*list = NULL;
  AlcDLPItem 	*item0 = NULL,
		*item1;
  int		count;
  AlcErrno	errNum = ALC_ER_NONE;

  (void )printf("Simple test program for AlcDLPList functions\n");
  (void )printf("=======================================\n\n");
  (void )printf("\n* Create a new list.\n");
  list = AlcDLPListNew(&errNum);
  AlcPrintAndCheckErr(errNum);
  (void )printf("\n* Insert items into list.\n");
  count = 0;
  do
  {
    errNum = AlcDLPListEntryInsert(list, NULL, (void *)count, NULL);
    ++count;
    AlcPrintAndCheckErr(errNum);
  } while(count < 10);
  (void )printf("\n* Print list using iterator function.\n");
  (void )printf("\nExpected output:\n"
		"9 33\n"
		"8 33\n"
		"7 33\n"
		"6 33\n"
		"5 33\n"
		"4 33\n"
		"3 33\n"
		"2 33\n"
		"1 33\n"
		"0 33\n");
  (void )printf("\nActual output:\n");
  item0 = AlcDLPListIterate(list, list->head, ALC_DIRECTION_FWD,
  			    PrintItems, (void *)33, &errNum);
  AlcPrintAndCheckErr(errNum);
  (void )printf("\n* Sort items.\n");
  errNum = AlcDLPListSort(list, CompareEntries);
  AlcPrintAndCheckErr(errNum);
  (void )printf("\n* Find entry == 5.\n");
  item0 = AlcDLPListIterate(list, list->head, ALC_DIRECTION_FWD,
  			    FindEntryEq, (void *)5, &errNum);
  AlcPrintAndCheckErr(errNum);
  (void )printf("\n* Found entry == %d\n", (int )(item0->entry));
  (void )printf("\n* Delete the entry found.\n");
  (void )AlcDLPItemUnlink(list, item0, 1, &errNum);
  AlcPrintAndCheckErr(errNum);
  (void )printf("\n* Print list using iterator function (again).\n");
  item0 = AlcDLPListIterate(list, list->head, ALC_DIRECTION_FWD,
  			   PrintItems, (void *)33, &errNum);
  AlcPrintAndCheckErr(errNum);    		
  (void )printf("\n* Find entry == 3.\n");
  item0 = AlcDLPListIterate(list, list->head, ALC_DIRECTION_FWD,
  			    FindEntryEq, (void *)3, &errNum);
  AlcPrintAndCheckErr(errNum);
  (void )printf("\n* Unlink this item.\n");
  (void )AlcDLPItemUnlink(list, item0, 0, &errNum);
  AlcPrintAndCheckErr(errNum);
  (void )printf("\n* Find entry == 7.\n");
  item1 = AlcDLPListIterate(list, list->head, ALC_DIRECTION_FWD,
  			    FindEntryEq, (void *)7, &errNum);
  AlcPrintAndCheckErr(errNum);
  (void )printf("\n* Append the item with entry == 3 "
  	        "after item with entry == 7.\n");
  errNum = AlcDLPItemAppend(list, item1, item0);
  AlcPrintAndCheckErr(errNum);
  (void )printf("\n* Print list using iterator function (again).\n");
  item0 = AlcDLPListIterate(list, list->head, ALC_DIRECTION_FWD,
  			   PrintItems, (void *)33, &errNum);
  AlcPrintAndCheckErr(errNum);
  (void )printf("\n* Free the list.\n");
  AlcDLPListFree(list);
}
示例#4
0
文件: WlzSAToWlz.c 项目: dscho/Woolz
int		main(int argc, char *argv[])
{
  FILE		*inFile, *outFile;
  char 		optList[] = "hv";
  int		option;
  int		verboseFlg=0;
  WlzObject	*obj;
  WlzDomain	domain;
  WlzValues	values;
  WlzBoundList	*tmpBnd;
  char		*name;
  AlcDLPList	*bndDLPList;
  AlcDLPItem	*bndItem;
  NamedBndItem	*namedBndItem;
  int		noNameCntr=0;
  char		noNameBuf[32];

  /* read the argument list and check for an input file */
  opterr = 0;
  while( (option = getopt(argc, argv, optList)) != EOF ){
    switch( option ){

    case 'v':
      verboseFlg = 1;
      break;

    case 'h':
      usage(argv[0]);
      return WLZ_ERR_NONE;

    default:
      usage(argv[0]);
      return WLZ_ERR_UNSPECIFIED;
    }
  }

  inFile = stdin;
  if( optind < argc ){
    if( (inFile = fopen(*(argv+optind), "r")) == NULL ){
      fprintf(stderr, "%s: can't open file %s\n", argv[0], *(argv+optind));
      usage(argv[0]);
      return( 1 );
    }
  }

  /* read XML file building boundary lists */
  /* quick fix read  - read until no new names */
  bndDLPList = AlcDLPListNew(NULL);
  name = NULL;
  while((name = getNextName(inFile)) != NULL){
    /* check for empty name */
    if( strcmp(name, " ") == 0 ){
      noNameCntr++;
      sprintf(noNameBuf, "NoName_%03d", noNameCntr);
      name = AlcStrDup(noNameBuf);
    }
    /* convert comma to underscore */
    tmpBnd = getNextBoundary(inFile);
    addToBndList(bndDLPList, name, tmpBnd);
  }

  /* write boundary lists */
  bndItem = bndDLPList->head;
  while( bndItem ){
    namedBndItem = (NamedBndItem *) bndItem->entry;
    name = (char *) AlcMalloc(sizeof(char)*(strlen(namedBndItem->name)+16));
    sprintf(name, "%s.wlz", namedBndItem->name);
    if((outFile = fopen(name, "w")) != NULL){
      domain.b = namedBndItem->bnd;
      values.core = NULL;
      obj = WlzMakeMain(WLZ_BOUNDLIST, domain, values, NULL, NULL, NULL);
      WlzWriteObj(outFile, obj);
      WlzFreeObj(obj);
      fclose(outFile);
    }
    AlcFree(name);
    bndItem = bndItem->next;
    if( bndItem == bndDLPList->head ){
      break;
    }
  }

  exit(0);
}