rroonga 2.0.4 → 2.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. data/Rakefile +21 -2
  2. data/bin/grndump +3 -2
  3. data/ext/groonga/extconf.rb +1 -6
  4. data/ext/groonga/rb-grn-array.c +58 -31
  5. data/ext/groonga/rb-grn-column.c +220 -148
  6. data/ext/groonga/rb-grn-context.c +46 -32
  7. data/ext/groonga/rb-grn-database.c +102 -90
  8. data/ext/groonga/rb-grn-double-array-trie.c +205 -163
  9. data/ext/groonga/rb-grn-encoding-support.c +2 -3
  10. data/ext/groonga/rb-grn-encoding.c +13 -8
  11. data/ext/groonga/rb-grn-exception.c +1 -1
  12. data/ext/groonga/rb-grn-expression.c +110 -133
  13. data/ext/groonga/rb-grn-fix-size-column.c +5 -4
  14. data/ext/groonga/rb-grn-geo-point.c +55 -0
  15. data/ext/groonga/rb-grn-hash.c +120 -82
  16. data/ext/groonga/rb-grn-index-column.c +66 -70
  17. data/ext/groonga/rb-grn-index-cursor.c +3 -0
  18. data/ext/groonga/rb-grn-logger.c +33 -51
  19. data/ext/groonga/rb-grn-object.c +2 -0
  20. data/ext/groonga/rb-grn-operator.c +1 -1
  21. data/ext/groonga/rb-grn-patricia-trie.c +287 -232
  22. data/ext/groonga/rb-grn-plugin.c +11 -14
  23. data/ext/groonga/rb-grn-snippet.c +37 -54
  24. data/ext/groonga/rb-grn-table-cursor-key-support.c +3 -3
  25. data/ext/groonga/rb-grn-table-cursor.c +8 -6
  26. data/ext/groonga/rb-grn-table-key-support.c +22 -29
  27. data/ext/groonga/rb-grn-table.c +355 -279
  28. data/ext/groonga/rb-grn-type.c +18 -25
  29. data/ext/groonga/rb-grn-utils.c +77 -7
  30. data/ext/groonga/rb-grn-variable-size-column.c +12 -20
  31. data/ext/groonga/rb-grn-view.c +56 -51
  32. data/ext/groonga/rb-grn.h +28 -1
  33. data/ext/groonga/rb-groonga.c +1 -0
  34. data/lib/groonga.rb +2 -0
  35. data/lib/groonga/command.rb +3 -1
  36. data/lib/groonga/database.rb +27 -0
  37. data/lib/groonga/dumper.rb +96 -17
  38. data/lib/groonga/geo-point.rb +216 -0
  39. data/lib/groonga/schema.rb +29 -46
  40. data/rroonga-build.rb +1 -1
  41. data/rroonga.gemspec +90 -0
  42. data/test/groonga-test-utils.rb +168 -0
  43. data/test/run-test.rb +60 -0
  44. data/test/test-accessor.rb +36 -0
  45. data/test/test-array.rb +146 -0
  46. data/test/test-column.rb +350 -0
  47. data/test/test-command-select.rb +181 -0
  48. data/test/test-context.rb +130 -0
  49. data/test/test-database-dumper.rb +259 -0
  50. data/test/test-database.rb +173 -0
  51. data/test/test-double-array-trie.rb +189 -0
  52. data/test/test-encoding.rb +33 -0
  53. data/test/test-exception.rb +230 -0
  54. data/test/test-expression-builder.rb +602 -0
  55. data/test/test-expression.rb +134 -0
  56. data/test/test-fix-size-column.rb +77 -0
  57. data/test/test-geo-point.rb +190 -0
  58. data/test/test-gqtp.rb +70 -0
  59. data/test/test-hash.rb +367 -0
  60. data/test/test-index-column.rb +180 -0
  61. data/test/test-index-cursor.rb +123 -0
  62. data/test/test-logger.rb +37 -0
  63. data/test/test-pagination.rb +249 -0
  64. data/test/test-patricia-trie.rb +440 -0
  65. data/test/test-plugin.rb +35 -0
  66. data/test/test-procedure.rb +37 -0
  67. data/test/test-query-log.rb +258 -0
  68. data/test/test-record.rb +577 -0
  69. data/test/test-remote.rb +63 -0
  70. data/test/test-schema-create-table.rb +267 -0
  71. data/test/test-schema-dumper.rb +235 -0
  72. data/test/test-schema-type.rb +208 -0
  73. data/test/test-schema-view.rb +90 -0
  74. data/test/test-schema.rb +886 -0
  75. data/test/test-snippet.rb +130 -0
  76. data/test/test-table-dumper.rb +353 -0
  77. data/test/test-table-offset-and-limit.rb +100 -0
  78. data/test/test-table-select-mecab.rb +80 -0
  79. data/test/test-table-select-normalize.rb +57 -0
  80. data/test/test-table-select-weight.rb +123 -0
  81. data/test/test-table-select.rb +191 -0
  82. data/test/test-table-traverse.rb +304 -0
  83. data/test/test-table.rb +711 -0
  84. data/test/test-type.rb +79 -0
  85. data/test/test-variable-size-column.rb +147 -0
  86. data/test/test-variable.rb +28 -0
  87. data/test/test-vector-column.rb +76 -0
  88. data/test/test-version.rb +61 -0
  89. data/test/test-view.rb +72 -0
  90. metadata +330 -202
