| 1568 | } |
| 1569 | |
| 1570 | XN_C_API XnStatus xnUnregisterModule(const XnChar* strModule) |
| 1571 | { |
| 1572 | XnStatus nRetVal = XN_STATUS_OK; |
| 1573 | |
| 1574 | XnChar strFullPath[XN_FILE_MAX_PATH]; |
| 1575 | nRetVal = xnOSGetFullPathName(strModule, strFullPath, XN_FILE_MAX_PATH); |
| 1576 | XN_IS_STATUS_OK(nRetVal); |
| 1577 | |
| 1578 | TiXmlDocument doc; |
| 1579 | nRetVal = loadModulesFile(doc); |
| 1580 | XN_IS_STATUS_OK(nRetVal); |
| 1581 | |
| 1582 | // find this module |
| 1583 | TiXmlElement* pModule = doc.RootElement()->FirstChildElement(XN_MODULE_ELEMENT_NAME); |
| 1584 | while (pModule != NULL) |
| 1585 | { |
| 1586 | const XnChar* strPath; |
| 1587 | nRetVal = xnXmlReadStringAttribute(pModule, "path", &strPath); |
| 1588 | XN_IS_STATUS_OK(nRetVal); |
| 1589 | |
| 1590 | if (xnOSStrCaseCmp(strPath, strFullPath) == 0) |
| 1591 | { |
| 1592 | doc.RootElement()->RemoveChild(pModule); |
| 1593 | break; |
| 1594 | } |
| 1595 | |
| 1596 | pModule = pModule->NextSiblingElement(XN_MODULE_ELEMENT_NAME); |
| 1597 | } |
| 1598 | |
| 1599 | nRetVal = saveModulesFile(doc); |
| 1600 | XN_IS_STATUS_OK(nRetVal); |
| 1601 | |
| 1602 | return (XN_STATUS_OK); |
| 1603 | } |
| 1604 | |
| 1605 | XN_C_API XnStatus xnPrintRegisteredModules() |
| 1606 | { |
no test coverage detected