On 11/27/2012 06:05 AM, Joseph Rushton Wakeling wrote:
On 11/27/2012 01:16 PM, Joseph Rushton Wakeling wrote:
immutable(Node) idup() pure const @property
{
auto linkCopy = to!(Link[])(links);
immutable ilinks = assumeUnique(linkCopy);
return immutable(Node)(id, ilinks);
}

Actually I'm being overly complicated here as with dynamic arrays I can
simply do,

immutable(Node) idup() pure const @property
{
return immutable(Node)(id, links.idup);
}

... so the real issue here seems to be that there's no canonical way
(that I can find) to idup an _associative_ array.

I've forced it pretty hard: :D

    immutable(Network) idup() pure const @property
    {
        Node[uint] nodesCopy;

        foreach (key, node; nodes) {
            immutable(Node) nodeCopy = node.idup;
            nodesCopy[key] = cast(Node)nodeCopy;
        }

        immutable imnodes = assumeUnique(nodesCopy);
        return immutable(Network)(imnodes);
    }

I hope it is safe. :p

Ali

Reply via email to