/usr/include/OpenSP/XcharMap.h is in libosp-dev 1.5.2-10ubuntu3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 | // Copyright (c) 1994 James Clark, 2000 Matthias Clasen
// See the file COPYING for copying permission.
#ifndef XcharMap_INCLUDED
#define XcharMap_INCLUDED 1
#include "types.h"
#include "Resource.h"
#include "Ptr.h"
#include "constant.h"
#include "CharMap.h"
#ifdef SP_NAMESPACE
namespace SP_NAMESPACE {
#endif
template<class T>
class SharedXcharMap : public Resource {
public:
SharedXcharMap();
SharedXcharMap(T defaultValue);
T *ptr() { return v + 1; }
private:
#ifdef SP_MULTI_BYTE
T v[2 + 0xffff];
#else
T v[2 + 0xff];
#endif
};
template<class T>
class XcharMap {
public:
XcharMap();
XcharMap(T defaultValue);
T operator[](Xchar c) const;
void setRange(Char min, Char max, T val);
void setChar(Char c, T val);
void setEe(T val);
void clear();
private:
T *ptr_;
Ptr<SharedXcharMap<T> > sharedMap_;
#ifdef SP_MULTI_BYTE
Ptr<CharMapResource<T> > hiMap_;
#endif
};
template<class T>
inline
T XcharMap<T>::operator[](Xchar c) const
{
#ifdef SP_MULTI_BYTE
if (c > 0xffff)
return hiMap_->operator[]((Char)c);
#endif
return ptr_[c];
}
template<class T>
inline
void XcharMap<T>::setChar(Char c, T val)
{
#ifdef SP_MULTI_BYTE
if (c > 0xffff) {
hiMap_->setChar(c, val);
return;
}
#endif
ptr_[c] = val;
}
template<class T>
inline
void XcharMap<T>::setEe(T val)
{
ptr_[-1] = val;
}
template<class T>
inline
void XcharMap<T>::clear()
{
ptr_ = 0;
sharedMap_.clear();
#ifdef SP_MULTI_BYTE
hiMap_.clear();
#endif
}
#ifdef SP_NAMESPACE
}
#endif
#endif /* not XcharMap_INCLUDED */
#ifdef SP_DEFINE_TEMPLATES
#include "XcharMap.cxx"
#endif
|