本文整理汇总了C++中Row::erase方法的典型用法代码示例。如果您正苦于以下问题:C++ Row::erase方法的具体用法?C++ Row::erase怎么用?C++ Row::erase使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Row
的用法示例。
在下文中一共展示了Row::erase方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: genQuicklookRow
void genQuicklookRow(sqlite3_stmt* stmt, Row& r) {
for (int i = 0; i < sqlite3_column_count(stmt); i++) {
auto column_name = std::string(sqlite3_column_name(stmt, i));
auto column_type = sqlite3_column_type(stmt, i);
if (column_type == SQLITE_TEXT) {
auto value = sqlite3_column_text(stmt, i);
if (value != nullptr) {
r[column_name] = std::string((const char*)value);
}
} else if (column_type == SQLITE_INTEGER) {
// Handle INTEGER columns explicitly to handle the date-value offset.
auto value = sqlite3_column_int(stmt, i);
if (column_name == "last_hit_date") {
value += kReferenceDateOffset;
}
r[column_name] = INTEGER(value);
} else if (column_type == SQLITE_BLOB) {
// Handle BLOB values explicitly to avoid the default char* termination
// for binary-plist data.
auto getField = [](const pt::ptree& tree, const std::string& field) {
if (field == "mtime" && tree.count(field) > 0) {
// Apply a special case for embedded date-value fields.
return INTEGER(tree.get<size_t>(field) + kReferenceDateOffset);
}
return (tree.count(field) > 0) ? tree.get<std::string>(field) : "";
};
if (column_name == "version") {
pt::ptree tree;
auto version = std::string((const char*)sqlite3_column_blob(stmt, i),
sqlite3_column_bytes(stmt, i));
if (parsePlistContent(version, tree)) {
r["mtime"] = getField(tree, "date");
r["size"] = getField(tree, "size");
r["label"] = getField(tree, "gen");
}
}
}
}
// Transform the folder/file_name into an aggregate path.
r["path"] = std::move(r["folder"]) + "/" + std::move(r["file_name"]);
r.erase("folder");
r.erase("file_name");
// Transform the encoded fs_id.
auto details = osquery::split(r["fs_id"], "=.");
if (details.size() == 4) {
r["volume_id"] = details[2];
r["inode"] = details[3];
}
}
示例2: engine
void Constant::engine(int y, int x, int r, ChannelMask channels, Row& row)
{
for (int i = 4; i--; )
if (intersect(channels, channel[i])) {
float C = color[i];
if (C) {
float* TO = row.writable(channel[i]) + x;
float* END = TO + (r - x);
while (TO < END)
*TO++ = C;
}
else {
row.erase(channel[i]);
}
}
}
示例3: engine
void AppendClip::engine(int y, int x, int r, ChannelMask channels, Row& out)
{
if (!weight0) {
out.erase(channels);
return;
}
input(input0)->get(y, x, r, channels, out);
if (weight1) {
Row in(x, r);
input(input1)->get(y, x, r, channels, in);
foreach (z, channels) {
const float* A = out[z] + x;
const float* B = in[z] + x;
float* C = out.writable(z) + x;
float* E = C + (r - x);
while (C < E)
*C++ = *A++ *weight0 + *B++ *weight1;
}
}
else if (weight0 < 1) {
示例4: engine
void engine(int y, int x, int r, ChannelMask channels, Row& row) {
if (!haveImage_)
iop->internalError("engine called, but haveImage_ is false");
if (aborted()) {
row.erase(channels);
return;
}
const bool doAlpha = channels.contains(Chan_Alpha);
if (flip_)
y = height() - y - 1;
if (lastMipLevel_) { // Mip level other than 0
const int mipW = oiioInput_->spec().width;
const int mipMult = width() / mipW;
y = y * oiioInput_->spec().height / height();
const int bufX = x ? x / mipMult : 0;
const int bufR = r / mipMult;
const int bufW = bufR - bufX;
std::vector<float> chanBuf(bufW);
float* chanStart = &chanBuf[0];
const int bufStart = y * mipW * chanCount_ + bufX * chanCount_;
const float* alpha = doAlpha ? &imageBuf_[bufStart + chanMap_[Chan_Alpha]] : NULL;
foreach (z, channels) {
from_float(z, &chanBuf[0], &imageBuf_[bufStart + chanMap_[z]],
alpha, bufW, chanCount_);
float* OUT = row.writable(z);
for (int stride = 0, c = 0; stride < bufW; stride++, c = 0)
for (; c < mipMult; c++)
*OUT++ = *(chanStart + stride);
}
}
示例5: engine
void LensDistort::engine( int y, int x, int r, ChannelMask channels, Row & outrow )
{
// Provide an early-out for any black rows.
bool blackOutside = info().black_outside();
if( blackOutside && ( y == info().t()-1 || y == info().y() ) )
{
outrow.erase( channels );
return;
}
const Info &info = input0().info();
const double h( format().height() );
const double w( format().width() );
const double v( double(y)/h );
double x_min = std::numeric_limits<double>::max();
double x_max = std::numeric_limits<double>::min();
double y_min = std::numeric_limits<double>::max();
double y_max = std::numeric_limits<double>::min();
// Work out which of the array of lens models we should use depending on the current thread.
int lensIdx = 0;
const Thread::ThreadInfo * f = Thread::thisThread();
if( f ) lensIdx=f->index;
// Clamp the index to the array range.
lensIdx = lensIdx > m_nThreads ? 0 : lensIdx;
// Create an array of distorted values that we will populate.
Imath::V2d distort[r-x];
// Thread safe read of distortion data.
{
Guard l( m_locks[lensIdx] );
// Distort each pixel on the row, store the result in an array and track the bounding box.
for( int i = x; i < r; i++ )
{
double u = (i+0.0)/w;
Imath::V2d &dp( distort[i-x] );
Imath::V2d p(u, v);
if( m_mode )
{
dp = m_model[lensIdx]->distort( p );
}
else
{
dp = m_model[lensIdx]->undistort( p );
}
dp.x *= w;
dp.y *= h;
// Clamp our distorted values to the bounding box.
dp.x = std::max( double(info.x()), dp.x );
dp.y = std::max( double(info.y()), dp.y );
dp.x = std::min( double(info.r()-1), dp.x );
dp.y = std::min( double(info.t()-1), dp.y );
x_min = std::min( x_min, dp.x );
y_min = std::min( y_min, dp.y );
x_max = std::max( x_max, dp.x );
y_max = std::max( y_max, dp.y );
}
}
// Now we know which pixels we'll need, request them!
y_max++;
x_max++;
DD::Image::Pixel out(channels);
// Lock the tile into the cache
DD::Image::Tile t( input0(), IECore::fastFloatFloor( x_min ), IECore::fastFloatFloor( y_min ), IECore::fastFloatCeil( x_max ), IECore::fastFloatCeil( y_max ), channels );
// Write the black outside pixels.
if( blackOutside )
{
foreach ( z, channels )
{
outrow.writable(z)[x] = 0.f;
outrow.writable(z)[r-1] = 0.f;
}
}