161 lines
2.6 KiB
C++
161 lines
2.6 KiB
C++
//
|
|
// AttributeParser.cpp
|
|
//
|
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
//
|
|
|
|
#pragma once
|
|
|
|
#include "stdafx.h"
|
|
#include "AttributeParser.h"
|
|
#include "Attribute.h"
|
|
|
|
TAG_METHOD_IMPL(CAttributeParser, OnAnnotation)
|
|
{
|
|
TRACE_PARSE_ENTRY();
|
|
|
|
return SkipElement();
|
|
}
|
|
|
|
TAG_METHOD_IMPL(CAttributeParser, OnSimpleType)
|
|
{
|
|
TRACE_PARSE_ENTRY();
|
|
|
|
return SkipElement();
|
|
}
|
|
|
|
ATTR_METHOD_IMPL(CAttributeParser, OnForm)
|
|
{
|
|
TRACE_PARSE_ENTRY();
|
|
|
|
CAttribute * pCurr = GetAttribute();
|
|
if (pCurr != NULL)
|
|
{
|
|
return pCurr->SetAttributeForm(wszValue, cchValue);
|
|
}
|
|
|
|
Emit(IDS_SDL_INTERNAL);
|
|
|
|
return E_FAIL;
|
|
}
|
|
|
|
ATTR_METHOD_IMPL(CAttributeParser, OnRef)
|
|
{
|
|
TRACE_PARSE_ENTRY();
|
|
|
|
CAttribute * pCurr = GetAttribute();
|
|
if (pCurr != NULL)
|
|
{
|
|
return pCurr->SetRef(wszValue, cchValue);
|
|
}
|
|
|
|
Emit(IDS_SDL_INTERNAL);
|
|
|
|
return E_FAIL;
|
|
}
|
|
|
|
ATTR_METHOD_IMPL(CAttributeParser, OnName)
|
|
{
|
|
TRACE_PARSE_ENTRY();
|
|
|
|
CAttribute * pCurr = GetAttribute();
|
|
if (pCurr != NULL)
|
|
{
|
|
return pCurr->SetName(wszValue, cchValue);
|
|
}
|
|
|
|
Emit(IDS_SDL_INTERNAL);
|
|
|
|
return E_FAIL;
|
|
}
|
|
|
|
ATTR_METHOD_IMPL(CAttributeParser, OnType)
|
|
{
|
|
TRACE_PARSE_ENTRY();
|
|
|
|
CAttribute * pCurr = GetAttribute();
|
|
if (pCurr != NULL)
|
|
{
|
|
return pCurr->SetType(wszValue, cchValue);
|
|
}
|
|
|
|
Emit(IDS_SDL_INTERNAL);
|
|
|
|
return E_FAIL;
|
|
}
|
|
|
|
ATTR_METHOD_IMPL(CAttributeParser, OnUse)
|
|
{
|
|
TRACE_PARSE_ENTRY();
|
|
|
|
CAttribute * pCurr = GetAttribute();
|
|
if (pCurr != NULL)
|
|
{
|
|
return pCurr->SetAttributeUse(wszValue, cchValue);
|
|
}
|
|
|
|
Emit(IDS_SDL_INTERNAL);
|
|
|
|
return E_FAIL;
|
|
}
|
|
|
|
ATTR_METHOD_IMPL(CAttributeParser, OnValue)
|
|
{
|
|
TRACE_PARSE_ENTRY();
|
|
|
|
CAttribute * pCurr = GetAttribute();
|
|
if (pCurr != NULL)
|
|
{
|
|
return pCurr->SetValue(wszValue, cchValue);
|
|
}
|
|
|
|
Emit(IDS_SDL_INTERNAL);
|
|
|
|
return E_FAIL;
|
|
}
|
|
|
|
ATTR_METHOD_IMPL(CAttributeParser, OnID)
|
|
{
|
|
TRACE_PARSE_ENTRY();
|
|
|
|
CAttribute * pCurr = GetAttribute();
|
|
if (pCurr != NULL)
|
|
{
|
|
return pCurr->SetID(wszValue, cchValue);
|
|
}
|
|
|
|
Emit(IDS_SDL_INTERNAL);
|
|
|
|
return E_FAIL;
|
|
}
|
|
|
|
ATTR_METHOD_IMPL(CAttributeParser, OnArrayType)
|
|
{
|
|
TRACE_PARSE_ENTRY();
|
|
|
|
CAttribute *pCurr = GetAttribute();
|
|
if (pCurr != NULL)
|
|
{
|
|
return pCurr->SetArrayType(wszValue, cchValue);
|
|
}
|
|
|
|
Emit(IDS_SDL_INTERNAL);
|
|
|
|
return E_FAIL;
|
|
}
|
|
|
|
HRESULT CAttributeParser::ValidateElement()
|
|
{
|
|
// emit a warning when we encounter an attribute that is
|
|
// not an arrayType attribute
|
|
CAttribute *pCurr = GetAttribute();
|
|
if (pCurr != NULL)
|
|
{
|
|
if (!pCurr->GetArrayType().GetLength())
|
|
{
|
|
EmitFileWarning(IDS_SDL_NO_ATTRIBUTES, pCurr, 0);
|
|
}
|
|
}
|
|
|
|
return S_OK;
|
|
} |