#import "Identifier.h" // contains ALL vars/commands/aliases static OFMutableDictionary *identifiers; @implementation Identifier + (void)initialize { if (self == Identifier.class) identifiers = [[OFMutableDictionary alloc] init]; } + (void)addIdentifier:(__kindof Identifier *)identifier { identifiers[identifier.name] = identifier; } + (__kindof Identifier *)identifierForName:(OFString *)name { return identifiers[name]; } + (void)enumerateIdentifiersUsingBlock:(void (^)(__kindof Identifier *))block { [identifiers enumerateKeysAndObjectsUsingBlock:^( OFString *name, __kindof Identifier *identifier, bool *stop) { block(identifier); }]; } - (instancetype)initWithName:(OFString *)name { self = [super init]; _name = [name copy]; return self; } @end