/// <summary>Cleans the intermediates so the garbage collector can get them.</summary> private void CleanIntermediates() { _ddlList = null; _items = null; _lastLcp = null; _pqls = null; _preResults = null; }
private void InitializeIntermediates() { // initialize items list_sizes = new int[_numberOfWords]; int totalItems = 0; for (int i = 0; i < list_sizes.Length; ++i) { list_sizes[i] = (_x_repeats[i] > 0) ? _x_repeats[i] : 1; totalItems += list_sizes[i]; } _items = new int[_numberOfWords][]; _preResults = new List<PreResult>(); _ddlList = new LinkedObjectList(); _ddlList.Init(totalItems); var L = _ddlList.L; int ddlListPtr = 0; for (int i = 0; i < _items.Length; ++i) { int list_size_i = list_sizes[i]; _items[i] = new int[list_size_i]; for (int j = 0; j < list_size_i; ++j) { L[ddlListPtr].Init(ddlListPtr, i); _items[i][j] = ddlListPtr; ++ddlListPtr; } if (_x_repeats[i] > 0) L[_items[i][0]].IntervalSize = 1; } // initialize intermediates _last_index = new int[_numberOfWords]; _pqls = new MinimumOnSlidingWindow[_numberOfWords]; for (int i = 0; i < _numberOfWords; ++i) { _pqls[i].Initialize(_x_repeats[i], 0); //_pqls[i].add_value(0); } _lastLcp = new int[_maximumLcp + 1]; var begin = L[_ddlList.Last].Previous; // front.prev->prev; var end = _ddlList.First; // originally back.next L[begin].IntervalEnd = end; L[end].IntervalBegin = begin; if (_x_repeats[L[_ddlList.Last].Text] > 1) { L[end].IntervalSize = _numberOfWords; } else { L[end].IntervalSize = _numberOfWords - 1; } for (int i = 0; i < _numberOfWords - 1; ++i) { if (_x_repeats[i] == 0) { L[end].IntervalSize = -1; L[end].Clean = false; } } _lastLcp[0] = end; }
private void InitializeIntermediates() { // initialize items list_sizes = new int[_numberOfWords]; for (int i = 0; i < list_sizes.Length; ++i) { list_sizes[i] = (_x_repeats[i] > 0) ? _x_repeats[i] : 1; } _preResults = new List <PreResult>(); _ddlList = new LinkedObjectList(); _items = new DDLElement[_numberOfWords][]; for (int i = 0; i < _items.Length; ++i) { int list_size_i = list_sizes[i]; _items[i] = new DDLElement[list_size_i]; for (int j = 0; j < list_size_i; ++j) { DDLElement ele; _items[i][j] = ele = new DDLElement() { Text = i }; ele.IntervalSize = 0; _ddlList.AddLast(ele); } if (_x_repeats[i] > 0) { _items[i][0].IntervalSize = 1; } } // initialize intermediates _last_index = new int[_numberOfWords]; _pqls = new MinimumOnSlidingWindow[_numberOfWords]; for (int i = 0; i < _numberOfWords; ++i) { _pqls[i].Initialize(_x_repeats[i], 0); //_pqls[i].add_value(0); } _lastLcp = new DDLElement[_maximumLcp + 1]; var begin = _ddlList.Last.Previous; // front.prev->prev; DDLElement end = _ddlList.First; // originally back.next begin.IntervalEnd = end; end.IntervalBegin = begin; if (_x_repeats[_ddlList.Last.Text] > 1) { end.IntervalSize = _numberOfWords; } else { end.IntervalSize = _numberOfWords - 1; } for (int i = 0; i < _numberOfWords - 1; ++i) { if (_x_repeats[i] == 0) { end.IntervalSize = -1; end.Clean = false; } } _lastLcp[0] = end; }
private void InitializeIntermediates() { // initialize items list_sizes = new int[_numberOfWords]; int totalItems = 0; for (int i = 0; i < list_sizes.Length; ++i) { list_sizes[i] = (_x_repeats[i] > 0) ? _x_repeats[i] : 1; totalItems += list_sizes[i]; } _items = new int[_numberOfWords][]; _preResults = new List <PreResult>(); _ddlList = new LinkedObjectList(); _ddlList.Init(totalItems); var L = _ddlList.L; int ddlListPtr = 0; for (int i = 0; i < _items.Length; ++i) { int list_size_i = list_sizes[i]; _items[i] = new int[list_size_i]; for (int j = 0; j < list_size_i; ++j) { L[ddlListPtr].Init(ddlListPtr, i); _items[i][j] = ddlListPtr; ++ddlListPtr; } if (_x_repeats[i] > 0) { L[_items[i][0]].IntervalSize = 1; } } // initialize intermediates _last_index = new int[_numberOfWords]; _pqls = new MinimumOnSlidingWindow[_numberOfWords]; for (int i = 0; i < _numberOfWords; ++i) { _pqls[i].Initialize(_x_repeats[i], 0); //_pqls[i].add_value(0); } _lastLcp = new int[_maximumLcp + 1]; var begin = L[_ddlList.Last].Previous; // front.prev->prev; var end = _ddlList.First; // originally back.next L[begin].IntervalEnd = end; L[end].IntervalBegin = begin; if (_x_repeats[L[_ddlList.Last].Text] > 1) { L[end].IntervalSize = _numberOfWords; } else { L[end].IntervalSize = _numberOfWords - 1; } for (int i = 0; i < _numberOfWords - 1; ++i) { if (_x_repeats[i] == 0) { L[end].IntervalSize = -1; L[end].Clean = false; } } _lastLcp[0] = end; }