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

#include "memory_manager/memory_manager_kernel_1.h"
#include "memory_manager/memory_manager_kernel_2.h"
#include "memory_manager/memory_manager_kernel_3.h"



namespace dlib
{

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


    public:
        
        //----------- kernels ---------------

        // kernel_1        
        typedef      memory_manager_kernel_1<T,0>
                     kernel_1a;
        typedef      memory_manager_kernel_1<T,10>
                     kernel_1b;
        typedef      memory_manager_kernel_1<T,100>
                     kernel_1c;
        typedef      memory_manager_kernel_1<T,1000>
                     kernel_1d;
        typedef      memory_manager_kernel_1<T,10000>
                     kernel_1e;
        typedef      memory_manager_kernel_1<T,100000>
                     kernel_1f;
      
        // kernel_2        
        typedef      memory_manager_kernel_2<T,10>
                     kernel_2a;
        typedef      memory_manager_kernel_2<T,100>
                     kernel_2b;
        typedef      memory_manager_kernel_2<T,1000>
                     kernel_2c;
        typedef      memory_manager_kernel_2<T,10000>
                     kernel_2d;
        typedef      memory_manager_kernel_2<T,100000>
                     kernel_2e;
      
      
        // kernel_3        
        typedef      memory_manager_kernel_3<T,10>
                     kernel_3a;
        typedef      memory_manager_kernel_3<T,100>
                     kernel_3b;
        typedef      memory_manager_kernel_3<T,1000>
                     kernel_3c;
        typedef      memory_manager_kernel_3<T,10000>
                     kernel_3d;
        typedef      memory_manager_kernel_3<T,100000>
                     kernel_3e;
      
      
           

    };
}

#endif // DLIB_MEMORY_MANAGEr_