aDeclaration->AddValue(aName, nsCSSValue(decoration, eCSSUnit_Integer));
aDeclaration->AppendValue(aName, nsCSSValue(decoration, eCSSUnit_Integer));
PRBool CSSParserImpl::ParseTextDecoration(PRInt32* aErrorCode,                                          nsICSSDeclaration* aDeclaration,                                          const char* aName){  static PRInt32 kTextDecorationNoneKTable[] = {    KEYWORD_NONE, NS_STYLE_TEXT_DECORATION_NONE,    -1  };  static PRInt32 kTextDecorationKTable[] = {    KEYWORD_UNDERLINE, NS_STYLE_TEXT_DECORATION_UNDERLINE,    KEYWORD_OVERLINE, NS_STYLE_TEXT_DECORATION_OVERLINE,    KEYWORD_LINE_THROUGH, NS_STYLE_TEXT_DECORATION_LINE_THROUGH,    KEYWORD_BLINK, NS_STYLE_TEXT_DECORATION_BLINK,    -1,  };  if (ParseEnum(aErrorCode, aDeclaration, aName, kTextDecorationNoneKTable)) {    return PR_TRUE;  }  PRInt32 decoration = 0;  for (int i = 0; i < 4; i++) {    nsString* ident = NextIdent(aErrorCode);    if (nsnull == ident) {      break;    }    char cbuf[50];    ident->ToCString(cbuf, sizeof(cbuf));    PRInt32 id = nsCSSKeywords::LookupName(cbuf);    PRInt32 ix = SearchKeywordTable(id, kTextDecorationKTable);    if (ix < 0) {      UngetToken();      break;    }    decoration |= kTextDecorationKTable[ix+1];  }  if (0 == decoration) {    return PR_FALSE;  }  aDeclaration->AddValue(aName, nsCSSValue(decoration, eCSSUnit_Integer));  return PR_TRUE;}