diff options
Diffstat (limited to 'common.c')
-rwxr-xr-x | common.c | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/common.c b/common.c new file mode 100755 index 0000000..1eb896f --- /dev/null +++ b/common.c @@ -0,0 +1,63 @@ +
+#include "common.h"
+
+t_duration int2duration(int n)
+{
+ t_duration dur;
+ int curr, i, j, ok;
+ curr=0;
+ ok=0;
+ for (i=0; i<num_possible_denominators; i++)
+ {
+ for (j=0; j<i; j++)
+ {
+ if (curr==n)
+ {
+ dur.numerator=j;
+ dur.denominator=i;
+ j=i;
+ i=num_possible_denominators;
+ ok=1;
+ } else
+ curr++;
+ }
+ }
+ if (ok)
+ return dur;
+ else
+ {
+ dur.numerator=1;
+ dur.denominator=1;
+ return dur;
+ }
+}
+
+unsigned short int duration2int(t_duration dur)
+{
+ unsigned short int curr, i, j;
+ curr=0;
+ for (i=0; i<num_possible_denominators; i++)
+ {
+ for (j=0; j<i; j++)
+ {
+ if ((dur.numerator==j) && (dur.denominator==i))
+ {
+ return curr;
+ } else
+ curr++;
+ }
+ }
+ return curr+1;
+}
+
+int possible_durations()
+{
+ int ris, i;
+ ris = 0;
+ for (i=0; i<num_possible_denominators; i++)
+ {
+ ris += possible_denominators[i]-1;
+ }
+ ris += 1;
+ return ris;
+}
\ No newline at end of file |