http://git-wip-us.apache.org/repos/asf/incubator-joshua/blob/6da3961b/ext/kenlm/jam-files/boost-build/tools/types/objc.jam
----------------------------------------------------------------------
diff --git a/ext/kenlm b/ext/kenlm
new file mode 160000
index 0000000..56fdb5c
--- /dev/null
+++ b/ext/kenlm
@@ -0,0 +1 @@
+Subproject commit 56fdb5c44fca34d5a2e07d96139c28fb163983c5
diff --git a/ext/kenlm/jam-files/boost-build/tools/types/objc.jam 
b/ext/kenlm/jam-files/boost-build/tools/types/objc.jam
deleted file mode 100644
index 709cbd0..0000000
--- a/ext/kenlm/jam-files/boost-build/tools/types/objc.jam
+++ /dev/null
@@ -1,26 +0,0 @@
-# Copyright Rene Rivera 2008, 2010.
-# Distributed under the Boost Software License, Version 1.0. (See accompanying
-# file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-import type ;
-import scanner ;
-import types/cpp ;
-
-class objc-scanner : c-scanner
-{
-    rule __init__ ( includes * )
-    {
-        c-scanner.__init__ $(includes) ;
-    }
-
-    rule pattern ( )
-    {
-        return "#[ \t]*include|import[ ]*(<(.*)>|\"(.*)\")" ;
-    }
-}
-
-scanner.register objc-scanner : include ;
-
-type.register OBJECTIVE_C : m ;
-type.register OBJECTIVE_CPP : mm ;
-type.set-scanner OBJECTIVE_C : objc-scanner ;
-type.set-scanner OBJECTIVE_CPP : objc-scanner ;

http://git-wip-us.apache.org/repos/asf/incubator-joshua/blob/6da3961b/ext/kenlm/jam-files/boost-build/tools/types/preprocessed.jam
----------------------------------------------------------------------
diff --git a/ext/kenlm b/ext/kenlm
new file mode 160000
index 0000000..56fdb5c
--- /dev/null
+++ b/ext/kenlm
@@ -0,0 +1 @@
+Subproject commit 56fdb5c44fca34d5a2e07d96139c28fb163983c5
diff --git a/ext/kenlm/jam-files/boost-build/tools/types/preprocessed.jam 
b/ext/kenlm/jam-files/boost-build/tools/types/preprocessed.jam
deleted file mode 100644
index c9187ba..0000000
--- a/ext/kenlm/jam-files/boost-build/tools/types/preprocessed.jam
+++ /dev/null
@@ -1,9 +0,0 @@
-# Copyright Steven Watanabe 2011
-# Distributed under the Boost Software License Version 1.0. (See
-# accompanying file LICENSE_1_0.txt or copy at
-# http://www.boost.org/LICENSE_1_0.txt)
-
-import type ;
-
-type.register PREPROCESSED_C : i : C ;
-type.register PREPROCESSED_CPP : ii : CPP ;

http://git-wip-us.apache.org/repos/asf/incubator-joshua/blob/6da3961b/ext/kenlm/jam-files/boost-build/tools/types/qt.jam
----------------------------------------------------------------------
diff --git a/ext/kenlm b/ext/kenlm
new file mode 160000
index 0000000..56fdb5c
--- /dev/null
+++ b/ext/kenlm
@@ -0,0 +1 @@
+Subproject commit 56fdb5c44fca34d5a2e07d96139c28fb163983c5
diff --git a/ext/kenlm/jam-files/boost-build/tools/types/qt.jam 
b/ext/kenlm/jam-files/boost-build/tools/types/qt.jam
deleted file mode 100644
index 4951063..0000000
--- a/ext/kenlm/jam-files/boost-build/tools/types/qt.jam
+++ /dev/null
@@ -1,12 +0,0 @@
-# Copyright Vladimir Prus 2005. Distributed under the Boost
-# Software License, Version 1.0. (See accompanying
-# file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-type UI : ui ;
-type QRC : qrc ;
-type MOCCABLE_CPP ;
-type MOCCABLE_H ;
-type MOCCABLE5_CPP ;
-type MOCCABLE5_H ;
-# Result of running moc.
-type MOC : moc : H ;

