public CFireSites(int a, int b) { m_iRows = a; m_iCols = b; //m_pFireLAND = new FIRESITE[i*j]; //commented By Qia on Nov 24 2008 map = new FIRESITE[a * b]; //Add By Qia on Nov 24 2008 Console.WriteLine("LandisPro fire map allocated"); FIRESITE temp; int x; sitetouse = new FIRESITE(); temp = new FIRESITE(); temp.FRUIndex = 0; temp.DEM = 0; temp.numofsites = a * b; SortedIndex.Add(temp); for (int i = 1; i <= m_iRows; i++) { for (int j = 1; j <= m_iCols; j++) { //this->operator ()(i,j)->DEM = 0; x = (i - 1) * m_iCols; x = x + j - 1; map[x] = temp; } } for (int i = 0; i < 70000; i++) { FireRegimeUnitsList.Add(new List <LDPOINT>()); } }
public int SITE_insert(int pos_sortIndex, FIRESITE site, int i, int j) //when there is a new site during succession or whatever, we need to //check if the new site already exists, if yes combine with existing one //if not insert to the position according to sort { int x; int ifexist = 0; int pos = 0; FIRESITE temp; x = (i - 1) * m_iCols; x = x + j - 1; SITE_LocateinSortIndex(site, ref pos, ref ifexist); if (ifexist != 0) { map[x] = SortedIndex[pos]; map[x].numofsites++; //delete site; } else { temp = new FIRESITE(); temp.FRUIndex = site.FRUIndex; temp.DEM = site.DEM; temp.numofsites = 1; map[x] = temp; //std::vector<FIRESITE*>::iterator temp_sitePtr; //temp_sitePtr = SortedIndex.begin(); SortedIndex.Insert(pos, temp); } return(1); }
public void fillinSitePt(int i, int j, FIRESITE site) { int x; x = (i - 1) * m_iCols; x = x + j - 1; map[x] = site; }
public void Dispose() { //if (m_pFireLAND) //delete [] m_pFireLAND; //commented By Qia on Nov 24 2008 if (map != null) { map = null; //Add By Qia on Nov 24 2008 } //<Add By Qia on Nov 24 2008> SortedIndex.Clear(); //for (int i = 0; i < SortedIndex.Count; i++) //{ // FIRESITE temp; // temp = SortedIndex[i]; // temp = null; //} //</Add By Qia on Nov 24 2008> sitetouse = null; }
public int SITE_compare(FIRESITE site1, FIRESITE site2) { if (site1.FRUIndex > site2.FRUIndex) { return(1); } if (site1.FRUIndex < site2.FRUIndex) { return(2); } if (site1.DEM > site2.DEM) { return(1); } if (site1.DEM < site2.DEM) { return(2); } return(0); }
public int SITE_delete(int pos_sortIndex, FIRESITE site, int i, int j) //When a site disappears, delete it { int x; x = (i - 1) * m_iCols; x = x + j - 1; if (site != SortedIndex[pos_sortIndex]) { return(0); } if (site != map[x]) { return(0); } site = null; //std::vector<FIRESITE*>::iterator temp_sitePtr; //temp_sitePtr = SortedIndex.begin(); SortedIndex.RemoveAt(pos_sortIndex); return(1); }
public int SITE_LocateinSortIndex(FIRESITE site, ref int pos, ref int ifexist) //Find if a new site exists in sorted list //If a new site exists, find its location and set *ifexist as 1 //if this no site matches this one, find location before which new site pointer should be inserted //By Qia Oct 09 2008 { int begin; int end; int mid; FIRESITE temp; int temp_flag; ifexist = 0; begin = 0; end = SortedIndex.Count; if (end == 0) { Console.Write("No site at all wrong wrong wrong\n"); return(-1); } end--; mid = (begin + end) / 2; temp = SortedIndex[mid]; while (begin < end) { temp_flag = SITE_compare(site, temp); if (temp_flag == 0) { ifexist = 1; pos = mid; return(1); } else if (temp_flag == 1) { begin = mid + 1; mid = (begin + end) / 2; } else if (temp_flag == 2) { end = mid - 1; mid = (begin + end) / 2; } else { return(-1); } temp = SortedIndex[mid]; } temp_flag = SITE_compare(site, temp); if (temp_flag == 0) { ifexist = 1; pos = mid; return(1); } else if (temp_flag == 2) { ifexist = 0; pos = mid; return(0); } else if (temp_flag == 1) { ifexist = 0; pos = mid + 1; return(0); } else { return(-1); } }