utf: module string 2
[scilab.git] / scilab / modules / string / src / c / isascii.c
1 /*
2  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  * Copyright (C) INRIA - Allan CORNET
4  * Copyright (C) DIGITEO - Allan CORNET - 2009
5  *
6  * This file must be used under the terms of the CeCILL.
7  * This source file is licensed as described in the file COPYING, which
8  * you should have received as part of this distribution.  The terms
9  * are also available at
10  * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
11  *
12  */
13
14 /*--------------------------------------------------------------------------*/
15 #include <string.h>
16 #include "isascii.h"
17 #include "sci_malloc.h"
18 #include "charEncoding.h"
19
20 #ifdef _MSC_VER
21 #include <ctype.h>
22 #define isascii __isascii
23 #endif
24 /*--------------------------------------------------------------------------*/
25 BOOL* isasciiStringW(const wchar_t* input_string, int* returnedSize)
26 {
27     BOOL *returnedValues = NULL;
28     *returnedSize = 0;
29
30     if (input_string)
31     {
32         int i = 0;
33         int length_input_string = (int)wcslen(input_string);
34         *returnedSize = length_input_string;
35
36         if (length_input_string > 0)
37         {
38             returnedValues = (BOOL*)MALLOC(sizeof(BOOL) * length_input_string);
39             if (returnedValues)
40             {
41                 for (i = 0; i < length_input_string; i++)
42                 {
43                     if (iswascii(input_string[i]))
44                     {
45                         returnedValues[i] = TRUE;
46                     }
47                     else
48                     {
49                         returnedValues[i] = FALSE;
50                     }
51                 }
52             }
53         }
54     }
55     return returnedValues;
56 }
57 /*--------------------------------------------------------------------------*/
58 BOOL* isasciiString(const char* input_string, int* returnedSize)
59 {
60     wchar_t* ws = to_wide_string(input_string);
61     BOOL* ret = isasciiStringW(ws, returnedSize);
62     FREE(ws);
63     return ret;
64 }
65
66 BOOL* isasciiMatrix(double* inputValues, int inputSize)
67 {
68     BOOL *returnedValues = NULL;
69     if (inputSize && inputValues != NULL)
70     {
71         int i = 0;
72         returnedValues = (BOOL*)MALLOC(sizeof(BOOL) * inputSize);
73         if (returnedValues)
74         {
75             for (i = 0; i < inputSize; i++)
76             {
77                 if ( iswascii(inputValues[i]) )
78                 {
79                     returnedValues[i] = TRUE;
80                 }
81                 else
82                 {
83                     returnedValues[i] = FALSE;
84                 }
85             }
86         }
87     }
88     return returnedValues;
89 }
90 /*--------------------------------------------------------------------------*/