http://git-wip-us.apache.org/repos/asf/incubator-joshua/blob/6da3961b/ext/kenlm/jam-files/boost-build/tools/types/register.jam
----------------------------------------------------------------------
diff --git a/ext/kenlm b/ext/kenlm
new file mode 160000
index 0000000..56fdb5c
--- /dev/null
+++ b/ext/kenlm
@@ -0,0 +1 @@
+Subproject commit 56fdb5c44fca34d5a2e07d96139c28fb163983c5
diff --git a/ext/kenlm/jam-files/boost-build/tools/types/register.jam 
b/ext/kenlm/jam-files/boost-build/tools/types/register.jam
deleted file mode 100644
index 203992c..0000000
--- a/ext/kenlm/jam-files/boost-build/tools/types/register.jam
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright David Abrahams 2004. Distributed under the Boost
-# Software License, Version 1.0. (See accompanying
-# file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-# This module's job is to automatically import all the type
-# registration modules in its directory.
-import type os path modules ;
-
-# Register the given type on the specified OSes, or on remaining OSes
-# if os is not specified.  This rule is injected into each of the type
-# modules for the sake of convenience.
-local rule type ( type : suffixes * : base-type ? : os * )
-{
-    if ! [ type.registered $(type) ]
-    {
-        if ( ! $(os) ) || [ os.name ] in $(os)
-        {
-            type.register $(type) : $(suffixes) : $(base-type) ;
-        }
-    }
-}
-
-.this-module's-file = [ modules.binding $(__name__) ] ;
-.this-module's-dir = [ path.parent $(.this-module's-file) ] ;
-.sibling-jamfiles =  [ path.glob $(.this-module's-dir) : *.jam ] ;
-.sibling-modules = [ MATCH ^(.*)\.jam$ : $(.sibling-jamfiles) ] ;
-
-# A loop over all modules in this directory
-for m in $(.sibling-modules)
-{
-    m = [ path.basename $(m) ] ;
-    m = types/$(m) ;
-    
-    # Inject the type rule into the new module
-    IMPORT $(__name__) : type : $(m) : type ;
-    import $(m) ;
-}
-
-

http://git-wip-us.apache.org/repos/asf/incubator-joshua/blob/6da3961b/ext/kenlm/jam-files/boost-build/tools/types/rsp.jam
----------------------------------------------------------------------
diff --git a/ext/kenlm b/ext/kenlm
new file mode 160000
index 0000000..56fdb5c
--- /dev/null
+++ b/ext/kenlm
@@ -0,0 +1 @@
+Subproject commit 56fdb5c44fca34d5a2e07d96139c28fb163983c5
diff --git a/ext/kenlm/jam-files/boost-build/tools/types/rsp.jam 
b/ext/kenlm/jam-files/boost-build/tools/types/rsp.jam
deleted file mode 100644
index bdf8a7c..0000000
--- a/ext/kenlm/jam-files/boost-build/tools/types/rsp.jam
+++ /dev/null
@@ -1,4 +0,0 @@
-# Copyright David Abrahams 2004. Distributed under the Boost
-# Software License, Version 1.0. (See accompanying
-# file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-type RSP : rsp ;

http://git-wip-us.apache.org/repos/asf/incubator-joshua/blob/6da3961b/ext/kenlm/jam-files/boost-build/tools/unix.jam
----------------------------------------------------------------------
diff --git a/ext/kenlm b/ext/kenlm
new file mode 160000
index 0000000..56fdb5c
--- /dev/null
+++ b/ext/kenlm
@@ -0,0 +1 @@
+Subproject commit 56fdb5c44fca34d5a2e07d96139c28fb163983c5
diff --git a/ext/kenlm/jam-files/boost-build/tools/unix.jam 
b/ext/kenlm/jam-files/boost-build/tools/unix.jam
deleted file mode 100644
index 7594985..0000000
--- a/ext/kenlm/jam-files/boost-build/tools/unix.jam
+++ /dev/null
@@ -1,224 +0,0 @@
-#  Copyright (c) 2004 Vladimir Prus.
-#
-#  Use, modification and distribution is subject to the Boost Software
-#  License Version 1.0. (See accompanying file LICENSE_1_0.txt or
-#  http://www.boost.org/LICENSE_1_0.txt)
-
-#  This file implements linking semantic common to all unixes. On unix, static
-#  libraries must be specified in a fixed order on the linker command line. 
Generators
-#  declared there store information about the order and use it property.
-
-import feature ;
-import "class" : new ;
-import generators ;
-import type ;
-import set ;
-import order ;
-import builtin ;
-
-class unix-linking-generator : linking-generator
-{
-    import property-set ;
-    import type ;
-    import unix ;
-    
-    rule __init__ ( id 
-        composing ? : # Specify if generator is composing. The generator will 
be
-        # composing if non-empty string is passed, or parameter is
-        # not given. To make generator non-composing, pass empty
-        # string ("")
-        source-types + : target-types + : 
-        requirements * )
-    {
-        composing ?= true ;
-        generator.__init__ $(id) $(composing) : $(source-types) : 
$(target-types) :
-          $(requirements) ;
-    }
-    
-    rule run ( project name ? : property-set : sources + )
-    {   
-        local result = [ linking-generator.run $(project) $(name) : 
$(property-set)
-          : $(sources) ] ;
-        
-        unix.set-library-order $(sources) : $(property-set) : $(result[2-]) ;
-                                
-        return $(result) ;
-    }
-    
-    rule generated-targets ( sources + : property-set : project name ? )
-    {
-        local sources2 ;
-        local libraries ;
-        for local l in $(sources)
-        {
-            if [ type.is-derived [ $(l).type ] LIB ]
-            {
-                libraries += $(l) ;
-            }
-            else
-            {
-                sources2 += $(l) ;
-            }            
-        }
-        
-        sources = $(sources2) [ unix.order-libraries $(libraries) ] ;
-        
-        return [ linking-generator.generated-targets $(sources) : 
$(property-set)
-          : $(project) $(name) ] ;
-    }
-    
-} 
-
-class unix-archive-generator : archive-generator
-{
-    import unix ; 
-
-    rule __init__ ( id composing ? : source-types + : target-types + : 
-        requirements * )
-    {
-        composing ?= true ;
-        archive-generator.__init__ $(id) $(composing) : $(source-types) : 
$(target-types) :
-          $(requirements) ;
-    }
-        
-    rule run ( project name ? : property-set : sources + )
-    {                                
-        local result = [ archive-generator.run $(project) $(name) : 
$(property-set)
-          : $(sources) ] ;
-        
-        unix.set-library-order $(sources) : $(property-set) : $(result[2-]) ;
-        
-        return $(result) ;
-
-    }    
-}
-
-class unix-searched-lib-generator : searched-lib-generator
-{
-    import unix ;
-    rule __init__ ( * : * )
-    { 
-        generator.__init__ 
-          $(1) : $(2) : $(3) : $(4) : $(5) : $(6) : $(7) : $(8) : $(9) ;
-    }
-    
-    rule optional-properties ( )
-    {
-        return $(self.requirements) ;
-    }
-              
-    rule run ( project name ? : property-set : sources * )
-    {
-        local result = [ searched-lib-generator.run $(project) $(name) 
-          : $(property-set) : $(sources) ] ;
-        
-        unix.set-library-order $(sources) : $(property-set) : $(result[2-]) ;
-        
-        return $(result) ;
-    }    
-}
-
-class unix-prebuilt-lib-generator : generator
-{
-    import unix ;
-    rule __init__ ( * : * )
-    {
-        generator.__init__ $(1) : $(2) : $(3) : $(4) : $(5) : $(6) : $(7) : 
$(8) : $(9) ;
-    }
-
-    rule run ( project name ? : property-set : sources * )
-    {
-        local f = [ $(property-set).get <file> ] ;
-        unix.set-library-order-aux $(f) : $(sources) ;
-        return $(f) $(sources) ;
-    }    
-}
-
-generators.register 
-  [ new unix-prebuilt-lib-generator unix.prebuilt : : LIB 
-      : <file> <toolset>unix ] ;
-
-generators.override unix.prebuilt : builtin.lib-generator ;
-
-
-# Declare generators
-generators.register [ new unix-linking-generator unix.link : LIB OBJ : EXE 
-    : <toolset>unix ] ;
-
-generators.register [ new unix-archive-generator unix.archive : OBJ : 
STATIC_LIB 
-    : <toolset>unix ] ;
-
-generators.register [ new unix-linking-generator unix.link.dll : LIB OBJ : 
SHARED_LIB 
-    : <toolset>unix ] ;
-
-generators.register [ new unix-searched-lib-generator 
-   unix.searched-lib-generator : : SEARCHED_LIB : <toolset>unix ] ;
-
-
-# The derived toolset must specify their own actions.
-actions link {
-}
-
-actions link.dll {
-}
-
-actions archive {    
-}
-
-actions searched-lib-generator {    
-}
-
-actions prebuilt {
-}
-
-    
-
-
-
-.order = [ new order ] ;
-
-rule set-library-order-aux ( from * : to * )
-{        
-    for local f in $(from)
-    {
-        for local t in $(to)
-        {            
-            if $(f) != $(t)
-            {                
-                $(.order).add-pair $(f) $(t) ;
-            }            
-        }        
-    }    
-}
-
-rule set-library-order ( sources * : property-set : result * )
-{
-    local used-libraries ;
-    local deps = [ $(property-set).dependency ] ;        
-    for local l in $(sources) $(deps:G=)        
-    {
-        if [ $(l).type ] && [ type.is-derived [ $(l).type ] LIB ]
-        {
-            used-libraries += $(l) ;
-        }
-    }
-
-    local created-libraries ;
-    for local l in $(result)
-    {
-        if [ $(l).type ] && [ type.is-derived [ $(l).type ] LIB ] 
-        {
-            created-libraries += $(l) ;
-        }            
-    }
-    
-    created-libraries = [ set.difference $(created-libraries) : 
$(used-libraries) ] ;
-    set-library-order-aux $(created-libraries) : $(used-libraries) ;
-}
-
-rule order-libraries ( libraries * )
-{
-    local r = [ $(.order).order $(libraries) ] ;
-    return $(r) ;
-}
-     
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-joshua/blob/6da3961b/ext/kenlm/jam-files/boost-build/tools/vacpp.jam
----------------------------------------------------------------------
diff --git a/ext/kenlm b/ext/kenlm
new file mode 160000
index 0000000..56fdb5c
--- /dev/null
+++ b/ext/kenlm
@@ -0,0 +1 @@
+Subproject commit 56fdb5c44fca34d5a2e07d96139c28fb163983c5
diff --git a/ext/kenlm/jam-files/boost-build/tools/vacpp.jam 
b/ext/kenlm/jam-files/boost-build/tools/vacpp.jam
deleted file mode 100644
index f4080fc..0000000
--- a/ext/kenlm/jam-files/boost-build/tools/vacpp.jam
+++ /dev/null
@@ -1,150 +0,0 @@
-# Copyright Vladimir Prus 2004.
-# Copyright Toon Knapen 2004.
-# Distributed under the Boost Software License, Version 1.0.
-# (See accompanying file LICENSE_1_0.txt
-# or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-#
-# Boost.Build V2 toolset for the IBM XL C++ compiler
-#
-
-import toolset : flags ;
-import feature ;
-import common ;
-import generators ;
-import os ;
-
-feature.extend toolset : vacpp ;
-toolset.inherit vacpp : unix ;
-generators.override vacpp.prebuilt : builtin.prebuilt ;
-generators.override vacpp.searched-lib-generator : searched-lib-generator ;
-
-# Configure the vacpp toolset
-rule init ( version ? : command * : options * )
-{
-    local condition = [ 
-        common.check-init-parameters vacpp : version $(version) ] ;
-              
-    command = [ common.get-invocation-command vacpp : xlC
-        : $(command) : "/usr/vacpp/bin/xlC" ] ;
-        
-    common.handle-options vacpp : $(condition) : $(command) : $(options) ;
-}
-
-# Declare generators
-generators.register-c-compiler vacpp.compile.c : C : OBJ : <toolset>vacpp ;
-generators.register-c-compiler vacpp.compile.c++ : CPP : OBJ : <toolset>vacpp ;
-
-# Allow C++ style comments in C files
-flags vacpp CFLAGS : -qcpluscmt ;
-
-# Declare flags
-flags vacpp CFLAGS <optimization>off : -qNOOPTimize ;
-flags vacpp CFLAGS <optimization>speed : -O3 -qstrict ;
-flags vacpp CFLAGS <optimization>space : -O2 -qcompact ;
-
-# Discretionary inlining (not recommended)
-flags vacpp CFLAGS <inlining>off : -qnoinline ;
-flags vacpp CFLAGS <inlining>on : -qinline ;
-#flags vacpp CFLAGS <inlining>full : -qinline ;
-flags vacpp CFLAGS <inlining>full : ;
-
-# Exception handling
-flags vacpp C++FLAGS <exception-handling>off : -qnoeh ;
-flags vacpp C++FLAGS <exception-handling>on : -qeh ;
-
-# Run-time Type Identification
-flags vacpp C++FLAGS <rtti>off : -qnortti ;
-flags vacpp C++FLAGS <rtti>on : -qrtti ;
-
-# Enable 64-bit memory addressing model
-flags vacpp CFLAGS <address-model>64 : -q64 ;
-flags vacpp LINKFLAGS <address-model>64 : -q64 ;
-flags vacpp ARFLAGS <target-os>aix/<address-model>64 : -X 64 ;
-
-# Use absolute path when generating debug information
-flags vacpp CFLAGS <debug-symbols>on : -g -qfullpath ;
-flags vacpp LINKFLAGS <debug-symbols>on : -g -qfullpath ;
-flags vacpp LINKFLAGS <debug-symbols>off : -s ;
-
-if [ os.name ] = AIX
-{
-    flags vacpp.compile C++FLAGS : -qfuncsect ;
-
-    # The -bnoipath strips the prepending (relative) path of libraries from
-    # the loader section in the target library or executable. Hence, during
-    # load-time LIBPATH (identical to LD_LIBRARY_PATH) or a hard-coded
-    # -blibpath (*similar* to -lrpath/-lrpath-link) is searched. Without
-    # this option, the prepending (relative) path + library name is
-    # hard-coded in the loader section, causing *only* this path to be
-    # searched during load-time. Note that the AIX linker does not have an
-    # -soname equivalent, this is as close as it gets.
-    #
-    # The above options are definately for AIX 5.x, and most likely also for
-    # AIX 4.x and AIX 6.x. For details about the AIX linker see:
-    # http://download.boulder.ibm.com/ibmdl/pub/software/dw/aix/es-aix_ll.pdf
-    #
-    flags vacpp.link LINKFLAGS <link>shared : -bnoipath ;
-
-    # Run-time linking
-    flags vacpp.link EXE-LINKFLAGS <link>shared : -brtl ;
-}
-else
-{
-    # Linux PPC
-    flags vacpp.compile CFLAGS <link>shared : -qpic=large ;
-    flags vacpp FINDLIBS : rt ;
-}
-
-# Profiling
-flags vacpp CFLAGS <profiling>on : -pg ;
-flags vacpp LINKFLAGS <profiling>on : -pg ;
-
-flags vacpp.compile OPTIONS <cflags> ;
-flags vacpp.compile.c++ OPTIONS <cxxflags> ;
-flags vacpp DEFINES <define> ;
-flags vacpp UNDEFS <undef> ;
-flags vacpp HDRS <include> ;
-flags vacpp STDHDRS <sysinclude> ;
-flags vacpp.link OPTIONS <linkflags> ;
-flags vacpp ARFLAGS <arflags> ;
-
-flags vacpp LIBPATH <library-path> ;
-flags vacpp NEEDLIBS <library-file> ;
-flags vacpp FINDLIBS <find-shared-library> ;
-flags vacpp FINDLIBS <find-static-library> ;
-
-# Select the compiler name according to the threading model.
-flags vacpp VA_C_COMPILER  <threading>single : xlc   ;
-flags vacpp VA_C_COMPILER  <threading>multi : xlc_r ;
-flags vacpp VA_CXX_COMPILER <threading>single : xlC   ;
-flags vacpp VA_CXX_COMPILER <threading>multi : xlC_r ;
-
-SPACE = " " ;
-
-flags vacpp.link.dll HAVE_SONAME <target-os>linux : "" ;
-
-actions vacpp.link bind NEEDLIBS
-{
-    $(VA_CXX_COMPILER) $(EXE-LINKFLAGS) $(LINKFLAGS) -o "$(<[1])" -L$(LIBPATH) 
-L$(STDLIBPATH) "$(>)" "$(NEEDLIBS)" "$(NEEDLIBS)" -l$(FINDLIBS) $(OPTIONS) 
$(USER_OPTIONS)
-}
-
-actions vacpp.link.dll bind NEEDLIBS
-{
-    xlC_r -G $(LINKFLAGS) -o "$(<[1])" 
$(HAVE_SONAME)-Wl,-soname$(SPACE)-Wl,$(<[-1]:D=) -L$(LIBPATH) -L$(STDLIBPATH) 
"$(>)" "$(NEEDLIBS)" "$(NEEDLIBS)" -l$(FINDLIBS) $(OPTIONS) $(USER_OPTIONS) 
-}
-
-actions vacpp.compile.c
-{
-    $(VA_C_COMPILER) -c $(OPTIONS) $(USER_OPTIONS) -I$(BOOST_ROOT) -U$(UNDEFS) 
-D$(DEFINES) $(CFLAGS) -I"$(HDRS)" -I"$(STDHDRS)" -o "$(<)" "$(>)"
-}
-
-actions vacpp.compile.c++
-{
-    $(VA_CXX_COMPILER) -c $(OPTIONS) $(USER_OPTIONS) -I$(BOOST_ROOT) 
-U$(UNDEFS) -D$(DEFINES) $(CFLAGS) $(C++FLAGS) -I"$(HDRS)" -I"$(STDHDRS)" -o 
"$(<)" "$(>)"
-}
-
-actions updated together piecemeal vacpp.archive
-{
-    ar $(ARFLAGS) ru "$(<)" "$(>)"
-}

http://git-wip-us.apache.org/repos/asf/incubator-joshua/blob/6da3961b/ext/kenlm/jam-files/boost-build/tools/whale.jam
----------------------------------------------------------------------
diff --git a/ext/kenlm b/ext/kenlm
new file mode 160000
index 0000000..56fdb5c
--- /dev/null
+++ b/ext/kenlm
@@ -0,0 +1 @@
+Subproject commit 56fdb5c44fca34d5a2e07d96139c28fb163983c5
diff --git a/ext/kenlm/jam-files/boost-build/tools/whale.jam 
b/ext/kenlm/jam-files/boost-build/tools/whale.jam
deleted file mode 100644
index 9335ff0..0000000
--- a/ext/kenlm/jam-files/boost-build/tools/whale.jam
+++ /dev/null
@@ -1,116 +0,0 @@
-#  Copyright (C) Vladimir Prus 2002-2005. 
-
-#  Use, modification and distribution is subject to the Boost Software
-#  License Version 1.0. (See accompanying file LICENSE_1_0.txt or
-#  http://www.boost.org/LICENSE_1_0.txt)
-
-#  This module implements support for Whale/Dolphin/WD parser/lexer tools. 
-#  See http://www.cs.queensu.ca/home/okhotin/whale/ for details.
-#
-#  There are three interesting target types:
-#  - WHL (the parser sources), that are converted to CPP and H
-#  - DLP (the lexer sources), that are converted to CPP and H
-#  - WD (combined parser/lexer sources), that are converted to WHL + DLP
-
-import type ;
-import generators ;
-import path ;
-import "class" : new ;
-import errors ;
-
-rule init ( path # path the Whale/Dolphin/WD binaries 
-          )
-{
-    if $(.configured) && $(.path) != $(path)
-    {
-        errors.user-error "Attempt to reconfigure Whale support" :
-          "Previously configured with path \"$(.path:E=<empty>)\"" :
-          "Now configuring with path \"$(path:E=<empty>)\"" ;
-
-    }
-    .configured = true ;
-    .path = $(path) ;
-
-    .whale = [ path.join $(path) whale ] ;
-    .dolphin = [ path.join $(path) dolphin ] ;
-    .wd = [ path.join $(path) wd ] ;
-}     
-
-
-# Declare the types.
-type.register WHL : whl ;
-type.register DLP : dlp ;
-type.register WHL_LR0 : lr0 ;
-type.register WD : wd ;
-
-# Declare standard generators.
-generators.register-standard whale.whale : WHL : CPP H H(%_symbols) ;
-generators.register-standard whale.dolphin : DLP : CPP H ;
-generators.register-standard whale.wd : WD : WHL(%_parser) DLP(%_lexer) ;
-
-# The conversions defines above a ambiguious when we generated CPP from WD.
-# We can either go via WHL type, or via DLP type.
-# The following custom generator handles this by running both conversions.
-
-class wd-to-cpp : generator
-{
-    rule __init__ ( * : * : * )
-    {
-        generator.__init__ $(1) : $(2) : $(3) ;
-    }
-    
-    rule run ( project name ? : property-set : source * )
-    {
-        if ! $(source[2])
-        {                
-            local new-sources ;
-            if ! [ $(source).type ] in WHL DLP
-            {            
-                local r1 = [ generators.construct $(project) $(name) 
-                  : WHL : $(property-set) : $(source) ] ;
-                local r2 = [ generators.construct $(project) $(name) 
-                  : DLP : $(property-set) : $(source) ] ;
-                
-                new-sources = [ sequence.unique $(r1[2-]) $(r2[2-]) ] ;
-            }
-            else
-            {
-                new-sources = $(source) ;
-            }
-            
-            local result ;
-            for local i in $(new-sources) 
-            {
-                local t = [ generators.construct $(project) $(name) : CPP 
-                  : $(property-set) : $(i) ] ;          
-                result += $(t[2-]) ;
-            }
-            return $(result) ;
-        }        
-    }
-    
-}
-
-
-generators.override whale.wd-to-cpp : whale.whale ;
-generators.override whale.wd-to-cpp : whale.dolphin ;
-
-
-generators.register [ new wd-to-cpp whale.wd-to-cpp : : CPP ] ;
-
-
-actions whale 
-{
-    $(.whale) -d $(<[1]:D) $(>)      
-}
-
-actions dolphin
-{    
-    $(.dolphin) -d $(<[1]:D) $(>)
-}
-
-actions wd
-{    
-    $(.wd) -d $(<[1]:D) -g $(>)
-}
-

http://git-wip-us.apache.org/repos/asf/incubator-joshua/blob/6da3961b/ext/kenlm/jam-files/boost-build/tools/xlf.jam
----------------------------------------------------------------------
diff --git a/ext/kenlm b/ext/kenlm
new file mode 160000
index 0000000..56fdb5c
--- /dev/null
+++ b/ext/kenlm
@@ -0,0 +1 @@
+Subproject commit 56fdb5c44fca34d5a2e07d96139c28fb163983c5
diff --git a/ext/kenlm/jam-files/boost-build/tools/xlf.jam 
b/ext/kenlm/jam-files/boost-build/tools/xlf.jam
deleted file mode 100644
index e7fcc60..0000000
--- a/ext/kenlm/jam-files/boost-build/tools/xlf.jam
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright (C) 2004 Toon Knapen
-#
-#  Use, modification and distribution is subject to the Boost Software
-#  License Version 1.0. (See accompanying file LICENSE_1_0.txt or
-#  http://www.boost.org/LICENSE_1_0.txt)
-
-#
-# toolset configuration for the IBM Fortran compiler (xlf)
-# 
-
-import toolset : flags ;
-import feature ;
-import fortran ;
-
-rule init ( version ? : command * : options * )
-{
-}
-
-# Declare flags and action for compilation
-flags xlf OPTIONS <optimization>off : -O0 ;
-flags xlf OPTIONS <optimization>speed : -O3 ;
-flags xlf OPTIONS <optimization>space : -Os ;
-
-flags xlf OPTIONS <debug-symbols>on : -g ;
-flags xlf OPTIONS <profiling>on : -pg ;
-
-flags xlf DEFINES <define> ;
-flags xlf INCLUDES <include> ;
-
-rule compile-fortran
-{
-}
-
-actions compile-fortran
-{
-  xlf $(OPTIONS) -I$(INCLUDES) -c -o "$(<)" "$(>)" 
-}
-
-generators.register-fortran-compiler xlf.compile-fortran : FORTRAN : OBJ ; 

http://git-wip-us.apache.org/repos/asf/incubator-joshua/blob/6da3961b/ext/kenlm/jam-files/boost-build/tools/xsltproc-config.jam
----------------------------------------------------------------------
diff --git a/ext/kenlm b/ext/kenlm
new file mode 160000
index 0000000..56fdb5c
--- /dev/null
+++ b/ext/kenlm
@@ -0,0 +1 @@
+Subproject commit 56fdb5c44fca34d5a2e07d96139c28fb163983c5
diff --git a/ext/kenlm/jam-files/boost-build/tools/xsltproc-config.jam 
b/ext/kenlm/jam-files/boost-build/tools/xsltproc-config.jam
deleted file mode 100644
index d1be25f..0000000
--- a/ext/kenlm/jam-files/boost-build/tools/xsltproc-config.jam
+++ /dev/null
@@ -1,36 +0,0 @@
-#~ Copyright 2005 Rene Rivera.
-#~ Distributed under the Boost Software License, Version 1.0.
-#~ (See accompanying file LICENSE_1_0.txt or 
http://www.boost.org/LICENSE_1_0.txt)
-
-# Automatic configuration for the xsltproc toolset. To use, just import this
-# module.
-
-import os ;
-import toolset : using ;
-
-
-local rule locate-executable ( name )
-{
-    local path = [ modules.peek : PATH ] ;
-    local exe ;
-    if [ os.name ] = NT
-    {
-        exe = [ GLOB $(path) "C:\\Boost\\bin" : $(name)\.exe ] ;
-    }
-    else
-    {
-        exe = [ GLOB $(path) : $(name) ] ;
-    }
-    return $(exe[1]) ;
-}
-
-
-local xsltproc-exe = [ locate-executable xsltproc ] ;
-if $(xsltproc-exe)
-{
-    if --debug-configuration in [ modules.peek : ARGV ]
-    {
-        ECHO notice: using xsltproc ":" $(xsltproc-exe) ;
-    }
-    using xsltproc : $(xsltproc-exe) ;
-}

http://git-wip-us.apache.org/repos/asf/incubator-joshua/blob/6da3961b/ext/kenlm/jam-files/boost-build/tools/xsltproc.jam
----------------------------------------------------------------------
diff --git a/ext/kenlm b/ext/kenlm
new file mode 160000
index 0000000..56fdb5c
--- /dev/null
+++ b/ext/kenlm
@@ -0,0 +1 @@
+Subproject commit 56fdb5c44fca34d5a2e07d96139c28fb163983c5
diff --git a/ext/kenlm/jam-files/boost-build/tools/xsltproc.jam 
b/ext/kenlm/jam-files/boost-build/tools/xsltproc.jam
deleted file mode 100644
index d847646..0000000
--- a/ext/kenlm/jam-files/boost-build/tools/xsltproc.jam
+++ /dev/null
@@ -1,205 +0,0 @@
-# Copyright (C) 2003 Doug Gregor. 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.
-
-# This module defines rules to apply an XSLT stylesheet to an XML file using 
the
-# xsltproc driver, part of libxslt.
-
-import common ;
-import feature ;
-import modules ;
-import os ;
-import path ;
-import regex ;
-import sequence ;
-
-
-feature.feature xsl:param : : free ;
-feature.feature xsl:path : : free ;
-feature.feature catalog : : free ;
-
-
-# Initialize xsltproc support. The parameters are:
-#   xsltproc: The xsltproc executable
-#
-rule init ( xsltproc ? )
-{
-    if $(xsltproc)
-    {
-        modify-config ;
-        .xsltproc = $(xsltproc) ;
-        check-xsltproc ;
-    }
-}
-
-
-rule freeze-config ( )
-{
-    if ! $(.config-frozen)
-    {
-        .config-frozen = true ;
-        .xsltproc ?= [ modules.peek : XSLTPROC ] ;
-        .xsltproc ?= xsltproc ;
-        check-xsltproc ;
-        .is-cygwin = [ .is-cygwin $(.xsltproc) ] ;
-    }
-}
-
-
-rule modify-config ( )
-{
-    if $(.config-frozen)
-    {
-        import errors ;
-        errors.user-error
-            "xsltproc: Cannot change xsltproc command after it has been used." 
;
-    }
-}
-
-
-rule check-xsltproc ( )
-{
-    if $(.xsltproc)
-    {
-        local status = [ SHELL "\"$(.xsltproc)\" -V" : no-output : exit-status 
]
-            ;
-        if $(status[2]) != 0
-        {
-            import errors ;
-            errors.user-error "xsltproc: Could not run \"$(.xsltproc)\" -V." ;
-        }
-    }
-}
-
-
-# Returns a non-empty string if a cygwin xsltproc binary was specified.
-#
-rule is-cygwin ( )
-{
-    freeze-config ;
-    return $(.is-cygwin) ;
-}
-
-
-rule .is-cygwin ( xsltproc )
-{
-    if [ os.on-windows ]
-    {
-        local file = [ path.make [ modules.binding $(__name__) ] ] ;
-        local dir = [ path.native [ path.join [ path.parent $(file) ] xsltproc 
]
-            ] ;
-        if [ os.name ] = CYGWIN
-        {
-            dir = $(dir:W) ;
-        }
-        local command =
-            "\"$(xsltproc)\" \"$(dir)\\test.xsl\" \"$(dir)\\test.xml\" 2>&1" ;
-        local status = [ SHELL $(command) : no-output : exit-status ] ;
-        if $(status[2]) != "0"
-        {
-            return true ;
-        }
-    }
-}
-
-
-rule compute-xslt-flags ( target : properties * )
-{
-    # Raw flags.
-    local flags = [ feature.get-values <flags> : $(properties) ] ;
-
-    # Translate <xsl:param> into command line flags.
-    for local param in [ feature.get-values <xsl:param> : $(properties) ]
-    {
-        local namevalue = [ regex.split $(param) "=" ] ;
-        flags += --stringparam $(namevalue[1]) \"$(namevalue[2])\" ;
-    }
-
-    # Translate <xsl:path>.
-    for local path in [ feature.get-values <xsl:path> : $(properties) ]
-    {
-        flags += --path \"$(path:G=)\" ;
-    }
-
-    # Take care of implicit dependencies.
-    local other-deps ;
-    for local dep in [ feature.get-values <implicit-dependency> : $(properties)
-        ]
-    {
-        other-deps += [ $(dep:G=).creating-subvariant ] ;
-    }
-
-    local implicit-target-directories ;
-    for local dep in [ sequence.unique $(other-deps) ]
-    {
-        implicit-target-directories += [ $(dep).all-target-directories ] ;
-    }
-
-    for local dir in $(implicit-target-directories)
-    {
-        flags += --path \"$(dir:T)\" ;
-    }
-
-    return $(flags) ;
-}
-
-
-local rule .xsltproc ( target : source stylesheet : properties * : dirname ? :
-    action )
-{
-    freeze-config ;
-    STYLESHEET on $(target) = $(stylesheet) ;
-    FLAGS on $(target) += [ compute-xslt-flags $(target) : $(properties) ] ;
-    NAME on $(target) = $(.xsltproc) ;
-
-    for local catalog in [ feature.get-values <catalog> : $(properties) ]
-    {
-        CATALOG = [ common.variable-setting-command XML_CATALOG_FILES :
-            $(catalog:T) ] ;
-    }
-
-    if [ os.on-windows ] && ! [ is-cygwin ]
-    {
-        action = $(action).windows ;
-    }
-
-    $(action) $(target) : $(source) ;
-}
-
-
-rule xslt ( target : source stylesheet : properties * )
-{
-    return [ .xsltproc $(target) : $(source) $(stylesheet) : $(properties) : :
-        xslt-xsltproc ] ;
-}
-
-
-rule xslt-dir ( target : source stylesheet : properties * : dirname )
-{
-    return [ .xsltproc $(target) : $(source) $(stylesheet) : $(properties) :
-        $(dirname) : xslt-xsltproc-dir ] ;
-}
-
-actions xslt-xsltproc.windows
-{
-    $(CATALOG) "$(NAME:E=xsltproc)" $(FLAGS) --xinclude -o "$(<)" 
"$(STYLESHEET:W)" "$(>:W)"
-}
-
-
-actions xslt-xsltproc bind STYLESHEET
-{
-    $(CATALOG) "$(NAME:E=xsltproc)" $(FLAGS) --xinclude -o "$(<)" 
"$(STYLESHEET:T)" "$(>:T)"
-}
-
-
-actions xslt-xsltproc-dir.windows bind STYLESHEET
-{
-    $(CATALOG) "$(NAME:E=xsltproc)" $(FLAGS) --xinclude -o "$(<:D)/" 
"$(STYLESHEET:W)" "$(>:W)"
-}
-
-
-actions xslt-xsltproc-dir bind STYLESHEET
-{
-    $(CATALOG) "$(NAME:E=xsltproc)" $(FLAGS) --xinclude -o "$(<:D)/" 
"$(STYLESHEET:T)" "$(>:T)"
-}

http://git-wip-us.apache.org/repos/asf/incubator-joshua/blob/6da3961b/ext/kenlm/jam-files/boost-build/tools/xsltproc/included.xsl
----------------------------------------------------------------------
diff --git a/ext/kenlm b/ext/kenlm
new file mode 160000
index 0000000..56fdb5c
--- /dev/null
+++ b/ext/kenlm
@@ -0,0 +1 @@
+Subproject commit 56fdb5c44fca34d5a2e07d96139c28fb163983c5
diff --git a/ext/kenlm/jam-files/boost-build/tools/xsltproc/included.xsl 
b/ext/kenlm/jam-files/boost-build/tools/xsltproc/included.xsl
deleted file mode 100644
index ef86394..0000000
--- a/ext/kenlm/jam-files/boost-build/tools/xsltproc/included.xsl
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-   Copyright (c) 2010 Steven Watanabe
-  
-   Distributed under the Boost Software License, Version 1.0.
-   (See accompanying file LICENSE_1_0.txt or copy at
-   http://www.boost.org/LICENSE_1_0.txt)
-  -->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
-                version="1.0">
-</xsl:stylesheet>

http://git-wip-us.apache.org/repos/asf/incubator-joshua/blob/6da3961b/ext/kenlm/jam-files/boost-build/tools/xsltproc/test.xml
----------------------------------------------------------------------
diff --git a/ext/kenlm b/ext/kenlm
new file mode 160000
index 0000000..56fdb5c
--- /dev/null
+++ b/ext/kenlm
@@ -0,0 +1 @@
+Subproject commit 56fdb5c44fca34d5a2e07d96139c28fb163983c5
diff --git a/ext/kenlm/jam-files/boost-build/tools/xsltproc/test.xml 
b/ext/kenlm/jam-files/boost-build/tools/xsltproc/test.xml
deleted file mode 100644
index 57c8ba1..0000000
--- a/ext/kenlm/jam-files/boost-build/tools/xsltproc/test.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<root/>

http://git-wip-us.apache.org/repos/asf/incubator-joshua/blob/6da3961b/ext/kenlm/jam-files/boost-build/tools/xsltproc/test.xsl
----------------------------------------------------------------------
diff --git a/ext/kenlm b/ext/kenlm
new file mode 160000
index 0000000..56fdb5c
--- /dev/null
+++ b/ext/kenlm
@@ -0,0 +1 @@
+Subproject commit 56fdb5c44fca34d5a2e07d96139c28fb163983c5
diff --git a/ext/kenlm/jam-files/boost-build/tools/xsltproc/test.xsl 
b/ext/kenlm/jam-files/boost-build/tools/xsltproc/test.xsl
deleted file mode 100644
index a142c91..0000000
--- a/ext/kenlm/jam-files/boost-build/tools/xsltproc/test.xsl
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-   Copyright (c) 2010 Steven Watanabe
-  
-   Distributed under the Boost Software License, Version 1.0.
-   (See accompanying file LICENSE_1_0.txt or copy at
-   http://www.boost.org/LICENSE_1_0.txt)
-  -->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
-                version="1.0">
-  <xsl:include href="included.xsl"/>
-</xsl:stylesheet>

http://git-wip-us.apache.org/repos/asf/incubator-joshua/blob/6da3961b/ext/kenlm/jam-files/boost-build/tools/zlib.jam
----------------------------------------------------------------------
diff --git a/ext/kenlm b/ext/kenlm
new file mode 160000
index 0000000..56fdb5c
--- /dev/null
+++ b/ext/kenlm
@@ -0,0 +1 @@
+Subproject commit 56fdb5c44fca34d5a2e07d96139c28fb163983c5
diff --git a/ext/kenlm/jam-files/boost-build/tools/zlib.jam 
b/ext/kenlm/jam-files/boost-build/tools/zlib.jam
deleted file mode 100644
index 8095eee..0000000
--- a/ext/kenlm/jam-files/boost-build/tools/zlib.jam
+++ /dev/null
@@ -1,227 +0,0 @@
-# Copyright (c) 2010 Vladimir Prus.
-# Copyright (c) 2013 Steven Watanabe
-#
-# Use, modification and distribution is subject to the Boost Software
-# License Version 1.0. (See accompanying file LICENSE_1_0.txt or
-# http://www.boost.org/LICENSE_1_0.txt)
-
-# Supports the zlib library
-#
-# After 'using zlib', the following targets are available:
-#
-# /zlib//zlib -- The zlib library
-
-import project ;
-import ac ;
-import errors ;
-import "class" : new ;
-import targets ; 
-import path ;
-import modules ;
-import errors ;
-import indirect ;
-import property ;
-import property-set ;
-
-header = zlib.h ;
-names = z zlib zll zdll ;
-
-sources = adler32.c compress.c
-     crc32.c deflate.c gzclose.c gzio.c gzlib.c gzread.c gzwrite.c
-     infback.c inffast.c inflate.c inftrees.c trees.c uncompr.c zutil.c ;
-
-library-id = 0 ;
-
-if --debug-configuration in [ modules.peek : ARGV ]
-{
-    .debug =  true ;
-}
-
-# Initializes the zlib library.
-#
-# zlib can be configured either to use pre-existing binaries
-# or to build the library from source.
-#
-# Options for configuring a prebuilt zlib::
-#
-#   <search>
-#       The directory containing the zlib binaries.
-#   <name>
-#       Overrides the default library name.
-#   <include>
-#       The directory containing the zlib headers.
-#
-# If none of these options is specified, then the environmental
-# variables ZLIB_LIBRARY_PATH, ZLIB_NAME, and ZLIB_INCLUDE will
-# be used instead.
-#
-# Options for building zlib from source::
-#
-#   <source>
-#       The zlib source directory.  Defaults to the environmental variable
-#       ZLIB_SOURCE.
-#   <tag>
-#       A rule which computes the actual name of the compiled
-#       libraries based on the build properties.  Ignored
-#       when using precompiled binaries.
-#   <build-name>
-#       The base name to use for the compiled library.  Ignored
-#       when using precompiled binaries.
-#
-# Examples::
-#
-#   # Find zlib in the default system location
-#   using zlib ;
-#   # Build zlib from source
-#   using zlib : 1.2.7 : <source>/home/steven/zlib-1.2.7 ;
-#   # Find zlib in /usr/local
-#   using zlib : 1.2.7
-#     : <include>/usr/local/include <search>/usr/local/lib ;
-#   # Build zlib from source for msvc and find
-#   # prebuilt binaries for gcc.
-#   using zlib : 1.2.7 : <source>C:/Devel/src/zlib-1.2.7 : <toolset>msvc ;
-#   using zlib : 1.2.7 : : <toolset>gcc ;
-#
-rule init (
-    version ?
-    # The zlib version (currently ignored)
-
-    : options *
-    # A list of the options to use
-
-    : requirements *
-    # The requirements for the zlib target
-
-    : is-default ?
-    # Default configurations are only used when zlib
-    # has not yet been configured.
-    )
-{
-    local caller = [ project.current ] ;
-
-    if ! $(.initialized)
-    {
-        .initialized = true ;
-
-        project.initialize $(__name__) ;
-        .project = [ project.current ] ;
-        project zlib ;
-    }
-
-    local library-path = [ property.select <search> : $(options) ] ;
-    library-path = $(library-path:G=) ;
-    local include-path = [ property.select <include> : $(options) ] ;
-    include-path = $(include-path:G=) ;
-    local source-path = [ property.select <source> : $(options) ] ;
-    source-path = $(source-path:G=) ;
-    local library-name = [ property.select <name> : $(options) ] ;
-    library-name = $(library-name:G=) ;
-    local tag = [ property.select <tag> : $(options) ] ;
-    tag = $(tag:G=) ;
-    local build-name = [ property.select <build-name> : $(options) ] ;
-    build-name = $(build-name:G=) ;
-
-    condition = [ property-set.create $(requirements) ] ;
-    condition = [ property-set.create [ $(condition).base ] ] ;
-
-    local no-build-from-source ;
-    # Ignore environmental ZLIB_SOURCE if this initialization
-    # requested to search for a specific pre-built library.
-    if $(library-path) || $(include-path) || $(library-name)
-    {
-        if $(source-path) || $(tag) || $(build-name)
-        {
-            errors.user-error "incompatible options for zlib:"
-                [ property.select <search> <include> <name> : $(options) ] 
"and"
-                [ property.select <source> <tag> <build-name> : $(options) ] ;
-        }
-        else
-        {
-            no-build-from-source = true ;
-        }
-    }
-
-    source-path ?= [ modules.peek : ZLIB_SOURCE ] ;
-
-    if $(.configured.$(condition))
-    {
-        if $(is-default)
-        {
-            if $(.debug)
-            {
-                ECHO "notice: [zlib] zlib is already configured" ;
-            }
-        }
-        else
-        {
-            errors.user-error "zlib is already configured" ;
-        }
-        return ;
-    }
-    else if $(source-path) && ! $(no-build-from-source)
-    {
-        build-name ?= z ;
-        library-id = [ CALC $(library-id) + 1 ] ;
-        tag = [ MATCH ^@?(.*)$ : $(tag) ] ;
-        if $(tag) && ! [ MATCH ^([^%]*)%([^%]+)$ : $(tag) ]
-        {
-            tag = [ indirect.make $(tag) : [ $(caller).project-module ] ] ;
-        }
-        sources = [ path.glob $(source-path) : $(sources) ] ;
-        if $(.debug)
-        {
-            ECHO "notice: [zlib] Building zlib from source as $(build-name)" ;
-            if $(condition)
-            {
-                ECHO "notice: [zlib] Condition" [ $(condition).raw ] ;
-            }
-            if $(sources)
-            {
-                ECHO "notice: [zlib] found zlib source in $(source-path)" ;
-            }
-            else
-            {
-                ECHO "warning: [zlib] could not find zlib source in 
$(source-path)" ;
-            }
-        }
-        local target ;
-        if $(sources) {
-            target = [ targets.create-typed-target LIB : $(.project)
-              : $(build-name).$(library-id)
-              : $(sources)
-              : $(requirements)
-                <tag>@$(tag)
-                <include>$(source-path)
-                <toolset>msvc:<define>_CRT_SECURE_NO_DEPRECATE
-                <toolset>msvc:<define>_SCL_SECURE_NO_DEPRECATE
-                <link>shared:<define>ZLIB_DLL
-              :
-              : <include>$(source-path) ] ;
-        }
-
-        local mt = [ new ac-library zlib : $(.project) : $(condition) ] ;
-        $(mt).set-header $(header) ;
-        $(mt).set-default-names $(names) ;
-        if $(target)
-        {
-            $(mt).set-target $(target) ;
-        }
-        targets.main-target-alternative $(mt) ;
-    } else {
-        if $(.debug)
-        {
-            ECHO "notice: [zlib] Using pre-installed library" ;
-            if $(condition)
-            {
-                ECHO "notice: [zlib] Condition" [ $(condition).raw ] ;
-            }
-        }
-
-        local mt = [ new ac-library zlib : $(.project) : $(condition) :
-            $(include-path) : $(library-path) : $(library-name) : $(root) ] ;
-        $(mt).set-header $(header) ;
-        $(mt).set-default-names $(names) ;
-        targets.main-target-alternative $(mt) ;
-    }
-    .configured.$(condition) = true ;
-}

http://git-wip-us.apache.org/repos/asf/incubator-joshua/blob/6da3961b/ext/kenlm/jam-files/boost-build/user-config.jam
----------------------------------------------------------------------
diff --git a/ext/kenlm b/ext/kenlm
new file mode 160000
index 0000000..56fdb5c
--- /dev/null
+++ b/ext/kenlm
@@ -0,0 +1 @@
+Subproject commit 56fdb5c44fca34d5a2e07d96139c28fb163983c5
diff --git a/ext/kenlm/jam-files/boost-build/user-config.jam 
b/ext/kenlm/jam-files/boost-build/user-config.jam
deleted file mode 100644
index fbbf13f..0000000
--- a/ext/kenlm/jam-files/boost-build/user-config.jam
+++ /dev/null
@@ -1,92 +0,0 @@
-# Copyright 2003, 2005 Douglas Gregor
-# Copyright 2004 John Maddock
-# Copyright 2002, 2003, 2004, 2007 Vladimir Prus
-# Distributed under the Boost Software License, Version 1.0.
-# (See accompanying file LICENSE_1_0.txt or 
http://www.boost.org/LICENSE_1_0.txt)
-
-#   This file is used to configure your Boost.Build installation. You can 
modify
-# this file in place, or you can place it in a permanent location so that it
-# does not get overwritten should you get a new version of Boost.Build. See:
-#
-#   http://www.boost.org/boost-build2/doc/html/bbv2/overview/configuration.html
-#
-# for documentation about possible permanent locations.
-
-#   This file specifies which toolsets (C++ compilers), libraries, and other
-# tools are available. Often, you should be able to just uncomment existing
-# example lines and adjust them to taste. The complete list of supported tools,
-# and configuration instructions can be found at:
-#
-#   http://boost.org/boost-build2/doc/html/bbv2/reference/tools.html
-#
-
-#   This file uses Jam language syntax to describe available tools. Mostly,
-# there are 'using' lines, that contain the name of the used tools, and
-# parameters to pass to those tools -- where paremeters are separated by
-# semicolons. Important syntax notes:
-#
-#   - Both ':' and ';' must be separated from other tokens by whitespace
-#   - The '\' symbol is a quote character, so when specifying Windows paths you
-#     should use '/' or '\\' instead.
-#
-# More details about the syntax can be found at:
-#
-#   
http://boost.org/boost-build2/doc/html/bbv2/advanced.html#bbv2.advanced.jam_language
-#
-
-# ------------------
-# GCC configuration.
-# ------------------
-
-# Configure gcc (default version).
-# using gcc ;
-
-# Configure specific gcc version, giving alternative name to use.
-# using gcc : 3.2 : g++-3.2 ;
-
-
-# -------------------
-# MSVC configuration.
-# -------------------
-
-# Configure msvc (default version, searched for in standard locations and 
PATH).
-# using msvc ;
-
-# Configure specific msvc version (searched for in standard locations and 
PATH).
-# using msvc : 8.0 ;
-
-
-# ----------------------
-# Borland configuration.
-# ----------------------
-# using borland ;
-
-
-# ----------------------
-# STLPort configuration.
-# ----------------------
-
-#   Configure specifying location of STLPort headers. Libraries must be either
-# not needed or available to the compiler by default.
-# using stlport : : /usr/include/stlport ;
-
-# Configure specifying location of both headers and libraries explicitly.
-# using stlport : : /usr/include/stlport /usr/lib ;
-
-
-# -----------------
-# QT configuration.
-# -----------------
-
-# Configure assuming QTDIR gives the installation prefix.
-# using qt ;
-
-# Configure with an explicit installation prefix.
-# using qt : /usr/opt/qt ;
-
-# ---------------------
-# Python configuration.
-# ---------------------
-
-# Configure specific Python version.
-# using python : 3.1 : /usr/bin/python3 : /usr/include/python3.1 : /usr/lib ;

http://git-wip-us.apache.org/repos/asf/incubator-joshua/blob/6da3961b/ext/kenlm/jam-files/boost-build/util/assert.jam
----------------------------------------------------------------------
diff --git a/ext/kenlm b/ext/kenlm
new file mode 160000
index 0000000..56fdb5c
--- /dev/null
+++ b/ext/kenlm
@@ -0,0 +1 @@
+Subproject commit 56fdb5c44fca34d5a2e07d96139c28fb163983c5
diff --git a/ext/kenlm/jam-files/boost-build/util/assert.jam 
b/ext/kenlm/jam-files/boost-build/util/assert.jam
deleted file mode 100644
index 65e880f..0000000
--- a/ext/kenlm/jam-files/boost-build/util/assert.jam
+++ /dev/null
@@ -1,346 +0,0 @@
-# Copyright 2001, 2002, 2003 Dave Abrahams
-# Copyright 2006 Rene Rivera
-# Copyright 2002, 2003 Vladimir Prus
-# Distributed under the Boost Software License, Version 1.0.
-# (See accompanying file LICENSE_1_0.txt or copy at
-# http://www.boost.org/LICENSE_1_0.txt)
-
-import errors ;
-import modules ;
-
-
-################################################################################
-#
-# Private implementation details.
-#
-################################################################################
-
-# Rule added as a replacement for the regular Jam = operator but which does not
-# ignore trailing empty string elements.
-#
-local rule exact-equal-test ( lhs * : rhs * )
-{
-    local lhs_extended = $(lhs) xxx ;
-    local rhs_extended = $(rhs) xxx ;
-    if $(lhs_extended) = $(rhs_extended)
-    {
-        return true ;
-    }
-}
-
-
-# Two lists are considered set-equal if they contain the same elements, 
ignoring
-# duplicates and ordering.
-#
-local rule set-equal-test ( set1 * : set2 * )
-{
-    if ( $(set1) in $(set2) ) && ( $(set2) in $(set1) )
-    {
-        return true ;
-    }
-}
-
-
-################################################################################
-#
-# Public interface.
-#
-################################################################################
-
-# Assert the equality of A and B, ignoring trailing empty string elements.
-#
-rule equal ( a * : b * )
-{
-    if $(a) != $(b)
-    {
-        errors.error-skip-frames 3 assertion failure: \"$(a)\" "==" \"$(b)\"
-            (ignoring trailing empty strings) ;
-    }
-}
-
-
-# Assert that the result of calling RULE-NAME on the given arguments has a 
false
-# logical value (is either an empty list or all empty strings).
-#
-rule false ( rule-name args * : * )
-{
-    local result ;
-    module [ CALLER_MODULE ]
-    {
-        modules.poke assert : result : [ $(1) : $(2) : $(3) : $(4) : $(5) : 
$(6)
-            : $(7) : $(8) : $(9) : $(10) : $(11) : $(12) : $(13) : $(14) : 
$(15)
-            : $(16) : $(17) : $(18) : $(19) ] ;
-    }
-
-    if $(result)
-    {
-        errors.error-skip-frames 3 assertion failure: Expected false result 
from
-            "[" $(rule-name) [ errors.lol->list $(args) : $(2) : $(3) : $(4) :
-            $(5) : $(6) : $(7) : $(8) : $(9) : $(10) : $(11) : $(12) : $(13) :
-            $(14) : $(15) : $(16) : $(17) : $(18) : $(19) ] "]" : Got: "["
-            \"$(result)\" "]" ;
-    }
-}
-
-
-# Assert that ELEMENT is present in LIST.
-#
-rule "in" ( element : list * )
-{
-    if ! $(element) in $(list)
-    {
-        errors.error-skip-frames 3 assertion failure: Expected \"$(element)\" 
in
-            "[" \"$(list)\" "]" ;
-    }
-}
-
-
-# Assert the inequality of A and B, ignoring trailing empty string elements.
-#
-rule not-equal ( a * : b * )
-{
-    if $(a) = $(b)
-    {
-        errors.error-skip-frames 3 assertion failure: \"$(a)\" "!=" \"$(b)\"
-            (ignoring trailing empty strings) ;
-    }
-}
-
-
-# Assert that ELEMENT is not present in LIST.
-#
-rule not-in ( element : list * )
-{
-    if $(element) in $(list)
-    {
-        errors.error-skip-frames 3 assertion failure: Did not expect
-            \"$(element)\" in "[" \"$(list)\" "]" ;
-    }
-}
-
-
-# Assert the inequality of A and B as sets.
-#
-rule not-set-equal ( a * : b * )
-{
-    if [ set-equal-test $(a) : $(b) ]
-    {
-        errors.error-skip-frames 3 assertion failure: Expected "[" \"$(a)\" "]"
-            and "[" \"$(b)\" "]" to not be equal as sets ;
-    }
-}
-
-
-# Assert that A and B are not exactly equal, not ignoring trailing empty string
-# elements.
-#
-rule not-exact-equal ( a * : b * )
-{
-    if [ exact-equal-test $(a) : $(b) ]
-    {
-        errors.error-skip-frames 3 assertion failure: \"$(a)\" "!=" \"$(b)\" ;
-    }
-}
-
-
-# Assert that EXPECTED is the result of calling RULE-NAME with the given
-# arguments.
-#
-rule result ( expected * : rule-name args * : * )
-{
-    local result ;
-    module [ CALLER_MODULE ]
-    {
-        modules.poke assert : result : [ $(2) : $(3) : $(4) : $(5) : $(6) : 
$(7)
-            : $(8) : $(9) : $(10) : $(11) : $(12) : $(13) : $(14) : $(15) :
-            $(16) : $(17) : $(18) : $(19) ] ;
-    }
-
-    if ! [ exact-equal-test $(result) : $(expected) ]
-    {
-        errors.error-skip-frames 3 assertion failure: "[" $(rule-name) [
-            errors.lol->list $(args) : $(3) : $(4) : $(5) : $(6) : $(7) : $(8) 
:
-            $(9) : $(10) : $(11) : $(12) : $(13) : $(14) : $(15) : $(16) : 
$(17)
-            : $(18) : $(19) ] "]" : Expected: "[" \"$(expected)\" "]" : Got: 
"["
-            \"$(result)\" "]" ;
-    }
-}
-
-
-# Assert that EXPECTED is set-equal (i.e. duplicates and ordering are ignored)
-# to the result of calling RULE-NAME with the given arguments. Note that rules
-# called this way may accept at most 18 parameters.
-#
-rule result-set-equal ( expected * : rule-name args * : * )
-{
-    local result ;
-    module [ CALLER_MODULE ]
-    {
-        modules.poke assert : result : [ $(2) : $(3) : $(4) : $(5) : $(6) : 
$(7)
-            : $(8) : $(9) : $(10) : $(11) : $(12) : $(13) : $(14) : $(15) :
-            $(16) : $(17) : $(18) : $(19) ] ;
-    }
-
-    if ! [ set-equal-test $(result) : $(expected) ]
-    {
-        errors.error-skip-frames 3 assertion failure: "[" $(rule-name) [
-            errors.lol->list $(args) : $(3) : $(4) : $(5) : $(6) : $(7) : $(8) 
:
-            $(9) : $(10) : $(11) : $(12) : $(13) : $(14) : $(15) : $(16) : 
$(17)
-            : $(18) : $(19) ] "]" : Expected: "[" \"$(expected)\" "]" : Got: 
"["
-            \"$(result)\" "]" ;
-    }
-}
-
-
-# Assert the equality of A and B as sets.
-#
-rule set-equal ( a * : b * )
-{
-    if ! [ set-equal-test $(a) : $(b) ]
-    {
-        errors.error-skip-frames 3 assertion failure: Expected "[" \"$(a)\" "]"
-            and "[" \"$(b)\" "]" to be equal as sets ;
-    }
-}
-
-
-# Assert that the result of calling RULE-NAME on the given arguments has a true
-# logical value (is neither an empty list nor all empty strings).
-#
-rule true ( rule-name args * : * )
-{
-    local result ;
-    module [ CALLER_MODULE ]
-    {
-        modules.poke assert : result : [ $(1) : $(2) : $(3) : $(4) : $(5) : 
$(6)
-            : $(7) : $(8) : $(9) : $(10) : $(11) : $(12) : $(13) : $(14) : 
$(15)
-            : $(16) : $(17) : $(18) : $(19) ] ;
-    }
-
-    if ! $(result)
-    {
-        errors.error-skip-frames 3 assertion failure: Expected true result from
-            "[" $(rule-name) [ errors.lol->list $(args) : $(2) : $(3) : $(4) :
-            $(5) : $(6) : $(7) : $(8) : $(9) : $(10) : $(11) : $(12) : $(13) :
-            $(14) : $(15) : $(16) : $(17) : $(18) : $(19) ] "]" ;
-    }
-}
-
-
-# Assert the exact equality of A and B, not ignoring trailing empty string
-# elements.
-#
-rule exact-equal ( a * : b * )
-{
-    if ! [ exact-equal-test $(a) : $(b) ]
-    {
-        errors.error-skip-frames 3 assertion failure: \"$(a)\" "==" \"$(b)\" ;
-    }
-}
-
-
-# Assert that the given variable is not an empty list.
-#
-rule variable-not-empty ( name )
-{
-    local value = [ modules.peek [ CALLER_MODULE ] : $(name) ] ;
-    if ! $(value)-is-not-empty
-    {
-        errors.error-skip-frames 3 assertion failure: Expected variable
-            \"$(name)\" not to be an empty list ;
-    }
-}
-
-
-rule __test__ ( )
-{
-    # Helper rule used to avoid test duplication related to different list
-    # equality test rules.
-    #
-    local rule run-equality-test ( equality-assert : 
ignore-trailing-empty-strings ? )
-    {
-        local not-equality-assert = not-$(equality-assert) ;
-
-        # When the given equality test is expected to ignore trailing empty
-        # strings some of the test results should be inverted.
-        local not-equality-assert-i = not-$(equality-assert) ;
-        if $(ignore-trailing-empty-strings)
-        {
-            not-equality-assert-i = $(equality-assert) ;
-        }
-
-            $(equality-assert)         :       ;
-            $(equality-assert)   "" "" : "" "" ;
-        $(not-equality-assert-i)       : "" "" ;
-            $(equality-assert)   x     : x     ;
-        $(not-equality-assert)         : x     ;
-        $(not-equality-assert)   ""    : x     ;
-        $(not-equality-assert)   "" "" : x     ;
-        $(not-equality-assert-i) x     : x ""  ;
-            $(equality-assert)   x ""  : x ""  ;
-        $(not-equality-assert)   x     : "" x  ;
-            $(equality-assert)   "" x  : "" x  ;
-
-            $(equality-assert) 1 2 3 : 1 2 3   ;
-        $(not-equality-assert) 1 2 3 : 3 2 1   ;
-        $(not-equality-assert) 1 2 3 : 1 5 3   ;
-        $(not-equality-assert) 1 2 3 : 1 "" 3  ;
-        $(not-equality-assert) 1 2 3 : 1 1 2 3 ;
-        $(not-equality-assert) 1 2 3 : 1 2 2 3 ;
-        $(not-equality-assert) 1 2 3 : 5 6 7   ;
-
-        # Extra variables used here just to make sure Boost Jam or Boost Build
-        # do not handle lists with empty strings differently depending on
-        # whether they are literals or stored in variables.
-
-        local empty           =         ;
-        local empty-strings   = "" ""   ;
-        local x-empty-strings = x "" "" ;
-        local empty-strings-x = "" "" x ;
-
-            $(equality-assert)                      : $(empty)           ;
-        $(not-equality-assert-i) ""                 : $(empty)           ;
-        $(not-equality-assert-i) "" ""              : $(empty)           ;
-        $(not-equality-assert-i)                    : $(empty-strings)   ;
-        $(not-equality-assert-i) ""                 : $(empty-strings)   ;
-            $(equality-assert)   "" ""              : $(empty-strings)   ;
-            $(equality-assert)   $(empty)           : $(empty)           ;
-            $(equality-assert)   $(empty-strings)   : $(empty-strings)   ;
-        $(not-equality-assert-i) $(empty)           : $(empty-strings)   ;
-            $(equality-assert)   $(x-empty-strings) : $(x-empty-strings) ;
-            $(equality-assert)   $(empty-strings-x) : $(empty-strings-x) ;
-        $(not-equality-assert)   $(empty-strings-x) : $(x-empty-strings) ;
-        $(not-equality-assert-i) x                  : $(x-empty-strings) ;
-        $(not-equality-assert)   x                  : $(empty-strings-x) ;
-        $(not-equality-assert-i) x                  : $(x-empty-strings) ;
-        $(not-equality-assert-i) x ""               : $(x-empty-strings) ;
-            $(equality-assert)   x "" ""            : $(x-empty-strings) ;
-        $(not-equality-assert)   x                  : $(empty-strings-x) ;
-        $(not-equality-assert)   "" x               : $(empty-strings-x) ;
-            $(equality-assert)   "" "" x            : $(empty-strings-x) ;
-    }
-
-
-    # ---------------
-    # Equality tests.
-    # ---------------
-
-    run-equality-test equal : ignore-trailing-empty-strings ;
-    run-equality-test exact-equal ;
-
-
-    # -------------------------
-    # assert.set-equal() tests.
-    # -------------------------
-
-        set-equal         :         ;
-    not-set-equal "" ""   :         ;
-        set-equal "" ""   : ""      ;
-        set-equal "" ""   : "" ""   ;
-        set-equal a b c   : a b c   ;
-        set-equal a b c   : b c a   ;
-        set-equal a b c a : a b c   ;
-        set-equal a b c   : a b c a ;
-    not-set-equal a b c   : a b c d ;
-    not-set-equal a b c d : a b c   ;
-}

