ACloudViewer  3.9.4
A Modern Library for 3D Data Processing
e57::BlobNodeImpl Class Reference

#include <BlobNodeImpl.h>

Inheritance diagram for e57::BlobNodeImpl:
Collaboration diagram for e57::BlobNodeImpl:

Public Member Functions

 BlobNodeImpl (ImageFileImplWeakPtr destImageFile, int64_t byteCount)
 
 BlobNodeImpl (ImageFileImplWeakPtr destImageFile, int64_t fileOffset, int64_t length)
 
 ~BlobNodeImpl () override=default
 
NodeType type () const override
 
bool isTypeEquivalent (NodeImplSharedPtr ni) override
 
bool isDefined (const ustring &pathName) override
 
int64_t byteCount ()
 
void read (uint8_t *buf, int64_t start, size_t count)
 
void write (uint8_t *buf, int64_t start, size_t count)
 
void checkLeavesInSet (const StringSet &pathNames, NodeImplSharedPtr origin) override
 
void writeXml (ImageFileImplSharedPtr imf, CheckedFile &cf, int indent, const char *forcedFieldName=nullptr) override
 
void dump (int indent=0, std::ostream &os=std::cout) const override
 
- Public Member Functions inherited from e57::NodeImpl
void checkImageFileOpen (const char *srcFileName, int srcLineNumber, const char *srcFunctionName) const
 
bool isRoot () const
 
NodeImplSharedPtr parent ()
 
ustring pathName () const
 
ustring relativePathName (const NodeImplSharedPtr &origin, ustring childPathName=ustring()) const
 
ustring elementName () const
 
ImageFileImplSharedPtr destImageFile ()
 
ustring imageFileName () const
 
bool isAttached () const
 
virtual void setAttachedRecursive ()
 
void setParent (NodeImplSharedPtr parent, const ustring &elementName)
 
bool isTypeConstrained ()
 
virtual NodeImplSharedPtr get (const ustring &pathName)
 
virtual void set (const ustring &pathName, NodeImplSharedPtr ni, bool autoPathCreate=false)
 
virtual void set (const StringList &fields, unsigned level, NodeImplSharedPtr ni, bool autoPathCreate=false)
 
void checkBuffers (const std::vector< SourceDestBuffer > &sdbufs, bool allowMissing)
 
bool findTerminalPosition (const NodeImplSharedPtr &target, uint64_t &countFromLeft)
 
virtual ~NodeImpl ()=default
 

Additional Inherited Members

- Protected Member Functions inherited from e57::NodeImpl
 NodeImpl (ImageFileImplWeakPtr destImageFile)
 
NodeImploperator= (NodeImpl &n)
 
virtual NodeImplSharedPtr lookup (const ustring &)
 
NodeImplSharedPtr getRoot ()
 
- Protected Attributes inherited from e57::NodeImpl
ImageFileImplWeakPtr destImageFile_
 
NodeImplWeakPtr parent_
 
ustring elementName_
 
bool isAttached_
 

Detailed Description

Definition at line 33 of file BlobNodeImpl.h.

Constructor & Destructor Documentation

◆ BlobNodeImpl() [1/2]

e57::BlobNodeImpl::BlobNodeImpl ( ImageFileImplWeakPtr  destImageFile,
int64_t  byteCount 
)

This what caller thinks blob length is

Round segment length up to multiple of 4 bytes

Reserve space for blob in file, extend with zeros since writes will happen at later time by caller

Prepare BlobSectionHeader

Write header at beginning of section

Definition at line 35 of file BlobNodeImpl.cpp.

References byteCount(), e57::NodeImpl::destImageFile(), e57::BlobSectionHeader::dump(), and e57::BlobSectionHeader::sectionLogicalLength.

◆ BlobNodeImpl() [2/2]

e57::BlobNodeImpl::BlobNodeImpl ( ImageFileImplWeakPtr  destImageFile,
int64_t  fileOffset,
int64_t  length 
)

Init blob object that already exists in E57 file currently reading.

Init state from values read from XML

Definition at line 68 of file BlobNodeImpl.cpp.

References e57::NodeImpl::destImageFile(), and length().

◆ ~BlobNodeImpl()

e57::BlobNodeImpl::~BlobNodeImpl ( )
overridedefault

Member Function Documentation

◆ byteCount()

int64_t e57::BlobNodeImpl::byteCount ( )

Definition at line 116 of file BlobNodeImpl.cpp.

References e57::NodeImpl::checkImageFileOpen().

Referenced by BlobNodeImpl().

◆ checkLeavesInSet()

void e57::BlobNodeImpl::checkLeavesInSet ( const StringSet pathNames,
NodeImplSharedPtr  origin 
)
overridevirtual

We are a leaf node, so verify that we are listed in set. ???true for blobs? what exception get if try blob in compressedvector?

Implements e57::NodeImpl.

Definition at line 169 of file BlobNodeImpl.cpp.

References e57::E57_ERROR_NO_BUFFER_FOR_ELEMENT, E57_EXCEPTION2, e57::NodeImpl::pathName(), and e57::NodeImpl::relativePathName().

◆ dump()

void e57::BlobNodeImpl::dump ( int  indent = 0,
std::ostream &  os = std::cout 
) const
overridevirtual

Reimplemented from e57::NodeImpl.

Definition at line 205 of file BlobNodeImpl.cpp.

References e57::NodeImpl::dump(), QtCompat::endl(), e57::space(), and type().

◆ isDefined()

bool e57::BlobNodeImpl::isDefined ( const ustring pathName)
overridevirtual

We have no sub-structure, so if path not empty return false

Implements e57::NodeImpl.

Definition at line 108 of file BlobNodeImpl.cpp.

References e57::NodeImpl::pathName().

◆ isTypeEquivalent()

bool e57::BlobNodeImpl::isTypeEquivalent ( NodeImplSharedPtr  ni)
overridevirtual

Same node type?

Downcast to shared_ptr<BlobNodeImpl>

blob lengths must match

ignore blob contents, doesn't have to match

Types match

Implements e57::NodeImpl.

Definition at line 83 of file BlobNodeImpl.cpp.

References e57::E57_BLOB.

◆ read()

void e57::BlobNodeImpl::read ( uint8_t *  buf,
int64_t  start,
size_t  count 
)

◆ type()

NodeType e57::BlobNodeImpl::type ( ) const
inlineoverridevirtual

Implements e57::NodeImpl.

Definition at line 40 of file BlobNodeImpl.h.

References e57::E57_BLOB.

Referenced by dump().

◆ write()

◆ writeXml()

void e57::BlobNodeImpl::writeXml ( ImageFileImplSharedPtr  imf,
CheckedFile cf,
int  indent,
const char *  forcedFieldName = nullptr 
)
overridevirtual

The documentation for this class was generated from the following files: