From f9afc284ce324fa3c13606ad90895beec507c249 Mon Sep 17 00:00:00 2001 From: Harpreet Date: Thu, 27 Aug 2015 02:32:30 +0530 Subject: Master File --- sci_gateway/cpp/sci_sym_set_indices.cpp | 99 +++++++++++++++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 sci_gateway/cpp/sci_sym_set_indices.cpp (limited to 'sci_gateway/cpp/sci_sym_set_indices.cpp') diff --git a/sci_gateway/cpp/sci_sym_set_indices.cpp b/sci_gateway/cpp/sci_sym_set_indices.cpp new file mode 100644 index 0000000..6b8a35a --- /dev/null +++ b/sci_gateway/cpp/sci_sym_set_indices.cpp @@ -0,0 +1,99 @@ +/* + * Implementation Symphony Tool Box for Scilab + * sci_sym_set_indices.cpp + * contains functions for setting index variables as continuous and integer values + * By Iswarya + */ +#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; +} + +} + -- cgit