char StreamExtType(anynode* AnyNode, fourcc_t ClassFilter, const tchar_t *Ext) { char Result = FTYPE_UNDEFINED; tchar_t *s; size_t i; array List; StreamGenExts(AnyNode,&List,ClassFilter,NULL); for (s=ARRAYBEGIN(List,tchar_t);s;) { for (i=0;s[i] && s[i]==Ext[i];i++) {} if (!Ext[i] && s[i] == ':') { Result = (char)s[i+1]; break; } s = tcschr(s,';'); if (s) ++s; } ArrayClear(&List); return Result; }
bool_t StreamGenExts(anynode* AnyNode,array* Exts, fourcc_t ClassFilter, const tchar_t* TypeFilter) { fourcc_t* i; array List; ArrayInit(Exts); if (TypeFilter && !TypeFilter[0]) TypeFilter = NULL; NodeEnumClass(AnyNode,&List,ClassFilter); for (i=ARRAYBEGIN(List,fourcc_t);i!=ARRAYEND(List,fourcc_t);++i) { const tchar_t* s = NodeStr2(AnyNode,*i,NODE_EXTS); while (s && s[0]) { size_t n; for (n=0;s[n] && s[n]!=';' && s[n]!=':';++n) {} if (!TypeFilter || (s[n]==':' && tcschr(TypeFilter,s[n+1])!=NULL)) { while (s[n] && s[n]!=';') ++n; if (n) { if (!ARRAYEMPTY(*Exts)) ArrayAppend(Exts,T(";"),sizeof(tchar_t),64); ArrayAppend(Exts,s,n*sizeof(tchar_t),64); } } s = tcschr(s,';'); if (s) ++s; } } ArrayClear(&List); if (!ARRAYEMPTY(*Exts) && !ArrayAppend(Exts,T("\0"),sizeof(tchar_t),64)) ArrayClear(Exts); return !ARRAYEMPTY(*Exts); }
void String_Done() { MemHandle *i; context* p = Context(); StringFree(); for (i=ARRAYBEGIN(p->StrModule,MemHandle);i!=ARRAYEND(p->StrModule,MemHandle);++i) { MemHandleUnlock(*i); DmReleaseResource(*i); } ArrayClear(&p->StrModule); }
static int Init(settings* p) { array List; int* i; p->Menu = WinMenuFind(&p->Win,SETTINGS_PAGES-1); p->Win.Flags &= ~(WIN_PROP_RESTART|WIN_PROP_SOFTRESET|WIN_PROP_RESYNC|WIN_PROP_CHANGED); NodeEnumClass(&List,NODE_CLASS); for (i=ARRAYBEGIN(List,int);i!=ARRAYEND(List,int);++i) if ((NodeClassDef(*i)->Flags & (CF_GLOBAL|CF_SETTINGS))==(CF_GLOBAL|CF_SETTINGS)) { WinMenuInsert(&p->Win,p->Menu,SETTINGS_PAGES-1,SETTINGS_PAGES+p->Count,LangStr(*i,NODE_NAME)); p->Node[p->Count++] = *i; if (p->Count==MAXPAGE) break; } ArrayClear(&List); WinMenuDelete(&p->Win,p->Menu,SETTINGS_PAGES-1); UpdatePage(p); return ERR_NONE; }