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>