* Copyright (c) , Huawei Technologies Co., Ltd. 2025-2025 .All rights reserved.
*/
#ifndef GRAPHLINEFACTORY_H
#define GRAPHLINEFACTORY_H
#include "GraphLine.h"
#include "LineOpFactory.h"
class GraphLineFactory
{
public:
GraphLine BuildGraphLine(LineType type, std::unordered_map<LineType, std::shared_ptr<LineOp>>& lineOpConfigMap)
{
GraphLine graphLine;
switch (type) {
case LineType::NORMAL:
{
graphLine.AddLineOp(lineOpConfigMap.at(LineType::NORMAL)->Clone());
graphLine.AddLineOp(lineOpConfigMap.at(LineType::SAMPLE)->Clone());
break;
}
case LineType::NORMAL_SMOOTHING:
case LineType::SMOOTHING:
{
graphLine.AddLineOp(lineOpConfigMap.at(LineType::SMOOTHING)->Clone());
graphLine.AddLineOp(lineOpConfigMap.at(LineType::SAMPLE)->Clone());
break;
}
case LineType::TOKEN:
{
graphLine.AddLineOp(lineOpConfigMap.at(LineType::NORMAL)->Clone());
graphLine.AddLineOp(lineOpConfigMap.at(LineType::SAMPLE)->Clone());
graphLine.AddLineOp(lineOpConfigMap.at(LineType::TOKEN)->Clone());
break;
}
case LineType::TOKEN_SMOOTHING:
{
graphLine.AddLineOp(lineOpConfigMap.at(LineType::SMOOTHING)->Clone());
graphLine.AddLineOp(lineOpConfigMap.at(LineType::SAMPLE)->Clone());
graphLine.AddLineOp(lineOpConfigMap.at(LineType::TOKEN)->Clone());
break;
}
case LineType::SAMPLE:
case LineType::UNKNOWN:
break;
}
return graphLine;
}
};
#endif