@@ -96,6 +96,18 @@ pub trait RowReader<'a> {
9696 self . type_ref_name ( row)
9797 }
9898
99+ fn attributes < R : AsRow + Into < HasAttribute > > ( & self , row : R ) -> RowIterator < Attribute > {
100+ self . row_equal_range ( row, 0 , row. into ( ) . encode ( ) )
101+ }
102+
103+ fn find_attribute < R : AsRow + Into < HasAttribute > > ( & self , row : R , name : & str ) -> Option < Attribute > {
104+ self . attributes ( row) . find ( |attribute| self . attribute_name ( * attribute) == name)
105+ }
106+
107+ fn has_attribute < R : AsRow + Into < HasAttribute > > ( & self , row : R , name : & str ) -> bool {
108+ self . find_attribute ( row, name) . is_some ( )
109+ }
110+
99111 //
100112 // Other
101113 //
@@ -159,10 +171,6 @@ pub trait RowReader<'a> {
159171 self . row_equal_range ( row, 1 , HasConstant :: Field ( row) . encode ( ) ) . next ( )
160172 }
161173
162- fn field_attributes ( & self , row : Field ) -> RowIterator < Attribute > {
163- self . row_equal_range ( row, 0 , HasAttribute :: Field ( row) . encode ( ) )
164- }
165-
166174 //
167175 // GenericParam
168176 //
@@ -187,14 +195,6 @@ pub trait RowReader<'a> {
187195 self . row_str ( row, 2 )
188196 }
189197
190- //
191- // InterfaceImpl
192- //
193-
194- fn interface_impl_attributes ( & self , row : InterfaceImpl ) -> RowIterator < Attribute > {
195- self . row_equal_range ( row, 0 , HasAttribute :: InterfaceImpl ( row) . encode ( ) )
196- }
197-
198198 //
199199 // MemberRef
200200 //
@@ -227,10 +227,6 @@ pub trait RowReader<'a> {
227227 self . row_list ( row, 5 )
228228 }
229229
230- fn method_def_attributes ( & self , row : MethodDef ) -> RowIterator < Attribute > {
231- self . row_equal_range ( row, 0 , HasAttribute :: MethodDef ( row) . encode ( ) )
232- }
233-
234230 fn method_def_impl_map ( & self , row : MethodDef ) -> Option < ImplMap > {
235231 self . row_equal_range ( row, 1 , MemberForwarded :: MethodDef ( row) . encode ( ) ) . next ( )
236232 }
@@ -280,10 +276,6 @@ pub trait RowReader<'a> {
280276 self . row_str ( row, 2 )
281277 }
282278
283- fn param_attributes ( & self , row : Param ) -> RowIterator < Attribute > {
284- self . row_equal_range ( row, 0 , HasAttribute :: Param ( row) . encode ( ) )
285- }
286-
287279 //
288280 // TypeDef
289281 //
@@ -315,10 +307,6 @@ pub trait RowReader<'a> {
315307 self . row_list ( row, 4 )
316308 }
317309
318- fn type_def_attributes ( & self , row : TypeDef ) -> RowIterator < Attribute > {
319- self . row_equal_range ( row, 0 , HasAttribute :: TypeDef ( row) . encode ( ) )
320- }
321-
322310 fn type_def_generics ( & self , row : TypeDef ) -> Vec < Type > {
323311 self . row_equal_range ( row, 2 , TypeOrMethodDef :: TypeDef ( row) . encode ( ) ) . map ( Type :: GenericParam ) . collect ( )
324312 }
@@ -335,10 +323,6 @@ pub trait RowReader<'a> {
335323 self . row_equal_range ( row, 2 , row. 0 . row + 1 ) . next ( )
336324 }
337325
338- fn type_def_is_scoped ( & self , row : TypeDef ) -> bool {
339- self . type_def_flags ( row) . contains ( TypeAttributes :: WindowsRuntime ) || self . type_def_attributes ( row) . any ( |attribute| self . attribute_name ( attribute) == "ScopedEnumAttribute" )
340- }
341-
342326 //
343327 // TypeRef
344328 //
0 commit comments