rroonga 10.0.1 → 11.0.6

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 (51) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +1 -0
  3. data/Rakefile +30 -28
  4. data/doc/text/news.md +51 -5
  5. data/doc/text/tutorial.md +1 -1
  6. data/ext/groonga/extconf.rb +18 -3
  7. data/ext/groonga/rb-grn-accessor.c +2 -2
  8. data/ext/groonga/rb-grn-column-cache.c +3 -3
  9. data/ext/groonga/rb-grn-column.c +4 -4
  10. data/ext/groonga/rb-grn-context.c +82 -58
  11. data/ext/groonga/rb-grn-data-column.c +4 -4
  12. data/ext/groonga/rb-grn-database.c +45 -26
  13. data/ext/groonga/rb-grn-double-array-trie.c +2 -2
  14. data/ext/groonga/rb-grn-encoding-support.c +2 -2
  15. data/ext/groonga/rb-grn-exception.c +14 -0
  16. data/ext/groonga/rb-grn-expression-builder.c +3 -3
  17. data/ext/groonga/rb-grn-expression.c +3 -3
  18. data/ext/groonga/rb-grn-fix-size-column.c +2 -2
  19. data/ext/groonga/rb-grn-flushable.c +2 -1
  20. data/ext/groonga/rb-grn-hash.c +2 -2
  21. data/ext/groonga/rb-grn-index-column.c +3 -3
  22. data/ext/groonga/rb-grn-index-cursor.c +2 -2
  23. data/ext/groonga/rb-grn-inverted-index-cursor.c +3 -3
  24. data/ext/groonga/rb-grn-object.c +30 -9
  25. data/ext/groonga/rb-grn-operator.c +100 -259
  26. data/ext/groonga/rb-grn-patricia-trie.c +2 -2
  27. data/ext/groonga/rb-grn-plugin.c +34 -22
  28. data/ext/groonga/rb-grn-request-timer-id.c +2 -2
  29. data/ext/groonga/rb-grn-snippet.c +3 -3
  30. data/ext/groonga/rb-grn-table-cursor-key-support.c +2 -2
  31. data/ext/groonga/rb-grn-table-cursor.c +3 -3
  32. data/ext/groonga/rb-grn-table-key-support.c +6 -4
  33. data/ext/groonga/rb-grn-table.c +63 -45
  34. data/ext/groonga/rb-grn-type.c +5 -1
  35. data/ext/groonga/rb-grn-utils.c +17 -1
  36. data/ext/groonga/rb-grn-variable-size-column.c +2 -2
  37. data/ext/groonga/rb-grn-variable.c +2 -2
  38. data/ext/groonga/rb-grn.h +10 -5
  39. data/ext/groonga/rb-groonga.c +6 -2
  40. data/lib/groonga/context.rb +32 -0
  41. data/rroonga-build.rb +5 -4
  42. data/rroonga.gemspec +5 -2
  43. data/test/groonga-test-utils.rb +9 -0
  44. data/test/run-test.rb +1 -1
  45. data/test/test-column.rb +12 -1
  46. data/test/test-index-column.rb +3 -3
  47. data/test/test-logger.rb +2 -0
  48. data/test/test-ractor.rb +65 -0
  49. data/test/test-remote.rb +16 -0
  50. data/test/test-table-arrow.rb +20 -11
  51. metadata +84 -68
@@ -325,353 +325,194 @@ rb_grn_init_operator (VALUE mGrn)
325
325
  rb_grn_init_prefix_operator(mGrn);
326
326
  rb_grn_init_regexp_operator(mGrn);
327
327
 
