Source Code (Use browser search to find items of interest.)

Class Index

kdelibs'DOMStringImpl (./kdelibs/khtml/xml/dom_stringimpl.h:33)

class DOMStringImpl : public DomShared
{
protected:
    DOMStringImpl() { s = 0, l = 0; }
public:
    DOMStringImpl(QChar *str, uint len);
    virtual ~DOMStringImpl() { if(s) delete [] s; }

    void append(DOMStringImpl *str);
    void insert(DOMStringImpl *str, uint pos);
    void truncate(int len);
    void remove(uint pos, int len=1);
    DOMStringImpl *split(uint pos);
    DOMStringImpl *copy() const;

    const QChar &operator [] (int pos)
	{ return *(s+pos); }

    khtml::Length toLength() const;
    int toInt() const;
    QList<khtml::Length> *toLengthList() const;

    uint l;
    QChar *s;
};

};

kdelibs'DOMStringImpl::DOMStringImpl() (./kdelibs/khtml/xml/dom_stringimpl.cpp:39)

DOMStringImpl::DOMStringImpl(QChar *str, uint len)
{
    s = str, l = len;
}


kdelibs'DOMStringImpl::append() (./kdelibs/khtml/xml/dom_stringimpl.cpp:44)

void DOMStringImpl::append(DOMStringImpl *str)
{
    if(str && str->l != 0)
    {
	int newlen = l+str->l;
	QChar *c = QT_ALLOC_QCHAR_VEC(newlen);
	memcpy(c, s, l*sizeof(QChar));
	memcpy(c+l, str->s, str->l*sizeof(QChar));
	if(s) QT_DELETE_QCHAR_VEC(s);
	s = c;
	l = newlen;
    }
}


kdelibs'DOMStringImpl::insert() (./kdelibs/khtml/xml/dom_stringimpl.cpp:58)

void DOMStringImpl::insert(DOMStringImpl *str, uint pos)
{
    if(pos > l)
    {
	append(str);
	return;
    }
    if(str && str->l != 0)
    {
	int newlen = l+str->l;
	QChar *c = QT_ALLOC_QCHAR_VEC(newlen);
	memcpy(c, s, pos*sizeof(QChar));
	memcpy(c+pos, str->s, str->l*sizeof(QChar));
	memcpy(c+pos+str->l, s+pos, (l-pos)*sizeof(QChar));
	if(s) QT_DELETE_QCHAR_VEC(s);
	s = c;
        l = newlen;
    }
}


kdelibs'DOMStringImpl::truncate() (./kdelibs/khtml/xml/dom_stringimpl.cpp:78)

void DOMStringImpl::truncate(int len)
{
    if(len > (int)l) return;

    QChar *c = QT_ALLOC_QCHAR_VEC(len);
    memcpy(c, s, len*sizeof(QChar));
    if(s) QT_DELETE_QCHAR_VEC(s);
    s = c;
    l = len;
}


kdelibs'DOMStringImpl::remove() (./kdelibs/khtml/xml/dom_stringimpl.cpp:89)

void DOMStringImpl::remove(uint pos, int len)
{
  if(pos >= l ) return;
  if(pos+len > l)
    len = l - pos;
  
  uint newLen = l-len;
  QChar *c = QT_ALLOC_QCHAR_VEC(newLen);
  memcpy(c, s, pos*sizeof(QChar));
  memcpy(c+pos, s+pos+len, (l-len-pos)*sizeof(QChar));
  if(s) QT_DELETE_QCHAR_VEC(s);
  s = c;
  l = newLen;
}


kdelibs'DOMStringImpl::split() (./kdelibs/khtml/xml/dom_stringimpl.cpp:104)

DOMStringImpl *DOMStringImpl::split(uint pos)
{
  if( pos >=l ) return new DOMStringImpl();

  uint newLen = l-pos;
  QChar *c = QT_ALLOC_QCHAR_VEC(newLen);
  memcpy(c, s+pos, newLen*sizeof(QChar));
  
  truncate(pos);
  return new DOMStringImpl(c, newLen);
}


kdelibs'DOMStringImpl::copy() (./kdelibs/khtml/xml/dom_stringimpl.cpp:116)

DOMStringImpl *DOMStringImpl::copy() const
{
    QChar *c = QT_ALLOC_QCHAR_VEC(l);
    memcpy(c, s, l*sizeof(QChar));
    return new DOMStringImpl(c, l);
}


kdelibs'DOMStringImpl::toLength() (./kdelibs/khtml/xml/dom_stringimpl.cpp:157)

Length DOMStringImpl::toLength() const
{
    return parseLength(s, l);
}


kdelibs'DOMStringImpl::toInt() (./kdelibs/khtml/xml/dom_stringimpl.cpp:162)

int DOMStringImpl::toInt() const
{
    return QConstString(s, l).string().toInt();
}


kdelibs'DOMStringImpl::toLengthList() (./kdelibs/khtml/xml/dom_stringimpl.cpp:167)

QList<Length> *DOMStringImpl::toLengthList() const
{
    QString str(s, l);
    int pos = 0;
    int pos2;
    str.replace(QRegExp(" "),"");

    QList<Length> *list = new QList<Length>;
    list->setAutoDelete(true);
    while((pos2 = str.find(',', pos)) != -1)
    {
	Length *l = new Length(parseLength((QChar *) str.unicode()+pos, pos2-pos));
	list->append(l);
	pos = pos2+1;
    }

    Length *l = new Length(parseLength((QChar *) str.unicode()+pos, str.length()-pos));
    list->append(l);

    return list;
}