3#include "nodes/QConnection" 
   23            auto inputs = 
mNode->getImportNodes();
 
   24            auto input_num = inputs.size();
 
   27            for (
int i = 0; i < inputs.size(); i++)
 
   29                mNodeInport[i] = std::make_shared<QtImportNode>(inputs[i]);
 
   38            for (
int i = 0; i < fOutputs.size(); i++)
 
   40                mFieldExport[i] = std::make_shared<QtFieldData>(fOutputs[i]);
 
   47            for (
int i = 0; i < fInputs.size(); i++)
 
   49                mFieldInport[i] = std::make_shared<QtFieldData>(fInputs[i]);
 
 
   87                std::string str = inputFields[portIndex - 
mNodeInport.size()]->getClassName();
 
   89                if (str == 
"FInstance" || str == 
"FInstances")
 
  101            if (portIndex == 0) {
 
  107                std::string str = outputFields[portIndex - 1]->getClassName();
 
  109                if (str == 
"FInstance" || str == 
"FInstances")
 
 
  127    std::shared_ptr<QtNodeData>
 
  130        return port == 0 ? std::static_pointer_cast<QtNodeData>(
mNodeExport) : std::static_pointer_cast<QtNodeData>(
mFieldExport[port - 1]);
 
 
  156        Q_UNUSED(portType); Q_UNUSED(portIndex);
 
 
  176            if (portIndex == 0) {
 
 
  198        auto nodeTip = [&](
Node* node) -> QString {
 
  199            return QString::fromStdString(node->getClassInfo()->getClassName());
 
  202        auto fieldTip = [&](
FBase* f) -> QString {
 
  203            tip += 
"Class: " + f->getClassName() + 
"\n";
 
  204            tip += 
"Template: " + f->getTemplateName() + 
"\n";
 
  206            return QString::fromStdString(tip);
 
  217                return fieldTip(inputFields[portIndex - 
mNodeInport.size()]);
 
  222            if (portIndex == 0) {
 
  223                return nodeTip(
mNode.get());
 
  227                return fieldTip(outputFields[portIndex - 1]);
 
 
  244            auto node_port = std::dynamic_pointer_cast<QtExportNode>(data);
 
  246            if (node_port != 
nullptr)
 
  248                auto nd = node_port->getNode();
 
  253                    nd->disconnect(
mNodeInport[portIndex]->getNodePort());
 
  261                    nd->connect(
mNodeInport[portIndex]->getNodePort());
 
  267            auto fieldData = std::dynamic_pointer_cast<QtFieldData>(data);
 
  269            if (fieldData != 
nullptr)
 
  271                auto field = fieldData->getField();
 
 
  298                auto nodeExp = std::dynamic_pointer_cast<QtExportNode>(nodeData);
 
  300                if (nodeExp == 
nullptr)
 
  305                return nodeInp->getNodePort()->isKindOf(nodeExp->getNode().get());;
 
  307            catch (std::bad_cast)
 
  316                auto fieldExp = std::dynamic_pointer_cast<QtFieldData>(nodeData);
 
  317                if (fieldExp == 
nullptr)
 
  322                auto fIn = fieldInp->getField();
 
  323                auto fExp = fieldExp->getField();
 
  328                if (instIn != 
nullptr && instOut != 
nullptr)
 
  330                else if (instIn == 
nullptr && instOut == 
nullptr)
 
  332                    return fIn->getClassName() == fExp->getClassName() && fIn->getTemplateName() == fExp->getTemplateName();
 
  338            catch (std::bad_cast)
 
 
  354            auto portType = 
mNodeInport[portIndex]->getNodePort()->getPortType();
 
  362            return fieldInp->getField()->inputPolicy() == 
FBase::One ? ConnectionPolicy::One : ConnectionPolicy::Many;
 
 
  383        return mNode->getOutputFields();
 
 
  388        return mNode->getInputFields();
 
 
virtual bool canBeConnectedBy(InstanceBase *ins)=0
 
static const std::string className()
 
QString FormatBlockCaptionName(std::string name)
 
QString FormatDescription(std::string name)
 
QString FormatBlockPortName(std::string name)