Skip to content

Commit 01962bb

Browse files
authored
Save meta_function_name as a string (#661)
1 parent 13c826f commit 01962bb

File tree

2 files changed

+32
-30
lines changed

2 files changed

+32
-30
lines changed

source/reflect.h

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -627,49 +627,50 @@ auto parser::apply_type_meta_functions( declaration_node& n )
627627
// For each metafunction, apply it
628628
for (auto& meta : n.meta_functions)
629629
{
630-
rtype.set_meta_function_name( meta->to_string() );
630+
auto name = meta->to_string();
631+
rtype.set_meta_function_name( name );
631632

632-
if (meta->to_string() == "interface") {
633+
if (name == "interface") {
633634
interface( rtype );
634635
}
635-
else if (meta->to_string() == "polymorphic_base") {
636+
else if (name == "polymorphic_base") {
636637
polymorphic_base( rtype );
637638
}
638-
else if (meta->to_string() == "ordered") {
639+
else if (name == "ordered") {
639640
ordered( rtype );
640641
}
641-
else if (meta->to_string() == "weakly_ordered") {
642+
else if (name == "weakly_ordered") {
642643
weakly_ordered( rtype );
643644
}
644-
else if (meta->to_string() == "partially_ordered") {
645+
else if (name == "partially_ordered") {
645646
partially_ordered( rtype );
646647
}
647-
else if (meta->to_string() == "copyable") {
648+
else if (name == "copyable") {
648649
copyable( rtype );
649650
}
650-
else if (meta->to_string() == "basic_value") {
651+
else if (name == "basic_value") {
651652
basic_value( rtype );
652653
}
653-
else if (meta->to_string() == "value") {
654+
else if (name == "value") {
654655
value( rtype );
655656
}
656-
else if (meta->to_string() == "weakly_ordered_value") {
657+
else if (name == "weakly_ordered_value") {
657658
weakly_ordered_value( rtype );
658659
}
659-
else if (meta->to_string() == "partially_ordered_value") {
660+
else if (name == "partially_ordered_value") {
660661
partially_ordered_value( rtype );
661662
}
662-
else if (meta->to_string() == "struct") {
663+
else if (name == "struct") {
663664
cpp2_struct( rtype );
664665
}
665-
else if (meta->to_string() == "enum") {
666+
else if (name == "enum") {
666667
cpp2_enum( rtype );
667668
}
668-
else if (meta->to_string() == "flag_enum") {
669+
else if (name == "flag_enum") {
669670
flag_enum( rtype );
670671
}
671672
else {
672-
error( "(temporary alpha limitation) unrecognized metafunction name '" + meta->to_string() + "' - currently the supported names are: interface, polymorphic_base, ordered, weakly_ordered, partially_ordered, copyable, basic_value, value, weakly_ordered_value, partially_ordered_value, struct, enum, flag_enum" );
673+
error( "(temporary alpha limitation) unrecognized metafunction name '" + name + "' - currently the supported names are: interface, polymorphic_base, ordered, weakly_ordered, partially_ordered, copyable, basic_value, value, weakly_ordered_value, partially_ordered_value, struct, enum, flag_enum" );
673674
return false;
674675
}
675676
}

source/reflect.h2

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -962,49 +962,50 @@ auto parser::apply_type_meta_functions( declaration_node& n )
962962
// For each metafunction, apply it
963963
for (auto& meta : n.meta_functions)
964964
{
965-
rtype.set_meta_function_name( meta->to_string() );
965+
auto name = meta->to_string();
966+
rtype.set_meta_function_name( name );
966967

967-
if (meta->to_string() == "interface") {
968+
if (name == "interface") {
968969
interface( rtype );
969970
}
970-
else if (meta->to_string() == "polymorphic_base") {
971+
else if (name == "polymorphic_base") {
971972
polymorphic_base( rtype );
972973
}
973-
else if (meta->to_string() == "ordered") {
974+
else if (name == "ordered") {
974975
ordered( rtype );
975976
}
976-
else if (meta->to_string() == "weakly_ordered") {
977+
else if (name == "weakly_ordered") {
977978
weakly_ordered( rtype );
978979
}
979-
else if (meta->to_string() == "partially_ordered") {
980+
else if (name == "partially_ordered") {
980981
partially_ordered( rtype );
981982
}
982-
else if (meta->to_string() == "copyable") {
983+
else if (name == "copyable") {
983984
copyable( rtype );
984985
}
985-
else if (meta->to_string() == "basic_value") {
986+
else if (name == "basic_value") {
986987
basic_value( rtype );
987988
}
988-
else if (meta->to_string() == "value") {
989+
else if (name == "value") {
989990
value( rtype );
990991
}
991-
else if (meta->to_string() == "weakly_ordered_value") {
992+
else if (name == "weakly_ordered_value") {
992993
weakly_ordered_value( rtype );
993994
}
994-
else if (meta->to_string() == "partially_ordered_value") {
995+
else if (name == "partially_ordered_value") {
995996
partially_ordered_value( rtype );
996997
}
997-
else if (meta->to_string() == "struct") {
998+
else if (name == "struct") {
998999
cpp2_struct( rtype );
9991000
}
1000-
else if (meta->to_string() == "enum") {
1001+
else if (name == "enum") {
10011002
cpp2_enum( rtype );
10021003
}
1003-
else if (meta->to_string() == "flag_enum") {
1004+
else if (name == "flag_enum") {
10041005
flag_enum( rtype );
10051006
}
10061007
else {
1007-
error( "(temporary alpha limitation) unrecognized metafunction name '" + meta->to_string() + "' - currently the supported names are: interface, polymorphic_base, ordered, weakly_ordered, partially_ordered, copyable, basic_value, value, weakly_ordered_value, partially_ordered_value, struct, enum, flag_enum" );
1008+
error( "(temporary alpha limitation) unrecognized metafunction name '" + name + "' - currently the supported names are: interface, polymorphic_base, ordered, weakly_ordered, partially_ordered, copyable, basic_value, value, weakly_ordered_value, partially_ordered_value, struct, enum, flag_enum" );
10081009
return false;
10091010
}
10101011
}

0 commit comments

Comments
 (0)