///////////////////////////////////////////////// // // _trdLib.ctl // some basic functions // // J.Mercado $v.150107 // ///////////////////////////////////////////////// trdLib_addTrdLabel(string manager) { string cfile=PROJ_PATH+"config/config"; trdLib_addLabel(manager,"AliTRD",cfile); } trdLib_addLabel(string manager,string label, string cfile) { bool w=false; string config; fileToString(cfile,config); if(strpos(config,manager)<0){ config+="\n"; config+=manager+"\n\n"; w=true; } int pos = strpos(config,manager)+strlen(manager)+1;//pos = next line string before=substr(config,0,pos); string after=substr(config,pos); if(strpos(after,label)<0){ after="\n#begin "+label+"\n#LoadAllCtrlLibs = 1\n#end "+label+"\n\n"+after; w=true; config=before+after; } else{ int ali=strpos(after,label); int another=ali; for(int i=0;i=0){ dynAppend(ddd,substr(config,0,pos+strlen(label))); config=substr(config,pos+strlen(label)); } dynAppend(ddd,config); if(dynlen(ddd)<2) return; config = ddd[1]; for(int i=2;i<=dynlen(ddd);i++){ if(strpos(ddd[i],lib)<0) config+="LoadCtrlLibs = \""+lib+"\"\n"; config+=ddd[i]; } file f = fopen(cfile,"w"); fputs(config,f); fclose(f); } int trdLib_copyFile(string infile, string outfile, dyn_string search, dyn_string replace) { string source; if(dynlen(search)!=dynlen(replace)) return -1; if(!fileToString(infile,source)) return -2; int num=0; for(int i=1;i<=dynlen(search);i++) num += strreplace(source,search[i],replace[i]); file f=fopen (outfile, "w"); fputs(source,f); fclose(f); DebugN(infile+" -> "+outfile+" "+num+" replaced"); return num; } int trdLib_copyFileName(string infile, dyn_string search, dyn_string replace) { string outfile=infile; if(dynlen(search)<1||dynlen(replace)<1) return -3; if(strreplace(outfile,search[1],replace[1])<1) return -4; return trdLib_copyFile(infile, outfile, search, replace); } trdLib_deleteTypeWithRef(string reftype){ int i,j; dyn_string dptypes; dyn_string dpnames; dyn_dyn_string dds; string type; dptypes=dpTypes(); dds=dpGetRefsToDpType(reftype); for(j=1;j<=dynlen(dds);j++){ type = dds[j][1]; // DebugN("Type: "+type); if(dynContains(dptypes,type)>0){ dpnames = dpNames("*",type); for(i=1;i<=dynlen(dpnames);i++){ DebugN("delete: "+dpnames[i]); dpDelete(dpnames[i]); } DebugN("delete type: "+type); dpTypeDelete(type); } } } trdLib_deleteWithRef(string reftype){ int i,j; dyn_string dptypes; dyn_string dpnames; dyn_dyn_string dds; string type; dptypes=dpTypes(); dds=dpGetRefsToDpType(reftype); for(j=1;j<=dynlen(dds);j++){ type = dds[j][1]; // DebugN("Type: "+type); if(dynContains(dptypes,type)>0){ dpnames = dpNames("*",type); for(i=1;i<=dynlen(dpnames);i++){ DebugN("delete: "+dpnames[i]); dpDelete(dpnames[i]); } } } } trdLib_deleteType(string type){ dyn_string dptypes; trdLib_delete(type); dptypes=dpTypes(); if(dynContains(dptypes,type)>0){ dpTypeDelete(type); DebugN("delete type: "+type); } } trdLib_delete(string type){ int i; dyn_string dptypes; dyn_string dpnames; dptypes=dpTypes(); if(dynContains(dptypes,type)>0){ dpnames = dpNames("*",type); for(i=1;i<=dynlen(dpnames);i++){ DebugN("delete: "+dpnames[i]); dpDelete(dpnames[i]); } } }