本文整理汇总了C++中closer函数的典型用法代码示例。如果您正苦于以下问题:C++ closer函数的具体用法?C++ closer怎么用?C++ closer使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了closer函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: Error
void GifImage::readMetadata()
{
#ifdef DEBUG
std::cerr << "Exiv2::GifImage::readMetadata: Reading GIF file " << io_->path() << "\n";
#endif
if (io_->open() != 0)
{
throw Error(9, io_->path(), strError());
}
IoCloser closer(*io_);
// Ensure that this is the correct image type
if (!isGifType(*io_, true))
{
if (io_->error() || io_->eof()) throw Error(14);
throw Error(3, "GIF");
}
clearMetadata();
byte buf[4];
if (io_->read(buf, sizeof(buf)) == sizeof(buf))
{
pixelWidth_ = getShort(buf, littleEndian);
pixelHeight_ = getShort(buf + 2, littleEndian);
}
} // GifImage::readMetadata
开发者ID:FihlaTV,项目名称:Satires,代码行数:25,代码来源:gifimage.cpp
示例2: Error
void XmpSidecar::readMetadata()
{
#ifdef DEBUG
std::cerr << "Reading XMP file " << io_->path() << "\n";
#endif
if (io_->open() != 0) {
throw Error(9, io_->path(), strError());
}
IoCloser closer(*io_);
// Ensure that this is the correct image type
if (!isXmpType(*io_, false)) {
if (io_->error() || io_->eof()) throw Error(14);
throw Error(3, "XMP");
}
// Read the XMP packet from the IO stream
std::string xmpPacket;
const long len = 64 * 1024;
byte buf[len];
long l;
while ((l = io_->read(buf, len)) > 0) {
xmpPacket.append(reinterpret_cast<char*>(buf), l);
}
if (io_->error()) throw Error(14);
clearMetadata();
xmpPacket_ = xmpPacket;
if (xmpPacket_.size() > 0 && XmpParser::decode(xmpData_, xmpPacket_)) {
#ifndef SUPPRESS_WARNINGS
EXV_WARNING << "Failed to decode XMP metadata.\n";
#endif
}
copyXmpToIptc(xmpData_, iptcData_);
copyXmpToExif(xmpData_, exifData_);
} // XmpSidecar::readMetadata
开发者ID:obklar,项目名称:exiv2,代码行数:33,代码来源:xmpsidecar.cpp
示例3: closer
void RafImage::readMetadata()
{
#ifdef DEBUG
std::cerr << "Reading RAF file " << io_->path() << "\n";
#endif
if (io_->open() != 0) throw Error(9, io_->path(), strError());
IoCloser closer(*io_);
// Ensure that this is the correct image type
if (!isRafType(*io_, false)) {
if (io_->error() || io_->eof()) throw Error(14);
throw Error(3, "RAF");
}
byte const* pData = io_->mmap();
long size = io_->size();
if (size < 88 + 4) throw Error(14); // includes the test for -1
uint32_t const start = getULong(pData + 84, bigEndian) + 12;
if (static_cast<uint32_t>(size) < start) throw Error(14);
clearMetadata();
ByteOrder bo = TiffParser::decode(exifData_,
iptcData_,
xmpData_,
pData + start,
size - start);
exifData_["Exif.Image2.JPEGInterchangeFormat"] = getULong(pData + 84, bigEndian);
exifData_["Exif.Image2.JPEGInterchangeFormatLength"] = getULong(pData + 88, bigEndian);
setByteOrder(bo);
} // RafImage::readMetadata
开发者ID:FihlaTV,项目名称:Satires,代码行数:29,代码来源:rafimage.cpp
示例4: Image
TiffImage::TiffImage(BasicIo::AutoPtr io, bool create)
: Image(mdExif | mdComment), io_(io)
{
if (create) {
IoCloser closer(*io_);
io_->open();
}
} // TiffImage::TiffImage
开发者ID:obklar,项目名称:exiv2,代码行数:8,代码来源:tiffimage.cpp
示例5: goodLeft
int goodLeft(Cell maze[][16],int mx,int my,int dir) {
switch (dir) {
case EAST:
return (openNorth(maze,mx,my) && closer(&maze[mx][my],&maze[mx][my + 1]));
break;
case SOUTH:
return (openEast(maze,mx,my) && closer(&maze[mx][my],&maze[mx + 1][my]));
break;
case WEST:
return (openSouth(maze,mx,my) && closer(&maze[mx][my],&maze[mx][my - 1]));
break;
case NORTH:
return (openWest(maze,mx,my) && closer(&maze[mx][my],&maze[mx - 1][my]));
break;
default:
return 0;
}
}
开发者ID:dmaricon,项目名称:Micromouse,代码行数:18,代码来源:mouse.c
示例6: _getifaddrs
static int
_getifaddrs(int domain, char* buffer, size_t len, struct ifaddrs** previous)
{
int socket = ::socket(domain, SOCK_DGRAM, 0);
if (socket < 0)
return -1;
FileDescriptorCloser closer(socket);
// Get interfaces configuration
ifconf config;
config.ifc_buf = buffer;
config.ifc_len = len;
if (ioctl(socket, SIOCGIFCONF, &config, sizeof(struct ifconf)) < 0)
return -1;
ifreq* interfaces = (ifreq*)buffer;
ifreq* end = (ifreq*)(buffer + config.ifc_len);
while (interfaces < end) {
struct ifaddrs* current = new(std::nothrow) ifaddrs();
if (current == NULL) {
errno = B_NO_MEMORY;
return -1;
}
// Chain this interface with the next one
current->ifa_next = *previous;
*previous = current;
current->ifa_name = strdup(interfaces[0].ifr_name);
current->ifa_addr = copy_address(interfaces[0].ifr_addr);
current->ifa_netmask = NULL;
current->ifa_dstaddr = NULL;
current->ifa_data = NULL;
ifreq request;
strlcpy(request.ifr_name, interfaces[0].ifr_name, IF_NAMESIZE);
if (ioctl(socket, SIOCGIFFLAGS, &request, sizeof(struct ifreq)) == 0)
current->ifa_flags = request.ifr_flags;
if (ioctl(socket, SIOCGIFNETMASK, &request, sizeof(struct ifreq))
== 0) {
current->ifa_netmask = copy_address(request.ifr_mask);
}
if (ioctl(socket, SIOCGIFDSTADDR, &request, sizeof(struct ifreq))
== 0) {
current->ifa_dstaddr = copy_address(request.ifr_dstaddr);
}
// Move on to next interface
interfaces = (ifreq*)((uint8_t*)interfaces
+ _SIZEOF_ADDR_IFREQ(interfaces[0]));
}
return 0;
}
开发者ID:looncraz,项目名称:haiku,代码行数:56,代码来源:getifaddrs.cpp
示例7: Image
XmpSidecar::XmpSidecar(BasicIo::AutoPtr io, bool create)
: Image(ImageType::xmp, mdXmp, io)
{
if (create) {
if (io_->open() == 0) {
IoCloser closer(*io_);
io_->write(reinterpret_cast<const byte*>(xmlHeader), xmlHdrCnt);
}
}
} // XmpSidecar::XmpSidecar
开发者ID:obklar,项目名称:exiv2,代码行数:10,代码来源:xmpsidecar.cpp
示例8: find_toplevel
I find_toplevel(char const c, I i, I const e)
{
for(;;)
{
if(i == e) return e;
else if(*i == c) return i;
else if(char const cl = closer(*i)) i = find_toplevel(cl, i+1, e)+1;
else ++i;
}
}
开发者ID:Bigcheese,项目名称:geordi,代码行数:10,代码来源:bark.hpp
示例9: TRACE
ON_2dPoint
BBNode::getClosestPointEstimate(const ON_3dPoint &pt, ON_Interval &u, ON_Interval &v)
{
if (isLeaf()) {
double uvs[5][2] = {{m_u.Min(), m_v.Min()}, {m_u.Max(), m_v.Min()},
{m_u.Max(), m_v.Max()}, {m_u.Min(), m_v.Max()},
{m_u.Mid(), m_v.Mid()}
}; /* include the estimate */
ON_3dPoint corners[5];
const ON_Surface *surf = m_face->SurfaceOf();
u = m_u;
v = m_v;
/* ??? pass these in from SurfaceTree::surfaceBBox() to avoid
* this recalculation?
*/
if (!surf->EvPoint(uvs[0][0], uvs[0][1], corners[0]) ||
!surf->EvPoint(uvs[1][0], uvs[1][1], corners[1]) ||
!surf->EvPoint(uvs[2][0], uvs[2][1], corners[2]) ||
!surf->EvPoint(uvs[3][0], uvs[3][1], corners[3]))
{
throw new std::exception(); /* FIXME */
}
corners[4] = BBNode::m_estimate;
/* find the point on the surface closest to pt */
size_t mini = 0;
double mindist = pt.DistanceTo(corners[mini]);
double tmpdist;
for (size_t i = 1; i < 5; i++) {
tmpdist = pt.DistanceTo(corners[i]);
TRACE("\t" << mindist << " < " << tmpdist);
if (tmpdist < mindist) {
mini = i;
mindist = tmpdist;
}
}
TRACE("Closest: " << mindist << "; " << PT2(uvs[mini]));
return ON_2dPoint(uvs[mini][0], uvs[mini][1]);
} else {
if (m_children.size() > 0) {
BBNode *closestNode = m_children[0];
for (size_t i = 1; i < m_children.size(); i++) {
closestNode = closer(pt, closestNode, m_children[i]);
TRACE("\t" << PT(closestNode->m_estimate));
}
return closestNode->getClosestPointEstimate(pt, u, v);
}
throw new std::exception();
}
}
开发者ID:behollis,项目名称:brlcad-svn-rev65072-gsoc2015,代码行数:52,代码来源:BBNode.cpp
示例10: Error
void MrwImage::readMetadata()
{
#ifdef DEBUG
std::cerr << "Reading MRW file " << io_->path() << "\n";
#endif
if (io_->open() != 0) {
throw Error(9, io_->path(), strError());
}
IoCloser closer(*io_);
// Ensure that this is the correct image type
if (!isMrwType(*io_, false)) {
if (io_->error() || io_->eof()) throw Error(14);
throw Error(3, "MRW");
}
clearMetadata();
// Find the TTW block and read it into a buffer
uint32_t const len = 8;
byte tmp[len];
io_->read(tmp, len);
uint32_t pos = len;
uint32_t const end = getULong(tmp + 4, bigEndian);
pos += len;
if (pos > end) throw Error(14);
io_->read(tmp, len);
if (io_->error() || io_->eof()) throw Error(14);
while (memcmp(tmp + 1, "TTW", 3) != 0) {
uint32_t const siz = getULong(tmp + 4, bigEndian);
pos += siz;
if (pos > end) throw Error(14);
io_->seek(siz, BasicIo::cur);
if (io_->error() || io_->eof()) throw Error(14);
pos += len;
if (pos > end) throw Error(14);
io_->read(tmp, len);
if (io_->error() || io_->eof()) throw Error(14);
}
DataBuf buf(getULong(tmp + 4, bigEndian));
io_->read(buf.pData_, buf.size_);
if (io_->error() || io_->eof()) throw Error(14);
ByteOrder bo = TiffParser::decode(exifData_,
iptcData_,
xmpData_,
buf.pData_,
buf.size_);
setByteOrder(bo);
} // MrwImage::readMetadata
开发者ID:IAmTheOneTheyCallNeo,项目名称:android_external_Focal,代码行数:52,代码来源:mrwimage.cpp
示例11: BB_DEBUG_LOG
void Socket::Close() {
BB_DEBUG_LOG("socket close:%d", GetId());
auto& closer = GetCloseHandler();
if (closer) closer();
if (is_open()) {
boost::system::error_code ec;
this->shutdown(boost::asio::ip::tcp::socket::shutdown_both, ec);
if (ec && ec != boost::system::errc::not_connected) {
BB_ERROR_LOG("shutdown socket error:%s", ec.message().c_str());
} else {
this->close();
}
}
}
开发者ID:as-xjc,项目名称:bamboo,代码行数:15,代码来源:socket.cpp
示例12: Error
void PgfImage::writeMetadata()
{
if (io_->open() != 0)
{
throw Error(9, io_->path(), strError());
}
IoCloser closer(*io_);
BasicIo::AutoPtr tempIo(new MemIo);
assert (tempIo.get() != 0);
doWriteMetadata(*tempIo); // may throw
io_->close();
io_->transfer(*tempIo); // may throw
} // PgfImage::writeMetadata
开发者ID:jfiguinha,项目名称:Regards,代码行数:15,代码来源:pgfimage.cpp
示例13: Error
void XmpSidecar::writeMetadata()
{
if (io_->open() != 0) {
throw Error(9, io_->path(), strError());
}
IoCloser closer(*io_);
if (writeXmpFromPacket() == false) {
copyExifToXmp(exifData_, xmpData_);
copyIptcToXmp(iptcData_, xmpData_);
// #1112 - restore dates if they lost their TZ info
for ( Exiv2::Dictionary_i it = dates_.begin() ; it != dates_.end() ; it++) {
std::string sKey = it->first;
Exiv2::XmpKey key(sKey);
if ( xmpData_.findKey(key) != xmpData_.end() ) {
std::string value_orig(it->second);
std::string value_now(xmpData_[sKey].value().toString());
// std::cout << key << " -> " << value_now << " => " << value_orig << std::endl;
if ( value_orig.find(value_now.substr(0,10)) != std::string::npos ) {
xmpData_[sKey] = value_orig ;
}
}
}
if (XmpParser::encode(xmpPacket_, xmpData_,
XmpParser::omitPacketWrapper|XmpParser::useCompactFormat) > 1) {
#ifndef SUPPRESS_WARNINGS
EXV_ERROR << "Failed to encode XMP metadata.\n";
#endif
}
}
if (xmpPacket_.size() > 0) {
if (xmpPacket_.substr(0, 5) != "<?xml") {
xmpPacket_ = xmlHeader + xmpPacket_ + xmlFooter;
}
BasicIo::AutoPtr tempIo(io_->temporary()); // may throw
assert(tempIo.get() != 0);
// Write XMP packet
if ( tempIo->write(reinterpret_cast<const byte*>(xmpPacket_.data()),
static_cast<long>(xmpPacket_.size()))
!= static_cast<long>(xmpPacket_.size())) throw Error(21);
if (tempIo->error()) throw Error(21);
io_->close();
io_->transfer(*tempIo); // may throw
}
} // XmpSidecar::writeMetadata
开发者ID:FihlaTV,项目名称:Satires,代码行数:48,代码来源:xmpsidecar.cpp
示例14: Error
void TgaImage::readMetadata()
{
#ifdef DEBUG
std::cerr << "Exiv2::TgaImage::readMetadata: Reading TARGA file " << io_->path() << "\n";
#endif
if (io_->open() != 0)
{
throw Error(9, io_->path(), strError());
}
IoCloser closer(*io_);
// Ensure that this is the correct image type
if (!isTgaType(*io_, false))
{
if (io_->error() || io_->eof()) throw Error(14);
throw Error(3, "TGA");
}
clearMetadata();
/*
The TARGA header goes as follows -- all numbers are in little-endian byte order:
offset length name description
====== ======= ======================= ===========
0 1 byte ID length length of image ID (0 to 255)
1 1 byte color map type 0 = no color map; 1 = color map included
2 1 byte image type 0 = no image;
1 = uncompressed color-mapped;
2 = uncompressed true-color;
3 = uncompressed black-and-white;
9 = RLE-encoded color mapped;
10 = RLE-encoded true-color;
11 = RLE-encoded black-and-white
3 5 bytes color map specification
8 2 bytes x-origin of image
10 2 bytes y-origin of image
12 2 bytes image width
14 2 bytes image height
16 1 byte pixel depth
17 1 byte image descriptor
*/
byte buf[18];
if (io_->read(buf, sizeof(buf)) == sizeof(buf))
{
pixelWidth_ = getShort(buf + 12, littleEndian);
pixelHeight_ = getShort(buf + 14, littleEndian);
}
} // TgaImage::readMetadata
开发者ID:dtbinh,项目名称:dviz,代码行数:47,代码来源:tgaimage.cpp
示例15: closer
status_t
BNetworkRoster::AddInterface(const char* name)
{
int socket = ::socket(AF_INET, SOCK_DGRAM, 0);
if (socket < 0)
return errno;
FileDescriptorCloser closer(socket);
ifaliasreq request;
memset(&request, 0, sizeof(ifaliasreq));
strlcpy(request.ifra_name, name, IF_NAMESIZE);
if (ioctl(socket, SIOCAIFADDR, &request, sizeof(request)) != 0)
return errno;
return B_OK;
}
开发者ID:SummerSnail2014,项目名称:haiku,代码行数:18,代码来源:NetworkRoster.cpp
注:本文中的closer函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论