* -------------------------------------------------------------------------
* This file is part of the Vision SDK project.
* Copyright (c) 2025 Huawei Technologies Co.,Ltd.
*
* Vision SDK is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
*
* http://license.coscl.org.cn/MulanPSL2
*
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
* -------------------------------------------------------------------------
* Description: Global Operation Map for operator preload.
* Author: MindX SDK
* Create: 2023
* History: NA
*/
#ifndef MXBASE_GLOBALOPMAP_H
#define MXBASE_GLOBALOPMAP_H
#include "OperationLoaders/ConfigLoader.h"
#include "OperationLoaders/OpLoader.h"
#include "OperationLoaders/OpLoaderSplit.h"
#include "OperationLoaders/OpLoaderClip.h"
#include "OperationLoaders/OpLoaderCompare.h"
#include "OperationLoaders/OpLoaderMerge.h"
#include "OperationLoaders/OpLoaderHstack.h"
#include "OperationLoaders/OpLoaderVstack.h"
#include "OperationLoaders/OpLoaderTile.h"
#include "OperationLoaders/OpLoaderRotate.h"
#include "OperationLoaders/OpLoaderTranspose.h"
#include "OperationLoaders/OpLoaderConvertTo.h"
#include "OperationLoaders/OpLoaderReduce.h"
#include "OperationLoaders/OpLoaderSortIdx.h"
#include "OperationLoaders/OpLoaderSort.h"
#include "OperationLoaders/OpLoaderDivide.h"
#include "OperationLoaders/OpLoaderMultiply.h"
namespace MxBase {
class GlobalOpMap {
public:
GlobalOpMap();
explicit GlobalOpMap(std::string configFile);
GlobalOpMap(const GlobalOpMap&) = delete;
GlobalOpMap& operator=(const GlobalOpMap&) = delete;
~GlobalOpMap();
APP_ERROR LoadConfig(std::string configFile);
APP_ERROR InitLoaderMap();
APP_ERROR LoadAllOperations();
private:
std::map<std::string, OpLoader *> g_LoaderMap;
ConfigLoader *configLoader = nullptr;
OpLoader *opLoaderAdd = nullptr;
OpLoader *opLoaderSub = nullptr;
OpLoaderDivide *opLoaderDiv = nullptr;
OpLoaderMultiply *opLoaderMul = nullptr;
OpLoader *opLoaderPow = nullptr;
OpLoader *opLoaderSqr = nullptr;
OpLoader *opLoaderExp = nullptr;
OpLoader *opLoaderLog = nullptr;
OpLoaderSplit *opLoaderSplit = nullptr;
OpLoaderClip *opLoaderClip = nullptr;
OpLoaderCompare *opLoaderCompare = nullptr;
OpLoader *opLoaderBitwiseAnd = nullptr;
OpLoader *opLoaderBitwiseOr = nullptr;
OpLoader *opLoaderBitwiseXor = nullptr;
OpLoaderMerge *opLoaderMerge = nullptr;
OpLoaderHstack *opLoaderHstack = nullptr;
OpLoaderVstack *opLoaderVstack = nullptr;
OpLoaderTile *opLoaderTile = nullptr;
OpLoaderRotate *opLoaderRotate = nullptr;
OpLoaderTranspose *opLoaderTranspose = nullptr;
OpLoader *opLoaderSqrt = nullptr;
OpLoader *opLoaderThresholdBinary = nullptr;
OpLoader *opLoaderAddWeighted = nullptr;
OpLoader *opLoaderAbsDiff = nullptr;
OpLoader *opLoaderMRGBA = nullptr;
OpLoader *opLoaderAbs = nullptr;
OpLoader *opLoaderScaleAdd = nullptr;
OpLoader *opLoaderMin = nullptr;
OpLoader *opLoaderMax = nullptr;
OpLoaderConvertTo *opLoaderConvertTo = nullptr;
OpLoaderReduce *opLoaderReduce = nullptr;
OpLoaderSortIdx *opLoaderSortIdx = nullptr;
OpLoaderSort *opLoaderSort = nullptr;
OpLoader *opLoaderRescale = nullptr;
bool useConfig = false;
};
}
#endif