TStr TEnv::GetExeFNm() const { TStr ExeFNm = GetArg(0); if (ExeFNm.IsPrefix("//?")) { // observed on Win64 CGI ExeFNm = ExeFNm.GetSubStr(3, ExeFNm.Len()); } return ExeFNm; }
////////////////////////////////////// // URL-Redirect-Function TSASFunRedirect::TSASFunRedirect(const TStr& FunNm, const TStr& SettingFNm): TSAppSrvFun(FunNm, saotUndef) { printf("Loading redirects %s\n", FunNm.CStr()); TFIn FIn(SettingFNm); TStr LnStr, OrgFunNm; while (FIn.GetNextLn(LnStr)) { TStrV PartV; LnStr.SplitOnAllCh('\t', PartV, false); if (PartV.Empty()) { continue; } if (PartV[0].Empty()) { // parameters EAssert(PartV.Len() >= 3); TStr FldNm = PartV[1]; TStr FldVal = PartV[2]; if (FldVal.IsPrefix("$")) { MapH.GetDat(OrgFunNm).FldNmMapH.AddDat(FldVal.Right(1), FldNm); } else { MapH.GetDat(OrgFunNm).FldNmValPrV.Add(TStrKd(FldNm, FldVal)); } } else { // new function EAssert(PartV.Len() >= 2); OrgFunNm = PartV[0]; MapH.AddDat(OrgFunNm).FunNm = PartV[1]; printf(" %s - %s\n", PartV[0].CStr(), PartV[1].CStr()); } } printf("Done\n"); }
///////////////////////////////////////////////// // Cyc-Base int TCycBs::AddVNm(const TStr& VNm){ int VId; if (VNmToVrtxH.IsKey(VNm.CStr(), VId)){ return VId; } else { VId=VNmToVrtxH.AddKey(VNm); TCycVrtx& Vrtx=VNmToVrtxH[VId]; Vrtx.PutVId(VId); // set flags based on vertex-name string if (VNm.IsPrefix("~")){ Vrtx.SetFlag(cvfBackLink); } else if (VNm.IsPrefix("#$")&&(!VNm.IsChIn(' '))){ Vrtx.SetFlag(cvfCycL); if (VNm.Len()>2){ char Ch=VNm[2]; if (('a'<=Ch)&&(Ch<='z')){ Vrtx.SetFlag(cvfCycLPred); } else { Vrtx.SetFlag(cvfCycLConst); } } } else if (VNm.IsPrefix("(#$")){ Vrtx.SetFlag(cvfCycL); Vrtx.SetFlag(cvfCycLExpr); } else { if (VNm.IsFlt()){ Vrtx.SetFlag(cvfNum); } else { Vrtx.SetFlag(cvfStr); } } return VId; } }