IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 10931


Ignore:
Timestamp:
Jan 5, 2007, 10:48:44 AM (19 years ago)
Author:
eugene
Message:

added SkyListMerge

Location:
trunk/Ohana/src/libdvo
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Ohana/src/libdvo/include/dvo.h

    r8650 r10931  
    370370SkyList   *SkyListByBounds         PROTO((SkyTable *table, int depth, double Rmin, double Rmax, double Dmin, double Dmax));
    371371SkyList   *SkyListChildrenByBounds PROTO((SkyTable *table, int No, int depth, double Rmin, double Rmax, double Dmin, double Dmax));
     372int        SkyListMerge            PROTO((SkyList **outlist, SkyList *newlist));
    372373int        SkyListFree             PROTO((SkyList *list, int ELEMENTS));
    373374int        SkyTableFree            PROTO((SkyTable *table));
  • trunk/Ohana/src/libdvo/src/skyregion_ops.c

    r8328 r10931  
    364364  table = NULL;
    365365  return (TRUE);
     366}
     367
     368int SkyListMerge (SkyList **outlist, SkyList *newlist) {
     369
     370    int i, j, skip, Nlist, Ntotal;
     371    SkyList *list;
     372   
     373    if (*outlist == NULL) {
     374        ALLOCATE (list, SkyList, 1);
     375        ALLOCATE (list[0].regions, SkyRegion *, 1);
     376        ALLOCATE (list[0].filename, char *, 1);
     377        list[0].Nregions = 0;
     378        *outlist = list;
     379    } else {
     380        list = *outlist;
     381    }
     382
     383    Ntotal = list[0].Nregions + newlist[0].Nregions;
     384    REALLOCATE (list[0].regions, SkyRegion *, Ntotal);
     385    REALLOCATE (list[0].filename, char *, Ntotal);
     386
     387    Nlist = list[0].Nregions;
     388    for (i = 0; i < newlist[0].Nregions; i++) {
     389        /* check existing list to see if we already have this region */
     390        skip = FALSE;
     391        for (j = 0; j < list[0].Nregions; j++) {
     392            if (list[0].regions[j] == newlist[0].regions[i]) skip = TRUE;
     393        }
     394        if (skip) continue;
     395        list[0].regions[Nlist] = newlist[0].regions[i];
     396        list[0].filename[Nlist] = newlist[0].filename[i];
     397        Nlist++;
     398    }
     399    list[0].Nregions = Nlist;
     400    REALLOCATE (list[0].regions, SkyRegion *, Nlist);
     401    REALLOCATE (list[0].filename, char *, Nlist);
     402
     403    return (TRUE);
    366404}
    367405
Note: See TracChangeset for help on using the changeset viewer.