66using System . Collections . Generic ;
77using System . Linq ;
88using System . Text ;
9-
10- internal enum Lang
11- {
12- // Language wasn't recognized.
13- Unknown ,
14-
15- // Language specified was ambigious.
16- Ambiguous ,
17-
18- CSharp ,
19- Cx ,
20- Cppwinrt ,
21- LottieYaml ,
22- WinCompDgml ,
23- Stats ,
24- }
9+ using Microsoft . Toolkit . Uwp . UI . Lottie . UIData . CodeGen . CSharp ;
2510
2611sealed class CommandLineOptions
2712{
2813 readonly List < string > _additionalInterfaces = new List < string > ( ) ;
2914 readonly List < string > _languageStrings = new List < string > ( ) ;
30- string ? _interfaceBaseName ;
3115 Version ? _winUIVersion ;
3216
3317 internal IReadOnlyList < string > AdditionalInterfaces => _additionalInterfaces ;
@@ -48,9 +32,7 @@ sealed class CommandLineOptions
4832
4933 internal string ? InputFile { get ; private set ; }
5034
51- internal string InterfaceBaseName => _interfaceBaseName ?? "Microsoft.UI.Xaml.Controls.IAnimatedVisual" ;
52-
53- internal IReadOnlyList < Lang > Languages { get ; private set ; } = Array . Empty < Lang > ( ) ;
35+ internal IReadOnlyList < Language > Languages { get ; private set ; } = Array . Empty < Language > ( ) ;
5436
5537 internal uint ? MinimumUapVersion { get ; private set ; }
5638
@@ -84,7 +66,7 @@ sealed class CommandLineOptions
8466 // for adding to generated code so that users can regenerate the code and know that
8567 // they got the set of options the same as a previous run. It does not include the
8668 // InputFile, OutputFolder, or Language options.
87- internal string ToConfigurationCommandLine ( string languageSwitch )
69+ internal string ToConfigurationCommandLine ( Language languageSwitch )
8870 {
8971 var sb = new StringBuilder ( ) ;
9072 sb . Append ( ThisAssembly . AssemblyName ) ;
@@ -117,8 +99,6 @@ internal string ToConfigurationCommandLine(string languageSwitch)
11799 sb . Append ( $ " -{ nameof ( GenerateDependencyObject ) } ") ;
118100 }
119101
120- sb . Append ( $ " -{ nameof ( InterfaceBaseName ) } { InterfaceBaseName } ") ;
121-
122102 sb . Append ( $ " -Language { languageSwitch } ") ;
123103
124104 if ( MinimumUapVersion . HasValue )
@@ -131,18 +111,28 @@ internal string ToConfigurationCommandLine(string languageSwitch)
131111 sb . Append ( $ " -{ nameof ( Namespace ) } { Namespace } ") ;
132112 }
133113
134- // The -Public switch is ignored for c++.
135- if ( Public &&
136- ! ( languageSwitch . Equals ( "cppwinrt" , StringComparison . OrdinalIgnoreCase ) ||
137- languageSwitch . Equals ( "cx" , StringComparison . OrdinalIgnoreCase ) ) )
114+ switch ( languageSwitch )
138115 {
139- sb . Append ( $ " -{ nameof ( Public ) } ") ;
116+ case Language . Cx :
117+ case Language . Cppwinrt :
118+ // The -Public switch is ignored for c++.
119+ break ;
120+
121+ default :
122+ sb . Append ( $ " -{ nameof ( Public ) } ") ;
123+ break ;
140124 }
141125
142- // The -RootNamespace parameter is only used for cppwinrt.
143- if ( ! string . IsNullOrWhiteSpace ( RootNamespace ) && languageSwitch . Equals ( "cppwinrt" , StringComparison . OrdinalIgnoreCase ) )
126+ switch ( languageSwitch )
144127 {
145- sb . Append ( $ " -{ nameof ( RootNamespace ) } { RootNamespace } ") ;
128+ case Language . Cppwinrt :
129+ // The -RootNamespace parameter is only used for cppwinrt.
130+ if ( ! string . IsNullOrWhiteSpace ( RootNamespace ) )
131+ {
132+ sb . Append ( $ " -{ nameof ( RootNamespace ) } { RootNamespace } ") ;
133+ }
134+
135+ break ;
146136 }
147137
148138 if ( StrictMode )
@@ -201,17 +191,17 @@ internal static CommandLineOptions ParseCommandLine(string[] args)
201191 result . ParseCommandLineStrings ( args ) ;
202192
203193 // Convert the language strings to language values.
204- var languageTokenizer = new CommandlineTokenizer < Lang > ( Lang . Ambiguous )
205- . AddKeyword ( Lang . CSharp )
206- . AddKeyword ( Lang . Cx , "cppcx" )
207- . AddKeyword ( Lang . Cx )
208- . AddKeyword ( Lang . Cppwinrt )
209- . AddKeyword ( Lang . Cppwinrt , "winrtcpp" )
210- . AddKeyword ( Lang . LottieYaml )
211- . AddKeyword ( Lang . WinCompDgml , "dgml" )
212- . AddKeyword ( Lang . Stats ) ;
213-
214- var languages = new List < Lang > ( ) ;
194+ var languageTokenizer = new CommandlineTokenizer < Language > ( Language . Ambiguous )
195+ . AddKeyword ( Language . CSharp )
196+ . AddKeyword ( Language . Cx , "cppcx" )
197+ . AddKeyword ( Language . Cx )
198+ . AddKeyword ( Language . Cppwinrt )
199+ . AddKeyword ( Language . Cppwinrt , "winrtcpp" )
200+ . AddKeyword ( Language . LottieYaml )
201+ . AddKeyword ( Language . WinCompDgml , "dgml" )
202+ . AddKeyword ( Language . Stats ) ;
203+
204+ var languages = new List < Language > ( ) ;
215205
216206 // Parse the language string.
217207 foreach ( var languageString in result . _languageStrings )
@@ -220,10 +210,10 @@ internal static CommandLineOptions ParseCommandLine(string[] args)
220210 languages . Add ( language ) ;
221211 switch ( language )
222212 {
223- case Lang . Unknown :
213+ case Language . Unknown :
224214 result . ErrorDescription = $ "Unrecognized language: { languageString } ";
225215 break ;
226- case Lang . Ambiguous :
216+ case Language . Ambiguous :
227217 result . ErrorDescription = $ "Ambiguous language: { languageString } ";
228218 break ;
229219 }
@@ -342,16 +332,6 @@ void ParseCommandLineStrings(string[] args)
342332 InputFile = arg ;
343333 previousKeyword = Keyword . None ;
344334 break ;
345- case Keyword . Interface :
346- if ( _interfaceBaseName != null )
347- {
348- ErrorDescription = ArgumentSpecifiedMoreThanOnce ( "Interface base name" ) ;
349- return ;
350- }
351-
352- _interfaceBaseName = arg ;
353- previousKeyword = Keyword . None ;
354- break ;
355335 case Keyword . Language :
356336 _languageStrings . Add ( arg ) ;
357337 previousKeyword = Keyword . None ;
@@ -424,6 +404,7 @@ void ParseCommandLineStrings(string[] args)
424404
425405 previousKeyword = Keyword . None ;
426406 break ;
407+
427408 case Keyword . WinUIVersion :
428409 if ( _winUIVersion != null )
429410 {
0 commit comments