@@ -3011,6 +3011,20 @@ class TranslationUnit(ClangObject):
3011
3011
# into the set of code completions returned from this translation unit.
3012
3012
PARSE_INCLUDE_BRIEF_COMMENTS_IN_CODE_COMPLETION = 128
3013
3013
3014
+ @staticmethod
3015
+ def process_unsaved_files (unsaved_files ) -> Array [_CXUnsavedFile ] | None :
3016
+ unsaved_array = None
3017
+ if len (unsaved_files ):
3018
+ unsaved_array = (_CXUnsavedFile * len (unsaved_files ))()
3019
+ for i , (name , contents ) in enumerate (unsaved_files ):
3020
+ if hasattr (contents , "read" ):
3021
+ contents = contents .read ()
3022
+ binary_contents = b (contents )
3023
+ unsaved_array [i ].name = b (os .fspath (name ))
3024
+ unsaved_array [i ].contents = binary_contents
3025
+ unsaved_array [i ].length = len (binary_contents )
3026
+ return unsaved_array
3027
+
3014
3028
@classmethod
3015
3029
def from_source (
3016
3030
cls , filename , args = None , unsaved_files = None , options = 0 , index = None
@@ -3067,16 +3081,7 @@ def from_source(
3067
3081
if len (args ) > 0 :
3068
3082
args_array = (c_char_p * len (args ))(* [b (x ) for x in args ])
3069
3083
3070
- unsaved_array = None
3071
- if len (unsaved_files ) > 0 :
3072
- unsaved_array = (_CXUnsavedFile * len (unsaved_files ))()
3073
- for i , (name , contents ) in enumerate (unsaved_files ):
3074
- if hasattr (contents , "read" ):
3075
- contents = contents .read ()
3076
- contents = b (contents )
3077
- unsaved_array [i ].name = b (os .fspath (name ))
3078
- unsaved_array [i ].contents = contents
3079
- unsaved_array [i ].length = len (contents )
3084
+ unsaved_array = cls .process_unsaved_files (unsaved_files )
3080
3085
3081
3086
ptr = conf .lib .clang_parseTranslationUnit (
3082
3087
index ,
@@ -3257,16 +3262,7 @@ def reparse(self, unsaved_files=None, options=0):
3257
3262
if unsaved_files is None :
3258
3263
unsaved_files = []
3259
3264
3260
- unsaved_files_array = 0
3261
- if len (unsaved_files ):
3262
- unsaved_files_array = (_CXUnsavedFile * len (unsaved_files ))()
3263
- for i , (name , contents ) in enumerate (unsaved_files ):
3264
- if hasattr (contents , "read" ):
3265
- contents = contents .read ()
3266
- contents = b (contents )
3267
- unsaved_files_array [i ].name = b (os .fspath (name ))
3268
- unsaved_files_array [i ].contents = contents
3269
- unsaved_files_array [i ].length = len (contents )
3265
+ unsaved_files_array = self .process_unsaved_files (unsaved_files )
3270
3266
ptr = conf .lib .clang_reparseTranslationUnit (
3271
3267
self , len (unsaved_files ), unsaved_files_array , options
3272
3268
)
@@ -3329,16 +3325,7 @@ def codeComplete(
3329
3325
if unsaved_files is None :
3330
3326
unsaved_files = []
3331
3327
3332
- unsaved_files_array = 0
3333
- if len (unsaved_files ):
3334
- unsaved_files_array = (_CXUnsavedFile * len (unsaved_files ))()
3335
- for i , (name , contents ) in enumerate (unsaved_files ):
3336
- if hasattr (contents , "read" ):
3337
- contents = contents .read ()
3338
- contents = b (contents )
3339
- unsaved_files_array [i ].name = b (os .fspath (name ))
3340
- unsaved_files_array [i ].contents = contents
3341
- unsaved_files_array [i ].length = len (contents )
3328
+ unsaved_files_array = self .process_unsaved_files (unsaved_files )
3342
3329
ptr = conf .lib .clang_codeCompleteAt (
3343
3330
self ,
3344
3331
os .fspath (path ),
0 commit comments