summaryrefslogtreecommitdiff
path: root/src/options.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/options.cpp')
-rw-r--r--src/options.cpp33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/options.cpp b/src/options.cpp
index 59dd2b4..9ade56a 100644
--- a/src/options.cpp
+++ b/src/options.cpp
@@ -21,6 +21,10 @@ Options::Options( int argc, char *argv[] ) :
21 addOption( Bu::slot(this, &Options::isPrime), 'p', "is-prime", 21 addOption( Bu::slot(this, &Options::isPrime), 'p', "is-prime",
22 "Tests every parameter after to see if it is prime then prints out " 22 "Tests every parameter after to see if it is prime then prints out "
23 "the ones that are prime. Set radix first."); 23 "the ones that are prime. Set radix first.");
24 addOption( Bu::slot(this, &Options::convert), 'c', "convert",
25 "Convert the provided number to the given radix in the format "
26 "number:to-radix or from-radix:number:to-radix. The radix should "
27 "be provided in base-10");
24 addHelpOption('h', "help", "This help"); 28 addHelpOption('h', "help", "This help");
25 29
26 parse( argc, argv ); 30 parse( argc, argv );
@@ -118,3 +122,32 @@ int Options::isPrime( Bu::StringArray aArgs )
118 return aArgs.getSize(); 122 return aArgs.getSize();
119} 123}
120 124
125int Options::convert( Bu::StringArray aArgs )
126{
127 for( Bu::StringArray::iterator i = aArgs.begin()+1; i; i++ )
128 {
129 Bu::StringList lBits = (*i).split(':');
130 if( lBits.getSize() < 2 || lBits.getSize() > 3 )
131 throw Bu::ExceptionBase("Invalid format");
132
133 int iFromRadix = iRadix;
134 int iToRadix;
135 Number n;
136 if( lBits.getSize() == 2 )
137 {
138 iToRadix = strtol( lBits.last().getStr(), 0, 10 );
139 n = Number( lBits.first(), 0, iFromRadix );
140 }
141 else if( lBits.getSize() == 3 )
142 {
143 iFromRadix = strtol( lBits.first().getStr(), 0, 10 );
144 iToRadix = strtol( lBits.last().getStr(), 0, 10 );
145 n = Number( *(lBits.begin()+1), 0, iFromRadix );
146 }
147 Bu::println("%1").arg( n.toRadix( iToRadix ).toString() );
148 }
149
150 exit( 0 );
151 return 0;
152}
153