From 1e99eec50a773d5704573fdd887b93287ed80d88 Mon Sep 17 00:00:00 2001 From: Garry Newman Date: Wed, 19 Feb 2020 09:00:56 +0000 Subject: [PATCH] Extract WriteEnum --- Generator/CodeWriter/Enums.cs | 96 ++++++++++++++++++----------------- 1 file changed, 50 insertions(+), 46 deletions(-) diff --git a/Generator/CodeWriter/Enums.cs b/Generator/CodeWriter/Enums.cs index 533a5ae..d5d48c4 100644 --- a/Generator/CodeWriter/Enums.cs +++ b/Generator/CodeWriter/Enums.cs @@ -25,10 +25,10 @@ namespace Generator if ( name[0] == 'E' ) name = name.Substring( 1 ); - name = Cleanup.ConvertType( name ); + name = Cleanup.ConvertType( name ); - if ( !Cleanup.ShouldCreate( name ) ) - continue; + if ( !Cleanup.ShouldCreate( name ) ) + continue; var lowest = o.Values.Min( x => long.Parse( x.Value ) ); var highest = o.Values.Max( x => long.Parse( x.Value ) ); @@ -38,58 +38,62 @@ namespace Generator if ( highest > int.MaxValue ) t = "uint"; + WriteEnum( o, name, t ); + } + } - StartBlock( $"{Cleanup.Expose( name )} enum {name} : {t}" ); + private void WriteEnum( SteamApiDefinition.EnumDef o, string name, string t = "int" ) + { + StartBlock( $"{Cleanup.Expose( name )} enum {name} : {t}" ); + { + // + // If all the enum values start with the same + // string, remove it. This converts + // "k_EUserHasLicenseResultHasLicense" to "HasLicense" etc + // + int iFinished = int.MaxValue; + for ( int i = 0; i < 4096; i++ ) { - // - // If all the enum values start with the same - // string, remove it. This converts - // "k_EUserHasLicenseResultHasLicense" to "HasLicense" etc - // - int iFinished = int.MaxValue; - for ( int i = 0; i < 4096; i++ ) - { - var c = o.Values.First().Name[i]; - foreach ( var entry in o.Values ) - { - if ( entry.Name[i] != c ) - { - iFinished = i; - break; - } - } - - if ( iFinished != int.MaxValue ) - break; - } - + var c = o.Values.First().Name[i]; foreach ( var entry in o.Values ) { - var ename = entry.Name; - - if ( iFinished != int.MaxValue ) - ename = ename.Substring( iFinished ); - - // - // Names aren't allowed to start with a number - // So just stick the enum name on the front - // - if ( char.IsNumber( ename[0] ) ) + if ( entry.Name[i] != c ) { - var p = name; - - if ( p == "HTTPStatusCode" ) p = "Code"; - if ( p == "SteamIPType" ) p = "Type"; - - ename = p + ename; + iFinished = i; + break; } - - WriteLine( $"{ename} = {entry.Value}," ); } + + if ( iFinished != int.MaxValue ) + break; + } + + foreach ( var entry in o.Values ) + { + var ename = entry.Name; + + if ( iFinished != int.MaxValue ) + ename = ename.Substring( iFinished ); + + // + // Names aren't allowed to start with a number + // So just stick the enum name on the front + // + if ( char.IsNumber( ename[0] ) ) + { + var p = name; + + if ( p == "HTTPStatusCode" ) p = "Code"; + if ( p == "SteamIPType" ) p = "Type"; + + ename = p + ename; + } + + WriteLine( $"{ename} = {entry.Value}," ); } - EndBlock(); - WriteLine(); } + EndBlock(); + WriteLine(); } } }