328
+ #define OPERATOR_NEW(klass, name, NAME) \
329
+ rb_obj_freeze(rb_funcall(klass, rb_intern("new"), 2, \
330
+ rb_obj_freeze(rb_str_new_cstr(name)), \
331
+ UINT2NUM(GRN_OP_ ## NAME)))
332
+
328
333
  rb_define_const(rb_cGrnOperator, "PUSH",
329
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
330
- rb_str_new_cstr("push"),
331
- UINT2NUM(GRN_OP_PUSH)));
334
+ OPERATOR_NEW(rb_cGrnOperator, "push", PUSH));
332
335
  rb_define_const(rb_cGrnOperator, "POP",
333
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
334
- rb_str_new_cstr("pop"),
335
- UINT2NUM(GRN_OP_POP)));
336
+ OPERATOR_NEW(rb_cGrnOperator, "pop", POP));
336
337
  rb_define_const(rb_cGrnOperator, "NO_OPERATION",
337
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
338
- rb_str_new_cstr("no-operation"),
339
- UINT2NUM(GRN_OP_NOP)));
338
+ OPERATOR_NEW(rb_cGrnOperator, "no-operation", NOP));
340
339
  rb_define_const(rb_cGrnOperator, "CALL",
341
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
342
- rb_str_new_cstr("call"),
343
- UINT2NUM(GRN_OP_CALL)));
340
+ OPERATOR_NEW(rb_cGrnOperator, "call", CALL));
344
341
  rb_define_const(rb_cGrnOperator, "INTERN",
345
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
346
- rb_str_new_cstr("intern"),
347
- UINT2NUM(GRN_OP_INTERN)));
342
+ OPERATOR_NEW(rb_cGrnOperator, "intern", INTERN));
348
343
  rb_define_const(rb_cGrnOperator, "GET_REFERENCE",
349
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
350
- rb_str_new_cstr("get-reference"),
351
- UINT2NUM(GRN_OP_GET_REF)));
344
+ OPERATOR_NEW(rb_cGrnOperator, "get-reference", GET_REF));
352
345
  rb_define_const(rb_cGrnOperator, "GET_VALUE",
353
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
354
- rb_str_new_cstr("get-value"),
355
- UINT2NUM(GRN_OP_GET_VALUE)));
346
+ OPERATOR_NEW(rb_cGrnOperator, "get-value", GET_VALUE));
356
347
  rb_define_const(rb_cGrnOperator, "AND",
357
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
358
- rb_str_new_cstr("and"),
359
- UINT2NUM(GRN_OP_AND)));
348
+ OPERATOR_NEW(rb_cGrnOperator, "and", AND));
360
349
  rb_define_const(rb_cGrnOperator, "AND_NOT",
361
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
362
- rb_str_new_cstr("and-not"),
363
- UINT2NUM(GRN_OP_AND_NOT)));
364
- /* Just for backward compatiblity. TODO: REMOVE ME! */
350
+ OPERATOR_NEW(rb_cGrnOperator, "and-not", AND_NOT));
351
+ /* Just for backward compatibility. TODO: REMOVE ME! */
365
352
  rb_define_const(rb_cGrnOperator, "BUT",
366
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
367
- rb_str_new_cstr("but"),
368
- UINT2NUM(GRN_OP_BUT)));
353
+ OPERATOR_NEW(rb_cGrnOperator, "but", BUT));
369
354
  rb_define_const(rb_cGrnOperator, "OR",
370
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
371
- rb_str_new_cstr("or"),
372
- UINT2NUM(GRN_OP_OR)));
355
+ OPERATOR_NEW(rb_cGrnOperator, "or", OR));
373
356
  rb_define_const(rb_cGrnOperator, "ASSIGN",
374
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
375
- rb_str_new_cstr("assign"),
376
- UINT2NUM(GRN_OP_ASSIGN)));
357
+ OPERATOR_NEW(rb_cGrnOperator, "assign", ASSIGN));
377
358
  rb_define_const(rb_cGrnOperator, "STAR_ASSIGN",
378
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
379
- rb_str_new_cstr("star-assign"),
380
- UINT2NUM(GRN_OP_STAR_ASSIGN)));
359
+ OPERATOR_NEW(rb_cGrnOperator, "star-assign", STAR_ASSIGN));
381
360
  rb_define_const(rb_cGrnOperator, "SLASH_ASSIGN",
382
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
383
- rb_str_new_cstr("slash-assign"),
384
- UINT2NUM(GRN_OP_SLASH_ASSIGN)));
361
+ OPERATOR_NEW(rb_cGrnOperator, "slash-assign", SLASH_ASSIGN));
385
362
  rb_define_const(rb_cGrnOperator, "MODULO_ASSIGN",
386
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
387
- rb_str_new_cstr("modulo-assign"),
388
- UINT2NUM(GRN_OP_MOD_ASSIGN)));
363
+ OPERATOR_NEW(rb_cGrnOperator, "modulo-assign", MOD_ASSIGN));
389
364
  rb_define_const(rb_cGrnOperator, "PLUS_ASSIGN",
390
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
391
- rb_str_new_cstr("plus-assign"),
392
- UINT2NUM(GRN_OP_PLUS_ASSIGN)));
365
+ OPERATOR_NEW(rb_cGrnOperator, "plus-assign", PLUS_ASSIGN));
393
366
  rb_define_const(rb_cGrnOperator, "MINUS_ASSIGN",
394
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
395
- rb_str_new_cstr("minus-assign"),
396
- UINT2NUM(GRN_OP_MINUS_ASSIGN)));
367
+ OPERATOR_NEW(rb_cGrnOperator, "minus-assign", MINUS_ASSIGN));
397
368
  rb_define_const(rb_cGrnOperator, "SHIFTL_ASSIGN",
398
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
399
- rb_str_new_cstr("shiftl-assign"),
400
- UINT2NUM(GRN_OP_SHIFTL_ASSIGN)));
369
+ OPERATOR_NEW(rb_cGrnOperator, "shiftl-assign", SHIFTL_ASSIGN));
401
370
  rb_define_const(rb_cGrnOperator, "SHIRTR_ASSIGN",
402
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
403
- rb_str_new_cstr("shirtr-assign"),
404
- UINT2NUM(GRN_OP_SHIFTR_ASSIGN)));
371
+ OPERATOR_NEW(rb_cGrnOperator, "shirtr-assign", SHIFTR_ASSIGN));
405
372
  rb_define_const(rb_cGrnOperator, "SHIFTRR_ASSIGN",
406
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
407
- rb_str_new_cstr("shiftrr-assign"),
408
- UINT2NUM(GRN_OP_SHIFTRR_ASSIGN)));
373
+ OPERATOR_NEW(rb_cGrnOperator, "shiftrr-assign", SHIFTRR_ASSIGN));
409
374
  rb_define_const(rb_cGrnOperator, "AND_ASSIGN",
410
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
411
- rb_str_new_cstr("and-assign"),
412
- UINT2NUM(GRN_OP_AND_ASSIGN)));
375
+ OPERATOR_NEW(rb_cGrnOperator, "and-assign", AND_ASSIGN));
413
376
  rb_define_const(rb_cGrnOperator, "XOR_ASSIGN",
414
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
415
- rb_str_new_cstr("xor-assign"),
416
- UINT2NUM(GRN_OP_XOR_ASSIGN)));
377
+ OPERATOR_NEW(rb_cGrnOperator, "xor-assign", XOR_ASSIGN));
417
378
  rb_define_const(rb_cGrnOperator, "OR_ASSIGN",
418
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
419
- rb_str_new_cstr("or-assign"),
420
- UINT2NUM(GRN_OP_OR_ASSIGN)));
379
+ OPERATOR_NEW(rb_cGrnOperator, "or-assign", OR_ASSIGN));
421
380
  rb_define_const(rb_cGrnOperator, "JUMP",
422
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
423
- rb_str_new_cstr("jump"),
424
- UINT2NUM(GRN_OP_JUMP)));
381
+ OPERATOR_NEW(rb_cGrnOperator, "jump", JUMP));
425
382
  rb_define_const(rb_cGrnOperator, "CJUMP",
426
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
427
- rb_str_new_cstr("cjump"),
428
- UINT2NUM(GRN_OP_CJUMP)));
383
+ OPERATOR_NEW(rb_cGrnOperator, "cjump", CJUMP));
429
384
  rb_define_const(rb_cGrnOperator, "COMMA",
430
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
431
- rb_str_new_cstr("comma"),
432
- UINT2NUM(GRN_OP_COMMA)));
385
+ OPERATOR_NEW(rb_cGrnOperator, "comma", COMMA));
433
386
  rb_define_const(rb_cGrnOperator, "BITWISE_OR",
434
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
435
- rb_str_new_cstr("bitwise-or"),
436
- UINT2NUM(GRN_OP_BITWISE_OR)));
387
+ OPERATOR_NEW(rb_cGrnOperator, "bitwise-or", BITWISE_OR));
437
388
  rb_define_const(rb_cGrnOperator, "BITWISE_XOR",
438
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
439
- rb_str_new_cstr("bitwise-xor"),
440
- UINT2NUM(GRN_OP_BITWISE_XOR)));
389
+ OPERATOR_NEW(rb_cGrnOperator, "bitwise-xor", BITWISE_XOR));
441
390
  rb_define_const(rb_cGrnOperator, "BITWISE_AND",
442
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
443
- rb_str_new_cstr("bitwise-and"),
444
- UINT2NUM(GRN_OP_BITWISE_AND)));
391
+ OPERATOR_NEW(rb_cGrnOperator, "bitwise-and", BITWISE_AND));
445
392
  rb_define_const(rb_cGrnOperator, "BITWISE_NOT",
446
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
447
- rb_str_new_cstr("bitwise-not"),
448
- UINT2NUM(GRN_OP_BITWISE_NOT)));
393
+ OPERATOR_NEW(rb_cGrnOperator, "bitwise-not", BITWISE_NOT));
449
394
  rb_define_const(rb_cGrnOperator, "EQUAL",
450
- rb_funcall(rb_cGrnEqualOperator, rb_intern("new"), 2,
451
- rb_str_new_cstr("equal"),
452
- UINT2NUM(GRN_OP_EQUAL)));
395
+ OPERATOR_NEW(rb_cGrnEqualOperator, "equal", EQUAL));
453
396
  rb_define_const(rb_cGrnOperator, "NOT_EQUAL",
454
- rb_funcall(rb_cGrnNotEqualOperator, rb_intern("new"), 2,
455
- rb_str_new_cstr("not-equal"),
456
- UINT2NUM(GRN_OP_NOT_EQUAL)));
397
+ OPERATOR_NEW(rb_cGrnNotEqualOperator,
398
+ "not-equal",
399
+ NOT_EQUAL));
457
400
  rb_define_const(rb_cGrnOperator, "LESS",
458
- rb_funcall(rb_cGrnLessOperator, rb_intern("new"), 2,
459
- rb_str_new_cstr("less"),
460
- UINT2NUM(GRN_OP_LESS)));
401
+ OPERATOR_NEW(rb_cGrnLessOperator, "less", LESS));
461
402
  rb_define_const(rb_cGrnOperator, "GREATER",
462
- rb_funcall(rb_cGrnGreaterOperator, rb_intern("new"), 2,
463
- rb_str_new_cstr("greater"),
464
- UINT2NUM(GRN_OP_GREATER)));
403
+ OPERATOR_NEW(rb_cGrnGreaterOperator, "greater", GREATER));
465
404
  rb_define_const(rb_cGrnOperator, "LESS_EQUAL",
466
- rb_funcall(rb_cGrnLessEqualOperator, rb_intern("new"), 2,
467
- rb_str_new_cstr("less-equal"),
468
- UINT2NUM(GRN_OP_LESS_EQUAL)));
405
+ OPERATOR_NEW(rb_cGrnLessEqualOperator,
406
+ "less-equal",
407
+ LESS_EQUAL));
469
408
  rb_define_const(rb_cGrnOperator, "GREATER_EQUAL",
470
- rb_funcall(rb_cGrnGreaterEqualOperator, rb_intern("new"), 2,
471
- rb_str_new_cstr("greater-equal"),
472
- UINT2NUM(GRN_OP_GREATER_EQUAL)));
409
+ OPERATOR_NEW(rb_cGrnGreaterEqualOperator,
410
+ "greater-equal",
411
+ GREATER_EQUAL));
473
412
  rb_define_const(rb_cGrnOperator, "IN",
474
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
475
- rb_str_new_cstr("in"),
476
- UINT2NUM(GRN_OP_IN)));
413
+ OPERATOR_NEW(rb_cGrnOperator, "in", IN));
477
414
  rb_define_const(rb_cGrnOperator, "MATCH",
478
- rb_funcall(rb_cGrnMatchOperator, rb_intern("new"), 2,
479
- rb_str_new_cstr("match"),
480
- UINT2NUM(GRN_OP_MATCH)));
415
+ OPERATOR_NEW(rb_cGrnMatchOperator, "match", MATCH));
481
416
  rb_define_const(rb_cGrnOperator, "NEAR",
482
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
483
- rb_str_new_cstr("near"),
484
- UINT2NUM(GRN_OP_NEAR)));
417
+ OPERATOR_NEW(rb_cGrnOperator, "near", NEAR));
485
418
  rb_define_const(rb_cGrnOperator, "NEAR2",
486
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
487
- rb_str_new_cstr("near2"),
488
- UINT2NUM(GRN_OP_NEAR2)));
419
+ OPERATOR_NEW(rb_cGrnOperator, "near2", NEAR2));
489
420
  rb_define_const(rb_cGrnOperator, "SIMILAR",
490
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
491
- rb_str_new_cstr("similar"),
492
- UINT2NUM(GRN_OP_SIMILAR)));
421
+ OPERATOR_NEW(rb_cGrnOperator, "similar", SIMILAR));
493
422
  rb_define_const(rb_cGrnOperator, "TERM_EXTRACT",
494
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
495
- rb_str_new_cstr("term-extract"),
496
- UINT2NUM(GRN_OP_TERM_EXTRACT)));
423
+ OPERATOR_NEW(rb_cGrnOperator, "term-extract", TERM_EXTRACT));
497
424
  rb_define_const(rb_cGrnOperator, "SHIFTL",
498
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
499
- rb_str_new_cstr("shiftl"),
500
- UINT2NUM(GRN_OP_SHIFTL)));
425
+ OPERATOR_NEW(rb_cGrnOperator, "shiftl", SHIFTL));
501
426
  rb_define_const(rb_cGrnOperator, "SHIFTR",
502
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
503
- rb_str_new_cstr("shiftr"),
504
- UINT2NUM(GRN_OP_SHIFTR)));
427
+ OPERATOR_NEW(rb_cGrnOperator, "shiftr", SHIFTR));
505
428
  rb_define_const(rb_cGrnOperator, "SHIFTRR",
506
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
507
- rb_str_new_cstr("shiftrr"),
508
- UINT2NUM(GRN_OP_SHIFTRR)));
429
+ OPERATOR_NEW(rb_cGrnOperator, "shiftrr", SHIFTRR));
509
430
  rb_define_const(rb_cGrnOperator, "PLUS",
510
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
511
- rb_str_new_cstr("plus"),
512
- UINT2NUM(GRN_OP_PLUS)));
431
+ OPERATOR_NEW(rb_cGrnOperator, "plus", PLUS));
513
432
  rb_define_const(rb_cGrnOperator, "MINUS",
514
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
515
- rb_str_new_cstr("minus"),
516
- UINT2NUM(GRN_OP_MINUS)));
433
+ OPERATOR_NEW(rb_cGrnOperator, "minus", MINUS));
517
434
  rb_define_const(rb_cGrnOperator, "STAR",
518
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
519
- rb_str_new_cstr("star"),
520
- UINT2NUM(GRN_OP_STAR)));
435
+ OPERATOR_NEW(rb_cGrnOperator, "star", STAR));
521
436
  rb_define_const(rb_cGrnOperator, "SLASH",
522
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
523
- rb_str_new_cstr("slash"),
524
- UINT2NUM(GRN_OP_SLASH)));
437
+ OPERATOR_NEW(rb_cGrnOperator, "slash", SLASH));
525
438
  rb_define_const(rb_cGrnOperator, "MODULO",
526
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
527
- rb_str_new_cstr("modulo"),
528
- UINT2NUM(GRN_OP_MOD)));
439
+ OPERATOR_NEW(rb_cGrnOperator, "modulo", MOD));
529
440
  rb_define_const(rb_cGrnOperator, "DELETE",
530
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
531
- rb_str_new_cstr("delete"),
532
- UINT2NUM(GRN_OP_DELETE)));
441
+ OPERATOR_NEW(rb_cGrnOperator, "delete", DELETE));
533
442
  rb_define_const(rb_cGrnOperator, "INCREMENT",
534
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
535
- rb_str_new_cstr("increment"),
536
- UINT2NUM(GRN_OP_INCR)));
443
+ OPERATOR_NEW(rb_cGrnOperator, "increment", INCR));
537
444
  rb_define_const(rb_cGrnOperator, "DECREMENT",
538
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
539
- rb_str_new_cstr("decrement"),
540
- UINT2NUM(GRN_OP_DECR)));
445
+ OPERATOR_NEW(rb_cGrnOperator, "decrement", DECR));
541
446
  rb_define_const(rb_cGrnOperator, "INCREMENT_POST",
542
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
543
- rb_str_new_cstr("increment-post"),
544
- UINT2NUM(GRN_OP_INCR_POST)));
447
+ OPERATOR_NEW(rb_cGrnOperator, "increment-post", INCR_POST));
545
448
  rb_define_const(rb_cGrnOperator, "DECREMENT_POST",
546
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
547
- rb_str_new_cstr("decrement-post"),
548
- UINT2NUM(GRN_OP_DECR_POST)));
449
+ OPERATOR_NEW(rb_cGrnOperator, "decrement-post", DECR_POST));
549
450
  rb_define_const(rb_cGrnOperator, "NOT",
550
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
551
- rb_str_new_cstr("not"),
552
- UINT2NUM(GRN_OP_NOT)));
451
+ OPERATOR_NEW(rb_cGrnOperator, "not", NOT));
553
452
  rb_define_const(rb_cGrnOperator, "ADJUST",
554
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
555
- rb_str_new_cstr("adjust"),
556
- UINT2NUM(GRN_OP_ADJUST)));
453
+ OPERATOR_NEW(rb_cGrnOperator, "adjust", ADJUST));
557
454
  rb_define_const(rb_cGrnOperator, "EXACT",
558
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
559
- rb_str_new_cstr("exact"),
560
- UINT2NUM(GRN_OP_EXACT)));
455
+ OPERATOR_NEW(rb_cGrnOperator, "exact", EXACT));
561
456
  rb_define_const(rb_cGrnOperator, "LONGEST_COMMON_PREFIX",
562
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
563
- rb_str_new_cstr("longest-common-prefix"),
564
- UINT2NUM(GRN_OP_LCP)));
457
+ OPERATOR_NEW(rb_cGrnOperator, "longest-common-prefix", LCP));
565
458
  rb_define_const(rb_cGrnOperator, "PARTIAL",
566
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
567
- rb_str_new_cstr("partial"),
568
- UINT2NUM(GRN_OP_PARTIAL)));
459
+ OPERATOR_NEW(rb_cGrnOperator, "partial", PARTIAL));
569
460
  rb_define_const(rb_cGrnOperator, "UNSPLIT",
570
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
571
- rb_str_new_cstr("unsplit"),
572
- UINT2NUM(GRN_OP_UNSPLIT)));
461
+ OPERATOR_NEW(rb_cGrnOperator, "unsplit", UNSPLIT));
573
462
  rb_define_const(rb_cGrnOperator, "PREFIX",
574
- rb_funcall(rb_cGrnPrefixOperator, rb_intern("new"), 2,
575
- rb_str_new_cstr("prefix"),
576
- UINT2NUM(GRN_OP_PREFIX)));
463
+ OPERATOR_NEW(rb_cGrnPrefixOperator, "prefix", PREFIX));
577
464
  rb_define_const(rb_cGrnOperator, "SUFFIX",
578
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
579
- rb_str_new_cstr("suffix"),
580
- UINT2NUM(GRN_OP_SUFFIX)));
465
+ OPERATOR_NEW(rb_cGrnOperator, "suffix", SUFFIX));
581
466
  rb_define_const(rb_cGrnOperator, "GEO_DISTANCE1",
582
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
583
- rb_str_new_cstr("geo-distance1"),
584
- UINT2NUM(GRN_OP_GEO_DISTANCE1)));
467
+ OPERATOR_NEW(rb_cGrnOperator, "geo-distance1", GEO_DISTANCE1));
585
468
  rb_define_const(rb_cGrnOperator, "GEO_DISTANCE2",
586
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
587
- rb_str_new_cstr("geo-distance2"),
588
- UINT2NUM(GRN_OP_GEO_DISTANCE2)));
469
+ OPERATOR_NEW(rb_cGrnOperator, "geo-distance2", GEO_DISTANCE2));
589
470
  rb_define_const(rb_cGrnOperator, "GEO_DISTANCE3",
590
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
591
- rb_str_new_cstr("geo-distance3"),
592
- UINT2NUM(GRN_OP_GEO_DISTANCE3)));
471
+ OPERATOR_NEW(rb_cGrnOperator, "geo-distance3", GEO_DISTANCE3));
593
472
  rb_define_const(rb_cGrnOperator, "GEO_DISTANCE4",
594
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
595
- rb_str_new_cstr("geo-distance4"),
596
- UINT2NUM(GRN_OP_GEO_DISTANCE4)));
473
+ OPERATOR_NEW(rb_cGrnOperator, "geo-distance4", GEO_DISTANCE4));
597
474
  rb_define_const(rb_cGrnOperator, "GEO_WITHINP5",
598
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
599
- rb_str_new_cstr("geo-withinp5"),
600
- UINT2NUM(GRN_OP_GEO_WITHINP5)));
475
+ OPERATOR_NEW(rb_cGrnOperator, "geo-withinp5", GEO_WITHINP5));
601
476
  rb_define_const(rb_cGrnOperator, "GEO_WITHINP6",
602
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
603
- rb_str_new_cstr("geo-withinp6"),
604
- UINT2NUM(GRN_OP_GEO_WITHINP6)));
477
+ OPERATOR_NEW(rb_cGrnOperator, "geo-withinp6", GEO_WITHINP6));
605
478
  rb_define_const(rb_cGrnOperator, "GEO_WITHINP8",
606
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
607
- rb_str_new_cstr("geo-withinp8"),
608
- UINT2NUM(GRN_OP_GEO_WITHINP8)));
479
+ OPERATOR_NEW(rb_cGrnOperator, "geo-withinp8", GEO_WITHINP8));
609
480
  rb_define_const(rb_cGrnOperator, "OBJECT_SEARCH",
610
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
611
- rb_str_new_cstr("object-search"),
612
- UINT2NUM(GRN_OP_OBJ_SEARCH)));
481
+ OPERATOR_NEW(rb_cGrnOperator, "object-search", OBJ_SEARCH));
613
482
  rb_define_const(rb_cGrnOperator, "EXPRESSION_GET_VARIABLE",
614
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
615
- rb_str_new_cstr("expression-get-variable"),
616
- UINT2NUM(GRN_OP_EXPR_GET_VAR)));
483
+ OPERATOR_NEW(rb_cGrnOperator, "expression-get-variable", EXPR_GET_VAR));
617
484
  rb_define_const(rb_cGrnOperator, "TABLE_CREATE",
618
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
619
- rb_str_new_cstr("table-create"),
620
- UINT2NUM(GRN_OP_TABLE_CREATE)));
485
+ OPERATOR_NEW(rb_cGrnOperator, "table-create", TABLE_CREATE));
621
486
  rb_define_const(rb_cGrnOperator, "TABLE_SELECT",
622
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
623
- rb_str_new_cstr("table-select"),
624
- UINT2NUM(GRN_OP_TABLE_SELECT)));
487
+ OPERATOR_NEW(rb_cGrnOperator, "table-select", TABLE_SELECT));
625
488
  rb_define_const(rb_cGrnOperator, "TABLE_SORT",
626
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
627
- rb_str_new_cstr("table-sort"),
628
- UINT2NUM(GRN_OP_TABLE_SORT)));
489
+ OPERATOR_NEW(rb_cGrnOperator, "table-sort", TABLE_SORT));
629
490
  rb_define_const(rb_cGrnOperator, "TABLE_GROUP",
630
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
631
- rb_str_new_cstr("table-group"),
632
- UINT2NUM(GRN_OP_TABLE_GROUP)));
491
+ OPERATOR_NEW(rb_cGrnOperator, "table-group", TABLE_GROUP));
633
492
  rb_define_const(rb_cGrnOperator, "JSON_PUT",
634
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
635
- rb_str_new_cstr("json-put"),
636
- UINT2NUM(GRN_OP_JSON_PUT)));
493
+ OPERATOR_NEW(rb_cGrnOperator, "json-put", JSON_PUT));
637
494
  rb_define_const(rb_cGrnOperator, "REGEXP",
638
- rb_funcall(rb_cGrnRegexpOperator, rb_intern("new"), 2,
639
- rb_str_new_cstr("regexp"),
640
- UINT2NUM(GRN_OP_REGEXP)));
495
+ OPERATOR_NEW(rb_cGrnRegexpOperator, "regexp", REGEXP));
641
496
  rb_define_const(rb_cGrnOperator, "FUZZY",
642
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
643
- rb_str_new_cstr("fuzzy"),
644
- UINT2NUM(GRN_OP_FUZZY)));
497
+ OPERATOR_NEW(rb_cGrnOperator, "fuzzy", FUZZY));
645
498
 
