lyx_mirror/src/support/convert.cpp
Georg Baum 89b5802463 Fix files with spaces in converter cache;
Delete cached conversions if the converter changes.

	* src/frontends/qt4/QPrefs.cpp
	(PrefConverters::update_converter): delete cached files since the
	new converter might create different ones
	(PrefConverters::remove_converter): ditto

	* src/support/convert.cpp
	(unsigned long convert<unsigned long>): New template specialization

	* src/ConverterCache.h
	(ConverterCache::remove_all): New method, removes all cached
	conversions of a particular converter

	* src/ConverterCache.cpp
	(CacheType): Also store source file format
	(ConverterCache::Impl::readIndex): Handle files with spaces correctly
	(ConverterCache::Impl::writeIndex): ditto
	(various): adapt to changed CacheType


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@18378 a592a061-630c-0410-9148-cb99ea01b6c8
2007-05-17 08:31:00 +00:00

173 lines
2.3 KiB
C++

/**
* \file tostr.C
* This file is part of LyX, the document processor.
* Licence details can be found in the file COPYING.
*
* \author André Pönitz
* \author Lars Gullik Bjønnes
*
* Full author contact details are available in file CREDITS.
*/
#include <config.h>
#include "convert.h"
#include "support/docstring.h"
#include <boost/lexical_cast.hpp>
#include <string>
namespace lyx {
using lyx::docstring;
using boost::lexical_cast;
using std::string;
template<>
string convert<string>(bool b)
{
return (b ? "true" : "false");
}
template<>
string convert<string>(char c)
{
return string(1, c);
}
template<>
string convert<string>(short unsigned int sui)
{
return lexical_cast<string>(sui);
}
template<>
string convert<string>(int i)
{
return lexical_cast<string>(i);
}
template<>
docstring convert<docstring>(int i)
{
return lyx::from_ascii(lexical_cast<string>(i));
}
template<>
string convert<string>(unsigned int ui)
{
return lexical_cast<string>(ui);
}
template<>
docstring convert<docstring>(unsigned int ui)
{
return lyx::from_ascii(lexical_cast<string>(ui));
}
template<>
string convert<string>(unsigned long ul)
{
return lexical_cast<string>(ul);
}
template<>
docstring convert<docstring>(unsigned long ul)
{
return lyx::from_ascii(lexical_cast<string>(ul));
}
template<>
string convert<string>(long l)
{
return lexical_cast<string>(l);
}
template<>
docstring convert<docstring>(long l)
{
return lyx::from_ascii(lexical_cast<string>(l));
}
template<>
string convert<string>(float f)
{
return lexical_cast<string>(f);
}
template<>
string convert<string>(double d)
{
return lexical_cast<string>(d);
}
template<>
int convert<int>(string const s)
{
return strtol(s.c_str(), 0, 10);
}
template<>
int convert<int>(docstring const s)
{
return strtol(lyx::to_ascii(s).c_str(), 0, 10);
}
template<>
unsigned int convert<unsigned int>(string const s)
{
return strtoul(s.c_str(), 0, 10);
}
template<>
unsigned long convert<unsigned long>(string const s)
{
return strtoul(s.c_str(), 0, 10);
}
template<>
double convert<double>(string const s)
{
return strtod(s.c_str(), 0);
}
template<>
int convert<int>(char const * cptr)
{
return strtol(cptr, 0, 10);
}
template<>
double convert<double>(char const * cptr)
{
return strtod(cptr, 0);
}
} // namespace lyx