Skip to content

Commit

Permalink
fix issue #173 convertStringsToChars builtin
Browse files Browse the repository at this point in the history
  • Loading branch information
Nelson-numerical-software committed Jan 3, 2019
1 parent d2e27f2 commit 20943ab
Show file tree
Hide file tree
Showing 23 changed files with 678 additions and 17 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Expand Up @@ -4,6 +4,7 @@
Features:
---------

* [#173](http://github.com/Nelson-numerical-software/nelson/issues/173): convertStringsToChars and convertCharsToStrings builtin.


Bug Fixes:
Expand Down
4 changes: 4 additions & 0 deletions modules/string/builtin/c/nlsString_builtin.vcxproj
Expand Up @@ -170,6 +170,8 @@
<ItemGroup>
<ClCompile Include="..\cpp\charBuiltin.cpp" />
<ClCompile Include="..\cpp\containsBuiltin.cpp" />
<ClCompile Include="..\cpp\convertCharsToStringsBuiltin.cpp" />
<ClCompile Include="..\cpp\convertStringsToCharsBuiltin.cpp" />
<ClCompile Include="..\cpp\countBuiltin.cpp" />
<ClCompile Include="..\cpp\deblankBuiltin.cpp" />
<ClCompile Include="..\cpp\endsWithBuiltin.cpp" />
Expand Down Expand Up @@ -224,6 +226,8 @@
<ItemGroup>
<ClInclude Include="..\include\charBuiltin.hpp" />
<ClInclude Include="..\include\containsBuiltin.hpp" />
<ClInclude Include="..\include\convertCharsToStringsBuiltin.hpp" />
<ClInclude Include="..\include\convertStringsToCharsBuiltin.hpp" />
<ClInclude Include="..\include\countBuiltin.hpp" />
<ClInclude Include="..\include\deblankBuiltin.hpp" />
<ClInclude Include="..\include\endsWithBuiltin.hpp" />
Expand Down
12 changes: 12 additions & 0 deletions modules/string/builtin/c/nlsString_builtin.vcxproj.filters
Expand Up @@ -84,6 +84,12 @@
<ClCompile Include="..\cpp\deblankBuiltin.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\cpp\convertStringsToCharsBuiltin.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\cpp\convertCharsToStringsBuiltin.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<Text Include="..\..\CMakeLists.txt" />
Expand Down Expand Up @@ -155,6 +161,12 @@
<ClInclude Include="..\include\deblankBuiltin.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\include\convertStringsToCharsBuiltin.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\include\convertCharsToStringsBuiltin.hpp">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="..\..\loader.nls" />
Expand Down
10 changes: 9 additions & 1 deletion modules/string/builtin/cpp/Gateway.cpp
Expand Up @@ -38,6 +38,8 @@
#include "stringBuiltin.hpp"
#include "stringsBuiltin.hpp"
#include "deblankBuiltin.hpp"
#include "convertStringsToCharsBuiltin.hpp"
#include "convertCharsToStringsBuiltin.hpp"
//=============================================================================
using namespace Nelson;
//=============================================================================
Expand Down Expand Up @@ -68,7 +70,13 @@ static const nlsGateway gateway[] = { { "char", Nelson::StringGateway::charBuilt
{ "deblank", Nelson::StringGateway::deblankBuiltin, 1, 1, CPP_BUILTIN_WITH_EVALUATOR },
{ "strlength", Nelson::StringGateway::strlengthBuiltin, 1, 1, CPP_BUILTIN_WITH_EVALUATOR },
{ "string", Nelson::StringGateway::stringBuiltin, 1, 1, CPP_BUILTIN_WITH_EVALUATOR },
{ "strings", Nelson::StringGateway::stringsBuiltin, 1, -1, CPP_BUILTIN_WITH_EVALUATOR } };
{ "strings", Nelson::StringGateway::stringsBuiltin, 1, -1, CPP_BUILTIN_WITH_EVALUATOR },
{ "convertStringsToChars", Nelson::StringGateway::convertStringsToCharsBuiltin, -1, -1,
CPP_BUILTIN_WITH_EVALUATOR },
{ "convertCharsToStrings", Nelson::StringGateway::convertCharsToStringsBuiltin, -1, -1,
CPP_BUILTIN_WITH_EVALUATOR },

};
//=============================================================================
NLSGATEWAYFUNC(gateway)
//=============================================================================
Expand Down
34 changes: 34 additions & 0 deletions modules/string/builtin/cpp/convertCharsToStringsBuiltin.cpp
@@ -0,0 +1,34 @@
//=============================================================================
// Copyright (c) 2016-2019 Allan CORNET (Nelson)
//=============================================================================
// LICENCE_BLOCK_BEGIN
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
// LICENCE_BLOCK_END
//=============================================================================
#include "ConvertCharsToStrings.hpp"
#include "Error.hpp"
#include "convertCharsToStringsBuiltin.hpp"
//=============================================================================
using namespace Nelson;
//=============================================================================
ArrayOfVector
Nelson::StringGateway::convertCharsToStringsBuiltin(
Evaluator* eval, int nLhs, const ArrayOfVector& argIn)
{
if (nLhs > argIn.size()) {
Error(_W("Number of Input arguments must the same as output."));
}
return ConvertCharsToStrings(argIn);
}
//=============================================================================
34 changes: 34 additions & 0 deletions modules/string/builtin/cpp/convertStringsToCharsBuiltin.cpp
@@ -0,0 +1,34 @@
//=============================================================================
// Copyright (c) 2016-2019 Allan CORNET (Nelson)
//=============================================================================
// LICENCE_BLOCK_BEGIN
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
// LICENCE_BLOCK_END
//=============================================================================
#include "ConvertStringsToChars.hpp"
#include "Error.hpp"
#include "convertStringsToCharsBuiltin.hpp"
//=============================================================================
using namespace Nelson;
//=============================================================================
ArrayOfVector
Nelson::StringGateway::convertStringsToCharsBuiltin(
Evaluator* eval, int nLhs, const ArrayOfVector& argIn)
{
if (nLhs > argIn.size()) {
Error(_W("Number of Input arguments must the same as output."));
}
return ConvertStringsToChars(argIn);
}
//=============================================================================
32 changes: 32 additions & 0 deletions modules/string/builtin/include/convertCharsToStringsBuiltin.hpp
@@ -0,0 +1,32 @@
//=============================================================================
// Copyright (c) 2016-2019 Allan CORNET (Nelson)
//=============================================================================
// LICENCE_BLOCK_BEGIN
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
// LICENCE_BLOCK_END
//=============================================================================
#pragma once
//=============================================================================
#include "ArrayOf.hpp"
#include "Evaluator.hpp"
//=============================================================================
namespace Nelson {
//=============================================================================
namespace StringGateway {
ArrayOfVector
convertCharsToStringsBuiltin(Evaluator* eval, int nLhs, const ArrayOfVector& argIn);
}
//=============================================================================
} // namespace Nelson
//=============================================================================
32 changes: 32 additions & 0 deletions modules/string/builtin/include/convertStringsToCharsBuiltin.hpp
@@ -0,0 +1,32 @@
//=============================================================================
// Copyright (c) 2016-2019 Allan CORNET (Nelson)
//=============================================================================
// LICENCE_BLOCK_BEGIN
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
// LICENCE_BLOCK_END
//=============================================================================
#pragma once
//=============================================================================
#include "ArrayOf.hpp"
#include "Evaluator.hpp"
//=============================================================================
namespace Nelson {
//=============================================================================
namespace StringGateway {
ArrayOfVector
convertStringsToCharsBuiltin(Evaluator* eval, int nLhs, const ArrayOfVector& argIn);
}
//=============================================================================
} // namespace Nelson
//=============================================================================
87 changes: 87 additions & 0 deletions modules/string/help/en_US/xml/convertCharsToStrings.xml
@@ -0,0 +1,87 @@
<?xml version="1.0" encoding="UTF-8"?>
<xmldoc>
<copyright>SAME AS NELSON SOFTWARE</copyright>

<language>en_US</language>
<keyword>convertCharsToStrings</keyword>
<short_description>Convert chars arrays to string arrays.</short_description>

<syntax>
<syntax_item>S = convertCharsToStrings(C)</syntax_item>
<syntax_item>[B1, B2, ..., BN] = convertCharsToStrings(A1, A2, ..., AN)</syntax_item>
</syntax>

<param_input>
<param_input_item>
<param_name>C</param_name>
<param_description>if C is a char array, output S will be converted to an string array.</param_description>
</param_input_item>
<param_input_item>
<param_name>A1, A2, ..., AN</param_name>
<param_description>variables to convert to string array if it is a char array.</param_description>
</param_input_item>
</param_input>

<param_output>

<param_output_item>
<param_name>S</param_name>
<param_description>a string array or unaltered variable</param_description>
</param_output_item>
<param_output_item>
<param_name>B1, B2, ..., BN</param_name>
<param_description>variables converted to string array if it is a char array or cell of char array.</param_description>
</param_output_item>

</param_output>

<description>
<p><b>convertCharsToStrings</b> converts chars arrays to string arrays.</p>
</description>


<used_function></used_function>
<bibliography></bibliography>

<examples>

<example_item>
<example_item_type>nelson</example_item_type>
<example_item_description></example_item_description>
<example_item_data><![CDATA[[A, B, C, D] = convertCharsToStrings("one", 2, 'three', {'four' ; 'NaN' ;'five'})
R = convertCharsToStrings(['Nelson' ; ' is '; ' good'])]]>
</example_item_data>

</example_item>

</examples>

<see_also>
<see_also_item>
<link linkend="${string}convertStringsToChars">convertStringsToChars</link>
</see_also_item>
<see_also_item>
<link linkend="${data_structures}cellstr">cellstr</link>
</see_also_item>
<see_also_item>
<link linkend="${string}string">string</link>
</see_also_item>
<see_also_item>
<link linkend="${string}char">char</link>
</see_also_item>

</see_also>

<history>
<history_item>
<history_version>1.0.0</history_version>
<history_description>initial version</history_description>
</history_item>
</history>

<authors>
<author_item>Allan CORNET</author_item>
</authors>
</xmldoc>


87 changes: 87 additions & 0 deletions modules/string/help/en_US/xml/convertStringsToChars.xml
@@ -0,0 +1,87 @@
<?xml version="1.0" encoding="UTF-8"?>
<xmldoc>
<copyright>SAME AS NELSON SOFTWARE</copyright>

<language>en_US</language>
<keyword>convertStringsToChars</keyword>
<short_description>Convert string arrays to character arrays.</short_description>

<syntax>
<syntax_item>C = convertStringsToChars(S)</syntax_item>
<syntax_item>[B1, B2, ..., BN] = convertStringsToChars(A1, A2, ..., AN)</syntax_item>
</syntax>

<param_input>
<param_input_item>
<param_name>S</param_name>
<param_description>if S is a string array, output C will be converted to an cell of strings or an character vector (if S is scalar).</param_description>
</param_input_item>
<param_input_item>
<param_name>A1, A2, ..., AN</param_name>
<param_description>variables to convert to char array if it is a string array.</param_description>
</param_input_item>
</param_input>

<param_output>

<param_output_item>
<param_name>C</param_name>
<param_description>a char array or unaltered variable</param_description>
</param_output_item>
<param_output_item>
<param_name>B1, B2, ..., BN</param_name>
<param_description>variables converted to char array if it is a string array.</param_description>
</param_output_item>

</param_output>

<description>
<p><b>convertStringsToChars</b> converts string arrays to character arrays.</p>
</description>


<used_function></used_function>
<bibliography></bibliography>

<examples>

<example_item>
<example_item_type>nelson</example_item_type>
<example_item_description></example_item_description>
<example_item_data><![CDATA[A = convertStringsToChars("Nelson")
A = convertStringsToChars(["Nelson", string(NaN)])]]>
</example_item_data>

</example_item>

</examples>

<see_also>
<see_also_item>
<link linkend="${string}convertCharsToStrings">convertCharsToStringss</link>
</see_also_item>
<see_also_item>
<link linkend="${data_structures}cellstr">cellstr</link>
</see_also_item>
<see_also_item>
<link linkend="${string}string">string</link>
</see_also_item>
<see_also_item>
<link linkend="${string}char">char</link>
</see_also_item>

</see_also>

<history>
<history_item>
<history_version>1.0.0</history_version>
<history_description>initial version</history_description>
</history_item>
</history>

<authors>
<author_item>Allan CORNET</author_item>
</authors>
</xmldoc>


0 comments on commit 20943ab

Please sign in to comment.