@@ -36,36 +36,54 @@ PYBIND11_MODULE(backend, m){
3636 .def_static (" getRegex" , &FilePattern::getRegex)
3737 .def_static (" inferPattern" , py::overload_cast<const std::string&, std::string&, const std::string&>(&FilePattern::inferPattern))
3838 .def_static (" inferPattern" , py::overload_cast<std::vector<std::string>&, std::string&>(&FilePattern::inferPattern))
39- .def (" __iter__ " , [](FilePattern &v){
39+ .def (" isGrouped " , [](FilePattern &v){
4040 auto & pattern_obj = v.getPatternObject ();
41+ return !(pattern_obj->group_ .size () == 0 || (pattern_obj->group_ .size () != 0 && pattern_obj->group_ [0 ] == " " ));
42+ })
43+ .def (" iterator" , [](FilePattern &v){
44+
45+ auto & pattern_obj = v.getPatternObject ();
46+
4147 if (pattern_obj != nullptr ) {
42- if (pattern_obj->external ) {
4348
44- if (pattern_obj->group_ .size () == 0 || (pattern_obj->group_ .size () != 0 && pattern_obj->group_ [0 ] == " " )) {
49+ return py::make_iterator (pattern_obj->valid_files_ .begin (), pattern_obj->valid_files_ .end ());
50+
51+ }
52+
53+ }, py::keep_alive<0 , 1 >())
54+ .def (" iteratorExternal" , [](FilePattern &v){
4555
46- v.next ();
47- return py::make_iterator (pattern_obj->current_block_ .begin (), pattern_obj->current_block_ .end ());
56+ auto & pattern_obj = v.getPatternObject ();
4857
49- } else {
58+ if (pattern_obj != nullptr ) {
59+
60+ v.next ();
61+ return py::make_iterator (pattern_obj->current_block_ .begin (), pattern_obj->current_block_ .end ());
5062
51- v.nextGroup ();
52- return py::make_iterator (pattern_obj->current_group_ .begin (), pattern_obj->current_group_ .end ());
53- }
63+ }
5464
55- } else {
65+ }, py::keep_alive<0 , 1 >())
66+ .def (" iteratorGrouped" , [](FilePattern &v){
5667
57- if (pattern_obj->group_ .size () == 0 || (pattern_obj->group_ .size () != 0 && pattern_obj->group_ [0 ] == " " )){
68+ auto & pattern_obj = v.getPatternObject ();
69+
70+ if (pattern_obj != nullptr ) {
71+
72+ return py::make_iterator (pattern_obj->valid_grouped_files_ .begin (), pattern_obj->valid_grouped_files_ .end ());
73+
74+ }
75+
76+ }, py::keep_alive<0 , 1 >())
77+ .def (" iteratorGroupedExternal" , [](FilePattern &v){
78+
79+ auto & pattern_obj = v.getPatternObject ();
80+
81+ if (pattern_obj != nullptr ) {
5882
59- return py::make_iterator (pattern_obj->valid_files_ .begin (), pattern_obj->valid_files_ .end ());
60- // return py::make_iterator(pattern_obj->valid_grouped_files_.begin(), pattern_obj->valid_grouped_files_.end());
61- }
62- else {
83+ v.nextGroup ();
84+ return py::make_iterator (pattern_obj->current_group_ .begin (), pattern_obj->current_group_ .end ());
6385
64- return py::make_iterator (pattern_obj->valid_grouped_files_ .begin (), pattern_obj->valid_grouped_files_ .end ());
65- }
66- }
6786 }
68- },
69- py::keep_alive<0 , 1 >()); // Keep vector alive while iterator is used
7087
88+ }, py::keep_alive<0 , 1 >());
7189}
0 commit comments