8#ifndef H_ALIB_FILES_TEXTFILE
9#define H_ALIB_FILES_TEXTFILE
28template <
size_t TLocalBufferSize= 1024>
41 Line.DbgDisableBufferReplacementWarning();
43 Path tFilePath(filePath);
48 ALIB_WARNING(
"FILES/TEXTFILE",
"Error <{}: \"{}\"> opening input file \"{}\"",
49 errno, std::errc(errno), filePath)
52 ALIB_MESSAGE(
"FILES/TEXTFILE",
"file \"{}\" opened for reading", filePath)
102 size_t TLocalBufferSize= 1024>
131 constexpr integer Size() const noexcept {
return int(Vector::size()); }
141 template<
typename TIntegral>
143 constexpr StoredType&
At(TIntegral idx)
noexcept {
return Vector::at(
size_t(idx)); }
149 template<
typename TIntegral>
151 constexpr const StoredType&
At(TIntegral idx)
const noexcept {
return Vector::at(
size_t(idx)); }
158 if ( reader.
Status != std::errc(0) )
162 while ( (line= reader.
NextLine()).IsNotNull() )
165 ALIB_MESSAGE(
"FILES/TEXTFILE",
"File \"{}\", {} lines read", filePath, Vector::size() )
175 file.
AsCursor().AssemblePath(filePath);
176 return Read(filePath);
185 Path tFilePath(filePath);
187 std::ofstream oFile( nTFilePath.Terminate() );
188 if ( !oFile.is_open() ) {
189 auto result= std::errc(errno);
190 ALIB_WARNING(
"FILES/TEXTFILE",
"Error <{}: \"{}\"> opening output file \"{}\"",
191 errno, result, filePath)
194 ALIB_MESSAGE(
"FILES/TEXTFILE",
"file \"{}\" opened for writing", filePath)
196 for(
auto& line : *
this )
197 oFile << line << std::endl;
199 ALIB_MESSAGE(
"FILES/TEXTFILE",
"File \"{}\", {} lines written", filePath, Vector::size() )
213template <
size_t TLocalBufferSize= 1024>
221template <
size_t TLocalBufferSize= 1024>
#define ALIB_MESSAGE(domain,...)
#define ALIB_WARNING(domain,...)
std::errc Write(const String &filePath)
constexpr const StoredType & At(TIntegral idx) const noexcept
StdVectorMA< TNString > Vector
Type definition publishing the base container type.
MonoAllocator & allocator
TAllocator AllocatorType
Type definition publishing template parameter TAllocator.
constexpr StoredType & At(TIntegral idx) noexcept
TTextFile(MonoAllocator &ma)
constexpr integer Size() const noexcept
std::errc Read(files::File file)
std::errc Read(const CString &filePath)
monomem::TMonoAllocator< lang::HeapAllocator > MonoAllocator
strings::TString< nchar > NString
Type alias in namespace alib.
constexpr String NULL_STRING
A nulled string of the default character type.
strings::TCString< character > CString
Type alias in namespace alib.
files::TextFileLineReader< TLocalBufferSize > TextFileLineReader
lang::integer integer
Type alias in namespace alib.
strings::compatibility::std::TIStreamLine< alib::character > IStreamLine
Type alias in namespace alib.
strings::TString< character > String
Type alias in namespace alib.
strings::TLocalString< nchar, TCapacity, lang::HeapAllocator > NLocalString
Type alias in namespace alib.
system::Path Path
Type alias in namespace alib.
strings::TSubstring< character > Substring
Type alias in namespace alib.
files::TTextFile< NString, MonoAllocator, TLocalBufferSize > TextFile
std::vector< T, StdMA< T > > StdVectorMA
Type alias in namespace alib.
#define ALIB_STRINGS_TO_NARROW( src, dest, bufSize)
TextFileLineReader(files::File file)
void construct(const CString &filePath)
NLocalString< TLocalBufferSize > Line
TextFileLineReader(const CString &filePath)