// Copyright (C) 2015 - IIT Bombay - FOSSEE // // This file must be used under the terms of the CeCILL. // This source file is licensed as described in the file COPYING, which // you should have received as part of this distribution. The terms // are also available at // http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt // Author: Iswarya // Organization: FOSSEE, IIT Bombay // Email: toolbox@scilab.in #include #include "sci_iofunc.hpp" extern sym_environment* global_sym_env;//defined in globals.cpp extern "C" { #include #include #include #include #include //This function is for setting a index variable to be continuous int sci_sym_set_continuous(char *fname, unsigned long fname_len){ // Error management variable SciErr sciErr; double status=1.0;//assume error status int index;//to indicate the index of the variable to be set continuous int output=0;//out parameter for the load mps function CheckInputArgument(pvApiCtx, 1, 1);//Check we have exactly one argument as input or not CheckOutputArgument(pvApiCtx, 1, 1);//Check we have exactly one argument on output side or not getUIntFromScilab(1,&index); //ensure that environment is active if(global_sym_env==NULL){ sciprint("Error: Symphony environment not initialized. Please run 'sym_open()' first.\n"); } else { output=sym_set_continuous(global_sym_env,index);//setting the variable continuous if(output==FUNCTION_TERMINATED_ABNORMALLY) { status=1.0;//function did not invoke successfully sciprint("An error occured.\n"); } else if(output==FUNCTION_TERMINATED_NORMALLY) { status=0.0;//no error in executing the function sciprint("Variable with index %d is now continuous.\n",index); } } if(returnDoubleToScilab(status)) return 1; return 0; } //This function is for setting a index variable to be integer int sci_sym_set_integer(char *fname, unsigned long fname_len){ // Error management variable SciErr sciErr; double status=1.0;//assume error status int index;//to indicate the index of the variable to be set continuous int output=0;//out parameter for the load mps function CheckInputArgument(pvApiCtx, 1, 1);//Check we have exactly one argument as input or not CheckOutputArgument(pvApiCtx, 1, 1);//Check we have exactly one argument on output side or not getUIntFromScilab(1,&index); //ensure that environment is active if(global_sym_env==NULL){ sciprint("Error: Symphony environment not initialized. Please run 'sym_open()' first.\n"); } else { output=sym_set_integer(global_sym_env,index);//setting the variable continuous if(output==FUNCTION_TERMINATED_ABNORMALLY) { status=1.0;//function did not invoke successfully sciprint("An error occured.\n"); } else if(output==FUNCTION_TERMINATED_NORMALLY) { status=0.0;//no error in executing the function sciprint("Variable with index %d is now constrained to be an integer.\n",index); } } if(returnDoubleToScilab(status)) return 1; return 0; } }