X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FCoordCache.h;h=f26b6b22dd523791b9c73536f4488356d2649653;hb=a42f7ea7cd0e4d5d9594f363bce628451515d24b;hp=d1c0fa341723c3976da9b9581babdf29445fadc3;hpb=a9c6fb0c19f5a3eb884262bd37f7efdac035a20b;p=lyx.git diff --git a/src/CoordCache.h b/src/CoordCache.h index d1c0fa3417..f26b6b22dd 100644 --- a/src/CoordCache.h +++ b/src/CoordCache.h @@ -16,7 +16,7 @@ #include "Dimension.h" -#include +#include namespace lyx { @@ -26,7 +26,7 @@ class MathData; void lyxbreaker(void const * data, const char * hint, int size); struct Geometry { - Point pos; + Point pos = {-10000, -10000 }; Dimension dim; bool covers(int x, int y) const @@ -75,14 +75,18 @@ public: void add(T const * thing, Dimension const & dim) { - if (!has(thing)) - data_[thing].pos = Point(-10000, -10000); data_[thing].dim = dim; } + Geometry & geometry(T const * thing) + { + checkDim(thing, "geometry"); + return data_.find(thing)->second; + } + Geometry const & geometry(T const * thing) const { - check(thing, "geometry"); + checkDim(thing, "geometry"); return data_.find(thing)->second; } @@ -141,6 +145,7 @@ public: private: friend class CoordCache; +#ifdef ENABLE_ASSERTIONS void checkDim(T const * thing, char const * hint) const { if (!hasDim(thing)) @@ -152,8 +157,13 @@ private: if (!has(thing)) lyxbreaker(thing, hint, data_.size()); } +#else + void checkDim(T const *, char const * const ) const {} + + void check(T const *, char const *) const {} +#endif - typedef std::map cache_type; + typedef std::unordered_map cache_type; cache_type data_; };