[fpc-pascal] pointer to anything

spir ☣ denis.spir at gmail.com
Fri Apr 23 09:33:05 CEST 2010


Hello,

Say I want to implement a kind of linked list which node data may be anything. Thus I cannot store data on place (in nodes), indeed; so it should be referenced. But pointers themselves are supposed to be typed. So, how can I do that?

type list = ^node;
    node = record
        data : ???;
        next : list;
    end;

I tried to use Pointer, but then I get an error saying the compiler found <some type> while it expected "untyped". What is the use of Pointer (without type for pointed data)?
I also had a look at Variant; this looks like an ugly hack ;-) And avyway is not really generic. I need data to ba able to be anything, including first a linked list itself...
Finaly, when trying to write the the algo for a given type, I get an issue since the def above is recursive, recursively pointing in fact. So, I need to stop the run somewhere by allocating the memory for non-yet-existing data pointed by a pointer -- I guess.
    p^ := <I'll tell you soon, just book the place>
(The compiler warns about not initialised pointers.)

Pointers (sic!) to implementations of similar things (including trees) welcome...
More generally, I cannot find in the library units for common data structures (sequence, associative table, set (the collection)...).

Denis
________________________________

vit esse estrany ☣

spir.wikidot.com



More information about the fpc-pascal mailing list