Hi,

I am toying around with generics and i got stuck when writing somewhat more 
advanced generic code.
This code has already been once submitted by me as a bug(#0010247) report 
because fpc 2.2.0 crashes when trying to compile this.
But this time I got futher with the latest svn(9488) compile. The error 
message(see below) which i got is obvious but i have no idea what to do instead 
of writing TBucket.PNode.
I hope somebody can enlighten me. Thank you in advance.

----------- 8< *snip, snip* -------------------------
        { TList }

        generic TList<T> = class
                [...]
        end;

        { TLinkedList }

        generic TLinkedList<T> = class
        type
        public
                PNode = ^TNode;
                TNode = record
                        Previous,
                        Next: PNode;
                        Element: T;
                end;
        var
                [...]
        end;


        { THashTable }

        generic THashTable<T> = class
        type
        public
                THashNode = record
                        Hash: LongWord;
                        Key: ShortString;
                        Element: T;
                end;
                TBucket = specialize TLinkedList<THashNode>;
                TBucketList = specialize TList<TBucket>;
        var
        private
                BucketList: TBucketList;

                procedure InitBucketList(const TableSize: integer);
                procedure ReHash(const TableSize: integer);
                function GetElement(const Key: ShortString): T;
                procedure SetElement(const Key: ShortString; const AElement: T);
                function GetTableSize: integer;
                procedure SetTableSize(const AValue: integer);
        public
                constructor Create;
                destructor Destroy; override;

                function HashOf(const Key: ShortString): DWord;

                function BucketNodeOf(const Hash: DWord): TBucket.PNode;
----------------------------------------------------------^^^^^^^^^^^^^^ 
DataContainers.pp(104,66) Fatal: Syntax error, ";" expected but "." found
                function Extract(const Hash: DWord): T;
                function Append(const ANode: TBucket.PNode; const AHash: DWord):

                property Element[Key: ShortString]: T read GetElement write 
SetElement;
                property TableSize: integer read GetTableSize write 
SetTableSize;
        end;

----------- 8< *snip, snip* -------------------------


bartek



_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to