[XAM] Added profile and create content enumerator wrappers

This commit is contained in:
Adrian
2026-02-25 21:46:01 +00:00
committed by Radosław Gliński
parent 54be3c57a0
commit a7f1a3f18a
4 changed files with 98 additions and 12 deletions

View File

@@ -13,6 +13,7 @@
#include <vector>
#include "xenia/kernel/xam/achievement_manager.h"
#include "xenia/kernel/xam/content_manager.h"
#include "xenia/kernel/xam/user_tracker.h"
#include "xenia/kernel/xam/xam.h"
#include "xenia/kernel/xobject.h"
@@ -224,7 +225,8 @@ class XMPCreateUserPlaylistEnumerator : public XEnumerator {
public:
XMPCreateUserPlaylistEnumerator(KernelState* kernel_state,
size_t items_per_enumerate)
: XEnumerator(kernel_state, items_per_enumerate, 0) {}
: XEnumerator(kernel_state, items_per_enumerate,
sizeof(xam::XMP_USER_PLAYLIST_INFO)) {}
size_t item_count() const { return items_.size(); }
@@ -240,6 +242,44 @@ class XMPCreateUserPlaylistEnumerator : public XEnumerator {
size_t current_item_ = 0;
};
class ProfileEnumerator : public XEnumerator {
public:
ProfileEnumerator(KernelState* kernel_state, size_t items_per_enumerate)
: XEnumerator(kernel_state, items_per_enumerate,
sizeof(xam::X_PROFILEENUMRESULT)) {}
size_t item_count() const { return items_.size(); }
void AppendItem(const xam::X_PROFILEENUMRESULT& item) {
items_.push_back(item);
}
uint32_t WriteItems(uint8_t* buffer_data, uint32_t buffer_size,
uint32_t* written_count) override;
private:
std::vector<xam::X_PROFILEENUMRESULT> items_;
size_t current_item_ = 0;
};
class ContentEnumerator : public XEnumerator {
public:
ContentEnumerator(KernelState* kernel_state, size_t items_per_enumerate)
: XEnumerator(kernel_state, items_per_enumerate,
sizeof(xam::XCONTENT_DATA)) {}
size_t item_count() const { return items_.size(); }
void AppendItem(const xam::XCONTENT_DATA& item) { items_.push_back(item); }
uint32_t WriteItems(uint8_t* buffer_data, uint32_t buffer_size,
uint32_t* written_count) override;
private:
std::vector<xam::XCONTENT_DATA> items_;
size_t current_item_ = 0;
};
} // namespace kernel
} // namespace xe