scibool.swg 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. /*
  2. * C-type: bool
  3. * Scilab type: boolean scalar
  4. */
  5. %fragment(SWIG_AsVal_frag(bool), "header") {
  6. SWIGINTERN int
  7. SWIG_AsVal_dec(bool)(SwigSciObject iVar, bool *pbValue) {
  8. SciErr sciErr;
  9. int iRet = 0;
  10. int *piAddrVar = NULL;
  11. int iTempValue = 0;
  12. sciErr = getVarAddressFromPosition(pvApiCtx, iVar, &piAddrVar);
  13. if (sciErr.iErr) {
  14. printError(&sciErr, 0);
  15. return SWIG_ERROR;
  16. }
  17. if (!isBooleanType(pvApiCtx, piAddrVar)) {
  18. Scierror(SCILAB_API_ARGUMENT_ERROR, _("%s: Wrong type for input argument #%d: A boolean expected.\n"), SWIG_Scilab_GetFuncName(), iVar);
  19. return SWIG_ERROR;
  20. }
  21. if (!isScalar(pvApiCtx, piAddrVar)) {
  22. Scierror(SCILAB_API_ARGUMENT_ERROR, _("%s: Wrong size for input argument #%d: A boolean expected.\n"), SWIG_Scilab_GetFuncName(), iVar);
  23. return SWIG_ERROR;
  24. }
  25. iRet = getScalarBoolean(pvApiCtx, piAddrVar, &iTempValue);
  26. if (iRet) {
  27. return SWIG_ERROR;
  28. }
  29. *pbValue = iTempValue;
  30. return SWIG_OK;
  31. }
  32. }
  33. %fragment(SWIG_From_frag(bool), "header") {
  34. SWIGINTERN int
  35. SWIG_From_dec(bool)(bool bValue) {
  36. if (createScalarBoolean(pvApiCtx, SWIG_NbInputArgument(pvApiCtx)
  37. + SWIG_Scilab_GetOutputPosition(), bValue))
  38. return SWIG_ERROR;
  39. return SWIG_OK;
  40. }
  41. }
  42. /*
  43. * C-type: bool[]
  44. * Scilab type: boolean matrix
  45. */
  46. %fragment("SWIG_SciBoolean_AsBoolArrayAndSize", "header") {
  47. SWIGINTERN int
  48. SWIG_SciBoolean_AsBoolArrayAndSize(void *pvApiCtx, int iVar, int *iRows, int *iCols, bool **pbValue, char *fname) {
  49. SciErr sciErr;
  50. int *piAddrVar = NULL;
  51. int *piValue = NULL;
  52. sciErr = getVarAddressFromPosition(pvApiCtx, iVar, &piAddrVar);
  53. if (sciErr.iErr) {
  54. printError(&sciErr, 0);
  55. return SWIG_ERROR;
  56. }
  57. if (isBooleanType(pvApiCtx, piAddrVar)) {
  58. int i;
  59. sciErr = getMatrixOfBoolean(pvApiCtx, piAddrVar, iRows, iCols, &piValue);
  60. if (sciErr.iErr) {
  61. printError(&sciErr, 0);
  62. return SWIG_ERROR;
  63. }
  64. *pbValue = (bool*) malloc((*iRows) * (*iCols) * sizeof(bool));
  65. for (i = 0; i < (*iRows) * (*iCols); i++)
  66. (*pbValue)[i] = piValue[i] != 0;
  67. }
  68. else {
  69. Scierror(SCILAB_API_ARGUMENT_ERROR, _("%s: Wrong type for input argument #%d: A boolean matrix expected.\n"), fname, iVar);
  70. return SWIG_ERROR;
  71. }
  72. return SWIG_OK;
  73. }
  74. }
  75. %fragment("SWIG_SciBoolean_FromBoolArrayAndSize", "header") {
  76. SWIGINTERN int
  77. SWIG_SciBoolean_FromBoolArrayAndSize(void *pvApiCtx, int iVarOut, int iRows, int iCols, bool *pbValue) {
  78. SciErr sciErr;
  79. int *piValue = NULL;
  80. int i;
  81. piValue = (int*) malloc(iRows * iCols * sizeof(int));
  82. for (i = 0; i < iRows * iCols; i++)
  83. piValue[i] = pbValue[i];
  84. sciErr = createMatrixOfBoolean(pvApiCtx, SWIG_NbInputArgument(pvApiCtx) + iVarOut, iRows, iCols, piValue);
  85. if(sciErr.iErr) {
  86. printError(&sciErr, 0);
  87. free(piValue);
  88. return SWIG_ERROR;
  89. }
  90. free(piValue);
  91. return SWIG_OK;
  92. }
  93. }
  94. /*
  95. * C-type: int[]
  96. * Scilab type: boolean matrix
  97. */
  98. %fragment("SWIG_SciBoolean_AsIntArrayAndSize", "header") {
  99. SWIGINTERN int
  100. SWIG_SciBoolean_AsIntArrayAndSize(void *pvApiCtx, int iVar, int *iRows, int *iCols, int **piValue, char *fname) {
  101. SciErr sciErr;
  102. int *piAddrVar = NULL;
  103. sciErr = getVarAddressFromPosition(pvApiCtx, iVar, &piAddrVar);
  104. if (sciErr.iErr) {
  105. printError(&sciErr, 0);
  106. return SWIG_ERROR;
  107. }
  108. if (isBooleanType(pvApiCtx, piAddrVar)) {
  109. int i;
  110. sciErr = getMatrixOfBoolean(pvApiCtx, piAddrVar, iRows, iCols, piValue);
  111. if (sciErr.iErr) {
  112. printError(&sciErr, 0);
  113. return SWIG_ERROR;
  114. }
  115. }
  116. else {
  117. Scierror(SCILAB_API_ARGUMENT_ERROR, _("%s: Wrong type for input argument #%d: A boolean matrix expected.\n"), fname, iVar);
  118. return SWIG_ERROR;
  119. }
  120. return SWIG_OK;
  121. }
  122. }
  123. %fragment("SWIG_SciBoolean_FromIntArrayAndSize", "header") {
  124. SWIGINTERN int
  125. SWIG_SciBoolean_FromIntArrayAndSize(void *pvApiCtx, int iVarOut, int iRows, int iCols, int *piValue) {
  126. SciErr sciErr;
  127. sciErr = createMatrixOfBoolean(pvApiCtx, SWIG_NbInputArgument(pvApiCtx) + iVarOut, iRows, iCols, piValue);
  128. if(sciErr.iErr) {
  129. printError(&sciErr, 0);
  130. return SWIG_ERROR;
  131. }
  132. return SWIG_OK;
  133. }
  134. }