blob: 15381e38d421c146ad0e2555abac6bfd82565984 [file] [log] [blame]
niklase@google.com47bdc462011-05-30 11:42:35 +00001#!/usr/bin/env python
2
3import stringmanipulation
4import filemanagement
5import p4commands
6import sys
7
8name_space_to_ignore = 'GIPS::'
9#only allow one prefix to be removed since allowing multiple will complicate
10# things
11prefix_to_filter = 'gips'
12#words_to_filter = ['Module']
13# it might be dangerous to remove GIPS but keep it default
14words_to_filter = ['Module','GIPS']
15
16# This script finds all the words that should be replaced in an h-file. Once
17# all words that should be replaced are found it does a global search and
18# replace.
19
20extensions_to_edit = ['.cpp','.cc','.h']
21
22#line = ' ~hiGIPSCriticalSectionScoped()'
23#print line
24#position = stringmanipulation.getword(line,11)
25#old_word = line[position[0]:position[0]+position[1]]
26#result = stringmanipulation.removealloccurances(old_word,'gips')
27#new_word = result
28#print old_word
29#print position[0]
30#print position[0]+position[1]
31#print new_word
32#quit()
33
34# Ignore whole line if any item in this table is a substring of the line
35do_not_replace_line_table = []
36do_not_replace_line_table.append('namespace GIPS')
37
38# [old_string,new_string]
39# List of things to remove that are static:
40manual_replace_table = []
41#manual_replace_table.append(['using namespace GIPS;',''])
42#manual_replace_table.append(['CreateGipsEvent','CreateEvent'])
43#manual_replace_table.append(['CreateGIPSTrace','CreateTrace'])
44#manual_replace_table.append(['ReturnGIPSTrace','ReturnTrace'])
45#manual_replace_table.append(['CreateGIPSFile','CreateFile'])
46replace_table = manual_replace_table
47#replace_table.append(['GIPS::','webrtc::'])
48# List of things to not remove that are static, i.e. exceptions:
49# don't replace any of the GIPS_Words since that will affect all files
50# do that in a separate script!
51do_not_replace_table = []
52do_not_replace_table.append('GIPS_CipherTypes')
53do_not_replace_table.append('GIPS_AuthenticationTypes')
54do_not_replace_table.append('GIPS_SecurityLevels')
55do_not_replace_table.append('GIPS_encryption')
56do_not_replace_table.append('~GIPS_encryption')
57do_not_replace_table.append('GIPS_transport')
58do_not_replace_table.append('~GIPS_transport')
59do_not_replace_table.append('GIPSTraceCallback')
60do_not_replace_table.append('~GIPSTraceCallback')
61do_not_replace_table.append('GIPS_RTP_CSRC_SIZE')
62do_not_replace_table.append('GIPS_RTPDirections')
63do_not_replace_table.append('GIPS_RTP_INCOMING')
64do_not_replace_table.append('GIPS_RTP_OUTGOING')
65do_not_replace_table.append('GIPSFrameType')
66do_not_replace_table.append('GIPS_FRAME_EMPTY')
67do_not_replace_table.append('GIPS_AUDIO_FRAME_SPEECH')
68do_not_replace_table.append('GIPS_AUDIO_FRAME_CN')
69do_not_replace_table.append('GIPS_VIDEO_FRAME_KEY')
70do_not_replace_table.append('GIPS_VIDEO_FRAME_DELTA')
71do_not_replace_table.append('GIPS_VIDEO_FRAME_GOLDEN')
72do_not_replace_table.append('GIPS_VIDEO_FRAME_DELTA_KEY')
73do_not_replace_table.append('GIPS_PacketType')
74do_not_replace_table.append('GIPS_PACKET_TYPE_RTP')
75do_not_replace_table.append('GIPS_PACKET_TYPE_KEEP_ALIVE')
76do_not_replace_table.append('GIPS_AudioLayers')
77do_not_replace_table.append('GIPS_AUDIO_PLATFORM_DEFAULT')
78do_not_replace_table.append('GIPS_AUDIO_WINDOWS_WAVE')
79do_not_replace_table.append('GIPS_AUDIO_WINDOWS_CORE')
80do_not_replace_table.append('GIPS_AUDIO_LINUX_ALSA')
81do_not_replace_table.append('GIPS_AUDIO_LINUX_PULSE')
82do_not_replace_table.append('GIPS_AUDIO_FORMAT')
83do_not_replace_table.append('GIPS_PCM_16_16KHZ')
84do_not_replace_table.append('GIPS_PCM_16_8KHZ')
85do_not_replace_table.append('GIPS_G729')
86do_not_replace_table.append('GIPSAMRmode')
87do_not_replace_table.append('GIPS_RFC3267_BWEFFICIENT')
88do_not_replace_table.append('GIPS_RFC3267_OCTETALIGNED')
89do_not_replace_table.append('GIPS_RFC3267_FILESTORAGE')
90do_not_replace_table.append('GIPS_NCModes')
91do_not_replace_table.append('GIPS_NC_OFF')
92do_not_replace_table.append('GIPS_NC_MILD')
93do_not_replace_table.append('GIPS_NC_MODERATE')
94do_not_replace_table.append('GIPS_NC_AGGRESSIVE')
95do_not_replace_table.append('GIPS_NC_VERY_AGGRESSIVE')
96do_not_replace_table.append('GIPS_AGCModes')
97do_not_replace_table.append('GIPS_AGC_OFF')
98do_not_replace_table.append('GIPS_AGC_ANALOG')
99do_not_replace_table.append('GIPS_AGC_DIGITAL')
100do_not_replace_table.append('GIPS_AGC_STANDALONE_DIG')
101do_not_replace_table.append('GIPS_ECModes')
102do_not_replace_table.append('GIPS_EC_UNCHANGED')
103do_not_replace_table.append('GIPS_EC_DEFAULT')
104do_not_replace_table.append('GIPS_EC_CONFERENCE')
105do_not_replace_table.append('GIPS_EC_AEC')
106do_not_replace_table.append('GIPS_EC_AES')
107do_not_replace_table.append('GIPS_EC_AECM')
108do_not_replace_table.append('GIPS_EC_NEC_IAD')
109do_not_replace_table.append('GIPS_AESModes')
110do_not_replace_table.append('GIPS_AES_DEFAULT')
111do_not_replace_table.append('GIPS_AES_NORMAL')
112do_not_replace_table.append('GIPS_AES_HIGH')
113do_not_replace_table.append('GIPS_AES_ATTENUATE')
114do_not_replace_table.append('GIPS_AES_NORMAL_SOFT_TRANS')
115do_not_replace_table.append('GIPS_AES_HIGH_SOFT_TRANS')
116do_not_replace_table.append('GIPS_AES_ATTENUATE_SOFT_TRANS')
117do_not_replace_table.append('GIPS_AECMModes')
118do_not_replace_table.append('GIPS_AECM_QUIET_EARPIECE_OR_HEADSET')
119do_not_replace_table.append('GIPS_AECM_EARPIECE')
120do_not_replace_table.append('GIPS_AECM_LOUD_EARPIECE')
121do_not_replace_table.append('GIPS_AECM_SPEAKERPHONE')
122do_not_replace_table.append('GIPS_AECM_LOUD_SPEAKERPHONE')
123do_not_replace_table.append('AECM_LOUD_SPEAKERPHONE')
124do_not_replace_table.append('GIPS_VAD_CONVENTIONAL')
125do_not_replace_table.append('GIPS_VAD_AGGRESSIVE_LOW')
126do_not_replace_table.append('GIPS_VAD_AGGRESSIVE_MID')
127do_not_replace_table.append('GIPS_VAD_AGGRESSIVE_HIGH')
128do_not_replace_table.append('GIPS_NetEQModes')
129do_not_replace_table.append('GIPS_NETEQ_DEFAULT')
130do_not_replace_table.append('GIPS_NETEQ_STREAMING')
131do_not_replace_table.append('GIPS_NETEQ_FAX')
132do_not_replace_table.append('GIPS_NetEQBGNModes')
133do_not_replace_table.append('GIPS_BGN_ON')
134do_not_replace_table.append('GIPS_BGN_FADE')
135do_not_replace_table.append('GIPS_BGN_OFF')
136do_not_replace_table.append('GIPS_OnHoldModes')
137do_not_replace_table.append('GIPS_HOLD_SEND_AND_PLAY')
138do_not_replace_table.append('GIPS_HOLD_SEND_ONLY')
139do_not_replace_table.append('GIPS_HOLD_PLAY_ONLY')
140do_not_replace_table.append('GIPS_PayloadFrequencies')
141do_not_replace_table.append('GIPS_FREQ_8000_HZ')
142do_not_replace_table.append('GIPS_FREQ_16000_HZ')
143do_not_replace_table.append('GIPS_FREQ_32000_HZ')
144do_not_replace_table.append('GIPS_TelephoneEventDetectionMethods')
145do_not_replace_table.append('GIPS_IN_BAND')
146do_not_replace_table.append('GIPS_OUT_OF_BAND')
147do_not_replace_table.append('GIPS_IN_AND_OUT_OF_BAND')
148do_not_replace_table.append('GIPS_ProcessingTypes')
149do_not_replace_table.append('GIPS_PLAYBACK_PER_CHANNEL')
150do_not_replace_table.append('GIPS_PLAYBACK_ALL_CHANNELS_MIXED')
151do_not_replace_table.append('GIPS_RECORDING_PER_CHANNEL')
152do_not_replace_table.append('GIPS_RECORDING_ALL_CHANNELS_MIXED')
153do_not_replace_table.append('GIPS_StereoChannel')
154do_not_replace_table.append('GIPS_StereoLeft')
155do_not_replace_table.append('GIPS_StereoRight')
156do_not_replace_table.append('GIPS_StereoBoth')
157do_not_replace_table.append('GIPS_stat_val')
158do_not_replace_table.append('GIPS_P56_statistics')
159do_not_replace_table.append('GIPS_echo_statistics')
160do_not_replace_table.append('GIPS_NetworkStatistics')
161do_not_replace_table.append('GIPS_JitterStatistics')
162do_not_replace_table.append('GIPSVideoRawType')
163do_not_replace_table.append('GIPS_VIDEO_I420')
164do_not_replace_table.append('GIPS_VIDEO_YV12')
165do_not_replace_table.append('GIPS_VIDEO_YUY2')
166do_not_replace_table.append('GIPS_VIDEO_UYVY')
167do_not_replace_table.append('GIPS_VIDEO_IYUV')
168do_not_replace_table.append('GIPS_VIDEO_ARGB')
169do_not_replace_table.append('GIPS_VIDEO_RGB24')
170do_not_replace_table.append('GIPS_VIDEO_RGB565')
171do_not_replace_table.append('GIPS_VIDEO_ARGB4444')
172do_not_replace_table.append('GIPS_VIDEO_ARGB1555')
173do_not_replace_table.append('GIPS_VIDEO_MJPG')
174do_not_replace_table.append('GIPS_VIDEO_NV12')
175do_not_replace_table.append('GIPS_VIDEO_NV21')
176do_not_replace_table.append('GIPS_VIDEO_Unknown')
177do_not_replace_table.append('GIPSVideoLayouts')
178do_not_replace_table.append('GIPS_LAYOUT_NONE')
179do_not_replace_table.append('GIPS_LAYOUT_DEFAULT')
180do_not_replace_table.append('GIPS_LAYOUT_ADVANCED1')
181do_not_replace_table.append('GIPS_LAYOUT_ADVANCED2')
182do_not_replace_table.append('GIPS_LAYOUT_ADVANCED3')
183do_not_replace_table.append('GIPS_LAYOUT_ADVANCED4')
184do_not_replace_table.append('GIPS_LAYOUT_FULL')
185do_not_replace_table.append('KGIPSConfigParameterSize')
186do_not_replace_table.append('KGIPSPayloadNameSize')
187do_not_replace_table.append('GIPSVideoCodecH263')
188do_not_replace_table.append('GIPSVideoH264Packetization')
189do_not_replace_table.append('GIPS_H264_SingleMode')
190do_not_replace_table.append('GIPS_H264_NonInterleavedMode')
191do_not_replace_table.append('GIPSVideoCodecComplexity')
192do_not_replace_table.append('GIPSVideoCodec_Complexity_Normal')
193do_not_replace_table.append('GIPSVideoCodec_Comlexity_High')
194do_not_replace_table.append('GIPSVideoCodec_Comlexity_Higher')
195do_not_replace_table.append('GIPSVideoCodec_Comlexity_Max')
196do_not_replace_table.append('GIPSVideoCodecH264')
197do_not_replace_table.append('GIPSVideoH264Packetization')
198do_not_replace_table.append('GIPSVideoCodecComplexity')
199do_not_replace_table.append('GIPSVideoCodecProfile')
200do_not_replace_table.append('KGIPSConfigParameterSize')
201do_not_replace_table.append('KGIPSMaxSVCLayers')
202do_not_replace_table.append('GIPSVideoH264LayerTypes')
203do_not_replace_table.append('GIPS_H264SVC_Base')
204do_not_replace_table.append('GIPS_H264SVC_Extend_2X2')
205do_not_replace_table.append('GIPS_H264SVC_Extend_1X1')
206do_not_replace_table.append('GIPS_H264SVC_Extend_MGS')
207do_not_replace_table.append('GIPS_H264SVC_Extend_1_5')
208do_not_replace_table.append('GIPS_H264SVC_Extend_Custom')
209do_not_replace_table.append('GIPSVideoH264LayersProperties')
210do_not_replace_table.append('GIPSVideoH264LayerTypes')
211do_not_replace_table.append('GIPSVideoH264Layers')
212do_not_replace_table.append('GIPSVideoH264LayersProperties')
213do_not_replace_table.append('GIPSVideoCodecH264SVC')
214do_not_replace_table.append('GIPSVideoCodecComplexity')
215do_not_replace_table.append('GIPSVideoCodecProfile')
216do_not_replace_table.append('GIPSVideoH264Layers')
217do_not_replace_table.append('GIPSVideoCodecVP8')
218do_not_replace_table.append('GIPSVideoCodecComplexity')
219do_not_replace_table.append('GIPSVideoCodecMPEG')
220do_not_replace_table.append('GIPSVideoCodecGeneric')
221do_not_replace_table.append('GIPSVideoCodecType')
222do_not_replace_table.append('GIPSVideoCodec_H263')
223do_not_replace_table.append('GIPSVideoCodec_H264')
224do_not_replace_table.append('GIPSVideoCodec_H264SVC')
225do_not_replace_table.append('GIPSVideoCodec_VP8')
226do_not_replace_table.append('GIPSVideoCodec_MPEG4')
227do_not_replace_table.append('GIPSVideoCodec_I420')
228do_not_replace_table.append('GIPSVideoCodec_RED')
229do_not_replace_table.append('GIPSVideoCodec_ULPFEC')
230do_not_replace_table.append('GIPSVideoCodec_Unknown')
231do_not_replace_table.append('GIPSVideoCodecUnion')
232do_not_replace_table.append('GIPSVideoCodecH263')
233do_not_replace_table.append('GIPSVideoCodecH264')
234do_not_replace_table.append('GIPSVideoCodecH264SVC')
235do_not_replace_table.append('GIPSVideoCodecVP8')
236do_not_replace_table.append('GIPSVideoCodecMPEG4')
237do_not_replace_table.append('GIPSVideoCodecGeneric')
238do_not_replace_table.append('GIPSVideoCodec')
239do_not_replace_table.append('GIPSVideoCodecType')
240do_not_replace_table.append('GIPSVideoCodecUnion')
241do_not_replace_table.append('GIPSAudioFrame')
242do_not_replace_table.append('GIPS_CodecInst')
243do_not_replace_table.append('GIPS_FileFormats')
244do_not_replace_table.append('GIPSTickTime')
245do_not_replace_table.append('GIPS_Word64')
246do_not_replace_table.append('GIPS_UWord64')
247do_not_replace_table.append('GIPS_Word32')
248do_not_replace_table.append('GIPS_UWord32')
249do_not_replace_table.append('GIPS_Word16')
250do_not_replace_table.append('GIPS_UWord16')
251do_not_replace_table.append('GIPS_Word8')
252do_not_replace_table.append('GIPS_UWord8')
253
254if((len(sys.argv) != 2) and (len(sys.argv) != 3)):
255 print 'parameters are: parent directory [--commit]'
256 quit()
257
258if((len(sys.argv) == 3) and (sys.argv[2] != '--commit')):
259 print 'parameters are: parent directory [--commit]'
260 quit()
261
262commit = (len(sys.argv) == 3)
263
264directory = sys.argv[1];
265if(not filemanagement.pathexist(directory)):
266 print 'path ' + directory + ' does not exist'
267 quit()
268
269# APIs are all in h-files
270extension = '.h'
271
272# All h-files
273files_to_modify = filemanagement.listallfilesinfolder(directory,\
274 extension)
275
276def isinmanualremovetable( compare_word ):
277 for old_word, new_word in manual_replace_table:
278 if(old_word == compare_word):
279 return True
280 return False
281
282# Begin
283# This function looks at each line and decides which words should be replaced
284# that is this is the only part of the script that you will ever want to change!
285def findstringstoreplace(line):
286 original_line = line
287# Dont replace compiler directives
288 if(line[0] == '#'):
289 return []
290# Dont allow global removal of namespace gips since it is very intrusive
291 for sub_string_compare in do_not_replace_line_table:
292 index = stringmanipulation.issubstring(line,sub_string_compare)
293 if(index != -1):
294 return []
295
296 return_value = []
297
298 line = stringmanipulation.removeccomment(line)
299 line = stringmanipulation.whitespacestoonespace(line)
300 if(len(line) == 0):
301 return []
302 if(line[0] == '*'):
303 return []
304 index = stringmanipulation.issubstring(line,prefix_to_filter)
305 while index >= 0:
306 dont_store_hit = False
307 word_position = stringmanipulation.getword(line, index)
308 start_of_word = word_position[0]
309 size_of_word = word_position[1]
310 end_of_word = start_of_word + size_of_word
311 old_word = line[start_of_word:end_of_word]
312 if(isinmanualremovetable(old_word)):
313 dont_store_hit = True
314 if((end_of_word + 2 < len(line)) and\
315 name_space_to_ignore == line[start_of_word:end_of_word+2]):
316 dont_store_hit = True
317
318 result = stringmanipulation.removeprefix(old_word,prefix_to_filter)
319 new_word = result[1]
320 for word_to_filter in words_to_filter:
321 new_word = stringmanipulation.removealloccurances(new_word,word_to_filter)
322 result = stringmanipulation.removeprefix(new_word,'_')
323 new_word = result[1]
324 new_word = stringmanipulation.fixabbreviations(new_word)
325 new_word = stringmanipulation.removealloccurances(new_word,'_')
326 if(not dont_store_hit):
327 return_value.append([old_word,new_word])
328# remove the word we found from the string so we dont find it again
329 line = line[0:start_of_word] + line[end_of_word:len(line)]
330 index = stringmanipulation.issubstring(line,'GIPS')
331
332 return return_value
333# End
334
335# loop through all files
336for path, file_name in files_to_modify:
337# if(file_name != 'GIPSTickUtil.h'):
338# continue
339 full_file_name = path + file_name
340 file_pointer = open(full_file_name,'r')
341# print file_name
342#loop through all lines
343 for line in file_pointer:
344# print line
345 local_replace_string = findstringstoreplace(line)
346 #print local_replace_string
347 if(len(local_replace_string) != 0):
348 replace_table.extend(local_replace_string)
349
350
351# we have built our replace table now
352replace_table = stringmanipulation.removeduplicates( replace_table )
353replace_table = stringmanipulation.ordertablesizefirst( replace_table )
354replace_table = stringmanipulation.complement(replace_table,\
355 do_not_replace_table)
356
357def replaceoriginal( path,my_table ):
358 size_of_table = len(my_table)
359 for index in range(len(my_table)):
360 old_name = my_table[index][0]
361 new_name = my_table[index][1]
362 filemanagement.replacestringinfolder(path, old_name, new_name,\
363 ".h")
364 print (100*index) / (size_of_table*2)
365
366def replaceall( my_table, extension_list ):
367 size_of_table = len(my_table)
368 for index in range(len(my_table)):
369 old_name = my_table[index][0]
370 new_name = my_table[index][1]
371 new_name = new_name
372 for extension in extensions_to_edit:
373 filemanagement.replacestringinallsubfolders(old_name, new_name,
374 extension)
375 print 100*(size_of_table + index) / (size_of_table*2)
376
377
378if(commit):
379 print 'commiting'
380 replace_table = stringmanipulation.removenochange(replace_table)
381 p4commands.checkoutallfiles()
382 replaceoriginal(directory,replace_table)
383 replaceall(replace_table,extensions_to_edit)
384 p4commands.revertunchangedfiles()
385else:
386 for old_name, new_name in replace_table:
387 print 'Going to replace [' + old_name + '] with [' + new_name + ']'