rbind 0.0.34 → 0.0.35
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.
- checksums.yaml +4 -4
 - data/lib/rbind/default_parser.rb +2 -1
 - data/lib/rbind/tools/hdr_parser.py +94 -27
 - data/rbind.gemspec +2 -2
 - metadata +3 -4
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: '0892dada4084e4b38bcb49d3dca8106a038e5a2c82a4a87d420532327ac942e7'
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 482377fb03e5b125550de5596365a01be1762e5bcc5596dec3b37dec5f27a0aa
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 19adf245b190083bac225917b50ac8169deef19137364196a3623f7e3d547fb5a9c773ff59193589a204ff2666184c1805e4d359abd76a05aa504bf0165667a7
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: a0e111070064d5a1baca4bfb7799dc98dd6ed034d3a207a04e5005db254beb7016f50038b3dae51748fe9834fcb1edbb2344969a8a88242502fbd951c684dabf
         
     | 
    
        data/lib/rbind/default_parser.rb
    CHANGED
    
    | 
         @@ -367,7 +367,8 @@ module Rbind 
     | 
|
| 
       367 
367 
     | 
    
         
             
                        @extern_package_name = extern_package_name
         
     | 
| 
       368 
368 
     | 
    
         | 
| 
       369 
369 
     | 
    
         
             
                        a = split(string)
         
     | 
| 
       370 
     | 
    
         
            -
                        #remove number at the end of the file
         
     | 
| 
      
 370 
     | 
    
         
            +
                        #remove namespances and number at the end of the file
         
     | 
| 
      
 371 
     | 
    
         
            +
                        a.pop if (a.last =~/namespaces:/) == 0
         
     | 
| 
       371 
372 
     | 
    
         
             
                        a.pop if a.last.to_i != 0
         
     | 
| 
       372 
373 
     | 
    
         | 
| 
       373 
374 
     | 
    
         
             
                        line_number = 1
         
     | 
| 
         @@ -52,13 +52,13 @@ class CppHeaderParser(object): 
     | 
|
| 
       52 
52 
     | 
    
         
             
                def get_macro_arg(self, arg_str, npos):
         
     | 
| 
       53 
53 
     | 
    
         
             
                    npos2 = npos3 = arg_str.find("(", npos)
         
     | 
| 
       54 
54 
     | 
    
         
             
                    if npos2 < 0:
         
     | 
