ListBase CTX_data_dir_get(const bContext *C) { bContextDataResult result; ListBase lb; bScreen *sc; ScrArea *sa; ARegion *ar; int a; memset(&lb, 0, sizeof(lb)); if (C->wm.store) { bContextStoreEntry *entry; for (entry = C->wm.store->entries.first; entry; entry = entry->next) data_dir_add(&lb, entry->name); } if ((ar = CTX_wm_region(C)) && ar->type && ar->type->context) { memset(&result, 0, sizeof(result)); ar->type->context(C, "", &result); if (result.dir) for (a = 0; result.dir[a]; a++) data_dir_add(&lb, result.dir[a]); } if ((sa = CTX_wm_area(C)) && sa->type && sa->type->context) { memset(&result, 0, sizeof(result)); sa->type->context(C, "", &result); if (result.dir) for (a = 0; result.dir[a]; a++) data_dir_add(&lb, result.dir[a]); } if ((sc = CTX_wm_screen(C)) && sc->context) { bContextDataCallback cb = sc->context; memset(&result, 0, sizeof(result)); cb(C, "", &result); if (result.dir) for (a = 0; result.dir[a]; a++) data_dir_add(&lb, result.dir[a]); } return lb; }
ListBase CTX_data_dir_get(const bContext *C) { bContextDataResult result; ListBase lb; int a; memset(&lb, 0, sizeof(lb)); if(C->wm.store) { bContextStoreEntry *entry; for(entry=C->wm.store->entries.first; entry; entry=entry->next) data_dir_add(&lb, entry->name); } if(C->wm.region && C->wm.region->type && C->wm.region->type->context) { memset(&result, 0, sizeof(result)); C->wm.region->type->context(C, "", &result); if(result.dir) for(a=0; result.dir[a]; a++) data_dir_add(&lb, result.dir[a]); } if(C->wm.area && C->wm.area->type && C->wm.area->type->context) { memset(&result, 0, sizeof(result)); C->wm.area->type->context(C, "", &result); if(result.dir) for(a=0; result.dir[a]; a++) data_dir_add(&lb, result.dir[a]); } if(C->wm.screen && C->wm.screen->context) { bContextDataCallback cb= C->wm.screen->context; memset(&result, 0, sizeof(result)); cb(C, "", &result); if(result.dir) for(a=0; result.dir[a]; a++) data_dir_add(&lb, result.dir[a]); } return lb; }