static GhtErr l2g_build_schema(const Las2GhtConfig *config, Las2GhtState *state) { int i = 0; GhtSchemaPtr schema; GhtDimensionPtr dim; GHT_TRY(ght_schema_new(&schema)); /* Add 'X' dimension (position 0) */ GHT_TRY(ght_dimension_new_from_parameters("X", "", GHT_DOUBLE, 1.0, 0.0, &dim)); GHT_TRY(ght_schema_add_dimension(schema, dim)); /* Add 'Y' dimension (position 1) */ GHT_TRY(ght_dimension_new_from_parameters("Y", "", GHT_DOUBLE, 1.0, 0.0, &dim)); GHT_TRY(ght_schema_add_dimension(schema, dim)); /* Add 'Z' dimension (position 2) */ GHT_TRY(ght_dimension_new_from_parameters("Z", "", GHT_DOUBLE, 1.0, 0.0, &dim)); GHT_TRY(ght_schema_add_dimension(schema, dim)); /* Add optional attributes (positions 3+) */ for ( i = 0; i < config->num_attrs; i++ ) { LasDimension ld = LasAttributes[config->attrs[i]]; GHT_TRY(ght_dimension_new_from_parameters(ld.name, "", ld.type, ld.scale, ld.offset, &dim)); GHT_TRY(ght_schema_add_dimension(schema, dim)); } state->schema = schema; return GHT_OK; }
static GhtSchemaPtr ght_schema_from_pc_schema(const PCSCHEMA *pcschema) { int i; GhtSchemaPtr schema; ght_schema_new(&schema); for ( i = 0; i < pcschema->ndims; i++ ) { GhtDimensionPtr dim = ght_dimension_from_pc_dimension(pcschema->dims[i]); ght_schema_add_dimension(schema, dim); } return schema; }