646
499
 
647
500
  /*
648
501
  rb_define_const(rb_cGrnOperator, "GEO_DISTANCE1",
649
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
650
- rb_str_new_cstr("geo-distance1"),
651
- UINT2NUM(GRN_OP_GEO_DISTANCE1)));
502
+ OPERATOR_NEW(rb_cGrnOperator, "geo-distance1", GEO_DISTANCE1));
652
503
  rb_define_const(rb_cGrnOperator, "GEO_DISTANCE2",
653
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
654
- rb_str_new_cstr("geo-distance2"),
655
- UINT2NUM(GRN_OP_GEO_DISTANCE2)));
504
+ OPERATOR_NEW(rb_cGrnOperator, "geo-distance2", GEO_DISTANCE2));
656
505
  rb_define_const(rb_cGrnOperator, "GEO_DISTANCE3",
657
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
658
- rb_str_new_cstr("geo-distance3"),
659
- UINT2NUM(GRN_OP_GEO_DISTANCE3)));
506
+ OPERATOR_NEW(rb_cGrnOperator, "geo-distance3", GEO_DISTANCE3));
660
507
  rb_define_const(rb_cGrnOperator, "GEO_DISTANCE4",
661
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
662
- rb_str_new_cstr("geo-distance4"),
663
- UINT2NUM(GRN_OP_GEO_DISTANCE4)));
508
+ OPERATOR_NEW(rb_cGrnOperator, "geo-distance4", GEO_DISTANCE4));
664
509
  rb_define_const(rb_cGrnOperator, "GEO_WITHINP5",
665
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
666
- rb_str_new_cstr("geo-withinp5"),
667
- UINT2NUM(GRN_OP_GEO_WITHINP5)));
510
+ OPERATOR_NEW(rb_cGrnOperator, "geo-withinp5", GEO_WITHINP5));
668
511
  rb_define_const(rb_cGrnOperator, "GEO_WITHINP6",
669
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
670
- rb_str_new_cstr("geo-withinp6"),
671
- UINT2NUM(GRN_OP_GEO_WITHINP6)));
512
+ OPERATOR_NEW(rb_cGrnOperator, "geo-withinp6", GEO_WITHINP6));
672
513
  rb_define_const(rb_cGrnOperator, "GEO_WITHINP8",
673
- rb_funcall(rb_cGrnOperator, rb_intern("new"), 2,
674
- rb_str_new_cstr("geo-withinp8"),
675
- UINT2NUM(GRN_OP_GEO_WITHINP8)));
514
+ OPERATOR_NEW(rb_cGrnOperator, "geo-withinp8", GEO_WITHINP8));
676
515
  */
