Repository navigation
feat(libSceNpCppWebApi): implement twelve Matches2V1 factories and DataStatus vector iterators - #16056
Merged
oneandonlydean merged 2 commits intoNov 5, 2026
Conversation
…taStatus vector iterators Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
…ctor iterators Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
12 tasks done
Progress report (d23df92 → d1a47c5)📈 System libraries: 26.72% (+0.03%, +15 implemented, +6 declared functions) ✅ 15 implemented
🆕 6 declared as stubs
Changed libraries (implemented exports)
|
Contributor
|
Windows check of head Setup: Windows 11 Enterprise 22621, WinLibs GCC 15.2 UCRT, Release. The hosted Windows check does not run these tests on pull requests.
AI-assisted: yes. |
12 tasks done
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Implements the
sce::Np::CppWebApi::Matches::V1factory cluster and theTitleCloudStorage2V1::DataStatusvector iterators inlibSceNpCppWebApi, from the Sony module bundled with GTA Vice City (PPSA03530) whose SCE dynamic symbol table resolves every target NID to a full function body.The module's uniform create protocol is disassembled per factory: null
LibContext*or null out pointer returns0x80553503, allocation failure returns0x80553504, the object is allocated and wrapped{object, deleter, context}into the caller'sIntrusivePtr, each create parameter is stored at its measured offset, and the initialization result is propagated.Twelve factories are implemented:
AddedPlayerFactory(size 0xb0; name string at +0x10,PlayerTypeat +0x30, three furtherCommon::Stringmembers at +0x38/+0x60/+0x88 covered by the deleter)CreateMatchRequestFactory(host size 0xb8 vs module 0x88, keeping the measured setter range +0x98..+0xb0 in allocation; strings at +0x18/+0x38,RequestInGameRostermember at +0x98)RemovedPlayerFactory(0x38),RequestMemberFactory(0x30),RequestMatchTeamFactory(0x78; second string at +0x30, member vector at +0x58),RequestTeamStatisticFactory(0x70; member vectors at +0x30/+0x50)RequestMatchResultsFactory(ResultsVersionat +0x10, competitive-result member at +0x20)UpdateMatchStatusRequestFactory(UpdateStatusat +0x18)RequestInGameRosterFactory,RequestCompetitiveResultFactory,RequestMatchStatisticsFactory(parameterless; member vectors at +0x10/+0x30)UpdateMatchDetailRequestFactory(parameterless;zoneIdstring at +0x18, roster member at +0x70)Per-object deleters destroy every
Common::Stringmember and release everyIntrusivePtrmember throughReleaseIntrusivePtrwith the refcount offset the setters use (+0x30 for vectors, +0x00 for model objects).Vector<IntrusivePtr<DataStatus>>::begin/endare implemented in the canonicalVector<String>style (IntrusiveVectorElementsforelementKind == 1):beginyields the element base,endone element past the last.Left throwing, documented in
docs/dev/debt/libSceNpCppWebApi.md: the ten factories whose second create parameter has no measured field offset (vector/by-value-IntrusivePtrarguments and theRequestMatchPlayer/AdditionalStatistic/RequestPlayerResults/RequestTeamResults/RequestTeamMemberResult/ReportResultsRequestsecond parameters), plusProduct::getLabelandTransactionBase::start, whose bodies are unmeasured past the entry checks. The host allocator stands in for the module'sLibContextmspace; the context-allocator work in #16018 can replace it once landed. Host sizes exceed module sizes where the measured setter offsets require them.Tested
Windows 11:
guest_np_cpp_web_api_*suite 13/13 pass.GuestNpCppWebApiMatchespins the factory error paths (0x80553503on null context/out), the out-IntrusivePtrwrap, the name/enum stores at the measured offsets, deleter release of every member string, and the memberIntrusivePtrrefcount inc/dec on both offsets.GuestNpCppWebApiTitleCloudStoragepinsbegin/endon the empty vector.Checklist
main; no other open PR implements the same functionsNotImplemented_nid_no_patch); silent stubs are listed under Silent stubs in their library's technical debt file.mdfiles or images added to the repository (attach them to this PR)Other open pull requests touch the same code. Merging one will break the other, or both implement the same thing. If this one builds on them, list them in Depends on.
main)core/libs/prx/libSceNpCppWebApi/include/Api.hppL480-481core/libs/prx/libSceNpCppWebApi/include/Api.hppL476-482#15850 declares the same two
DataStatusiterator signatures (still throwing there); this PR declares them in the canonicalVector<String>form and implements the bodies. #15998 is adjacentApi.hpphunks only.