@@ -20,14 +20,15 @@ class CppParserError(Exception): pass
2020class CppParser :
2121 'Parses a header file and returns a list of declarations'
2222
23- def __init__ (self , includes = None , defines = None , cache_dir = None ):
23+ def __init__ (self , includes = None , defines = None , cache_dir = None , version = None ):
2424 'includes and defines ar the directives given to gcc'
2525 if includes is None :
2626 includes = []
2727 if defines is None :
2828 defines = []
2929 self .includes = includes
3030 self .defines = defines
31+ self .version = version
3132 #if cache_dir is None:
3233 # cache_dir = tempfile.mktemp()
3334 # self.delete_cache = True
@@ -168,6 +169,9 @@ def GetCache(self, header, interface, tail):
168169 if os .path .isfile (cache_file ):
169170 f = file (cache_file , 'rb' )
170171 try :
172+ version = load (f )
173+ if version != self .version :
174+ return None
171175 cache = load (f )
172176 if cache .has_key (key ):
173177 self .cache_files .append (cache_file )
@@ -195,6 +199,7 @@ def CreateCache(self, header, interface, tail, declarations):
195199 if os .path .isfile (cache_file ):
196200 f = file (cache_file , 'rb' )
197201 try :
202+ version = load (f )
198203 cache = load (f )
199204 finally :
200205 f .close ()
@@ -204,6 +209,7 @@ def CreateCache(self, header, interface, tail, declarations):
204209 self .cache_files .append (cache_file )
205210 f = file (cache_file , 'wb' )
206211 try :
212+ dump (self .version , f , 1 )
207213 dump (cache , f , 1 )
208214 finally :
209215 f .close ()
0 commit comments