@@ -30,10 +30,9 @@ VALUE rb_mGrnEncodingSupport;
30
30
  */
31
31
 
32
32
  /*
33
- * call-seq:
34
- * object.encoding -> エンコーディング
35
- *
36
33
  * オブジェクトのエンコーディングを返す。
34
+ * @overload encoding
35
+ * @return [Groonga::Encoding] オブジェクトのエンコーディング
37
36
  */
38
37
  static VALUE
39
38
  rb_grn_encoding_support_get_encoding (VALUE self)
@@ -183,13 +183,19 @@ rb_grn_encoding_to_ruby_encoding (grn_encoding encoding)
183
183
 
184
184
  return rb_encoding;
185
185
  }
186
+
187
+ VALUE
188
+ rb_grn_encoding_to_ruby_encoding_object (grn_encoding encoding)
189
+ {
190
+ rb_encoding *rb_encoding = rb_grn_encoding_to_ruby_encoding(encoding);
191
+ return rb_enc_from_encoding(rb_encoding);
192
+ }
186
193
  #endif
187
194
 
188
195
  /*
189
- * call-seq:
190
- * Groonga::Encoding.default -> エンコーディング
191
- *
192
196
  * デフォルトのエンコーディングを返す。
197
+ * @overload default
198
+ * @return [Groonga::Encoding] デフォルトのエンコーディング
193
199
  */
194
200
  static VALUE
195
201
  rb_grn_encoding_s_get_default (VALUE self)
@@ -198,11 +204,10 @@ rb_grn_encoding_s_get_default (VALUE self)
198
204
  }
199
205
 
200
206
  /*
201
- * call-seq:
202
- * Groonga::Encoding.default(encoding)
203
- *
204
- * デフォルトのエンコーディングを設定する。エンコーディング
205
- * の指定方法はGroonga::Encodingを参照。
207
+ * デフォルトのエンコーディングを設定する。
208
+ * @overload default=(encoding)
209
+ * @param [Groonga::Encoding] encoding 指定するエンコーディング。
210
+ * エンコーディングの指定方法はGroonga::Encodingを参照。
206
211
  */
207
212
  static VALUE
208
213
  rb_grn_encoding_s_set_default (VALUE self, VALUE rb_encoding)
@@ -605,7 +605,7 @@ rb_grn_init_exception (VALUE mGrn)
605
605
  * groongaレベルでは破棄されているが、Rubyレベルでは生き
606
606
  * ているオブジェクトにアクセスすると発生する。
607
607
  *
608
- * @deprecated since 1.2.3. Use Groonga::Closed instead.
608
+ * @deprecated Use {Closed} instead since 1.2.3.
609
609
  */
610
610
  rb_define_const(mGrn, "ObjectClosed", rb_eGrnClosed);
611
611
 
@@ -107,20 +107,17 @@ rb_grn_expression_initialize (int argc, VALUE *argv, VALUE self)
107
107
  }
108
108
 
109
109
  /*
110
- * call-seq:
111
- * expression.define_variable(options={}) -> Groonga::Variable
112
- *
113
110
  * _expression_ で使用可能な変数を作成する。
114
111
  *
115
- * _options_ に指定可能な値は以下の通り。
116
- * @param options [::Hash] The name and value
117
- * pairs. Omitted names are initialized as the default value.
118
- * @option options :name (false)
119
- *
120
- * 変数の名前。省略した場合は名前を付けない。
121
- * @option options :domain
112
+ * @overload define_variable(options={})
113
+ * @param [::Hash] options The name and value
114
+ * pairs. Omitted names are initialized as the default value.
115
+ * @option options :name (false)
116
+ * 変数の名前。省略した場合は名前を付けない。
117
+ * @option options :domain
118
+ * テーブルを指定すると、そのテーブル用のレコードとして初期化する。
119
+ * @return [Groonga::Variable]
122
120
  *
123
- * テーブルを指定すると、そのテーブル用のレコードとして初期化する。
124
121
  */
125
122
  static VALUE
126
123
  rb_grn_expression_define_variable (int argc, VALUE *argv, VALUE self)
@@ -160,12 +157,14 @@ rb_grn_expression_define_variable (int argc, VALUE *argv, VALUE self)
160
157
  }
161
158
 
162
159
  /*
163
- * call-seq:
164
- * expression.append_object(object,
165
- * operation=Groonga::Operator::PUSH,
166
- * n_arguments=1) -> self
167
- *
168
160
  * _object_ を追加し、 _n_arguments_ 個の引数を取る _operation_ を追加する。
161
+ *
162
+ * @overload append_object(object, operation=Groonga::Operator::PUSH, n_arguments=1)
163
+ * @param [Object] object 追加するオブジェクト
164
+ * @param [Groonga::Operator::XXX] operation 追加する _operation_
165
+ * @param [Integer] n_arguments _operation_ の取る引数
166
+ * @return [Self] self
167
+ *
169
168
  */
