char* ClassBuffer::FindClassDecl (TextBuffer* tb, int& beg) { Regexp classKeyWord("^class[ $]"); Regexp delimiter("[:{;]"); char* className = nil; int obeg = beg; for (;;) { beg = tb->ForwardSearch(&classKeyWord, beg); if (beg < 0) { break; } int tmp = beg; int delim = tb->ForwardSearch(&delimiter, tmp); if (delim >= 0 && *tb->Text(delim-1) != ';') { className = Identifier(tb, beg); break; } } if (className && (strcmp(className, "VTK_EXPORT")==0||strcmp(className, "ACE_Export")==0)) { // retry this time skipping the extra token Regexp classKeyWord(strcmp(className, "VTK_EXPORT")==0 ? "^class VTK_EXPORT[ $]" : "^class ACE_Export[ $]"); Regexp delimiter("[:{;]"); beg = obeg; for (;;) { beg = tb->ForwardSearch(&classKeyWord, beg); if (beg < 0) { break; } int tmp = beg; int delim = tb->ForwardSearch(&delimiter, tmp); if (delim >= 0 && *tb->Text(delim-1) != ';') { className = Identifier(tb, beg); break; } } } return className; }
char* ClassBuffer::FindClassDecl (TextBuffer* tb, int& beg) { Regexp classKeyWord("^class[ $]"); Regexp delimiter("[:{;]"); char* className = nil; for (;;) { beg = tb->ForwardSearch(&classKeyWord, beg); if (beg < 0) { break; } int tmp = beg; int delim = tb->ForwardSearch(&delimiter, tmp); if (delim >= 0 && *tb->Text(delim-1) != ';') { className = Identifier(tb, beg); break; } } return className; }