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

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

?? build-request.jam

?? boost庫提供標準的C++ API 配合dev c++使用,功能更加強大
?? JAM
字號:
#  (C) Copyright David Abrahams 2002. Permission to copy, use, modify, sell and
#  distribute this software is granted provided this copyright notice appears in
#  all copies. This software is provided "as is" without express or implied
#  warranty, and with no claim as to its suitability for any purpose.

import sequence ;
import set ;
import regex ;
import feature ;
import property ;
import numbers ;
import container ;
import "class" : new ;
import string ;

# Transform property-set by applying f to each component property.
local rule apply-to-property-set ( f property-set )
{
    local properties = [ feature.split $(property-set) ] ;
    return [ string.join [ $(f) $(properties) ] : / ] ;
}

# expand the given build request by combining all property-sets which don't
# specify conflicting non-free features.
rule expand-no-defaults ( property-sets * )
{
    # First make all features and subfeatures explicit
    local expanded-property-sets = [ 
      sequence.transform apply-to-property-set feature.expand-subfeatures
        : $(property-sets) ] ;
    
    # Now combine all of the expanded property-sets
    local product = [ x-product $(expanded-property-sets) : $(feature-space) ] ;
    
    return $(product) ;
}

# implementaiton of x-product, below
local rule x-product-aux ( property-sets + )
{
    local result ;
    local p = [ feature.split $(property-sets[1]) ] ;
    local f = [ set.difference $(p:G) : [ feature.free-features ] ] ;
    local seen ;
    # No conflict with things used at a higher level?
    if ! [ set.intersection $(f) : $(x-product-used) ]
    {
        local x-product-seen ;
        {
            # don't mix in any conflicting features
            local x-product-used = $(x-product-used) $(f) ;
            
            if $(property-sets[2])
            {
                local rest = [ x-product-aux $(property-sets[2-]) : $(feature-space) ] ;
                result = $(property-sets[1])/$(rest) ;
            }
            
            result ?= $(property-sets[1]) ;
        }
        
        # If we didn't encounter a conflicting feature lower down,
        # don't recurse again.
        if ! [ set.intersection $(f) : $(x-product-seen) ]
        {
            property-sets = ;
        }
        
        seen = $(x-product-seen) ;
    }
    
    if $(property-sets[2])
    {
        result += [ x-product-aux $(property-sets[2-]) : $(feature-space) ] ;
    }
    
    # Note that we've seen these features so that higher levels will
    # recurse again without them set.
    x-product-seen += $(f) $(seen) ;
    return $(result) ;
}

# Return the cross-product of all elements of property-sets, less any
# that would contain conflicting values for single-valued features.
local rule x-product ( property-sets * )
{
    if $(property-sets).non-empty
    {
        # prepare some "scoped globals" that can be used by the
        # implementation function, x-product-aux.
        local x-product-seen x-product-used ;
        return [ x-product-aux $(property-sets) : $(feature-space) ] ;
    }
    # otherwise return empty
}

# 
# Returns the result of 'expand-no-defaults' after appying feature default to it.
#
rule expand ( property-sets * )
{
    local expanded = [ expand-no-defaults $(property-sets) : $(feature-space) ] ;
    
    expanded ?= "" ;
    
    local result ;
    for local p in $(expanded) 
    {
        p = [ feature.split $(p) ] ;
        
        if ! $(p)
        {
            p = ;
        }
        
        p = [ feature.add-defaults $(p) ] ;
        result += $(p:J=/) ;
    }
    return $(result) ;
}

# Returns true if 'v' is either implicit value, or
# the part before the first '-' symbol is implicit value
local rule looks-like-implicit-value ( v )
{
    
    if [ feature.is-implicit-value $(v) ]
    {
        return true ;
    }
    else
    {
        local split = [ regex.split $(v) - ] ;
        if [ feature.is-implicit-value $(split[1]) ]
        {
            return true ;
        }        
    }
}


# Takes the command line tokens (such as taken from ARGV rule) and constructs
# build request from it.
# Returns a vector of two vectors (where "vector" means container.jam's "vector"). 
# First is the set of targets specified in the command line, and second is
# the set of requested build properties. 
rule from-command-line ( command-line * )
{
    local targets ;
    local properties ;

    command-line = $(command-line[2-]) ;
    for local e in $(command-line)
    {
        if ! [ MATCH "^(-).*" : $(e) ] 
        {
            # Build request spec either has "=" in it, or completely
            # consists of implicit feature values.
            local fs = feature-space ;
            if [ MATCH "(.*=.*)" : $(e) ] 
               || [ looks-like-implicit-value $(e:D=) : $(feature-space) ] 
            {
                properties += [ convert-command-line-element $(e) : $(feature-space) ] ;
            }
            else
            {
                targets += $(e) ;
            }
        }
    }
    return [ new vector [ new vector $(targets) ] [ new vector $(properties) ] ] ;
}

