mirror of
https://github.com/reactos/reactos.git
synced 2024-10-06 01:13:38 +00:00
bug fixes
svn path=/trunk/; revision=6562
This commit is contained in:
parent
97c3062b35
commit
784ed4768a
|
@ -373,8 +373,8 @@ char* skipsemi ( char* p )
|
||||||
|
|
||||||
char* findend ( char* p, bool& externc )
|
char* findend ( char* p, bool& externc )
|
||||||
{
|
{
|
||||||
if ( !strncmp ( p, "static inline struct _TEB * NtCurrentTeb ( void )", 49 ) )
|
//if ( !strncmp ( p, "typedef enum _SE_OBJECT_TYPE", 28 ) )
|
||||||
_CrtDbgBreak();
|
// _CrtDbgBreak();
|
||||||
// special-case for 'extern "C"'
|
// special-case for 'extern "C"'
|
||||||
if ( !strncmp ( p, "extern", 6 ) )
|
if ( !strncmp ( p, "extern", 6 ) )
|
||||||
{
|
{
|
||||||
|
@ -396,7 +396,7 @@ char* findend ( char* p, bool& externc )
|
||||||
{
|
{
|
||||||
char* end = strchr ( p, ')' );
|
char* end = strchr ( p, ')' );
|
||||||
ASSERT(end);
|
ASSERT(end);
|
||||||
return end;
|
return end+1;
|
||||||
}
|
}
|
||||||
externc = false;
|
externc = false;
|
||||||
bool isStruct = false;
|
bool isStruct = false;
|
||||||
|
@ -409,18 +409,44 @@ char* findend ( char* p, bool& externc )
|
||||||
char* semi = strchr ( p, '{' );
|
char* semi = strchr ( p, '{' );
|
||||||
if ( !semi || semi > end )
|
if ( !semi || semi > end )
|
||||||
return end;
|
return end;
|
||||||
p = skipsemi ( semi );
|
end = skipsemi ( semi );
|
||||||
char* p2 = skip_ws ( p );
|
|
||||||
|
const char* structs[] = { "struct", "enum", "class" };
|
||||||
|
for ( int i = 0; i < sizeof(structs)/sizeof(structs[0]); i++ )
|
||||||
|
{
|
||||||
|
char* pStruct = strstr ( p, structs[i] );
|
||||||
|
if ( pStruct
|
||||||
|
&& pStruct < semi
|
||||||
|
&& !__iscsym(pStruct[-1])
|
||||||
|
&& !__iscsym(pStruct[strlen(structs[i])]) )
|
||||||
|
{
|
||||||
|
isStruct = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( isStruct )
|
||||||
|
{
|
||||||
|
end = strchr ( end, ';' );
|
||||||
|
if ( !end )
|
||||||
|
end = p + strlen(p);
|
||||||
|
else
|
||||||
|
end++;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
char* p2 = skip_ws ( end );
|
||||||
if ( *p2 == ';' )
|
if ( *p2 == ';' )
|
||||||
p = p2 + 1;
|
end = p2 + 1;
|
||||||
|
}
|
||||||
return end;
|
return end;
|
||||||
}
|
}
|
||||||
|
|
||||||
Type identify ( const vector<string>& tokens, int off )
|
Type identify ( const vector<string>& tokens, int off )
|
||||||
{
|
{
|
||||||
/*if ( tokens.size() >= (off+6) )
|
/*if ( tokens.size() >= 3 )
|
||||||
{
|
{
|
||||||
if ( tokens[off+5] == "NtCurrentTeb" )
|
if ( tokens[off+2] == "_OBJECTS_AND_SID" )
|
||||||
_CrtDbgBreak();
|
_CrtDbgBreak();
|
||||||
}*/
|
}*/
|
||||||
if ( tokens[off] == "typedef_tident" )
|
if ( tokens[off] == "typedef_tident" )
|
||||||
|
|
Loading…
Reference in a new issue