170
169
  static VALUE
171
170
  rb_grn_expression_append_object (int argc, VALUE *argv, VALUE self)
@@ -196,12 +195,13 @@ rb_grn_expression_append_object (int argc, VALUE *argv, VALUE self)
196
195
  }
197
196
 
198
197
  /*
199
- * call-seq:
200
- * expression.append_constant(constant,
201
- * operation=Groonga::Operator::PUSH,
202
- * n_arguments=1) -> self
203
- *
204
198
  * _constant_ を追加し、 _n_arguments_ 個の引数を取る _operation_ を追加する。
199
+ *
200
+ * @overload append_constant(constant, operation=Groonga::Operator::PUSH, n_arguments=1)
201
+ * @param [Object] constant 追加する _constant_
202
+ * @param [Groonga::Operator::XXX] operation 追加する _operation_
203
+ * @param [Integer] n_arguments _operation_ の取る引数
204
+ * @return [Self] self
205
205
  */
206
206
  static VALUE
207
207
  rb_grn_expression_append_constant (int argc, VALUE *argv, VALUE self)
@@ -261,87 +261,71 @@ rb_grn_expression_append_operation (VALUE self, VALUE rb_operation,
261
261
  }
262
262
 
263
263
  /*
264
- * call-seq:
265
- * expression.parse(query, options={})
266
- *
267
264
  * 文字列 _query_ をパースする。
268
- *
269
- * _options_ に指定可能な値は以下の通り。
270
- * @param options [::Hash] The name and value
271
- * pairs. Omitted names are initialized as the default value.
272
- * @option options :default_column The default_column
273
- *
274
- * "column_name:hoge"ではなく"hoge"のようにcolumn_nameが指
275
- * 定されない条件の検索対象となるカラムを指定する。
276
- * @option options :default_operator (Groonga::Operator::AND)
277
- *
278
- * The default_operator
279
- * "+"や"OR"で繋がれず、ただ列挙された複数の条件があった時、
280
- * _expression_ 全体として各レコードをヒットとみなすかの論理
281
- * 条件を指定する。省略した場合はGroonga::Operator::AND。
282
- * [Groonga::Operator::OR]
283
- * レコードはいずれかの条件にマッチすればいい。
284
- * [Groonga::Operator::AND]
285
- * レコードは全ての条件にマッチしなければならない。
286
- * [Groonga::Operator::BUT]
287
- * 最初の条件にレコードはマッチし、残りの条件にレコードは
288
- * マッチしてはならない。
289
- * @option options :default_mode (Groonga::Operator::MATCH) The default_mode
290
- *
291
- * 検索時のモードを指定する。省略した場合は
292
- * Groonga::Operator::MATCH。(FIXME: モードによってどう
293
- * いう動作になるかを書く。)
294
- *
295
- * @option options :syntax (:query) The syntax
296
- *
297
- * _query_ の構文を指定する。指定可能な値は以下の通り。省略
298
- * した場合は +:query+ 。
299
- *
300
- * [+nil+]
301
- * +:query+と同様。
302
- * [+:query+]
303
- * 「文字列1 OR 文字列2」で「"文字列1"あるいは"文字列2"
304
- * にマッチという検索エンジンで利用できるような構文を使
305
- * う。
265
+ * @overload parse(query, options={})
266
+ * @param [String] query パースする文字列
267
+ * @param [::Hash] options The name and value
268
+ * pairs. Omitted names are initialized as the default value.
269
+ * @option options :default_column
270
+ * "column_name:hoge"ではなく"hoge"のようにcolumn_nameが指
271
+ * 定されない条件の検索対象となるカラムを指定する。
272
+ * @option options :default_operator (Groonga::Operator::AND)
273
+ * "+"や"OR"で繋がれず、ただ列挙された複数の条件があった時、
274
+ * _expression_ 全体として各レコードをヒットとみなすかの論理
275
+ * 条件を指定する。省略した場合はGroonga::Operator::AND。
276
+ *
277
+ * - Groonga::Operator::OR :=
278
+ * レコードはいずれかの条件にマッチすればいい。 =:
279
+ * - Groonga::Operator::AND :=
280
+ * レコードは全ての条件にマッチしなければならない。 =:
281
+ * - Groonga::Operator::BUT :=
282
+ * 最初の条件にレコードはマッチし、残りの条件にレコードは
283
+ * マッチしてはならない。 =:
284
+ *
285
+ * @option options :default_mode (Groonga::Operator::MATCH)
286
+ * 検索時のモードを指定する。省略した場合はGroonga::Operator::MATCH
287
+ * (FIXME: モードによってどういう動作になるかを書く。)
288
+ * @option options :syntax (:query)
289
+ * _query_ の構文を指定する。指定可能な値は以下の通り。省略
290
+ * した場合は +:query+ 。
291
+ *
292
+ * - +:query+ :=
293
+ * 「文字列1 OR 文字列2」で「"文字列1"あるいは"文字列2"
294
+ * にマッチという検索エンジンで利用できるような構文を使
295
+ * う。
296
+ * 参考: grn式のquery形式(link:text/expression_rdoc.html) =:
297
+ * - +nil+ :=
298
+ * +:query+と同様 =:
299
+ * - +:script+ :=
300
+ * 「[カラム名] == [値]」というようにECMAScript風の構文を使う。
301
+ * 参考: grn式のscript形式(link:text/expression_rdoc.html) =:
302
+ * @option options :allow_pragma
303
+ * _query_ の構文に query を用いているとき( +:syntax+
304
+ * オプション参照)、「*E-1」というようにクエリの先頭で
305
+ * pragmaを利用できるようにする。script構文を用いている
306
+ * ときはこのオプションを利用できない。
307
+ *
308
+ * デフォルトではプラグマを利用できる。
306
309
  *
307
310
  * 参考: grn式のquery形式(link:text/expression_rdoc.html)
308
- * [+:script+]
309
- * 「[カラム名] == [値]」というようにECMAScript風の構文
310
- * を使う。
311
+ * @option options :allow_column
312
+ * _query_ の構文にqueryを用いているとき( +:syntax+ オプショ
313
+ * ン参照)、「カラム名:値」というようにカラム名を指定した
314
+ * 条件式を利用できるようにする。script構文を用いていると
315
+ * きはこのオプションを利用できない。
311
316
  *
312
- * 参考: grn式のscript形式(link:text/expression_rdoc.html)
317
+ * デフォルトではカラム名を指定した条件式を利用できる。
313
318
  *
314
- * @option options :allow_pragma The allow_pragma
315
- * _query_ の構文に query を用いているとき( +:syntax+
316
- * オプション参照)、「*E-1」というようにクエリの先頭で
317
- * pragmaを利用できるようにする。script構文を用いている
318
- * ときはこのオプションを利用できない。
319
- *
320
- * デフォルトではプラグマを利用できる。
321
- *
322
- * 参考: grn式のquery形式(link:text/expression_rdoc.html)
323
- *
324
- * @option options :allow_column The allow_column
325
- *
326
- * _query_ の構文にqueryを用いているとき(+:syntax+オプショ
327
- * ン参照)、「カラム名:値」というようにカラム名を指定した
328
- * 条件式を利用できるようにする。script構文を用いていると
329
- * きはこのオプションを利用できない。
330
- *
331
- * デフォルトではカラム名を指定した条件式を利用できる。
332
- *
333
- * 参考: grn式のquery形式(link:text/expression_rdoc.html)
334
- *
335
- * @option options :allow_update The allow_update
336
- *
337
- * _query_の構文にscriptを用いているとき( +:syntax+ オプショ
338
- * ン参照)、「カラム名 = 値」というように更新操作を利用で
339
- * きるようにする。query構文を用いているときはこのオプショ
340
- * ンを利用できない。
319
+ * 参考: grn式のquery形式(link:text/expression_rdoc.html)
320
+ * @option options :allow_update
321
+ * _query_ の構文にscriptを用いているとき( +:syntax+ オプショ
322
+ * ン参照)、「カラム名 = 値」というように更新操作を利用で
323
+ * きるようにする。query構文を用いているときはこのオプショ
324
+ * ンを利用できない。
341
325
  *
342
- * デフォルトでは更新操作を利用できる。
326
+ * デフォルトでは更新操作を利用できる。
343
327
  *
344
- * 参考: grn式のscript形式(link:text/expression_rdoc.html)
328
+ * 参考: grn式のscript形式(link:text/expression_rdoc.html)
345
329
  */
