wcstod no more convert d and D characters
[scilab.git] / scilab / modules / string / src / c / cvstr.c
1
2 /*
3  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
4  * Copyright (C) INRIA - Allan CORNET , Cong WU
5  *
6  * Copyright (C) 2012 - 2016 - Scilab Enterprises
7  *
8  * This file is hereby licensed under the terms of the GNU GPL v2.0,
9  * pursuant to article 5.3.4 of the CeCILL v.2.1.
10  * This file was originally licensed under the terms of the CeCILL v2.1,
11  * and continues to be available under such terms.
12  * For more information, see the COPYING file which you should have received
13  * along with this program.
14  *
15  */
16
17 /*--------------------------------------------------------------------------*/
18 #include <string.h>
19 #include "cvstr.h"
20 #include "core_math.h"
21 #include "getfastcode.h"
22 /*--------------------------------------------------------------------------*/
23 /* Table of constant values */
24 static int cx1 = 1;
25 static int c_n1 = -1;
26 /*--------------------------------------------------------------------------*/
27 int C2F(cvstr)(int * n, int * line, char * str, int * job, unsigned long str_len)
28 {
29     if (*job == 0)
30     {
31         C2F(asciitocode)(n, line, str, &cx1, str_len);
32     }
33     else
34     {
35         C2F(codetoascii)(n, line, str, str_len);
36     }
37     return 0;
38 }
39 /*--------------------------------------------------------------------------*/
40 int C2F(cvstr1)(int *n, int * line, char * str, int * job,      unsigned long  str_len)
41 {
42     if (*job == 0)
43     {
44         C2F(asciitocode)(n, line, str, &c_n1, str_len);
45     }
46     else
47     {
48         C2F(codetoascii)(n, line, str, str_len);
49     }
50     return 0;
51 }
52 /*--------------------------------------------------------------------------*/
53 int C2F(codetoascii)(int *n, int * line, char * str, unsigned long str_len)
54 {
55     int j = 0;
56     int nn = 0;
57
58     /* check *n value */
59     if  (*n >= 0)
60     {
61         nn = *n;
62     }
63
64     /* conversion code -> ascii */
65     while (nn--)
66     {
67         str[j] = convertScilabCodeToAsciiCode(line[j]);
68         j++;
69     }
70     return 0;
71 }
72 /*--------------------------------------------------------------------------*/
73 int C2F(asciitocode)(int * n, int * line, char * str, int * flagx, unsigned long  str_len)
74 {
75     int nn = 0;
76
77     if (*flagx == 1)
78     {
79         int j = 0;
80         nn = *n;
81         while (nn--)
82         {
83             unsigned char current_char = str[j];
84             line[j] = convertAsciiCodeToScilabCode(current_char);
85             j++;
86         }
87     }
88     else
89     {
90         int l = 0;
91
92         /* check *n value */
93         if ( (int)strlen(str) > *n )
94         {
95             l = (int)strlen(str);
96         }
97         else
98         {
99             l = *n;
100         }
101
102         for (nn = l - 1 ; nn >= 0; --nn)
103         {
104             unsigned char current_char = str[nn];
105             line[nn] = convertAsciiCodeToScilabCode(current_char);
106         }
107     }
108     return 0;
109 }
110 /*--------------------------------------------------------------------------*/