version 1.2, 2015/04/20 18:10:11
|
version 1.3, 2015/04/20 18:19:50
|
|
|
static pthread_mutex_t _mutex = PTHREAD_MUTEX_INITIALIZER; | static pthread_mutex_t _mutex = PTHREAD_MUTEX_INITIALIZER; |
#endif | #endif |
| |
|
|
//============================================================================== | //============================================================================== |
// | // |
// Callbacks | // Callbacks |
|
|
void* data) | void* data) |
{ | { |
MOFParserHandler* handler = (MOFParserHandler*)data; | MOFParserHandler* handler = (MOFParserHandler*)data; |
handler->HandleError(msg); |
handler->HandleWarning(msg); |
} | } |
| |
extern "C" void pragmaCallback( | extern "C" void pragmaCallback( |
|
|
handler->HandleInstanceDecl(decl); | handler->HandleInstanceDecl(decl); |
} | } |
| |
extern "C" void qualifierDeclCallback(const MI_InstanceDecl* decl, void* data) |
extern "C" void qualifierDeclCallback(const MI_QualifierDecl* decl, void* data) |
{ | { |
MOFParserHandler* handler = (MOFParserHandler*)data; | MOFParserHandler* handler = (MOFParserHandler*)data; |
handler->HandleInstanceDecl(decl); |
handler->HandleQualifierDecl(decl); |
} | } |
| |
//============================================================================== | //============================================================================== |
|
|
m_parser = MOF_Parser_New(tmp, paths.size()); | m_parser = MOF_Parser_New(tmp, paths.size()); |
delete [] tmp; | delete [] tmp; |
| |
|
MOF_Parser_EnableExtensions(m_parser, MI_TRUE); |
|
|
MOF_Parser_SetPragmaCallback( | MOF_Parser_SetPragmaCallback( |
m_parser, | m_parser, |
(MOF_PragmaCallback)pragmaCallback, | (MOF_PragmaCallback)pragmaCallback, |
|
|
pthread_mutex_lock(&_mutex); | pthread_mutex_lock(&_mutex); |
#endif | #endif |
| |
int r = MOF_Parser_Parse(m_parser, path); |
int r = -1; |
|
try |
|
{ |
|
r = MOF_Parser_Parse(m_parser, path); |
|
} |
|
catch(...) |
|
{ |
|
// Not really sure what to do here, but it should probably be something |
|
} |
|
|
|
#ifndef _MSC_VER |
|
/* Release mutex */ |
|
pthread_mutex_unlock(&_mutex); |
|
#endif |
|
|
|
return r; |
|
} |
|
|
|
int MOFParser::ParseString(const char* mof_string) |
|
{ |
|
#ifndef _MSC_VER |
|
/* Acquire mutex to synchronize access to global Lex/Yacc state */ |
|
pthread_mutex_lock(&_mutex); |
|
#endif |
|
int r = -1; |
|
try |
|
{ |
|
r = MOF_Parser_ParseString(m_parser, mof_string); |
|
} |
|
catch(...) |
|
{ |
|
// Not really sure what to do here, but it should probably be something |
|
} |
| |
#ifndef _MSC_VER | #ifndef _MSC_VER |
/* Release mutex */ | /* Release mutex */ |