From d7b4b3654ef7fa09040139b34d09b14e98464e4b Mon Sep 17 00:00:00 2001 From: Lerking <33354709+Lerking@users.noreply.github.com> Date: Wed, 21 Feb 2018 08:12:02 +0100 Subject: [PATCH] updated --- __pycache__/h2inc.cpython-36.pyc | Bin 0 -> 3518 bytes __pycache__/h2inc_gui.cpython-36.pyc | Bin 0 -> 5631 bytes __pycache__/h2inc_parser.cpython-36.pyc | Bin 0 -> 3949 bytes h2inc.py | 2 +- h2inc_gui.py | 2 +- old_h2inc/h2inc_gui_old.py | 173 ++++++++++++++++++++++++ old_h2inc/h2inc_old.py | 112 +++++++++++++++ 7 files changed, 287 insertions(+), 2 deletions(-) create mode 100644 __pycache__/h2inc.cpython-36.pyc create mode 100644 __pycache__/h2inc_gui.cpython-36.pyc create mode 100644 __pycache__/h2inc_parser.cpython-36.pyc create mode 100644 old_h2inc/h2inc_gui_old.py create mode 100644 old_h2inc/h2inc_old.py diff --git a/__pycache__/h2inc.cpython-36.pyc b/__pycache__/h2inc.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f4763d652483a29ac1e928d27ba7aeb698c1c56f GIT binary patch literal 3518 zcmZu!OLH5?5uVvy01FTVAEHRf@dH+DDM$7K`j>hf~tKeu1E z{iUH`4_B!0q?U`OnHlI*=U)XS}hBy(N7GLt>hrpO7U3FZrN?tN}sY; zrp=rsELmXAGMG*d%Zg`qS1(y>4J=4}#aio-gcQ;nU_%<|24r9f=}pMOGSW@pPgo)M z4bFz`7YvmiIYN4Uf9R8KYtOjE|1tH-($}Yj?Jkt zHK*43USy&CV48>$UE`8{+I)vOR+yN#TyoA{TeO!wSRbnLk zVTjsk8H|PNfiINl4nvhW4f^1TeP`gQj2xfDqErboMaM+`&cqEGuH=4v{8V~E9z#zC z-G2LcFL1{LZy3tsPQ@R(#epM3PsGCZ=t8YskM@!r;ec&DZ%Y zL)^r+H-cGl(w!YP_=0 zlv6eehDf8T$Y6zg$k;B4b&@G+akYWmx0wf&3pW^y9^OY;(pX70xwjA`oeT`q_Je-l zI(_*NnJXJXyRMKBDI~(iO5ONBmLf+zv$T?JAt{#0VudP-yjUZR^mVdTBJ>8M)9=hy z+(NB;SR^flS)1I#Y-KTD7PpO@sry}%`tU~~BVOn017srZu*h(DXml~+z+ZFBmf1~& z$uM36Mk+fq z(%VWb;eZ88neDN!l5tFwMNX78LhJ9WOf4@O%O)C23MVryTw9h4TJ`mYpqv60y|Vw} zv7_T2v8e$Dm~_d|1w)q$T`Y8|Kn_-571m%KZomfIgiY9jTW}lRg73lG@D98S??E2k zhdc0n_y9hHyKoPF00sCV{0KgRB5cEbC_x!2P=y-Qp#eM4gkAU;ehd%bC-4w{3XkAt z@N@VC_TVx60)7df!e{U+_%-|nehd5XIUK<6;P>zZzJRCjB^<&LJcAbe0gmB0ynvVR zM{wW-TmbOeFg4GQ=%hS9m|7Qi<8ub5kp=D7=GE23@sh&pt3&7OkPYuxEVO!=uerF( z8GT^_{K(qG!@=1z_DUVG1FR3(`DT{4C3n~v~W zgwAaSUDQa0nJ9J1yGvmp3#YG5SFlcYCxi`~&AtEn%Gl~Sp8EuEJts|$Q>fv+#{nB#8HaZV=5 zUf?&2Vn)Lm9jjz-QZCh+lkC88i|&Q+`+eV?q)BQE&+AQ=i1l5s?+js*AweGkTrKe; z7&yaNCmf5OFFPtV3URa4apAJ#pN7S*FDJQcHqPT*o@J8GR~3E6w0PoOvwd%pq}DRV zET-4JimEi}<3P#>grG@7JVMPQ=5@V#+pT>^&JaYe- zyo)T}8+fw%0U{@Qy75hN2%E`K-w$yUDN}|*rGz)?JFXYM)$fpA(mTiJTjF!*iy`4N zd*Jj4xna}iPqcHDz!eMwm3;j8=(8tZsKl8-pM?y*eopA9RDiKS+@;d~aCF69ElDcw zDdV(*uu-odgUVM*rg!eD)X+O4>+d|D;to#k5f*uX6~iZ!fI$wwRs9iXYp9UL$25cA zDi#B4TkEWwNh5}R8+;WZpusm00Ot6H*45sxA74U9*RbMk6lRYT!3jcSMu_0z4LBi4 z3qcY=H}M`-?^8u{j$wkKOvDo6E;YP~&(yLbFNW^R89ErEhNMfM5hj=*Eo{XJH06a< zD}!-A^k=%XyYz@JP)%hu7=Ee$IS4^(5VQ!Dj@t>Pq{1<#AOB>eMwoa6KzefGHt7<8 zTi6C^cQi)mGaiN_Pd$W_HTcpvC0-fLZecZgT?9Fm{a_HlxbHnA7$XUo*_a0UFdYV^ PZvNSZy=<@9w!Qs7{Y;!d literal 0 HcmV?d00001 diff --git a/__pycache__/h2inc_gui.cpython-36.pyc b/__pycache__/h2inc_gui.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fbc111201b13e15ae220931c8e2f7d32acb6d7b5 GIT binary patch literal 5631 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 QN~U6$erL_N%u7@MKQC=nSpWb4 literal 0 HcmV?d00001 diff --git a/__pycache__/h2inc_parser.cpython-36.pyc b/__pycache__/h2inc_parser.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..914c3fc68e57b066243555de5f1ca29400ded932 GIT binary patch literal 3949 zcmbVPOK)4p6~1#H zd*uf~0RiMiffhwubXD{RwEv;Ytc#+{yKOhzWF2VH^gDAYQY2`nEr~fZbLPwp=ljk% zGyE)_PW1O!|O`!Eagy7&{QQs(_WHhycErPX`1sgH1AE)f|sR5FGm-=DZ1!Q z(~>tsm%LfJ?9I^!-aK9L7UZ0qmkTl}Q!*_xa#ChxPEN^bIU{H3!#`!bML9=T~5i!&Rgs^AJA z2gO3UhvM%*JTs030fo0l$EX`8#-?#1j?LG%I_9SF<@IB$V+CSAraliu$67Rw?T)CM z9s5KGL$@q$y;%Agdf3exY-IK}+T)F~dZUiP`uJT zElzJ&KY#qlm&$)k`~G3Q@$B*DVfE-hHUt0h^G|Ed>WzbnA4nB-p0p|o#%rxNr-}7O z%@3-F2d#}s-j_Fs8SP8jqETzgwe`kfwbJl6&^WU!SfS&$8nqxyJty^KU%q*DsK^gv zl~zkOso;bTPxZria0Iia3~e@0HWm-X%fatf3~o5l-z?2PfsbwoTTF?BaPduuj8GZq z`jqgGLJ* zUMTJq?-xtuC*@x}EIzsS;J)tcmGADB!-cV9#nNV&JveFvHTD7c82e+G(rlmgE{~mg z|Ito)duO{;45x?2x3@~0#jT#hkbLTojAM`|%?wW}-P?JzS?q0$SZExP40A&^#hvY~ zaB@fm#i-3*F`OE*!3klO&?kc9*Pf1yZ*TF>9htMc`(SrO_edWrTIZ;VgN>Z);qKj^ z-oG1WqKyt(!5c;tiNHdDdC@##)o5rX^$aa&9-R7LKp3WtkV@ejL(3I2D5)PP8H`6I zVa9|iV3mG2au9Q9>u~%%8XS%t=7f`jxknwnshT|cZfk<{X{A+-xTHE{GgbR=iQ zP$0dH!CuW_?j02W3It_?Cfic^R$Kf9sVH|KK_D%!$ z_X^{|J$+vGPW0~JO3^4;KX>?LOi#>GYlqQj9^-1L8^qu*S==@J4;;o=bWEW@3BZ|-)=i=uq zkZ!bvt4W;DG$(pN@N0hL^@G6bg^`IMNRE;*06fCF5Ay(ec)tz@9UX(1um&+P7TFJh z#48m4GQ_)))p)Y)cszfDk^c@)cF7)wb?xTw!!WXVABJB8L(#_&0TKnr|BInDno@oU zzB~^8OBA1d?L2(v-BN?cmRtH#(cz_jgnpMZY?o7UH^w5)f|Gcc3G60VBw6r%)176( zIjfLqn>SZOvD!9QZ?@yhcm?1>Z@bIA7fU;~te*y`Yfmu%+Rn0U_)=Hs z#g_GRglnY^6>M9o^6a2;Dt@f^o!^e<&(_cP*U$IX&-d0x9j%W>+sQ}kqvG}Rz4i0G z_4CpCg^NfFZ}3k5F<)yw)6aJOScpnVm%F$(Gei;FC-vAD`&fdzZ9 z`hdkH7FSp-vshs<&0?Mf1F9J5h;V)73 0: + tempstr = 'Number of headers: '+str(filecnt) + temptot = 'Total progress: 0 of '+str(filecnt) + print ('Source directory: ', sourcedir.get()) + self.destlabel.config(state=NORMAL) + self.destentry.config(state=NORMAL) + self.destdir_button.config(state=NORMAL) + self.infofiles.config(text=tempstr) + self.totallabel.config(text=temptot) + self.filecnt = filecnt + foldercnt = sourcedir_foldercnt(root.directory) + if foldercnt > 0: + tempstr = 'Number of folders: '+str(foldercnt) + self.infofolders.config(text=tempstr) + + def select_destdir(self, destdir): + root.directory = filedialog.askdirectory() + if root.directory: + destdir.set(root.directory) + print ('Destination directory: ', destdir.get()) + self.incchkbox.config(state=NORMAL) + self.infofolders.config(state=NORMAL) + self.infofiles.config(state=NORMAL) + self.translate_button.config(state=NORMAL) + #self.cfilelabel.config(state=NORMAL) + self.totallabel.config(state=NORMAL) + + def translate(self, destdir, sourcedir, addinc): + doinc = addinc.get() + dest = destdir.get() + source = sourcedir.get() + if doinc == 'yes': + dest = dest+'/include' + print(os.path.exists(os.path.dirname(dest))) + if not os.path.exists(os.path.dirname(dest)): + try: + os.makedirs(os.path.dirname(dest)) + except OSError as exc: # Guard against race condition + if exc.errno != errno.EEXIST: + raise + destdir.set(dest) + print ('Destination directory: ', destdir.get()) + process_files(self, source, dest) + + def cfileprogress_update(cnt): + self.cfilevar = cnt + + def currentfile_update(current): + self.currentfile = 'Current file: '+current + +root = Tk() +root.update() +#root.minsize(350, 210) +#width = (root.winfo_screenwidth()/2)-(350/2) +#height = (root.winfo_screenheight()/2)-(210/2) +#root.geometry('+%d+%d' % (width, height)) +root.resizable(False, False) +h2incgui = h2incGUI(root) +root.mainloop() \ No newline at end of file diff --git a/old_h2inc/h2inc_old.py b/old_h2inc/h2inc_old.py new file mode 100644 index 0000000..233a495 --- /dev/null +++ b/old_h2inc/h2inc_old.py @@ -0,0 +1,112 @@ +#!/usr/bin/env python3.5 + +# You are free to use and/or change this code for +# your own needs. + +# Original code (c)2018 Jan Lerking +# Program to convert C-header (*.h) files to nasm include files (*.inc), +# for direct usage in assembly programming using nasm/yasm. + +import os +import sys +import multiprocessing as mp +import io +from h2inc_parser import parseline, parseparsed +import h2inc_gui_old + +tupline = [] +preproc = () +filelist = [] +folderlist = [] +cnt = 0 +sourcedir = '' +destdir = '' +num_cores = mp.cpu_count() + +def sourcedir_filecnt(sourcedir): + ### Return the number of files, ending with '.h', in sourcedir - including subdirectories ### + cnt = 0 + global filelist + for folderName, subfolders, files in os.walk(sourcedir): + for file in files: + if file.lower().endswith('.h'): + cnt += 1 + filelist += [folderName+'/'+file] + print(folderName+'/'+file) + #print(filelist) + return cnt + +def sourcedir_foldercnt(sourcedir): + ### Return the number of folders, if it contains '*.h' files, in sourcedir - including subdirectories ### + global cnt + global folderlist + for folderName, subfolders, files in os.walk(sourcedir): + if subfolders: + for subfolder in subfolders: + sourcedir_foldercnt(subfolder) + tempf = [file for file in files if file.lower().endswith('.h')] + if tempf: + cnt = cnt+1 + #print(folderName) + folderlist += [folderName] + #print(folderlist) + #print(len(folderlist)) + return cnt + +def process_files(gui, source, dest): + global sourcedir + global destdir + sourcedir = source + destdir = dest + pool = mp.Pool(processes=num_cores) + pool.map(process_file, filelist) + +def process_file(data): + outfile = '' + inputfile = data + encodings = ['utf-8', 'latin-1', 'windows-1250', 'windows-1252', 'ascii', + 'big5', 'big5hkscs', 'cp037', 'cp273', 'cp424', 'cp437', 'cp500', + 'cp720', 'cp737', 'cp775', 'cp850', 'cp852', 'cp855', 'cp856', + 'cp857', 'cp858', 'cp860', 'cp861', 'cp862', 'cp863', 'cp864', 'cp865', + 'cp866', 'cp869', 'cp874', 'cp875', 'cp932', 'cp949', 'cp950', 'cp1006', + 'cp1026', 'cp1125', 'cp1140', 'cp1250', 'cp1251', 'cp1252', 'cp1253', 'cp1254', + 'cp1255', 'cp1256', 'cp1257', 'cp1258', 'cp65001', 'euc-jp', 'euc-jis-2004', + 'euc-jisx0213', 'euc-kr', 'gb2312', 'gbk', 'gb18030', 'hz', 'iso2022-jp', + 'iso2022-jp-1', 'iso2022-jp-2', 'iso2022-jp-2004', 'iso2022-jp-3', + 'iso2022-jp-ext', 'iso2022-kr', 'iso8859-2', 'iso8859-3', 'iso8859-4', + 'iso8859-5', 'iso8859-6', 'iso8859-7', 'iso8859-8', 'iso8859-9', 'iso8859-10', + 'iso8859-11', 'iso8859-13', 'iso8859-14', 'iso8859-15', 'iso8859-16', 'johab', + 'koi8-r', 'koi8-t', 'koi8-u', 'kz1048', 'mac-cyrillic', 'mac-greek', + 'mac-iceland', 'mac-latin2', 'mac-roman', 'mac-turkish', 'ptcp154', + 'shift-jis', 'shift-jis-2004', 'shift-jisx0213', 'utf-32', 'utf-32-be', + 'utf-32-le', 'utf-16', 'utf-16-be', 'utf-16-le', 'utf-7', 'utf-8-sig'] + for e in encodings: + try: + fh = io.open(data, 'r', encoding=e) + fh.readlines() + fh.seek(0) + except UnicodeDecodeError: + print('got unicode error with %s , trying different encoding' % e) + else: + #print('opening the file with encoding: %s ' % e) + break + #print(os.path.basename(data)) + for lines in fh: + outfile = outfile+lines + fh.close() + outputfile = os.path.splitext(inputfile)[0]+'.inc' + outputfile = str(outputfile).replace(sourcedir, destdir) + #print(outputfile) + if not os.path.exists(os.path.dirname(outputfile)): + try: + os.makedirs(os.path.dirname(outputfile)) + except OSError as exc: # Guard against race condition + if exc.errno != errno.EEXIST: + raise + newfile = open(outputfile, "w") + newfile.write(outfile) + newfile.close() + +def async_process(num): + pool = mp.Pool(processes=num) + pool.map(process_file, filelist) \ No newline at end of file