From 4d0ab515cc4142b22247e26f1b57b5cd0a6b31d5 Mon Sep 17 00:00:00 2001 From: Mike Buland Date: Mon, 1 Dec 2014 07:53:29 -0700 Subject: Added "--sum" command line option. Reads in a list of numbers on standard in, one per line, and sums them. --- src/options.cpp | 19 +++++++++++++++++++ src/options.h | 1 + 2 files changed, 20 insertions(+) diff --git a/src/options.cpp b/src/options.cpp index d9d34fa..d88df3b 100644 --- a/src/options.cpp +++ b/src/options.cpp @@ -8,6 +8,7 @@ #include "lexer.h" #include "parser.h" +#include #include #include @@ -36,6 +37,8 @@ Options::Options( int argc, char *argv[] ) : "use all remaining parameters as the equation (you may wish to quote " "your equation to prevent special characters from being interpreted by " "your shell)."); + addOption( Bu::slot(this, &Options::sum), "sum", + "Read numbers from standard input and sum them, output the result."); addOption( Bu::slot(this, &Options::version), 'v', "version", "Show the version string ('" CLIC_VERSION_STR "')"); addHelpOption('h', "help", "This help"); @@ -198,6 +201,22 @@ int Options::execute( Bu::StringArray aArgs ) return aArgs.getSize(); } +int Options::sum( Bu::StringArray aArgs ) +{ + Number sum( iScale, iRadix ); + while( !Bu::sioRaw.isEos() ) + { + Bu::String s = Bu::sioRaw.readLine(); + if( s.isEmpty() ) + break; + Number n( s, iScale, iRadix ); + sum = sum + n; + } + Bu::println("%1").arg( sum ); + exit( 0 ); + return 0; +} + int Options::version( Bu::StringArray aArgs ) { Bu::println( CLIC_VERSION_STR ); diff --git a/src/options.h b/src/options.h index 9afa0ac..f3f59a6 100644 --- a/src/options.h +++ b/src/options.h @@ -18,6 +18,7 @@ private: int isPrime( Bu::StringArray aArgs ); int convert( Bu::StringArray aArgs ); int execute( Bu::StringArray aArgs ); + int sum( Bu::StringArray aArgs ); int version( Bu::StringArray aArgs ); int iScale; -- cgit v1.2.3