346
330
  static VALUE
347
331
  rb_grn_expression_parse (int argc, VALUE *argv, VALUE self)
@@ -578,20 +562,17 @@ rb_grn_expression_inspect (VALUE self)
578
562
  }
579
563
 
580
564
  /*
581
- * call-seq:
582
- * expression.snippet(tags, options) -> Groonga::Snippet
583
- *
584
- * _expression_ からGroonga::Snippetを生成する。 _tags_ には
565
+ * _expression_ から {Groonga::Snippet} を生成する。 _tags_ には
585
566
  * キーワードの前後に挿入するタグの配列を以下のような形式で指定
586
567
  * する。
587
568
  *
588
569
  * <pre>
589
570
  * !!!ruby
590
- * [
591
- * ["キーワード前に挿入する文字列1", "キーワード後に挿入する文字列1"],
592
- * ["キーワード前に挿入する文字列2", "キーワード後に挿入する文字列2"],
593
- * # ...,
594
- * ]
571
+ * [
572
+ * ["キーワード前に挿入する文字列1", "キーワード後に挿入する文字列1"],
573
+ * ["キーワード前に挿入する文字列2", "キーワード後に挿入する文字列2"],
574
+ * # ...,
575
+ * ]
595
576
  * </pre>
596
577
  *
597
578
  * もし、1つのスニペットの中に _tags_ で指定したタグより多くの
@@ -600,37 +581,33 @@ rb_grn_expression_inspect (VALUE self)
600
581
  *
601
582
  * <pre>
602
583
  * !!!ruby
603
- * expression.parse("Ruby groonga 検索")
604
- * tags = [["<tag1>", "</tag1>"], ["<tag2>", "</tag2>"]]
605
- * snippet = expression.snippet(tags)
606
- * p snippet.execute("Rubyでgroonga使って全文検索、高速検索。")
607
- * # => ["<tag1>Ruby</tag1>で<tag2>groonga</tag2>"
608
- * # => "使って全文<tag1>検索</tag1>、高速<tag2>検索</tag2>。"]
584
+ * expression.parse("Ruby groonga 検索")
585
+ * tags = [["<tag1>", "</tag1>"], ["<tag2>", "</tag2>"]]
586
+ * snippet = expression.snippet(tags)
587
+ * p snippet.execute("Rubyでgroonga使って全文検索、高速検索。")
588
+ * # => ["<tag1>Ruby</tag1>で<tag2>groonga</tag2>"
589
+ * # => "使って全文<tag1>検索</tag1>、高速<tag2>検索</tag2>。"]
609
590
  * </pre>
610
591
  *
611
- * _options_ に指定可能な値は以下の通り。
612
- * @param options [::Hash] The name and value
613
- * pairs. Omitted names are initialized as the default value.
614
- * @option options :normalize (false) The normalize
615
- *
616
- * キーワード文字列・スニペット元の文字列を正規化するかど
617
- * うか。省略した場合は +false+ で正規化しない。
618
- *
619
- * @option options :skip_leading_spaces (false) The skip_leading_spaces
620
- *
621
- * 先頭の空白を無視するかどうか。省略した場合は +false+ で無
622
- * 視しない。
623
- *
624
- * @option options :width (100) The width
625
- *
626
- * スニペット文字列の長さ。省略した場合は100文字。
627
- * @option options :max_results (3) The max_results
628
- *
629
- * 生成するスニペットの最大数。省略した場合は3。
630
- * @option options :html_escape (false) The html_escape
631
- *
632
- * スニペット内の +<+, +>+, +&+, +"+ をHTMLエスケープするか
633
- * どうか。省略した場合は +false+ で、HTMLエスケープしない。
592
+ * @overload snippet(tags, options)
593
+ * @param tags [Array<string>] キーワードの前後に挿入するタグの配列
594
+ * (詳細は上記を参照)
595
+ * @param options [::Hash] The name and value
596
+ * pairs. Omitted names are initialized as the default value.
597
+ * @option options :normalize (false)
598
+ * キーワード文字列・スニペット元の文字列を正規化するかど
599
+ * うか。省略した場合は +false+ で正規化しない。
600
+ * @option options :skip_leading_spaces (false)
601
+ * 先頭の空白を無視するかどうか。省略した場合は +false+ で無
602
+ * 視しない。
603
+ * @option options :width (100)
604
+ * スニペット文字列の長さ。省略した場合は100文字。
605
+ * @option options :max_results (3)
606
+ * 生成するスニペットの最大数。省略した場合は3。
607
+ * @option options :html_escape (false)
608
+ * スニペット内の +<+, +>+, +&+, +"+ をHTMLエスケープするか
609
+ * どうか。省略した場合は +false+ で、HTMLエスケープしない。
610
+ * @return [Groonga::Snippet]
634
611
  */