516
+
517
+ #undef OPERATOR_NEW
677
518
  }
@@ -1,7 +1,7 @@
1
1
  /* -*- coding: utf-8; mode: C; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2
2
  /* vim: set sts=4 sw=4 ts=8 noet: */
3
3
  /*
4
- Copyright (C) 2009-2014 Kouhei Sutou <kou@clear-code.com>
4
+ Copyright (C) 2009-2021 Sutou Kouhei <kou@clear-code.com>
5
5
 
6
6
  This library is free software; you can redistribute it and/or
7
7
  modify it under the terms of the GNU Lesser General Public
@@ -19,7 +19,7 @@
19
19
 
20
20
  #include "rb-grn.h"
21
21
 
22
- #define SELF(object) ((RbGrnTableKeySupport *)DATA_PTR(object))
22
+ #define SELF(object) ((RbGrnTableKeySupport *)RTYPEDDATA_DATA(object))
23
23
 
24
24
  VALUE rb_cGrnPatriciaTrie;
25
25
 
@@ -1,6 +1,6 @@
1
1
  /* -*- coding: utf-8; mode: C; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2
2
  /*
3
- Copyright (C) 2011-2015 Kouhei Sutou <kou@clear-code.com>
3
+ Copyright (C) 2011-2021 Sutou Kouhei <kou@clear-code.com>
4
4
  Copyright (C) 2016 Masafumi Yokoyama <yokoyama@clear-code.com>
5
5
 
6
6
  This library is free software; you can redistribute it and/or
@@ -17,34 +17,19 @@
17
17
  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18
18
  */
