- From: <gnelan@viasoft.com>
- Date: Wed, 27 Oct 1999 14:20:27 -0700
- To: html-tidy@w3.org
Hello,
I am toying around with the idea of using tidy with some existing C++
code and have managed to compile it under MS VC++ 5.0 with just a few
problems that I thought I'd report here. BTW, the 22Oct99 is *much*
better at this than the last version I tried (15Apr99).
====
In clean.c:
Bool HasOneChild(Node *node)
{
return (node->content && node->content->next == null);
}
The C++ compiler complains about bool to Bool conversion. Fix:
Bool HasOneChild(Node *node)
{
return (Bool)((node->content && node->content->next == null));
}
====
Same issue in lexer.c:
Bool EndOfInput(Lexer *lexer)
{
return (feof(lexer->in->file));
}
====
Same issue in parser.c:
Bool IsNewNode(Node *node)
{
if (node && node->tag)
{
return (node->tag->model & CM_NEW);
}
return yes;
}
====
In parser.c (ParseBody):
...
/* avoid this error message being issued twice */
if (!node->tag->model & CM_HEAD)
ReportWarning(lexer, body, node, TAG_NOT_ALLOWED_IN);
...
if (!node->tag->model & (CM_ROW | CM_FIELD))
{
UngetToken(lexer);
return;
}
I get the messages:
parser.c(2494) : warning C4806: '&' : unsafe operation: no value of
type 'bool' promoted to type 'const int' can equal the given constant
parser.c(2537) : warning C4806: '&' : unsafe operation: no value of
type 'bool' promoted to type 'const int' can equal the given constant
These look like bugs. In the first case CM_HEAD is defined (1<<2)
which can never bit-and with 1. Same thing for (CM_ROW | CM_FIELD).
====
I don't know how many folks are compiling tidy with C++ other than
myself but since it's so close to being compatible now I hope that
it stays that way. Thanks for the good work.
Regards,
George Nelan
Received on Wednesday, 27 October 1999 17:22:18 UTC