@@ -54,40 +54,21 @@ public KotlinClass AsClassMetadata ()
54
54
if ( Kind != KotlinMetadataKind . Class )
55
55
return null ;
56
56
57
- var md = KotlinBitEncoding . DecodeBytes ( Data1 ) ;
58
-
59
- using ( var ms = ToMemoryStream ( md ) ) {
60
-
61
- // The first element is the length of the string table
62
- var first = ms . ReadByte ( ) ;
63
-
64
- if ( first == - 1 )
65
- return null ;
66
-
67
- ms . Position = 0 ;
68
-
69
- var size = KotlinBitEncoding . ReadRawVarint32 ( ms ) ;
70
-
71
- using ( var partial = new PartialStream ( ms , ms . Position , size ) ) {
72
-
73
- // Read the string table from the stream
74
- var string_table = Serializer . Deserialize < org . jetbrains . kotlin . metadata . jvm . StringTableTypes > ( partial ) ;
75
- var resolver = new JvmNameResolver ( string_table , Data2 . ToList ( ) ) ;
76
-
77
- partial . MoveNext ( ) ;
78
-
79
- // Read the metadata structure from the stream
80
- var metadata = Serializer . Deserialize < org . jetbrains . kotlin . metadata . jvm . Class > ( partial ) ;
81
- return KotlinClass . FromProtobuf ( metadata , resolver ) ;
82
- }
83
- }
57
+ var data = ParseStream < org . jetbrains . kotlin . metadata . jvm . Class > ( ) ;
58
+ return KotlinClass . FromProtobuf ( data . Item1 , data . Item2 ) ;
84
59
}
85
60
86
61
public KotlinFile AsFileMetadata ( )
87
62
{
88
63
if ( Kind != KotlinMetadataKind . File )
89
64
return null ;
90
65
66
+ var data = ParseStream < org . jetbrains . kotlin . metadata . jvm . Package > ( ) ;
67
+ return KotlinFile . FromProtobuf ( data . Item1 , data . Item2 ) ;
68
+ }
69
+
70
+ Tuple < T , JvmNameResolver > ParseStream < T > ( )
71
+ {
91
72
var md = KotlinBitEncoding . DecodeBytes ( Data1 ) ;
92
73
93
74
using ( var ms = ToMemoryStream ( md ) ) {
@@ -111,8 +92,8 @@ public KotlinFile AsFileMetadata ()
111
92
partial . MoveNext ( ) ;
112
93
113
94
// Read the metadata structure from the stream
114
- var metadata = Serializer . Deserialize < org . jetbrains . kotlin . metadata . jvm . Package > ( partial ) ;
115
- return KotlinFile . FromProtobuf ( metadata , resolver ) ;
95
+ var metadata = Serializer . Deserialize < T > ( partial ) ;
96
+ return Tuple . Create ( metadata , resolver ) ;
116
97
}
117
98
}
118
99
}
0 commit comments