| File: _generated\10\Windows.Win32.BSTR.g.cs | Web Access |
| Project: src\winforms\src\System.Private.Windows.Core\src\Microsoft.Private.Windows.Core.csproj (Microsoft.Private.Windows.Core) |
// ------------------------------------------------------------------------------ // <auto-generated> // This code was generated by a tool. // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. // </auto-generated> // ------------------------------------------------------------------------------ #pragma warning disable CS1591,CS1573,CS0465,CS0649,CS8019,CS1570,CS1584,CS1658,CS0436,CS8981,SYSLIB1092,CS3021,CS3019 using global::System; using global::System.Diagnostics; using global::System.Diagnostics.CodeAnalysis; using global::System.Runtime.CompilerServices; using global::System.Runtime.InteropServices; using global::System.Runtime.Versioning; using winmdroot = global::Windows.Win32; namespace Windows.Win32 { namespace Foundation { [DebuggerDisplay("{Value}")] [global::System.CodeDom.Compiler.GeneratedCode("Microsoft.Windows.CsWin32", "0.3.287+85e3fa26dd.RR")] internal unsafe readonly partial struct BSTR : IEquatable<BSTR> { internal readonly char* Value; internal BSTR(char* value) => this.Value = value; internal BSTR(IntPtr value):this(unchecked((char*)value)) { } public static implicit operator char*(BSTR value) => value.Value; public static explicit operator BSTR(char* value) => new BSTR(value); public static bool operator ==(BSTR left, BSTR right) => left.Value == right.Value; public static bool operator !=(BSTR left, BSTR right) => !(left == right); public bool Equals(BSTR other) => this.Value == other.Value; public override bool Equals(object obj) => obj is BSTR other && this.Equals(other); public override int GetHashCode() => unchecked((int)this.Value); public override string ToString() => this.Value != null ? Marshal.PtrToStringBSTR(new IntPtr(this.Value)) : null; public static implicit operator IntPtr(BSTR value) => new IntPtr(value.Value); public static explicit operator BSTR(IntPtr value) => new BSTR((char*)value.ToPointer()); public static explicit operator BSTR(UIntPtr value) => new BSTR((char*)value.ToPointer()); /// <summary> /// Gets the length of the BSTR in characters. /// </summary> internal unsafe int Length => this.Value is null ? 0 : checked((int)(*(((uint*)this.Value) - 1) / sizeof(char))); public static unsafe implicit operator ReadOnlySpan<char>(BSTR bstr) => bstr.Value != null ? new ReadOnlySpan<char>(bstr.Value, *((int*)bstr.Value - 1) / 2) : default(ReadOnlySpan<char>); internal ReadOnlySpan<char> AsSpan() => this; } } }