Remove getdir from mjpResourceProvider.

All known implementations were effectively the same as the default fallback. It was just adding unneeded complexity. Removing this now will help with upcoming improvements to resource providers.

PiperOrigin-RevId: 855163273
Change-Id: I529fc18d0d03a8dc676c909ec9e4b1da1454d414
This commit is contained in:
Haroon Qureshi
2026-01-12 04:06:33 -08:00
committed by Copybara-Service
parent d7e4038be8
commit cb9a9c159c
9 changed files with 159 additions and 64 deletions
-1
View File
@@ -252,7 +252,6 @@ bool GlobalTable<mjpResourceProvider>::ObjectEqual(const mjpResourceProvider& p1
p1.open == p2.open &&
p1.read == p2.read &&
p1.close == p2.close &&
p1.getdir == p2.getdir &&
p1.modified == p2.modified &&
p1.data == p2.data);
}
+15 -16
View File
@@ -94,12 +94,6 @@ void FileClose(mjResource* resource) {
if (spec) delete spec;
}
// OS filesystem getdir callback
void FileGetDir(mjResource* resource, const char** dir, int* ndir) {
*dir = resource->name;
*ndir = mjuu_dirnamelen(resource->name);
}
// OS filesystem modified callback
int FileModified(const mjResource* resource, const char*timestamp) {
if (mju_isValidBase64(timestamp) != sizeof(time_t)) {
@@ -234,16 +228,22 @@ void mju_getResourceDir(mjResource* resource, const char** dir, int* ndir) {
*dir = nullptr;
*ndir = 0;
if (resource == nullptr) {
return;
}
if (resource && resource->name) {
// ensure prefix is included even if there is no separator in the
// resource name
int prefix_len = 0;
const mjpResourceProvider* provider = resource->provider;
if (provider && provider->prefix) {
prefix_len = strlen(provider->prefix) + 1;
}
const mjpResourceProvider* provider = resource->provider;
if (provider) {
if (provider->getdir) provider->getdir(resource, dir, ndir);
} else {
// fallback to OS filesystem
FileGetDir(resource, dir, ndir);
*dir = resource->name;
*ndir = prefix_len;
for (int i = prefix_len; resource->name[i]; ++i) {
if (resource->name[i] == '/' || resource->name[i] == '\\') {
*ndir = i + 1;
}
}
}
}
@@ -278,4 +278,3 @@ mjSpec* mju_decodeResource(mjResource* resource, const char* content_type, const
return decoder->decode(resource, vfs);
}
+1 -7
View File
@@ -178,12 +178,6 @@ int Read(mjResource* resource, const void** buffer) {
void Close(mjResource* resource) {
}
// getdir callback for the VFS resource provider
void GetDir(mjResource* resource, const char** dir, int* ndir) {
*dir = (resource) ? resource->name : nullptr;
*ndir = (resource) ? mjuu_dirnamelen(resource->name) : 0;
}
// modified callback for the VFS resource provider
// return > 0 if modified and 0 if unmodified
int Modified(const mjResource* resource, const char* timestamp) {
@@ -279,6 +273,6 @@ void mj_deleteVFS(mjVFS* vfs) {
const mjpResourceProvider* GetVfsResourceProvider() {
static mjpResourceProvider provider
= { nullptr, &Open, &Read, &Close, &GetDir, &Modified, nullptr };
= { nullptr, &Open, &Read, &Close, &Modified, nullptr };
return &provider;
}