http://git-wip-us.apache.org/repos/asf/incubator-joshua/blob/6da3961b/ext/kenlm/jam-files/boost-build/util/container.jam
----------------------------------------------------------------------
diff --git a/ext/kenlm b/ext/kenlm
new file mode 160000
index 0000000..56fdb5c
--- /dev/null
+++ b/ext/kenlm
@@ -0,0 +1 @@
+Subproject commit 56fdb5c44fca34d5a2e07d96139c28fb163983c5
diff --git a/ext/kenlm/jam-files/boost-build/util/container.jam 
b/ext/kenlm/jam-files/boost-build/util/container.jam
deleted file mode 100644
index dd49639..0000000
--- a/ext/kenlm/jam-files/boost-build/util/container.jam
+++ /dev/null
@@ -1,339 +0,0 @@
-# Copyright 2003 Dave Abrahams
-# Copyright 2002, 2003 Rene Rivera
-# Copyright 2002, 2003, 2004 Vladimir Prus
-# Distributed under the Boost Software License, Version 1.0.
-# (See accompanying file LICENSE_1_0.txt or 
http://www.boost.org/LICENSE_1_0.txt)
-
-# Various container classes.
-
-# Base for container objects. This lets us construct recursive structures. That
-# is containers with containers in them, specifically so we can tell literal
-# values from node values.
-#
-class node
-{
-    rule __init__ (
-        value ?  # Optional value to set node to initially.
-    )
-    {
-        self.value = $(value) ;
-    }
-
-    # Set the value of this node, passing nothing will clear it.
-    #
-    rule set ( value * )
-    {
-        self.value = $(value) ;
-    }
-
-    # Get the value of this node.
-    #
-    rule get ( )
-    {
-        return $(self.value) ;
-    }
-}
-
-
-# A simple vector. Interface mimics the C++ std::vector and std::list, with the
-# exception that indices are one (1) based to follow Jam standard.
-#
-# TODO: Possibly add assertion checks.
-#
-class vector : node
-{
-    import numbers ;
-    import utility ;
-    import sequence ;
-
-    rule __init__ (
-        values *  # Initial contents of vector.
-    )
-    {
-        node.__init__ ;
-        self.value = $(values) ;
-    }
-
-    # Get the value of the first element.
-    #
-    rule front ( )
-    {
-        return $(self.value[1]) ;
-    }
-
-    # Get the value of the last element.
-    #
-    rule back ( )
-    {
-        return $(self.value[-1]) ;
-    }
-
-    # Get the value of the element at the given index, one based. Access to
-    # elements of recursive structures is supported directly. Specifying
-    # additional index values recursively accesses the elements as containers.
-    # For example: [ $(v).at 1 : 2 ] would retrieve the second element of our
-    # first element, assuming the first element is a container.
-    #
-    rule at (
-        index  # The element index, one based.
-        : *  # Additional indices to access recursively.
-    )
-    {
-        local r = $(self.value[$(index)]) ;
-        if $(2)
-        {
-            r = [ $(r).at $(2) : $(3) : $(4) : $(5) : $(6) : $(7) : $(8) : 
$(9) ] ;
-        }
-        return $(r) ;
-    }
-
-    # Get the value contained in the given element. This has the same
-    # functionality and interface as "at" but in addition gets the value of the
-    # referenced element, assuming it is a "node".
-    #
-    rule get-at (
-        index  # The element index, one based.
-        : *  # Additional indices to access recursively.
-    )
-    {
-        local r = $(self.value[$(index)]) ;
-        if $(2)
-        {
-            r = [ $(r).at $(2) : $(3) : $(4) : $(5) : $(6) : $(7) : $(8) : 
$(9) ] ;
-        }
-        return [ $(r).get ] ;
-    }
-
-    # Insert the given value into the front of the vector pushing the rest of
-    # the elements back.
-    #
-    rule push-front (
-        value  # Value to become first element.
-    )
-    {
-        self.value = $(value) $(self.value) ;
-    }
-
-    # Remove the front element from the vector. Does not return the value. No
-    # effect if vector is empty.
-    #
-    rule pop-front ( )
-    {
-        self.value = $(self.value[2-]) ;
-    }
-
-    # Add the given value at the end of the vector.
-    #
-    rule push-back (
-        value  # Value to become back element.
-    )
-    {
-        self.value += $(value) ;
-    }
-
-    # Remove the back element from the vector. Does not return the value. No
-    # effect if vector is empty.
-    #
-    rule pop-back ( )
-    {
-        self.value = $(self.value[1--2]) ;
-    }
-
-    # Insert the given value at the given index, one based. The values at and 
to
-    # the right of the index are pushed back to make room for the new value.
-    # If the index is passed the end of the vector the element is added to the
-    # end.
-    #
-    rule insert (
-        index  # The index to insert at, one based.
-        : value  # The value to insert.
-    )
-    {
-        local left = $(self.value[1-$(index)]) ;
-        local right = $(self.value[$(index)-]) ;
-        if $(right)-is-not-empty
-        {
-            left = $(left[1--2]) ;
-        }
-        self.value = $(left) $(value) $(right) ;
-    }
-
-    # Remove one or more elements from the vector. The range is inclusive, and
-    # not specifying an end is equivalent to the [start, start] range.
-    #
-    rule erase (
-        start  # Index of first element to remove.
-        end ?  # Optional, index of last element to remove.
-    )
-    {
-        end ?= $(start) ;
-        local left = $(self.value[1-$(start)]) ;
-        left = $(left[1--2]) ;
-        local right = $(self.value[$(end)-]) ;
-        right = $(right[2-]) ;
-        self.value = $(left) $(right) ;
-    }
-
-    # Remove all elements from the vector.
-    #
-    rule clear ( )
-    {
-        self.value = ;
-    }
-
-    # The number of elements in the vector.
-    #
-    rule size ( )
-    {
-        return [ sequence.length $(self.value) ] ;
-    }
-
-    # Returns "true" if there are NO elements in the vector, empty otherwise.
-    #
-    rule empty ( )
-    {
-        if ! $(self.value)-is-not-empty
-        {
-            return true ;
-        }
-    }
-
-    # Returns the textual representation of content.
-    #
-    rule str ( )
-    {
-        return "[" [ sequence.transform utility.str : $(self.value) ] "]" ;
-    }
-
-    # Sorts the vector inplace, calling 'utility.less' for comparisons.
-    #
-    rule sort ( )
-    {
-        self.value = [ sequence.insertion-sort $(self.value) : utility.less ] ;
-    }
-
-    # Returns true if content is equal to the content of other vector. Uses
-    # 'utility.equal' for comparison.
-    #
-    rule equal ( another )
-    {
-        local mismatch ;
-        local size = [ size ] ;
-        if $(size) = [ $(another).size ]
-        {
-            for local i in [ numbers.range 1 $(size) ]
-            {
-                if ! [ utility.equal [ at $(i) ] [ $(another).at $(i) ] ]
-                {
-                    mismatch = true ;
-                }
-            }
-        }
-        else
-        {
-            mismatch = true ;
-        }
-
-        if ! $(mismatch)
-        {
-            return true ;
-        }
-    }
-}
-
-
-rule __test__ ( )
-{
-    import assert ;
-    import "class" : new ;
-
-    local v1 = [ new vector ] ;
-    assert.true $(v1).equal $(v1) ;
-    assert.true $(v1).empty ;
-    assert.result 0 : $(v1).size ;
-    assert.result "[" "]" : $(v1).str ;
-    $(v1).push-back b ;
-    $(v1).push-front a ;
-    assert.result "[" a b "]" : $(v1).str ;
-    assert.result a : $(v1).front ;
-    assert.result b : $(v1).back ;
-    $(v1).insert 2 : d ;
-    $(v1).insert 2 : c ;
-    $(v1).insert 4 : f ;
-    $(v1).insert 4 : e ;
-    $(v1).pop-back ;
-    assert.result 5 : $(v1).size ;
-    assert.result d : $(v1).at 3 ;
-    $(v1).pop-front ;
-    assert.result c : $(v1).front ;
-    assert.false $(v1).empty ;
-    $(v1).erase 3 4 ;
-    assert.result 2 : $(v1).size ;
-
-    local v2 = [ new vector q w e r t y ] ;
-    assert.result 6 : $(v2).size ;
-    $(v1).push-back $(v2) ;
-    assert.result 3 : $(v1).size ;
-    local v2-alias = [ $(v1).back ] ;
-    assert.result e : $(v2-alias).at 3 ;
-    $(v1).clear ;
-    assert.true $(v1).empty ;
-    assert.false $(v2-alias).empty ;
-    $(v2).pop-back ;
-    assert.result t : $(v2-alias).back ;
-
-    local v3 = [ new vector ] ;
-    $(v3).push-back [ new vector 1 2 3 4 5 ] ;
-    $(v3).push-back [ new vector a b c ] ;
-    assert.result "[" "[" 1 2 3 4 5 "]" "[" a b c "]" "]" : $(v3).str ;
-    $(v3).push-back [ new vector [ new vector x y z ] [ new vector 7 8 9 ] ] ;
-    assert.result 1 : $(v3).at 1 : 1 ;
-    assert.result b : $(v3).at 2 : 2 ;
-    assert.result a b c : $(v3).get-at 2 ;
-    assert.result 7 8 9 : $(v3).get-at 3 : 2 ;
-
-    local v4 = [ new vector 4 3 6 ] ;
-    $(v4).sort ;
-    assert.result 3 4 6 : $(v4).get ;
-    assert.false $(v4).equal $(v3) ;
-
-    local v5 = [ new vector 3 4 6 ] ;
-    assert.true $(v4).equal $(v5) ;
-    # Check that vectors of different sizes are considered non-equal.
-    $(v5).pop-back ;
-    assert.false $(v4).equal $(v5) ;
-
-    local v6 = [ new vector [ new vector 1 2 3 ] ] ;
-    assert.true $(v6).equal [ new vector [ new vector 1 2 3 ] ] ;
-
-    local v7 = [ new vector 111 222 333 ] ;
-    assert.true $(v7).equal $(v7) ;
-    $(v7).insert 4 : 444 ;
-    assert.result 111 222 333 444 : $(v7).get ;
-    $(v7).insert 999 : xxx ;
-    assert.result 111 222 333 444 xxx : $(v7).get ;
-
-    local v8 = [ new vector "" "" "" ] ;
-    assert.true $(v8).equal $(v8) ;
-    assert.false $(v8).empty ;
-    assert.result 3  : $(v8).size ;
-    assert.result "" : $(v8).at 1 ;
-    assert.result "" : $(v8).at 2 ;
-    assert.result "" : $(v8).at 3 ;
-    assert.result    : $(v8).at 4 ;
-    $(v8).insert 2 : 222 ;
-    assert.result 4 : $(v8).size ;
-    assert.result "" 222 "" "" : $(v8).get ;
-    $(v8).insert 999 : "" ;
-    assert.result 5 : $(v8).size ;
-    assert.result "" 222 "" "" "" : $(v8).get ;
-    $(v8).insert 999 : xxx ;
-    assert.result 6 : $(v8).size ;
-    assert.result "" 222 "" "" "" xxx : $(v8).get ;
-
-    # Regression test for a bug causing vector.equal to compare only the first
-    # and the last element in the given vectors.
-    local v9 = [ new vector 111 xxx 222 ] ;
-    local v10 = [ new vector 111 yyy 222 ] ;
-    assert.false $(v9).equal $(v10) ;
-}

Reply via email to