635
612
  static VALUE
636
613
  rb_grn_expression_snippet (int argc, VALUE *argv, VALUE self)
@@ -56,10 +56,11 @@ rb_grn_fix_size_column_array_reference (VALUE self, VALUE rb_id)
56
56
  }
57
57
 
58
58
  /*
59
- * call-seq:
60
- * column[id] = value
61
- *
62
59
  * _column_ の _id_ に対応する値を設定する。
60
+ *
61
+ * @overload []=(id, value)
62
+ * @param [Integer] id 設定する値に対応する _column_ の _id_
63
+ * @param [Groonga::Object] value 設定する値
63
64
  */
64
65
  static VALUE
65
66
  rb_grn_fix_size_column_array_set (VALUE self, VALUE rb_id, VALUE rb_value)
@@ -77,7 +78,7 @@ rb_grn_fix_size_column_array_set (VALUE self, VALUE rb_id, VALUE rb_value)
77
78
  &value, &range_id, &range);
78
79
 
79
80
  id = NUM2UINT(rb_id);
80
- RVAL2GRNBULK_WITH_TYPE(rb_value, context, value, range_id, range);
81
+ RVAL2GRNVALUE(rb_value, context, value, range_id, range);
81
82
 
82
83
  rc = grn_obj_set_value(context, column, id, value, GRN_OBJ_SET);
83
84
  rb_grn_context_check(context, self);
