Thread overview
size of C enum
Jun 28, 2005
Trevor Parscal
Jul 01, 2005
Stewart Gordon
June 28, 2005
I am still working on FreeType for D, and I am having trouble, of course.

Sooo, if FreeType is in C, and I am writing a binding... And there is an enum in the headers, which is refered to by the name of the enumeration...

I should take this...

/* C Code */
typedef enum FT_Glyph_Format_
{
	FT_GLYPH_FORMAT_NONE = 0,
	FT_GLYPH_FORMAT_COMPOSITE = 1668246896,
	FT_GLYPH_FORMAT_BITMAP = 1651078259,
	FT_GLYPH_FORMAT_OUTLINE = 1869968492,
	FT_GLYPH_FORMAT_PLOTTER = 1886154612
} FT_Glyph_Format;
/* */

and write this?

/* D Code */
alias int FT_Glyph_Format;
const int FT_GLYPH_FORMAT_NONE = 0;
const int FT_GLYPH_FORMAT_COMPOSITE = 1668246896;
const int FT_GLYPH_FORMAT_BITMAP = 1651078259;
const int FT_GLYPH_FORMAT_OUTLINE = 1869968492;
const int FT_GLYPH_FORMAT_PLOTTER = 1886154612;
/* */

The reason I am asking, is because I am getting an error that the FT_Glyph_Format is invalid, which to me hints wrong data type, but I have tried everything I feel like...

How big is a C enumeration in D? Am I doing this all wrong? ANY Help would be really great!

-- 
Thanks,
Trevor Parscal
www.trevorparscal.com
trevorparscal@hotmail.com
June 28, 2005
I would personally just do this:

enum FT_Glyph_Format
{
    FT_GLYPH_FORMAT_NONE = 0,
    FT_GLYPH_FORMAT_COMPOSITE = 1668246896,
    FT_GLYPH_FORMAT_BITMAP = 1651078259,
    FT_GLYPH_FORMAT_OUTLINE = 1869968492,
    FT_GLYPH_FORMAT_PLOTTER = 1886154612
}

But you could do this:

alias int FT_Glyph_Format;
const FT_Glyph_Format FT_GLYPH_FORMAT_NONE = 0;
const FT_Glyph_Format FT_GLYPH_FORMAT_COMPOSITE = 1668246896;
const FT_Glyph_Format FT_GLYPH_FORMAT_BITMAP = 1651078259;
const FT_Glyph_Format FT_GLYPH_FORMAT_OUTLINE = 1869968492;
const FT_Glyph_Format FT_GLYPH_FORMAT_PLOTTER = 1886154612;

An enum will be, afaik, an int by default.

-[Unknown]


> I am still working on FreeType for D, and I am having trouble, of course.
> 
> Sooo, if FreeType is in C, and I am writing a binding... And there is an enum in the headers, which is refered to by the name of the enumeration...
> 
> I should take this...
> 
> /* C Code */
> typedef enum FT_Glyph_Format_
> {
>     FT_GLYPH_FORMAT_NONE = 0,
>     FT_GLYPH_FORMAT_COMPOSITE = 1668246896,
>     FT_GLYPH_FORMAT_BITMAP = 1651078259,
>     FT_GLYPH_FORMAT_OUTLINE = 1869968492,
>     FT_GLYPH_FORMAT_PLOTTER = 1886154612
> } FT_Glyph_Format;
> /* */
> 
> and write this?
> 
> /* D Code */
> alias int FT_Glyph_Format;
> const int FT_GLYPH_FORMAT_NONE = 0;
> const int FT_GLYPH_FORMAT_COMPOSITE = 1668246896;
> const int FT_GLYPH_FORMAT_BITMAP = 1651078259;
> const int FT_GLYPH_FORMAT_OUTLINE = 1869968492;
> const int FT_GLYPH_FORMAT_PLOTTER = 1886154612;
> /* */
> 
> The reason I am asking, is because I am getting an error that the FT_Glyph_Format is invalid, which to me hints wrong data type, but I have tried everything I feel like...
> 
> How big is a C enumeration in D? Am I doing this all wrong? ANY Help would be really great!
> 
July 01, 2005
Unknown W. Brackets wrote:
> I would personally just do this:
> 
> enum FT_Glyph_Format
> {
>     FT_GLYPH_FORMAT_NONE = 0,
>     FT_GLYPH_FORMAT_COMPOSITE = 1668246896,
>     FT_GLYPH_FORMAT_BITMAP = 1651078259,
>     FT_GLYPH_FORMAT_OUTLINE = 1869968492,
>     FT_GLYPH_FORMAT_PLOTTER = 1886154612
> }
> 
> But you could do this:
> 
> alias int FT_Glyph_Format;
> const FT_Glyph_Format FT_GLYPH_FORMAT_NONE = 0;
> const FT_Glyph_Format FT_GLYPH_FORMAT_COMPOSITE = 1668246896;
> const FT_Glyph_Format FT_GLYPH_FORMAT_BITMAP = 1651078259;
> const FT_Glyph_Format FT_GLYPH_FORMAT_OUTLINE = 1869968492;
> const FT_Glyph_Format FT_GLYPH_FORMAT_PLOTTER = 1886154612;
> 
> An enum will be, afaik, an int by default.
<snip>

How about this?

    enum FT_Glyph_Format {
        NONE      = 0,
        COMPOSITE = 1668246896,
        BITMAP    = 1651078259,
        OUTLINE   = 1869968492,
        PLOTTER   = 1886154612
    }

No point forcing yourself to write such redundancies as FT_Glyph_Format.FT_GLYPH_FORMAT_COMPOSITE all the time.  This way, the final underscore effectively turns into a dot.  This is how, in SDWF, I create enums from Windows API constants.

Stewart.

-- 
My e-mail is valid but not my primary mailbox.  Please keep replies on the 'group where everyone may benefit.