Skip to content

Commit

Permalink
use standard ints for longs instead of strings or floats
Browse files Browse the repository at this point in the history
  • Loading branch information
wjackson committed Apr 8, 2012
1 parent 06dff45 commit ebd7d3f
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 16 deletions.
12 changes: 3 additions & 9 deletions kparse.c
Expand Up @@ -5,9 +5,6 @@
#include "kparse.h"
#include <string.h>

#define K_EPOCH_OFFSET 946684800000000000.0
#define NANOS_PER_SECOND 1000000000.0

SV* sv_from_k(K k) {
SV* result;
if (k->t < 0) {
Expand Down Expand Up @@ -305,7 +302,7 @@ SV* timestamp_from_k(K k) {
return newSVpvn("-inf", 4);
}

return newSVnv( (k->j + K_EPOCH_OFFSET) / NANOS_PER_SECOND);
return newSViv(k->j);
}

SV* long_from_k(K k) {
Expand Down Expand Up @@ -441,8 +438,6 @@ SV* int_vector_from_k(K k) {
}

SV* long_vector_from_k(K k) {
char buffer[33];

AV *av = newAV();
int i = 0;

Expand All @@ -462,8 +457,7 @@ SV* long_vector_from_k(K k) {
continue;
}

snprintf(buffer, 33, "%Ld", kJ(k)[i]);
av_push(av, newSVpv(buffer, 0) );
av_push(av, newSViv(kJ(k)[i]) );
}

return (SV*)av;
Expand All @@ -489,7 +483,7 @@ SV* timestamp_vector_from_k(K k) {
continue;
}

av_push(av, newSVnv( (kJ(k)[i] + K_EPOCH_OFFSET) / NANOS_PER_SECOND));
av_push(av, newSViv(kJ(k)[i]) );
}

return (SV*)av;
Expand Down
4 changes: 2 additions & 2 deletions t/k.t
Expand Up @@ -15,8 +15,8 @@ test_qserver {
is_deeply $k->cmd(q/"abc"/), [qw/a b c/], 'make char vector';

is $k->cmd(q/2012.03.24D12:13:14.15161728/),
'1332591194.15162',
'timestamp';
385906394151617280,
'timestamp';
};

END { done_testing; }
10 changes: 5 additions & 5 deletions t/raw.t
Expand Up @@ -52,17 +52,17 @@ sub scalar_tests {
is k($handle, '`float$13.7'), 13.7, 'parse float';
is k($handle, '`foo'), 'foo', 'parse symbol';

is k($handle, '2012.03.24D23:25:13.123456789'),
'1332631513.12346', 'parse timestamp';
is k($handle, '2012.03.24D23:25:13.12345678912345'),
385946713123456789, 'parse timestamp';

is k($handle, '385946713123000000j'),
'385946713123000000', 'parse long';
385946713123000000, 'parse long';

is k($handle, '`month$3'), 3, 'parse month';
is k($handle, '2012.03.24'), 4466, 'parse date';

is k($handle, '17D12:13:14.000001234'),
'1512794000001234', 'parse timespan';
1512794000001234, 'parse timespan';

is k($handle, '`minute$4'), 4, 'parse minute';
is k($handle, '`second$5'), 5, 'parse second';
Expand Down Expand Up @@ -182,7 +182,7 @@ sub vector_tests {

is_deeply
k($handle, 'enlist 2012.03.24D23:25:13.123456789'),
[ qw(1332631513.12346)],
[ 385946713123456789 ],
'parse timestamp vector';
}

Expand Down

0 comments on commit ebd7d3f

Please sign in to comment.