| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714 | 
							- using System;
 
- using System.Collections.Generic;
 
- using System.Diagnostics;
 
- using System.Globalization;
 
- using System.IO;
 
- using System.Linq;
 
- using System.Net;
 
- using System.Net.Sockets;
 
- using System.Reflection;
 
- using System.Text;
 
- using System.Text.RegularExpressions;
 
- using System.Threading;
 
- using System.Threading.Tasks;
 
- //using Windows.Networking;
 
- //using Windows.Networking.Sockets;
 
- namespace SharpCifs.Util.Sharpen
 
- {
 
-     public static class Extensions
 
-     {
 
-         private static readonly long EpochTicks;
 
-         static Extensions()
 
-         {
 
-             DateTime time = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
 
-             EpochTicks = time.Ticks;
 
-         }
 
-         public static void Add<T>(this IList<T> list, int index, T item)
 
-         {
 
-             list.Insert(index, item);
 
-         }
 
-         public static void AddFirst<T>(this IList<T> list, T item)
 
-         {
 
-             list.Insert(0, item);
 
-         }
 
-         public static void AddLast<T>(this IList<T> list, T item)
 
-         {
 
-             list.Add(item);
 
-         }
 
-         public static void RemoveLast<T>(this IList<T> list)
 
-         {
 
-             if (list.Count > 0)
 
-                 list.Remove(list.Count - 1);
 
-         }
 
-         public static StringBuilder AppendRange(this StringBuilder sb, string str, int start, int end)
 
-         {
 
-             return sb.Append(str, start, end - start);
 
-         }
 
-         public static StringBuilder Delete(this StringBuilder sb, int start, int end)
 
-         {
 
-             return sb.Remove(start, end - start);
 
-         }
 
-         public static void SetCharAt(this StringBuilder sb, int index, char c)
 
-         {
 
-             sb[index] = c;
 
-         }
 
-         public static int IndexOf(this StringBuilder sb, string str)
 
-         {
 
-             return sb.ToString().IndexOf(str);
 
-         }
 
-         public static int BitCount(int val)
 
-         {
 
-             uint num = (uint)val;
 
-             int count = 0;
 
-             for (int i = 0; i < 32; i++)
 
-             {
 
-                 if ((num & 1) != 0)
 
-                 {
 
-                     count++;
 
-                 }
 
-                 num >>= 1;
 
-             }
 
-             return count;
 
-         }
 
-         public static IndexOutOfRangeException CreateIndexOutOfRangeException(int index)
 
-         {
 
-             return new IndexOutOfRangeException("Index: " + index);
 
-         }
 
-         public static string Decode(this Encoding e, byte[] chars, int start, int len)
 
-         {
 
-             try
 
-             {
 
-                 byte[] bom = e.GetPreamble();
 
-                 if (bom != null && bom.Length > 0)
 
-                 {
 
-                     if (len >= bom.Length)
 
-                     {
 
-                         int pos = start;
 
-                         bool hasBom = true;
 
-                         for (int n = 0; n < bom.Length && hasBom; n++)
 
-                         {
 
-                             if (bom[n] != chars[pos++])
 
-                                 hasBom = false;
 
-                         }
 
-                         if (hasBom)
 
-                         {
 
-                             len -= pos - start;
 
-                             start = pos;
 
-                         }
 
-                     }
 
-                 }
 
-                 return e.GetString(chars, start, len);
 
-             }
 
-             catch (DecoderFallbackException)
 
-             {
 
-                 throw new CharacterCodingException();
 
-             }
 
-         }
 
-         public static Encoding GetEncoding(string name)
 
-         {
 
-             //			Encoding e = Encoding.GetEncoding (name, EncoderFallback.ExceptionFallback, DecoderFallback.ExceptionFallback);
 
-             try
 
-             {
 
-                 Encoding e = Encoding.GetEncoding(name.Replace('_', '-'));
 
-                 if (e is UTF8Encoding)
 
-                     return new UTF8Encoding(false, true);
 
-                 return e;
 
-             }
 
-             catch (ArgumentException)
 
-             {
 
-                 throw new UnsupportedCharsetException(name);
 
-             }
 
-         }
 
-         public static ICollection<KeyValuePair<T, TU>> EntrySet<T, TU>(this IDictionary<T, TU> s)
 
-         {
 
-             return s;
 
-         }
 
-         public static bool AddItem<T>(this IList<T> list, T item)
 
-         {
 
-             list.Add(item);
 
-             return true;
 
-         }
 
-         public static bool AddItem<T>(this ICollection<T> list, T item)
 
-         {
 
-             list.Add(item);
 
-             return true;
 
-         }
 
-         public static TU Get<T, TU>(this IDictionary<T, TU> d, T key)
 
-         {
 
-             TU val;
 
-             d.TryGetValue(key, out val);
 
-             return val;
 
-         }
 
-         public static TU Put<T, TU>(this IDictionary<T, TU> d, T key, TU value)
 
-         {
 
-             TU old;
 
-             d.TryGetValue(key, out old);
 
-             d[key] = value;
 
-             return old;
 
-         }
 
-         public static void PutAll<T, TU>(this IDictionary<T, TU> d, IDictionary<T, TU> values)
 
-         {
 
-             foreach (KeyValuePair<T, TU> val in values)
 
-                 d[val.Key] = val.Value;
 
-         }
 
-         public static CultureInfo GetEnglishCulture()
 
-         {
 
-             return new CultureInfo("en-US");
 
-         }
 
-         public static T GetFirst<T>(this IList<T> list)
 
-         {
 
-             return ((list.Count == 0) ? default(T) : list[0]);
 
-         }
 
-         public static CultureInfo GetGermanCulture()
 
-         {
 
-             CultureInfo r = new CultureInfo("de-DE");
 
-             return r;
 
-         }
 
-         public static T GetLast<T>(this IList<T> list)
 
-         {
 
-             return ((list.Count == 0) ? default(T) : list[list.Count - 1]);
 
-         }
 
-         public static int GetOffset(this TimeZoneInfo tzone, long date)
 
-         {
 
-             return (int)tzone.GetUtcOffset(MillisToDateTimeOffset(date, 0).DateTime).TotalMilliseconds;
 
-         }
 
-         public static InputStream GetResourceAsStream(this Type type, string name)
 
-         {
 
-             //Type.`Assembly` property deleted
 
-             //string str2 = type.Assembly.GetName().Name + ".resources";
 
-             string str2 = type.GetTypeInfo().Assembly.GetName().Name + ".resources";
 
-             string[] textArray1 = { str2, ".", type.Namespace, ".", name };
 
-             string str = string.Concat(textArray1);
 
-             
 
-             //Type.`Assembly` property deleted
 
-             //Stream manifestResourceStream = type.Assembly.GetManifestResourceStream(str);
 
-             Stream manifestResourceStream = type.GetTypeInfo().Assembly.GetManifestResourceStream(str);
 
-             if (manifestResourceStream == null)
 
-             {
 
-                 return null;
 
-             }
 
-             return InputStream.Wrap(manifestResourceStream);
 
-         }
 
-         public static long GetTime(this DateTime dateTime)
 
-         {
 
-             return new DateTimeOffset(DateTime.SpecifyKind(dateTime, DateTimeKind.Utc), TimeSpan.Zero).ToMillisecondsSinceEpoch();
 
-         }
 
-         public static void InitCause(this Exception ex, Exception cause)
 
-         {
 
-             Console.WriteLine(cause);
 
-         }
 
-         public static bool IsEmpty<T>(this ICollection<T> col)
 
-         {
 
-             return (col.Count == 0);
 
-         }
 
-         public static bool IsEmpty<T>(this Stack<T> col)
 
-         {
 
-             return (col.Count == 0);
 
-         }
 
-         public static bool IsLower(this char c)
 
-         {
 
-             return char.IsLower(c);
 
-         }
 
-         public static bool IsUpper(this char c)
 
-         {
 
-             return char.IsUpper(c);
 
-         }
 
-         public static Iterator<T> Iterator<T>(this ICollection<T> col)
 
-         {
 
-             return new EnumeratorWrapper<T>(col, col.GetEnumerator());
 
-         }
 
-         public static Iterator<T> Iterator<T>(this IEnumerable<T> col)
 
-         {
 
-             return new EnumeratorWrapper<T>(col, col.GetEnumerator());
 
-         } 
 
-         public static T Last<T>(this ICollection<T> col)
 
-         {
 
-             IList<T> list = col as IList<T>;
 
-             if (list != null)
 
-             {
 
-                 return list[list.Count - 1];
 
-             }
 
-             return col.Last();
 
-         }
 
-         public static int LowestOneBit(int val)
 
-         {
 
-             return (1 << NumberOfTrailingZeros(val));
 
-         }
 
-         public static bool Matches(this string str, string regex)
 
-         {
 
-             Regex regex2 = new Regex(regex);
 
-             return regex2.IsMatch(str);
 
-         }
 
-         public static DateTime CreateDate(long milliSecondsSinceEpoch)
 
-         {
 
-             long num = EpochTicks + (milliSecondsSinceEpoch * 10000);
 
-             return new DateTime(num);
 
-         }
 
-         public static DateTime CreateDateFromUTC(long milliSecondsSinceEpoch)
 
-         {
 
-             long num = EpochTicks + (milliSecondsSinceEpoch * 10000);
 
-             return new DateTime(num, DateTimeKind.Utc);
 
-         }
 
-         public static DateTimeOffset MillisToDateTimeOffset(long milliSecondsSinceEpoch, long offsetMinutes)
 
-         {
 
-             TimeSpan offset = TimeSpan.FromMinutes(offsetMinutes);
 
-             long num = EpochTicks + (milliSecondsSinceEpoch * 10000);
 
-             return new DateTimeOffset(num + offset.Ticks, offset);
 
-         }
 
-         public static int NumberOfLeadingZeros(int val)
 
-         {
 
-             uint num = (uint)val;
 
-             int count = 0;
 
-             while ((num & 0x80000000) == 0)
 
-             {
 
-                 num = num << 1;
 
-                 count++;
 
-             }
 
-             return count;
 
-         }
 
-         public static int NumberOfTrailingZeros(int val)
 
-         {
 
-             uint num = (uint)val;
 
-             int count = 0;
 
-             while ((num & 1) == 0)
 
-             {
 
-                 num = num >> 1;
 
-                 count++;
 
-             }
 
-             return count;
 
-         }
 
-         public static int Read(this StreamReader reader, char[] data)
 
-         {
 
-             return reader.Read(data, 0, data.Length);
 
-         }
 
-         public static T Remove<T>(this IList<T> list, T item)
 
-         {
 
-             int index = list.IndexOf(item);
 
-             if (index == -1)
 
-             {
 
-                 return default(T);
 
-             }
 
-             T local = list[index];
 
-             list.RemoveAt(index);
 
-             return local;
 
-         }
 
-         public static T Remove<T>(this IList<T> list, int i)
 
-         {
 
-             T old;
 
-             try
 
-             {
 
-                 old = list[i];
 
-                 list.RemoveAt(i);
 
-             }
 
-             catch (IndexOutOfRangeException)
 
-             {
 
-                 throw new NoSuchElementException();
 
-             }
 
-             return old;
 
-         }
 
-         public static T RemoveFirst<T>(this IList<T> list)
 
-         {
 
-             return list.Remove(0);
 
-         }
 
-         public static string ReplaceAll(this string str, string regex, string replacement)
 
-         {
 
-             Regex rgx = new Regex(regex);
 
-             if (replacement.IndexOfAny(new[] { '\\', '$' }) != -1)
 
-             {
 
-                 // Back references not yet supported
 
-                 StringBuilder sb = new StringBuilder();
 
-                 for (int n = 0; n < replacement.Length; n++)
 
-                 {
 
-                     char c = replacement[n];
 
-                     if (c == '$')
 
-                         throw new NotSupportedException("Back references not supported");
 
-                     if (c == '\\')
 
-                         c = replacement[++n];
 
-                     sb.Append(c);
 
-                 }
 
-                 replacement = sb.ToString();
 
-             }
 
-             return rgx.Replace(str, replacement);
 
-         }
 
-         public static bool RegionMatches(this string str, bool ignoreCase, int toOffset, string other, int ooffset, int len)
 
-         {
 
-             if (toOffset < 0 || ooffset < 0 || toOffset + len > str.Length || ooffset + len > other.Length)
 
-                 return false;
 
-             return string.Compare(str, toOffset, other, ooffset, len) == 0;
 
-         }
 
-         public static T Set<T>(this IList<T> list, int index, T item)
 
-         {
 
-             T old = list[index];
 
-             list[index] = item;
 
-             return old;
 
-         }
 
-         public static int Signum(long val)
 
-         {
 
-             if (val < 0)
 
-             {
 
-                 return -1;
 
-             }
 
-             if (val > 0)
 
-             {
 
-                 return 1;
 
-             }
 
-             return 0;
 
-         }
 
-         public static void RemoveAll<T, TU>(this ICollection<T> col, ICollection<TU> items) where TU : T
 
-         {
 
-             foreach (var u in items)
 
-                 col.Remove(u);
 
-         }
 
-         public static bool ContainsAll<T, TU>(this ICollection<T> col, ICollection<TU> items) where TU : T
 
-         {
 
-             foreach (var u in items)
 
-                 if (!col.Any(n => (ReferenceEquals(n, u)) || n.Equals(u)))
 
-                     return false;
 
-             return true;
 
-         }
 
-         public static bool Contains<T>(this ICollection<T> col, object item)
 
-         {
 
-             if (!(item is T))
 
-                 return false;
 
-             return col.Any(n => (ReferenceEquals(n, item)) || n.Equals(item));
 
-         }
 
-         public static void Sort<T>(this IList<T> list)
 
-         {
 
-             List<T> sorted = new List<T>(list);
 
-             sorted.Sort();
 
-             for (int i = 0; i < list.Count; i++)
 
-             {
 
-                 list[i] = sorted[i];
 
-             }
 
-         }
 
-         public static void Sort<T>(this IList<T> list, IComparer<T> comparer)
 
-         {
 
-             List<T> sorted = new List<T>(list);
 
-             sorted.Sort(comparer);
 
-             for (int i = 0; i < list.Count; i++)
 
-             {
 
-                 list[i] = sorted[i];
 
-             }
 
-         }
 
-         public static string[] Split(this string str, string regex)
 
-         {
 
-             return str.Split(regex, 0);
 
-         }
 
-         public static string[] Split(this string str, string regex, int limit)
 
-         {
 
-             Regex rgx = new Regex(regex);
 
-             List<string> list = new List<string>();
 
-             int startIndex = 0;
 
-             if (limit != 1)
 
-             {
 
-                 int nm = 1;
 
-                 foreach (Match match in rgx.Matches(str))
 
-                 {
 
-                     list.Add(str.Substring(startIndex, match.Index - startIndex));
 
-                     startIndex = match.Index + match.Length;
 
-                     if (limit > 0 && ++nm == limit)
 
-                         break;
 
-                 }
 
-             }
 
-             if (startIndex < str.Length)
 
-             {
 
-                 list.Add(str.Substring(startIndex));
 
-             }
 
-             if (limit >= 0)
 
-             {
 
-                 int count = list.Count - 1;
 
-                 while ((count >= 0) && (list[count].Length == 0))
 
-                 {
 
-                     count--;
 
-                 }
 
-                 list.RemoveRange(count + 1, (list.Count - count) - 1);
 
-             }
 
-             return list.ToArray();
 
-         }
 
-         public static IList<T> SubList<T>(this IList<T> list, int start, int len)
 
-         {
 
-             List<T> sublist = new List<T>(len);
 
-             for (int i = start; i < (start + len); i++)
 
-             {
 
-                 sublist.Add(list[i]);
 
-             }
 
-             return sublist;
 
-         }
 
-         public static char[] ToCharArray(this string str)
 
-         {
 
-             char[] destination = new char[str.Length];
 
-             str.CopyTo(0, destination, 0, str.Length);
 
-             return destination;
 
-         }
 
-         public static long ToMillisecondsSinceEpoch(this DateTime dateTime)
 
-         {
 
-             if (dateTime.Kind != DateTimeKind.Utc)
 
-             {
 
-                 throw new ArgumentException("dateTime is expected to be expressed as a UTC DateTime", "dateTime");
 
-             }
 
-             return new DateTimeOffset(DateTime.SpecifyKind(dateTime, DateTimeKind.Utc), TimeSpan.Zero).ToMillisecondsSinceEpoch();
 
-         }
 
-         public static long ToMillisecondsSinceEpoch(this DateTimeOffset dateTimeOffset)
 
-         {
 
-             return (((dateTimeOffset.Ticks - dateTimeOffset.Offset.Ticks) - EpochTicks) / TimeSpan.TicksPerMillisecond);
 
-         }
 
-         public static string ToOctalString(int val)
 
-         {
 
-             return Convert.ToString(val, 8);
 
-         }
 
-         public static string ToHexString(int val)
 
-         {
 
-             return Convert.ToString(val, 16);
 
-         }
 
-         public static string ToString(object val)
 
-         {
 
-             return val.ToString();
 
-         }
 
-         public static string ToString(int val, int bas)
 
-         {
 
-             return Convert.ToString(val, bas);
 
-         }
 
-         public static IList<TU> UpcastTo<T, TU>(this IList<T> s) where T : TU
 
-         {
 
-             List<TU> list = new List<TU>(s.Count);
 
-             for (int i = 0; i < s.Count; i++)
 
-             {
 
-                 list.Add(s[i]);
 
-             }
 
-             return list;
 
-         }
 
-         public static ICollection<TU> UpcastTo<T, TU>(this ICollection<T> s) where T : TU
 
-         {
 
-             List<TU> list = new List<TU>(s.Count);
 
-             foreach (var v in s)
 
-             {
 
-                 list.Add(v);
 
-             }
 
-             return list;
 
-         }
 
-         public static T ValueOf<T>(T val)
 
-         {
 
-             return val;
 
-         }
 
-         //use? for NUnit-testing?
 
-         //public static string GetTestName(object obj)
 
-         //{
 
-         //    return GetTestName();
 
-         //}
 
-         //public static string GetTestName()
 
-         //{
 
-         //    MethodBase met;
 
-         //    int n = 0;
 
-         //    do
 
-         //    {
 
-         //        met = new StackFrame(n).GetMethod();
 
-         //        if (met != null)
 
-         //        {
 
-         //            foreach (Attribute at in met.GetCustomAttributes(true))
 
-         //            {
 
-         //                if (at.GetType().FullName == "NUnit.Framework.TestAttribute")
 
-         //                {
 
-         //                    // Convert back to camel case
 
-         //                    string name = met.Name;
 
-         //                    if (char.IsUpper(name[0]))
 
-         //                        name = char.ToLower(name[0]) + name.Substring(1);
 
-         //                    return name;
 
-         //                }
 
-         //            }
 
-         //        }
 
-         //        n++;
 
-         //    } while (met != null);
 
-         //    return "";
 
-         //}
 
-         public static string GetHostAddress(this IPAddress addr)
 
-         {
 
-             return addr.ToString();
 
-         }
 
-         public static IPAddress GetAddressByName(string host)
 
-         {
 
-             if (host == "0.0.0.0")
 
-             {
 
-                 return IPAddress.Any;
 
-             }                
 
-             
 
-             try
 
-             {
 
-                 return IPAddress.Parse(host);
 
-             }
 
-             catch (Exception ex)
 
-             {
 
-                 return null;
 
-             }            
 
-         }
 
-         public static IPAddress[] GetAddressesByName(string host)
 
-         {
 
-             //IReadOnlyList<EndpointPair> data = null;
 
-             //try
 
-             //{
 
-             //    Task.Run(async () =>
 
-             //    {
 
-             //        data = await DatagramSocket.GetEndpointPairsAsync(new HostName(host), "0");
 
-             //    }).Wait();
 
-             //}
 
-             //catch (Exception ex)
 
-             //{
 
-             //    return null;
 
-             //}
 
-             //return data != null
 
-             //    ? data.Where(i => i.RemoteHostName.Type == HostNameType.Ipv4)
 
-             //          .GroupBy(i => i.RemoteHostName.DisplayName)
 
-             //          .Select(i => IPAddress.Parse(i.First().RemoteHostName.DisplayName))
 
-             //          .ToArray() 
 
-             //    : null;
 
-             //get v4-address only
 
-             var entry = Task.Run(() => System.Net.Dns.GetHostEntryAsync(host))
 
-                             .GetAwaiter()
 
-                             .GetResult();
 
-             return entry.AddressList
 
-                         .Where(addr => addr.AddressFamily == AddressFamily.InterNetwork)
 
-                         .ToArray();
 
-         }
 
-         public static string GetImplementationVersion(this Assembly asm)
 
-         {
 
-             return asm.GetName().Version.ToString();
 
-         }
 
-         public static string GetHost(this Uri uri)
 
-         {
 
-             return string.IsNullOrEmpty(uri.Host) ? "" : uri.Host;
 
-         }
 
-         public static string GetUserInfo(this Uri uri)
 
-         {
 
-             return string.IsNullOrEmpty(uri.UserInfo) ? null : uri.UserInfo;
 
-         }
 
-         public static string GetQuery(this Uri uri)
 
-         {
 
-             return string.IsNullOrEmpty(uri.Query) ? null : uri.Query;
 
-         }
 
-         public static int GetLocalPort(this Socket socket)
 
-         {
 
-             return ((IPEndPoint)socket.LocalEndPoint).Port;
 
-         }
 
-         public static int GetPort(this Socket socket)
 
-         {
 
-             return ((IPEndPoint)socket.RemoteEndPoint).Port;
 
-         }
 
-         public static IPAddress GetInetAddress(this Socket socket)
 
-         {
 
-             return ((IPEndPoint)socket.RemoteEndPoint).Address;
 
-         }
 
-         /*public static bool RemoveElement(this ArrayList list, object elem)
 
-         {
 
-             int i = list.IndexOf(elem);
 
-             if (i == -1)
 
-                 return false;
 
-             list.RemoveAt(i);
 
-             return true;
 
-         }*/
 
-         public static Semaphore CreateSemaphore(int count)
 
-         {
 
-             return new Semaphore(count, int.MaxValue);
 
-         }
 
-     }
 
- }
 
 
  |