def convert_to_descriptor(self, descriptor_string, all_layers): """Convenience function intended to be called from child classes, converts a string representing a descriptor ('descriptor_string') into an object of type Descriptor, and returns it. It needs 'self' and 'all_layers' (where 'all_layers' is a list of objects of type XconfigLayerBase) so that it can work out a list of the names of other layers, and get dimensions from them. """ prev_names = xutils.get_prev_names(all_layers, self) tokens = xutils.tokenize_descriptor(descriptor_string, prev_names) pos = 0 (descriptor, pos) = xutils.parse_new_descriptor(tokens, pos, prev_names) # note: 'pos' should point to the 'end of string' marker # that terminates 'tokens'. if pos != len(tokens) - 1: raise RuntimeError("Parsing Descriptor, saw junk at end: " + ' '.join(tokens[pos:-1])) return descriptor