flatten 20260225

This commit is contained in:
Timothy Prepscius
2026-02-25 12:39:24 -05:00
commit fa54be052a
315 changed files with 49791 additions and 0 deletions

173
tjp/core/pipe/obsolete/Pipe.cpp Executable file
View File

@@ -0,0 +1,173 @@
// TJP COPYRIGHT HEADER
#include "Pipe.h"
namespace tjp {
namespace core {
Pipe::~Pipe ()
{
}
PipeStream::PipeStream ()
{
writing = reading = true;
offset = 0;
size = 0;
}
PipeStream::~PipeStream ()
{
while (!buffers.empty())
{
delete[] buffers.front().first;
buffers.pop_front();
}
}
bool PipeStream::isReading () const
{
return reading;
}
bool PipeStream::isWriting () const
{
return writing;
}
void PipeStream::write (const char *buffer, size_t size)
{
char *copy = new char[size];
memcpy (copy, buffer, size);
buffers.push_back (std::pair<char *, size_t>(copy, size));
this->size += size;
}
void PipeStream::unread (const char *buffer, size_t size)
{
auto amountToWriteToExisting = std::min(offset, size);
memcpy (buffers.front().first + (offset - amountToWriteToExisting), buffer + (size - amountToWriteToExisting), amountToWriteToExisting);
auto amountToNewBuffer = size - amountToWriteToExisting;
char *copy = new char[amountToNewBuffer];
memcpy (copy, buffer, amountToNewBuffer);
buffers.push_front (std::pair<char *, size_t>(copy, amountToNewBuffer));
this->size += size;
}
char *PipeStream::write (size_t size)
{
char *copy = new char[size];
buffers.push_back (std::pair<char *, size_t>(copy, size));
this->size += size;
return copy;
}
void PipeStream::closeWrite ()
{
writing = false;
if (!reading)
delete this;
}
void PipeStream::closeRead ()
{
reading = false;
if (!writing)
delete this;
}
Pipe::size_t PipeStream::peek (char *buffer, size_t size) const
{
size_t ptr = 0;
size_t offset = this->offset;
std::list< std::pair<char *, size_t> >::const_iterator i=buffers.begin();
while (i!=buffers.end() && (size > 0))
{
auto chunksize = i->second - offset;
size_t newoffset = 0;
if (chunksize > size)
{
newoffset = offset + size;
chunksize = size;
}
if (buffer)
memcpy (buffer + ptr, i->first + offset, chunksize);
ptr += chunksize;
size -= chunksize;
offset = newoffset;
i++;
}
return ptr;
}
PipeStream::size_t PipeStream::read (char *buffer, size_t size)
{
size_t ptr = 0;
while (!buffers.empty() && (size > 0))
{
auto chunksize = buffers.front().second - offset;
size_t newoffset = 0;
if (chunksize > size)
{
newoffset = offset + size;
chunksize = size;
}
if (buffer)
memcpy (buffer + ptr, buffers.front().first + offset, chunksize);
ptr += chunksize;
size -= chunksize;
offset = newoffset;
if (offset == 0)
{
delete[] buffers.front().first;
buffers.pop_front();
}
}
this->size -= ptr;
return ptr;
} ;
PipeStream::size_t PipeStream::getSize () const
{
return size;
}
bool PipeStream::eos () const
{
return getSize() == 0 && !isWriting();
}
void PipeStream::clear ()
{
while (!buffers.empty())
{
delete[] buffers.front().first;
buffers.pop_front();
}
size = 0;
offset = 0;
}
} // namespace
} // namespace

102
tjp/core/pipe/obsolete/Pipe.h Executable file
View File

@@ -0,0 +1,102 @@
// TJP COPYRIGHT HEADER
#pragma once
#include <list>
namespace tjp {
namespace core {
class Pipe
{
public:
typedef ::size_t size_t;
virtual ~Pipe ();
virtual bool isReading () const = 0;
virtual bool isWriting () const = 0;
virtual void write (const char *buffer, size_t size_t) = 0;
virtual void closeWrite () = 0;
virtual size_t peek (char *buffer, size_t size_t) const = 0;
virtual size_t read (char *buffer, size_t size_t) = 0;
int readChar ()
{
unsigned char c;
auto size_t = read((char *)&c, 1);
if (size_t != 1)
return -1;
return c;
}
virtual void closeRead () = 0;
virtual size_t getSize () const = 0;
virtual bool eos () const = 0;
virtual void clear () = 0;
} ;
class PipeStream : public Pipe
{
protected:
bool reading, writing;
std::list< std::pair<char *, size_t> > buffers;
size_t offset, size;
public:
PipeStream ();
virtual ~PipeStream ();
virtual bool isReading () const;
virtual bool isWriting () const;
virtual void write (const char *buffer, size_t size_t);
virtual char *write(size_t size_t);
virtual void closeWrite ();
virtual size_t peek (char *buffer, size_t size_t) const;
void unread (const char *buffer, size_t size_t);
virtual size_t read (char *buffer, size_t size_t);
virtual void closeRead ();
virtual size_t getSize () const;
virtual bool eos () const;
virtual void clear ();
} ;
class PacketStream
{
protected:
bool reading, writing;
std::list< std::vector<char> > buffers;
public:
PacketStream ();
virtual ~PacketStream ();
virtual void read (const char *buffer, size_t size_t);
virtual char *write(size_t size_t);
virtual void closeWrite ();
virtual size_t peek (char *buffer, size_t size_t) const;
void unread (const char *buffer, size_t size_t);
virtual size_t read (char *buffer, size_t size_t);
virtual void closeRead ();
virtual size_t getSize () const;
virtual bool eos () const;
virtual void clear ();
} ;
} // namespace core
} // namespace tjp