/// <summary> /// Binds the given Entity as a direct object of the VerbPhrase instance. /// </summary> /// <param name="directObject">The Entity to attach to the VerbPhrase as a direct object.</param> public virtual void BindDirectObject(IEntity directObject) { if (directObject != null) { directObjects = directObjects.Add(directObject); directObject.BindAsDirectObjectOf(this); foreach (var verb in Words.OfVerb()) { verb.BindDirectObject(directObject); } if (IsPossessive) { foreach (var subject in Subjects) { subject.AddPossession(directObject); } } else if (IsClassifier) { foreach (var subject in Subjects) { AliasLookup.DefineAlias(subject, directObject); } } } }
/// <summary> /// Returns a string representation of the PronounPhrase /// </summary> /// <returns>A string representation of the PronounPhrase</returns> public override string ToString() { var result = base.ToString() + (RefersTo.EmptyIfNull().Any() ? "\nreferring to -> " + RefersTo.Text : string.Empty); result += AliasLookup.GetDefinedAliases(RefersTo ?? this as IEntity).Any() ? "\nClassified as: " + AliasLookup.GetDefinedAliases(RefersTo as IEntity ?? this).Format() : string.Empty; return(result); }
protected void AddAliases(string name, int count) { List <long> aliasList; if (!AliasLookup.TryGetValue(name, out aliasList)) { aliasList = new List <long>(count); AliasLookup[name] = aliasList; } var total = aliasList.Count; lock (Lock) for (int i = total; i <= total + count; i++) { try { var alias = HashProvider.Hash("{0}_{1}".AsFormat(name, i)); aliasList.Add(alias); Map.Add(alias, name); } finally { } } }
private ScopedAliasMap(params IEnumerable <ILexical>[] scope) { domain = scope.SelectMany(s => s); foreach (var e in domain.OfEntity()) { assumedAliases[e.Text] = new HashSet <string>(AliasLookup.GetLikelyAliases(e)); } }
/// <summary> /// Rebalances a node's virtual key space to some total number /// </summary> public virtual void RebalanceNodeTo(string name, int total) { List <long> aliasList; if (!AliasLookup.TryGetValue(name, out aliasList)) { aliasList = new List <long>(total); AliasLookup[name] = aliasList; } if (total != aliasList.Count) { RebalanceNodeBy(name, total - aliasList.Count); } }
protected void RemoveAliases(string name) { List <long> aliasList; lock (Lock) if (AliasLookup.TryRemove(name, out aliasList)) { foreach (var alias in aliasList) { try { Map.Delete(alias); } finally { } } } }
/// <summary> /// Binds the given Entity as a direct object of the Verb. /// </summary> /// <param name="directObject">The Entity to attach to the Verb as a direct object.</param> public virtual void BindDirectObject(IEntity directObject) { directObjects.Add(directObject); directObject.BindAsDirectObjectOf(this); if (IsPossessive) { foreach (var subject in subjects) { subject.AddPossession(directObject); } } else if (IsClassifier) { foreach (var subject in subjects) { AliasLookup.DefineAlias(subject, directObject); } } }
protected void RemoveKeySpaceFrom(string name, int count) { List <long> aliasList; lock (Lock) if (AliasLookup.TryGetValue(name, out aliasList)) { var removals = aliasList.Take(count).ToList(); removals .ForEach(x => { try { aliasList.Remove(x); Map.Delete(x); } catch (Exception ex) { Console.WriteLine(ex); } }); } }