6
6
#include < utility>
7
7
#include < vector>
8
8
9
+ #include < sdsl/vectors.hpp>
9
10
#include < sdsl/wavelet_trees.hpp>
10
11
11
12
#include < pybind11/pybind11.h>
@@ -388,22 +389,186 @@ inline auto add_wt_int(py::module& m, std::string&& base_name)
388
389
return cls;
389
390
}
390
391
392
+ template <class bit_vector =sdsl::bit_vector>
393
+ inline auto add_wm_int (py::module & m, std::string&& base_name)
394
+ {
395
+ auto cls = add_wavelet_class<sdsl::wm_int<bit_vector>>(
396
+ m, (" WaveletMatrixInt" + base_name).c_str (), doc_wm_int);
397
+ m.attr (" wavelet_matrix_int" ).attr (" __setitem__" )(base_name, cls);
398
+
399
+ return cls;
400
+ }
401
+
402
+ template <class bit_vector =sdsl::bit_vector>
403
+ inline auto add_wt_huff (py::module & m, std::string&& base_name)
404
+ {
405
+ auto cls = add_wavelet_class<sdsl::wt_huff<bit_vector>>(
406
+ m, (" WaveletTreeHuffman" + base_name).c_str (), doc_wt_huff);
407
+ m.attr (" wavelet_tree_huffman" ).attr (" __setitem__" )(base_name, cls);
408
+
409
+ return cls;
410
+ }
411
+
412
+ template <class bit_vector =sdsl::bit_vector>
413
+ inline auto add_wt_huff_int (py::module & m, std::string&& base_name)
414
+ {
415
+ auto cls = add_wavelet_class<sdsl::wt_huff_int<bit_vector>>(
416
+ m, (" WaveletTreeHuffmanInt" + base_name).c_str (), doc_wt_huff);
417
+ m.attr (" wavelet_tree_huffman_int" ).attr (" __setitem__" )(base_name, cls);
418
+
419
+ return cls;
420
+ }
421
+
422
+
423
+ template <class bit_vector =sdsl::bit_vector>
424
+ inline auto add_wt_hutu (py::module & m, std::string&& base_name)
425
+ {
426
+ auto cls = add_wavelet_class<sdsl::wt_hutu<bit_vector>>(
427
+ m, (" WaveletTreeHuTucker" + base_name).c_str (), doc_wt_hutu);
428
+ m.attr (" wavelet_tree_hu_tucker" ).attr (" __setitem__" )(base_name, cls);
429
+
430
+ return cls;
431
+ }
432
+
433
+ template <class bit_vector =sdsl::bit_vector>
434
+ inline auto add_wt_hutu_int (py::module & m, std::string&& base_name)
435
+ {
436
+ auto cls = add_wavelet_class<sdsl::wt_hutu_int<bit_vector>>(
437
+ m, (" WaveletTreeHuTuckerInt" + base_name).c_str (), doc_wt_hutu);
438
+ m.attr (" wavelet_tree_hu_tucker_int" ).attr (" __setitem__" )(base_name, cls);
439
+
440
+ return cls;
441
+ }
442
+
443
+
444
+ template <class bit_vector =sdsl::bit_vector>
445
+ inline auto add_wt_blcd (py::module & m, std::string&& base_name)
446
+ {
447
+ auto cls = add_wavelet_class<sdsl::wt_blcd<bit_vector>>(
448
+ m, (" WaveletTreeBalanced" + base_name).c_str (), doc_wt_blcd);
449
+ m.attr (" wavelet_tree_balanced" ).attr (" __setitem__" )(base_name, cls);
450
+
451
+ return cls;
452
+ }
453
+
454
+
455
+ template <class bit_vector =sdsl::bit_vector>
456
+ inline auto add_wt_blcd_int (py::module & m, std::string&& base_name)
457
+ {
458
+ auto cls = add_wavelet_class<sdsl::wt_huff_int<bit_vector>>(
459
+ m, (" WaveletTreeBalancedInt" + base_name).c_str (), doc_wt_blcd);
460
+ m.attr (" wavelet_tree_balanced_int" ).attr (" __setitem__" )(base_name, cls);
461
+
462
+ return cls;
463
+ }
464
+
391
465
392
466
template <class bit_vector =sdsl::bit_vector>
393
467
inline auto add_wt_int (py::module & m, const std::string& base_name)
394
468
{ return add_wt_int<bit_vector>(m, std::string (base_name)); }
395
469
396
470
471
+ template <class bit_vector =sdsl::bit_vector>
472
+ inline auto add_wm_int (py::module & m, const std::string& base_name)
473
+ { return add_wm_int<bit_vector>(m, std::string (base_name)); }
474
+
475
+
476
+ template <class bit_vector =sdsl::bit_vector>
477
+ inline auto add_wt_huff (py::module & m, const std::string& base_name)
478
+ { return add_wt_huff<bit_vector>(m, std::string (base_name)); }
479
+
480
+ template <class bit_vector =sdsl::bit_vector>
481
+ inline auto add_wt_huff_int (py::module & m, const std::string& base_name)
482
+ { return add_wt_huff_int<bit_vector>(m, std::string (base_name)); }
483
+
484
+ template <class bit_vector =sdsl::bit_vector>
485
+ inline auto add_wt_hutu (py::module & m, const std::string& base_name)
486
+ { return add_wt_hutu<bit_vector>(m, std::string (base_name)); }
487
+
488
+ template <class bit_vector =sdsl::bit_vector>
489
+ inline auto add_wt_hutu_int (py::module & m, const std::string& base_name)
490
+ { return add_wt_hutu_int<bit_vector>(m, std::string (base_name)); }
491
+
492
+ template <class bit_vector =sdsl::bit_vector>
493
+ inline auto add_wt_blcd (py::module & m, const std::string& base_name)
494
+ { return add_wt_blcd<bit_vector>(m, std::string (base_name)); }
495
+
496
+ template <class bit_vector =sdsl::bit_vector>
497
+ inline auto add_wt_blcd_int (py::module & m, const std::string& base_name)
498
+ { return add_wt_blcd_int<bit_vector>(m, std::string (base_name)); }
499
+
500
+
397
501
template <class bit_vector =sdsl::bit_vector>
398
502
inline auto add_wt_int (py::module & m, const py::class_<bit_vector>& base)
399
503
{
400
504
auto base_name = py::cast<std::string>(base.attr (" __name__" ));
401
-
402
505
auto cls = add_wt_int<bit_vector>(m, base_name);
403
-
404
- m.attr (" wavelet_tree_int" ).attr (" __setitem__" )(base_name, cls);
405
506
m.attr (" wavelet_tree_int_by_base" ).attr (" __setitem__" )(base, cls);
507
+ return cls;
508
+ }
509
+
510
+
511
+ template <class bit_vector =sdsl::bit_vector>
512
+ inline auto add_wm_int (py::module & m, const py::class_<bit_vector>& base)
513
+ {
514
+ auto base_name = py::cast<std::string>(base.attr (" __name__" ));
515
+ auto cls = add_wm_int<bit_vector>(m, base_name);
516
+ m.attr (" wavelet_matrix_int_by_base" ).attr (" __setitem__" )(base, cls);
517
+ return cls;
518
+ }
519
+
520
+ template <class bit_vector =sdsl::bit_vector>
521
+ inline auto add_wt_huff (py::module & m, const py::class_<bit_vector>& base)
522
+ {
523
+ auto base_name = py::cast<std::string>(base.attr (" __name__" ));
524
+ auto cls = add_wt_huff<bit_vector>(m, base_name);
525
+ m.attr (" wavelet_tree_huffman_by_base" ).attr (" __setitem__" )(base, cls);
526
+ return cls;
527
+ }
528
+
529
+ template <class bit_vector =sdsl::bit_vector>
530
+ inline auto add_wt_huff_int (py::module & m, const py::class_<bit_vector>& base)
531
+ {
532
+ auto base_name = py::cast<std::string>(base.attr (" __name__" ));
533
+ auto cls = add_wt_huff_int<bit_vector>(m, base_name);
534
+ m.attr (" wavelet_tree_huffman_int_by_base" ).attr (" __setitem__" )(base, cls);
535
+ return cls;
536
+ }
537
+
538
+ template <class bit_vector =sdsl::bit_vector>
539
+ inline auto add_wt_hutu (py::module & m, const py::class_<bit_vector>& base)
540
+ {
541
+ auto base_name = py::cast<std::string>(base.attr (" __name__" ));
542
+ auto cls = add_wt_hutu<bit_vector>(m, base_name);
543
+ m.attr (" wavelet_tree_hu_tucker_by_base" ).attr (" __setitem__" )(base, cls);
544
+ return cls;
545
+ }
406
546
547
+ template <class bit_vector =sdsl::bit_vector>
548
+ inline auto add_wt_hutu_int (py::module & m, const py::class_<bit_vector>& base)
549
+ {
550
+ auto base_name = py::cast<std::string>(base.attr (" __name__" ));
551
+ auto cls = add_wt_hutu_int<bit_vector>(m, base_name);
552
+ m.attr (" wavelet_tree_hu_tucker_int_by_base" ).attr (" __setitem__" )(base, cls);
553
+ return cls;
554
+ }
555
+
556
+
557
+ template <class bit_vector =sdsl::bit_vector>
558
+ inline auto add_wt_blcd (py::module & m, const py::class_<bit_vector>& base)
559
+ {
560
+ auto base_name = py::cast<std::string>(base.attr (" __name__" ));
561
+ auto cls = add_wt_blcd<bit_vector>(m, base_name);
562
+ m.attr (" wavelet_tree_balanced_by_base" ).attr (" __setitem__" )(base, cls);
563
+ return cls;
564
+ }
565
+
566
+ template <class bit_vector =sdsl::bit_vector>
567
+ inline auto add_wt_blcd_int (py::module & m, const py::class_<bit_vector>& base)
568
+ {
569
+ auto base_name = py::cast<std::string>(base.attr (" __name__" ));
570
+ auto cls = add_wt_blcd_int<bit_vector>(m, base_name);
571
+ m.attr (" wavelet_tree_balanced_int_by_base" ).attr (" __setitem__" )(base, cls);
407
572
return cls;
408
573
}
409
574
@@ -415,30 +580,70 @@ inline auto add_wavelet(py::module& m,
415
580
m.attr (" all_wavelet_trees" ) = py::list ();
416
581
m.attr (" wavelet_tree_int" ) = py::dict ();
417
582
m.attr (" wavelet_tree_int_by_base" ) = py::dict ();
583
+ m.attr (" wavelet_matrix_int" ) = py::dict ();
584
+ m.attr (" wavelet_matrix_int_by_base" ) = py::dict ();
585
+ m.attr (" wavelet_tree_huffman" ) = py::dict ();
586
+ m.attr (" wavelet_tree_huffman_by_base" ) = py::dict ();
587
+ m.attr (" wavelet_tree_huffman_int" ) = py::dict ();
588
+ m.attr (" wavelet_tree_huffman_int_by_base" ) = py::dict ();
589
+ m.attr (" wavelet_tree_hu_tucker" ) = py::dict ();
590
+ m.attr (" wavelet_tree_hu_tucker_by_base" ) = py::dict ();
591
+ m.attr (" wavelet_tree_hu_tucker_int" ) = py::dict ();
592
+ m.attr (" wavelet_tree_hu_tucker_int_by_base" ) = py::dict ();
593
+ m.attr (" wavelet_tree_balanced" ) = py::dict ();
594
+ m.attr (" wavelet_tree_balanced_by_base" ) = py::dict ();
595
+ m.attr (" wavelet_tree_balanced_int" ) = py::dict ();
596
+ m.attr (" wavelet_tree_balanced_int_by_base" ) = py::dict ();
418
597
419
598
return std::make_tuple (
420
599
add_wt_int<>(m, " " ),
421
600
add_wt_int (m, std::get<0 >(t)),
422
- add_wt_int (m, std::get<3 >(t)),
423
- // add_wt_int(m, std::get<5>(t)),
424
- add_wt_int (m, std::get<6 >(t)),
425
- add_wt_int (m, std::get<8 >(t)),
426
- add_wt_int (m, std::get<10 >(t)),
427
- add_wavelet_class<sdsl::wm_int<>>(m, " WaveletMatrixInt" , doc_wm_int),
428
-
429
- add_wavelet_class<sdsl::wt_gmr_rs<>>(m, " WaveletTreeGMRrs" ,
601
+ add_wt_int (m, std::get<1 >(t)),
602
+ add_wt_int (m, std::get<2 >(t)),
603
+
604
+ add_wm_int<>(m, " " ),
605
+ add_wm_int (m, std::get<0 >(t)),
606
+ add_wm_int (m, std::get<1 >(t)),
607
+ add_wm_int (m, std::get<2 >(t)),
608
+
609
+ add_wt_huff<>(m, " " ),
610
+ add_wt_huff (m, std::get<0 >(t)),
611
+ add_wt_huff (m, std::get<1 >(t)),
612
+ add_wt_huff (m, std::get<2 >(t)),
613
+
614
+ add_wt_huff_int<>(m, " " ),
615
+ add_wt_huff_int (m, std::get<0 >(t)),
616
+ add_wt_huff_int (m, std::get<1 >(t)),
617
+ add_wt_huff_int (m, std::get<2 >(t)),
618
+
619
+ add_wt_hutu<>(m, " " ),
620
+ add_wt_hutu (m, std::get<0 >(t)),
621
+ add_wt_hutu (m, std::get<1 >(t)),
622
+ add_wt_hutu (m, std::get<2 >(t)),
623
+
624
+ add_wt_hutu_int<>(m, " " ),
625
+ add_wt_hutu_int (m, std::get<0 >(t)),
626
+ add_wt_hutu_int (m, std::get<1 >(t)),
627
+ add_wt_hutu_int (m, std::get<2 >(t)),
628
+
629
+ add_wt_blcd<>(m, " " ),
630
+ add_wt_blcd (m, std::get<0 >(t)),
631
+ add_wt_blcd (m, std::get<1 >(t)),
632
+ add_wt_blcd (m, std::get<2 >(t)),
633
+
634
+ add_wt_blcd_int<>(m, " " ),
635
+ add_wt_blcd_int (m, std::get<0 >(t)),
636
+ add_wt_blcd_int (m, std::get<1 >(t)),
637
+ add_wt_blcd_int (m, std::get<2 >(t)),
638
+
639
+ add_wavelet_class<sdsl::wt_gmr_rs<>>(m, " WaveletTreeGMRrankselect" ,
430
640
doc_wt_gmr_rs),
431
- add_wavelet_class<sdsl::wt_gmr<>>(m, " WaveletTreeGMR" , doc_wt_gmr),
432
- add_wavelet_class<sdsl::wt_huff<>>(m, " WaveletTreeHuffman" ,
433
- doc_wt_huff),
434
- add_wavelet_class<sdsl::wt_huff_int<>>(m, " WaveletTreeHuffmanInt" ,
435
- doc_wt_huff),
436
- add_wavelet_class<sdsl::wt_blcd<>>(m, " WaveletTreeBlcd" , doc_wt_blcd),
437
- add_wavelet_class<sdsl::wt_blcd_int<>>(m, " WaveletTreeBlcdInt" ,
438
- doc_wt_blcd),
439
- add_wavelet_class<sdsl::wt_hutu<>>(m, " WaveletTreeHuTucker" ,
440
- doc_wt_hutu),
441
- add_wavelet_class<sdsl::wt_hutu_int<>>(m, " WaveletTreeHuTuckerInt" ,
442
- doc_wt_hutu),
641
+ add_wavelet_class<sdsl::wt_gmr_rs<sdsl::enc_vector<>>>(
642
+ m, " WaveletTreeGMRrankselectEnc" , doc_wt_gmr_rs),
643
+ add_wavelet_class<sdsl::wt_gmr<>>(m, " WaveletTreeGolynskiMunroRao" ,
644
+ doc_wt_gmr),
645
+ add_wavelet_class<sdsl::wt_gmr<sdsl::enc_vector<>>>(
646
+ m, " WaveletTreeGolynskiMunroRaoEnc" , doc_wt_gmr),
647
+
443
648
add_wavelet_class<sdsl::wt_ap<>>(m, " WaveletTreeAP" , doc_wt_ap));
444
649
}
0 commit comments