19
19
 
20
- #include "rb-grn.h"
21
-
22
- #define SELF(object) (RVAL2GRNCONTEXT(object))
23
-
24
- static VALUE cGrnPlugin;
25
-
26
20
  /*
27
21
  * Document-class: Groonga::Plugin
28
22
  *
29
- * プラグイン。現在のところ、Rubyでgroongaのプラグインを作成
23
+ * プラグイン。現在のところ、RubyでGroongaのプラグインを作成
30
24
  * することはできず、Cで作成された既存のプラグインを登録する
31
25
  * ことができるだけです。
32
26
  */
33
27
 
34
- grn_id
35
- rb_grn_plugin_from_ruby_object (VALUE object)
36
- {
37
- RbGrnPlugin *rb_grn_plugin;
28
+ #include "rb-grn.h"
38
29
 
39
- if (!RVAL2CBOOL(rb_obj_is_kind_of(object, cGrnPlugin))) {
40
- rb_raise(rb_eTypeError, "not a groonga plugin");
41
- }
30
+ #define SELF(object) (RVAL2GRNCONTEXT(object))
42
31
 
43
- Data_Get_Struct(object, RbGrnPlugin, rb_grn_plugin);
44
- if (!rb_grn_plugin)
45
- rb_raise(rb_eGrnError, "groonga plugin is NULL");
46
- return rb_grn_plugin->id;
47
- }
32
+ static VALUE cGrnPlugin;
48
33
 
