Skip to content

Commit ab8cca2

Browse files
committed
Revert "Replace shared_str operator* by c_str() for xrCore"
This reverts commit 7b342ee.
1 parent 028188f commit ab8cca2

File tree

14 files changed

+76
-76
lines changed

14 files changed

+76
-76
lines changed

src/xrCore/FS.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ class XRCORE_API IWriter
4545

4646
public:
4747
IWriter() {}
48-
virtual ~IWriter() { R_ASSERT3(chunk_pos.empty(), "Opened chunk not closed.", fName.c_str()); }
48+
virtual ~IWriter() { R_ASSERT3(chunk_pos.empty(), "Opened chunk not closed.", *fName); }
4949
// kernel
5050
virtual void seek(u32 pos) = 0;
5151
virtual u32 tell() = 0;
@@ -71,12 +71,12 @@ class XRCORE_API IWriter
7171
IC void w_stringZ(const char* p) { w(p, (u32)xr_strlen(p) + 1); }
7272
IC void w_stringZ(const shared_str& p)
7373
{
74-
w(p.c_str() ? p.c_str() : "", p.size());
74+
w(*p ? *p : "", p.size());
7575
w_u8(0);
7676
}
7777
IC void w_stringZ(shared_str& p)
7878
{
79-
w(p.c_str() ? p.c_str() : "", p.size());
79+
w(*p ? *p : "", p.size());
8080
w_u8(0);
8181
}
8282
IC void w_stringZ(const xr_string& p)

src/xrCore/FS_internal.h

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,21 +22,21 @@ class CFileWriter : public IWriter
2222
{
2323
R_ASSERT(name && name[0]);
2424
fName = name;
25-
VerifyPath(fName.c_str());
25+
VerifyPath(*fName);
2626
if (exclusive)
2727
{
28-
int handle = _sopen(fName.c_str(), _O_WRONLY | _O_TRUNC | _O_CREAT | _O_BINARY, SH_DENYWR);
28+
int handle = _sopen(*fName, _O_WRONLY | _O_TRUNC | _O_CREAT | _O_BINARY, SH_DENYWR);
2929
#ifdef _EDITOR
3030
if (handle == -1)
31-
Msg("!Can't create file: '%s'. Error: '%s'.", fName.c_str(), _sys_errlist[errno]);
31+
Msg("!Can't create file: '%s'. Error: '%s'.", *fName, _sys_errlist[errno]);
3232
#endif
3333
hf = _fdopen(handle, "wb");
3434
}
3535
else
3636
{
37-
hf = fopen(fName.c_str(), "wb");
37+
hf = fopen(*fName, "wb");
3838
if (hf == 0)
39-
Msg("!Can't write file: '%s'. Error: '%s'.", fName.c_str(), _sys_errlist[errno]);
39+
Msg("!Can't write file: '%s'. Error: '%s'.", *fName, _sys_errlist[errno]);
4040
}
4141
}
4242

@@ -46,11 +46,11 @@ class CFileWriter : public IWriter
4646
{
4747
fclose(hf);
4848
// release RO attrib
49-
DWORD dwAttr = GetFileAttributes(fName.c_str());
49+
DWORD dwAttr = GetFileAttributes(*fName);
5050
if ((dwAttr != u32(-1)) && (dwAttr & FILE_ATTRIBUTE_READONLY))
5151
{
5252
dwAttr &= ~FILE_ATTRIBUTE_READONLY;
53-
SetFileAttributes(fName.c_str(), dwAttr);
53+
SetFileAttributes(*fName, dwAttr);
5454
}
5555
}
5656
}

