# 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) ;
}


