git @ Cat's Eye Technologies linapple / do-not-copy-assets-to-userdir inc / Util_MemoryTextFile.h
do-not-copy-assets-to-userdir

Tree @do-not-copy-assets-to-userdir (Download .tar.gz)

Util_MemoryTextFile.h @do-not-copy-assets-to-userdirraw · history · blame

#pragma once


// Memory Text File _________________________________________________________

  class MemoryTextFile_t
  {
    vector<char  > m_vBuffer;
    vector<char *> m_vLines ; // array of pointers to start of lines
    bool           m_bDirty ; // line pointers not up-to-date

    void GetLinePointers();

  public:
    MemoryTextFile_t()
//    : m_nSize( 0 )
//    , m_pBuffer( 0 )
//    , m_nLines( 0 )
    : m_bDirty( false )
    {
      m_vBuffer.reserve( 2048 );
      m_vLines.reserve( 128 );
    }

    bool Read( TCHAR *pFileName );
    void Reset()
    {
      m_vBuffer.erase( m_vBuffer.begin(), m_vBuffer.end() );
      m_vLines.erase( m_vLines.begin(), m_vLines.end() );
    }

inline  int  GetNumLines()
    {
      if (m_bDirty)
        GetLinePointers();

      return m_vLines.size();
    }

inline  char *GetLine( const int iLine ) const
    {
      return m_vLines.at( iLine );
    }

    void  GetLine( const int iLine, char *pLine, const int n );

    void PushLine( char *pLine );
  };