Interface for the procedure disjoin_kernel
.
Disjoins overlapping segments and creates a new list of non-overlapping segments.
This subroutine takes a list of segments, disjoins any overlapping segments, and creates a new list of non-overlapping segments. It uses a priority queue to sort the segments and processes them to ensure they are disjoined.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(segment_t), | intent(inout), | allocatable | :: | list(:) |
Checks if a segment overlaps with any segments in a list.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(segment_t), | intent(in) | :: | seg | |||
type(segment_t), | intent(in) | :: | list(:) | |||
integer(kind=int32), | intent(in) | :: | len |
Checks if a segment is a prime segment within a disjoined list.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(segment_t), | intent(in) | :: | seg | |||
type(segment_t), | intent(in) | :: | disjoined_list(:) |
Disjoins overlapping segments and creates a new list of non-overlapping segments.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(segment_t), | intent(inout), | allocatable | :: | list(:) |
Extracts a sorted list of unique indices from a list of segments.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=int32), | intent(out), | allocatable | :: | index_list(:) | ||
type(segment_t), | intent(in) | :: | seg_list(:) |
Registers a new segment into a list if it is valid.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(segment_t), | intent(inout) | :: | new | |||
type(segment_t), | intent(inout) | :: | list(:) | |||
integer(kind=int32), | intent(inout) | :: | k |
This implementation is badly behaved and should be fixed as soon as possible. |