6Wc@sddlTyddlmZWnIek riyddlmZWn!ek reddlmZnXnXddlmZddlm Z ddl m Z de fdYZ de fd YZd efd YZd efd YZdZedkredndS(i(t*(t ElementTree(t ExpatError(tdeepcopy(t enumeratetInvalidXMLErrorcBseZRS((t__name__t __module__(((s6/usr/lib/python2.7/dist-packages/Pyste/GCCXMLParser.pyRst ParserErrorcBseZRS((RR(((s6/usr/lib/python2.7/dist-packages/Pyste/GCCXMLParser.pyRstInvalidContextErrorcBseZRS((RR(((s6/usr/lib/python2.7/dist-packages/Pyste/GCCXMLParser.pyR st GCCXMLParsercBseZdZidd6dd6dd6dd6ZdZdZdZd Zd Zd Z d Z d Z dZ dZ dZdZdZdZdZedZdZdZdZdZdZidd6dd6ZdZd Zd!Zd"Zd#Zd$Z d%Z!e"d&Z#d'Z$d(Z%d)Z&d*Z'd+Z(d,Z)RS(-s<Parse a GCC_XML file and extract the top-level declarations.itClasstFunctiontVariablet EnumerationcCs|j||_g|_i|_x[|jD]P}|j|\}}|dkr.y|j||Wq~tk rzq~Xq.q.WdS(N(tGetElementsFromXMLtelementst declarationst_namestNonet ParseElementR (tselftfilenametidtelementtdecl((s6/usr/lib/python2.7/dist-packages/Pyste/GCCXMLParser.pytParse(s    cCs|jS(N(R(R((s6/usr/lib/python2.7/dist-packages/Pyste/GCCXMLParser.pyt Declarations8scCs|j|jkrYt|_x8|jD]*}|j|jkr(t|_q(q(Wnd|j|j<|jj|dS(Ni(tFullNameRtFalset is_uniqueRtappend(RRtd((s6/usr/lib/python2.7/dist-packages/Pyste/GCCXMLParser.pytAddDecl<s cCsOd|j}t||r;t||}|||n|j||dS(NR(ttagthasattrtgetattrt ParseUnknown(RRRtmethodtfunc((s6/usr/lib/python2.7/dist-packages/Pyste/GCCXMLParser.pyRFs  cCst}y|j|Wntk r:td|nX|j}|jdkrbtdn|j}i}x6|D].}|jd}|r{|df||R?R@Rtres((s6/usr/lib/python2.7/dist-packages/Pyste/GCCXMLParser.pytGetTypews"      cCs4|jd\}}|j|}|t|fS(Nt:(tsplitR3tint(Rtlocationtfiletline((s6/usr/lib/python2.7/dist-packages/Pyste/GCCXMLParser.pyt GetLocationscCs*|j|\}}||f|j|RK(RRRRURRtarray((s6/usr/lib/python2.7/dist-packages/Pyste/GCCXMLParser.pytParseArrayTypeRs cCs]|j|jd}t|t }t|j|jd||j}|j ||dS(NRU( RBR,R<t FunctionTypet ReferenceTypeRMR>RtsuffixRK(RRRRUtexpandtref((s6/usr/lib/python2.7/dist-packages/Pyste/GCCXMLParser.pytParseReferenceTypeZs!cCs]|j|jd}t|t }t|j|jd||j}|j ||dS(NRU( RBR,R<Rt PointerTypeRMR>RRRK(RRRRURR((s6/usr/lib/python2.7/dist-packages/Pyste/GCCXMLParser.pytParsePointerTypeas!cCsJ|j|jd}|j|}t||}|j||dS(NRd(RBR,R_RRK(RRRtresultR]R'((s6/usr/lib/python2.7/dist-packages/Pyste/GCCXMLParser.pytParseFunctionTypehscCsk|j|jdj}|j|jd}|j|}t|||}|j||dS(NtbasetypeRd(R3R,RRBR_t MethodTypeRK(RRRRRR]R&((s6/usr/lib/python2.7/dist-packages/Pyste/GCCXMLParser.pytParseMethodTypeos c Cs|jd}|jdtj}|j|jdj}|j|jd}tt|jdd}|j|jd}t |||||} || _ |j || dS(NRMRRNRUtexternRRF( R,RpRqR3RRBRgRERIt ClassVariableRFRK( RRRRMR{t classnameRXRWRFtvar((s6/usr/lib/python2.7/dist-packages/Pyste/GCCXMLParser.pyRVws c CsX|jd}|j|jd}|j|jdj}|jdtj}tt|jdd}tt|jdd} tt|jdd} tt|jd d} |j|jd } |j |jd d} |j |}||||||| | || | }| |_ |j ||dS( NRMRdRNRRWRtvirtualt pure_virtualR>RFRf(R,RBR3RRpRqRgRERIRcRR_RFRK(RRRt methodTypeRMRRR{RWRRR>RFRjRiR&((s6/usr/lib/python2.7/dist-packages/Pyste/GCCXMLParser.pyt ParseMethods$ cCs|j||tdS(N(Rt ClassOperator(RRR((s6/usr/lib/python2.7/dist-packages/Pyste/GCCXMLParser.pytParseOperatorMethodsc Cs|jd}|jdtj}|j|jdj}|j|jd}|j|}|jdt}t||||} || _ |j || dS(NRMRRNRFt artificial( R,RpRqR3RRIR_Rt ConstructorRFRK( RRRRMR{RRFRiRtctor((s6/usr/lib/python2.7/dist-packages/Pyste/GCCXMLParser.pytParseConstructors c Cs|jd}|jdtj}|j|jdj}tt|jdd}|j|jd}t||||}||_ |j ||dS(NRMRRNRRRF( R,RpRqR3RRgRERIt DestructorRFRK( RRRRMR{RRRFtdes((s6/usr/lib/python2.7/dist-packages/Pyste/GCCXMLParser.pytParseDestructors cCs|j||tdS(N(RtConverterOperator(RRR((s6/usr/lib/python2.7/dist-packages/Pyste/GCCXMLParser.pytParseConverterscCs|jd}|j|jd}|j|jd}t|tr]|j}nt|||}|j|||j|dS(NRMRURN( R,RBR3R<R RtTypedefRKR!(RRRRMRURNttypedef((s6/usr/lib/python2.7/dist-packages/Pyste/GCCXMLParser.pyt ParseTypedefsc Cs2|jd}|j|jd}|j|jd}tt|jdd}t|tr~t||}n-|jdtj }t ||j |}|j |||_ xQ|D]I} | jdkr| jd}t| jd} | |j|s$