Giter Club home page Giter Club logo

Comments (4)

AArnott avatar AArnott commented on July 19, 2024

BOOL appears in many places, including fields of structs, where marshaling is not always desirable or possible. However your doc snippet suggests that we can use bool (without marshaling) everywhere that BOOL appears, and that we should use a 1-byte representation wherever the native code uses bool.

@sotteson1, does the Win32 API ever use the native bool type (1-byte in length)? And if so, how is it represented in the metadata? It sounds like we can use System.Boolean for the 4-byte BOOL and should use something else for the C 1-byte bool type other than System.Boolean.

from cswin32.

sotteson1 avatar sotteson1 commented on July 19, 2024

I'm not sure why we would use the System.Boolean, as BOOL in Win32 is simply an 32-bit int. Using a NativeTypedef struct for the Win32 BOOL seems to be closer to the spirit of what the Win32 BOOL is.

from cswin32.

AArnott avatar AArnott commented on July 19, 2024

Thanks for chiming in, @sotteson1. I guess for proper interop on the CLR and better C# language experience, we can change all references from BOOL to bool in CsWin32.

from cswin32.

AArnott avatar AArnott commented on July 19, 2024

I just tried replacing all uses of BOOL with bool in our projection, but although the default interop size may be the same (4 bytes) between the two, evidently the CLR still considers bool to be a marshaled type, which makes it intolerable for use as a field in a struct, at least until #26 is delivered and only for customers using that setting.

from cswin32.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.