forked from OSchip/llvm-project
83 lines
2.9 KiB
C++
83 lines
2.9 KiB
C++
//===-- MIUtilSingletonHelper.h ---------------------------------*- C++ -*-===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#pragma once
|
|
|
|
namespace MI {
|
|
|
|
// In house headers:
|
|
#include "MICmnResources.h"
|
|
#include "MIUtilString.h"
|
|
|
|
//++
|
|
//============================================================================
|
|
// Details: Short cut helper function to simplify repeated initialisation of
|
|
// MI components (singletons) required by a client module.
|
|
// Type: Template method.
|
|
// Args: vErrorResrcId - (R) The string resource ID error message
|
|
// identifier to place in errMsg.
|
|
// vwrbOk - (RW) On input True = Try to initialize MI driver
|
|
// module.
|
|
// On output True = MI driver module initialise
|
|
// successfully.
|
|
// vwrErrMsg - (W) MI driver module initialise error description
|
|
// on failure.
|
|
// Return: MIstatus::success - Functional succeeded.
|
|
// MIstatus::failure - Functional failed.
|
|
//--
|
|
template <typename T>
|
|
bool ModuleInit(const MIint vErrorResrcId, bool &vwrbOk,
|
|
CMIUtilString &vwrErrMsg) {
|
|
if (vwrbOk && !T::Instance().Initialize()) {
|
|
vwrbOk = MIstatus::failure;
|
|
vwrErrMsg = CMIUtilString::Format(
|
|
MIRSRC(vErrorResrcId), T::Instance().GetErrorDescription().c_str());
|
|
}
|
|
|
|
return vwrbOk;
|
|
}
|
|
|
|
//++
|
|
//============================================================================
|
|
// Details: Short cut helper function to simplify repeated shutdown of
|
|
// MI components (singletons) required by a client module.
|
|
// Type: Template method.
|
|
// Args: vErrorResrcId - (R) The string resource ID error message
|
|
// identifier
|
|
// to place in errMsg.
|
|
// vwrbOk - (W) If not already false make false on module
|
|
// shutdown failure.
|
|
// vwrErrMsg - (RW) Append to existing error description string
|
|
// MI
|
|
// driver module initialise error description on
|
|
// failure.
|
|
// Return: True - Module shutdown succeeded.
|
|
// False - Module shutdown failed.
|
|
//--
|
|
template <typename T>
|
|
bool ModuleShutdown(const MIint vErrorResrcId, bool &vwrbOk,
|
|
CMIUtilString &vwrErrMsg) {
|
|
bool bOk = MIstatus::success;
|
|
|
|
if (!T::Instance().Shutdown()) {
|
|
const bool bMoreThanOneError(!vwrErrMsg.empty());
|
|
bOk = MIstatus::failure;
|
|
if (bMoreThanOneError)
|
|
vwrErrMsg += ", ";
|
|
vwrErrMsg += CMIUtilString::Format(
|
|
MIRSRC(vErrorResrcId), T::Instance().GetErrorDescription().c_str());
|
|
}
|
|
|
|
vwrbOk = bOk ? vwrbOk : MIstatus::failure;
|
|
|
|
return bOk;
|
|
}
|
|
|
|
} // namespace MI
|