# Converts one element of command line build request specification into
# internal form.
local rule convert-command-line-element ( e )
{
    local result ;
    local parts = [ regex.split $(e) "/" ] ;
    for local p in $(parts) 
    {
        local m = [ MATCH "([^=]*)=(.*)" : $(p) ] ;
        local lresult ;
        if $(m) 
        {
            local feature = $(m[1]) ;
            local values = [ regex.split $(m[2]) "," ] ;            
            lresult = <$(feature)>$(values) ;            
        }
        else
        {
            lresult = [ regex.split $(p) "," ] ;
        }

        if ! [ MATCH (.*-.*) : $(p) ]
        {          
            # property.validate cannot handle subfeatures,
            # so we avoid the check here.
            for local p in $(lresult)
            {
                property.validate $(p) : $(feature-space) ;
            }
        }
        

        if ! $(result) 
        {
            result = $(lresult) ;
        }
        else
        {
            result = $(result)/$(lresult) ;
        }
    }  
    
    return $(result) ;
}

rule __test__ ( )
{
    import assert feature ;
    
    feature.prepare-test build-request-test-temp ;
    
    import build-request ;
    import build-request : expand-no-defaults : build-request.expand-no-defaults ;
    import errors : try catch ;
    import feature : feature subfeature ;

    feature toolset : gcc msvc borland : implicit ;
    subfeature toolset gcc : version : 2.95.2 2.95.3 2.95.4
      3.0 3.0.1 3.0.2 : optional ;

    feature variant : debug release : implicit composite ;
    feature inlining : on off ;
    feature "include" : : free ;

    feature stdlib : native stlport : implicit ;

    feature runtime-link : dynamic static : symmetric ;

    # empty build requests should expand to empty.
    assert.result
      : build-request.expand-no-defaults
      ;

    assert.result <toolset>gcc/<variant>debug/<inlining>on/<stdlib>native/<runtime-link>dynamic
      : build-request.expand
      ;

    assert.result
      <toolset>gcc/<toolset-gcc:version>3.0.1/<stdlib>stlport/<variant>debug
      <toolset>msvc/<stdlib>stlport/<variant>debug
      <toolset>msvc/<variant>debug 

      : build-request.expand-no-defaults gcc-3.0.1/stlport msvc/stlport msvc debug
      ;

    assert.result
      <toolset>gcc/<toolset-gcc:version>3.0.1/<stdlib>stlport/<variant>debug/<inlining>on/<runtime-link>dynamic
      <toolset>msvc/<stdlib>stlport/<variant>debug/<inlining>on/<runtime-link>dynamic
      <toolset>msvc/<variant>debug/<inlining>on/<stdlib>native/<runtime-link>dynamic

      : build-request.expand gcc-3.0.1/stlport msvc/stlport msvc debug
      ;

    assert.result
      <toolset>gcc/<toolset-gcc:version>3.0.1/<stdlib>stlport/<variant>debug
      <toolset>msvc/<variant>debug 
      <variant>debug/<toolset>msvc/<stdlib>stlport

      : build-request.expand-no-defaults gcc-3.0.1/stlport msvc debug msvc/stlport
      ;

    assert.result
      <toolset>gcc/<toolset-gcc:version>3.0.1/<stdlib>stlport/<variant>debug/<inlining>off
      <toolset>gcc/<toolset-gcc:version>3.0.1/<stdlib>stlport/<variant>release/<inlining>off

      : build-request.expand-no-defaults gcc-3.0.1/stlport debug release <inlining>off
      ;        

    assert.result
      <include>a/b/c/<toolset>gcc/<toolset-gcc:version>3.0.1/<stdlib>stlport/<variant>debug/<include>x/y/z
      <include>a/b/c/<toolset>msvc/<stdlib>stlport/<variant>debug/<include>x/y/z
      <include>a/b/c/<toolset>msvc/<variant>debug/<include>x/y/z 

      : build-request.expand-no-defaults <include>a/b/c gcc-3.0.1/stlport msvc/stlport msvc debug  <include>x/y/z
      ;

    local r ;

    r = [ build-request.from-command-line bjam debug runtime-link=dynamic ] ;              
    assert.equal [ $(r).get-at 1 ] : ;
    assert.equal [ $(r).get-at 2 ] : debug <runtime-link>dynamic ;

    try ;
    {

        build-request.from-command-line bjam gcc/debug runtime-link=dynamic/static ;
    }
    catch \"static\" is not a value of an implicit feature ;


    r = [ build-request.from-command-line bjam -d2 --debug debug target runtime-link=dynamic ] ;
    assert.equal [ $(r).get-at 1 ] : target ;
    assert.equal [ $(r).get-at 2 ] : debug <runtime-link>dynamic ;

    r = [ build-request.from-command-line bjam debug runtime-link=dynamic,static ] ;
    assert.equal [ $(r).get-at 1 ] : ;
    assert.equal [ $(r).get-at 2 ] : debug <runtime-link>dynamic <runtime-link>static ;

    r = [ build-request.from-command-line bjam debug gcc/runtime-link=dynamic,static ] ;
    assert.equal [ $(r).get-at 1 ] : ;
    assert.equal [ $(r).get-at 2 ] : debug gcc/<runtime-link>dynamic 
                 gcc/<runtime-link>static ;

    r = [ build-request.from-command-line bjam msvc gcc,borland/runtime-link=static ] ;
    assert.equal [ $(r).get-at 1 ] : ;
    assert.equal [ $(r).get-at 2 ] : msvc gcc/<runtime-link>static 
                    borland/<runtime-link>static ;

    r = [ build-request.from-command-line bjam gcc-3.0 ] ;
    assert.equal [ $(r).get-at 1 ] : ;
    assert.equal [ $(r).get-at 2 ] : gcc-3.0 ;

    feature.finish-test build-request-test-temp ;
}


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
美腿丝袜亚洲综合| 国产精品电影院| 精品欧美一区二区久久| 国产日韩精品一区二区三区| 综合色天天鬼久久鬼色| 美女视频黄a大片欧美| 99久久99久久精品免费观看 | 久久亚洲综合色一区二区三区| 中文字幕一区不卡| av不卡一区二区三区| 欧美精品自拍偷拍动漫精品| 欧美国产丝袜视频| 久久99精品一区二区三区| 一本大道av一区二区在线播放| 欧美精品一区二区三区蜜桃| 99久久久免费精品国产一区二区| 中文字幕欧美一| 制服丝袜激情欧洲亚洲| 99久久久久久| www亚洲一区| 日韩精品亚洲专区| 91视视频在线观看入口直接观看www | 亚洲福利视频一区二区| 成人av中文字幕| 久久久久久免费网| 久久国产剧场电影| 制服丝袜一区二区三区| 一区二区三区精品视频| 不卡视频在线观看| 国产三级一区二区| 国产一区日韩二区欧美三区| 91精品国产综合久久久久| 亚洲一区二区视频在线| 色综合天天综合网天天狠天天| 欧美国产一区在线| 成av人片一区二区| 国产精品福利一区二区| 99视频一区二区三区| 国产精品三级av在线播放| 国产成人av电影在线播放| 久久久久综合网| 国产福利一区二区三区视频 | 欧美一区二区三区四区久久| 午夜精品成人在线视频| 777午夜精品免费视频| 首页亚洲欧美制服丝腿| 日韩欧美国产成人一区二区| 免费精品视频在线| ww亚洲ww在线观看国产| 国产精品中文有码| 国产精品久久久久久久久晋中 | 欧美亚洲高清一区二区三区不卡| 中文字幕不卡在线| 久久99久久久欧美国产| 麻豆国产精品一区二区三区| 看电视剧不卡顿的网站| 日韩亚洲欧美高清| 亚洲国产欧美一区二区三区丁香婷| 欧美色图片你懂的| 亚洲国产欧美日韩另类综合| 久久蜜桃av一区精品变态类天堂 | 欧美一区二区福利视频| 日韩精品电影一区亚洲| 3d成人动漫网站| 天堂va蜜桃一区二区三区| 777午夜精品免费视频| 日韩电影在线观看一区| 91精品国产免费| 喷白浆一区二区| 久久网站热最新地址| 久久精品国产久精国产| 亚洲欧洲精品一区二区三区| 色综合中文字幕| 午夜精品视频在线观看| 欧美日韩精品一区二区三区蜜桃| 国产黄色精品网站| 91高清视频免费看| 午夜精品福利一区二区蜜股av| 欧美日本韩国一区二区三区视频| 日本中文字幕一区二区视频| 精品福利二区三区| av一区二区三区| 香蕉成人啪国产精品视频综合网| 日韩欧美卡一卡二| 国产高清久久久久| 亚洲同性gay激情无套| 7777精品伊人久久久大香线蕉完整版 | 激情都市一区二区| 国产欧美一区二区精品性 | 爽好久久久欧美精品| 久久久久久久久久久久电影| 日本乱人伦一区| 亚洲国产一区二区视频| 中文字幕欧美区| 制服.丝袜.亚洲.另类.中文| 国产成人精品免费网站| 亚洲成人综合视频| 国产精品色婷婷| 91麻豆精品国产无毒不卡在线观看| 国产成人精品www牛牛影视| 一区二区三区日韩在线观看| 精品粉嫩超白一线天av| 日本韩国欧美一区| 亚洲成人免费av| 国产色一区二区| 精品夜夜嗨av一区二区三区| 中文字幕亚洲综合久久菠萝蜜| 337p亚洲精品色噜噜狠狠| 成人免费毛片嘿嘿连载视频| 美女在线视频一区| 亚洲精品成人a在线观看| 久久久www成人免费毛片麻豆| 欧美日韩专区在线| 欧洲国内综合视频| 99久久精品免费| 另类调教123区 | 欧美成人伊人久久综合网| 91猫先生在线| 美国毛片一区二区| 亚洲电影中文字幕在线观看| 国产精品第13页| 久久精品视频一区二区| 精品日韩99亚洲| 91精品国产手机| 欧美日韩一区中文字幕| 91在线精品一区二区| 国产精品一区专区| 精品中文字幕一区二区| 日韩不卡一区二区三区 | 不卡视频在线观看| 国产精品一区二区果冻传媒| 毛片一区二区三区| 日韩成人午夜精品| 五月婷婷综合在线| 亚洲国产精品视频| 欧美极品少妇xxxxⅹ高跟鞋| 久久婷婷色综合| 精品国产乱码久久久久久蜜臀| 欧美一区二区三区四区五区 | 成人激情电影免费在线观看| 国产高清视频一区| 成人一级黄色片| 不卡一区二区三区四区| 99久久精品免费看国产免费软件| av在线播放成人| 色综合av在线| 欧美日韩视频不卡| 高清免费成人av| 成人性生交大合| 日本电影亚洲天堂一区| 欧美亚洲国产怡红院影院| 欧美绝品在线观看成人午夜影视| 欧美高清性hdvideosex| 91精品国产乱| 欧美精品一区二区在线观看| 精品处破学生在线二十三| 综合在线观看色| 午夜精品福利在线| 久久国产福利国产秒拍| 国产精品一区二区视频| www.亚洲激情.com| 欧美日韩亚洲综合一区| 日韩美女一区二区三区| 久久精品欧美一区二区三区麻豆| 中文字幕国产一区| 亚洲国产一区在线观看| 婷婷亚洲久悠悠色悠在线播放 | 欧美网站大全在线观看| 日韩免费福利电影在线观看| 久久蜜桃av一区精品变态类天堂 | 亚洲柠檬福利资源导航| 日韩精品一级中文字幕精品视频免费观看 | 欧美伊人久久久久久久久影院 | 激情综合网天天干| 成人国产免费视频| 色婷婷综合久久久久中文一区二区| 欧美不卡123| 亚洲欧美一区二区三区久本道91 | 国产一区二区三区在线观看免费| 黄页视频在线91| 色悠悠亚洲一区二区| 欧美三级午夜理伦三级中视频| 欧美成人精品1314www| 18欧美乱大交hd1984| 香蕉影视欧美成人| 色婷婷亚洲精品| 日韩女同互慰一区二区| 亚洲乱码日产精品bd| 国产精品资源网站| 欧美日韩精品是欧美日韩精品| 久久久久久久综合日本| 丝袜亚洲另类丝袜在线| thepron国产精品| 日韩一区二区在线看片| 一区二区三区日韩精品视频| 成人午夜免费av| 久久综合99re88久久爱| 久久成人免费网| 欧美精品成人一区二区三区四区| 国产精品二区一区二区aⅴ污介绍|