~ubuntu-branches/ubuntu/precise/ncbi-tools6/precise

« back to all changes in this revision

Viewing changes to desktop/vsmfile.c

  • Committer: Bazaar Package Importer
  • Author(s): Aaron M. Ucko
  • Date: 2005-03-27 12:00:15 UTC
  • mfrom: (2.1.2 hoary)
  • Revision ID: james.westby@ubuntu.com-20050327120015-embhesp32nj73p9r
Tags: 6.1.20041020-3
* Fix FTBFS under GCC 4.0 caused by inconsistent use of "static" on
  functions.  (Closes: #295110.)
* Add a watch file, now that we can.  (Upstream's layout needs version=3.)

Show diffs side-by-side

added added

removed removed

Lines of Context:
29
29
*
30
30
* Version Creation Date:   11-29-94
31
31
*
32
 
* $Revision: 6.3 $
 
32
* $Revision: 6.5 $
33
33
*
34
34
* File Description: 
35
35
*
325
325
        ValNode vn;
326
326
        SeqEntryPtr sep = NULL;
327
327
        SeqFeatPtr sfp;
 
328
        SeqLocPtr slp;
328
329
        SeqPortPtr spp;
329
330
        Uint1 code;
330
331
        Char buf[255];
377
378
                                code = Seq_code_iupacna;
378
379
                        else
379
380
                                code = Seq_code_ncbieaa;
380
 
                        spp = SeqPortNewByLoc (sfp->location, code);
381
 
                        bsp = GetBioseqGivenSeqLoc (sfp->location, ompcp->input_entityID);
 
381
                        slp = sfp->location;
 
382
                        if (sfp->data.choice == SEQFEAT_CDREGION && (! is_na)) {
 
383
                          slp = sfp->product;
 
384
                        }
 
385
                        spp = SeqPortNewByLoc (slp, code);
 
386
                        bsp = GetBioseqGivenSeqLoc (slp, ompcp->input_entityID);
382
387
                        if (spp != NULL && bsp != NULL) {
383
388
                                while (FastaSeqLine(spp, buf, 70, is_na))
384
389
                                        FastaFileFunc(bsp, FASTA_SEQLINE, buf, sizeof (buf), (Pointer)fp);
405
410
        return VSMGenericFastaSave((OMProcControlPtr)data, TRUE);
406
411
}
407
412
 
 
413
typedef struct selectedsave
 
414
{
 
415
        AsnIoPtr     aip;
 
416
  SelStructPtr ssp;    
 
417
        ObjMgrPtr    omp;
 
418
} SelectedSaveData, PNTR SelectedSavePtr;
 
419
 
 
420
NLM_EXTERN void AsnPrintNewLine PROTO((AsnIoPtr aip));
 
421
static Boolean SaveOneSelectedItem (GatherObjectPtr gop)
 
422
 
 
423
{
 
424
  SelectedSavePtr ssp;
 
425
  SelStructPtr    sel;
 
426
        ObjMgrTypePtr   omtp;
 
427
 
 
428
  if (gop == NULL || gop->dataptr == NULL) return TRUE;
 
429
  ssp = (SelectedSavePtr) gop->userdata;
 
430
  if (ssp == NULL || ssp->aip == NULL || ssp->ssp == NULL) return TRUE;
 
431
 
 
432
  sel = ssp->ssp;
 
433
  while (sel != NULL 
 
434
         && (sel->entityID != gop->entityID 
 
435
             || sel->itemtype != gop->itemtype 
 
436
             || sel->itemID != gop->itemID))
 
437
  {
 
438
    sel = sel->next;
 
439
  }
 
440
 
 
441
  if (sel == NULL) return TRUE;
 
442
   
 
443
        omtp = ObjMgrTypeFind(ssp->omp, sel->itemtype, NULL, NULL);
 
444
        if (omtp == NULL)
 
445
        {
 
446
                ErrPostEx(SEV_ERROR,0,0,"Can't locate type record for [%d]", (int)sel->itemtype);
 
447
                return TRUE;
 
448
        }       
 
449
                
 
450
  (*(omtp->asnwrite))(gop->dataptr, ssp->aip, NULL);
 
451
  AsnPrintNewLine (ssp->aip);
 
452
  AsnIoFlush (ssp->aip);
 
453
 
 
454
  return TRUE;
 
455
}
 
456
 
408
457
 
409
458
static Int2 LIBCALLBACK VSMGenericAsnSave (OMProcControlPtr ompcp, CharPtr mode )
410
459
{
411
460
        Char filename[255];
412
 
        AsnIoPtr aip;
413
 
        ObjMgrPtr omp;
414
 
        ObjMgrTypePtr omtp;
415
 
        Uint2 the_type;
416
 
        Pointer the_data;
 
461
        SelStructPtr  ssp, sel;
417
462
#ifdef WIN_MAC
418
463
        FILE * fp;
419
464
#endif
 
465
  ValNodePtr entity_list = NULL, vnp;
 
466
  SelectedSaveData ssd;
420
467
 
421
 
        omp = ObjMgrGet();
422
 
        if (ompcp->input_choicetype)
423
 
        {
424
 
                the_type = ompcp->input_choicetype;
425
 
                the_data = (Pointer)(ompcp->input_choice);
426
 
        }
427
 
        else
428
 
        {
429
 
                the_type = ompcp->input_itemtype;
430
 
                the_data = ompcp->input_data;
431
 
        }
432
 
        
433
 
        omtp = ObjMgrTypeFind(omp, the_type, NULL, NULL);
434
 
        if (omtp == NULL)
435
 
        {
436
 
                ErrPostEx(SEV_ERROR,0,0,"Can't locate type record for [%d]", (int)the_type);
 
468
  ssp = ObjMgrGetSelected();
 
469
  if (ssp == NULL)
 
470
        {
437
471
                return OM_MSG_RET_ERROR;
438
 
        }       
439
 
                
 
472
        }
 
473
        
 
474
        for (sel = ssp; sel != NULL; sel = sel->next)
 
475
        {
 
476
          for (vnp = entity_list;
 
477
               vnp != NULL && vnp->data.intvalue != sel->entityID;
 
478
               vnp = vnp->next)
 
479
          {}
 
480
          if (vnp == NULL)
 
481
          {
 
482
            ValNodeAddInt (&entity_list, 0, sel->entityID);
 
483
          }
 
484
        }
 
485
 
 
486
        ssd.omp = ObjMgrGet();
 
487
 
 
488
  /* get file name to use */    
440
489
        filename[0] = '\0';
441
490
        if (GetOutputFileName(filename, (size_t)254, NULL))
442
491
        {
449
498
                        FileCreate (filename, "TEXT", "ttxt");
450
499
                }
451
500
#endif
452
 
                aip = AsnIoOpen(filename, mode);
453
 
                (*(omtp->asnwrite))(the_data, aip, NULL);
454
 
                AsnIoClose(aip);
 
501
 
 
502
                ssd.aip = AsnIoOpen(filename, mode);
 
503
                ssd.ssp = ssp;
 
504
        
 
505
          for (vnp = entity_list; vnp != NULL; vnp = vnp->next)
 
506
          {
 
507
      GatherObjectsInEntity (vnp->data.intvalue, 0, NULL, SaveOneSelectedItem, (Pointer) &ssd, NULL);
 
508
          }
 
509
 
 
510
    ValNodeFree (entity_list);
 
511
                AsnIoClose(ssd.aip);
455
512
                ArrowCursor();
456
513
        }
457
514
        
458
515
        return OM_MSG_RET_DONE;
459
516
}
460
517
 
 
518
 
461
519
Int2 LIBCALLBACK VSMGenericTextAsnSave ( Pointer data )
462
520
{
463
521
        return VSMGenericAsnSave((OMProcControlPtr)data, "w");