Skip to content

Instantly share code, notes, and snippets.

@sebbu2
Created June 24, 2011 18:04

Revisions

  1. sebbu2 revised this gist Jun 27, 2011. 1 changed file with 91 additions and 10 deletions.
    101 changes: 91 additions & 10 deletions g++_stl_cleaner.pl
    Original file line number Diff line number Diff line change
    @@ -15,7 +15,8 @@
    # s#([^:]+): #$cyan$1$nc: #g;
    my $safechar='a-zA-z0-9_-';
    for ($count = 0; $count < 10; $count++) {
    #print("iter n°", $count, "=", $_, "\n");
    #commonly used

    #string
    s/std::basic_string<char, std::char_traits<char>, std::allocator<char> >\s*/std::string/g;
    #set
    @@ -48,6 +49,9 @@
    #priority_queue #without typename
    s/std::priority_queue<(.+?), std::deque<\1>, std::less<std::deque<\1>::value_type >/std::priority_queue<$red$1$nc>/g;
    s/std::priority_queue<(.+?), std::deque<\1 >, std::less<std::deque<\1 >::value_type >/std::priority_queue<$1 >/g;
    #pair
    s/std::pair<(.+?), (.+?) >/std::pair<$red$1$nc, $red$2$nc >/g;
    s/std::pair<(.+?), (.+?)>/std::pair<$red$1$nc, $red$2$nc>/g;
    #map
    s/std::map<(.+?), (.+?), std::less<\1>, std::allocator<std::pair<const \1, \2> > >/std::map<$red$1$nc, $red$2$nc>/g;
    s/std::map<(.+?), (.+?), std::less<\1 >, std::allocator<std::pair<const \1, \2 > > >/std::map<$1, $2 >/g;
    @@ -74,17 +78,94 @@
    s/std::unordored_multimap<(.+?), (.+?), std::hash<\1 >, std::equal_to<\1 >, std::allocator<std::pair<\1, \2 > > >/std::unordored_multimap<$1, $2 >/g;
    #array
    s/std::array<(.+?), ([0-9]+)>/std::array<$red$1$nc, $red$2$nc>/g;
    #nothing needed for array (contains only class & size)
    #valarray
    s/std::array<(.+?)>/std::array<$red$1$nc>/g;
    #bitset
    s/std::bitset<([0-9]+)>/std::bitset<$red$1$nc>/g;
    #complex
    s/std::complex<(.+)>/std::complex<$red$1$nc>/g;

    #less used

    #numeric_limits
    s/std::numeric_limits<(.+?)>/std::numeric_limits<$red$1$nc>/g;
    #iterator
    s/std::iterator<(.+?), (.+?), ptrdiff_t, \2\*, \2\&>/std::iterator<$red$1$nc, $red$2$nc>/g;
    #istream_iterator
    s/std::istream_iterator<(.+?), (.+?), std::char_traits<\2>, ptrdiff_t>/std::istream_iterator<$red$1$nc, $red$2$nc>/g;
    s/std::istream_iterator<(.+?), char>/std::istream_iterator<$red$1$nc>/g;
    #ostream_iterator
    s/std::ostream_iterator<(.+?), (.+?), std::char_traits<\2>, ptrdiff_t>/std::ostream_iterator<$red$1$nc, $red$2$nc>/g;
    s/std::ostream_iterator<(.+?), char>/std::ostream_iterator<$red$1$nc>/g;
    #istreambuf_iterator
    s/std::istreambuf_iterator<(.+?), std::char_traits<\1> >/std::istreambuf_iterator<$red$1$nc>/g;
    s/std::ostreambuf_iterator<(.+?), std::char_traits<\1> >/std::ostreambuf_iterator<$red$1$nc>/g;

    #even less used

    # basic_ios
    s/std::basic_ios<(.+?), std::char_traits<\1> >/std::basic_ios<$red$1$nc>/g;
    s/std::basic_ios<char>/std::ios/g;
    s/std::basic_ios<wchar_t>/std::wios/g;
    # basic_streambuf
    s/std::basic_streambuf<(.+?), std::char_traits<\1>, std::allocator<\1> >/std::basic_streambuf<$red$1$nc>/g;
    s/std::basic_streambuf<char>/std::streambuf/g;
    s/std::basic_streambuf<wchar_t>/std::wstreambuf/g;
    #basic_istream
    s/std::basic_istream<(.+?), std::char_traits<\1> >/std::basic_istream<$red$1$nc>/g;
    s/std::basic_istream<char>/std::istream/g;
    s/std::basic_istream<wchar_t>/std::wistream/g;
    #basic_ostream
    s/std::basic_ostream<(.+?), std::char_traits<\1> >/std::basic_ostream<$red$1$nc>/g;
    s/std::basic_ostream<char>/std::ostream/g;
    s/std::basic_ostream<wchar_t>/std::wostream/g;
    #basic_iostream
    s/std::basic_iostream<(.+?), std::char_traits<\1> >/std::basic_iostream<$red$1$nc>/g;
    s/std::basic_iostream<char>/std::iostream/g;
    s/std::basic_iostream<wchar_t>/std::wiostream/g;
    # basic_filebuf
    s/std::basic_filebuf<(.+?), std::char_traits<\1>, std::allocator<\1> >/std::basic_filebuf<$red$1$nc>/g;
    s/std::basic_filebuf<char>/std::filebuf/g;
    s/std::basic_filebuf<wchar_t>/std::wfilebuf/g;
    #basic_ifstream
    s/std::basic_ifstream<(.+?), std::char_traits<\1> >/std::basic_ifstream<$red$1$nc>/g;
    s/std::basic_ifstream<char>/std::ifstream/g;
    s/std::basic_ifstream<wchar_t>/std::wifstream/g;
    #basic_ofstream
    s/std::basic_ofstream<(.+?), std::char_traits<\1> >/std::basic_ofstream<$red$1$nc>/g;
    s/std::basic_ofstream<char>/std::ofstream/g;
    s/std::basic_ofstream<wchar_t>/std::wofstream/g;
    #basic_iofstream
    s/std::basic_iofstream<(.+?), std::char_traits<\1> >/std::basic_iofstream<$red$1$nc>/g;
    s/std::basic_iofstream<char>/std::iofstream/g;
    s/std::basic_iofstream<wchar_t>/std::wiofstream/g;
    # basic_stringbuf
    s/std::basic_stringbuf<(.+?), std::char_traits<\1>, std::allocator<\1> >/std::basic_stringbuf<$red$1$nc>/g;
    s/std::basic_stringbuf<char>/std::stringbuf/g;
    s/std::basic_stringbuf<wchar_t>/std::wstringbuf/g;
    #basic_istringstream
    s/std::basic_istringstream<(.+?), std::char_traits<\1>, std::allocator<\1> >/std::basic_istringstream<$red$1$nc>/g;
    s/std::basic_istringstream<(.+?), std::char_traits<\1> >/std::basic_istringstream<$red$1$nc>/g;
    s/std::basic_istringstream<char>/std::istringstream/g;
    s/std::basic_istringstream<wchar_t>/std::wistringstream/g;
    #basic_ostringstream
    s/std::basic_ostringstream<(.+?), std::char_traits<\1>, std::allocator<\1> >/std::basic_ostringstream<$red$1$nc>/g;
    s/std::basic_ostringstream<(.+?), std::char_traits<\1> >/std::basic_ostringstream<$red$1$nc>/g;
    s/std::basic_ostringstream<char>/std::ostringstream/g;
    s/std::basic_ostringstream<wchar_t>/std::wostringstream/g;
    #basic_stringstream
    s/std::basic_stringstream<(.+?), std::char_traits<\1>, std::allocator<\1> >/std::basic_stringstream<$red$1$nc>/g;
    s/std::basic_stringstream<(.+?), std::char_traits<\1> >/std::basic_stringstream<$red$1$nc>/g;
    s/std::basic_stringstream<char>/std::stringstream/g;
    s/std::basic_stringstream<wchar_t>/std::wstringstream/g;

    #colorize native type
    s/([^$safechar])unsigned(?=[^$safechar])/$1${red}unsigned$nc/g;
    s/([^$safechar])long(?=[^$safechar])/$1${red}long$nc/g;
    s/([^$safechar])int(?=[^$safechar])/$1${red}int$nc/g;
    s/([^$safechar])short(?=[^$safechar])/$1${red}short$nc/g;
    s/([^$safechar])char(?=[^$safechar])/$1${red}char$nc/g;
    s/([^$safechar])double(?=[^$safechar])/$1${red}double$nc/g;
    s/([^$safechar])float(?=[^$safechar])/$1${red}float$nc/g;
    s/([^$safechar])void(?=[^$safechar])/$1${red}void$nc/g;
    s/([^$safechar])((?:(?:(?:un)?signed )?(?:(?:long )?long(?: int)?|int|short|char|wchar_t|char16_t|char32_t)|(?:long )?double|float|void)(?:[\s\*]*\*)?)(?=[^$safechar])/$1${green}$2$nc/g;
    #color fixed width integer type
    s/([^$safechar])(u?int(?:(?:|_fast|_least)(?:8|16|32|64)|_max|_ptr)_t)(?=[^$safechar])/$1${green}$2$nc/g;
    #colorize type modifier
    s/([^$safechar])(const|volatile|mutable)(?=[^$safechar])/$1${green}$2$nc/g;
    s/([^$safechar])(auto|register|static|extern|thread_local)(?=[^$safechar])/$1${green}$2$nc/g;
    }
    print;
    }
  2. @invalid-email-address Anonymous created this gist Jun 24, 2011.
    90 changes: 90 additions & 0 deletions g++_stl_cleaner.pl
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,90 @@
    #!/usr/bin/perl -w

    use strict;
    use warnings;

    while (<>)
    {
    $\="\n";
    s/^\s+//;
    s/\s+$//;
    my $count=0;
    my $black="\e[1;30m",my $red="\e[1;31m",my $green="\e[1;32m",my $yellow="\e[1;33m",my $blue="\e[1;34m",my $magenta="\e[1;35m",my $cyan="\e[1;36m",my $white="\e[1;37m";
    my $nc="\e[0m";
    s#([a-zA-Z]:|)([^:]+):([0-9]+):([0-9]+):#$cyan$1$2$nc:$magenta$3$nc:$yellow$4$nc:#g;
    # s#([^:]+): #$cyan$1$nc: #g;
    my $safechar='a-zA-z0-9_-';
    for ($count = 0; $count < 10; $count++) {
    #print("iter n°", $count, "=", $_, "\n");
    #string
    s/std::basic_string<char, std::char_traits<char>, std::allocator<char> >\s*/std::string/g;
    #set
    s/std::set<(.+?), std::less<\1>, std::allocator<\1> >/std::set<$red$1$nc>/g;
    s/std::set<(.+?), std::less<\1 >, std::allocator<\1 > >/std::set<$1 >/g;
    #multiset
    s/std::multiset<(.+?), std::less<\1>, std::allocator<\1> >/std::multiset<$red$1$nc>/g;
    s/std::multiset<(.+?), std::less<\1 >, std::allocator<\1 > >/std::multiset<$1 >/g;
    #vector
    s/std::vector<(.+?), std::allocator<\1> >/std::vector<$red$1$nc>/g;
    s/std::vector<(.+?), std::allocator<\1 > >/std::vector<$1 >/g;
    #list
    s/std::list<(.+?), std::allocator<\1> >/std::list<$red$1$nc>/g;
    s/std::list<(.+?), std::allocator<\1 > >/std::list<$1 >/g;
    #forward_list
    s/std::forward_list<(.+?), std::allocator<\1> >/std::forward_list<$red$1$nc>/g;
    s/std::forward_list<(.+?), std::allocator<\1 > >/std::forward_list<$1 >/g;
    #deque
    s/std::deque<(.+?), std::allocator<\1> >/std::deque<$red$1$nc>/g;
    s/std::deque<(.+?), std::allocator<\1 > >/std::deque<$1 >/g;
    #stack
    s/std::stack<(.+?), std::deque<\1> >/std::stack<$red$1$nc>/g;
    s/std::stack<(.+?), std::deque<\1 > >/std::stack<$1 >/g;
    #queue
    s/std::queue<(.+?), std::deque<\1> >/std::queue<$red$1$nc>/g;
    s/std::queue<(.+?), std::deque<\1 > >/std::queue<$1 >/g;
    #priority_queue
    s/std::priority_queue<(.+?), std::deque<\1>, std::less<typename std::deque<\1>::value_type >/std::priority_queue<$red$1$nc>/g;
    s/std::priority_queue<(.+?), std::deque<\1 >, std::less<typename std::deque<\1 >::value_type >/std::priority_queue<$1 >/g;
    #priority_queue #without typename
    s/std::priority_queue<(.+?), std::deque<\1>, std::less<std::deque<\1>::value_type >/std::priority_queue<$red$1$nc>/g;
    s/std::priority_queue<(.+?), std::deque<\1 >, std::less<std::deque<\1 >::value_type >/std::priority_queue<$1 >/g;
    #map
    s/std::map<(.+?), (.+?), std::less<\1>, std::allocator<std::pair<const \1, \2> > >/std::map<$red$1$nc, $red$2$nc>/g;
    s/std::map<(.+?), (.+?), std::less<\1 >, std::allocator<std::pair<const \1, \2 > > >/std::map<$1, $2 >/g;
    #map #without const
    s/std::map<(.+?), (.+?), std::less<\1>, std::allocator<std::pair<\1, \2> > >/std::map<$red$1$nc, $red$2$nc>/g;
    s/std::map<(.+?), (.+?), std::less<\1 >, std::allocator<std::pair<\1, \2 > > >/std::map<$1, $2 >/g;
    #unordored_set
    s/std::unordored_set<(.+?), std::hash<\1>, std::equal_to<\1>, std::allocator<\1> >/std::unordored_set<$red$1$nc>/g;
    s/std::unordored_set<(.+?), std::hash<\1 >, std::equal_to<\1 >, std::allocator<\1 > >/std::unordored_set<$1 >/g;
    #unordored_multiset #probably error (second type ?)
    s/std::unordored_multiset<(.+?), (.+?), std::hash<\1>, std::equal_to<\1>, std::allocator<\1> >/std::unordored_multiset<$red$1$nc, $red$2$nc>/g;
    s/std::unordored_multiset<(.+?), (.+?), std::hash<\1 >, std::equal_to<\1 >, std::allocator<\1 > >/std::unordored_multiset<$1, $2 >/g;
    #unordored_map
    s/std::unordored_map<(.+?), (.+?), std::hash<\1>, std::equal_to<\1>, std::allocator<std::pair<const \1, \2> > >/std::unordored_map<$red$1$nc, $red$2$nc>/g;
    s/std::unordored_map<(.+?), (.+?), std::hash<\1 >, std::equal_to<\1 >, std::allocator<std::pair<const \1, \2 > > >/std::unordored_map<$1, $2 >/g;
    #unordored_map #without const
    s/std::unordored_map<(.+?), (.+?), std::hash<\1>, std::equal_to<\1>, std::allocator<std::pair<\1, \2> > >/std::unordored_map<$red$1$nc, $red$2$nc>/g;
    s/std::unordored_map<(.+?), (.+?), std::hash<\1 >, std::equal_to<\1 >, std::allocator<std::pair<\1, \2 > > >/std::unordored_map<$1, $2 >/g;
    #unordored_multimap
    s/std::unordored_multimap<(.+?), (.+?), std::hash<\1>, std::equal_to<\1>, std::allocator<std::pair<const \1, \2> > >/std::unordored_multimap<$red$1$nc, $red$2$nc>/g;
    s/std::unordored_multimap<(.+?), (.+?), std::hash<\1 >, std::equal_to<\1 >, std::allocator<std::pair<const \1, \2 > > >/std::unordored_multimap<$1, $2 >/g;
    #unordored_multimap #without const
    s/std::unordored_multimap<(.+?), (.+?), std::hash<\1>, std::equal_to<\1>, std::allocator<std::pair<\1, \2> > >/std::unordored_multimap<$red$1$nc, $red$2$nc>/g;
    s/std::unordored_multimap<(.+?), (.+?), std::hash<\1 >, std::equal_to<\1 >, std::allocator<std::pair<\1, \2 > > >/std::unordored_multimap<$1, $2 >/g;
    #array
    s/std::array<(.+?), ([0-9]+)>/std::array<$red$1$nc, $red$2$nc>/g;
    #nothing needed for array (contains only class & size)

    #colorize native type
    s/([^$safechar])unsigned(?=[^$safechar])/$1${red}unsigned$nc/g;
    s/([^$safechar])long(?=[^$safechar])/$1${red}long$nc/g;
    s/([^$safechar])int(?=[^$safechar])/$1${red}int$nc/g;
    s/([^$safechar])short(?=[^$safechar])/$1${red}short$nc/g;
    s/([^$safechar])char(?=[^$safechar])/$1${red}char$nc/g;
    s/([^$safechar])double(?=[^$safechar])/$1${red}double$nc/g;
    s/([^$safechar])float(?=[^$safechar])/$1${red}float$nc/g;
    s/([^$safechar])void(?=[^$safechar])/$1${red}void$nc/g;
    }
    print;
    }