79830146

Date: 2025-11-25 20:28:07
Score: 0.5
Natty:
Report link

maybe something like that ? (idea came from "C object'like struct using function pointers")

class utfCodepointViewWrap;
class utfStringViewWrap;

class utfStringViewAPI
{
  public:
  constexpr virtual utfCodepointViewWrap operator[] (const cpidx &aIdx) = 0;
  constexpr virtual utfStringViewWrap substr(const cpidx& aStart, size_t aCount) = 0;
};

class utfStringViewWrap
{
public:
  utfStringViewWrap(utfStringViewAPI& aThis) : mThis(aThis) {};
  constexpr utfCodepointViewWrap operator[] (const cpidx &aIdx);
  constexpr utfStringViewWrap substr(const cpidx& aStart, size_t aCount);

protected:
  utfStringViewAPI& mThis;

private:
  utfStringViewWrap()=delete;
};

constexpr utfStringViewWrap
utfStringViewWrap::substr (const cpidx &aStart, size_t aCount)
{
    return mThis.substr(aStart, aCount);
};

class u16stringView : public utfStringViewAPI
{
public:
  constexpr virtual utfCodepointViewWrap operator[] (const cpidx &aIdx) override { .... };
  constexpr virtual utfStringViewWrap substr(const cpidx& aStart, size_t aCount) override {return utfStringViewWrap(*this);};
};

Reasons:
  • Long answer (-1):
  • Has code block (-0.5):
  • Contains question mark (0.5):
  • Self-answer (0.5):
  • Low reputation (1):
Posted by: delab