コード例 #1
0
ファイル: TcxFileWriter.cpp プロジェクト: msimms/Exert
	bool TcxFileWriter::StorePosition(double lat, double lon)
	{
		if (CurrentTag().compare(TCX_TAG_NAME_TRACKPOINT) != 0)
			return false;
		if (OpenTag(TCX_TAG_NAME_POSITION))
		{
			WriteTagAndValue(TCX_TAG_NAME_LATITUDE, lat);
			WriteTagAndValue(TCX_TAG_NAME_LONGITUDE, lon);
			CloseTag();
			return true;
		}
		return false;
	}
コード例 #2
0
// Parse s in place i.e. we assume we can modify it. Must be 0-terminated.
// The caller owns the memory for s.
HtmlElement *HtmlParser::ParseInPlace(char *s, UINT codepage)
{
    if (this->html)
        Reset();
    this->html = s;
    this->codepage = codepage;

    HtmlPullParser parser(s, strlen(s));
    HtmlToken *tok;

    while ((tok = parser.Next())) {
        char *tag = (char *)tok->s;
        if (tok->IsError()) {
            errorContext = tag;
            switch (tok->error) {
                case HtmlToken::UnclosedTag: return ParseError(ErrParsingElementName);
                case HtmlToken::InvalidTag:  return ParseError(ErrParsingClosingElement);
                default:                     return ParseError(ErrParsingElement);
            }
        }
        if (!tok->IsTag()) {
            // ignore text content
            assert(tok->IsText());
            continue;
        }
        char *tagEnd = tag + tok->nLen;
        if (!tok->IsEndTag()) {
            // note: call tok->NextAttr() before zero-terminating names and values
            AttrInfo *attr = tok->NextAttr();
            *tagEnd = '\0';
            StartTag(tag);

            while (attr) {
                char *name = (char *)attr->name;
                char *nameEnd = name + attr->nameLen;
                char *value = (char *)attr->val;
                char *valueEnd = value + attr->valLen;
                attr = tok->NextAttr();

                *nameEnd = *valueEnd = '\0';
                AppendAttr(name, value);
            }
        }
        if (!tok->IsStartTag() || IsTagSelfClosing(tok->tag)) {
            *tagEnd = '\0';
            CloseTag(tag);
        }
    }

    return rootElement;
}
コード例 #3
0
ファイル: TcxFileWriter.cpp プロジェクト: msimms/Exert
	bool TcxFileWriter::EndActivity()
	{
		if (CurrentTag().compare(TCX_TAG_NAME_ACTIVITY) == 0)
			return CloseTag();
		return false;
	}
コード例 #4
0
ファイル: TcxFileWriter.cpp プロジェクト: msimms/Exert
	bool TcxFileWriter::EndTrackpoint()
	{
		if (CurrentTag().compare(TCX_TAG_NAME_TRACKPOINT) == 0)
			return CloseTag();
		return false;
	}
コード例 #5
0
ファイル: TcxFileWriter.cpp プロジェクト: msimms/Exert
	bool TcxFileWriter::EndLap()
	{
		if (CurrentTag().compare(TCX_TAG_NAME_LAP) == 0)
			return CloseTag();
		return false;
	}