void GFread(FILE *file,GF2n&m, FUNCTION&ff, GF2n&a,GF2n&b,GF2n&Px,GF2n&Py,GF2n&n,GF2n&Qx,GF2n&Qy) { if(!file) { printf("error file status\n"); return; } int i=0; char*input=new char[1000]; char*left=new char[1000]; char*right=new char[1000];char*tmp=new char[1000]; size_t len = 1000; while(fgets(input,1000,file)) { input=trimwhitespace(input); int pos=getFlagPos(input,'='); memset(left,0,1000); memset(right,0,1000); strncpy(left,input,pos); strncpy(right,input+pos+1,strlen(input)-pos-1); left=trimwhitespace(left); right=trimwhitespace(right); if(!strcmp(left,"m")) getFromStr(right,m); else if(!strcmp(left,"f")) { memset(tmp,0,1000); strncpy(tmp,right+1,strlen(right)-2); int len=0; char**result=str_split(tmp,len); ff.f=(GF2n*)malloc(sizeof(GF2n)*len);ff.num=len; for(int i=0;i<len;i++) getFromStr(trimwhitespace(result[i]),ff.f[i]); } else if(!strcmp(left,"a")) getFromStrConvertHexToDec(right,a); else if(!strcmp(left,"b")) getFromStrConvertHexToDec(right,b); else if(!strcmp(left,"P_x")) getFromStrConvertHexToDec(right,Px); else if(!strcmp(left,"P_y")) getFromStrConvertHexToDec(right,Py); else if(!strcmp(left,"n")) getFromStrConvertHexToDec(right,n); else if(!strcmp(left,"Q_x")) getFromStrConvertHexToDec(right,Qx); else if(!strcmp(left,"Q_y")) getFromStrConvertHexToDec(right,Qy); } }
void refreshUserStats() { ssvuj::Obj root{getFromStr(currentUserStatsStr)}; currentUserStats = ssvuj::getExtr<UserStats>(root); }