Revert "Remove a duplicate declaration"
[scilab.git] / scilab / modules / elementary_functions / sci_gateway / c / sci_spones.c
1 /*
2  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  * Copyright (C) 2006 - INRIA - Allan CORNET
4  * 
5  * This file must be used under the terms of the CeCILL.
6  * This source file is licensed as described in the file COPYING, which
7  * you should have received as part of this distribution.  The terms
8  * are also available at    
9  * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
10  *
11  */
12 /*--------------------------------------------------------------------------*/ 
13 #include "gw_elementary_functions.h"
14 #include "stack-c.h"
15 #include "basic_functions.h"
16 #include "sciprint.h"
17 #include "localization.h"
18 #include "Scierror.h"
19
20 //#define _NEW_TONIO_
21 /*--------------------------------------------------------------------------*/
22 extern int C2F(intspones) (char *fname,int *id);
23 /*--------------------------------------------------------------------------*/
24 int sci_spones(char *fname,unsigned long fname_len)
25 {
26         static int id[6];
27 #ifdef _NEW_TONIO_
28         int iRows                               = 0;
29         int iCols                               = 0;
30         int iRealData                   = 0;
31         int iImgData                    = 0;
32         int iIndex                              = 0;
33         int iTotalElem                  = 0;
34         
35         int *piElemByRow                = NULL;
36         int *piColByRow                 = NULL;
37
38         double *pReturnRealData = NULL;
39         double *pReturnImgdata  = NULL;
40
41         CheckRhs(1,1);
42         CheckLhs(1,1);
43
44         if(GetType(1) != sci_sparse && GetType(1) != sci_boolean_sparse)
45         {
46                 if(GetType(1) == sci_matlab_sparse)
47                 {
48                         OverLoad(1);
49                         return 0;
50                 }
51                 else
52                 {
53                         sciprint(_("%s: argument must be a sparse matrix.\n"), fname);
54                         SciError(999);
55                         return 0;
56                 }
57         }
58
59         if(iIsComplex(1))
60         {
61                 GetRhsCSparseVar(1, &iRows, &iCols, &iTotalElem, NULL, NULL, &iRealData, &iImgData);
62
63                 //Warning, tips to use same variable in out and in !!!
64                 iAllocSparseMatrix(Rhs + 1, iRows, iCols, iTotalElem, &piElemByRow, &piColByRow, &pReturnRealData);
65                 GetRhsCSparseVar(1, &iRows, &iCols, &iTotalElem, piElemByRow, piColByRow, &iRealData, &iImgData);
66                 vDset(iTotalElem, 1, pReturnRealData, 1);
67         }
68         else
69         {
70                 GetRhsSparseVar(1, &iRows, &iCols, &iTotalElem, NULL, NULL, &iRealData);
71
72                 //Warning, tips to use same variable in out and in !!!
73                 iAllocSparseMatrix(Rhs + 1, iRows, iCols, iTotalElem, &piElemByRow, &piColByRow, &pReturnRealData);
74
75                 GetRhsSparseVar(1, &iRows, &iCols, &iTotalElem, piElemByRow, piColByRow, &iRealData);
76                 vDset(iTotalElem, 1, pReturnRealData, 1);
77         }
78         LhsVar(1) = Rhs + 1;
79         PutLhsVar();
80
81
82 #else
83         C2F(intspones)(fname,id);
84 #endif
85         return 0;
86 }
87 /*--------------------------------------------------------------------------*/