    // Copyright (C) 2006  Davis E. King (davis@dlib.net)
    // License: Boost Software License   See LICENSE.txt for the full license.
    #ifndef DLIB_MEMORY_MANAGER_STATELESs_
    #define DLIB_MEMORY_MANAGER_STATELESs_

    #include "memory_manager_stateless/memory_manager_stateless_kernel_1.h"
    #include "memory_manager_stateless/memory_manager_stateless_kernel_2.h"
    #include "memory_manager.h"

    namespace dlib
    {

        template <
            typename T
            >
        class memory_manager_stateless
        {
            memory_manager_stateless() {}

        public:

            //----------- kernels ---------------

            // kernel_1
            typedef      memory_manager_stateless_kernel_1<T>
                         kernel_1a;

            // kernel_2
            typedef      memory_manager_stateless_kernel_2<T,memory_manager<char>::kernel_1a>
                         kernel_2_1a;
            typedef      memory_manager_stateless_kernel_2<T,memory_manager<char>::kernel_1b>
                         kernel_2_1b;
            typedef      memory_manager_stateless_kernel_2<T,memory_manager<char>::kernel_1c>
                         kernel_2_1c;
            typedef      memory_manager_stateless_kernel_2<T,memory_manager<char>::kernel_1d>
                         kernel_2_1d;
            typedef      memory_manager_stateless_kernel_2<T,memory_manager<char>::kernel_1e>
                         kernel_2_1e;
            typedef      memory_manager_stateless_kernel_2<T,memory_manager<char>::kernel_1f>
                         kernel_2_1f;

            typedef      memory_manager_stateless_kernel_2<T,memory_manager<char>::kernel_2a>
                         kernel_2_2a;
            typedef      memory_manager_stateless_kernel_2<T,memory_manager<char>::kernel_2b>
                         kernel_2_2b;
            typedef      memory_manager_stateless_kernel_2<T,memory_manager<char>::kernel_2c>
                         kernel_2_2c;
            typedef      memory_manager_stateless_kernel_2<T,memory_manager<char>::kernel_2d>
                         kernel_2_2d;
            typedef      memory_manager_stateless_kernel_2<T,memory_manager<char>::kernel_2e>
                         kernel_2_2e;

            typedef      memory_manager_stateless_kernel_2<T,memory_manager<char>::kernel_3a>
                         kernel_2_3a;
            typedef      memory_manager_stateless_kernel_2<T,memory_manager<char>::kernel_3b>
                         kernel_2_3b;
            typedef      memory_manager_stateless_kernel_2<T,memory_manager<char>::kernel_3c>
                         kernel_2_3c;
            typedef      memory_manager_stateless_kernel_2<T,memory_manager<char>::kernel_3d>
                         kernel_2_3d;
            typedef      memory_manager_stateless_kernel_2<T,memory_manager<char>::kernel_3e>
                         kernel_2_3e;

        };
    }

    #endif // DLIB_MEMORY_MANAGER_STATELESs_