Exemplo n.º 1
0
bool MaskSequence::add(const Mask &frame)	// use &&
{
	if (frame.size().size_x == _size.size_x && frame.size().size_y == _size.size_y) {
		_frames.push_back(frame);
		_size.size_t++;
		return true;
	}

	return false;
}
Exemplo n.º 2
0
MaskSequence::MaskSequence(const Mask &frame, uint size_t)
{
	_frames.reserve(size_t);
	_frames.push_back(frame);

	_size = frame.size();
	_size.size_t = 1;
}
Exemplo n.º 3
0
    // Resolve a relative path (which may span over multiple server address spaces!)
    //==============================================================================================
    Status Resolver::resolveBrowsePaths(
            vector<BrowsePath>&       browsePaths,
            Mask&                     mask,
            vector<ExpandedNodeId>&   results,
            vector<Status>&           statuses)
    {
        logger_->debug("Resolving %d browse paths", browsePaths.size());

        // declare the return status
        Status ret;

        // declare the number of browsePaths
        size_t noOfBrowsePaths = browsePaths.size();

        // resize the output arguments
        results.resize(noOfBrowsePaths);
        statuses.resize(noOfBrowsePaths);

        // check if the mask has the correct size
        if (mask.size() != noOfBrowsePaths)
        {
            ret = UnexpectedError("Mask does not have the correct size!");
        }
        else if (mask.setCount() == 0)
        {
            logger_->debug("Nothing to do, no browse paths are marked with the mask");
        }
        else
        {
            // create a request and a result
            TranslateBrowsePathsToNodeIdsRequest request;
            TranslateBrowsePathsToNodeIdsResult  result;

            for (size_t i = 0; i < noOfBrowsePaths; i++)
            {
                if (mask.isSet(i))
                    request.targets.push_back(
                            TranslateBrowsePathsToNodeIdsRequestTarget(browsePaths[i]));
            }

            ret = sessionFactory_->invokeRequest<TranslateBrowsePathsToNodeIdsService>(
                    request,
                    Mask(request.targets.size(), true),
                    result);

            if (ret.isGood())
            {
                // fill the remainingBrowsePaths and remainingMask
                for (size_t i = 0, j = 0; i < noOfBrowsePaths; i++)
                {
                    if (mask.isSet(i))
                    {
                        processBrowsePathsResolutionResultTarget(
                                result.targets[j], i, browsePaths, mask, results, statuses);

                        // increment the counter for the 'set' results
                        j++;
                    }
                }

                // check if we need to perform another (recursive!) translation
                if (mask.setCount() > 0)
                    ret = resolveBrowsePaths(browsePaths, mask, results, statuses);
            }
        }

        return ret;
    }