49
34
  void
50
35
  rb_grn_plugin_fin (grn_id id)
@@ -59,10 +44,37 @@ rb_grn_plugin_free (void *pointer)
59
44
  xfree(rb_grn_plugin);
60
45
  }
61
46
 
47
+ static rb_data_type_t data_type = {
48
+ "Groonga::Plugin",
49
+ {
50
+ NULL,
51
+ rb_grn_plugin_free,
52
+ NULL,
53
+ },
54
+ NULL,
55
+ NULL,
56
+ RUBY_TYPED_FREE_IMMEDIATELY
57
+ };
58
+
59
+ grn_id
60
+ rb_grn_plugin_from_ruby_object (VALUE object)
61
+ {
62
+ RbGrnPlugin *rb_grn_plugin;
63
+
64
+ if (!RVAL2CBOOL(rb_obj_is_kind_of(object, cGrnPlugin))) {
65
+ rb_raise(rb_eTypeError, "not a groonga plugin");
66
+ }
67
+
68
+ TypedData_Get_Struct(object, RbGrnPlugin, &data_type, rb_grn_plugin);
69
+ if (!rb_grn_plugin)
70
+ rb_raise(rb_eGrnError, "groonga plugin is NULL");
71
+ return rb_grn_plugin->id;
72
+ }
73
+
62
74
  static VALUE
