Replace Min, Max and Abs by std::min, std::max and std::abs
[scilab.git] / scilab / modules / fileio / sci_gateway / cpp / sci_fileext.cpp
1 /*
2  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  * Copyright (C) 2007 - INRIA - Allan CORNET
4  * Copyright (C) 2010 - DIGITEO - Antoine ELIAS
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 #include "funcmanager.hxx"
15 #include "filemanager.hxx"
16 #include "fileio_gw.hxx"
17 #include "function.hxx"
18 #include "string.hxx"
19
20 extern "C"
21 {
22 #include "Scierror.h"
23 #include "splitpath.h"
24 #include "localization.h"
25 }
26
27 using namespace types;
28
29 /*--------------------------------------------------------------------------*/
30 Function::ReturnValue sci_fileext(typed_list &in, int _iRetCount, typed_list &out)
31 {
32     if (in.size() != 1)
33     {
34         Scierror(999, _("%s: Wrong number of input arguments: %d expected.\n"), "fileext" , 1);
35         return Function::Error;
36     }
37
38     if (_iRetCount != 1)
39     {
40         Scierror(78, _("%s: Wrong number of output argument(s): %d expected.\n"), "fileext", 1);
41         return Function::Error;
42     }
43
44     if (in[0]->isString() == false)
45     {
46         Scierror(999, _("%s: Wrong type for input argument #%d: Matrix of strings expected.\n"), "fileext", 1);
47         return Function::Error;
48     }
49
50     String* pS = in[0]->getAs<types::String>();
51     String* pOut = new String(pS->getRows(), pS->getCols());
52
53
54     for (int i = 0 ; i < pS->getSize() ; i++)
55     {
56         wchar_t* pwstIn         = pS->get(i);
57         wchar_t* pwstDrive      = new wchar_t[wcslen(pwstIn) + 1];
58         wchar_t* pwstDirectory  = new wchar_t[wcslen(pwstIn) + 1];
59         wchar_t* pwstName       = new wchar_t[wcslen(pwstIn) + 1];
60         wchar_t* pwstExtension  = new wchar_t[wcslen(pwstIn) + 1];
61
62         splitpathW(pwstIn, FALSE, pwstDrive, pwstDirectory, pwstName, pwstExtension);
63         pOut->set(i, pwstExtension);
64
65         delete[] pwstDirectory;
66         delete[] pwstDrive;
67         delete[] pwstExtension;
68         delete[] pwstName;
69     }
70
71     out.push_back(pOut);
72     return Function::OK;
73     //Rhs = std::max(Rhs,0);
74
75     //CheckRhs(1,1);
76     //CheckLhs(1,1);
77
78     //if (GetType(1) == sci_strings)
79     //{
80     //  int n1 = 0, m1 = 0, l1 = 0;
81     //  int i = 0;
82
83     //  char **Input_filenames  = NULL;
84     //  char **Output_extensions = NULL;
85
86     //  GetRhsVar(1,MATRIX_OF_STRING_DATATYPE,&m1,&n1,&Input_filenames);
87
88     //  Output_extensions = (char**)MALLOC(sizeof(char*)*(m1*n1));
89     //  if (Output_extensions)
90     //  {
91     //
92     //          for (i = 0; i < m1*n1; i++)
93     //          {
94     //                  if (Input_filenames[i])
95     //                  {
96     //                          /* Bug 3089 */
97     //                          Output_extensions[i] = FindFileExtension(Input_filenames[i]);
98     //                  }
99     //                  else
100     //                  {
101     //                          Output_extensions[i] = NULL;
102     //                  }
103
104     //                  if (Output_extensions[i] == NULL)
105     //                  {
106     //                          Output_extensions[i] = os_strdup("");
107     //                  }
108     //          }
109     //          CreateVarFromPtr( Rhs+1, MATRIX_OF_STRING_DATATYPE, &m1, &n1, Output_extensions );
110     //          LhsVar(1)=Rhs+1;
111     //          C2F(putlhsvar)();
112     //          freeArrayOfString(Input_filenames, m1*n1);
113     //          freeArrayOfString(Output_extensions,m1*n1);
114     //  }
115     //  else
116     //  {
117     //          freeArrayOfString(Input_filenames, m1*n1);
118     //          Scierror(999,_("%s: No more memory.\n"),fname);
119     //  }
120     //}
121     //else
122     //{
123     //  Scierror(999,_("%s: Wrong type for input argument: A string expected.\n"),fname);
124     //}
125     //return 0;
126 }
127 /*--------------------------------------------------------------------------*/
128