mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-17 00:30:55 +00:00
fdbe775b9f
for possible thread conflicts, of the sort Georg resolved at
6a30211f
. I have made static variables const where possible,
and marked cases that looked potentially problematic with the
comment:
// FIXME THREAD
Many of these definitely are vulnerable to concurrent access, such
as the static variables declared at the start of output_latex.cpp.
Suppose, e.g., we were outputting latex and also displaying the
source of a different document.
I'd appreciate it if others could grep for "FIXME THREAD" and see
if some of these are harmless, or what.
86 lines
1.4 KiB
C++
86 lines
1.4 KiB
C++
/**
|
|
* \file FloatList.cpp
|
|
* This file is part of LyX, the document processor.
|
|
* Licence details can be found in the file COPYING.
|
|
*
|
|
* \author Lars Gullik Bjønnes
|
|
*
|
|
* Full author contact details are available in file CREDITS.
|
|
*/
|
|
|
|
#include <config.h>
|
|
|
|
#include "FloatList.h"
|
|
#include "Floating.h"
|
|
|
|
using namespace std;
|
|
|
|
namespace lyx {
|
|
|
|
FloatList::FloatList()
|
|
{}
|
|
|
|
|
|
FloatList::const_iterator FloatList::begin() const
|
|
{
|
|
return list.begin();
|
|
}
|
|
|
|
|
|
FloatList::const_iterator FloatList::end() const
|
|
{
|
|
return list.end();
|
|
}
|
|
|
|
|
|
void FloatList::newFloat(Floating const & fl)
|
|
{
|
|
list[fl.floattype()] = fl;
|
|
}
|
|
|
|
|
|
string const FloatList::defaultPlacement(string const & t) const
|
|
{
|
|
List::const_iterator cit = list.find(t);
|
|
if (cit != list.end())
|
|
return cit->second.placement();
|
|
return string();
|
|
}
|
|
|
|
|
|
bool FloatList::typeExist(string const & t) const
|
|
{
|
|
List::const_iterator cit = list.find(t);
|
|
return cit != list.end();
|
|
}
|
|
|
|
|
|
Floating const & FloatList::getType(string const & t) const
|
|
{
|
|
// I wish we could use exceptions
|
|
List::const_iterator cit = list.find(t);
|
|
if (cit != list.end())
|
|
return cit->second;
|
|
#ifdef HAVE_EXCEPTIONS
|
|
throw UnknownFloatType(t);
|
|
#else
|
|
static Floating const empty_float;
|
|
return empty_float;
|
|
#endif
|
|
}
|
|
|
|
|
|
void FloatList::erase(string const & t)
|
|
{
|
|
list.erase(t);
|
|
}
|
|
|
|
|
|
FloatList::const_iterator FloatList::operator[](string const & t) const
|
|
{
|
|
return list.find(t);
|
|
}
|
|
|
|
|
|
} // namespace lyx
|