63
75
  rb_grn_plugin_alloc (VALUE klass)
64
76
  {
65
- return Data_Wrap_Struct(klass, NULL, rb_grn_plugin_free, NULL);
77
+ return TypedData_Wrap_Struct(klass, &data_type, NULL);
66
78
  }
67
79
 
68
80
  /*
@@ -245,7 +257,7 @@ rb_grn_plugin_s_names (int argc, VALUE *argv, VALUE klass)
245
257
  void
246
258
  rb_grn_init_plugin (VALUE mGrn)
247
259
  {
248
- cGrnPlugin = rb_define_class_under(mGrn, "Plugin", rb_cData);
260
+ cGrnPlugin = rb_define_class_under(mGrn, "Plugin", rb_cObject);
249
261
  rb_define_alloc_func(cGrnPlugin, rb_grn_plugin_alloc);
250
262
 
251
263
  rb_define_singleton_method(cGrnPlugin, "register",
@@ -1,6 +1,6 @@
1
1
  /* -*- coding: utf-8; mode: C; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2
2
  /*
3
- Copyright (C) 2016 Kouhei Sutou <kou@clear-code.com>
3
+ Copyright (C) 2016-2021 Sutou Kouhei <kou@clear-code.com>
4
4
 
5
5
  This library is free software; you can redistribute it and/or
6
6
  modify it under the terms of the GNU Lesser General Public
@@ -60,5 +60,5 @@ void
60
60
  rb_grn_init_request_timer_id (VALUE mGrn)
61
61
  {
62
62
  rb_cGrnRequestTimerID =
63
- rb_define_class_under(mGrn, "RequestTimerID", rb_cData);
63
+ rb_define_class_under(mGrn, "RequestTimerID", rb_cObject);
64
64
  }
@@ -1,6 +1,6 @@
1
1
  /* -*- coding: utf-8; mode: C; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2
2
  /*
3
- Copyright (C) 2009-2014 Kouhei Sutou <kou@clear-code.com>
3
+ Copyright (C) 2009-2021 Sutou Kouhei <kou@clear-code.com>
4
4
 
5
5
  This library is free software; you can redistribute it and/or
6
6
  modify it under the terms of the GNU Lesser General Public
@@ -18,7 +18,7 @@
18
18
 
19
19
  #include "rb-grn.h"
20
20
 
21
- #define SELF(object) ((RbGrnSnippet *)DATA_PTR(object))
21
+ #define SELF(object) ((RbGrnSnippet *)RTYPEDDATA_DATA(object))
22
22
 
23
23
  VALUE rb_cGrnSnippet;
24
24
 
@@ -149,7 +149,7 @@ rb_grn_snippet_initialize (int argc, VALUE *argv, VALUE self)
149
149
  rb_grn_context_check(context, rb_ary_new_from_values(argc, argv));
150
150
 
151
151
  rb_grn_object_assign(Qnil, self, rb_context, context, snippet);
152
- rb_grn_context_register_floating_object(DATA_PTR(self));
152
+ rb_grn_context_register_floating_object(RTYPEDDATA_DATA(self));
153
153
 
154
154
  rb_iv_set(self, "@context", rb_context);
155
155
 
@@ -1,6 +1,6 @@
1
1
  /* -*- coding: utf-8; mode: C; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2
2
  /*
3
- Copyright (C) 2009 Kouhei Sutou <kou@clear-code.com>
3
+ Copyright (C) 2009-2021 Sutou Kouhei <kou@clear-code.com>
4
4
 
5
5
  This library is free software; you can redistribute it and/or
6
6
  modify it under the terms of the GNU Lesser General Public
@@ -18,7 +18,7 @@
18
18
 
19
19
  #include "rb-grn.h"
20
20
 
21
- #define SELF(object) ((RbGrnTableCursor *)DATA_PTR(object))
21
+ #define SELF(object) ((RbGrnTableCursor *)RTYPEDDATA_DATA(object))
22
22
 
23
23
  VALUE rb_mGrnTableCursorKeySupport;
24
24