@@ -38,6 +38,7 @@ struct upb_FileDef {
3838 const upb_FileDef * * deps ;
3939 const int32_t * public_deps ;
4040 const int32_t * weak_deps ;
41+ const upb_StringView * option_deps ;
4142 const upb_MessageDef * top_lvl_msgs ;
4243 const upb_EnumDef * top_lvl_enums ;
4344 const upb_FieldDef * top_lvl_exts ;
@@ -48,6 +49,7 @@ struct upb_FileDef {
4849 int dep_count ;
4950 int public_dep_count ;
5051 int weak_dep_count ;
52+ int option_dep_count ;
5153 int top_lvl_msg_count ;
5254 int top_lvl_enum_count ;
5355 int top_lvl_ext_count ;
@@ -105,6 +107,10 @@ int upb_FileDef_WeakDependencyCount(const upb_FileDef* f) {
105107 return f -> weak_dep_count ;
106108}
107109
110+ int upb_FileDef_OptionDependencyCount (const upb_FileDef * f ) {
111+ return f -> option_dep_count ;
112+ }
113+
108114const int32_t * _upb_FileDef_PublicDependencyIndexes (const upb_FileDef * f ) {
109115 return f -> public_deps ;
110116}
@@ -142,10 +148,15 @@ const upb_FileDef* upb_FileDef_PublicDependency(const upb_FileDef* f, int i) {
142148}
143149
144150const upb_FileDef * upb_FileDef_WeakDependency (const upb_FileDef * f , int i ) {
145- UPB_ASSERT (0 <= i && i < f -> public_dep_count );
151+ UPB_ASSERT (0 <= i && i < f -> weak_dep_count );
146152 return f -> deps [f -> weak_deps [i ]];
147153}
148154
155+ upb_StringView upb_FileDef_OptionDependency (const upb_FileDef * f , int i ) {
156+ UPB_ASSERT (0 <= i && i < f -> option_dep_count );
157+ return f -> option_deps [i ];
158+ }
159+
149160const upb_MessageDef * upb_FileDef_TopLevelMessage (const upb_FileDef * f , int i ) {
150161 UPB_ASSERT (0 <= i && i < f -> top_lvl_msg_count );
151162 return _upb_MessageDef_At (f -> top_lvl_msgs , i );
@@ -406,6 +417,17 @@ void _upb_FileDef_Create(upb_DefBuilder* ctx,
406417 mutable_weak_deps [i ] = weak_deps [i ];
407418 }
408419
420+ const upb_StringView * option_deps =
421+ google_protobuf_FileDescriptorProto_option_dependency (file_proto , & n );
422+ file -> option_dep_count = n ;
423+ file -> option_deps = UPB_DEFBUILDER_ALLOCARRAY (ctx , upb_StringView , n );
424+ upb_StringView * mutable_option_deps = (upb_StringView * )file -> option_deps ;
425+ for (size_t i = 0 ; i < n ; i ++ ) {
426+ char * dup = _strviewdup (ctx , option_deps [i ]);
427+ mutable_option_deps [i ].data = dup ;
428+ mutable_option_deps [i ].size = option_deps [i ].size ;
429+ }
430+
409431 // Create enums.
410432 enums = google_protobuf_FileDescriptorProto_enum_type (file_proto , & n );
411433 file -> top_lvl_enum_count = n ;
0 commit comments