Esempio n. 1
0
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);
}
Esempio n. 2
0
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;
}
Esempio n. 3
0
/*------------------------------------------------------------------------------*/
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);
}