Exemple #1
0
    def process_signatures(self):
        for context, function in self.signatures.iteritems():
            for name, signatures in function.iteritems():
                cxt = self.nodes.get(context)
                if not cxt:
                    continue

                f = None
                if isinstance(cxt, (Class, Struct)):
                    if all(sig.constructor for sig in signatures):
                        cxt.constructors = signatures
                    elif signatures[0].destructor:
                        cxt.destructor = signatures[0]
                    else:
                        f = Method(name)
                        cxt.methods.append(f)
                else:
                    f = Function(name)
                    cxt.nodes.append(f)

                if f:
                    f.context = cxt
                    f.signatures = signatures
                    for sig in signatures:
                        sig.context = f