scisequencestring.swg 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. /*
  2. *char
  3. * Scilab matrix of string <-> C++ std::string container
  4. *
  5. */
  6. %include <scichar.swg>
  7. %fragment(SWIG_AsCheck_Sequence_frag(std::string), "header") {
  8. SWIGINTERN int
  9. SWIG_AsCheck_Sequence_dec(std::string)(SwigSciObject obj) {
  10. SciErr sciErr;
  11. int *piAddrVar;
  12. sciErr = getVarAddressFromPosition(pvApiCtx, obj, &piAddrVar);
  13. if (sciErr.iErr) {
  14. printError(&sciErr, 0);
  15. return SWIG_ERROR;
  16. }
  17. if (isStringType(pvApiCtx, piAddrVar)) {
  18. return SWIG_OK;
  19. }
  20. else {
  21. Scierror(SCILAB_API_ARGUMENT_ERROR, _("%s: Wrong type for input argument #%d: A string is expected.\n"), SWIG_Scilab_GetFuncName(), obj);
  22. return SWIG_ERROR;
  23. }
  24. }
  25. }
  26. %fragment(SWIG_AsGet_Sequence_frag(std::string), "header",
  27. fragment="SWIG_SciString_AsCharPtrArrayAndSize") {
  28. SWIGINTERN int
  29. SWIG_AsGet_Sequence_dec(std::string)(SwigSciObject obj, char ***pSequence) {
  30. int iRows = 0;
  31. int iCols = 0;
  32. return (SWIG_SciString_AsCharPtrArrayAndSize(pvApiCtx, obj, &iRows, &iCols, pSequence, SWIG_Scilab_GetFuncName()));
  33. }
  34. }
  35. %fragment(SWIG_AsSize_Sequence_frag(std::string), "header",
  36. fragment="SWIG_SciString_AsCharPtrArrayAndSize") {
  37. SWIGINTERN int
  38. SWIG_AsSize_Sequence_dec(std::string)(SwigSciObject obj, int *piSize) {
  39. char **pstMatrix;
  40. int iCols = 0;
  41. int iRows = 0;
  42. if (SWIG_SciString_AsCharPtrArrayAndSize(pvApiCtx, obj, &iRows, &iCols, &pstMatrix, SWIG_Scilab_GetFuncName()) == SWIG_OK) {
  43. *piSize = iRows * iCols;
  44. return SWIG_OK;
  45. }
  46. return SWIG_ERROR;
  47. }
  48. }
  49. %fragment(SWIG_FromCreate_Sequence_frag(std::string), "header") {
  50. SWIGINTERN int
  51. SWIG_FromCreate_Sequence_dec(std::string)(int size, char ***pSequence) {
  52. *pSequence = new char*[size];
  53. return *pSequence != NULL ? SWIG_OK : SWIG_ERROR;
  54. }
  55. }
  56. %fragment(SWIG_FromSet_Sequence_frag(std::string), "header",
  57. fragment="SWIG_SciString_FromCharPtrArrayAndSize") {
  58. SWIGINTERN SwigSciObject
  59. SWIG_FromSet_Sequence_dec(std::string)(int size, char **pSequence) {
  60. SwigSciObject obj = SWIG_SciString_FromCharPtrArrayAndSize(pvApiCtx, SWIG_Scilab_GetOutputPosition(), 1, size, pSequence);
  61. delete (char **)pSequence;
  62. return obj;
  63. }
  64. }
  65. %fragment(SWIG_AsVal_SequenceItem_frag(std::string), "header") {
  66. SWIGINTERN std::string
  67. SWIG_AsVal_SequenceItem_dec(std::string)(SwigSciObject obj, char **pSequence, int iItemIndex) {
  68. return std::string(pSequence[iItemIndex]);
  69. }
  70. }
  71. %fragment(SWIG_From_SequenceItem_frag(std::string), "header") {
  72. SWIGINTERN int
  73. SWIG_From_SequenceItem_dec(std::string)(char **pSequence, int iItemIndex, std::string itemValue) {
  74. char *pChar = new char(itemValue.size() + 1);
  75. strcpy(pChar, itemValue.c_str());
  76. pSequence[iItemIndex] = pChar;
  77. return SWIG_OK;
  78. }
  79. }