aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/libs/farmhash/split.py
blob: 2939c75651458be0b38a2f2f1b10e3bb8faa56cd (plain) (blame)
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#!/usr/bin/env python


END_PREFIX = '}  // namespace '
TEST_PREFIX = '#if FARMHASHSELFTEST'


def main():
    with open('farmhash.cc', 'rb') as input_file:
        lines = input_file.readlines()

    namespace_out = None

    prev_name = None

    output = open('common.h', 'wb')
    output.write('#pragma once\n\n')

    def write_common():
        output.write('#include "common.h"\n\n')

    def write_include(include):
        if include:
            output.write('namespace {\n')
            output.write('    ' + '#include "{}"\n'.format(include))
            output.write('}\n\n')

    write_test = False

    for line in lines:

        if line.startswith(TEST_PREFIX):
            write_test = True
            output.close()
            output = open('test.cc', 'wb')
            write_common()
            write_include('farmhash_iface.h')

        if write_test:
            output.write(line)
            continue

        elif line.startswith('namespace '):
            namespace = line.split(' ')[1]

            if namespace.startswith('farmhash'):
                filename = namespace + '.cc'

                output.close()
                output = open(filename, 'wb')
                write_common()
                write_include(prev_name)

                output.write(line)
                prev_name = filename

            else:
                if prev_name is not None:
                    output.close()
                    output = open('farmhash_iface.cc', 'wb')
                    write_common()
                    write_include(prev_name)
                    prev_name = None

                output.write(line)

        else:
            output.write(line)

    output.close()


if __name__ == '__main__':
    main()