refactor: + xo-stringtable2 w/ DString impl
This commit is contained in:
parent
f8e534f4f6
commit
5fc59b0df4
25 changed files with 1709 additions and 0 deletions
80
include/xo/stringtable2/StringOps.hpp
Normal file
80
include/xo/stringtable2/StringOps.hpp
Normal file
|
|
@ -0,0 +1,80 @@
|
|||
/** @file StringOps.hpp
|
||||
*
|
||||
* @author Roland Conybeare, Jan 2026
|
||||
**/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "string/IGCObject_DString.hpp"
|
||||
#include "DString.hpp"
|
||||
|
||||
namespace xo {
|
||||
namespace scm {
|
||||
/** @brief string functions
|
||||
*
|
||||
* note: separate from DString
|
||||
**/
|
||||
struct StringOps {
|
||||
using AGCObject = xo::mm::AGCObject;
|
||||
using AAllocator = xo::mm::AAllocator;
|
||||
using size_type = DString::size_type;
|
||||
|
||||
/** wrapper for DString.empty() **/
|
||||
template <typename AFacet = AGCObject>
|
||||
static obj<AFacet,DString> empty(obj<AAllocator> mm,
|
||||
size_type cap);
|
||||
|
||||
/** wrapper for DString.from_cstr() **/
|
||||
template <typename AFacet = AGCObject>
|
||||
static obj<AFacet,DString> from_cstr(obj<AAllocator> mm,
|
||||
const char * cstr);
|
||||
|
||||
/** wrapper for DString.clone() **/
|
||||
template <typename AFacet = AGCObject,
|
||||
typename ASrcFacet = AGCObject>
|
||||
static obj<AFacet,DString> clone(obj<AAllocator> mm,
|
||||
obj<ASrcFacet,DString> src);
|
||||
|
||||
/** wrapper for DString.printf() **/
|
||||
template <typename AFacet = AGCObject, typename... Args>
|
||||
static obj<AFacet,DString> printf(obj<AAllocator> mm,
|
||||
size_type cap,
|
||||
const char * fmt,
|
||||
Args&&... args);
|
||||
};
|
||||
|
||||
template <typename AFacet>
|
||||
obj<AFacet,DString>
|
||||
StringOps::empty(obj<AAllocator> mm, size_type cap)
|
||||
{
|
||||
return obj<AFacet,DString>(DString::empty(mm, cap));
|
||||
}
|
||||
|
||||
template <typename AFacet>
|
||||
obj<AFacet,DString>
|
||||
StringOps::from_cstr(obj<AAllocator> mm, const char * cstr)
|
||||
{
|
||||
return obj<AFacet,DString>(DString::from_cstr(mm, cstr));
|
||||
}
|
||||
|
||||
template <typename AFacet, typename ASrcFacet>
|
||||
obj<AFacet,DString>
|
||||
StringOps::clone(obj<AAllocator> mm, obj<ASrcFacet,DString> src)
|
||||
{
|
||||
return obj<AFacet,DString>(DString::clone(mm, src.data()));
|
||||
}
|
||||
|
||||
template <typename AFacet, typename... Args>
|
||||
obj<AFacet,DString>
|
||||
StringOps::printf(obj<AAllocator> mm,
|
||||
size_type cap,
|
||||
const char * fmt,
|
||||
Args&&... args)
|
||||
{
|
||||
return obj<AFacet,DString>(DString::printf(mm, cap, fmt,
|
||||
std::forward<Args>(args)...));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* end StringOps.hpp */
|
||||
Loading…
Add table
Add a link
Reference in a new issue