def add_register(self, register):
		"""
		.. _add_register:

		Adds the Register_ ``register`` to the interface.

		Will raise a SetupError_ if the interface is locked (because it is running) or if
		there is already a Register with the name of the new Register or if
		the number of Registers would exceed the size of the interface.

		Returns the index of the new Register
		"""
		if(self._lock):
			raise SetupError("RegisterInterface is already running, no changes to the register layout can be performed")
		if(len(self.registers_by_index) >= self.size):
			raise SetupError("Number of Registers would exceed the address space({})".format(self.size))
		if(register.name in self.registers_by_name):
			raise SetupError("Register with name '{}' already added.".format(register.name))
		self.registers_by_name[register.name] = register
		self.registers_by_index.append(register)
		return len(self.registers_by_index) - 1