[Groonga-commit] groonga/groonga [master] [geometry] export degree <-> msec conversion macro.

Back to archive index

null+****@clear***** null+****@clear*****
2011年 9月 12日 (月) 17:36:44 JST


Kouhei Sutou	2011-09-12 08:36:44 +0000 (Mon, 12 Sep 2011)

  New Revision: a511abccb7eda20c103ecc86c78dcd5d9477fef9

  Log:
    [geometry] export degree <-> msec conversion macro.

  Modified files:
    include/groonga.h
    lib/db.c

  Modified: include/groonga.h (+8 -0)
===================================================================
--- include/groonga.h    2011-09-12 00:39:07 +0000 (1c4146a)
+++ include/groonga.h    2011-09-12 08:36:44 +0000 (7e4356c)
@@ -2064,6 +2064,14 @@ GRN_API grn_rc grn_text_otoj(grn_ctx *ctx, grn_obj *bulk, grn_obj *obj,
   grn_bulk_write_from((ctx), (obj), (char *)&_val, 0, sizeof(grn_obj *));\
 } while (0)
 
+#define GRN_GEO_DEGREE_ACCURACY 10000000
+#define GRN_GEO_DEGREE2MSEC(degree)\
+  ((int)(((int)(degree) * 60 * 60 * 1000) +\
+         (((long)((degree) * GRN_GEO_DEGREE_ACCURACY) % GRN_GEO_DEGREE_ACCURACY) * 60 / GRN_GEO_DEGREE_ACCURACY * 60 * 1000) +\
+         (((long)((degree) * GRN_GEO_DEGREE_ACCURACY) % GRN_GEO_DEGREE_ACCURACY) * 60 % GRN_GEO_DEGREE_ACCURACY * 60 / 10000)))
+#define GRN_GEO_MSEC2DEGREE(msec)\
+  ((((int)(msec)) / 3600.0) * 0.001)
+
 typedef struct {
   int latitude;
   int longitude;

  Modified: lib/db.c (+2 -9)
===================================================================
--- lib/db.c    2011-09-12 00:39:07 +0000 (26a0446)
+++ lib/db.c    2011-09-12 08:36:44 +0000 (1531670)
@@ -4106,13 +4106,6 @@ grn_obj_is_persistent(grn_ctx *ctx, grn_obj *obj)
 #define FLOAT2TIME(ctx, dest, value)\
   GRN_TIME_SET(ctx, dest, (long long int)(value * GRN_TIME_USEC_PER_SEC));
 
-#define DEGREE_ACCURACY 10000000
-
-#define DEGREE2MSEC(degree)\
-  ((int)(((int)degree * 60 * 60 * 1000) +\
-         (((long)(degree * DEGREE_ACCURACY) % DEGREE_ACCURACY) * 60 / DEGREE_ACCURACY * 60 * 1000) +\
-         (((long)(degree * DEGREE_ACCURACY) % DEGREE_ACCURACY) * 60 % DEGREE_ACCURACY * 60 / 10000)))
-
 grn_rc
 grn_obj_cast(grn_ctx *ctx, grn_obj *src, grn_obj *dest, int addp)
 {
@@ -4249,7 +4242,7 @@ grn_obj_cast(grn_ctx *ctx, grn_obj *src, grn_obj *dest, int addp)
           if (errno) {
             rc = GRN_INVALID_ARGUMENT;
           } else {
-            latitude = DEGREE2MSEC(degree);
+            latitude = GRN_GEO_DEGREE2MSEC(degree);
             cur = str + (end - GRN_TEXT_VALUE(buf_p));
           }
         }
@@ -4268,7 +4261,7 @@ grn_obj_cast(grn_ctx *ctx, grn_obj *src, grn_obj *dest, int addp)
             if (errno) {
               rc = GRN_INVALID_ARGUMENT;
             } else {
-              longitude = DEGREE2MSEC(degree);
+              longitude = GRN_GEO_DEGREE2MSEC(degree);
               cur = str + (end - GRN_TEXT_VALUE(buf_p));
             }
           }




Groonga-commit メーリングリストの案内
Back to archive index