Skip to content

Instantly share code, notes, and snippets.

@mjs3339
mjs3339 / MMTimer.cs
Last active September 1, 2022 07:14
C# Multimedia Timer TimeSetEvent TimeKillEvent
public class MMTimer : IDisposable
{
private const int EventTypePeriodic = 1;
private const uint STATUS_SUCCESS = 0;
private const uint STATUS_TIMER_RESOLUTION_NOT_SET = 0xC0000245;
private readonly MultimediaTimerCallback Callback;
private bool disposed;
private bool enabled;
private bool highestPossibleResolution;
private int interval, resolution;
@mjs3339
mjs3339 / BigRational.cs
Last active August 11, 2022 22:38
C# Arbitrary Precision Signed Big Rational Numbers
using System;
using System.Diagnostics;
using System.Globalization;
using System.Numerics;
using System.Runtime.InteropServices;
using System.Text;
[DebuggerDisplay("{" + nameof(DDisplay) + "}")]
[Serializable]
public struct BigRational : IComparable, IComparable<BigRational>, IEquatable<BigRational>
{
@mjs3339
mjs3339 / BigIntegerPrimality.cs
Last active April 30, 2022 20:53
C# BigInteger Primality Class
public class BigIntegerPrimality
{
public static readonly int[] Primes4k =
{
2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151,
157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313,
317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491,
499, 503, 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677,
683, 691, 701, 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881,
883, 887, 907, 911, 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997, 1009, 1013, 1019, 1021, 1031, 1033, 1039, 1049, 1051, 1061,
@mjs3339
mjs3339 / FileHelperEx.cs
Created August 31, 2018 00:07
C# File Helper Class Stream, Action, Copy, Read, Write
/// <summary>
/// Example:
/// var fh = new FileHelperEx();
/// var hash = new SHA512CryptoServiceProvider();
/// hash.Initialize();
/// fh.ReadStream(fileName, buffer => hash.TransformBlock(buffer, 0, buffer.Length, null, 0));
/// hash.Final();
/// var sha512 = new BigInteger(hash.Hash);
/// </summary>
public class FileHelperEx
@mjs3339
mjs3339 / BoyerMooreGeneric.cs
Last active March 13, 2022 13:37
C# Boyer Moore Generic Search Algorithm
using System;
using System.Collections.Generic;
public class BoyerMooreGeneric<T>
{
private readonly IEqualityComparer<T> _comparer;
private Dictionary<T, int> _jumpTable;
private T[] _pattern;
private int _patternLength;
public BoyerMooreGeneric()
{
@mjs3339
mjs3339 / BoyerMooreString.cs
Created March 7, 2022 11:25
BoyerMoore String Searching Algorithm
using System;
using System.Collections.Generic;
public class BoyerMooreString
{
private const int CMaxValue = char.MaxValue;
private int[] _jumpTable;
private string _pattern;
private int _patternLength;
public BoyerMooreString()
@mjs3339
mjs3339 / BoyerMoore.cs
Last active February 17, 2022 07:11
C# High Performance Boyer Moore Byte Array Search Algorithm
public class BoyerMoore
{
private int[] _jumpTable;
private byte[] _pattern;
private int _patternLength;
public BoyerMoore()
{
}
public BoyerMoore(byte[] pattern)
{
@mjs3339
mjs3339 / GetProcessorInfo.cs
Created July 6, 2018 21:30
C# Get CPU Information using WMI
private static Dictionary<string, string> GetProcessorInfo()
{
ManagementObjectCollection moc;
var Processor = new Dictionary<string, string>();
try
{
moc = new ManagementObjectSearcher("select * from Win32_Processor").Get();
}
catch
@mjs3339
mjs3339 / PDiskInformation.cs
Created June 18, 2018 17:36
C# Get Physical Disk Information using WMI and MSFT_PhysicalDisk
public class PDiskInformation
{
private Dictionary<string, PhysicalDiskStruct> _pdiCache = new Dictionary<string, PhysicalDiskStruct>();
public Dictionary<string, PhysicalDiskStruct> PDiskInfo
{
get
{
if(_pdiCache.Count == 0)
_pdiCache = GetDiskPI();
return _pdiCache;
@mjs3339
mjs3339 / LimitedList.cs
Created April 21, 2018 22:57
C# Limited Size List Class
[Serializable]
public class LimitedList<T> : IEnumerable<T>
{
private T[] _thing;
public LimitedList(int maxsize)
{
_thing = new T[maxsize];
MaxSize = maxsize;
}
private int MaxSize { get; }