| 
       55 
     | 
    
         
            -
                        print("Error: no arguments for the macro at %d" % (self.lineno 
     | 
| 
      
 55 
     | 
    
         
            +
                        print("Error: no arguments for the macro at %s:%d" % (self.hname, self.lineno))
         
     | 
| 
       56 
56 
     | 
    
         
             
                        sys.exit(-1)
         
     | 
| 
       57 
57 
     | 
    
         
             
                    balance = 1
         
     | 
| 
       58 
58 
     | 
    
         
             
                    while 1:
         
     | 
| 
       59 
59 
     | 
    
         
             
                        t, npos3 = self.find_next_token(arg_str, ['(', ')'], npos3+1)
         
     | 
| 
       60 
60 
     | 
    
         
             
                        if npos3 < 0:
         
     | 
| 
       61 
     | 
    
         
            -
                            print("Error: no matching ')' in the macro call at %d" % (self.lineno 
     | 
| 
      
 61 
     | 
    
         
            +
                            print("Error: no matching ')' in the macro call at %s:%d" % (self.hname, self.lineno))
         
     | 
| 
       62 
62 
     | 
    
         
             
                            sys.exit(-1)
         
     | 
| 
       63 
63 
     | 
    
         
             
                        if t == '(':
         
     | 
| 
       64 
64 
     | 
    
         
             
                            balance += 1
         
     | 
| 
         @@ -110,6 +110,11 @@ class CppHeaderParser(object): 
     | 
|
| 
       110 
110 
     | 
    
         
             
                    if npos >= 0:
         
     | 
| 
       111 
111 
     | 
    
         
             
                        modlist.append("/C")
         
     | 
| 
       112 
112 
     | 
    
         | 
| 
      
 113 
     | 
    
         
            +
                    npos = arg_str.find("&&")
         
     | 
| 
      
 114 
     | 
    
         
            +
                    if npos >= 0:
         
     | 
| 
      
 115 
     | 
    
         
            +
                        arg_str = arg_str.replace("&&", '')
         
     | 
| 
      
 116 
     | 
    
         
            +
                        modlist.append("/RRef")
         
     | 
| 
      
 117 
     | 
    
         
            +
             
     | 
| 
       113 
118 
     | 
    
         
             
                    npos = arg_str.find("&")
         
     | 
| 
       114 
119 
     | 
    
         
             
                    if npos >= 0:
         
     | 
| 
       115 
120 
     | 
    
         
             
                        modlist.append("/Ref")
         
     | 
| 
         @@ -160,7 +165,7 @@ class CppHeaderParser(object): 
     | 
|
| 
       160 
165 
     | 
    
         
             
                            angle_stack.append(0)
         
     | 
| 
       161 
166 
     | 
    
         
             
                        elif w == "," or w == '>':
         
     | 
| 
       162 
167 
     | 
    
         
             
                            if not angle_stack:
         
     | 
| 
       163 
     | 
    
         
            -
                                print("Error at %d: argument contains ',' or '>' not within template arguments" % (self.lineno 
     | 
| 
      
 168 
     | 
    
         
            +
                                print("Error at %s:%d: argument contains ',' or '>' not within template arguments" % (self.hname, self.lineno))
         
     | 
| 
       164 
169 
     | 
    
         
             
                                sys.exit(-1)
         
     | 
| 
       165 
170 
     | 
    
         
             
                            if w == ",":
         
     | 
| 
       166 
171 
     | 
    
         
             
                                arg_type += "_and_"
         
     | 
| 
         @@ -190,7 +195,7 @@ class CppHeaderParser(object): 
     | 
|
| 
       190 
195 
     | 
    
         
             
                        p1 = arg_name.find("[")
         
     | 
| 
       191 
196 
     | 
    
         
             
                        p2 = arg_name.find("]",p1+1)
         
     | 
| 
       192 
197 
     | 
    
         
             
                        if p2 < 0:
         
     | 
| 
       193 
     | 
    
         
            -
                            print("Error at %d: no closing ]" % (self.lineno 
     | 
| 
      
 198 
     | 
    
         
            +
                            print("Error at %s:%d: no closing ]" % (self.hname, self.lineno))
         
     | 
| 
       194 
199 
     | 
    
         
             
                            sys.exit(-1)
         
     | 
| 
       195 
200 
     | 
    
         
             
                        counter_str = arg_name[p1+1:p2].strip()
         
     | 
| 
       196 
201 
     | 
    
         
             
                        if counter_str == "":
         
     | 
| 
         @@ -254,6 +259,8 @@ class CppHeaderParser(object): 
     | 
|
| 
       254 
259 
     | 
    
         
             
                        l = l.replace("CV_EXPORTS_W_SIMPLE", "")
         
     | 
| 
       255 
260 
     | 
    
         
             
                        modlist.append("/Simple")
         
     | 
| 
       256 
261 
     | 
    
         
             
                    npos = l.find("CV_EXPORTS_AS")
         
     | 
| 
      
 262 
     | 
    
         
            +
                    if npos < 0:
         
     | 
| 
      
 263 
     | 
    
         
            +
                        npos = l.find('CV_WRAP_AS')
         
     | 
| 
       257 
264 
     | 
    
         
             
                    if npos >= 0:
         
     | 
| 
       258 
265 
     | 
    
         
             
                        macro_arg, npos3 = self.get_macro_arg(l, npos)
         
     | 
| 
       259 
266 
     | 
    
         
             
                        modlist.append("=" + macro_arg)
         
     | 
| 
         @@ -429,10 +436,18 @@ class CppHeaderParser(object): 
     | 
|
| 
       429 
436 
     | 
    
         
             
                    # filter off some common prefixes, which are meaningless for Python wrappers.
         
     | 
| 
       430 
437 
     | 
    
         
             
                    # note that we do not strip "static" prefix, which does matter;
         
     | 
| 
       431 
438 
     | 
    
         
             
                    # it means class methods, not instance methods
         
     | 
| 
       432 
     | 
    
         
            -
                    decl_str = self.batch_replace(decl_str, [("static inline", ""), 
     | 
| 
       433 
     | 
    
         
            -
             
     | 
| 
       434 
     | 
    
         
            -
             
     | 
| 
       435 
     | 
    
         
            -
             
     | 
| 
      
 439 
     | 
    
         
            +
                    decl_str = self.batch_replace(decl_str, [("static inline", ""),
         
     | 
| 
      
 440 
     | 
    
         
            +
                                                             ("inline", ""),
         
     | 
| 
      
 441 
     | 
    
         
            +
                                                             ("explicit ", ""),
         
     | 
| 
      
 442 
     | 
    
         
            +
                                                             ("CV_EXPORTS_W", ""),
         
     | 
| 
      
 443 
     | 
    
         
            +
                                                             ("CV_EXPORTS", ""),
         
     | 
| 
      
 444 
     | 
    
         
            +
                                                             ("CV_CDECL", ""),
         
     | 
| 
      
 445 
     | 
    
         
            +
                                                             ("CV_WRAP ", " "),
         
     | 
| 
      
 446 
     | 
    
         
            +
                                                             ("CV_INLINE", ""),
         
     | 
| 
      
 447 
     | 
    
         
            +
                                                             ("CV_DEPRECATED", ""),
         
     | 
| 
      
 448 
     | 
    
         
            +
                                                             ("CV_DEPRECATED_EXTERNAL", ""),
         
     | 
| 
      
 449 
     | 
    
         
            +
                                                             ("CV_NODISCARD_STD", ""),
         
     | 
| 
      
 450 
     | 
    
         
            +
                                                             ("CV_NODISCARD", "")]).strip()
         
     | 
| 
       436 
451 
     | 
    
         | 
| 
       437 
452 
     | 
    
         
             
                    if decl_str.strip().startswith('virtual'):
         
     | 
| 
       438 
453 
     | 
    
         
             
                        virtual_method = True
         
     | 
| 
         @@ -570,8 +585,8 @@ class CppHeaderParser(object): 
     | 
|
| 
       570 
585 
     | 
    
         
             
                                arg_type, arg_name, modlist, argno = self.parse_arg(a, argno)
         
     | 
| 
       571 
586 
     | 
    
         
             
                                if self.wrap_mode:
         
     | 
| 
       572 
587 
     | 
    
         
             
                                    # TODO: Vectors should contain UMat, but this is not very easy to support and not very needed
         
     | 
| 
       573 
     | 
    
         
            -
                                    vector_mat = "vector_{}".format( 
     | 
| 
       574 
     | 
    
         
            -
                                    vector_mat_template = "vector<{}>".format( 
     | 
| 
      
 588 
     | 
    
         
            +
                                    vector_mat = "vector_{}".format(mat)
         
     | 
| 
      
 589 
     | 
    
         
            +
                                    vector_mat_template = "vector<{}>".format(mat)
         
     | 
| 
       575 
590 
     | 
    
         | 
| 
       576 
591 
     | 
    
         
             
                                    if arg_type == "InputArray":
         
     | 
| 
       577 
592 
     | 
    
         
             
                                        arg_type = mat
         
     | 
| 
         @@ -656,6 +671,10 @@ class CppHeaderParser(object): 
     | 
|
| 
       656 
671 
     | 
    
         
             
                    stack_top = self.block_stack[-1]
         
     | 
| 
       657 
672 
     | 
    
         
             
                    context = stack_top[self.BLOCK_TYPE]
         
     | 
| 
       658 
673 
     | 
    
         | 
| 
      
 674 
     | 
    
         
            +
                    if stmt.startswith('inline namespace'):
         
     | 
| 
      
 675 
     | 
    
         
            +
                        # emulate anonymous namespace
         
     | 
| 
      
 676 
     | 
    
         
            +
                        return "namespace", "", True, None
         
     | 
| 
      
 677 
     | 
    
         
            +
             
     | 
| 
       659 
678 
     | 
    
         
             
                    stmt_type = ""
         
     | 
| 
       660 
679 
     | 
    
         
             
                    if end_token == "{":
         
     | 
| 
       661 
680 
     | 
    
         
             
                        stmt_type = "block"
         
     | 
| 
         @@ -713,6 +732,8 @@ class CppHeaderParser(object): 
     | 
|
| 
       713 
732 
     | 
    
         
             
                                return stmt_type, classname, True, decl
         
     | 
| 
       714 
733 
     | 
    
         | 
| 
       715 
734 
     | 
    
         
             
                        if stmt.startswith("enum") or stmt.startswith("namespace"):
         
     | 
| 
      
 735 
     | 
    
         
            +
                            # NB: Drop inheritance syntax for enum
         
     | 
| 
      
 736 
     | 
    
         
            +
                            stmt = stmt.split(':')[0]
         
     | 
| 
       716 
737 
     | 
    
         
             
                            stmt_list = stmt.rsplit(" ", 1)
         
     | 
| 
       717 
738 
     | 
    
         
             
                            if len(stmt_list) < 2:
         
     | 
| 
       718 
739 
     | 
    
         
             
                                stmt_list.append("<unnamed>")
         
     | 
| 
         @@ -792,6 +813,7 @@ class CppHeaderParser(object): 
     | 
|
| 
       792 
813 
     | 
    
         
             
                    COMMENT = 1 # inside a multi-line comment
         
     | 
| 
       793 
814 
     | 
    
         
             
                    DIRECTIVE = 2 # inside a multi-line preprocessor directive
         
     | 
| 
       794 
815 
     | 
    
         
             
                    DOCSTRING = 3 # inside a multi-line docstring
         
     | 
| 
      
 816 
     | 
    
         
            +
                    DIRECTIVE_IF_0 = 4 # inside a '#if 0' directive
         
     | 
| 
       795 
817 
     | 
    
         | 
| 
       796 
818 
     | 
    
         
             
                    state = SCAN
         
     | 
| 
       797 
819 
     | 
    
         | 
| 
         @@ -801,19 +823,56 @@ class CppHeaderParser(object): 
     | 
|
| 
       801 
823 
     | 
    
         
             
                    self.lineno = 0
         
     | 
| 
       802 
824 
     | 
    
         
             
                    self.wrap_mode = wmode
         
     | 
| 
       803 
825 
     | 
    
         | 
| 
      
 826 
     | 
    
         
            +
                    depth_if_0 = 0
         
     | 
| 
      
 827 
     | 
    
         
            +
             
     | 
| 
       804 
828 
     | 
    
         
             
                    for l0 in linelist:
         
     | 
| 
       805 
829 
     | 
    
         
             
                        self.lineno += 1
         
     | 
| 
       806 
830 
     | 
    
         
             
                        #print(state, self.lineno, l0)
         
     | 
| 
       807 
831 
     | 
    
         | 
| 
       808 
832 
     | 
    
         
             
                        l = l0.strip()
         
     | 
| 
       809 
833 
     | 
    
         | 
| 
      
 834 
     | 
    
         
            +
                        # G-API specific aliases
         
     | 
| 
      
 835 
     | 
    
         
            +
                        l = self.batch_replace(l, [
         
     | 
| 
      
 836 
     | 
    
         
            +
                                ("GAPI_EXPORTS", "CV_EXPORTS"),
         
     | 
| 
      
 837 
     | 
    
         
            +
                                ("GAPI_EXPORTS_W", "CV_EXPORTS_W"),
         
     | 
| 
      
 838 
     | 
    
         
            +
                                ("GAPI_EXPORTS_W_SIMPLE","CV_EXPORTS_W_SIMPLE"),
         
     | 
| 
      
 839 
     | 
    
         
            +
                                ("GAPI_WRAP", "CV_WRAP"),
         
     | 
| 
      
 840 
     | 
    
         
            +
                                ("GAPI_PROP", "CV_PROP"),
         
     | 
| 
      
 841 
     | 
    
         
            +
                                ("GAPI_PROP_RW", "CV_PROP_RW"),
         
     | 
| 
      
 842 
     | 
    
         
            +
                                ('defined(GAPI_STANDALONE)', '0'),
         
     | 
| 
      
 843 
     | 
    
         
            +
                            ])
         
     | 
| 
      
 844 
     | 
    
         
            +
             
     | 
| 
       810 
845 
     | 
    
         
             
                        if state == SCAN and l.startswith("#"):
         
     | 
| 
       811 
846 
     | 
    
         
             
                            state = DIRECTIVE
         
     | 
| 
       812 
847 
     | 
    
         
             
                            # fall through to the if state == DIRECTIVE check
         
     | 
| 
       813 
848 
     | 
    
         | 
| 
       814 
849 
     | 
    
         
             
                        if state == DIRECTIVE:
         
     | 
| 
       815 
     | 
    
         
            -
                            if  
     | 
| 
       816 
     | 
    
         
            -
                                 
     | 
| 
      
 850 
     | 
    
         
            +
                            if l.endswith("\\"):
         
     | 
| 
      
 851 
     | 
    
         
            +
                                continue
         
     | 
| 
      
 852 
     | 
    
         
            +
                            state = SCAN
         
     | 
| 
      
 853 
     | 
    
         
            +
                            l = re.sub(r'//(.+)?', '', l).strip()  # drop // comment
         
     | 
| 
      
 854 
     | 
    
         
            +
                            if l in [
         
     | 
| 
      
 855 
     | 
    
         
            +
                                '#if 0',
         
     | 
| 
      
 856 
     | 
    
         
            +
                                '#if defined(__OPENCV_BUILD)', '#ifdef __OPENCV_BUILD',
         
     | 
| 
      
 857 
     | 
    
         
            +
                                '#if !defined(OPENCV_BINDING_PARSER)', '#ifndef OPENCV_BINDING_PARSER',
         
     | 
| 
      
 858 
     | 
    
         
            +
                            ]:
         
     | 
| 
      
 859 
     | 
    
         
            +
                                state = DIRECTIVE_IF_0
         
     | 
| 
      
 860 
     | 
    
         
            +
                                depth_if_0 = 1
         
     | 
| 
      
 861 
     | 
    
         
            +
                            continue
         
     | 
| 
      
 862 
     | 
    
         
            +
             
     | 
| 
      
 863 
     | 
    
         
            +
                        if state == DIRECTIVE_IF_0:
         
     | 
| 
      
 864 
     | 
    
         
            +
                            if l.startswith('#'):
         
     | 
| 
      
 865 
     | 
    
         
            +
                                l = l[1:].strip()
         
     | 
| 
      
 866 
     | 
    
         
            +
                                if l.startswith("if"):
         
     | 
| 
      
 867 
     | 
    
         
            +
                                    depth_if_0 += 1
         
     | 
| 
      
 868 
     | 
    
         
            +
                                    continue
         
     | 
| 
      
 869 
     | 
    
         
            +
                                if l.startswith("endif"):
         
     | 
| 
      
 870 
     | 
    
         
            +
                                    depth_if_0 -= 1
         
     | 
| 
      
 871 
     | 
    
         
            +
                                    if depth_if_0 == 0:
         
     | 
| 
      
 872 
     | 
    
         
            +
                                        state = SCAN
         
     | 
| 
      
 873 
     | 
    
         
            +
                            else:
         
     | 
| 
      
 874 
     | 
    
         
            +
                                # print('---- {:30s}:{:5d}: {}'.format(hname[-30:], self.lineno, l))
         
     | 
| 
      
 875 
     | 
    
         
            +
                                pass
         
     | 
| 
       817 
876 
     | 
    
         
             
                            continue
         
     | 
| 
       818 
877 
     | 
    
         | 
| 
       819 
878 
     | 
    
         
             
                        if state == COMMENT:
         
     | 
| 
         @@ -826,7 +885,7 @@ class CppHeaderParser(object): 
     | 
|
| 
       826 
885 
     | 
    
         
             
                        if state == DOCSTRING:
         
     | 
| 
       827 
886 
     | 
    
         
             
                            pos = l.find("*/")
         
     | 
| 
       828 
887 
     | 
    
         
             
                            if pos < 0:
         
     | 
| 
       829 
     | 
    
         
            -
                                docstring +=  
     | 
| 
      
 888 
     | 
    
         
            +
                                docstring += l0
         
     | 
| 
       830 
889 
     | 
    
         
             
                                continue
         
     | 
| 
       831 
890 
     | 
    
         
             
                            docstring += l[:pos] + "\n"
         
     | 
| 
       832 
891 
     | 
    
         
             
                            l = l[pos+2:]
         
     | 
| 
         @@ -842,7 +901,12 @@ class CppHeaderParser(object): 
     | 
|
| 
       842 
901 
     | 
    
         
             
                            sys.exit(-1)
         
     | 
| 
       843 
902 
     | 
    
         | 
| 
       844 
903 
     | 
    
         
             
                        while 1:
         
     | 
| 
       845 
     | 
    
         
            -
                             
     | 
| 
      
 904 
     | 
    
         
            +
                            # NB: Avoid parsing '{' for case:
         
     | 
| 
      
 905 
     | 
    
         
            +
                            # foo(Obj&& = {});
         
     | 
| 
      
 906 
     | 
    
         
            +
                            if re.search(r'=\s*\{\s*\}', l):
         
     | 
| 
      
 907 
     | 
    
         
            +
                                token, pos = ';', len(l)
         
     | 
| 
      
 908 
     | 
    
         
            +
                            else:
         
     | 
| 
      
 909 
     | 
    
         
            +
                                token, pos = self.find_next_token(l, [";", "\"", "{", "}", "//", "/*"])
         
     | 
| 
       846 
910 
     | 
    
         | 
| 
       847 
911 
     | 
    
         
             
                            if not token:
         
     | 
| 
       848 
912 
     | 
    
         
             
                                block_head += " " + l
         
     | 
| 
         @@ -912,14 +976,17 @@ class CppHeaderParser(object): 
     | 
|
| 
       912 
976 
     | 
    
         
             
                                    else:
         
     | 
| 
       913 
977 
     | 
    
         
             
                                        decls.append(decl)
         
     | 
| 
       914 
978 
     | 
    
         | 
| 
       915 
     | 
    
         
            -
                                        if self._generate_gpumat_decls and "cv.cuda 
     | 
| 
      
 979 
     | 
    
         
            +
                                        if self._generate_gpumat_decls and ("cv.cuda" in decl[0] or decl[0] in [
         
     | 
| 
      
 980 
     | 
    
         
            +
                                            "cv.imshow", # https://github.com/opencv/opencv/issues/18553
         
     | 
| 
      
 981 
     | 
    
         
            +
                                        ]):
         
     | 
| 
       916 
982 
     | 
    
         
             
                                            # If function takes as one of arguments Mat or vector<Mat> - we want to create the
         
     | 
| 
       917 
     | 
    
         
            -
                                            # same declaration working with GpuMat 
     | 
| 
      
 983 
     | 
    
         
            +
                                            # same declaration working with GpuMat
         
     | 
| 
       918 
984 
     | 
    
         
             
                                            args = decl[3]
         
     | 
| 
       919 
985 
     | 
    
         
             
                                            has_mat = len(list(filter(lambda x: x[0] in {"Mat", "vector_Mat"}, args))) > 0
         
     | 
| 
       920 
986 
     | 
    
         
             
                                            if has_mat:
         
     | 
| 
       921 
987 
     | 
    
         
             
                                                _, _, _, gpumat_decl = self.parse_stmt(stmt, token, mat="cuda::GpuMat", docstring=docstring)
         
     | 
| 
       922 
     | 
    
         
            -
                                                 
     | 
| 
      
 988 
     | 
    
         
            +
                                                if gpumat_decl != decl:
         
     | 
| 
      
 989 
     | 
    
         
            +
                                                    decls.append(gpumat_decl)
         
     | 
| 
       923 
990 
     | 
    
         | 
| 
       924 
991 
     | 
    
         
             
                                        if self._generate_umat_decls:
         
     | 
| 
       925 
992 
     | 
    
         
             
                                            # If function takes as one of arguments Mat or vector<Mat> - we want to create the
         
     | 
| 
         @@ -928,12 +995,13 @@ class CppHeaderParser(object): 
     | 
|
| 
       928 
995 
     | 
    
         
             
                                            has_mat = len(list(filter(lambda x: x[0] in {"Mat", "vector_Mat"}, args))) > 0
         
     | 
| 
       929 
996 
     | 
    
         
             
                                            if has_mat:
         
     | 
| 
       930 
997 
     | 
    
         
             
                                                _, _, _, umat_decl = self.parse_stmt(stmt, token, mat="UMat", docstring=docstring)
         
     | 
| 
       931 
     | 
    
         
            -
                                                 
     | 
| 
      
 998 
     | 
    
         
            +
                                                if umat_decl != decl:
         
     | 
| 
      
 999 
     | 
    
         
            +
                                                    decls.append(umat_decl)
         
     | 
| 
       932 
1000 
     | 
    
         | 
| 
       933 
1001 
     | 
    
         
             
                                    docstring = ""
         
     | 
| 
       934 
1002 
     | 
    
         
             
                                if stmt_type == "namespace":
         
     | 
| 
       935 
1003 
     | 
    
         
             
                                    chunks = [block[1] for block in self.block_stack if block[0] == 'namespace'] + [name]
         
     | 
| 
       936 
     | 
    
         
            -
                                    self.namespaces.add('.'.join(chunks))
         
     | 
| 
      
 1004 
     | 
    
         
            +
                                    self.namespaces.add('.'.join(filter(lambda c: len(c)> 0, chunks)))
         
     | 
| 
       937 
1005 
     | 
    
         
             
                            else:
         
     | 
| 
       938 
1006 
     | 
    
         
             
                                stmt_type, name, parse_flag = "block", "", False
         
     | 
| 
       939 
1007 
     | 
    
         | 
| 
         @@ -972,13 +1040,12 @@ class CppHeaderParser(object): 
     | 
|
| 
       972 
1040 
     | 
    
         
             
                                print()
         
     | 
| 
       973 
1041 
     | 
    
         | 
| 
       974 
1042 
     | 
    
         
             
            if __name__ == '__main__':
         
     | 
| 
       975 
     | 
    
         
            -
                parser = CppHeaderParser(generate_umat_decls= 
     | 
| 
      
 1043 
     | 
    
         
            +
                parser = CppHeaderParser(generate_umat_decls=False, generate_gpumat_decls=False)
         
     | 
| 
       976 
1044 
     | 
    
         
             
                decls = []
         
     | 
| 
       977 
     | 
    
         
            -
             
     | 
| 
       978 
     | 
    
         
            -
             
     | 
| 
       979 
     | 
    
         
            -
                 
     | 
| 
       980 
     | 
    
         
            -
                     
     | 
| 
       981 
     | 
    
         
            -
                        decls += parser.parse(hname)
         
     | 
| 
       982 
     | 
    
         
            -
                else:
         
     | 
| 
       983 
     | 
    
         
            -
                    decls += parser.parse(sys.argv[1])
         
     | 
| 
      
 1045 
     | 
    
         
            +
                # for hname in opencv_hdr_list:
         
     | 
| 
      
 1046 
     | 
    
         
            +
                   # decls += parser.parse(hname)
         
     | 
| 
      
 1047 
     | 
    
         
            +
                for hname in sys.argv[1:]:
         
     | 
| 
      
 1048 
     | 
    
         
            +
                    decls += parser.parse(hname, wmode=True)
         
     | 
| 
       984 
1049 
     | 
    
         
             
                parser.print_decls(decls)
         
     | 
| 
      
 1050 
     | 
    
         
            +
                print(len(decls))
         
     | 
| 
      
 1051 
     | 
    
         
            +
                print("namespaces:", " ".join(sorted(parser.namespaces)))
         
     | 
    
        data/rbind.gemspec
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: rbind
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0.0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.0.35
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Alexander Duda
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2022- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2022-06-18 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: ffi
         
     | 
| 
         @@ -128,8 +128,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       128 
128 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       129 
129 
     | 
    
         
             
                  version: 1.3.6
         
     | 
| 
       130 
130 
     | 
    
         
             
            requirements: []
         
     | 
| 
       131 
     | 
    
         
            -
             
     | 
| 
       132 
     | 
    
         
            -
            rubygems_version: 2.7.6
         
     | 
| 
      
 131 
     | 
    
         
            +
            rubygems_version: 3.3.5
         
     | 
| 
       133 
132 
     | 
    
         
             
            signing_key: 
         
     | 
| 
       134 
133 
     | 
    
         
             
            specification_version: 4
         
     | 
| 
       135 
134 
     | 
    
         
             
            summary: Library for genereating automated ffi-bindings for c/c++ libraries
         
     |