12#include <vendored/jThread/jThread.h>
230 std::numeric_limits<std::streamsize>::max(),
241 std::thread
io = std::thread
288 std::stringstream &
ss,
298 <<
" failed to read line"
299 <<
"\n Line reads: \""
302 <<
"\n Context: "+context;
303 throw std::runtime_error
Specification for the structure file interface.
Definition structure.h:26
uint64_t atomsRead
Definition structure.h:187
void cachePositions()
Definition structure.h:249
glm::vec3 cellA
Definition structure.h:189
virtual void initialise()=0
glm::vec3 cellB
Definition structure.h:190
uint64_t framePosition() const
Get the current frame index.
Definition structure.h:108
virtual void beginning()
Definition structure.h:199
bool blockingReads
Definition structure.h:179
virtual void getFrame()=0
virtual void skipFrames(uint64_t count)
Definition structure.h:217
bool cacheComplete
Definition structure.h:193
bool frameReadComplete() const
If the frame has been fully read into atoms.
Definition structure.h:141
uint64_t currentFrame
Definition structure.h:185
glm::vec3 getCellC() const
Get the c cell vector.
Definition structure.h:168
uint64_t frames
Definition structure.h:182
glm::vec3 getCellB() const
Get the b cell vector.
Definition structure.h:161
void skipFrame()
Definition structure.h:208
std::vector< Atom > atoms
The Atoms read in the current frame.
Definition structure.h:147
uint64_t timeStep
Definition structure.h:184
std::map< Element, glm::vec4 > colourMap
Colour map from Element to colour.
Definition structure.h:174
glm::vec3 getCellA() const
Get the a cell vector.
Definition structure.h:154
virtual ~Structure()=default
void scanPositions()
Definition structure.h:237
bool framePositionsLoaded() const
Check if frames start positions have been loaded.
Definition structure.h:126
std::ifstream filestream
Definition structure.h:180
Structure(std::filesystem::path path, bool blocking=false)
Definition structure.h:29
uint64_t linesPerFrame
Definition structure.h:183
virtual void readFrame(uint64_t frame)
Read a single frame at position frame, and increment the current frame.
Definition structure.h:63
std::filesystem::path path
Definition structure.h:178
uint64_t natoms
Definition structure.h:181
void skipLine(std::ifstream &in)
Definition structure.h:226
glm::vec3 cellC
Definition structure.h:191
uint64_t frameCount() const
Get the number of frames.
Definition structure.h:101
uint64_t frameReadProgress() const
Progress of the current frame read.
Definition structure.h:133
void checkRead(std::stringstream &ss, std::string lastInput, std::string context)
Definition structure.h:287
uint64_t linesInFile
Definition structure.h:186
virtual uint64_t atomCount() const
Get the number of atoms in the file.
Definition structure.h:50
void countContentLinesInFile()
Definition structure.h:272
std::map< uint64_t, uint64_t > framePositions
Definition structure.h:195
const std::map< Element, glm::vec4 > CPK_COLOURS
Corey–Pauling–Koltun colourings.
Definition colour.h:18
glm::vec< L, float, glm::qualifier::highp > vec
Definition commandLine.h:214