I32 add_extra_attribute(const LASattribute extra_attribute) { if (extra_attribute.get_size()) { if (extra_attributes) { number_extra_attributes++; extra_attributes = (LASattribute*)realloc(extra_attributes, sizeof(LASattribute)*number_extra_attributes); extra_attribute_array_offsets = (I32*)realloc(extra_attribute_array_offsets, sizeof(I32)*number_extra_attributes); extra_attribute_sizes = (I32*)realloc(extra_attribute_sizes, sizeof(I32)*number_extra_attributes); extra_attributes[number_extra_attributes-1] = extra_attribute; extra_attribute_array_offsets[number_extra_attributes-1] = extra_attribute_array_offsets[number_extra_attributes-2] + extra_attribute_sizes[number_extra_attributes-2]; extra_attribute_sizes[number_extra_attributes-1] = extra_attributes[number_extra_attributes-1].get_size(); } else { number_extra_attributes = 1; extra_attributes = (LASattribute*)malloc(sizeof(LASattribute)); extra_attribute_array_offsets = (I32*)malloc(sizeof(I32)); extra_attribute_sizes = (I32*)malloc(sizeof(I32)); extra_attributes[0] = extra_attribute; extra_attribute_array_offsets[0] = 0; extra_attribute_sizes[0] = extra_attributes[0].get_size(); } return number_extra_attributes-1; } return -1; };
I32 add_attribute(const LASattribute attribute) { if (attribute.get_size()) { if (attributes) { number_attributes++; attributes = (LASattribute*)realloc(attributes, sizeof(LASattribute)*number_attributes); if (attributes == 0) { return -1; } attribute_starts = (I32*)realloc(attribute_starts, sizeof(I32)*number_attributes); if (attribute_starts == 0) { return -1; } attribute_sizes = (I32*)realloc(attribute_sizes, sizeof(I32)*number_attributes); if (attribute_sizes == 0) { return -1; } attributes[number_attributes-1] = attribute; attribute_starts[number_attributes-1] = attribute_starts[number_attributes-2] + attribute_sizes[number_attributes-2]; attribute_sizes[number_attributes-1] = attributes[number_attributes-1].get_size(); } else { number_attributes = 1; attributes = (LASattribute*)malloc(sizeof(LASattribute)); if (attributes == 0) { return -1; } attribute_starts = (I32*)malloc(sizeof(I32)); if (attribute_starts == 0) { return -1; } attribute_sizes = (I32*)malloc(sizeof(I32)); if (attribute_sizes == 0) { return -1; } attributes[0] = attribute; attribute_starts[0] = 0; attribute_sizes[0] = attributes[0].get_size(); } return number_attributes-1; } return -1; };