


/* DEPRECATED! - use code/TinyFormatter.h instead.
 *
 *
 * */

#ifndef AI_BOOST_FORMAT_DUMMY_INCLUDED
#define AI_BOOST_FORMAT_DUMMY_INCLUDED

#if (!defined BOOST_FORMAT_HPP) || (defined ASSIMP_FORCE_NOBOOST)

#include <string>
#include <vector>

#if defined(__QNXNTO__)
#include <unistd.h>
#endif

namespace boost
{


    class format
    {
    public:
        format (const std::string& _d)
            : d(_d)
        {
        }

        template <typename T>
        format& operator % (T in)
        {
            // XXX add replacement for boost::lexical_cast?

            std::stringstream ss;
            ss << in; // note: ss cannot be an rvalue, or  the global operator << (const char*) is not called for T == const char*.
            chunks.push_back( ss.str());
            return *this;
        }


        operator std::string () const {
            std::string res; // pray for NRVO to kick in

            size_t start = 0, last = 0;

            std::vector<std::string>::const_iterator chunkin = chunks.begin();

            for ( start = d.find('%');start != std::string::npos;  start = d.find('%',last)) {
                res += d.substr(last,start-last);
                last = start+2;
                if (d[start+1] == '%') {
                    res += "%";
                    continue;
                }

                if (chunkin == chunks.end()) {
                    break;
                }

                res += *chunkin++;
            }
            res += d.substr(last);
            return res;
        }

    private:
        std::string d;
        std::vector<std::string> chunks;
    };

    inline std::string str(const std::string& s) {
        return s;
    }
}


#else
#    error "format.h was already included"
#endif //
#endif // !! AI_BOOST_FORMAT_DUMMY_INCLUDED

