亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? sources.py

?? ft235 freetype 2.3. 5 freetype 2.3.5
?? PY
字號:
#  Sources (c) 2002, 2003, 2004, 2006, 2007#    David Turner <david@freetype.org>### this file contains definitions of classes needed to decompose# C sources files into a series of multi-line "blocks". There are# two kinds of blocks:##   - normal blocks, which contain source code or ordinary comments##   - documentation blocks, which have restricted formatting, and#     whose text always start with a documentation markup tag like#     "<Function>", "<Type>", etc..## the routines used to process the content of documentation blocks# are not contained here, but in "content.py"## the classes and methods found here only deal with text parsing# and basic documentation block extraction#import fileinput, re, sys, os, string####################################################################  BLOCK FORMAT PATTERN####   A simple class containing compiled regular expressions used##   to detect potential documentation format block comments within##   C source code####   note that the 'column' pattern must contain a group that will##   be used to "unbox" the content of documentation comment blocks##class SourceBlockFormat:    def __init__( self, id, start, column, end ):        """create a block pattern, used to recognize special documentation blocks"""        self.id     = id        self.start  = re.compile( start, re.VERBOSE )        self.column = re.compile( column, re.VERBOSE )        self.end    = re.compile( end, re.VERBOSE )## format 1 documentation comment blocks look like the following:##    /************************************/#    /*                                  */#    /*                                  */#    /*                                  */#    /************************************/## we define a few regular expressions here to detect them#start = r'''  \s*       # any number of whitespace  /\*{2,}/  # followed by '/' and at least two asterisks then '/'  \s*$      # eventually followed by whitespace'''column = r'''  \s*      # any number of whitespace  /\*{1}   # followed by '/' and precisely one asterisk  ([^*].*) # followed by anything (group 1)  \*{1}/   # followed by one asterisk and a '/'  \s*$     # eventually followed by whitespace'''re_source_block_format1 = SourceBlockFormat( 1, start, column, start )## format 2 documentation comment blocks look like the following:##    /************************************ (at least 2 asterisks)#     *#     *#     *#     *#     **/       (1 or more asterisks at the end)## we define a few regular expressions here to detect them#start = r'''  \s*     # any number of whitespace  /\*{2,} # followed by '/' and at least two asterisks  \s*$    # eventually followed by whitespace'''column = r'''  \s*         # any number of whitespace  \*{1}(?!/)  # followed by precisely one asterisk not followed by `/'  (.*)        # then anything (group1)'''end = r'''  \s*     # any number of whitespace  \*+/    # followed by at least one asterisk, then '/''''re_source_block_format2 = SourceBlockFormat( 2, start, column, end )## the list of supported documentation block formats, we could add new ones# relatively easily#re_source_block_formats = [ re_source_block_format1, re_source_block_format2 ]## the following regular expressions corresponds to markup tags# within the documentation comment blocks. they're equivalent# despite their different syntax## notice how each markup tag _must_ begin a new line#re_markup_tag1 = re.compile( r'''\s*<(\w*)>''' )  # <xxxx> formatre_markup_tag2 = re.compile( r'''\s*@(\w*):''' )  # @xxxx: format## the list of supported markup tags, we could add new ones relatively# easily#re_markup_tags = [ re_markup_tag1, re_markup_tag2 ]## used to detect a cross-reference, after markup tags have been stripped#re_crossref = re.compile( r'@(\w*)(.*)' )## used to detect italic and bold styles in paragraph text#re_italic = re.compile( r"_(\w(\w|')*)_(.*)" )     #  _italic_re_bold   = re.compile( r"\*(\w(\w|')*)\*(.*)" )   #  *bold*## used to detect the end of commented source lines#re_source_sep = re.compile( r'\s*/\*\s*\*/' )## used to perform cross-reference within source output#re_source_crossref = re.compile( r'(\W*)(\w*)' )## a list of reserved source keywords#re_source_keywords = re.compile( '''\\b ( typedef   |                                          struct    |                                          enum      |                                          union     |                                          const     |                                          char      |                                          int       |                                          short     |                                          long      |                                          void      |                                          signed    |                                          unsigned  |                                          \#include |                                          \#define  |                                          \#undef   |                                          \#if      |                                          \#ifdef   |                                          \#ifndef  |                                          \#else    |                                          \#endif   ) \\b''', re.VERBOSE )####################################################################  SOURCE BLOCK CLASS####   A SourceProcessor is in charge or reading a C source file##   and decomposing it into a series of different "SourceBlocks".##   each one of these blocks can be made of the following data:####   - A documentation comment block that starts with "/**" and##     whose exact format will be discussed later####   - normal sources lines, include comments####   the important fields in a text block are the following ones:####     self.lines   : a list of text lines for the corresponding block####     self.content : for documentation comment blocks only, this is the##                    block content that has been "unboxed" from its##                    decoration. This is None for all other blocks##                    (i.e. sources or ordinary comments with no starting##                     markup tag)##class SourceBlock:    def __init__( self, processor, filename, lineno, lines ):        self.processor = processor        self.filename  = filename        self.lineno    = lineno        self.lines     = lines[:]        self.format    = processor.format        self.content   = []        if self.format == None:            return        words = []        # extract comment lines        lines = []        for line0 in self.lines:            m = self.format.column.match( line0 )            if m:                lines.append( m.group(1) )        # now, look for a markup tag        for l in lines:            l = string.strip(l)            if len(l) > 0:                for tag in re_markup_tags:                    if tag.match( l ):                        self.content = lines                return    def location( self ):        return "(" + self.filename + ":" + repr(self.lineno) + ")"    # debugging only - not used in normal operations    def dump( self ):        if self.content:            print "{{{content start---"            for l in self.content:                print l            print "---content end}}}"            return        fmt = ""        if self.format:            fmt = repr(self.format.id) + " "        for line in self.lines:            print line####################################################################  SOURCE PROCESSOR CLASS####   The SourceProcessor is in charge or reading a C source file##   and decomposing it into a series of different "SourceBlock"##   objects.####   each one of these blocks can be made of the following data:####   - A documentation comment block that starts with "/**" and##     whose exact format will be discussed later####   - normal sources lines, include comments####class SourceProcessor:    def  __init__( self ):        """initialize a source processor"""        self.blocks   = []        self.filename = None        self.format   = None        self.lines    = []    def  reset( self ):        """reset a block processor, clean all its blocks"""        self.blocks = []        self.format = None    def  parse_file( self, filename ):        """parse a C source file, and adds its blocks to the processor's list"""        self.reset()        self.filename = filename        fileinput.close()        self.format    = None        self.lineno    = 0        self.lines     = []        for line in fileinput.input( filename ):            # strip trailing newlines, important on Windows machines !!            if  line[-1] == '\012':                line = line[0:-1]            if self.format == None:                self.process_normal_line( line )            else:                if self.format.end.match( line ):                    # that's a normal block end, add it to lines and                    # create a new block                    self.lines.append( line )                    self.add_block_lines()                elif self.format.column.match( line ):                    # that's a normal column line, add it to 'lines'                    self.lines.append( line )                else:                    # humm.. this is an unexpected block end,                    # create a new block, but don't process the line                    self.add_block_lines()                    # we need to process the line again                    self.process_normal_line( line )        # record the last lines        self.add_block_lines()    def process_normal_line( self, line ):        """process a normal line and check if it's the start of a new block"""        for f in re_source_block_formats:          if f.start.match( line ):            self.add_block_lines()            self.format = f            self.lineno = fileinput.filelineno()        self.lines.append( line )    def add_block_lines( self ):        """add the current accumulated lines, and create a new block"""        if self.lines != []:            block = SourceBlock( self, self.filename, self.lineno, self.lines )            self.blocks.append( block )            self.format = None            self.lines  = []    # debugging only, not used in normal operations    def dump( self ):        """print all blocks in a processor"""        for b in self.blocks:            b.dump()# eof

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人免费视| 精品国产伦理网| 国产成人综合精品三级| 日本不卡中文字幕| 肉色丝袜一区二区| 午夜成人免费电影| 亚洲国产成人91porn| 亚洲精品免费电影| 国产成人精品在线看| 六月丁香婷婷久久| 日本最新不卡在线| 偷拍日韩校园综合在线| 亚洲综合一区二区三区| 亚洲欧美另类综合偷拍| 中文字幕一区二区三区蜜月| 日本一区二区免费在线观看视频| 久久综合久久综合久久| 26uuu亚洲| 欧美激情中文字幕一区二区| 欧美激情艳妇裸体舞| 国产日韩欧美高清在线| 亚洲国产日韩精品| 亚洲精品国产第一综合99久久| 亚洲色图欧洲色图| 香蕉乱码成人久久天堂爱免费| 国产一区二区女| 亚洲精品久久久蜜桃| 亚洲v中文字幕| 奇米在线7777在线精品| 国模一区二区三区白浆| 成人黄色片在线观看| 色婷婷国产精品| 91精品国产综合久久国产大片| 精品久久一区二区三区| 国产精品美女视频| 亚洲成人免费av| 国产精品一级黄| 日本精品视频一区二区三区| 欧美日精品一区视频| 日韩精品一区二区三区四区| 亚洲国产精品传媒在线观看| 一区二区三区中文字幕| 久久成人久久爱| 99久久99精品久久久久久| 91成人在线精品| 久久综合九色欧美综合狠狠 | 美女性感视频久久| 99精品在线观看视频| 欧美一区二区视频观看视频| 成人免费在线视频| 久久成人免费网| 欧美日韩精品福利| 国产精品久久毛片a| 久久国产麻豆精品| 欧美久久高跟鞋激| 亚洲精品视频在线观看免费| 国产成人一级电影| 欧美一区二区二区| 亚洲永久免费视频| 91丝袜国产在线播放| 久久婷婷色综合| 久久精品国产一区二区| 欧美唯美清纯偷拍| 亚洲人成亚洲人成在线观看图片| 国产一区二区久久| 日韩免费福利电影在线观看| 亚洲国产日韩a在线播放性色| 欧美一区二区国产| 亚洲伊人伊色伊影伊综合网| 成人黄色一级视频| 国产片一区二区| 国产美女精品在线| 欧美大肚乱孕交hd孕妇| 日韩高清不卡一区二区| 欧美私人免费视频| 亚洲国产日韩av| 欧美日韩一区二区三区在线| 亚洲精品免费一二三区| 91在线国产福利| 一区二区三区在线观看动漫| 91丨九色丨国产丨porny| 一区视频在线播放| 91亚洲国产成人精品一区二三| 国产精品美女久久久久久久久 | 国产精品视频免费看| 亚洲啪啪综合av一区二区三区| 亚洲一区二区三区四区中文字幕| 91片黄在线观看| 亚洲精品日日夜夜| 色婷婷久久99综合精品jk白丝| 亚洲桃色在线一区| 色欧美日韩亚洲| 亚洲国产欧美日韩另类综合| 欧美丰满少妇xxxbbb| 日本亚洲视频在线| 亚洲精品在线电影| 不卡的av电影| 亚洲香肠在线观看| 日韩欧美在线1卡| 国内精品第一页| 国产精品久久久久久妇女6080| 欧美精品一区二区三区视频| 国产精品久久久久婷婷| 狠狠色综合日日| 欧美国产成人精品| 91麻豆精品视频| 亚洲18色成人| 久久久国际精品| 成人黄色国产精品网站大全在线免费观看 | 精品免费日韩av| 国产激情91久久精品导航| 国产精品麻豆视频| 欧美日韩情趣电影| 国产一区二区剧情av在线| 亚洲天堂2014| 久久综合久久综合亚洲| 97久久精品人人澡人人爽| 青青草成人在线观看| 久久蜜桃av一区精品变态类天堂| 不卡的av网站| 美国av一区二区| 亚洲日本在线看| 精品国产1区二区| 在线视频中文字幕一区二区| 国内精品伊人久久久久av影院| 亚洲乱码国产乱码精品精可以看 | 日韩精品资源二区在线| 9久草视频在线视频精品| 日本不卡一区二区| 亚洲蜜臀av乱码久久精品蜜桃| 欧美成人vps| 欧美精品日韩一本| 91色视频在线| 成人午夜视频免费看| 免费久久精品视频| 亚洲第一成人在线| 亚洲免费av高清| 中文字幕中文在线不卡住| 日韩一区二区三区免费看 | 欧美唯美清纯偷拍| 国产一区二区免费视频| 日日摸夜夜添夜夜添亚洲女人| 中文字幕日韩一区| 自拍偷在线精品自拍偷无码专区| 26uuu国产日韩综合| 欧美一区二区三区性视频| 91麻豆.com| 99精品国产99久久久久久白柏 | 国产农村妇女毛片精品久久麻豆 | 紧缚奴在线一区二区三区| 亚洲高清免费在线| 亚洲九九爱视频| 亚洲黄色免费网站| 亚洲日本va在线观看| 亚洲欧美综合在线精品| 国产精品国产三级国产aⅴ原创| 久久久99精品久久| 国产午夜一区二区三区| 久久蜜桃一区二区| 欧美韩国一区二区| 国产精品青草久久| 国产精品视频你懂的| 国产精品伦一区二区三级视频| 中文字幕乱码一区二区免费| 国产精品免费av| 亚洲视频一区在线| 亚洲欧美电影院| 亚洲一区二区视频在线观看| 亚洲成av人片一区二区梦乃| 午夜私人影院久久久久| 亚洲视频在线一区| 亚洲综合色丁香婷婷六月图片| 一个色综合av| 五月天网站亚洲| 免费亚洲电影在线| 在线视频综合导航| 色女孩综合影院| 欧美日韩精品一区二区三区四区| 欧美一区国产二区| 久久色成人在线| 亚洲男女毛片无遮挡| 亚洲高清视频中文字幕| 久久成人麻豆午夜电影| 成人av影视在线观看| 在线观看视频欧美| 日韩欧美国产成人一区二区| 欧美韩日一区二区三区四区| 亚洲综合色区另类av| 免费国产亚洲视频| 成人av网在线| 欧美日韩五月天| 国产日韩欧美a| 性做久久久久久免费观看欧美| 黄色成人免费在线| 91美女精品福利| 久久免费视频色| 天天综合网 天天综合色| 国产精品自产自拍| 欧美日韩在线一区二区| 久久九九99视频|