@@ -54,40 +54,21 @@ public KotlinClass AsClassMetadata ()
5454 if ( Kind != KotlinMetadataKind . Class )
5555 return null ;
5656
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 ) ;
8459 }
8560
8661 public KotlinFile AsFileMetadata ( )
8762 {
8863 if ( Kind != KotlinMetadataKind . File )
8964 return null ;
9065
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+ {
9172 var md = KotlinBitEncoding . DecodeBytes ( Data1 ) ;
9273
9374 using ( var ms = ToMemoryStream ( md ) ) {
@@ -111,8 +92,8 @@ public KotlinFile AsFileMetadata ()
11192 partial . MoveNext ( ) ;
11293
11394 // 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 ) ;
11697 }
11798 }
11899 }
0 commit comments