RE: C structs & bad aftershave...

new topic     » goto parent     » topic index » view thread      » older message » newer message

Steve wrote:
> 
> 
> Anyone have any idea about this?
> 
> Do you need more information?  Is it not possible?
> 
> Hello?  :)
> 
> Steve
> 
> 
> Steve wrote:
> > 
> > 
> > Ok no Old Spice... I just wanted some attention! :)
> > 
> > Background: Lest I get ahead of myself.
> > I am using M Akita's SDL for Eu wrapper. SDL is compiled into a DLL.
> > I want to access a member of a C structure. 
> > 
> > typedef struct{
> >   Uint32 hw_available:1;
> >   Uint32 wm_available:1;
> >   Uint32 blit_hw:1;
> >   Uint32 blit_hw_CC:1;
> >   Uint32 blit_hw_A:1;
> >   Uint32 blit_sw:1;
> >   Uint32 blit_sw_CC:1;
> >   Uint32 blit_sw_A:1;
> >   Uint32 blit_fill;
> >   Uint32 video_mem;
> >   SDL_PixelFormat *vfmt;
> > } SDL_VideoInfo;
> > 
> > I can access its value by doing this:
> > 
> > atom videoInfo
> > 
> > videoInfo = SDL_GetVideoInfo()
> > 
> > How do I, using Euphoria, best go about reading the above bit flags?
> > I have tried this:
> > 
> > <EuCode)
> > sequence mbits
> > atom lflg
> > 
> > mbits = int_to_bits(videoInfo)
> > 
> > sprintf("flags: %d %d %d ...<snip>", {mbits[1], mbits[2], ...<snip>})
> > 
> <font color="#330033">> <EuCode&gt;</font>
> <font color="#330033">> </font>
> <font color="#330033">> Which gives me some really odd results.  When I
> </font><font color="#FF00FF">peek </font><font color="#330033">36 bytes into this
> </font>
> <font color="#330033">> structure, </font><font color="#0000FF">and
> </font><font color="#330033">grab 4 bytes, I </font><font color="#0000FF">do
> </font><font color="#330033">get the correct amount of video memory </font>
> <font color="#330033">> </font>
> <font color="#330033">> </font><font color="#0000FF">for </font><font
> color="#330033">my graphics card.  There ends my success though.</font>
> <font color="#330033">> </font>
> <font color="#330033">> Could someone explain </font><font color="#0000FF">to
> </font><font color="#330033">me how </font><font color="#0000FF">to </font><font
> color="#330033">access the bit flags of that struct?</font>
> <font color="#330033">> I seem </font><font color="#0000FF">to </font><font
> color="#330033">be doing this all wrong despite my best intentions. :)</font>
> <font color="#330033">> </font>
> <font color="#330033">> For more info, here is the SDL API page.</font>
> <font color="#330033">> http://www.libsdl.org/cgi/docwiki.cgi/SDL_20API</font>
> <font color="#330033">> </font>
> <font color="#330033">> Thanks again. As always, you guys rule.</font>
> <font color="#330033">> </font>
> <font color="#330033"></font>
> <font color="#330033"></font>

Steve:

The part of the structure Uint32 is a 32bit unsigned integer

In order to look at bitfield hw_available for example,  you have to AND
the binary number 1000 0000 0000 0000  or #8000 hex with
Uint32 portion of the structure 

Therefore:  and_bits(Uint32,#8000) would give you hw_available
            
                    -- binary 0010 0000 0000 0000
            and_bits(Uint32,#2000) would give you blit_hw
   etc.
 
Bernie

My files in archive:
WMOTOR, XMOTOR, W32ENGIN, MIXEDLIB, EU_ENGIN, WIN32ERU, WIN32API 

Can be downloaded here:
http://www.rapideuphoria.com/cgi-bin/asearch.exu?dos=on&win=on&lnx=on&gen=on&keywords=bernie+ryan

new topic     » goto parent     » topic index » view thread      » older message » newer message

Search



Quick Links

User menu

Not signed in.

Misc Menu