mirror of https://github.com/swig/swig
51 lines
1.0 KiB
OpenEdge ABL
51 lines
1.0 KiB
OpenEdge ABL
%module template_int_const
|
|
|
|
%warnfilter(SWIGWARN_RUBY_WRONG_NAME) interface_traits; /* Ruby, wrong class name */
|
|
%warnfilter(SWIGWARN_RUBY_WRONG_NAME) module_traits; /* Ruby, wrong class name */
|
|
|
|
%inline %{
|
|
enum Polarization { UnaryPolarization, BinaryPolarization };
|
|
struct interface_traits
|
|
{
|
|
static const Polarization polarization = UnaryPolarization;
|
|
};
|
|
template <Polarization P>
|
|
struct Interface_
|
|
{
|
|
};
|
|
|
|
typedef unsigned int Category;
|
|
struct module_traits
|
|
{
|
|
static const Category category = 1;
|
|
};
|
|
|
|
template <Category C>
|
|
struct Module
|
|
{
|
|
};
|
|
%}
|
|
|
|
%template(Interface_UP) Interface_<UnaryPolarization>;
|
|
%template(Module_1) Module<1>;
|
|
|
|
%inline %{
|
|
struct ExtInterface1 :
|
|
Interface_<UnaryPolarization> // works
|
|
{
|
|
};
|
|
struct ExtInterface2 :
|
|
Interface_<interface_traits::polarization> // doesn't work
|
|
{
|
|
};
|
|
struct ExtModule1 :
|
|
Module<1> // works
|
|
{
|
|
};
|
|
struct ExtModule2 :
|
|
Module<module_traits::category> // doesn't work
|
|
{
|
|
};
|
|
%}
|
|
|