* Bug 16365 fixed: median(m,'r'|'c') was wrong after 5dc990
[scilab.git] / scilab / modules / string / src / c / isnum.c
1 /*
2  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  * Copyright (C) 2010-2011 - DIGITEO - Allan CORNET
4  *
5  * Copyright (C) 2012 - 2016 - Scilab Enterprises
6  *
7  * This file is hereby licensed under the terms of the GNU GPL v2.0,
8  * pursuant to article 5.3.4 of the CeCILL v.2.1.
9  * This file was originally licensed under the terms of the CeCILL v2.1,
10  * and continues to be available under such terms.
11  * For more information, see the COPYING file which you should have received
12  * along with this program.
13  *
14  */
15 #include "isnum.h"
16 #include "stringToComplex.h"
17 #include "sci_malloc.h"
18 // =============================================================================
19 BOOL isNum(const char *pStr)
20 {
21     if (pStr)
22     {
23         stringToComplexError ierr = STRINGTOCOMPLEX_NO_ERROR;
24         stringToComplex(pStr, ".", FALSE, &ierr);
25         return (BOOL)(ierr == STRINGTOCOMPLEX_NO_ERROR);
26     }
27     return FALSE;
28 }
29 // =============================================================================
30 BOOL *isNumMatrix(const char **pStrs, int nbRows, int nbCols)
31 {
32     BOOL *pResults = NULL;
33     if (pStrs)
34     {
35         pResults = (BOOL*)MALLOC(sizeof(BOOL) * (nbCols * nbRows));
36         if (pResults)
37         {
38             int i = 0;
39             for (i = 0; i < nbRows * nbCols; i++)
40             {
41                 pResults[i] = isNum(pStrs[i]);
42             }
43         }
44     }
45     return pResults;
46 }
47 // =============================================================================
48 BOOL isNumW(const wchar_t* pStr)
49 {
50     if (pStr)
51     {
52         stringToComplexError ierr = STRINGTOCOMPLEX_NO_ERROR;
53         stringToComplexW(pStr, L".", FALSE, &ierr);
54         return (BOOL)(ierr == STRINGTOCOMPLEX_NO_ERROR);
55     }
56     return FALSE;
57 }
58 // =============================================================================
59 BOOL *isNumMatrixW(const wchar_t** pStrs, int nbRows, int nbCols)
60 {
61     BOOL *pResults = NULL;
62     if (pStrs)
63     {
64         pResults = (BOOL*)MALLOC(sizeof(BOOL) * (nbCols * nbRows));
65         if (pResults)
66         {
67             int i = 0;
68             for (i = 0; i < nbRows * nbCols; i++)
69             {
70                 pResults[i] = isNumW(pStrs[i]);
71             }
72         }
73     }
74     return pResults;
75 }
76 // =============================================================================
77
78