InitialConditionsDict.py 884 bytes
# -*- coding: utf-8 -*-

from copy import copy
from tools import trace, timer

from Model.InitialConditions.InitialConditions import InitialConditions

class InitialConditionsDict(object):
    def __init__(self, status = None):
        super(InitialConditionsDict, self).__init__()

        self._status = status

        self._reach = {}

    def __len__(self):
        return len(self._reach)

    def is_defined(self, reach):
        return reach in self._reach

    def get(self, reach):
        if reach in self._reach:
            return self._reach[reach]

        new = self.new(reach)
        self.set(reach, new)
        return new

    def set(self, reach, new):
        self._reach[reach] = new
        self._status.modified()

    def new(self, reach):
        new = InitialConditions(reach = reach, status = self._status)
        self.set(reach, new)
        return new