void parse_input_file(const char* filename, std::vector<Bridge>& bridges) { std::ifstream file(filename); if (!file.is_open()) { std::cerr << "[error]: Could not open file " << filename << std::endl; std::exit(1); } auto line = std::string(); // For every line in input file while (std::getline(file, line)) { auto elements = split_space(line); int32_t bridge_num = std::stoi(elements[0]); auto lans = std::vector<std::string>(); // Move lan parts from line into a separate vector std::move(elements.begin()+1, elements.end(), std::back_inserter(lans)); bridges.push_back(Bridge(bridge_num, lans)); } }
void *thread1(void *args) { DebugPrintf("Create Thread1\n"); Bridge(); return NULL; }
void Sheet(CHAIN **Chain, int Cn1, int Cn2, HBOND **HBond, COMMAND *Cmd, float **PhiPsiMap) { PATTERN **PatN, **PatP; RESIDUE *Res1, *Res3, *Res2, *Res4, *ResA, *ResB, *Res1m1, *Res3p1; int R1, R3, R2, R4, RA, RB, PatCntN = 0, PatCntP = 0, Beg; char *AntiPar1, *Par1, *AntiPar2, *Par2; register int i; PatN = (PATTERN **)ckalloc(MAXHYDRBOND*sizeof(PATTERN *)); PatP = (PATTERN **)ckalloc(MAXHYDRBOND*sizeof(PATTERN *)); AntiPar1 = (char *)ckalloc(Chain[Cn1]->NRes*sizeof(char)); /* Antiparallel strands */ Par1 = (char *)ckalloc(Chain[Cn1]->NRes*sizeof(char)); /* Parallel strands */ AntiPar2 = (char *)ckalloc(Chain[Cn2]->NRes*sizeof(char)); /* Antiparallel strands */ Par2 = (char *)ckalloc(Chain[Cn2]->NRes*sizeof(char)); /* Parallel strands */ for( i=0; i<Chain[Cn1]->NRes; i++ ) { AntiPar1[i] = 'C'; Par1[i] = 'C'; } for( i=0; i<Chain[Cn2]->NRes; i++ ) { AntiPar2[i] = 'C'; Par2[i] = 'C'; } for( R1=0; R1<Chain[Cn1]->NRes; R1++ ) { Res1 = Chain[Cn1]->Rsd[R1]; if( (!Res1->Inv->NBondDnr && !Res1->Inv->NBondAcc) || ((Cn1 != Cn2) && !Res1->Inv->InterchainHBonds) ) continue; RA = R1+1; R2 = R1+2; Res1m1 = Chain[Cn1]->Rsd[R1-1]; ResA = Chain[Cn1]->Rsd[RA]; Res2 = Chain[Cn1]->Rsd[R2]; if( R2 >= Chain[Cn1]->NRes || Res1->Prop->PhiZn == ERR || Res1->Prop->PsiZn == ERR || Res2->Prop->PhiZn == ERR || Res2->Prop->PsiZn == ERR || ResA->Prop->PhiZn == ERR || ResA->Prop->PsiZn == ERR ) continue; if( Cn1 != Cn2 ) Beg = 0; else Beg = R1+1; for( R3=Beg; R3<Chain[Cn2]->NRes; R3++ ) { /* Process anti-parallel strands */ Res3 = Chain[Cn2]->Rsd[R3]; if( (!Res3->Inv->NBondAcc && !Res3->Inv->NBondDnr ) || ((Cn1 != Cn2) && !Res3->Inv->InterchainHBonds) ) continue; RB = R3-1; R4 = R3-2; Res3p1 = Chain[Cn2]->Rsd[R3+1]; ResB = Chain[Cn2]->Rsd[RB]; Res4 = Chain[Cn2]->Rsd[R4]; if( Cn1 != Cn2 || R3 - R1 >= 3 ) Link(HBond,Chain,Cn1,Cn2,Res1,Res3,Res3,Res1,Res1,Res3, PhiPsiMap,PatN,&PatCntN,"1331",Cmd->Treshold_E1,Cmd,0); if( R2 < Chain[Cn1]->NRes && ((Cn1 != Cn2 && R4 >= 0) || R4-R2 >=2 ) ) Link(HBond,Chain,Cn2,Cn1,Res3,Res1,Res2,Res4,ResB,ResA, PhiPsiMap,PatN,&PatCntN,"3124",Cmd->Treshold_E1,Cmd,0); if( ((Cn1 != Cn2 && RB >= 0 ) || RB-R1 > 4) && ( RA >= Chain[Cn1]->NRes || (Cn1 == Cn2 && R3-RA <= 4 ) || !Link(HBond,Chain,Cn1,Cn2,Res1,Res3,Res3,ResA,NULL,Res3, PhiPsiMap,PatN,&PatCntN,"133A",Cmd->Treshold_E1,Cmd,1)) && ( R1-1 < 0 || !Link(HBond,Chain,Cn1,Cn2,Res1m1,ResB,ResB,Res1,NULL,ResB, PhiPsiMap,PatN,&PatCntN,"1-BB1",Cmd->Treshold_E1,Cmd,1))) Link(HBond,Chain,Cn1,Cn2,Res1,Res3,ResB,Res1,Res1,NULL, PhiPsiMap,PatN,&PatCntN,"13B1",Cmd->Treshold_E1,Cmd,0); if( (RA < Chain[Cn1]->NRes && (Cn1 != Cn2 || R3-RA > 4)) && ( (Cn1 == Cn2 && RB-R1 <= 4 ) || (Cn1 != Cn2 && RB < 0 ) || !Link(HBond,Chain,Cn1,Cn2,Res1,Res3,ResB,Res1,Res1,NULL, PhiPsiMap,PatN,&PatCntN,"13B1",Cmd->Treshold_E1,Cmd,1)) && ( R3+1 >= Chain[Cn2]->NRes || !Link(HBond,Chain,Cn1,Cn2,ResA,Res3p1,Res3,ResA,ResA,NULL, PhiPsiMap,PatN,&PatCntN,"A3+3A",Cmd->Treshold_E1,Cmd,1))) Link(HBond,Chain,Cn1,Cn2,Res1,Res3,Res3,ResA,NULL,Res3, PhiPsiMap,PatN,&PatCntN,"133A",Cmd->Treshold_E1,Cmd,0); /* Process parallel strands */ R4 = R3+2; RB = R3+1; ResB = Chain[Cn2]->Rsd[RB]; Res4 = Chain[Cn2]->Rsd[R4]; if( (Cn1 == Cn2 && abs(R3-R1) <= 3) || R4 >= Chain[Cn2]->NRes ) continue; if( R2 < Chain[Cn1]->NRes && (Cn1 != Cn2 || abs(R2-R3) > 3) ) Link(HBond,Chain,Cn2,Cn1,Res3,Res1,Res2,Res3,Res3,ResA, PhiPsiMap,PatP,&PatCntP,"3123",Cmd->Treshold_E2,Cmd,0); if( R4 < Chain[Cn2]->NRes && (Cn1 != Cn2 || abs(R4-R1) > 3) ) Link(HBond,Chain,Cn1,Cn2,Res1,Res3,Res4,Res1,Res1,ResB, PhiPsiMap,PatP,&PatCntP,"1341",Cmd->Treshold_E2,Cmd,0); } } FilterAntiPar(PatN,PatCntN); FilterPar(PatP,PatCntP); MergePatternsAntiPar(PatN,PatCntN); MergePatternsPar(PatP,PatCntP); if( Cmd->Info ) { PrintPatterns(PatN,PatCntN,Chain,Cn1,Cn2); PrintPatterns(PatP,PatCntP,Chain,Cn1,Cn2); } FillAsnAntiPar(AntiPar1,AntiPar2,Chain,Cn1,Cn2,PatN,PatCntN,Cmd); FillAsnPar(Par1,Par2,Chain,Cn1,Cn2,PatP,PatCntP,Cmd); Bridge(AntiPar1,AntiPar2,Chain,Cn1,Cn2,PatN,PatCntN); Bridge(Par1,Par2,Chain,Cn1,Cn2,PatP,PatCntP); for( i=0; i<Chain[Cn1]->NRes; i++ ) if( AntiPar1[i] == 'N' || Par1[i] == 'P' ) Chain[Cn1]->Rsd[i]->Prop->Asn = 'E'; else if( AntiPar1[i] == 'B' || Par1[i] == 'B' ) Chain[Cn1]->Rsd[i]->Prop->Asn = 'B'; else if( AntiPar1[i] == 'b' || Par1[i] == 'b' ) Chain[Cn1]->Rsd[i]->Prop->Asn = 'b'; for( i=0; i<Chain[Cn2]->NRes; i++ ) if( Chain[Cn2]->Rsd[i]->Prop->Asn == 'E' ) continue; else if( AntiPar2[i] == 'N' || Par2[i] == 'P' ) Chain[Cn2]->Rsd[i]->Prop->Asn = 'E'; else if( AntiPar2[i] == 'B' || Par2[i] == 'B' ) Chain[Cn2]->Rsd[i]->Prop->Asn = 'B'; else if( AntiPar2[i] == 'b' || Par2[i] == 'b' ) Chain[Cn2]->Rsd[i]->Prop->Asn = 'b'; /* for( i=0; i<PatCntN; i++ ) free(PatN[i]); for( i=0; i<PatCntP; i++ ) free(PatP[i]); */ free(PatN); free(PatP); free(AntiPar1); free(Par1); free(AntiPar2); free(Par2); }
int main1() { char ch; clrscr(); printf("\n"); textcolor(CYAN); cprintf(" Solutions to Basic Electronics"); printf("\n\n"); textcolor(MAGENTA); cprintf(" - S.P.Prathyush"); printf("\n\n\n"); textcolor(WHITE); cprintf(" Enter The Topic"); printf("\n\n\t 1.Half Wave Rectifier \n\t 2.Full Wave Rectifier \n\t 3.Bridge Rectifier \n\t 4.Transistor \n\t 5.Solve by Equations \n\t 6.Definitions \n\t 7.Question Paper Pattern \n\t 8.Syllabus \n\t 9.Reference"); gotoxy(40,7); printf(" Special Features:"); gotoxy(40,9); printf(" a.Formula List"); gotoxy(40,10); printf(" b.Features"); gotoxy(40,11); printf(" c.View Credits"); printf("\n\n\t"); textcolor(YELLOW); gotoxy(35,23); cprintf(" Press Q to Quit "); printf("\n\n\t"); gotoxy(35,24); cprintf(" Enter Your Choice : "); textcolor(WHITE); printf(""); date(); ch=getche(); switch(ch) { case '1': HWR(); break; case '2': FWR(); break; case '3': Bridge(); break; case '4': Transistor(); break; case '5': Equations(); break; case '6': definitions(); break; case '7': pattern(); break; case '8': syllabus(); break; case '9': reference(); break; case 'a': Formula(); break; case 'b': Features(); break; case 'c': credits(); break; case 'Q': exit(ch-'Q'); break; default: printf("\n\n\t"); textcolor(RED+BLINK); cprintf(" Invalid Choice"); invalid(); getch(); end1(); break; } return 0; }