[ 
https://issues.apache.org/jira/browse/THRIFT-5843?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Tim Crews updated THRIFT-5843:
------------------------------
    Description: 
Add a *cpp:enum_classes* option to the C++ compiler so that a Thrift enum 
declaration like this:

{{enum PrintDirection}}
{{{}}
{{  Down = 68,}}
{{  Up = 85}}
{{}}}

becomes a C++ [scoped 
enumeration|https://en.cppreference.com/w/cpp/language/enum#Scoped_enumerations]
 declaration like this:

{{enum class PrintDirection {}}
{{  Down = 68,}}
{{  Up = 85}}
{{};}}

This is very similar to the existing *cpp::pure_enums* option, but it addresses 
the drawback that all of the enumerators (the values like Down and Up) are in 
the same namespace as the enumerators from other enum types.

I already have a working implementation of this feature that I have been using 
on a private fork of Thrift for about five years, so the only work required 
would be to prepare the pull request.

  was:
Add a cpp:enum_classes option to the C++ compiler so that a Thrift enum 
declaration like this:

{{enum PrintDirection
{
  Down = 68,
  Up = 85
}}}

becomes a C++ [scoped 
enumeration|https://en.cppreference.com/w/cpp/language/enum#Scoped_enumerations]
 declaration like this:

{{enum class PrintDirection {
  Down = 68,
  Up = 85
};}}

This is very similar to the existing cpp::pure_enums option, but it addresses 
the drawback that all of the enumerators (the values like Down and Up) are in 
the same namespace as the enumerators from other enum types.

I already have a working implementation of this feature that I have been using 
on a private fork of Thrift for about five years, so the only work required 
would be to prepare the pull request. 


> Represent Thrift enums as C++ enum classes
> ------------------------------------------
>
>                 Key: THRIFT-5843
>                 URL: https://issues.apache.org/jira/browse/THRIFT-5843
>             Project: Thrift
>          Issue Type: Improvement
>          Components: C++ - Compiler
>    Affects Versions: 0.21.0
>            Reporter: Tim Crews
>            Priority: Minor
>   Original Estimate: 48h
>  Remaining Estimate: 48h
>
> Add a *cpp:enum_classes* option to the C++ compiler so that a Thrift enum 
> declaration like this:
> {{enum PrintDirection}}
> {{{}}
> {{  Down = 68,}}
> {{  Up = 85}}
> {{}}}
> becomes a C++ [scoped 
> enumeration|https://en.cppreference.com/w/cpp/language/enum#Scoped_enumerations]
>  declaration like this:
> {{enum class PrintDirection {}}
> {{  Down = 68,}}
> {{  Up = 85}}
> {{};}}
> This is very similar to the existing *cpp::pure_enums* option, but it 
> addresses the drawback that all of the enumerators (the values like Down and 
> Up) are in the same namespace as the enumerators from other enum types.
> I already have a working implementation of this feature that I have been 
> using on a private fork of Thrift for about five years, so the only work 
> required would be to prepare the pull request.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to