/*
 * This file is part of <project name>.
 *
 * <project name> is free software: you can redistribute it and/or modify
 * it under the terms of the <license name> as published by
 * the <license organization>, either version <license version> of the License, or
 * (at your option) any later version.
 *
 * <project name> is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * <license name> for more details.
 *
 * You should have received a copy of the <license name>
 * along with <project name>.  If not, see <license URL>.
 */

#include <algorithm>
#include <array>
#include <cassert>
#include <cctype>
#include <cstddef>
#include <chrono>
#include <cmath>
#include <condition_variable>
#include <cstdlib>
#include <cstring>
#include <ctime>
#include <fstream>
#include <functional>
#include <iomanip>
#include <iostream>
#include <iterator>
#include <memory>
#include <mutex>
#include <random>
#include <regex>
#include <sstream>
#include <string>
#include <thread>
#include <vector>

#include "BendAllowance.h"
#include "BendDeduction.h"
#include "DataLoad.h"
#include "DataSave.h"
#include "Deserializer.h"
#include "FormingTool.h"
#include "Kfactor.h"
#include "Serializer.h"
#include "Setback.h"
#include "Tonnage.h"

int main() {
    std::cout << "Welcome to BendCalc - Metal Forming and Bending Operations Calculator\n";
    std::cout << "Select an operation:\n";
    std::cout << "1. Calculate Bend Deduction\n";
    std::cout << "2. Load Data\n";
    std::cout << "3. Save Data\n";
    std::cout << "4. Exit\n";
    std::cout << "Enter your choice: ";

    int choice;
    std::cin >> choice;

    switch (choice) {
        case 1:
            // Call function to calculate bend deduction
            break;
        case 2:
            // Call function to load data
            break;
        case 3:
            // Call function to save data
            break;
        case 4:
            std::cout << "Exiting...\n";
            return 0;
        default:
            std::cout << "Invalid choice. Please try again.\n";
    }

    // Loop back to menu or exit based on user input
    // Implement functionality for each case

    return 0;
}