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:
committed by
Copybara-Service
parent
d7e4038be8
commit
cb9a9c159c
@@ -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
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user