| summaryrefslogtreecommitdiff |
diff options
Diffstat (limited to 'src/sequence/sequence.c')
| -rw-r--r-- | src/sequence/sequence.c | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/src/sequence/sequence.c b/src/sequence/sequence.c new file mode 100644 index 0000000..c9c30f1 --- /dev/null +++ b/src/sequence/sequence.c @@ -0,0 +1,50 @@ +#include <stdlib.h> +#include <string.h> + +#include "../core/index.h" + +#include "sequence.h" + +/* See "sequence.h" */ +/*@ + requires + ( + \valid(sequence_a+ (0 .. sequence_a_length)) + || (sequence_a_length == 0) + ); + + requires + ( + \valid(sequence_b+ (0 .. sequence_b_length)) + || (sequence_b_length == 0) + ); + + assigns \result; +@*/ +int JH_sequence_cmp +( + const JH_index sequence_a [const restrict static 1], + const JH_index sequence_b [const restrict static 1], + const JH_index length +) +{ + JH_index i, a, b; + + for (i = 0; i < length; ++i) + { + a = sequence_a[i]; + b = sequence_b[i]; + + if (a < b) + { + return -1; + } + else if (a > b) + { + return 1; + } + } + + return 0; +} + |


