From 1f0d52aaddc9d39986724733db265d300bd8f6c8 Mon Sep 17 00:00:00 2001 From: San Jacobs Date: Mon, 8 Aug 2022 10:57:52 +0200 Subject: Cleanup --- .gitignore | 3 + makefile | 11 +- src/main.cpp | 351 +++++++++++++++++++++++++++++------------------------------ test.sh | 2 +- 4 files changed, 186 insertions(+), 181 deletions(-) diff --git a/.gitignore b/.gitignore index a68f5c3..da6a30a 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,9 @@ __pycache__ obj/*.o a.out a.exe +satscalc +satscalc.exe +satscalc32.exe notes.txt a.pdb remedy.rdbg diff --git a/makefile b/makefile index ef1b070..ed5e648 100644 --- a/makefile +++ b/makefile @@ -25,17 +25,17 @@ OBJECTS=$(patsubst src/%.cpp, $(OBJDIR)%.o, $(SOURCES)) # This last line creates an identical list of objects based on the list of .cpp files. a.out: $(OBJECTS) - $(CXX) $(LIBDIR) $(CVERSION) $(CFLAGS) $(LIBS) $(OBJECTS) + $(CXX) $(LIBDIR) $(CVERSION) $(CFLAGS) $(LIBS) $(OBJECTS) -o satscalc $(OBJECTS): obj/%.o : src/%.cpp mkdir -p obj $(CXX) -g $(INCLUDE) $(CVERSION) $(CFLAGS) -c $< -o $@ windows: - zig c++ -target x86_64-windows-gnu src/*.cpp -std=c++17 -g -gcodeview + zig c++ -target x86_64-windows-gnu src/*.cpp $(CVERSION) -g -gcodeview -o satscalc.exe windows32: - zig c++ -target i386-windows-gnu src/*.cpp -std=c++17 -g -gcodeview + zig c++ -target i386-windows-gnu src/*.cpp $(CVERSION) -g -gcodeview -o satscalc32.exe clean: rm obj/*.o @@ -44,5 +44,8 @@ cleanall: rm obj/*.o a.out install: a.out - cp a.out /usr/local/bin/satscalc + cp satscalc /usr/local/bin/satscalc + +test: a.out + ./test.sh diff --git a/src/main.cpp b/src/main.cpp index ce5c8c3..830e737 100755 --- a/src/main.cpp +++ b/src/main.cpp @@ -33,40 +33,109 @@ int main(int argc, char* argv[]) if(argc > 1){ if(std::string(argv[1])=="test") { test(); // Test time-stuff - } - } else { - std::cout << "satscalc (C++ Edition)\n"; - std::cout << "Copyright 2022 Sander J. Skjegstad.\n"; - std::cout << "This is free software with ABSOLUTELY NO WARRENTY.\n"; - std::cout << "It does NOT give financial advice.\n\n"; + return 0; + }} + std::cout << "satscalc (C++ Edition)\n"; + std::cout << "Copyright 2022 Sander J. Skjegstad.\n"; + std::cout << "This is free software with ABSOLUTELY NO WARRENTY.\n"; + std::cout << "It does NOT give financial advice.\n\n"; - std::cout << "-----\nStep 0: Setting the dayrate\n\n"; + std::cout << "-----\nStep 0: Setting the dayrate\n\n"; - int dayrate; - std::cout << "Dayrate: "; - std::cin >> dayrate; - std::cin.ignore(); + int dayrate; + std::cout << "Dayrate: "; + std::cin >> dayrate; + std::cin.ignore(); + + long double hourly_rate = dayrate/7.5; + std::cout << "Hourly rate: " << hourly_rate << "\n\n"; + + std::cout << "How many days do you want to enter? "; + int number_of_days; + std::cin >> number_of_days; + std::cin.ignore(); + delta default_daylength{0, 8, 0}; + long double social_costs = 1.26; + + while(1) { + CLEAR; + std::cout << "\n------------- Setup and defaults -------------\n"; + std::cout << "[d] Dayrate: " << dayrate << " (" << hourly_rate << " hourly)\n"; + std::cout << "[w] Workdays to input: " << number_of_days << "\n"; + std::cout << "[l] Default length of workday: " << default_daylength.hours << "h\n"; + std::cout << "[s] Social costs: " << (social_costs-1)*100 << "%\n"; + //std::cout << "[l] Lunch: " << timeprint((timeblock){lunch_start, lunch_end}) << "\n" << std::endl; - long double hourly_rate = dayrate/7.5; - std::cout << "Hourly rate: " << hourly_rate << "\n\n"; + std::cout << "\nWrite the letter for what you want to change, or 0 to continue." << std::endl; - std::cout << "How many days do you want to enter? "; - int number_of_days; - std::cin >> number_of_days; + char input_char = '5'; + std::cin >> input_char; std::cin.ignore(); - delta default_daylength{0, 8, 0}; - long double social_costs = 1.26; + + std::cout << "\n"; + switch (input_char) { + case '0': + goto setup_done; + case 'd': + std::cout << "Changing dayrate.\nDayrate: "; + std::cin >> dayrate; + std::cin.ignore(); + hourly_rate = dayrate/7.5; + break; + case 'w': + std::cout << "Changing number of workdays.\nDays: "; + std::cin >> number_of_days; + std::cin.ignore(); + break; + case 'l': + std::cout << "Changing default workday length:\nHours: "; + std::cin >> default_daylength.hours; + std::cin.ignore(); + break; + case 's': + { + std::cout << "Changing social cost percentage:\nSocial cost %"; + int social_input = 0; + std::cin >> social_input; + std::cin.ignore(); + social_costs = (social_input+100.0f)/100.0f; + break; + } + default: + std::cout << "ERROR: That's not a valid char, ya doofus." << std::endl; + } + } +setup_done: + CLEAR; + + //number_of_days = 1; // Just here for debugging + workday workdays[number_of_days]; + + moment previous_wrap{0, 16, 20, 11, 1000}; // Set to a long time ago + + for(int day=0; day> input_char; @@ -75,175 +144,105 @@ int main(int argc, char* argv[]) std::cout << "\n"; switch (input_char) { case '0': - goto setup_done; - case 'd': - std::cout << "Changing dayrate.\nDayrate: "; - std::cin >> dayrate; - std::cin.ignore(); - hourly_rate = dayrate/7.5; + goto done; + case 'c': + std::cout << "Changing calltime.\n"; + calltime = timeinput(); break; case 'w': - std::cout << "Changing number of workdays.\nDays: "; - std::cin >> number_of_days; - std::cin.ignore(); + std::cout << "Changing actual wraptime.\n"; + wraptime = timeinput(calltime); break; - case 'l': - std::cout << "Changing default workday length:\nHours: "; - std::cin >> default_daylength.hours; - std::cin.ignore(); + case 'p': + std::cout << "Changing planned wraptime.\n"; + planned_wraptime = timeinput(calltime); break; - case 's': - { - std::cout << "Changing social cost percentage:\nSocial cost %"; - int social_input = 0; - std::cin >> social_input; - std::cin.ignore(); - social_costs = (social_input+100.0f)/100.0f; + case 'l': + std::cout << "Changing lunch-time.\n"; + std::cout << "Lunch start:\n"; + lunch_start = timeinput(calltime); + std::cout << "Lunch end:\n"; + lunch_end = timeinput(calltime); break; - } default: - std::cout << "ERROR: That's not a valid char, ya doofus." << std::endl; + std::cout << "ERROR: That's not a valid number, ya doofus." << std::endl; } } -setup_done: - CLEAR; +done: - //number_of_days = 1; // Just here for debugging - workday workdays[number_of_days]; + workdays[day] = {previous_wrap, + calltime, + wraptime, + planned_wraptime}; - moment previous_wrap{0, 16, 20, 11, 1000}; // Set to a long time ago + if(lunch_start != lunch_end) workdays[day].lunch(lunch_start, lunch_end); - for(int day=0; day> input_char; - std::cin.ignore(); - - std::cout << "\n"; - switch (input_char) { - case '0': - goto done; - case 'c': - std::cout << "Changing calltime.\n"; - calltime = timeinput(); - break; - case 'w': - std::cout << "Changing actual wraptime.\n"; - wraptime = timeinput(calltime); - break; - case 'p': - std::cout << "Changing planned wraptime.\n"; - planned_wraptime = timeinput(calltime); - break; - case 'l': - std::cout << "Changing lunch-time.\n"; - std::cout << "Lunch start:\n"; - lunch_start = timeinput(calltime); - std::cout << "Lunch end:\n"; - lunch_end = timeinput(calltime); - break; - default: - std::cout << "ERROR: That's not a valid number, ya doofus." << std::endl; - } - } -done: - - workdays[day] = {previous_wrap, - calltime, - wraptime, - planned_wraptime}; - - if(lunch_start != lunch_end) workdays[day].lunch(lunch_start, lunch_end); - - std::cout << "\nCalltime: " << timeprint(workdays[day].call) << "\n"; - std::cout << "Wraptime: " << timeprint(workdays[day].wrap) << "\n"; - std::cout << "Planned wrap: " << timeprint(workdays[day].planned_wrap) << "\n\n"; - - for(int i=0; i= 22) && - (each_day.wrap.hours < 6 || each_day.wrap.hours >= 22) && - day_length < 9) - { - std::cout << "Day set entirely between 22:00 and 06:00.\nPrice is dayrate plus 100% for hours worked. [§6.12B]\n"; - day_price = dayrate + (day_length * hourly_rate); - - } else if((each_day.call.hours < 6 || each_day.call.hours >= 10) && - (each_day.wrap.hours > 22 || each_day.wrap.hours <= 10)){ - if(day_price < dayrate){ - day_price = dayrate; - - std::cout << "Offset day at least partially set between 22:00 and 06:00.\nMinimum price is full dayrate. [§6.12A]\n"; - } - } - std::cout << "Price of day " << ii+1 << ": " << day_price << std::endl; - total_sum += day_price; + day_price += block_price; } - std::cout << "\nSum: " << total_sum; - std::cout << "\nTotal: " << total_sum*social_costs << std::endl; - + double day_length = (timeblock){each_day.call, each_day.wrap}.hourcount(); - return 0; + if((each_day.call.hours < 6 || each_day.call.hours >= 22) && + (each_day.wrap.hours < 6 || each_day.wrap.hours >= 22) && + day_length < 9) + { + std::cout << "Day set entirely between 22:00 and 06:00.\nPrice is dayrate plus 100% for hours worked. [§6.12B]\n"; + day_price = dayrate + (day_length * hourly_rate); + + } else if((each_day.call.hours < 6 || each_day.call.hours >= 10) && + (each_day.wrap.hours > 22 || each_day.wrap.hours <= 10)){ + if(day_price < dayrate){ + day_price = dayrate; + + std::cout << "Offset day at least partially set between 22:00 and 06:00.\nMinimum price is full dayrate. [§6.12A]\n"; + } + } + std::cout << "Price of day " << ii+1 << ": " << day_price << std::endl; + total_sum += day_price; } + + std::cout << "\nSum: " << total_sum; + std::cout << "\nTotal: " << total_sum*social_costs << std::endl; + + + return 0; } diff --git a/test.sh b/test.sh index bf4aed1..0aaf60d 100755 --- a/test.sh +++ b/test.sh @@ -1,4 +1,4 @@ -./a.out <