QVariant RequestManager::requestVideoList(QTcpSocket *caller, QVariant params) { QStringList videos; int max_return = -1; if(!params.isNull()) { // Get the packed max_return value QJsonObject max_return_obj(params.toJsonObject()); QJsonValue max_ret_val( max_return_obj["max_return"]); QVariant max_ret_var(max_ret_val.toVariant()); if(max_ret_var.type() == QVariant::Int) max_return = max_ret_var.toInt(); } videos = VideoLocator::findVideos(mVideoDirectory); if(max_return != -1) { int amount_to_remove = videos.length()-max_return; //only return the amount passed in for(int i = 0; i < amount_to_remove; ++i) { videos.pop_back(); } } QJsonObject ret_object; ret_object["VideoList"] = QJsonValue::fromVariant(QVariant::fromValue(videos)); QVariant ret_var(QVariant::fromValue(ret_object)); //qDebug() << "Sending back" << ret_var; return ret_var; }
/* Print A_var types. Indent d spaces. */ static void ret_var( A_var *v, int d) { //indent( d); switch ((*v)->kind) { case A_simpleVar: //fprintf( "simpleVar(%s)", S_name(v->u.simple)); break; case A_fieldVar: //fprintf( "%s\n", "fieldVar("); ret_var( &(*v)->u.field.var, d+1); //fprintf( "%s\n", ","); //indent( d+1); //fprintf( "%s)", S_name((*v)->u.field.sym)); break; case A_subscriptVar: //fprintf( "%s\n", "subscriptVar("); ret_var( &(*v)->u.subscript.var, d+1); //fprintf( "%s\n", ","); retScan_exp( &(*v)->u.subscript.exp, d+1); //fprintf( "%s", ")"); break; default: assert(0); } }
/* Print A_var types. Indent d spaces. */ void retScan_exp( A_exp *v, int d) { //printf("Entered here retexp %d\n", (*v)->kind); //indent( d); switch ((*v)->kind) { case A_varExp: //fprintf( "varExp(\n"); //printf( "varExp(\n"); //printf("here 1\n"); //printf("here 2\n"); //fprintf( "%s", ")"); break; case A_nilExp: //fprintf( "nilExp()"); //printf( "nilExp()"); break; case A_intExp: //fprintf( "intExp(%d)", (*v)->u.intt); //printf( "intExp(%d)", (*v)->u.intt); break; case A_stringExp: //fprintf( "stringExp(%s)", (*v)->u.stringg); //printf( "stringExp(%s)", (*v)->u.stringg); break; case A_callExp: //fprintf( "callExp(%s,\n", S_name((*v)->u.call.func)); //printf( "callExp(%s,\n", S_name((*v)->u.call.func)); ret_expList( &(*v)->u.call.args, d+1); //fprintf( ")"); break; case A_opExp: //fprintf( "opExp(\n"); //printf( "NewopExp(\n"); //indent( d+1); //printf("Folded: %d",folded); //pr_exp(stdout,(*v),0);printf("\n"); ret_oper( (*v)->u.op.oper); //fprintf( ",\n"); retScan_exp( &(*v)->u.op.left, d+1); //fprintf( ",\n"); retScan_exp( &(*v)->u.op.right, d+1); ////fprintf( ")"); break; case A_recordExp: ////fprintf( "recordExp(%s,\n", S_name((*v)->u.record.typ)); ret_efieldList( &(*v)->u.record.fields, d+1); ////fprintf( ")"); break; case A_seqExp: ////fprintf( "seqExp(\n"); ret_expList( &(*v)->u.seq, d+1); ////fprintf( ")"); break; case A_assignExp: ////fprintf( "assignExp(\n"); //printf( "assignExp(\n"); if(((*v)->u.assign.var)->kind == A_simpleVar && ((*v)->u.assign.exp)->kind == A_intExp) { printf("Simplevar found :%s with constant on the right : %d \n", S_name(((*v)->u.assign.var)->u.simple),((*v)->u.assign.exp)->u.intt); Var_var vin=checked_malloc(sizeof(*vin)); vin->v = ((*v)->u.assign.var)->u.simple; vin->c = ((*v)->u.assign.exp)->u.intt; if(Saved_CT==NULL){ Saved_CT=Const_tableEnter(vin,NULL); printf("Entered into table!\n"); printf("Saved_CT:\n"); Const_tablePrintExt(Saved_CT); } else{ if(Const_tableCheck(vin,&Saved_CT)==1) { Saved_CT=Const_tableEnter(vin,Saved_CT); printf("Entered into table!\n"); printf("Saved_CT:\n"); Const_tablePrintExt(Saved_CT); } } } else { if(((*v)->u.assign.var)->kind == A_simpleVar) { Var_var vin=checked_malloc(sizeof(*vin)); vin->v = ((*v)->u.assign.var)->u.simple; vin->c = NULL; int k=Const_tableCheck(vin,&Saved_CT); } } ret_var( &(*v)->u.assign.var, d+1); ////fprintf( ",\n"); //printf("fine here11!!!"); retScan_exp( &(*v)->u.assign.exp, d+1); ////fprintf( ")"); break; case A_ifExp: ////fprintf( "iffExp(\n"); retScan_exp( &(*v)->u.iff.test, d+1); ////fprintf( ",\n"); retScan_exp( &(*v)->u.iff.then, d+1); if ((*v)->u.iff.elsee) { /* else is optional */ ////fprintf( ",\n"); retScan_exp( &(*v)->u.iff.elsee, d+1); } //fprintf( ")"); break; case A_whileExp: //fprintf( "whileExp(\n"); retScan_exp( &(*v)->u.whilee.test, d+1); //fprintf( ",\n"); retScan_exp( &(*v)->u.whilee.body, d+1); //fprintf( ")\n"); break; case A_forExp: //fprintf( "forExp(%s,\n", S_name((*v)->u.forr.var)); retScan_exp( &(*v)->u.forr.lo, d+1); //fprintf( ",\n"); retScan_exp( &(*v)->u.forr.hi, d+1); //fprintf( "%s\n", ","); retScan_exp( &(*v)->u.forr.body, d+1); //fprintf( ",\n"); //indent( d+1); //fprintf( "%s", (*v)->u.forr.escape ? "TRUE)" : "FALSE)"); break; case A_breakExp: //fprintf( "breakExp()"); break; case A_letExp: //fprintf( "letExp(\n"); ret_decList( &(*v)->u.let.decs, d+1); //fprintf( ",\n"); retScan_exp( &(*v)->u.let.body, d+1); //fprintf( ")"); break; case A_arrayExp: //fprintf( "arrayExp(%s,\n", S_name((*v)->u.array.typ)); retScan_exp( &(*v)->u.array.size, d+1); //fprintf( ",\n"); retScan_exp( &(*v)->u.array.init, d+1); //fprintf( ")"); break; default: assert(0); } }
/* Print A_var types. Indent d spaces. */ void retFold_exp( A_exp *v, int d) { //printf("Entered here retexp %d\n", (*v)->kind); //indent( d); switch ((*v)->kind) { case A_varExp: //fprintf( "varExp(\n"); //printf( "varExp(\n"); ret_var( &(*v)->u.var, d+1); //f//printf( "%s", ")"); break; case A_nilExp: //fprintf( "nilExp()"); //printf( "nilExp()"); break; case A_intExp: //fprintf( "intExp(%d)", (*v)->u.intt); //printf( "intExp(%d)", (*v)->u.intt); break; case A_stringExp: //fprintf( "stringExp(%s)", (*v)->u.stringg); //printf( "stringExp(%s)", (*v)->u.stringg); break; case A_callExp: //fprintf( "callExp(%s,\n", S_name((*v)->u.call.func)); //printf( "callExp(%s,\n", S_name((*v)->u.call.func)); ret_expList( &(*v)->u.call.args, d+1); //fprintf( ")"); break; case A_opExp: //fprintf( "opExp(\n"); //printf( "opExp(\n"); //indent( d+1); (*v)=ret_Refold((*v)->pos, (*v)->u.op.oper, (*v)->u.op.left, (*v)->u.op.right); //printf("Folded: %d",folded); //pr_exp(stdout,(*v),0); if(folded==0){ ret_oper( (*v)->u.op.oper); //fprintf( ",\n"); retFold_exp( &(*v)->u.op.left, d+1); //fprintf( ",\n"); retFold_exp( &(*v)->u.op.right, d+1); ////fprintf( ")"); } else { folded=0; } break; case A_recordExp: ////fprintf( "recordExp(%s,\n", S_name((*v)->u.record.typ)); ret_efieldList( &(*v)->u.record.fields, d+1); ////fprintf( ")"); break; case A_seqExp: ////fprintf( "seqExp(\n"); ret_expList( &(*v)->u.seq, d+1); ////fprintf( ")"); break; case A_assignExp: ////fprintf( "assignExp(\n"); //printf( "assignExp(\n"); ret_var( &(*v)->u.assign.var, d+1); ////fprintf( ",\n"); //printf("fine here11!!!"); retFold_exp( &(*v)->u.assign.exp, d+1); ////fprintf( ")"); break; case A_ifExp: ////fprintf( "iffExp(\n"); retFold_exp( &(*v)->u.iff.test, d+1); ////fprintf( ",\n"); retFold_exp( &(*v)->u.iff.then, d+1); if ((*v)->u.iff.elsee) { /* else is optional */ ////fprintf( ",\n"); retFold_exp( &(*v)->u.iff.elsee, d+1); } //fprintf( ")"); break; case A_whileExp: //fprintf( "whileExp(\n"); retFold_exp( &(*v)->u.whilee.test, d+1); //fprintf( ",\n"); retFold_exp( &(*v)->u.whilee.body, d+1); //fprintf( ")\n"); break; case A_forExp: //fprintf( "forExp(%s,\n", S_name((*v)->u.forr.var)); retFold_exp( &(*v)->u.forr.lo, d+1); //fprintf( ",\n"); retFold_exp( &(*v)->u.forr.hi, d+1); //fprintf( "%s\n", ","); retFold_exp( &(*v)->u.forr.body, d+1); //fprintf( ",\n"); //indent( d+1); //fprintf( "%s", (*v)->u.forr.escape ? "TRUE)" : "FALSE)"); break; case A_breakExp: //fprintf( "breakExp()"); break; case A_letExp: //fprintf( "letExp(\n"); ret_decList( &(*v)->u.let.decs, d+1); //fprintf( ",\n"); retFold_exp( &(*v)->u.let.body, d+1); //fprintf( ")"); break; case A_arrayExp: //fprintf( "arrayExp(%s,\n", S_name((*v)->u.array.typ)); retFold_exp( &(*v)->u.array.size, d+1); //fprintf( ",\n"); retFold_exp( &(*v)->u.array.init, d+1); //fprintf( ")"); break; default: assert(0); } }
/* Print A_var types. Indent d spaces. */ void retReplace_exp( A_exp *v, int d) { //printf("Entered here retexp %d\n", (*v)->kind); //indent( d); switch ((*v)->kind) { case A_varExp: //fprintf( "varExp(\n"); //printf( "varExp(\n"); if(((*v)->u.var)->kind == A_simpleVar) { if(ret_TableMatch((*v)->u.var)) { //printf("here 1\n"); printf("Replacing Variable %s ",S_name(((*v)->u.var)->u.simple)); (*v) = A_IntExp(((*v)->u.var)->pos,current_Const); //printf("here 2\n"); } } else { ret_var( &(*v)->u.var, d+1); } //f//printf( "%s", ")"); break; case A_nilExp: //fprintf( "nilExp()"); //printf( "nilExp()"); break; case A_intExp: //fprintf( "intExp(%d)", (*v)->u.intt); //printf( "intExp(%d)", (*v)->u.intt); break; case A_stringExp: //fprintf( "stringExp(%s)", (*v)->u.stringg); //printf( "stringExp(%s)", (*v)->u.stringg); break; case A_callExp: //fprintf( "callExp(%s,\n", S_name((*v)->u.call.func)); //printf( "callExp(%s,\n", S_name((*v)->u.call.func)); ret_expList( &(*v)->u.call.args, d+1); //fprintf( ")"); break; case A_opExp: ret_oper( (*v)->u.op.oper); //fprintf( ",\n"); retReplace_exp( &(*v)->u.op.left, d+1); //fprintf( ",\n"); retReplace_exp( &(*v)->u.op.right, d+1); ////fprintf( ")"); break; case A_recordExp: ////fprintf( "recordExp(%s,\n", S_name((*v)->u.record.typ)); ret_efieldList( &(*v)->u.record.fields, d+1); ////fprintf( ")"); break; case A_seqExp: ////fprintf( "seqExp(\n"); ret_expList( &(*v)->u.seq, d+1); ////fprintf( ")"); break; case A_assignExp: ////fprintf( "assignExp(\n"); //printf( "assignExp(\n"); ret_var( &(*v)->u.assign.var, d+1); ////fprintf( ",\n"); //printf("fine here11!!!"); retReplace_exp( &(*v)->u.assign.exp, d+1); ////fprintf( ")"); break; case A_ifExp: ////fprintf( "iffExp(\n"); retReplace_exp( &(*v)->u.iff.test, d+1); ////fprintf( ",\n"); retReplace_exp( &(*v)->u.iff.then, d+1); if ((*v)->u.iff.elsee) { /* else is optional */ ////fprintf( ",\n"); retReplace_exp( &(*v)->u.iff.elsee, d+1); } //fprintf( ")"); break; case A_whileExp: //fprintf( "whileExp(\n"); retReplace_exp( &(*v)->u.whilee.test, d+1); //fprintf( ",\n"); retReplace_exp( &(*v)->u.whilee.body, d+1); //fprintf( ")\n"); break; case A_forExp: //fprintf( "forExp(%s,\n", S_name((*v)->u.forr.var)); retReplace_exp( &(*v)->u.forr.lo, d+1); //fprintf( ",\n"); retReplace_exp( &(*v)->u.forr.hi, d+1); //fprintf( "%s\n", ","); retReplace_exp( &(*v)->u.forr.body, d+1); //fprintf( ",\n"); //indent( d+1); //fprintf( "%s", (*v)->u.forr.escape ? "TRUE)" : "FALSE)"); break; case A_breakExp: //fprintf( "breakExp()"); break; case A_letExp: //fprintf( "letExp(\n"); ret_decList( &(*v)->u.let.decs, d+1); //fprintf( ",\n"); retReplace_exp( &(*v)->u.let.body, d+1); //fprintf( ")"); break; case A_arrayExp: //fprintf( "arrayExp(%s,\n", S_name((*v)->u.array.typ)); retReplace_exp( &(*v)->u.array.size, d+1); //fprintf( ",\n"); retReplace_exp( &(*v)->u.array.init, d+1); //fprintf( ")"); break; default: assert(0); } }