@@ -0,0 +1,55 @@
1
+ /* -*- coding: utf-8; c-file-style: "ruby" -*- */
2
+ /*
3
+ Copyright (C) 2012 Kouhei Sutou <kou@clear-code.com>
4
+
5
+ This library is free software; you can redistribute it and/or
6
+ modify it under the terms of the GNU Lesser General Public
7
+ License version 2.1 as published by the Free Software Foundation.
8
+
9
+ This library is distributed in the hope that it will be useful,
10
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12
+ Lesser General Public License for more details.
13
+
14
+ You should have received a copy of the GNU Lesser General Public
15
+ License along with this library; if not, write to the Free Software
16
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17
+ */
18
+
19
+ #include "rb-grn.h"
20
+
21
+ VALUE rb_cGrnTokyoGeoPoint;
22
+ VALUE rb_cGrnWGS84GeoPoint;
23
+
24
+ VALUE
25
+ rb_grn_tokyo_geo_point_new (int latitude, int longitude)
26
+ {
27
+ return rb_grn_tokyo_geo_point_new_raw(INT2NUM(latitude), INT2NUM(longitude));
28
+ }
29
+
30
+ VALUE
31
+ rb_grn_wgs84_geo_point_new (int latitude, int longitude)
32
+ {
33
+ return rb_grn_wgs84_geo_point_new_raw(INT2NUM(latitude), INT2NUM(longitude));
34
+ }
35
+
36
+ VALUE
37
+ rb_grn_tokyo_geo_point_new_raw (VALUE latitude, VALUE longitude)
38
+ {
39
+ return rb_funcall(rb_cGrnTokyoGeoPoint, rb_intern("new"), 2,
40
+ latitude, longitude);
41
+ }
42
+
43
+ VALUE
44
+ rb_grn_wgs84_geo_point_new_raw (VALUE latitude, VALUE longitude)
45
+ {
46
+ return rb_funcall(rb_cGrnWGS84GeoPoint, rb_intern("new"), 2,
47
+ latitude, longitude);
48
+ }
49
+
50
+ void
51
+ rb_grn_init_geo_point (VALUE mGrn)
52
+ {
53
+ rb_cGrnTokyoGeoPoint = rb_const_get(mGrn, rb_intern("TokyoGeoPoint"));
54
+ rb_cGrnWGS84GeoPoint = rb_const_get(mGrn, rb_intern("WGS84GeoPoint"));
55
+ }
@@ -30,81 +30,10 @@ VALUE rb_cGrnHash;
30
30
  */
31
31
 