src/xrCore/FileSystem.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -299,7 +299,7 @@ LPCSTR EFS_Utils::AppendFolderToName(
299299
{
300300
*d = 0;
301301
if (depth < sv_depth)
302-
xr_strcat(dest_name, dest_name_size, tmp.c_str());
302+
xr_strcat(dest_name, dest_name_size, *tmp);
303303
}
304304
else
305305
{

src/xrCore/LocatorAPI.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -381,7 +381,7 @@ void CLocatorAPI::archive::open()
381381
if (hSrcFile && hSrcMap)
382382
return;
383383

384-
hSrcFile = CreateFile(path.c_str(), GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, nullptr, OPEN_EXISTING, 0, nullptr);
384+
hSrcFile = CreateFile(*path, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, nullptr, OPEN_EXISTING, 0, nullptr);
385385
R_ASSERT(hSrcFile != INVALID_HANDLE_VALUE);
386386
hSrcMap = CreateFileMapping(hSrcFile, nullptr, PAGE_READONLY, 0, 0, nullptr);
387387
R_ASSERT(hSrcMap != INVALID_HANDLE_VALUE);
@@ -1137,7 +1137,7 @@ void CLocatorAPI::file_from_archive(IReader*& R, pcstr fname, const file& desc)
11371137
VERIFY3(ptr, "cannot create file mapping on file", fname);
11381138

11391139
string512 temp;
1140-
xr_sprintf(temp, sizeof temp, "%s:%s", A.path.c_str(), fname);
1140+
xr_sprintf(temp, sizeof temp, "%s:%s", *A.path, fname);
11411141

11421142
#ifdef FS_DEBUG
11431143
register_file_mapping(ptr, sz, temp);
@@ -1371,7 +1371,7 @@ void CLocatorAPI::w_close(IWriter*& S)
13711371
{
13721372
R_ASSERT(S->fName.size());
13731373
string_path fname;
1374-
xr_strcpy(fname, sizeof fname, S->fName.c_str());
1374+
xr_strcpy(fname, sizeof fname, *S->fName);
13751375
bool bReg = S->valid();
13761376
xr_delete(S);
13771377

src/xrCore/PostProcess/PostProcess.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ class XRCORE_API BasicPostProcessAnimator
133133
virtual ~BasicPostProcessAnimator();
134134
void Clear();
135135
virtual void Load(LPCSTR name, bool internalFs = true);
136-
IC LPCSTR Name() { return m_Name.c_str(); }
136+
IC LPCSTR Name() { return *m_Name; }
137137
virtual void Stop(float speed);
138138
void SetDesiredFactor(float f, float sp);
139139
void SetCurrentFactor(float f);

src/xrCore/XML/XMLDocument.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ void XMLDocument::Load(pcstr path_alias, pcstr path, pcstr _xml_filename)
5050
shared_str fn = correct_file_name(path, _xml_filename);
5151

5252
string_path str;
53-
xr_sprintf(str, "%s\\%s", path, fn.c_str());
53+
xr_sprintf(str, "%s\\%s", path, *fn);
5454
return Load(path_alias, str);
5555
}
5656

src/xrCore/log.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ void FlushLog()
3131
{
3232
for (u32 it = 0; it < LogFile->size(); it++)
3333
{
34-
pcstr s = (*LogFile)[it].c_str();
34+
LPCSTR s = *((*LogFile)[it]);
3535
f->w_string(s ? s : "");
3636
}
3737
FS.w_close(f);

src/xrCore/net_utils.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -221,8 +221,8 @@ class XRCORE_API NET_Packet
221221
IC void w_stringZ(const shared_str& p)
222222
{
223223
W_guard g(&w_allow);
224-
if (p.c_str())
225-
w(p.c_str(), p.size() + 1);
224+
if (*p)
225+
w(*p, p.size() + 1);
226226
else
227227
{
228228
IIniFileStream* tmp = inistream;

src/xrCore/xr_ini.cpp

Lines changed: 30 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,14 @@ void CInifile::Destroy(CInifile* ini) { xr_delete(ini); }
1414

1515
bool sect_pred(const CInifile::Sect* x, pcstr val)
1616
{
17-
return xr_strcmp(x->Name.c_str(), val) < 0;
17+
return xr_strcmp(*x->Name, val) < 0;
1818
}
1919

2020
bool item_pred(const CInifile::Item& x, pcstr val)
2121
{
2222
if (!x.first || !val)
2323
return x.first < val;
24-
return xr_strcmp(x.first.c_str(), val) < 0;
24+
return xr_strcmp(*x.first, val) < 0;
2525
}
2626

2727
XRCORE_API bool _parse(pstr dest, pcstr src)
@@ -87,10 +87,10 @@ XRCORE_API void _decorate(pstr dest, pcstr src)
8787
bool CInifile::Sect::line_exist(pcstr line, pcstr* value)
8888
{
8989
auto A = std::lower_bound(Data.begin(), Data.end(), line, item_pred);
90-
if (A != Data.end() && xr_strcmp(A->first.c_str(), line) == 0)
90+
if (A != Data.end() && xr_strcmp(*A->first, line) == 0)
9191
{
9292
if (value)
93-
*value = A->second.c_str();
93+
*value = *A->second;
9494
return true;
9595
}
9696
return false;
@@ -147,7 +147,7 @@ CInifile::~CInifile()
147147

148148
static void insert_item(CInifile::Sect* tgt, const CInifile::Item& I)
149149
{
150-
auto sect_it = std::lower_bound(tgt->Data.begin(), tgt->Data.end(), I.first.c_str(), item_pred);
150+
auto sect_it = std::lower_bound(tgt->Data.begin(), tgt->Data.end(), *I.first, item_pred);
151151
if (sect_it != tgt->Data.end() && sect_it->first.equal(I.first))
152152
{
153153
sect_it->second = I.second;
@@ -240,9 +240,9 @@ void CInifile::Load(IReader* F, pcstr path, allow_include_func_t allow_include_f
240240
if (Current)
241241
{
242242
// store previous section
243-
auto I = std::lower_bound(DATA.begin(), DATA.end(), Current->Name.c_str(), sect_pred);
243+
auto I = std::lower_bound(DATA.begin(), DATA.end(), *Current->Name, sect_pred);
244244
if (I != DATA.end() && (*I)->Name == Current->Name)
245-
xrDebug::Fatal(DEBUG_INFO, "Duplicate section '%s' found.", Current->Name.c_str());
245+
xrDebug::Fatal(DEBUG_INFO, "Duplicate section '%s' found.", *Current->Name);
246246
DATA.insert(I, Current);
247247
}
248248
Current = new Sect();
@@ -329,11 +329,11 @@ void CInifile::Load(IReader* F, pcstr path, allow_include_func_t allow_include_f
329329
//#endif
330330

331331
if (m_flags.test(eReadOnly))
332-
if (I.first.c_str())
332+
if (*I.first)
333333
insert_item(Current, I);
334334
else
335335
{
336-
if (I.first.c_str() || I.second.c_str()
336+
if (*I.first || *I.second
337337
//#ifdef DEBUG
338338
// || *I.comment
339339
//#endif
@@ -345,9 +345,9 @@ void CInifile::Load(IReader* F, pcstr path, allow_include_func_t allow_include_f
345345
}
346346
if (Current)
347347
{
348-
auto I = std::lower_bound(DATA.begin(), DATA.end(), Current->Name.c_str(), sect_pred);
348+
auto I = std::lower_bound(DATA.begin(), DATA.end(), *Current->Name, sect_pred);
349349
if (I != DATA.end() && (*I)->Name == Current->Name)
350-
xrDebug::Fatal(DEBUG_INFO, "Duplicate section '%s' found.", Current->Name.c_str());
350+
xrDebug::Fatal(DEBUG_INFO, "Duplicate section '%s' found.", *Current->Name);
351351
DATA.insert(I, Current);
352352
}
353353
}
@@ -369,11 +369,11 @@ void CInifile::save_as(IWriter& writer, bool bcheck) const
369369
for (auto s_it = (*r_it)->Data.begin(); s_it != (*r_it)->Data.end(); ++s_it)
370370
{
371371
const Item& I = *s_it;
372-
if (I.first.c_str())
372+
if (*I.first)
373373
{
374-
if (I.second.c_str())
374+
if (*I.second)
375375
{
376-
_decorate(val, I.second.c_str());
376+
_decorate(val, *I.second);
377377
// only name and value
378378
xr_sprintf(temp, sizeof temp, "%8s%-32s = %-32s", " ", I.first.c_str(), val);
379379
}
@@ -415,7 +415,7 @@ bool CInifile::save_as(pcstr new_fname)
415415
bool CInifile::section_exist(pcstr S) const
416416
{
417417
auto I = std::lower_bound(DATA.begin(), DATA.end(), S, sect_pred);
418-
return I != DATA.end() && xr_strcmp((*I)->Name.c_str(), S) == 0;
418+
return I != DATA.end() && xr_strcmp(*(*I)->Name, S) == 0;
419419
}
420420

421421
bool CInifile::line_exist(pcstr S, pcstr L) const
@@ -424,7 +424,7 @@ bool CInifile::line_exist(pcstr S, pcstr L) const
424424
return false;
425425
Sect& I = r_section(S);
426426
auto A = std::lower_bound(I.Data.begin(), I.Data.end(), L, item_pred);
427-
return A != I.Data.end() && xr_strcmp(A->first.c_str(), L) == 0;
427+
return A != I.Data.end() && xr_strcmp(*A->first, L) == 0;
428428
}
429429

430430
u32 CInifile::line_count(pcstr Sname) const
@@ -433,17 +433,17 @@ u32 CInifile::line_count(pcstr Sname) const
433433
auto I = S.Data.cbegin();
434434
u32 C = 0;
435435
for (; I != S.Data.cend(); I++)
436-
if (I->first.c_str())
436+
if (*I->first)
437437
C++;
438438
return C;
439439
}
440440

441441
u32 CInifile::section_count() const { return DATA.size(); }
442442
//--------------------------------------------------------------------------------------
443-
CInifile::Sect& CInifile::r_section(const shared_str& S) const { return r_section(S.c_str()); }
444-
bool CInifile::line_exist(const shared_str& S, const shared_str& L)const { return line_exist(S.c_str(), L.c_str()); }
445-
u32 CInifile::line_count(const shared_str& S) const { return line_count(S.c_str()); }
446-
bool CInifile::section_exist(const shared_str& S) const { return section_exist(S.c_str()); }
443+
CInifile::Sect& CInifile::r_section(const shared_str& S) const { return r_section(*S); }
444+
bool CInifile::line_exist(const shared_str& S, const shared_str& L)const { return line_exist(*S, *L); }
445+
u32 CInifile::line_count(const shared_str& S) const { return line_count(*S); }
446+
bool CInifile::section_exist(const shared_str& S) const { return section_exist(*S); }
447447
//--------------------------------------------------------------------------------------
448448
// Read functions
449449
//--------------------------------------------------------------------------------------
@@ -453,7 +453,7 @@ CInifile::Sect& CInifile::r_section(pcstr S) const
453453
xr_strcpy(section, sizeof section, S);
454454
xr_strlwr(section);
455455
auto I = std::lower_bound(DATA.cbegin(), DATA.cend(), section, sect_pred);
456-
if (!(I != DATA.cend() && xr_strcmp((*I)->Name.c_str(), section) == 0))
456+
if (!(I != DATA.cend() && xr_strcmp(*(*I)->Name, section) == 0))
457457
{
458458
// g_pStringContainer->verify();
459459

@@ -477,8 +477,8 @@ pcstr CInifile::r_string(pcstr S, pcstr L) const
477477
Sect const& I = r_section(S);
478478
auto A = std::lower_bound(I.Data.cbegin(), I.Data.cend(), L, item_pred);
479479

480-
if (A != I.Data.cend() && xr_strcmp(A->first.c_str(), L) == 0)
481-
return A->second.c_str();
480+
if (A != I.Data.cend() && xr_strcmp(*A->first, L) == 0)
481+
return *A->second;
482482

483483
xrDebug::Fatal(DEBUG_INFO, "Can't find variable %s in [%s]", L, S);
484484
return nullptr;
@@ -659,14 +659,14 @@ bool CInifile::r_line(pcstr S, int L, pcstr* N, pcstr* V) const
659659
for (auto I = SS.Data.cbegin(); I != SS.Data.cend(); I++)
660660
if (!L--)
661661
{
662-
*N = I->first.c_str();
663-
*V = I->second.c_str();
662+
*N = *I->first;
663+
*V = *I->second;
664664
return true;
665665
}
666666
return false;
667667
}
668668

669-
bool CInifile::r_line(const shared_str& S, int L, pcstr* N, pcstr* V) const { return r_line(S.c_str(), L, N, V); }
669+
bool CInifile::r_line(const shared_str& S, int L, pcstr* N, pcstr* V) const { return r_line(*S, L, N, V); }
670670
//--------------------------------------------------------------------------------------------------------
671671
// Write functions
672672
//--------------------------------------------------------------------------------------
@@ -703,12 +703,12 @@ void CInifile::w_string(pcstr S, pcstr L, pcstr V, pcstr comment)
703703
//#ifdef DEBUG
704704
// I.comment = (comment?comment:0);
705705
//#endif
706-
auto it = std::lower_bound(data.Data.begin(), data.Data.end(), I.first.c_str(), item_pred);
706+
auto it = std::lower_bound(data.Data.begin(), data.Data.end(), *I.first, item_pred);
707707

708708
if (it != data.Data.end())
709709
{
710710
// Check for "first" matching
711-
if (0 == xr_strcmp(it->first.c_str(), I.first.c_str()))
711+
if (0 == xr_strcmp(*it->first, *I.first))
712712
{
713713
bool b = m_flags.test(eOverrideNames);
714714
R_ASSERT2(b, make_string("name[%s] already exist in section[%s]", line, sect).c_str());
@@ -849,7 +849,7 @@ void CInifile::remove_line(pcstr S, pcstr L)
849849
{
850850
Sect& data = r_section(S);
851851
auto A = std::lower_bound(data.Data.begin(), data.Data.end(), L, item_pred);
852-
R_ASSERT(A != data.Data.end() && xr_strcmp(A->first.c_str(), L) == 0);
852+
R_ASSERT(A != data.Data.end() && xr_strcmp(*A->first, L) == 0);
853853
data.Data.erase(A);
854854
}
855855
}

src/xrCore/xr_ini.h

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -85,45 +85,45 @@ class XRCORE_API CInifile
8585
Root& sections() { return DATA; }
8686
Root const& sections() const { return DATA; }
8787
CLASS_ID r_clsid(pcstr S, pcstr L) const;
88-
CLASS_ID r_clsid(const shared_str& S, pcstr L) const { return r_clsid(S.c_str(), L); }
88+
CLASS_ID r_clsid(const shared_str& S, pcstr L) const { return r_clsid(*S, L); }
8989
pcstr r_string(pcstr S, pcstr L) const; // Left quotes in place
90-
pcstr r_string(const shared_str& S, pcstr L) const { return r_string(S.c_str(), L); } // Left quotes in place
90+
pcstr r_string(const shared_str& S, pcstr L) const { return r_string(*S, L); } // Left quotes in place
9191
shared_str r_string_wb(pcstr S, pcstr L) const; // Remove quotes
92-
shared_str r_string_wb(const shared_str& S, pcstr L) const { return r_string_wb(S.c_str(), L); } // Remove quotes
92+
shared_str r_string_wb(const shared_str& S, pcstr L) const { return r_string_wb(*S, L); } // Remove quotes
9393
u8 r_u8(pcstr S, pcstr L) const;
94-
u8 r_u8(const shared_str& S, pcstr L) const { return r_u8(S.c_str(), L); }
94+
u8 r_u8(const shared_str& S, pcstr L) const { return r_u8(*S, L); }
9595
u16 r_u16(pcstr S, pcstr L) const;
96-
u16 r_u16(const shared_str& S, pcstr L) const { return r_u16(S.c_str(), L); }
96+
u16 r_u16(const shared_str& S, pcstr L) const { return r_u16(*S, L); }
9797
u32 r_u32(pcstr S, pcstr L) const;
98-
u32 r_u32(const shared_str& S, pcstr L) const { return r_u32(S.c_str(), L); }
98+
u32 r_u32(const shared_str& S, pcstr L) const { return r_u32(*S, L); }
9999
u64 r_u64(pcstr S, pcstr L) const;
100100
s8 r_s8(pcstr S, pcstr L) const;
101-
s8 r_s8(const shared_str& S, pcstr L) const { return r_s8(S.c_str(), L); }
101+
s8 r_s8(const shared_str& S, pcstr L) const { return r_s8(*S, L); }
102102
s16 r_s16(pcstr S, pcstr L) const;
103-
s16 r_s16(const shared_str& S, pcstr L) const { return r_s16(S.c_str(), L); }
103+
s16 r_s16(const shared_str& S, pcstr L) const { return r_s16(*S, L); }
104104
s32 r_s32(pcstr S, pcstr L) const;
105-
s32 r_s32(const shared_str& S, pcstr L) const { return r_s32(S.c_str(), L); }
105+
s32 r_s32(const shared_str& S, pcstr L) const { return r_s32(*S, L); }
106106
s64 r_s64(pcstr S, pcstr L) const;
107107
float r_float(pcstr S, pcstr L) const;
108-
float r_float(const shared_str& S, pcstr L) const { return r_float(S.c_str(), L); }
108+
float r_float(const shared_str& S, pcstr L) const { return r_float(*S, L); }
109109
Fcolor r_fcolor(pcstr S, pcstr L) const;
110-
Fcolor r_fcolor(const shared_str& S, pcstr L) const { return r_fcolor(S.c_str(), L); }
110+
Fcolor r_fcolor(const shared_str& S, pcstr L) const { return r_fcolor(*S, L); }
111111
u32 r_color(pcstr S, pcstr L) const;
112-
u32 r_color(const shared_str& S, pcstr L) const { return r_color(S.c_str(), L); }
112+
u32 r_color(const shared_str& S, pcstr L) const { return r_color(*S, L); }
113113
Ivector2 r_ivector2(pcstr S, pcstr L) const;
114-
Ivector2 r_ivector2(const shared_str& S, pcstr L) const { return r_ivector2(S.c_str(), L); }
114+
Ivector2 r_ivector2(const shared_str& S, pcstr L) const { return r_ivector2(*S, L); }
115115
Ivector3 r_ivector3(pcstr S, pcstr L) const;
116-
Ivector3 r_ivector3(const shared_str& S, pcstr L) const { return r_ivector3(S.c_str(), L); }
116+
Ivector3 r_ivector3(const shared_str& S, pcstr L) const { return r_ivector3(*S, L); }
117117
Ivector4 r_ivector4(pcstr S, pcstr L) const;
118-
Ivector4 r_ivector4(const shared_str& S, pcstr L) const { return r_ivector4(S.c_str(), L); }
118+
Ivector4 r_ivector4(const shared_str& S, pcstr L) const { return r_ivector4(*S, L); }
119119
Fvector2 r_fvector2(pcstr S, pcstr L) const;
120-
Fvector2 r_fvector2(const shared_str& S, pcstr L) const { return r_fvector2(S.c_str(), L); }
120+
Fvector2 r_fvector2(const shared_str& S, pcstr L) const { return r_fvector2(*S, L); }
121121
Fvector3 r_fvector3(pcstr S, pcstr L) const;
122-
Fvector3 r_fvector3(const shared_str& S, pcstr L) const { return r_fvector3(S.c_str(), L); }
122+
Fvector3 r_fvector3(const shared_str& S, pcstr L) const { return r_fvector3(*S, L); }
123123
Fvector4 r_fvector4(pcstr S, pcstr L) const;
124-
Fvector4 r_fvector4(const shared_str& S, pcstr L) const { return r_fvector4(S.c_str(), L); }
124+
Fvector4 r_fvector4(const shared_str& S, pcstr L) const { return r_fvector4(*S, L); }
125125
bool r_bool(pcstr S, pcstr L) const;
126-
bool r_bool(const shared_str& S, pcstr L) const { return r_bool(S.c_str(), L); }
126+
bool r_bool(const shared_str& S, pcstr L) const { return r_bool(*S, L); }
127127
int r_token(pcstr S, pcstr L, const xr_token* token_list) const;
128128
bool r_line(pcstr S, int L, pcstr* N, pcstr* V) const;
129129
bool r_line(const shared_str& S, int L, pcstr* N, pcstr* V) const;

0 commit comments

Comments
 (0)