File: output.py

package info (click to toggle)
coccinelle 1.3.0.deb-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 20,888 kB
  • sloc: ml: 96,585; ansic: 23,664; sh: 1,695; perl: 1,576; makefile: 1,002; python: 922; lisp: 832; cpp: 655; awk: 70; csh: 12
file content (50 lines) | stat: -rw-r--r-- 1,727 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
from copy import deepcopy

class Output:
        """In order to implement an output class for use with Coccinelle,
        one can inherit from this class and overload register_match with
        the same number of arguments.

        include_match will be overwritten by inheriting from your actual
        class, and thus if your class is a.b.C then Coccinelle will create
        a Python class "class Coccinelle(a.b.C)" that hooks include_match
        into the O'Caml internals.
        """
        def include_match(self, b):
                pass

        def register_match(self, include, messages):
                pass

        def combine(self, meta_variable, locations):
                nmv = deepcopy(meta_variable)
                nloc = [deepcopy(loc) for loc in locations]
                nmv.location = nloc[0]
                nmv.locations = nloc

                return nmv

        def finalise(self):
                pass

        def print_main (self, *args):
                from coccilib.org import print_main
                print_main(*args)

        def print_sec (self, *args):
                from coccilib.org import print_sec
                print_sec(*args)

        def print_secs (self, *args):
                from coccilib.org import print_secs
                print_secs(*args)

class Console(Output):
        def __init__(self):
                pass

        def register_match(self, include, messages):
                self.include_match(include)
                if include:
                        for variable, message in messages:
                                print("%s:%s:%s: %s - %s" % (variable.location.file, variable.location.line, variable.location.column, message, variable))