C#

다른방식의 문자열 배열 class String_array

안녕1999 2020. 10. 11. 23:53
	public class String_array
	{
		public int m_cnt;
		public string[] m_strarray;
		public int m_i;
		public String_array(int max=32)
		{
			New(32);
		}
		~String_array()
		{
			Free();
		}
		public void New(int max)
		{
			Free();
			if (max <= 0)
			{
				max = 1024;
			}
			else
			{ }
			m_cnt = max;
			m_i = 0;
			m_strarray = new string[max];
		}
		public void Add(string s)
		{
			if (Find(s) == -1)
			{
				if (m_i < m_cnt)
				{
					m_strarray[m_i] = s;
					m_i++;
				}
				else
				{ }
			}
			else
			{
				//이미존재
			}
		}
		public int Find(string s)
		{
			int i, find = -1;
			for (i = 0; i < m_i; i++)
			{
				if (m_strarray[i] == s)
				{
					find = i;
					break;
				}
				else
				{ }
			}
			return find;
		}
		public string Get(int i)
		{
			return m_strarray[i];
		}
		public int Del(string s)//ret=bok
		{
			int bok = 0, i = Find(s);
			if (i != -1)
			{
				//find
				if (i != (m_i - 1))
				{
					//swap
					m_strarray[i] = m_strarray[m_i - 1];
					m_strarray[m_i - 1] = "";
				}
				else
				{
					//마지막위치
					m_strarray[i] = "";
				}
				m_i--;
				bok = 1;
			}
			else
			{
				//not found
			}
			return bok;
		}
		public void Free()
		{
			int i;
			for (i = 0; i < m_i; i++)
			{
				m_strarray[i] = "";
			}
			m_i = 0;
		}
		/*public void Ini_Load(string name)
		{
			int i,n;
			IniFile ini = new IniFile();
			ini.SetSection(name);
			n = ini.Get_int("n", 0);
			for (i = 0; i < n; i++)
			{
				Add(ini.Gets(Convert.ToString(i), ""));
			}
		}
		public void Ini_Save(string name)
		{
			int i;
			IniFile ini = new IniFile();
			ini.SetSection(name);
			for (i = 0; i < m_i; i++)
			{
				ini.Puts(Convert.ToString(i), m_strarray[i]);
			}
			ini.Put_int("n", m_i);
		}*/
	}