Annotation of rpl/modules/sets/ltos.rplc, revision 1.1
1.1 ! bertrand 1: #include "src/rplexternals.h"
! 2: #include "sets.h"
! 3:
! 4: declareExternalFunction(ltos)
! 5: declareDaisyChain(current);
! 6: declareObject(object);
! 7: declareObject(subObject);
! 8: declareObject(result);
! 9:
! 10: integer8 i;
! 11: integer8 target(vector);
! 12: integer8 sizeOfList;
! 13:
! 14: HEADER
! 15: declareHelpString("List to set");
! 16: numberOfArguments(1);
! 17: FUNCTION
! 18: pullFromStack(object, list);
! 19: returnOnError(freeObject(object));
! 20:
! 21: listLength(object, sizeOfList);
! 22: getDaisyChainFromList(object, current);
! 23: vector = allocate(sizeOfList * size(integer8));
! 24:
! 25: i = 0;
! 26:
! 27: repeatWhile(not nullified(current))
! 28: subObject = fetchElementFromDaisyChain(current);
! 29: getInteger(subObject, vector[i]);
! 30: returnOnError(freeObject(object); deallocate(vector));
! 31: postIncr(i);
! 32: nextElementOfDaisyChain(current);
! 33: endWhile
! 34:
! 35: freeObject(object);
! 36:
! 37: createExternalObject(result, ISET);
! 38: objectContainer(set_t, result)->values = vector;
! 39: objectContainer(set_t, result)->size = sizeOfList;
! 40:
! 41: pushOnStack(result);
! 42: END
! 43: endExternalFunction
! 44:
! 45: // vim: ts=4
CVSweb interface <joel.bertrand@systella.fr>