Hi, all
I'm running into a problem that I've never seen before, and hope someone here can help.
I have a square grid of circles connected by lines:
o--o--o--o--o | | | | | o--o--o--o--o | | | | | o--o--o--o--o
The circles have different attributes; so do the lines. The basic data type I'm using is an array of pointers; each pointer points to a record of information about its circle. So far, so good.
Each circle's record includes an array of pointers that point to the record of the (up to) 4 lines emanating from that circle. Likewise, I want each line record to be able to point to its two circles. This way they are cross-referential: when I'm working with a line I want to be able to find the circles it connects to, and when I'm working with a circle I want to be able to identify its (up to) 4 lines.
So the code says: --------------------- type PCircle = ^CircleRec; CircleRec = record radius : double; x, y : double; t : array[0..3] of Pline; <-- "unknown identifier 'Pline'" end;
Pline = ^LineRec; LineRec = record node_end : PCircle; width, length, end;
Pnodary = ^nodary; nodary(wx, wy : shortCard) = array[1..wx,1..wy] of PCircle; -------------------
Naturally the compiler complains about the unknown identifier "Pline". And of course, if I reverse the order of the two records, it then complains about the unknown identifier PCircle.
Is there any way to "forward declare" a record? Or am I going to have to do a serious reworking of how I handle the data?
I realize of course that I could just say, I just left circle [x,y] going left, so the circle at the end of this line should be circle [x+1,y]. This utterly simple method is unfortunately not open to me, due to what data my program has access to and what it's not allowed to see.
many thanks, Toby