66
77namespace ArrayVisualizerExt . ArrayLoaders
88{
9- internal class CsArrayLoader : IArrayLoader
10- {
11- #region IArrayLoader Members
12-
13- public char LeftBracket { get { return '[' ; } }
14-
15- public char RightBracket { get { return ']' ; } }
16-
17- public bool IsExpressionArrayType ( Expression expression )
18- {
19- if ( expression == null )
20- throw new ArgumentNullException ( "expression" ) ;
21-
22- string expressionType = Helper . RemoveBrackets ( expression . Type ) ;
23- return expressionType . EndsWith ( "]" ) && ( expressionType . EndsWith ( "[]" ) || expressionType . EndsWith ( "[,]" ) || expressionType . EndsWith ( "[,,]" ) || expressionType . EndsWith ( "[,,,]" ) ) ;
24- }
25-
26- public string GetDisplayName ( Expression expression )
27- {
28- if ( expression == null )
29- throw new ArgumentNullException ( "expression" ) ;
30-
31- return expression . Value ;
32- }
33-
34- public IEnumerable < ExpressionInfo > GetArrays ( string section , Expression expression , ParsersCollection parsers , int sectionCode )
35- {
36- if ( expression . DataMembers . Count == 0 )
37- yield break ;
38-
39- foreach ( ITypeParser parser in parsers . Where ( P => P . IsExpressionTypeSupported ( expression ) ) )
40- {
41- yield return new ExpressionInfo ( expression . Name , section , parser . GetDisplayName ( expression ) , expression , sectionCode ) ;
42- break ;
43- }
44-
45- switch ( expression . Name )
46- {
47- case "this" :
48- foreach ( Expression subExpression in expression . DataMembers )
49- foreach ( ExpressionInfo item in GetArrays ( "this." , subExpression , parsers , - 1 ) )
50- yield return item ;
51- break ;
52- case "Static members" :
53- foreach ( Expression subExpression in expression . DataMembers )
54- foreach ( ExpressionInfo item in GetArrays ( "(Static) " , subExpression , parsers , - 2 ) )
55- yield return item ;
56- break ;
57- }
58- }
59-
60- public int GetMembersCount ( Expression expression )
9+ internal class CsArrayLoader : IArrayLoader
6110 {
62- if ( expression == null )
63- throw new ArgumentNullException ( "expression" ) ;
64-
65- return expression . DataMembers . Count ;
11+ #region IArrayLoader Members
12+
13+ public char LeftBracket
14+ {
15+ get { return '[' ; }
16+ }
17+
18+ public char RightBracket
19+ {
20+ get { return ']' ; }
21+ }
22+
23+ public bool IsExpressionArrayType ( Expression expression )
24+ {
25+ if ( expression == null )
26+ throw new ArgumentNullException ( "expression" ) ;
27+
28+ string expressionType = Helper . RemoveBrackets ( expression . Type ) ;
29+ return expressionType . EndsWith ( "]" ) && ( expressionType . EndsWith ( "[]" ) || expressionType . EndsWith ( "[,]" ) ||
30+ expressionType . EndsWith ( "[,,]" ) ||
31+ expressionType . EndsWith ( "[,,,]" ) ) ;
32+ }
33+
34+ public string GetDisplayName ( Expression expression )
35+ {
36+ if ( expression == null )
37+ throw new ArgumentNullException ( "expression" ) ;
38+
39+ return expression . Value ;
40+ }
41+
42+ public IEnumerable < ExpressionInfo > GetArrays ( string section , Expression expression , ParsersCollection parsers ,
43+ int sectionCode )
44+ {
45+ if ( expression . DataMembers . Count == 0 )
46+ yield break ;
47+
48+ foreach ( ITypeParser parser in parsers . Where ( P => P . IsExpressionTypeSupported ( expression ) ) )
49+ {
50+ yield return new ExpressionInfo ( expression . Name , section , parser . GetDisplayName ( expression ) , expression ,
51+ sectionCode ) ;
52+ break ;
53+ }
54+
55+ switch ( expression . Name )
56+ {
57+ case "this" :
58+ foreach ( Expression subExpression in expression . DataMembers )
59+ foreach ( ExpressionInfo item in GetArrays ( "this." , subExpression , parsers , - 1 ) )
60+ yield return item ;
61+ break ;
62+ case "Static members" :
63+ foreach ( Expression subExpression in expression . DataMembers )
64+ foreach ( ExpressionInfo item in GetArrays ( "(Static) " , subExpression , parsers , - 2 ) )
65+ yield return item ;
66+ break ;
67+ }
68+ }
69+
70+ public int GetMembersCount ( Expression expression )
71+ {
72+ if ( expression == null )
73+ throw new ArgumentNullException ( "expression" ) ;
74+
75+ return expression . DataMembers . Count ;
76+ }
77+
78+ public int [ ] GetDimensions ( Expression expression )
79+ {
80+ if ( expression == null )
81+ throw new ArgumentNullException ( "expression" ) ;
82+
83+ string dims = expression . Value ;
84+ dims = dims . Substring ( dims . IndexOf ( LeftBracket ) + 1 ) ;
85+ dims = dims . Substring ( 0 , dims . IndexOf ( RightBracket ) ) ;
86+
87+ int [ ] dimenstions = dims . Split ( ',' ) . Select ( X => ParseDimension ( X . Trim ( ) ) ) . ToArray ( ) ;
88+
89+ return dimenstions ;
90+ }
91+
92+ public int ParseDimension ( string dimensionString )
93+ {
94+ if ( dimensionString == null )
95+ throw new ArgumentNullException ( "dimensionString" ) ;
96+
97+ if ( dimensionString . StartsWith ( "0x" ) )
98+ return int . Parse ( dimensionString . Substring ( 2 ) , System . Globalization . NumberStyles . HexNumber ) ;
99+ else
100+ return int . Parse ( dimensionString ) ;
101+ }
102+
103+ public object [ ] GetValues ( Expression expression )
104+ {
105+ if ( expression == null )
106+ throw new ArgumentNullException ( "expression" ) ;
107+
108+ object [ ] values ;
109+ if ( expression . DataMembers . Item ( 1 ) . Type . IndexOf ( LeftBracket ) != - 1 )
110+ values = expression . DataMembers . Cast < Expression > ( ) . ToArray ( ) ;
111+ else
112+ values = expression . DataMembers . Cast < Expression > ( ) . Select ( E => E . Value ) . ToArray ( ) ;
113+
114+ return values ;
115+ }
116+
117+ #endregion
66118 }
67-
68- public int [ ] GetDimensions ( Expression expression )
69- {
70- if ( expression == null )
71- throw new ArgumentNullException ( "expression" ) ;
72-
73- string dims = expression . Value ;
74- dims = dims . Substring ( dims . IndexOf ( LeftBracket ) + 1 ) ;
75- dims = dims . Substring ( 0 , dims . IndexOf ( RightBracket ) ) ;
76-
77- int [ ] dimenstions = dims . Split ( ',' ) . Select ( X => ParseDimension ( X . Trim ( ) ) ) . ToArray ( ) ;
78-
79- return dimenstions ;
80- }
81-
82- public int ParseDimension ( string dimensionString )
83- {
84- if ( dimensionString == null )
85- throw new ArgumentNullException ( "dimensionString" ) ;
86-
87- if ( dimensionString . StartsWith ( "0x" ) )
88- return int . Parse ( dimensionString . Substring ( 2 ) , System . Globalization . NumberStyles . HexNumber ) ;
89- else
90- return int . Parse ( dimensionString ) ;
91- }
92-
93- public object [ ] GetValues ( Expression expression )
94- {
95- if ( expression == null )
96- throw new ArgumentNullException ( "expression" ) ;
97-
98- object [ ] values ;
99- if ( expression . DataMembers . Item ( 1 ) . Type . IndexOf ( LeftBracket ) != - 1 )
100- values = expression . DataMembers . Cast < Expression > ( ) . ToArray ( ) ;
101- else
102- values = expression . DataMembers . Cast < Expression > ( ) . Select ( E => E . Value ) . ToArray ( ) ;
103-
104- return values ;
105- }
106-
107- #endregion
108- }
109- }
119+ }
0 commit comments