Implement an isBytecodeArchive method to determine if an archive contains

bytecode file members or not.
Patch Contributed By Adam Treat

llvm-svn: 20338
This commit is contained in:
Reid Spencer
2005-02-26 22:00:32 +00:00
parent f05d2b3178
commit 709e10ed92
2 changed files with 38 additions and 0 deletions

View File

@@ -503,3 +503,32 @@ Archive::findModulesDefiningSymbols(std::set<std::string>& symbols,
}
}
}
bool
Archive::isBytecodeArchive()
{
//Make sure the symTab has been loaded...
//in most cases this should have been done
//when the archive was constructed, but still,
//this is just in case.
if ( !symTab.size() )
loadSymbolTable();
//Now that we know it's been loaded, return true
//if it has a size
if ( symTab.size() ) return true;
//We still can't be sure it isn't a bytecode archive
loadArchive();
std::vector<Module *> Modules;
std::string ErrorMessage;
//If getAllModules gives an error then this isn't a proper
//bytecode archive
if ( getAllModules( Modules, &ErrorMessage ) ) return false;
//Finally, if we find any bytecode modules then this is a proper
//bytecode archive
return Modules.size();
}