Пример #1
0
/*!
  \brief ASCII northing to double.
  
  Converts the ASCII "northing" coordinate string in <i>buf</i> to its 
  double representation (into <i>northing</i>).

  Supported projection codes (see gis.h):
   - PROJECTION_XY
   - PROJECTION_UTM
   - PROJECTION_LL
   - PROJECTION_OTHER

  \param buf buffer hold string northing
  \param[out] northing northing
  \param projection projection code
  
  \return 0 on error
  \return 1 on success
*/
int G_scan_northing(const char *buf, double *northing, int projection)
{
    if (projection == PROJECTION_LL) {
	if (G_lat_scan(buf, northing))
	    return 1;
	if (!scan_double(buf, northing))
	    return 0;

	return (*northing <= 90.0 && *northing >= -90.0);
    }

    return scan_double(buf, northing);
}
Пример #2
0
/*!
  \brief ASCII easting to double.
  
  Converts the ASCII "easting" coordinate string in <i>buf</i> to its 
  double representation (into <i>easting</i>).

  Supported projection codes (see gis.h):
   - PROJECTION_XY
   - PROJECTION_UTM
   - PROJECTION_LL
   - PROJECTION_OTHER
  
  \param buf buffer containing string easting
  \param[out] easting easting
  \param projection projection code
  
  \return 0 on error
  \return 1 on success
*/
int G_scan_easting(const char *buf, double *easting, int projection)
{
    if (projection == PROJECTION_LL) {
	if (G_lon_scan(buf, easting))
	    return 1;
	if (!scan_double(buf, easting))
	    return 0;
	while (*easting > 180.0)
	    *easting -= 360.0;
	while (*easting < -180.0)
	    *easting += 360.0;

	return 1;
    }

    return scan_double(buf, easting);
}
Пример #3
0
/*!
  \brief ASCII resolution to double.
  
  Converts the ASCII "resolution" string in <i>buf</i> to its double 
  representation (into resolution).

  Supported projection codes (see gis.h):
   - PROJECTION_XY
   - PROJECTION_UTM
   - PROJECTION_LL
   - PROJECTION_OTHER
  
  \param buf buffer containing string resolution
  \param[out] resolution resolution value
  \param projection projection code
  
  \return 0 on error
  \return 1 on success
*/
int G_scan_resolution(const char *buf, double *res, int projection)
{
    if (projection == PROJECTION_LL) {
	if (G_llres_scan(buf, res))
	    return 1;
    }

    return (scan_double(buf, res) && *res > 0.0);
}
Пример #4
0
void Parser::scan_value(void) {
    int c = read_byte();
    switch (c) {
    case trace::TYPE_NULL:
    case trace::TYPE_FALSE:
    case trace::TYPE_TRUE:
        break;
    case trace::TYPE_SINT:
        scan_sint();
        break;
    case trace::TYPE_UINT:
        scan_uint();
        break;
    case trace::TYPE_FLOAT:
        scan_float();
        break;
    case trace::TYPE_DOUBLE:
        scan_double();
        break;
    case trace::TYPE_STRING:
        scan_string();
        break;
    case trace::TYPE_ENUM:
        scan_enum();
        break;
    case trace::TYPE_BITMASK:
        scan_bitmask();
        break;
    case trace::TYPE_ARRAY:
        scan_array();
        break;
    case trace::TYPE_STRUCT:
        scan_struct();
        break;
    case trace::TYPE_BLOB:
        scan_blob();
        break;
    case trace::TYPE_OPAQUE:
        scan_opaque();
        break;
    case trace::TYPE_REPR:
        scan_repr();
        break;
    case trace::TYPE_WSTRING:
        scan_wstring();
        break;
    default:
        std::cerr << "error: unknown type " << c << "\n";
        exit(1);
    case -1:
        break;
    }
}
Пример #5
0
void fscan_recipy(FILE *fp, struct vs_recipy *vs)
{
	char lb[RECIPY_TEXT + RECSYM_SIZE + 1];
	int ret;
	char *r, *val;

	if (fp == NULL)
		return;

	init_vs_recipy(vs);

	while ((r = fgets(lb, RECIPY_TEXT+16, fp)) != NULL) {
		ret = sym_lookup (lb, res_syms, &val);
		if (ret == -2) // commment, skip
			continue;
		if (ret == -1) {
			info_printf("fscan recipy: bad line: %s\n", lb);
			continue;
		}
		switch (ret) {
		case 1:
			scan_string(vs->objname, val, RECIPY_TEXT);
			break;
		case 2:
			scan_string(vs->chart, val, RECIPY_TEXT);
			break;
		case 3:
			scan_string(vs->frame, val, RECIPY_TEXT);
			break;
		case 4:
			scan_double(&(vs->p.r1), val);
			break;
		case 5:
			scan_double(&(vs->p.r2), val);
			break;
		case 6:
			scan_double(&(vs->p.r3), val);
			break;
		case 7:
			scan_int(&(vs->p.quads), val);
			break;
		case 8:
			scan_int(&(vs->p.sky_method), val);
			break;
		case 9:
			scan_double(&(vs->p.sigmas), val);
			break;
		case 10:
			scan_int(&(vs->p.max_iter), val);
			break;
		case 11:
			scan_int(&(vs->usewcs), val);
			break;
		case 12:
			scan_ra(&(vs->ra), val);
			break;
		case 13:
			scan_dec(&(vs->dec), val);
			break;
		case 14:
			ret = radd_std_star(vs, val);
			break;
		case 15:
			ret = radd_pgm_star(vs, val);
			break;
		case 16:
			scan_double(&(vs->p.sat_limit), val);
			break;
		case 17:
			scan_string(vs->repstar, val, RECIPY_TEXT);
			break;
		case 18:
			scan_string(vs->repinfo, val, RECIPY_TEXT);
			break;
		case 19:
			scan_double(&(vs->scint_factor), val);
			break;
		case 20:
			scan_double(&(vs->aperture), val);
			break;
		case 21:
			scan_double(&(vs->airmass), val);
			break;
		};
	}
}