Пример #1
0
void Rec709ToLinearOp::modifyChannels( const Imath::Box2i &displayWindow, const Imath::Box2i &dataWindow, ChannelVector &channels )
{
	Rec709ToLinearOp::Converter converter;
	for ( ChannelVector::iterator it = channels.begin(); it != channels.end(); it++ )
	{
		despatchTypedData<Rec709ToLinearOp::Converter, TypeTraits::IsFloatVectorTypedData>( *it, converter );
	}
}
/*! @brief Report the connections for a given port.
 @param[in] flavour The format for the output.
 @param[in] portName The port to be inspected.
 @param[in] checker A function that provides for early exit from loops.
 @param[in] checkStuff The private data for the early exit function. */
static void
reportConnections(const OutputFlavour flavour,
                  const YarpString &  portName,
                  CheckFunction       checker,
                  void *              checkStuff)
{
    ODL_ENTER(); //####
    ODL_S1s("portName = ", portName); //####
    ODL_P1("checkStuff = ", checkStuff); //####
    bool          sawInputs = false;
    bool          sawOutputs = false;
    ChannelVector inputs;
    ChannelVector outputs;
    YarpString    inputsAsString;
    YarpString    outputsAsString;

    Utilities::GatherPortConnections(portName, inputs, outputs, Utilities::kInputAndOutputBoth,
                                     false, checker, checkStuff);
    if (0 < inputs.size())
    {
        for (ChannelVector::const_iterator walker(inputs.begin()); inputs.end() != walker; ++walker)
        {
            switch (flavour)
            {
                case kOutputFlavourTabs :
                    if (sawInputs)
                    {
                        inputsAsString += ", ";
                    }
                    inputsAsString += SanitizeString(walker->_portName, true);
                    switch (walker->_portMode)
                    {
                        case kChannelModeTCP :
                            inputsAsString += " TCP";
                            break;

                        case kChannelModeUDP :
                            inputsAsString += " UDP";
                            break;

                        case kChannelModeOther :
                            inputsAsString += " unknown";
                            break;

                        default :
                            break;

                    }
                    break;

                case kOutputFlavourJSON :
                    if (sawInputs)
                    {
                        inputsAsString += ", ";
                    }
                    inputsAsString += T_("{ " CHAR_DOUBLEQUOTE_ "Port" CHAR_DOUBLEQUOTE_ ": "
                                         CHAR_DOUBLEQUOTE_);
                    inputsAsString += SanitizeString(walker->_portName);
                    inputsAsString += T_(CHAR_DOUBLEQUOTE_ ", " CHAR_DOUBLEQUOTE_ "Mode"
                                         CHAR_DOUBLEQUOTE_ ": " CHAR_DOUBLEQUOTE_);
                    switch (walker->_portMode)
                    {
                        case kChannelModeTCP :
                            inputsAsString += "TCP";
                            break;

                        case kChannelModeUDP :
                            inputsAsString += "UDP";
                            break;

                        case kChannelModeOther :
                            inputsAsString += "unknown";
                            break;

                        default :
                            break;

                    }
                    inputsAsString += T_(CHAR_DOUBLEQUOTE_ " }");
                    break;

                case kOutputFlavourNormal :
                    inputsAsString += "   Input from ";
                    inputsAsString += SanitizeString(walker->_portName, true);
                    switch (walker->_portMode)
                    {
                        case kChannelModeTCP :
                            inputsAsString += " via TCP.";
                            break;

                        case kChannelModeUDP :
                            inputsAsString += " via UDP.";
                            break;

                        case kChannelModeOther :
                            inputsAsString += " via non-TCP/non-UDP.";
                            break;

                        default :
                            break;

                    }
                    inputsAsString += "\n";
                    break;

                default :
                    break;

            }
            sawInputs = true;
        }
    }
    if (0 < outputs.size())
    {
        for (ChannelVector::const_iterator walker(outputs.begin()); outputs.end() != walker;
             ++walker)
        {
            switch (flavour)
            {
                case kOutputFlavourTabs :
                    if (sawOutputs)
                    {
                        outputsAsString += ", ";
                    }
                    outputsAsString += SanitizeString(walker->_portName, true);
                    switch (walker->_portMode)
                    {
                        case kChannelModeTCP :
                            outputsAsString += " TCP";
                            break;

                        case kChannelModeUDP :
                            outputsAsString += " UDP";
                            break;

                        case kChannelModeOther :
                            outputsAsString += " unknown";
                            break;

                        default :
                            break;

                    }
                    break;

                case kOutputFlavourJSON :
                    if (sawOutputs)
                    {
                        outputsAsString += ", ";
                    }
                    outputsAsString += T_("{ " CHAR_DOUBLEQUOTE_ "Port" CHAR_DOUBLEQUOTE_ ": "
                                          CHAR_DOUBLEQUOTE_);
                    outputsAsString += SanitizeString(walker->_portName);
                    outputsAsString += T_(CHAR_DOUBLEQUOTE_ ", " CHAR_DOUBLEQUOTE_ "Mode"
                                          CHAR_DOUBLEQUOTE_ ": " CHAR_DOUBLEQUOTE_);
                    switch (walker->_portMode)
                    {
                        case kChannelModeTCP :
                            outputsAsString += "TCP";
                            break;

                        case kChannelModeUDP :
                            outputsAsString += "UDP";
                            break;

                        case kChannelModeOther :
                            outputsAsString += "unknown";
                            break;

                        default :
                            break;

                    }
                    outputsAsString += T_(CHAR_DOUBLEQUOTE_ " }");
                    break;

                case kOutputFlavourNormal :
                    outputsAsString += "   Output to ";
                    outputsAsString += SanitizeString(walker->_portName, true);
                    switch (walker->_portMode)
                    {
                        case kChannelModeTCP :
                            outputsAsString += " via TCP.";
                            break;

                        case kChannelModeUDP :
                            outputsAsString += " via UDP.";
                            break;

                        case kChannelModeOther :
                            outputsAsString += " via non-TCP/non-UDP.";
                            break;

                        default :
                            break;

                    }
                    outputsAsString += "\n";
                    break;

                default :
                    break;

            }
            sawOutputs = true;
        }
    }
    switch (flavour)
    {
        case kOutputFlavourTabs :
            cout << inputsAsString.c_str() << "\t" << outputsAsString.c_str();
            break;

        case kOutputFlavourJSON :
            cout << T_(CHAR_DOUBLEQUOTE_ "Inputs" CHAR_DOUBLEQUOTE_ ": [ ") <<
                    inputsAsString.c_str() << T_(" ], " CHAR_DOUBLEQUOTE_ "Outputs"
                                                 CHAR_DOUBLEQUOTE_ ": [ ") <<
                    outputsAsString.c_str() << " ]";
            break;

        case kOutputFlavourNormal :
            if (sawInputs || sawOutputs)
            {
                if (sawInputs)
                {
                    cout << inputsAsString.c_str();
                }
                if (sawOutputs)
                {
                    cout << outputsAsString.c_str();
                }
            }
            else
            {
                cout << "   No active connections." << endl;
            }
            break;

        default :
            break;

    }
    ODL_EXIT(); //####
} // reportConnections