File:  [local] / rpl / modules / sets / ltos.rplc
Revision 1.1: download - view: text, annotated - select for diffs - revision graph
Sun Jul 30 21:59:02 2017 UTC (6 years, 10 months ago) by bertrand
Branches: MAIN
CVS tags: HEAD
Ajout de L->S et de S->L.

    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>