void Transformation::updateStatus(TransformationStatus& status) const
{
    if (status.source_local != sourceFrame)
        status.source_local = sourceFrame;
    if (status.target_local != targetFrame)
        status.target_local = targetFrame;
    if (status.source_global != getSourceFrame())
        status.source_global = getSourceFrame();
    if (status.target_global != getTargetFrame())
        status.target_global = getTargetFrame();
    status.last_generated_value = lastGeneratedValue;
    status.chain_length = transformationChain.size();
    status.generated_transformations = generatedTransformations;
    status.failed_no_sample = failedNoSample;
    status.failed_no_chain = failedNoChain;
    status.failed_interpolation_impossible = failedInterpolationImpossible;
}
// >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>   <LaserScanToROSPointcloud-functions>   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
void LaserScanToROSPointcloud::initNewPointCloud(size_t number_of_reserved_points) {
	pointcloud_ = sensor_msgs::PointCloud2Ptr(new sensor_msgs::PointCloud2());
	resetNumberOfPointsInCloud();
	resetNumberOfScansAsembledInCurrentCloud();

	pointcloud_->header.seq = getNumberOfPointcloudsCreated();
	pointcloud_->header.stamp = ros::Time::now();
	pointcloud_->header.frame_id = getTargetFrame();
	pointcloud_->height = 1;
	pointcloud_->width = 0;
	pointcloud_->fields.clear();
	pointcloud_->fields.resize(include_laser_intensity_ ? 4 : 3);
	pointcloud_->fields[0].name = "x";
	pointcloud_->fields[0].offset = 0;
	pointcloud_->fields[0].datatype = sensor_msgs::PointField::FLOAT32;
	pointcloud_->fields[0].count = 1;
	pointcloud_->fields[1].name = "y";
	pointcloud_->fields[1].offset = 4;
	pointcloud_->fields[1].datatype = sensor_msgs::PointField::FLOAT32;
	pointcloud_->fields[1].count = 1;
	pointcloud_->fields[2].name = "z";
	pointcloud_->fields[2].offset = 8;
	pointcloud_->fields[2].datatype = sensor_msgs::PointField::FLOAT32;
	pointcloud_->fields[2].count = 1;
	pointcloud_->point_step = 12;

	if (include_laser_intensity_) {
		pointcloud_->fields[3].name = "intensity";
		pointcloud_->fields[3].offset = 12;
		pointcloud_->fields[3].datatype = sensor_msgs::PointField::FLOAT32;
		pointcloud_->fields[3].count = 1;
		pointcloud_->point_step += 4;
	}

	pointcloud_->row_step = 0;
	pointcloud_->data.reserve(number_of_reserved_points * pointcloud_->point_step);
	pointcloud_->is_dense = true;
	incrementNumberOfPointCloudsCreated();
}
static void reportUnsafeJavaScriptAccess(v8::Local<v8::Object> host, v8::AccessType type, v8::Local<v8::Value> data)
{
    Frame* target = getTargetFrame(host, data);
    if (target)
        V8Proxy::reportUnsafeAccessTo(target, V8Proxy::ReportLater);
}