/// <summary> /// Append an identifier /// </summary> /// <param name="id">Identifier</param> /// <returns></returns> public CircuitIdentifier Grow(CircuitIdentifier id) { string[] npath = new string[Path.Length + id.Path.Length]; for (int i = 0; i < Path.Length; i++) { npath[i] = Path[i]; } for (int i = 0; i < id.Path.Length; i++) { npath[i + Path.Length] = id.Path[i]; } return(new CircuitIdentifier(npath)); }
/// <summary> /// Check if a component exists /// Multiple names can be specified, in which case the first names will refer to subcircuits /// </summary> /// <param id="id">A list of names. If there are multiple names, the first names will refer to a subcircuit</param> /// <returns></returns> public bool Contains(CircuitIdentifier id) => objects.ContainsKey(id);
/// <summary> /// Search for an object by path /// </summary> /// <param id="path">The path of the object</param> /// <returns></returns> public ICircuitObject this[CircuitIdentifier id] => objects[id];
/// <summary> /// Get a circuit object /// </summary> /// <param id="id">Identifier</param> /// <param id="obj"></param> /// <returns></returns> public bool TryGetObject(CircuitIdentifier id, out ICircuitObject obj) => objects.TryGetValue(id, out obj);
/// <summary> /// Get a node by identifier /// </summary> /// <param id="id">Identifier</param> /// <returns></returns> public CircuitNode this[CircuitIdentifier id] { get => map[id];