private async Task <List <XRefSpec> > GetXRefSpecAsync(ClassEntry entry) { var result = new List <XRefSpec>(entry.Items.Count); var type = entry.Items.Find(item => item.Uid == entry.EntryName); XRefSpec typeSpec = null; if (type != null) { typeSpec = await GetXRefSpecAsync(type); if (typeSpec != null) { result.Add(typeSpec); } } int size = 0; foreach (var specsTask in from block in (from item in entry.Items where item != type select item).BlockBuffer(() => size = size * 2 + 1) select Task.WhenAll(from item in block select GetXRefSpecAsync(item))) { result.AddRange(from s in await specsTask where s != null select s); } result.AddRange(await GetOverloadXRefSpecAsync(result)); if (typeSpec != null && typeSpec.Href != null) { // handle enum field, or other one-page-member foreach (var item in result) { if (item.Href == null) { item.Href = typeSpec.Href; } } } else { result.RemoveAll(item => item.Href == null); } result.Sort(XRefSpecUidComparer.Instance); return(result); }
private async Task <List <ReferenceViewModel> > GetReferenceVMAsync(ClassEntry entry) { List <ReferenceViewModel> result = new List <ReferenceViewModel>(entry.Items.Count); var type = entry.Items.Find(item => item.Uid == entry.EntryName); ReferenceViewModel typeVM = null; if (type != null) { typeVM = await GetViewModelItemAsync(type); result.Add(typeVM); } int size = 0; foreach (var vmsTask in from block in (from item in entry.Items where item != type select item).BlockBuffer(() => size = size * 2 + 1) select Task.WhenAll(from item in block select GetViewModelItemAsync(item))) { result.AddRange(await vmsTask); } if (typeVM != null && typeVM.Href != null) { // handle enum field, or other one-page-member foreach (var item in result) { if (item.Href == null) { item.Href = typeVM.Href; } } } else { result.RemoveAll(item => item.Href == null); } return(result); }
private async Task<List<ReferenceViewModel>> GetReferenceVMAsync(ClassEntry entry) { List<ReferenceViewModel> result = new List<ReferenceViewModel>(entry.Items.Count); var type = entry.Items.Find(item => item.Uid == entry.EntryName); ReferenceViewModel typeVM = null; if (type != null) { typeVM = await GetViewModelItemAsync(type); result.Add(typeVM); } int size = 0; foreach (var vmsTask in from block in (from item in entry.Items where item != type select item).BlockBuffer(() => size = size * 2 + 1) select Task.WhenAll(from item in block select GetViewModelItemAsync(item))) { result.AddRange(await vmsTask); } if (typeVM != null && typeVM.Href != null) { // handle enum field, or other one-page-member foreach (var item in result) { if (item.Href == null) { item.Href = typeVM.Href; } } } else { result.RemoveAll(item => item.Href == null); } return result; }
private async Task<List<XRefSpec>> GetXRefSpecAsync(ClassEntry entry) { var result = new List<XRefSpec>(entry.Items.Count); var type = entry.Items.Find(item => item.Uid == entry.EntryName); XRefSpec typeSpec = null; if (type != null) { typeSpec = await GetXRefSpecAsync(type); if (typeSpec != null) { result.Add(typeSpec); } } int size = 0; foreach (var specsTask in from block in (from item in entry.Items where item != type select item).BlockBuffer(() => size = size * 2 + 1) select Task.WhenAll(from item in block select GetXRefSpecAsync(item))) { result.AddRange(from s in await specsTask where s != null select s); } result.AddRange(await GetOverloadXRefSpecAsync(result)); if (typeSpec != null && typeSpec.Href != null) { // handle enum field, or other one-page-member foreach (var item in result) { if (item.Href == null) { item.Href = typeSpec.Href; } } } else { result.RemoveAll(item => item.Href == null); } result.Sort(XRefSpecUidComparer.Instance); return result; }