Fan.Sys.Uri.Decoder.pathSegments C# (CSharp) Method

pathSegments() private method

private pathSegments ( string pathStr, int numSegs ) : List
pathStr string
numSegs int
return List
            private List pathSegments(string pathStr, int numSegs)
            {
                // if pathStr is "/" then path si the empty list
                int len = pathStr.Length;
                if (len == 0 || (len == 1 && pathStr[0] == '/'))
                  return emptyPath();

                // check for trailing slash
                if (len > 1 && pathStr[len-1] == '/')
                {
                  numSegs--;
                  len--;
                }

                // parse the segments
                string[] path = new string[numSegs];
                int n = 0;
                int segStart = 0, prev = 0;
                for (int i=0; i<pathStr.Length; ++i)
                {
                  int c = pathStr[i];
                  if (prev != '\\')
                  {
                if (c == '/')
                {
                  if (i > 0) path[n++] = pathStr.Substring(segStart, i-segStart);
                  segStart = i+1;
                }
                prev = c;
                  }
                  else
                  {
                prev = (c != '\\') ? c : 0;
                  }
                }
                if (segStart < len)
                  path[n++] = pathStr.Substring(segStart, pathStr.Length-segStart);

                return new List(Sys.StrType, path);
            }