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; }
MaskSequence::MaskSequence(const Mask &frame, uint size_t) { _frames.reserve(size_t); _frames.push_back(frame); _size = frame.size(); _size.size_t = 1; }
// 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; }