static char *mb_join_free(char *inp_file, char *str) { char *sub_str; int length; int i; i = 0; sub_str = NULL; if (str[i]) { if (!inp_file) { length = 0; sub_str = ft_strsub(str, i, ft_strlen(str) - i); inp_file = ft_strnew((ft_strlen(sub_str) + 1)); inp_file = ft_strcpy(inp_file, sub_str); while (inp_file[length]) length++; inp_file[length] = '\n'; ft_strdel(&sub_str); } else { inp_file = mb_realloc(inp_file, str, i); } } return (inp_file); }
static inline u32 rte_src_alloc_id(void) { int i, j; for (i = src_id_pos; i < src_id_size; i++) if (src_ids[i] != 0xffffffff) goto found; /* If we are at least 7/8 full, expand */ if (src_id_used > (src_id_size * 28)) { src_id_size *= 2; src_ids = mb_realloc(src_ids, src_id_size * sizeof(u32)); bzero(src_ids + i, (src_id_size - i) * sizeof(u32)); goto found; } for (i = 0; i < src_id_pos; i++) if (src_ids[i] != 0xffffffff) goto found; ASSERT(0); found: ASSERT(i < 0x8000000); src_id_pos = i; j = u32_cto(src_ids[i]); src_ids[i] |= (1 << j); src_id_used++; return 32 * i + j; }
/*------------------------------------------------------------------------------*/ int mbview_addvector(int verbose, size_t instance, int npoint, double *veclon, double *veclat, double *vecz, double *vecdata, int veccolor, int vecsize, mb_path vecname, double vecdatamin, double vecdatamax, int *error) { /* local variables */ char *function_name = "mbview_addvector"; int status = MB_SUCCESS; struct mbview_world_struct *view; struct mbview_struct *data; int ivec; int recalculate_minmax = MB_NO; int i, j; /* print starting debug statements */ if (verbose >= 2) { fprintf(stderr,"\ndbg2 MBIO function <%s> called\n", function_name); fprintf(stderr,"dbg2 MB-system Version %s\n",MB_VERSION); fprintf(stderr,"dbg2 Input arguments:\n"); fprintf(stderr,"dbg2 verbose: %d\n", verbose); fprintf(stderr,"dbg2 instance: %ld\n", instance); fprintf(stderr,"dbg2 npoint: %d\n", npoint); for (i=0;i<npoint;i++) { fprintf(stderr,"dbg2 point:%d lon:%f lat:%f z:%f data:%f\n", i, veclon[i], veclat[i], vecz[i], vecdata[i]); } fprintf(stderr,"dbg2 veccolor: %d\n", veccolor); fprintf(stderr,"dbg2 vecsize: %d\n", vecsize); fprintf(stderr,"dbg2 vecname: %s\n", vecname); fprintf(stderr,"dbg2 vecdatamin: %f\n", vecdatamin); fprintf(stderr,"dbg2 vecdatamax: %f\n", vecdatamax); } /* get view */ view = &(mbviews[instance]); data = &(view->data); /* make sure no vec is selected */ shared.shareddata.vector_selected = MBV_SELECT_NONE; shared.shareddata.vector_point_selected = MBV_SELECT_NONE; /* set vec id so that new vec is created */ ivec = shared.shareddata.nvector; /* allocate memory for a new vec if required */ if (shared.shareddata.nvector_alloc < shared.shareddata.nvector + 1) { shared.shareddata.nvector_alloc = shared.shareddata.nvector + 1; status = mb_realloc(mbv_verbose, shared.shareddata.nvector_alloc * sizeof(struct mbview_vector_struct), (void **)&(shared.shareddata.vectors), error); if (status == MB_FAILURE) { shared.shareddata.nvector_alloc = 0; } else { for (i=shared.shareddata.nvector;i<shared.shareddata.nvector_alloc;i++) { shared.shareddata.vectors[i].color = MBV_COLOR_RED; shared.shareddata.vectors[i].size = 4; shared.shareddata.vectors[i].name[0] = '\0'; shared.shareddata.vectors[i].npoints = 0; shared.shareddata.vectors[i].npoints_alloc = 0; shared.shareddata.vectors[i].nselected = 0; shared.shareddata.vectors[i].vectorpts = NULL; shared.shareddata.vectors[i].segments = NULL; } } } /* allocate memory to for vec arrays */ if (shared.shareddata.vectors[ivec].npoints_alloc < npoint) { shared.shareddata.vectors[ivec].npoints_alloc = npoint; status = mb_reallocd(mbv_verbose, __FILE__, __LINE__, shared.shareddata.vectors[ivec].npoints_alloc * sizeof(struct mbview_vectorpointw_struct), (void **)&(shared.shareddata.vectors[ivec].vectorpts), error); status = mb_reallocd(mbv_verbose, __FILE__, __LINE__, shared.shareddata.vectors[ivec].npoints_alloc * sizeof(struct mbview_linesegmentw_struct), (void **)&(shared.shareddata.vectors[ivec].segments), error); for (j=0;j<shared.shareddata.vectors[ivec].npoints_alloc-1;j++) { shared.shareddata.vectors[ivec].segments[j].nls = 0; shared.shareddata.vectors[ivec].segments[j].nls_alloc = 0; shared.shareddata.vectors[ivec].segments[j].lspoints = NULL; shared.shareddata.vectors[ivec].segments[j].endpoints[0] = shared.shareddata.vectors[ivec].vectorpts[j].point; shared.shareddata.vectors[ivec].segments[j].endpoints[1] = shared.shareddata.vectors[ivec].vectorpts[j+1].point; } } /* add the new vec */ if (status == MB_SUCCESS) { /* set nvector */ shared.shareddata.nvector++; /* set color size and name for new vec */ shared.shareddata.vectors[ivec].color = veccolor; shared.shareddata.vectors[ivec].size = vecsize; strcpy(shared.shareddata.vectors[ivec].name,vecname); shared.shareddata.vectors[ivec].datamin = vecdatamin; shared.shareddata.vectors[ivec].datamax = vecdatamax; if (vecdatamin == vecdatamax) recalculate_minmax = MB_YES; /* loop over the points in the new vec */ shared.shareddata.vectors[ivec].npoints = npoint; for (i=0;i<npoint;i++) { /* set status values */ shared.shareddata.vectors[ivec].vectorpts[i].selected = MB_NO; /* set data */ shared.shareddata.vectors[ivec].vectorpts[i].data = vecdata[i]; /* get min max of data if necessary */ if (recalculate_minmax == MB_YES) { if (i == 0) { shared.shareddata.vectors[ivec].datamin = vecdata[i]; shared.shareddata.vectors[ivec].datamax = vecdata[i]; } else { shared.shareddata.vectors[ivec].datamin = MIN(vecdata[i], shared.shareddata.vectors[ivec].datamin); shared.shareddata.vectors[ivec].datamax = MAX(vecdata[i], shared.shareddata.vectors[ivec].datamax); } } /* ************************************************* */ /* get vec positions in grid and display coordinates */ shared.shareddata.vectors[ivec].vectorpts[i].point.xlon = veclon[i]; shared.shareddata.vectors[ivec].vectorpts[i].point.ylat = veclat[i]; shared.shareddata.vectors[ivec].vectorpts[i].point.zdata = vecz[i]; status = mbview_projectfromlonlat(instance, shared.shareddata.vectors[ivec].vectorpts[i].point.xlon, shared.shareddata.vectors[ivec].vectorpts[i].point.ylat, shared.shareddata.vectors[ivec].vectorpts[i].point.zdata, &(shared.shareddata.vectors[ivec].vectorpts[i].point.xgrid[instance]), &(shared.shareddata.vectors[ivec].vectorpts[i].point.ygrid[instance]), &(shared.shareddata.vectors[ivec].vectorpts[i].point.xdisplay[instance]), &(shared.shareddata.vectors[ivec].vectorpts[i].point.ydisplay[instance]), &(shared.shareddata.vectors[ivec].vectorpts[i].point.zdisplay[instance])); mbview_updatepointw(instance, &(shared.shareddata.vectors[ivec].vectorpts[i].point)); /*fprintf(stderr,"Depth: llz:%f %f %f grid:%f %f dpy:%f %f %f\n", shared.shareddata.vectors[ivec].vectorpts[i].point.xlon, shared.shareddata.vectors[ivec].vectorpts[i].point.ylat, shared.shareddata.vectors[ivec].vectorpts[i].point.zdata, shared.shareddata.vectors[ivec].vectorpts[i].point.xgrid[instance], shared.shareddata.vectors[ivec].vectorpts[i].point.ygrid[instance], shared.shareddata.vectors[ivec].vectorpts[i].point.xdisplay[instance], shared.shareddata.vectors[ivec].vectorpts[i].point.ydisplay[instance], shared.shareddata.vectors[ivec].vectorpts[i].point.zdisplay[instance]);*/ /* ************************************************* */ } /* make vecs viewable */ data->vector_view_mode = MBV_VIEW_ON; /* some info to terminal */ fprintf(stderr,"Added %d point vector with data bounds: min:%f max:%f\n", shared.shareddata.vectors[ivec].npoints, shared.shareddata.vectors[ivec].datamin, shared.shareddata.vectors[ivec].datamax); } /* print vec debug statements */ if (mbv_verbose >= 2) { fprintf(stderr,"\ndbg2 vec data altered in function <%s>\n", function_name); fprintf(stderr,"dbg2 vec values:\n"); fprintf(stderr,"dbg2 vector_mode: %d\n",shared.shareddata.vector_mode); fprintf(stderr,"dbg2 vector_view_mode: %d\n",data->vector_view_mode); fprintf(stderr,"dbg2 nvector: %d\n",shared.shareddata.nvector); fprintf(stderr,"dbg2 nvector_alloc: %d\n",shared.shareddata.nvector_alloc); fprintf(stderr,"dbg2 vector_selected: %d\n",shared.shareddata.vector_selected); fprintf(stderr,"dbg2 vector_point_selected: %d\n",shared.shareddata.vector_point_selected); for (i=0;i<shared.shareddata.nvector;i++) { fprintf(stderr,"dbg2 vec %d color: %d\n",i,shared.shareddata.vectors[i].color); fprintf(stderr,"dbg2 vec %d size: %d\n",i,shared.shareddata.vectors[i].size); fprintf(stderr,"dbg2 vec %d name: %s\n",i,shared.shareddata.vectors[i].name); fprintf(stderr,"dbg2 vec %d npoints: %d\n",i,shared.shareddata.vectors[i].npoints); fprintf(stderr,"dbg2 vec %d npoints_alloc: %d\n",i,shared.shareddata.vectors[i].npoints_alloc); fprintf(stderr,"dbg2 vec %d nselected: %d\n",i,shared.shareddata.vectors[i].nselected); for (j=0;j<shared.shareddata.vectors[i].npoints;j++) { fprintf(stderr,"dbg2 vec %d %d selected: %d\n",i,j,shared.shareddata.vectors[i].vectorpts[j].selected); fprintf(stderr,"dbg2 vec %d %d data: %f\n",i,j,shared.shareddata.vectors[i].vectorpts[j].data); fprintf(stderr,"dbg2 vec %d %d xgrid: %f\n",i,j,shared.shareddata.vectors[i].vectorpts[j].point.xgrid[instance]); fprintf(stderr,"dbg2 vec %d %d ygrid: %f\n",i,j,shared.shareddata.vectors[i].vectorpts[j].point.ygrid[instance]); fprintf(stderr,"dbg2 vec %d %d xlon: %f\n",i,j,shared.shareddata.vectors[i].vectorpts[j].point.xlon); fprintf(stderr,"dbg2 vec %d %d ylat: %f\n",i,j,shared.shareddata.vectors[i].vectorpts[j].point.ylat); fprintf(stderr,"dbg2 vec %d %d zdata: %f\n",i,j,shared.shareddata.vectors[i].vectorpts[j].point.zdata); fprintf(stderr,"dbg2 vec %d %d xdisplay: %f\n",i,j,shared.shareddata.vectors[i].vectorpts[j].point.xdisplay[instance]); fprintf(stderr,"dbg2 vec %d %d ydisplay: %f\n",i,j,shared.shareddata.vectors[i].vectorpts[j].point.ydisplay[instance]); fprintf(stderr,"dbg2 vec %d %d zdisplay: %f\n",i,j,shared.shareddata.vectors[i].vectorpts[j].point.zdisplay[instance]); } for (j=0;j<shared.shareddata.vectors[i].npoints-1;j++) { fprintf(stderr,"dbg2 vec %d %d nls: %d\n",i,j,shared.shareddata.vectors[i].segments[j].nls); fprintf(stderr,"dbg2 vec %d %d nls_alloc: %d\n",i,j,shared.shareddata.vectors[i].segments[j].nls_alloc); fprintf(stderr,"dbg2 vec %d %d endpoints[0]: %lu\n",i,j,(size_t)&shared.shareddata.vectors[i].segments[j].endpoints[0]); fprintf(stderr,"dbg2 vec %d %d endpoints[1]: %lu\n",i,j,(size_t)&shared.shareddata.vectors[i].segments[j].endpoints[1]); } } } /* print output debug statements */ if (verbose >= 2) { fprintf(stderr,"\ndbg2 MBIO function <%s> completed\n", function_name); fprintf(stderr,"dbg2 Return values:\n"); fprintf(stderr,"dbg2 error: %d\n",*error); fprintf(stderr,"dbg2 Return status:\n"); fprintf(stderr,"dbg2 status: %d\n",status); } /* return */ return(status); }