git-svn-id: http://webrtc.googlecode.com/svn/trunk@8 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/tools/refactoring/fixnames.py b/tools/refactoring/fixnames.py
new file mode 100644
index 0000000..15381e3
--- /dev/null
+++ b/tools/refactoring/fixnames.py
@@ -0,0 +1,387 @@
+#!/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 + ']'