mirror of
https://github.com/CrowCpp/Crow.git
synced 2024-06-07 21:10:44 +00:00
Initial py3 compatibility.
This commit is contained in:
parent
acf686d3dd
commit
18c9d69b2d
@ -1,5 +1,6 @@
|
||||
import glob
|
||||
import os
|
||||
"""Merges all the header files."""
|
||||
from glob import glob
|
||||
from os import path as pt
|
||||
import re
|
||||
from collections import defaultdict
|
||||
import sys
|
||||
@ -10,11 +11,11 @@ if len(sys.argv) > 1:
|
||||
|
||||
OUTPUT = 'crow_all.h'
|
||||
re_depends = re.compile('^#include "(.*)"', re.MULTILINE)
|
||||
headers = [x.rsplit('/',1)[-1] for x in glob.glob(os.path.join(header_path,'*.h'))]
|
||||
print headers
|
||||
headers = [x.rsplit('/', 1)[-1] for x in glob(pt.join(header_path, '*.h'))]
|
||||
print(headers)
|
||||
edges = defaultdict(list)
|
||||
for header in headers:
|
||||
d = open(os.path.join(header_path, header)).read().decode('utf8')
|
||||
d = open(pt.join(header_path, header)).read().decode('utf8')
|
||||
match = re_depends.findall(d)
|
||||
for m in match:
|
||||
# m should included before header
|
||||
@ -22,30 +23,32 @@ for header in headers:
|
||||
|
||||
visited = defaultdict(bool)
|
||||
order = []
|
||||
|
||||
|
||||
def dfs(x):
|
||||
"""Ensure all header files are visited."""
|
||||
visited[x] = True
|
||||
for y in edges[x]:
|
||||
if not visited[y]:
|
||||
dfs(y)
|
||||
order.append(x)
|
||||
|
||||
|
||||
for header in headers:
|
||||
if not visited[header]:
|
||||
dfs(header)
|
||||
|
||||
order = order[::-1]
|
||||
for x in edges:
|
||||
print x, edges[x]
|
||||
print(x, edges[x])
|
||||
for x in edges:
|
||||
for y in edges[x]:
|
||||
assert order.index(x) < order.index(y), 'cyclic include detected'
|
||||
|
||||
print order
|
||||
print(order)
|
||||
build = []
|
||||
for header in order:
|
||||
d = open(os.path.join(header_path, header)).read().decode('utf8')
|
||||
build.append(re_depends.sub(lambda x:'\n', d))
|
||||
d = open(pt.join(header_path, header)).read().decode('utf8')
|
||||
build.append(re_depends.sub(lambda x: '\n', d))
|
||||
build.append('\n')
|
||||
|
||||
open(OUTPUT,'w').write('\n'.join(build))
|
||||
|
||||
open(OUTPUT, 'w').write('\n'.join(build))
|
||||
|
Loading…
Reference in New Issue
Block a user