    // Copyright (C) 2007  Davis E. King (davis@dlib.net)
    // License: Boost Software License   See LICENSE.txt for the full license.
    #undef DLIB_CONFIG_READER_THREAD_SAFe_ABSTRACT_
    #ifdef DLIB_CONFIG_READER_THREAD_SAFe_ABSTRACT_

    #include <string>
    #include <iosfwd>
    #include "config_reader_kernel_abstract.h"
    #include "../threads/threads_kernel_abstract.h"

    namespace dlib
    {

        class config_reader_thread_safe
        {

            /*!
                WHAT THIS EXTENSION DOES FOR config_reader
                    This object extends a normal config_reader by simply wrapping all
                    its member functions inside mutex locks to make it safe to use
                    in a threaded program.

                    So this object provides an interface identical to the one defined
                    in the config_reader/config_reader_kernel_abstract.h file except that
                    the rmutex returned by get_mutex() is always locked when this
                    object's member functions are called.
            !*/

        public:

            const rmutex& get_mutex (
            ) const;
            /*!
                ensures
                    - returns the rmutex used to make this object thread safe.  i.e. returns
                      the rmutex that is locked when this object's functions are called.
            !*/

        };

    }

    #endif // DLIB_CONFIG_READER_THREAD_SAFe_ABSTRACT_