32
32
  /*
33
- * call-seq:
34
- * Groonga::Hash.create(options={}) -> Groonga::Hash
35
- * Groonga::Hash.create(options={}) {|table| ... }
36
- *
37
33
  * 各レコードをキーで管理するテーブルを生成する。ブロックを指
38
34
  * 定すると、そのブロックに生成したテーブルが渡され、ブロック
39
35
  * を抜けると自動的にテーブルが破棄される。
40
36
  *
41
- * _options_ に指定可能な値は以下の通り。
42
- * @param [::Hash] options The name and value
43
- * pairs. Omitted names are initialized as the default value
44
- * @option options [Groonga::Context] :context (Groonga::Context.default) The context
45
- *
46
- * テーブルが利用するGroonga::Context。省略すると
47
- * Groonga::Context.defaultを用いる。
48
- * @option options [Groonga::Context#[]] :name The name
49
- *
50
- * テーブルの名前。名前をつけると、Groonga::Context#[]に名
51
- * 前を指定してテーブルを取得することができる。省略すると
52
- * 無名テーブルになり、テーブルIDでのみ取得できる。
53
- *
54
- * @option options [Groonga::Context#[]] :path The path
55
- *
56
- * テーブルを保存するパス。パスを指定すると永続テーブルとな
57
- * り、プロセス終了後もレコードは保持される。次回起動時に
58
- * Groonga::Context#[]で保存されたレコードを利用することが
59
- * できる。省略すると一時テーブルになり、プロセスが終了する
60
- * とレコードは破棄される。
61
- *
62
- * @option options :persistent The persistent
63
- * +true+ を指定すると永続テーブルとなる。 +path+ を省略した
64
- * 場合は自動的にパスが付加される。 +:context+ で指定した
65
- * Groonga::Contextに結びついているデータベースが一時デー
66
- * タベースの場合は例外が発生する。
67
- *
68
- * @option options :key_normalize The normalize
69
- * +true+ を指定するとキーを正規化する。
70
- *
71
- * @option options :key_type The key_type
72
- * キーの種類を示すオブジェクトを指定する。キーの種類には型
73
- * 名("Int32"や"ShortText"など)またはGroonga::Typeまたは
74
- * テーブル(Groonga::Array、Groonga::Hash、
75
- * Groonga::PatriciaTrieのどれか)を指定する。
76
- *
77
- * Groonga::Typeを指定した場合は、その型が示す範囲の値をキー
78
- * として使用する。ただし、キーの最大サイズは4096バイトで
79
- * あるため、Groonga::Type::TEXTやGroonga::Type::LONG_TEXT
80
- * は使用できない。
81
- *
82
- * テーブルを指定した場合はレコードIDをキーとして使用する。
83
- * 指定したテーブルのGroonga::Recordをキーとして使用するこ
84
- * ともでき、その場合は自動的にGroonga::Recordからレコード
85
- * IDを取得する。
86
- *
87
- * 省略した場合はShortText型をキーとして使用する。この場合、
88
- * 4096バイトまで使用可能である。
89
- *
90
- * @option options :value_type The value_type
91
- *
92
- * 値の型を指定する。省略すると値のための領域を確保しない。
93
- * 値を保存したい場合は必ず指定すること。
94
- *
95
- * 参考: Groonga::Type.new
96
- *
97
- * @option options [Groonga::IndexColumn] :default_tokenizer The default_tokenizer
98
- * Groonga::IndexColumnで使用するトークナイザを指定する。
99
- * デフォルトでは何も設定されていないので、テーブルに
100
- * Groonga::IndexColumnを定義する場合は
101
- * <tt>"TokenBigram"</tt>などを指定する必要がある。
102
- *
103
- * @option options [Groonga::Record#n_sub_records] :sub_records The sub_records
104
- * +true+ を指定すると#groupでグループ化したときに、
105
- * Groonga::Record#n_sub_recordsでグループに含まれるレコー
106
- * ドの件数を取得できる。
107
- *
108
37
  * @example
109
38
  * #無名一時テーブルを生成する。
110
39
  * Groonga::Hash.create
@@ -144,6 +73,119 @@ VALUE rb_cGrnHash;
144
73
  * :default_tokenizer => "TokenBigram")
145
74
  * terms.define_index_column("content", bookmarks,
146
75
  * :source => "Bookmarks.comment")
76
+ *
77
+ * @overload create(options={})
78
+ * @return [Groonga::Hash]
79
+ * @param [::Hash] options The name and value
80
+ * pairs. Omitted names are initialized as the default value
81
+ * @option options [Groonga::Context] :context (Groonga::Context.default)
82
+ * テーブルが利用するGroonga::Context。省略すると
83
+ * Groonga::Context.defaultを用いる。
84
+ * @option options [Groonga::Context#[]] :name
85
+ * テーブルの名前。名前をつけると、Groonga::Context#[]に名
86
+ * 前を指定してテーブルを取得することができる。省略すると
87
+ * 無名テーブルになり、テーブルIDでのみ取得できる。
88
+ * @option options [Groonga::Context#[]] :path
89
+ * テーブルを保存するパス。パスを指定すると永続テーブルとな
90
+ * り、プロセス終了後もレコードは保持される。次回起動時に
91
+ * Groonga::Context#[]で保存されたレコードを利用することが
92
+ * できる。省略すると一時テーブルになり、プロセスが終了する
93
+ * とレコードは破棄される。
94
+ * @option options :persistent
95
+ * +true+ を指定すると永続テーブルとなる。 +path+ を省略した
96
+ * 場合は自動的にパスが付加される。 +:context+ で指定した
97
+ * Groonga::Contextに結びついているデータベースが一時デー
98
+ * タベースの場合は例外が発生する。
99
+ * @option options :key_normalize
100
+ * +true+ を指定するとキーを正規化する。
101
+ * @option options :key_type
102
+ * キーの種類を示すオブジェクトを指定する。キーの種類には型
103
+ * 名("Int32"や"ShortText"など)またはGroonga::Typeまたは
104
+ * テーブル(Groonga::Array、Groonga::Hash、
105
+ * Groonga::PatriciaTrieのどれか)を指定する。
106
+ *
107
+ * Groonga::Typeを指定した場合は、その型が示す範囲の値をキー
108
+ * として使用する。ただし、キーの最大サイズは4096バイトで
109
+ * あるため、Groonga::Type::TEXTやGroonga::Type::LONG_TEXT
110
+ * は使用できない。
111
+ *
112
+ * テーブルを指定した場合はレコードIDをキーとして使用する。
113
+ * 指定したテーブルのGroonga::Recordをキーとして使用するこ
114
+ * ともでき、その場合は自動的にGroonga::Recordからレコード
115
+ * IDを取得する。
116
+ *
117
+ * 省略した場合はShortText型をキーとして使用する。この場合、
118
+ * 4096バイトまで使用可能である。
119
+ * @option options :value_type
120
+ * 値の型を指定する。省略すると値のための領域を確保しない。
121
+ * 値を保存したい場合は必ず指定すること。
122
+ *
123
+ * 参考: Groonga::Type.new
124
+ * @option options [Groonga::IndexColumn] :default_tokenizer
125
+ * Groonga::IndexColumnで使用するトークナイザを指定する。
126
+ * デフォルトでは何も設定されていないので、テーブルに
127
+ * Groonga::IndexColumnを定義する場合は
128
+ * <tt>"TokenBigram"</tt>などを指定する必要がある。
129
+ * @option options [Groonga::Record#n_sub_records] :sub_records
130
+ * +true+ を指定すると#groupでグループ化したときに、
131
+ * Groonga::Record#n_sub_recordsでグループに含まれるレコー
132
+ * ドの件数を取得できる。
133
+ * @overload create(options={})
134
+ * @yield [table]
135
+ * @param [::Hash] options The name and value
136
+ * pairs. Omitted names are initialized as the default value
137
+ * @option options [Groonga::Context] :context (Groonga::Context.default)
138
+ * テーブルが利用するGroonga::Context。省略すると
139
+ * Groonga::Context.defaultを用いる。
140
+ * @option options [Groonga::Context#[]] :name
141
+ * テーブルの名前。名前をつけると、Groonga::Context#[]に名
142
+ * 前を指定してテーブルを取得することができる。省略すると
143
+ * 無名テーブルになり、テーブルIDでのみ取得できる。
144
+ * @option options [Groonga::Context#[]] :path
145
+ * テーブルを保存するパス。パスを指定すると永続テーブルとな
146
+ * り、プロセス終了後もレコードは保持される。次回起動時に
147
+ * Groonga::Context#[]で保存されたレコードを利用することが
148
+ * できる。省略すると一時テーブルになり、プロセスが終了する
149
+ * とレコードは破棄される。
150
+ * @option options :persistent
151
+ * +true+ を指定すると永続テーブルとなる。 +path+ を省略した
152
+ * 場合は自動的にパスが付加される。 +:context+ で指定した
153
+ * Groonga::Contextに結びついているデータベースが一時デー
154
+ * タベースの場合は例外が発生する。
155
+ * @option options :key_normalize
156
+ * +true+ を指定するとキーを正規化する。
157
+ * @option options :key_type
158
+ * キーの種類を示すオブジェクトを指定する。キーの種類には型
159
+ * 名("Int32"や"ShortText"など)またはGroonga::Typeまたは
160
+ * テーブル(Groonga::Array、Groonga::Hash、
161
+ * Groonga::PatriciaTrieのどれか)を指定する。
162
+ *
163
+ * Groonga::Typeを指定した場合は、その型が示す範囲の値をキー
164
+ * として使用する。ただし、キーの最大サイズは4096バイトで
165
+ * あるため、Groonga::Type::TEXTやGroonga::Type::LONG_TEXT
166
+ * は使用できない。
167
+ *
168
+ * テーブルを指定した場合はレコードIDをキーとして使用する。
169
+ * 指定したテーブルのGroonga::Recordをキーとして使用するこ
170
+ * ともでき、その場合は自動的にGroonga::Recordからレコード
171
+ * IDを取得する。
172
+ *
173
+ * 省略した場合はShortText型をキーとして使用する。この場合、
174
+ * 4096バイトまで使用可能である。
175
+ * @option options :value_type
176
+ * 値の型を指定する。省略すると値のための領域を確保しない。
177
+ * 値を保存したい場合は必ず指定すること。
178
+ *
179
+ * 参考: Groonga::Type.new
180
+ * @option options [Groonga::IndexColumn] :default_tokenizer
181
+ * Groonga::IndexColumnで使用するトークナイザを指定する。
182
+ * デフォルトでは何も設定されていないので、テーブルに
183
+ * Groonga::IndexColumnを定義する場合は
184
+ * <tt>"TokenBigram"</tt>などを指定する必要がある。
185
+ * @option options [Groonga::Record#n_sub_records] :sub_records
186
+ * +true+ を指定すると#groupでグループ化したときに、
187
+ * Groonga::Record#n_sub_recordsでグループに含まれるレコー
188
+ * ドの件数を取得できる。
147
189
  */
