123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- /*
- *
- * Scilab list of pointer <-> C++ pointer container
- *
- */
- %include <scilist.swg>
- %fragment("<stdint.h>", "header") {
- %#include <stdint.h>
- }
- %fragment(SWIG_AsCheck_Sequence_frag(ptr), "header",
- fragment="SWIG_ScilabList") {
- SWIGINTERN int
- SWIG_AsCheck_Sequence_dec(ptr)(SwigSciObject obj) {
- return SWIG_CheckScilabList(obj);
- }
- }
- %fragment(SWIG_AsGet_Sequence_frag(ptr), "header",
- fragment="SWIG_ScilabList") {
- SWIGINTERN int
- SWIG_AsGet_Sequence_dec(ptr)(SwigSciObject obj, int **piSequence) {
- return SWIG_GetScilabList(obj, piSequence);
- }
- }
- %fragment(SWIG_AsSize_Sequence_frag(ptr), "header",
- fragment="SWIG_ScilabList") {
- SWIGINTERN int
- SWIG_AsSize_Sequence_dec(ptr)(SwigSciObject obj, int *piSize) {
- return SWIG_GetScilabListSize(obj, piSize);
- }
- }
- %fragment(SWIG_FromCreate_Sequence_frag(ptr), "header",
- fragment="<stdint.h>") {
- SWIGINTERN int
- SWIG_FromCreate_Sequence_dec(ptr)(int size, uintptr_t **pSequence) {
- *pSequence = new uintptr_t[size];
- return *pSequence != NULL ? SWIG_OK : SWIG_ERROR;
- }
- }
- %fragment(SWIG_FromSet_Sequence_frag(ptr), "header",
- fragment="<stdint.h>") {
- SWIGINTERN SwigSciObject
- SWIG_FromSet_Sequence_dec(ptr)(int size, uintptr_t *pSequence) {
- SciErr sciErr;
- int *piListAddr;
- int iVarOut = SWIG_NbInputArgument(pvApiCtx) + SWIG_Scilab_GetOutputPosition();
- sciErr = createList(pvApiCtx, iVarOut, size, &piListAddr);
- if (sciErr.iErr) {
- printError(&sciErr, 0);
- return SWIG_ERROR;
- }
- for (int i=0; i<size; i++) {
- sciErr = createPointerInList(pvApiCtx, iVarOut, piListAddr, i + 1, (void *)pSequence[i]);
- if (sciErr.iErr) {
- printError(&sciErr, 0);
- return SWIG_ERROR;
- }
- }
- delete (int*)pSequence;
- return SWIG_OK;
- }
- }
- %fragment(SWIG_AsVal_SequenceItem_frag(ptr), "header") {
- SWIGINTERN void*
- SWIG_AsVal_SequenceItem_dec(ptr)(SwigSciObject obj, int *piSequence, int itemIndex)
- {
- SciErr sciErr;
- int *piItemAddr;
- int iType;
- void* pItemValue = NULL;
- sciErr = getListItemAddress(pvApiCtx, piSequence, itemIndex + 1, &piItemAddr);
- if (sciErr.iErr) {
- printError(&sciErr, 0);
- return NULL;
- }
- sciErr = getVarType(pvApiCtx, piItemAddr, &iType);
- if (sciErr.iErr) {
- printError(&sciErr, 0);
- return NULL;
- }
- if (iType != sci_pointer) {
- Scierror(SCILAB_API_ARGUMENT_ERROR, _("%s: Wrong type for input argument #%d: A pointer is expected at list item #%d.\n"), SWIG_Scilab_GetFuncName(), obj, itemIndex + 1);
- return NULL;
- }
- sciErr = getPointerInList(pvApiCtx, piSequence, itemIndex + 1, &pItemValue);
- if (sciErr.iErr) {
- printError(&sciErr, 0);
- return NULL;
- }
- return pItemValue;
- }
- }
- %fragment(SWIG_From_SequenceItem_frag(ptr), "header",
- fragment="<stdint.h>") {
- SWIGINTERN int
- SWIG_From_SequenceItem_dec(ptr)(uintptr_t *pSequence, int iItemIndex, uintptr_t itemValue) {
- pSequence[iItemIndex] = itemValue;
- return SWIG_OK;
- }
- }
|