const Literał &operator=(const char *pch)
// Wskazówka 42.
// Wskazówka 43.
// Wskazówka 61.
strncpy(m_rgch, pch, sizeof(m_rgch)-2);
// Wskazówka 41. m_rgch[sizeof(m_rgch) - 1] = 0; return *this;
const Literał & operator+=(const char *sz)
int cchSrc;
cchSrc = strlen(m_rgch);
// +1 oznacza, że wystarcza miejsca razem z pustym znakiem kończącym.
// +2 oznacza, że można wstawić jeszcze jeden znak i dopiero wtedy pusty // znak kończący.
if(cchSrc+strlen(sz) + 1 < sizeof(m_rgch))
strcpy(m_rgch+cchSrc, sz);
return *this;
int IMatch(const char *pch)
return IStartTokenPch(pch, m_rgch);
};
class Cl: public RExp
private:
char m_rgch[cchCI];
BOOL m_fContain:7;
BOOL m_fSpecial:1;
public:
CI(const char *sz = NULL) : RExp(), m_fContain(TRUE), m_fSpecial(FALSE)
if(sz)