pool append move and copy
This commit is contained in:
@@ -71,6 +71,7 @@ void Log(LogLevel lvl, std::format_string<Args...> fmt, Args&&... args) {
|
|||||||
}
|
}
|
||||||
template <typename T>
|
template <typename T>
|
||||||
std::string TypeName() {
|
std::string TypeName() {
|
||||||
|
#ifdef __RTTI
|
||||||
#if defined(__GNUG__) && !defined(_MSC_VER)
|
#if defined(__GNUG__) && !defined(_MSC_VER)
|
||||||
int res = 0;
|
int res = 0;
|
||||||
std::unique_ptr<char, void (*)(void*)> up{
|
std::unique_ptr<char, void (*)(void*)> up{
|
||||||
@@ -79,6 +80,9 @@ std::string TypeName() {
|
|||||||
#else
|
#else
|
||||||
return typeid(T).name(); // no demangler available :/
|
return typeid(T).name(); // no demangler available :/
|
||||||
#endif
|
#endif
|
||||||
|
#else
|
||||||
|
return "";
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
} // namespace PD
|
} // namespace PD
|
||||||
|
|
||||||
|
|||||||
@@ -107,6 +107,31 @@ class Pool {
|
|||||||
pPos = 0;
|
pPos = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Copy the data of another pool
|
||||||
|
*/
|
||||||
|
void AppendCopy(const Pool& v) {
|
||||||
|
if (!v.size()) return;
|
||||||
|
ExpandIf(v.size());
|
||||||
|
for (size_t i = 0; i < v.size(); i++) {
|
||||||
|
pData[pPos + i] = v.pData[i];
|
||||||
|
}
|
||||||
|
pPos += v.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Move the data of another pool
|
||||||
|
*/
|
||||||
|
void AppendMove(Pool& v) {
|
||||||
|
if (!v.size()) return;
|
||||||
|
ExpandIf(v.size());
|
||||||
|
for (size_t i = 0; i < v.size(); i++) {
|
||||||
|
pData[pPos + i] = std::move(v.pData[i]);
|
||||||
|
}
|
||||||
|
pPos += v.size();
|
||||||
|
v.ResetFast();
|
||||||
|
}
|
||||||
|
|
||||||
size_t size() const { return pPos; }
|
size_t size() const { return pPos; }
|
||||||
size_t capacity() const { return pCap; }
|
size_t capacity() const { return pCap; }
|
||||||
T& at(size_t idx) { return pData[idx]; }
|
T& at(size_t idx) { return pData[idx]; }
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ enum class TextureFormat {
|
|||||||
A8,
|
A8,
|
||||||
};
|
};
|
||||||
namespace Li {
|
namespace Li {
|
||||||
static int TextureFormat2Bpp(TextureFormat fmt) {
|
inline int TextureFormat2Bpp(TextureFormat fmt) {
|
||||||
switch (fmt) {
|
switch (fmt) {
|
||||||
case PD::TextureFormat::A8:
|
case PD::TextureFormat::A8:
|
||||||
return 1;
|
return 1;
|
||||||
|
|||||||
@@ -10,9 +10,14 @@ PD_API Drawlist::Drawlist() { Clear(); }
|
|||||||
|
|
||||||
PD_API Drawlist::~Drawlist() { Clear(); }
|
PD_API Drawlist::~Drawlist() { Clear(); }
|
||||||
|
|
||||||
PD_API void Drawlist::Merge(Drawlist& other) {}
|
PD_API void Drawlist::Merge(Drawlist& other) {
|
||||||
|
pCommands.AppendMove(other.pCommands);
|
||||||
|
other.Clear();
|
||||||
|
}
|
||||||
|
|
||||||
PD_API void Drawlist::Copy(Drawlist& other) {}
|
PD_API void Drawlist::Copy(Drawlist& other) {
|
||||||
|
pCommands.AppendCopy(other.pCommands);
|
||||||
|
}
|
||||||
|
|
||||||
PD_API void Drawlist::Optimize() {}
|
PD_API void Drawlist::Optimize() {}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user