#!/usr/bin/env python import stringmanipulation import filemanagement import p4commands import sys name_space_to_ignore = 'GIPS::' #only allow one prefix to be removed since allowing multiple will complicate # things prefix_to_filter = 'gips' #words_to_filter = ['Module'] # it might be dangerous to remove GIPS but keep it default words_to_filter = ['Module','GIPS'] # This script finds all the words that should be replaced in an h-file. Once # all words that should be replaced are found it does a global search and # replace. extensions_to_edit = ['.cpp','.cc','.h'] #line = ' ~hiGIPSCriticalSectionScoped()' #print line #position = stringmanipulation.getword(line,11) #old_word = line[position[0]:position[0]+position[1]] #result = stringmanipulation.removealloccurances(old_word,'gips') #new_word = result #print old_word #print position[0] #print position[0]+position[1] #print new_word #quit() # Ignore whole line if any item in this table is a substring of the line do_not_replace_line_table = [] do_not_replace_line_table.append('namespace GIPS') # [old_string,new_string] # List of things to remove that are static: manual_replace_table = [] #manual_replace_table.append(['using namespace GIPS;','']) #manual_replace_table.append(['CreateGipsEvent','CreateEvent']) #manual_replace_table.append(['CreateGIPSTrace','CreateTrace']) #manual_replace_table.append(['ReturnGIPSTrace','ReturnTrace']) #manual_replace_table.append(['CreateGIPSFile','CreateFile']) replace_table = manual_replace_table #replace_table.append(['GIPS::','webrtc::']) # List of things to not remove that are static, i.e. exceptions: # don't replace any of the GIPS_Words since that will affect all files # do that in a separate script! do_not_replace_table = [] do_not_replace_table.append('GIPS_CipherTypes') do_not_replace_table.append('GIPS_AuthenticationTypes') do_not_replace_table.append('GIPS_SecurityLevels') do_not_replace_table.append('GIPS_encryption') do_not_replace_table.append('~GIPS_encryption') do_not_replace_table.append('GIPS_transport') do_not_replace_table.append('~GIPS_transport') do_not_replace_table.append('GIPSTraceCallback') do_not_replace_table.append('~GIPSTraceCallback') do_not_replace_table.append('GIPS_RTP_CSRC_SIZE') do_not_replace_table.append('GIPS_RTPDirections') do_not_replace_table.append('GIPS_RTP_INCOMING') do_not_replace_table.append('GIPS_RTP_OUTGOING') do_not_replace_table.append('GIPSFrameType') do_not_replace_table.append('GIPS_FRAME_EMPTY') do_not_replace_table.append('GIPS_AUDIO_FRAME_SPEECH') do_not_replace_table.append('GIPS_AUDIO_FRAME_CN') do_not_replace_table.append('GIPS_VIDEO_FRAME_KEY') do_not_replace_table.append('GIPS_VIDEO_FRAME_DELTA') do_not_replace_table.append('GIPS_VIDEO_FRAME_GOLDEN') do_not_replace_table.append('GIPS_VIDEO_FRAME_DELTA_KEY') do_not_replace_table.append('GIPS_PacketType') do_not_replace_table.append('GIPS_PACKET_TYPE_RTP') do_not_replace_table.append('GIPS_PACKET_TYPE_KEEP_ALIVE') do_not_replace_table.append('GIPS_AudioLayers') do_not_replace_table.append('GIPS_AUDIO_PLATFORM_DEFAULT') do_not_replace_table.append('GIPS_AUDIO_WINDOWS_WAVE') do_not_replace_table.append('GIPS_AUDIO_WINDOWS_CORE') do_not_replace_table.append('GIPS_AUDIO_LINUX_ALSA') do_not_replace_table.append('GIPS_AUDIO_LINUX_PULSE') do_not_replace_table.append('GIPS_AUDIO_FORMAT') do_not_replace_table.append('GIPS_PCM_16_16KHZ') do_not_replace_table.append('GIPS_PCM_16_8KHZ') do_not_replace_table.append('GIPS_G729') do_not_replace_table.append('GIPSAMRmode') do_not_replace_table.append('GIPS_RFC3267_BWEFFICIENT') do_not_replace_table.append('GIPS_RFC3267_OCTETALIGNED') do_not_replace_table.append('GIPS_RFC3267_FILESTORAGE') do_not_replace_table.append('GIPS_NCModes') do_not_replace_table.append('GIPS_NC_OFF') do_not_replace_table.append('GIPS_NC_MILD') do_not_replace_table.append('GIPS_NC_MODERATE') do_not_replace_table.append('GIPS_NC_AGGRESSIVE') do_not_replace_table.append('GIPS_NC_VERY_AGGRESSIVE') do_not_replace_table.append('GIPS_AGCModes') do_not_replace_table.append('GIPS_AGC_OFF') do_not_replace_table.append('GIPS_AGC_ANALOG') do_not_replace_table.append('GIPS_AGC_DIGITAL') do_not_replace_table.append('GIPS_AGC_STANDALONE_DIG') do_not_replace_table.append('GIPS_ECModes') do_not_replace_table.append('GIPS_EC_UNCHANGED') do_not_replace_table.append('GIPS_EC_DEFAULT') do_not_replace_table.append('GIPS_EC_CONFERENCE') do_not_replace_table.append('GIPS_EC_AEC') do_not_replace_table.append('GIPS_EC_AES') do_not_replace_table.append('GIPS_EC_AECM') do_not_replace_table.append('GIPS_EC_NEC_IAD') do_not_replace_table.append('GIPS_AESModes') do_not_replace_table.append('GIPS_AES_DEFAULT') do_not_replace_table.append('GIPS_AES_NORMAL') do_not_replace_table.append('GIPS_AES_HIGH') do_not_replace_table.append('GIPS_AES_ATTENUATE') do_not_replace_table.append('GIPS_AES_NORMAL_SOFT_TRANS') do_not_replace_table.append('GIPS_AES_HIGH_SOFT_TRANS') do_not_replace_table.append('GIPS_AES_ATTENUATE_SOFT_TRANS') do_not_replace_table.append('GIPS_AECMModes') do_not_replace_table.append('GIPS_AECM_QUIET_EARPIECE_OR_HEADSET') do_not_replace_table.append('GIPS_AECM_EARPIECE') do_not_replace_table.append('GIPS_AECM_LOUD_EARPIECE') do_not_replace_table.append('GIPS_AECM_SPEAKERPHONE') do_not_replace_table.append('GIPS_AECM_LOUD_SPEAKERPHONE') do_not_replace_table.append('AECM_LOUD_SPEAKERPHONE') do_not_replace_table.append('GIPS_VAD_CONVENTIONAL') do_not_replace_table.append('GIPS_VAD_AGGRESSIVE_LOW') do_not_replace_table.append('GIPS_VAD_AGGRESSIVE_MID') do_not_replace_table.append('GIPS_VAD_AGGRESSIVE_HIGH') do_not_replace_table.append('GIPS_NetEQModes') do_not_replace_table.append('GIPS_NETEQ_DEFAULT') do_not_replace_table.append('GIPS_NETEQ_STREAMING') do_not_replace_table.append('GIPS_NETEQ_FAX') do_not_replace_table.append('GIPS_NetEQBGNModes') do_not_replace_table.append('GIPS_BGN_ON') do_not_replace_table.append('GIPS_BGN_FADE') do_not_replace_table.append('GIPS_BGN_OFF') do_not_replace_table.append('GIPS_OnHoldModes') do_not_replace_table.append('GIPS_HOLD_SEND_AND_PLAY') do_not_replace_table.append('GIPS_HOLD_SEND_ONLY') do_not_replace_table.append('GIPS_HOLD_PLAY_ONLY') do_not_replace_table.append('GIPS_PayloadFrequencies') do_not_replace_table.append('GIPS_FREQ_8000_HZ') do_not_replace_table.append('GIPS_FREQ_16000_HZ') do_not_replace_table.append('GIPS_FREQ_32000_HZ') do_not_replace_table.append('GIPS_TelephoneEventDetectionMethods') do_not_replace_table.append('GIPS_IN_BAND') do_not_replace_table.append('GIPS_OUT_OF_BAND') do_not_replace_table.append('GIPS_IN_AND_OUT_OF_BAND') do_not_replace_table.append('GIPS_ProcessingTypes') do_not_replace_table.append('GIPS_PLAYBACK_PER_CHANNEL') do_not_replace_table.append('GIPS_PLAYBACK_ALL_CHANNELS_MIXED') do_not_replace_table.append('GIPS_RECORDING_PER_CHANNEL') do_not_replace_table.append('GIPS_RECORDING_ALL_CHANNELS_MIXED') do_not_replace_table.append('GIPS_StereoChannel') do_not_replace_table.append('GIPS_StereoLeft') do_not_replace_table.append('GIPS_StereoRight') do_not_replace_table.append('GIPS_StereoBoth') do_not_replace_table.append('GIPS_stat_val') do_not_replace_table.append('GIPS_P56_statistics') do_not_replace_table.append('GIPS_echo_statistics') do_not_replace_table.append('GIPS_NetworkStatistics') do_not_replace_table.append('GIPS_JitterStatistics') do_not_replace_table.append('GIPSVideoRawType') do_not_replace_table.append('GIPS_VIDEO_I420') do_not_replace_table.append('GIPS_VIDEO_YV12') do_not_replace_table.append('GIPS_VIDEO_YUY2') do_not_replace_table.append('GIPS_VIDEO_UYVY') do_not_replace_table.append('GIPS_VIDEO_IYUV') do_not_replace_table.append('GIPS_VIDEO_ARGB') do_not_replace_table.append('GIPS_VIDEO_RGB24') do_not_replace_table.append('GIPS_VIDEO_RGB565') do_not_replace_table.append('GIPS_VIDEO_ARGB4444') do_not_replace_table.append('GIPS_VIDEO_ARGB1555') do_not_replace_table.append('GIPS_VIDEO_MJPG') do_not_replace_table.append('GIPS_VIDEO_NV12') do_not_replace_table.append('GIPS_VIDEO_NV21') do_not_replace_table.append('GIPS_VIDEO_Unknown') do_not_replace_table.append('GIPSVideoLayouts') do_not_replace_table.append('GIPS_LAYOUT_NONE') do_not_replace_table.append('GIPS_LAYOUT_DEFAULT') do_not_replace_table.append('GIPS_LAYOUT_ADVANCED1') do_not_replace_table.append('GIPS_LAYOUT_ADVANCED2') do_not_replace_table.append('GIPS_LAYOUT_ADVANCED3') do_not_replace_table.append('GIPS_LAYOUT_ADVANCED4') do_not_replace_table.append('GIPS_LAYOUT_FULL') do_not_replace_table.append('KGIPSConfigParameterSize') do_not_replace_table.append('KGIPSPayloadNameSize') do_not_replace_table.append('GIPSVideoCodecH263') do_not_replace_table.append('GIPSVideoH264Packetization') do_not_replace_table.append('GIPS_H264_SingleMode') do_not_replace_table.append('GIPS_H264_NonInterleavedMode') do_not_replace_table.append('GIPSVideoCodecComplexity') do_not_replace_table.append('GIPSVideoCodec_Complexity_Normal') do_not_replace_table.append('GIPSVideoCodec_Comlexity_High') do_not_replace_table.append('GIPSVideoCodec_Comlexity_Higher') do_not_replace_table.append('GIPSVideoCodec_Comlexity_Max') do_not_replace_table.append('GIPSVideoCodecH264') do_not_replace_table.append('GIPSVideoH264Packetization') do_not_replace_table.append('GIPSVideoCodecComplexity') do_not_replace_table.append('GIPSVideoCodecProfile') do_not_replace_table.append('KGIPSConfigParameterSize') do_not_replace_table.append('KGIPSMaxSVCLayers') do_not_replace_table.append('GIPSVideoH264LayerTypes') do_not_replace_table.append('GIPS_H264SVC_Base') do_not_replace_table.append('GIPS_H264SVC_Extend_2X2') do_not_replace_table.append('GIPS_H264SVC_Extend_1X1') do_not_replace_table.append('GIPS_H264SVC_Extend_MGS') do_not_replace_table.append('GIPS_H264SVC_Extend_1_5') do_not_replace_table.append('GIPS_H264SVC_Extend_Custom') do_not_replace_table.append('GIPSVideoH264LayersProperties') do_not_replace_table.append('GIPSVideoH264LayerTypes') do_not_replace_table.append('GIPSVideoH264Layers') do_not_replace_table.append('GIPSVideoH264LayersProperties') do_not_replace_table.append('GIPSVideoCodecH264SVC') do_not_replace_table.append('GIPSVideoCodecComplexity') do_not_replace_table.append('GIPSVideoCodecProfile') do_not_replace_table.append('GIPSVideoH264Layers') do_not_replace_table.append('GIPSVideoCodecVP8') do_not_replace_table.append('GIPSVideoCodecComplexity') do_not_replace_table.append('GIPSVideoCodecMPEG') do_not_replace_table.append('GIPSVideoCodecGeneric') do_not_replace_table.append('GIPSVideoCodecType') do_not_replace_table.append('GIPSVideoCodec_H263') do_not_replace_table.append('GIPSVideoCodec_H264') do_not_replace_table.append('GIPSVideoCodec_H264SVC') do_not_replace_table.append('GIPSVideoCodec_VP8') do_not_replace_table.append('GIPSVideoCodec_MPEG4') do_not_replace_table.append('GIPSVideoCodec_I420') do_not_replace_table.append('GIPSVideoCodec_RED') do_not_replace_table.append('GIPSVideoCodec_ULPFEC') do_not_replace_table.append('GIPSVideoCodec_Unknown') do_not_replace_table.append('GIPSVideoCodecUnion') do_not_replace_table.append('GIPSVideoCodecH263') do_not_replace_table.append('GIPSVideoCodecH264') do_not_replace_table.append('GIPSVideoCodecH264SVC') do_not_replace_table.append('GIPSVideoCodecVP8') do_not_replace_table.append('GIPSVideoCodecMPEG4') do_not_replace_table.append('GIPSVideoCodecGeneric') do_not_replace_table.append('GIPSVideoCodec') do_not_replace_table.append('GIPSVideoCodecType') do_not_replace_table.append('GIPSVideoCodecUnion') do_not_replace_table.append('GIPSAudioFrame') do_not_replace_table.append('GIPS_CodecInst') do_not_replace_table.append('GIPS_FileFormats') do_not_replace_table.append('GIPSTickTime') do_not_replace_table.append('GIPS_Word64') do_not_replace_table.append('GIPS_UWord64') do_not_replace_table.append('GIPS_Word32') do_not_replace_table.append('GIPS_UWord32') do_not_replace_table.append('GIPS_Word16') do_not_replace_table.append('GIPS_UWord16') do_not_replace_table.append('GIPS_Word8') do_not_replace_table.append('GIPS_UWord8') if((len(sys.argv) != 2) and (len(sys.argv) != 3)): print 'parameters are: parent directory [--commit]' quit() if((len(sys.argv) == 3) and (sys.argv[2] != '--commit')): print 'parameters are: parent directory [--commit]' quit() commit = (len(sys.argv) == 3) directory = sys.argv[1]; if(not filemanagement.pathexist(directory)): print 'path ' + directory + ' does not exist' quit() # APIs are all in h-files extension = '.h' # All h-files files_to_modify = filemanagement.listallfilesinfolder(directory,\ extension) def isinmanualremovetable( compare_word ): for old_word, new_word in manual_replace_table: if(old_word == compare_word): return True return False # Begin # This function looks at each line and decides which words should be replaced # that is this is the only part of the script that you will ever want to change! def findstringstoreplace(line): original_line = line # Dont replace compiler directives if(line[0] == '#'): return [] # Dont allow global removal of namespace gips since it is very intrusive for sub_string_compare in do_not_replace_line_table: index = stringmanipulation.issubstring(line,sub_string_compare) if(index != -1): return [] return_value = [] line = stringmanipulation.removeccomment(line) line = stringmanipulation.whitespacestoonespace(line) if(len(line) == 0): return [] if(line[0] == '*'): return [] index = stringmanipulation.issubstring(line,prefix_to_filter) while index >= 0: dont_store_hit = False word_position = stringmanipulation.getword(line, index) start_of_word = word_position[0] size_of_word = word_position[1] end_of_word = start_of_word + size_of_word old_word = line[start_of_word:end_of_word] if(isinmanualremovetable(old_word)): dont_store_hit = True if((end_of_word + 2 < len(line)) and\ name_space_to_ignore == line[start_of_word:end_of_word+2]): dont_store_hit = True result = stringmanipulation.removeprefix(old_word,prefix_to_filter) new_word = result[1] for word_to_filter in words_to_filter: new_word = stringmanipulation.removealloccurances(new_word,word_to_filter) result = stringmanipulation.removeprefix(new_word,'_') new_word = result[1] new_word = stringmanipulation.fixabbreviations(new_word) new_word = stringmanipulation.removealloccurances(new_word,'_') if(not dont_store_hit): return_value.append([old_word,new_word]) # remove the word we found from the string so we dont find it again line = line[0:start_of_word] + line[end_of_word:len(line)] index = stringmanipulation.issubstring(line,'GIPS') return return_value # End # loop through all files for path, file_name in files_to_modify: # if(file_name != 'GIPSTickUtil.h'): # continue full_file_name = path + file_name file_pointer = open(full_file_name,'r') # print file_name #loop through all lines for line in file_pointer: # print line local_replace_string = findstringstoreplace(line) #print local_replace_string if(len(local_replace_string) != 0): replace_table.extend(local_replace_string) # we have built our replace table now replace_table = stringmanipulation.removeduplicates( replace_table ) replace_table = stringmanipulation.ordertablesizefirst( replace_table ) replace_table = stringmanipulation.complement(replace_table,\ do_not_replace_table) def replaceoriginal( path,my_table ): size_of_table = len(my_table) for index in range(len(my_table)): old_name = my_table[index][0] new_name = my_table[index][1] filemanagement.replacestringinfolder(path, old_name, new_name,\ ".h") print (100*index) / (size_of_table*2) def replaceall( my_table, extension_list ): size_of_table = len(my_table) for index in range(len(my_table)): old_name = my_table[index][0] new_name = my_table[index][1] new_name = new_name for extension in extensions_to_edit: filemanagement.replacestringinallsubfolders(old_name, new_name, extension) print 100*(size_of_table + index) / (size_of_table*2) if(commit): print 'commiting' replace_table = stringmanipulation.removenochange(replace_table) p4commands.checkoutallfiles() replaceoriginal(directory,replace_table) replaceall(replace_table,extensions_to_edit) p4commands.revertunchangedfiles() else: for old_name, new_name in replace_table: print 'Going to replace [' + old_name + '] with [' + new_name + ']'