Diff for /rpl/modules/sets/ltos.rplc between versions 1.1 and 1.2

version 1.1, 2017/07/30 21:59:02 version 1.2, 2017/07/31 08:59:37
Line 1 Line 1
 #include "src/rplexternals.h"  #include "src/rplexternals.h"
 #include "sets.h"  #include "sets.h"
   
   static int
   orderFunction(const void *a, const void *b)
   {
       if ((*((integer8 *) a)) < (*((integer8 *) b)))
       {
           return(-1);
       }
       if ((*((integer8 *) a)) > (*((integer8 *) b)))
       {
           return(1);
       }
   
       return(0);
   }
   
   
 declareExternalFunction(ltos)  declareExternalFunction(ltos)
     declareDaisyChain(current);      declareDaisyChain(current);
     declareObject(object);      declareObject(object);
     declareObject(subObject);      declareObject(subObject);
     declareObject(result);      declareObject(result);
   
       integer8    currentValue;
     integer8    i;      integer8    i;
       integer8    j;
     integer8    target(vector);      integer8    target(vector);
     integer8    sizeOfList;      integer8    sizeOfList;
   
Line 29  declareExternalFunction(ltos) Line 47  declareExternalFunction(ltos)
             getInteger(subObject, vector[i]);              getInteger(subObject, vector[i]);
             returnOnError(freeObject(object); deallocate(vector));              returnOnError(freeObject(object); deallocate(vector));
             postIncr(i);              postIncr(i);
             nextElementOfDaisyChain(current);              current = nextElementOfDaisyChain(current);
         endWhile          endWhile
   
         freeObject(object);          freeObject(object);
   
           if (sizeOfList gt 0) then
               qsort(vector, sizeOfList, sizeof(integer8), orderFunction);
   
               currentValue = vector[0];
               j = 1;
   
               loop(i = 1, i lt sizeOfList, postIncr(i))
                   if (vector[i] ne currentValue) then
                       vector[postIncr(j)] = vector[i];
                       currentValue = vector[i];
                   endIf
               endLoop
   
               sizeOfList = j;
               vector = reallocate(vector, sizeOfList * size(integer8));
           endIf
   
         createExternalObject(result, ISET);          createExternalObject(result, ISET);
           objectOf(result) = allocate(size(set_t));
         objectContainer(set_t, result)->values = vector;          objectContainer(set_t, result)->values = vector;
         objectContainer(set_t, result)->size = sizeOfList;          objectContainer(set_t, result)->size = sizeOfList;
   

Removed from v.1.1  
changed lines
  Added in v.1.2


CVSweb interface <joel.bertrand@systella.fr>