148
190
  static VALUE
149
191
  rb_grn_hash_s_create (int argc, VALUE *argv, VALUE klass)
@@ -220,9 +262,6 @@ rb_grn_hash_s_create (int argc, VALUE *argv, VALUE klass)
220
262
  }
221
263
 
222
264
  /*
223
- * call-seq:
224
- * hash.search(key, options=nil) -> Groonga::Hash
225
- *
226
265
  * _key_ にマッチするレコードのIDがキーに入っている
227
266
  * Groonga::Hashを返す。マッチするレコードがない場合は空の
228
267
  * Groonga::Hashが返る。
@@ -231,14 +270,6 @@ rb_grn_hash_s_create (int argc, VALUE *argv, VALUE klass)
231
270
  * チしたレコードIDがキーのレコードを追加することができる。
232
271
  * +:result+ にテーブルを指定した場合は、そのテーブルが返る。
233
272
  *
234
- * _options_ に指定可能な値は以下の通り。
235
- * @param [::Hash] options The name and value
236
- * pairs. Omitted names are initialized as the default value
237
- *
238
- * @option options :result The result
239
- *
240
- * 結果を格納するテーブル。
241
- *
242
273
  * @example 複数のキーで検索し、結果を1つのテーブルに集める。
243
274
  * result = nil
244
275
  * keys = ["morita", "gunyara-kun", "yu"]
@@ -249,6 +280,13 @@ rb_grn_hash_s_create (int argc, VALUE *argv, VALUE klass)
249
280
  * user = record.key
250
281
  * p user.key # -> "morita"または"gunyara-kun"または"yu"
251
282
  * end
283
+ *
284
+ * @overload search(key, options=nil)
285
+ * @param [::Hash] options The name and value
286
+ * pairs. Omitted names are initialized as the default value
287
+ * @option options :result
288
+ * 結果を格納するテーブル。
289
+ * @return [Groonga::Hash]
252
290
  */
253
291
  static VALUE
254
292
  rb_grn_hash_search (int argc, VALUE *argv, VALUE self)