32 Commits

Author SHA1 Message Date
9ae07dac0a cleaned up imports and using directives 2019-07-23 12:05:40 -03:00
20648487f7 cleaned up imports and using directives 2019-07-23 12:03:49 -03:00
16a20ef6d3 commenting and doing some cleaning 2019-07-23 11:17:55 -03:00
ec089c66e7 id fix 2019-07-22 10:28:44 -03:00
ef607e7ffc cosmetic merge 2019-07-22 10:19:52 -03:00
aa52f96beb fixed customer role 2019-07-22 10:16:07 -03:00
8778a72c29 Merge branch 'outputfix' of AP-CT/Parkmanne into billing4real 2019-07-22 12:53:15 +00:00
f3061fe3bc +Edit f, +CLS 2019-07-22 09:51:47 -03:00
c256f5f589 ?? 2019-07-22 09:39:56 -03:00
23144deb04 intergration 2019-07-22 08:57:53 -03:00
e5d736eb9a working? 2019-07-22 08:48:17 -03:00
9a471428a6 works, fixed another db problem 2019-07-22 00:34:26 -03:00
3bf5b26c2b working now 2019-07-21 23:04:26 -03:00
914792948d Parktimes populated 2019-07-21 22:28:43 -03:00
e49b206df7 idk what 2019-07-21 22:21:09 -03:00
a54016340a sdf 2019-07-21 22:13:34 -03:00
b987a2eb78 db - address 2019-07-21 21:58:03 -03:00
03c40541a5 aaaaaaaaaaaa 2019-07-21 21:25:51 -03:00
79a6b9a1e0 Merge branch 'timefunctions' of AP-CT/Parkmanne into billing 2019-07-21 22:24:36 +00:00
ef5ae9dac8 bugfix interface.cpp/reportfuncts 2019-07-20 23:37:52 -03:00
8c2cbb8a11 Made report functions, monthly weekly for any month or week 2019-07-20 21:40:24 -03:00
a79081febf WIP reportgen 2019-07-20 20:32:47 -03:00
6706f6a58e timme functs, not incorporated yet 2019-07-20 10:33:19 -03:00
dafa1ab97a Menu with sub menu, revised the UI of the interface.cpp 2019-07-18 18:42:37 -03:00
cd2f723a04 implementation of admin added, animation commented out for faster testing and while loop added with exit in main() 2019-07-17 22:30:47 -03:00
0c06192f81 while loop in admin and exit 2019-07-17 10:26:22 -03:00
3eb00a0da9 Merge branch 'animation'
Adding animation, 2n try
2019-07-12 11:43:00 -03:00
1aa6a67ebc Merge branch 'animation' of AP-CT/Parkmanne into master 2019-07-10 11:57:30 +00:00
574092db34 Animation added 2019-07-08 20:46:19 -03:00
95b54f54ea Merge branch 'interface' of AP-CT/Parkmanne into master 2019-07-08 22:25:48 +00:00
ab5c685963 Changed minimum from 3.11 to 3.10, talking about cmake 2019-07-08 18:53:10 -03:00
f5c18d27f3 Merge branch 'interface' of AP-CT/Parkmanne into master 2019-07-06 16:33:18 +00:00
28 changed files with 1805 additions and 1261 deletions

View File

@ -1,36 +0,0 @@
#include "headers/Admin.h"
using std::to_string;
Admin::Admin(string name_, string password_)
: id{auto_increment_db() + 1}, name{name_}, password{hash_password(password_)} {
save_db();
}
Admin::Admin(int id_, string name_, string password_) : id{id_}, name{name_}, password{password_} {}
void Admin::save_db() {
string statement{"insert into Admin values (, '', '');"};
statement.insert(33, password);
statement.insert(29, name);
statement.insert(26, to_string(id));
SQLite::Transaction transaction(data::db);
data::db.exec(statement);
transaction.commit();
}
void Admin::update_db() {
string statement = "UPDATE Admin SET name = '', password = '' where id = '';";
statement.insert(54, to_string(id));
statement.insert(40, password);
statement.insert(25, name);
data::db.exec(statement);
}
int Admin::auto_increment_db() {
SQLite::Statement max_id(data::db, "select max(id) from Admin;");
int id = 0;
max_id.executeStep();
id = max_id.getColumn(0);
max_id.reset();
return id;
}

View File

@ -1,54 +1,54 @@
cmake_minimum_required(VERSION 3.10)
project(park)
cmake_minimum_required(VERSION 3.10)
set(CMAKE_CXX_STANDARD 11) project(park)
add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/thirdparty/SQLiteCpp)
set(CMAKE_CXX_STANDARD 11)
include_directories( add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/thirdparty/SQLiteCpp)
${CMAKE_CURRENT_LIST_DIR}/thirdparty/SQLiteCpp/include
) include_directories(
${CMAKE_CURRENT_LIST_DIR}/thirdparty/SQLiteCpp/include
)
add_executable(park
main.cpp
add_executable(park
data.cpp main.cpp
headers/data.h
encrypt.cpp data.cpp
headers/encrypt.h headers/data.h
encrypt.cpp
Customer.cpp headers/encrypt.h
headers/Customer.h
Park_spot.cpp Customer.cpp
headers/Park_spot.h headers/Customer.h
Park_time.cpp Park_spot.cpp
headers/Park_time.h headers/Park_spot.h
Admin.cpp Park_time.cpp
headers/Admin.h headers/Park_time.h
Query.cpp Query.cpp
headers/Query.h headers/Query.h
Interface.cpp Interface.cpp
headers/Interface.h headers/Interface.h
) )
if (UNIX) if (UNIX)
target_link_libraries(park target_link_libraries(park
SQLiteCpp SQLiteCpp
sqlite3 sqlite3
pthread pthread
dl dl
sodium sodium
) )
elseif (MSYS OR MINGW) elseif (MSYS OR MINGW)
target_link_libraries(park target_link_libraries(park
SQLiteCpp SQLiteCpp
sqlite3 sqlite3
pthread pthread
ssp ssp
libsodium libsodium
) )
endif() endif()

View File

@ -1,24 +1,26 @@
#include "headers/Customer.h" #include "headers/Customer.h"
// constructors // constructors
Customer::Customer(string name_, string password_, Vehicle_type vehicle_, string telephone_) Customer::Customer(string name_, string password_, Vehicle_type vehicle_, string telephone_,
int role_)
: id{auto_increment_db() + 1}, : id{auto_increment_db() + 1},
name{name_}, name{name_},
password{hash_password(password_)}, password{hash_password(password_)},
vehicle{vehicle_}, vehicle{vehicle_},
telephone{telephone_} { telephone{telephone_},
role{role_} {
save_db(); save_db();
} }
Customer::Customer(int id_, string name_, string password_, Vehicle_type vehicle_, Customer::Customer(int id_, string name_, string password_, Vehicle_type vehicle_,
vector<Park_time> instances, string telephone_) vector<Park_time> instances, string telephone_, int role_)
: id{id_}, : id{id_},
name{name_}, name{name_},
password{password_}, password{password_},
vehicle{vehicle_}, vehicle{vehicle_},
park_instances{instances}, park_instances{instances},
telephone{telephone_} {} telephone{telephone_},
role{role_} {}
// clock in/out methods // clock in/out methods
// ==================================================================================== // ====================================================================================
@ -30,7 +32,7 @@ void Customer::clock_in(int s_id) {
park_instances.push_back(pt); park_instances.push_back(pt);
} }
// edit last p_time object so end=now // edit last p_time object in park_instances so end=now
void Customer::clock_out(int s_id) { void Customer::clock_out(int s_id) {
park_instances[park_instances.size() - 1].clock_out(id, s_id); park_instances[park_instances.size() - 1].clock_out(id, s_id);
} }
@ -54,14 +56,13 @@ int Customer::parked_at() { return park_instances[park_instances.size() - 1].spo
// functions that interact with the database // functions that interact with the database
void Customer::save_db() { void Customer::save_db() {
string statement{"insert into Customer values (, '', '', ,'');"}; string statement{"insert into Customer values (, '', '', ,'', );"};
// after ( = 28) statement.insert(43, to_string(role));
statement.insert(41, telephone); statement.insert(41, telephone);
statement.insert(38, to_string(int(vehicle))); statement.insert(38, to_string(int(vehicle)));
statement.insert(36, password); statement.insert(36, password);
statement.insert(32, name); statement.insert(32, name);
statement.insert(29, to_string(id)); statement.insert(29, to_string(id));
// cout << statement;
SQLite::Transaction transaction(data::db); SQLite::Transaction transaction(data::db);
data::db.exec(statement); data::db.exec(statement);
transaction.commit(); transaction.commit();
@ -70,13 +71,13 @@ void Customer::save_db() {
void Customer::update_db() { void Customer::update_db() {
string statement = string statement =
"UPDATE Customer SET name = '', password = '', " "UPDATE Customer SET name = '', password = '', "
"vehicle = '', telephone = '' where id = '';"; "vehicle = '', telephone = '', role = '' where id = '';";
statement.insert(87, to_string(id)); statement.insert(98, to_string(id));
statement.insert(84, to_string(role));
statement.insert(73, telephone); statement.insert(73, telephone);
statement.insert(57, to_string(int(vehicle))); statement.insert(57, to_string(int(vehicle)));
statement.insert(43, password); statement.insert(43, password);
statement.insert(28, name); statement.insert(28, name);
// cout << statement;
data::db.exec(statement); data::db.exec(statement);
} }

View File

@ -1,218 +1,442 @@
#include "headers/Interface.h" #include "headers/Interface.h"
// I added it to pass spots, because the parking options need it to check where
// is free parking_spots is declared in main, and if i declare it
// liberal use of
// cin.ignore(10000, '\n');
// so it skips to the next newline, in essence clearing the cin buffer
// I added it to pass spots, because the parking options need it to check where void interface(vector<Park_spot>& spots) {
// is free parking_spots is declared in main, and if i declare it /*
// liberal use of string introduction = "P A R K M A N N E"; //logo animation, disable during testing
// cin.ignore(10000, '\n'); text_animation(introduction, 50);
// so it skips to the next newline, in essence clearing the cin buffer */
__label__ exit;
void interface(vector<Park_spot>& spots) { system("CLS");
int selector; cout << "\nWelcome to the parking system. Please login...";
cout << "\nHello and welcome to the parking spot! Please select a suitable " int id;
"option:"; string password;
cout << "\n[1]Log in as member"; cout << "\nEnter your id: ";
cout << "\n[2]Log in as administrator"; cin >> id;
cin >> selector; cin.ignore(10000, '\n');
cin.ignore(10000, '\n'); Customer c = query_customer_with_id(id);
switch (selector) { cout << "\nEnter your password: ";
case 1: {
interface_member(spots);
break;
}
case 2: {
interface_admin(spots);
break;
}
}
}
void interface_member(vector<Park_spot>& spots) {
int id;
string password;
cout << "\nPlease input id:";
cin >> id;
cin.ignore(10000, '\n');
Customer c = query_customer_with_id(id);
cout << "\nPlease input password:";
std::getline(cin, password);
while (!(verify_password(c.password, password))) {
cout << "ERROR: wrong password. Please retype your password:\n";
std::getline(cin, password); std::getline(cin, password);
}
cout << "Logged in succesfully\n"; while (!(verify_password(c.password, password))) {
cout << "select an option\n [1] Parking options\n[2]monthy report\n"; cout << "ERROR: wrong password. Please retype your password or type [x] to exit:\n";
int option; std::getline(cin, password);
cin >> option; if (password == "x")
cin.ignore(10000, '\n'); goto exit;
switch (option) {
case 1: {
park(c, spots);
break;
}
case 2: {
cout << "Has not been implemented yet\n";
break;
}
default:
break;
}
}
void interface_admin(vector<Park_spot>& spots) {
int id;
string password;
cout << "\nPlease input id:";
cin >> id;
cin.ignore(10000, '\n');
cin.clear();
Admin admin = query_admin_with_id(id);
cout << "\nPlease input password:";
std::getline(cin, password);
while (!(verify_password(admin.password, password))) {
cout << "ERROR: wrong password. Please retype your password:\n";
std::getline(cin, password);
}
cout << "Logged in succesfully\n";
cout << "Welcome to the admin interface. It is not completely ready yet.\n";
cout << "[1] See monthly report of ALL parking spots\n";
cout << "[2] See weekly report of ALL parking spots\n";
cout << "[3] See monthly report of a specific parking spot\n";
cout << "[4] See weekly report of a specific parking spot\n";
cout << "[5] See current status of parking spots\n";
cout << "[6] Make new customer\n";
cout << "[7] Make new parking spot\n";
cout << "[8] Make new Admin\n";
cout << "option[1-8]:";
int option;
cin >> option;
cin.ignore(10000, '\n');
switch (option) {
case 1: {
reports_from_allparkspots();
break;
}
case 2: {
reports_from_allparkspots(true);
break;
}
case 3: {
cout << "Which parking spot would you like a report on?ID:";
int spotid;
cin >> spotid;
cin.ignore(10000, '\n');
reports_from_parkspot(spotid);
break;
}
case 4: {
cout << "Which parking spot would you like a report on?ID:";
int spotid;
cin >> spotid;
cin.ignore(10000, '\n');
reports_from_parkspot(spotid, true);
break;
}
case 5: {
current_status_parkspots(spots);
break;
}
case 6: {
new_customer();
break;
}
case 7: {
new_parkspot(spots);
break;
}
case 8: {
new_admin();
break;
}
default:
break;
}
}
// --------- individual things.
void park(Customer& c, vector<Park_spot>& spots) {
cout << "You have selected parking option";
if (!(c.parked())) {
cout << "The following spots[which can fit your vehicle] are "
"available: ";
for (Park_spot i : spots) {
if (i.v_type == c.vehicle && !(i.taken)) {
cout << i.id << ", ";
}
} }
if (query_role_customer(id) == 1) {
cout << "where do you want to park?"; interface_admin(spots);
int parkid; } else if (query_role_customer(id) == 0) {
cin >> parkid; interface_member(spots, c);
cin.ignore(10000, '\n');
for (Park_spot& i : spots) {
if (i.id == parkid) {
i.clock(c);
cout << "You have parked sucessfully";
}
}
} else {
cout << "You are parked at spot " << c.parked_at()
<< ", do you want to clock out?\n enter [1] for yes and [0] for no";
int answer = 0;
cin >> answer;
cin.ignore(10000, '\n');
if (answer) {
query_parkspot_with_id(c.parked_at(), spots).clock(c);
cout << "You have sucessfully clocked out.";
} else { } else {
cout << "OK, have a nice day"; cout << "ERROR ROLE_INVALID!";
}
exit:;
}
void interface_member(vector<Park_spot>& spots, Customer& c) {
__label__ begin, exit;
cout << "\nLogged in succesfully!\n";
begin:
system("CLS");
cout << "Hello! " << c.name
<< ", please select an option:\n[1]Parking\n[2]Monthly report\n"
"[3]Edit information\n[4]Exit\n";
int option;
cin >> option;
cin.ignore(10000, '\n');
switch (option) {
case 1: {
park(c, spots);
break;
}
case 2: {
report_customer(c.id);
string lol;
std::cout<<"Enter any character to continue...";
std::cin>>lol;
break;
}
case 3: {
edit_information(c);
break;
}
case 4: {
cout << "Exiting...\n";
sleep_for(seconds(2));
goto exit;
break;
}
default:
break;
}
goto begin;
exit:;
}
void interface_admin(vector<Park_spot>& spots) {
__label__ begin, exit;
begin:
system("CLS");
cout << "\nWelcome to the admin interface\n";
cout << "\n[1] Reports & analytics";
cout << "\n[2] Parking spots";
cout << "\n[3] Make new user";
cout << "\n[4] Exit";
cout << "\nEnter option number: ";
int option;
cin >> option;
cin.ignore(10000, '\n');
switch (option) {
case 1: {
cout << "[1] See monthly report of ALL parking spots\n";
cout << "[2] See weekly report of ALL parking spots\n";
cout << "[3] See monthly report of a specific parking spot\n";
cout << "[4] See weekly report of a specific parking spot\n";
cout << "[5] See monthly report of a specific customer\n";
cout << "[6] See weekly report of a specific customer\n";
cout << "[7] Return\n";
cout << "Enter option number: ";
int option_1;
cin >> option_1;
cin.ignore(10000, '\n');
switch (option_1) {
case 1: {
report_all_spots();
break;
}
case 2: {
report_all_spots(true);
break;
}
case 3: {
report_single_spot();
break;
}
case 4: {
report_single_spot(true);
break;
}
case 5: {
report_customer(0);
break;
}
case 6: {
report_customer(0, true);
break;
}
case 7: {
goto begin;
break;
}
default:
break;
}
string lol;
std::cout<<"Enter any character to continue...";
std::cin>>lol;
break;
}
case 2: {
cout << "[1] See current status of parking spots\n";
cout << "[2] Make new parking spot\n";
cout << "[3] Return\n";
cout << "Enter option number: ";
int option_2;
cin >> option_2;
cin.ignore(10000, '\n');
switch (option_2) {
case 1: {
current_status_parkspots(spots);
string lol;
std::cout<<"Enter any character to continue...";
std::cin>>lol;
break;
}
case 2: {
new_parkspot(spots);
break;
}
case 3: {
goto begin;
break;
}
default:
break;
}
break;
}
case 3: {
system("CLS");
cout << "[1] Make new customer\n";
cout << "[2] Make new admin\n";
cout << "[3] Return\n";
cout << "Enter option number: ";
int option_3;
cin >> option_3;
cin.ignore(10000, '\n');
switch (option_3) {
case 1: {
new_customer();
break;
}
case 2: {
new_admin();
break;
}
case 3: {
goto begin;
break;
}
default:
break;
}
case 4: {
std::cout<<"Exiting...";
sleep_for(seconds(2));
goto exit;
break;
} break;
}
default:
break;
}
goto begin;
exit:;
}
// --------- individual things.
void park(Customer& c, vector<Park_spot>& spots) {
__label__ exit;
cout << "You have selected parking option.\n";
if (!(c.parked())) {
cout << "The following spots fit your vehicle and are available: \n";
for (Park_spot i : spots) {
if ((i.v_type == c.vehicle) & (i.taken == false)) {
cout << i.id << ", ";
}
}
cout << "\nWhere do you want to park? Or type [0] to exit.";
int parkID;
cin >> parkID;
if (!parkID)
goto exit;
cin.ignore(10000, '\n');
for (Park_spot& i : spots) {
if (i.id == parkID) {
if (confirm()) {
i.clock(c);
cout << "You have parked sucessfully!";
}
}
}
} else {
cout << "You are parked at spot " << c.parked_at()
<< ", do you want to clock out?\n[1] Yes\n[2] No";
int answer = 0;
cin >> answer;
cin.ignore(10000, '\n');
if (answer) {
query_parkspot_with_id(c.parked_at(), spots).clock(c);
cout << "You have sucessfully clocked out.";
} else {
cout << "OK, have a nice day.";
}
}
exit:;
}
void new_customer() {
int vtype;
string name;
string password;
string telephone;
int role = 0;
cout << "\nWhat's the name of the customer? ";
std::getline(cin, name);
cout << "\nWhat's the vehicle type? \n[1]Twowheeler\n[2] Fourwheeler\n";
cin >> vtype;
cin.ignore(10000, '\n');
cout << "What's the telephone number? +";
std::getline(cin, telephone);
cout << "\nWhat's the password? ";
std::getline(cin, password);
Customer newcustomer{name, password, Vehicle_type(vtype), telephone, role};
cout << "\nNew customer sucessfully created with ID:" << newcustomer.id << "\n";
if (confirm())
newcustomer.update_db();
}
void new_admin() {
int vtype = 2; // revision required! Needs to be set to NULL
string name;
string password;
string telephone;
int role = 1;
cout << "\nWhat's the name of the admin? ";
std::getline(cin, name);
cout << "\nWhat's the telephone number? +";
std::getline(cin, telephone);
cout << "\nWhat's the password?";
std::getline(cin, password);
Customer newadmin{name, password, Vehicle_type(vtype), telephone, role};
cout << "\nNew customer sucessfully created with ID=" << newadmin.id << "\n";
if (confirm())
newadmin.update_db();
}
void new_parkspot(vector<Park_spot>& spots) {
cout << "What type of parking spot? \n[1] Two-wheeler\n[2] Four-wheeler\n";
int vtype;
cin >> vtype;
cin.ignore(10000, '\n');
Park_spot newspot{Vehicle_type(vtype)};
if (confirm()) {
spots.push_back(newspot);
cout << "New parking spot sucessfully created.\n";
} }
} }
}
void new_customer() { void edit_information(Customer& c)
int vtype; {
string name; string string0; int int0;
string password; /*std::cout<<"\nInput to update name or press [0] to keep name:\n";
string telephone; std::getline(cin,string0);
cout << "What's the name of the customer? "; if (string0=="0");
std::getline(cin, name); else c.name=string0;*/
cout << "What's the vehicle type? [1]twoweeler, [2] fourweeler: ";
cin >> vtype;
cin.ignore(10000, '\n');
cout << "What's the telephone number? ";
std::getline(cin, telephone);
cout << "What's the password?";
std::getline(cin, password);
Customer newcustomer{name, password, Vehicle_type(vtype), telephone};
cout << "New customer sucessfully created\n";
newcustomer.update_db();
}
void new_admin() { std::cout<<"\n Input to update vehicle to [1]Two-Wheeler,"
string name; "[2]Four-Wheeler or press [0] to keep vehicle type:\n";
string password; std::cin>>int0;
cout << "What's the name of the admin? "; if (!int0);
std::getline(cin, name); else c.vehicle=Vehicle_type(int0);
cout << "What's the password?"; cin.ignore();
std::getline(cin, password); std::cout<<"\n Input to update password or press [0] to keep current password:\n";
Admin newadmin{name, password}; std::getline(cin,string0);
cout << "New admin sucessfully created\n"; if (string0=="0");
newadmin.update_db(); else c.password=hash_password(string0);
}
std::cout<<"\n Input to update phone number or press [0] to keep current number:\n";
std::getline(cin,string0);
if (string0=="0");
else c.telephone=string0;
c.role=0;
if(confirm()){c.update_db();}
}
void new_parkspot(vector<Park_spot>& spots) { // time stuff-----------------------------------------------------
cout << "What type of parking spot? [1] twoweeler, [2] fourweeler: ";
int vtype; pair<int, int> create_month_period() {
cin >> vtype; std::time_t t = std::time(0);
cin.ignore(10000, '\n'); std::tm* date = std::localtime(&t);
Park_spot newspot{Vehicle_type(vtype)}; int month, year = 0;
spots.push_back(newspot); cout << "Which month do you want a report on?[6 2018 for June 2018]\n";
cout << "new parking spot sucessfully created.\n"; cin >> month >> year;
} date->tm_year = year - 1900;
date->tm_mday = 1;
date->tm_mon = month - 1;
pair<int, int> period;
period.first = mktime(date);
date->tm_mon = month;
period.second = mktime(date);
return period;
}
pair<int, int> create_week_period() {
std::time_t t = std::time(0);
std::tm* date = std::localtime(&t);
int day, month, year = 0;
cout << "Which month do you want a report on?[ 20 6 2018 for June 20th, 2018]\n";
cin >> day >> month >> year;
date->tm_year = year - 1900;
date->tm_mday = day;
date->tm_mon = month - 1;
date->tm_hour = 0;
date->tm_min = 0;
pair<int, int> period;
period.first = mktime(date);
period.second = period.first + 604800; // plus 7 days in seconds.
return period;
}
bool confirm(void) {
string ver;
std::cout << "\nAre you sure you want to commit these actions?"
"\n[No] Revert."
"\n[Yes] Commit.";
std::cin >> ver;
if (ver == "YES" | ver == "Yes" | ver == "yes")
{
std::cout<<"Succes! Changes Saved.";
sleep_for(seconds(1));
return true;
}
else
{
std::cout<<"No changes committed.";
sleep_for(seconds(1));
return false;
}
}
// ------------------------------ report stuff
void report_all_spots(bool weekly) {
pair<int, int> period;
if (weekly) {
period = create_week_period(); // remove the pair<int, int>
} else {
period = create_month_period(); // ^
}
cout << "working timeperiods: " << period.first << ", " << period.second; // DEBUG
reports_from_allparkspots(period); // TODO: namechange of reports_from_allparkspots in query?
}
void report_single_spot(bool weekly) {
cout << "Which parking spot would you like a report on?\n";
cout << "Parking spot ID: ";
int spotID;
cin >> spotID;
cin.ignore(10000, '\n');
pair<int, int> period;
if (weekly) {
period = create_week_period(); // remove the pair<int, int>
} else {
period = create_month_period();
}
reports_from_parkspot(spotID, period);
}
void report_customer(int customerID, bool weekly) {
// use report_customer(0) to make interactive
// so admin can call the interactive version, but customer can only call
// report_customer(own_cid)
if (!customerID) {
cout << "What customer do you want a report on? ID: ";
cin >> customerID;
}
pair<int, int> period;
if (weekly) {
period = create_week_period();
} else {
period = create_month_period();
}
reports_from_customer(customerID, period);
}

View File

@ -8,14 +8,9 @@ Park_spot::Park_spot(Vehicle_type v_type_)
} }
Park_spot::Park_spot(int id_, bool taken_, int parked, Vehicle_type v_type_) Park_spot::Park_spot(int id_, bool taken_, int parked, Vehicle_type v_type_)
: parked_customer{parked}, : parked_customer{parked}, id{id_}, v_type{v_type_}, taken{taken_} {}
id{id_},
v_type{v_type_},
taken{taken_} // TODO: think about how init parked?
{}
// clock in en out, calls de juist(in/out) van de customer aan de hand van // clock in en out, calls de correct customer.clock_x depending on internal state of the spot
// internal state van taken
void Park_spot::clock(Customer& c_customer) { void Park_spot::clock(Customer& c_customer) {
if (!taken) { if (!taken) {
parked_customer = c_customer.id; parked_customer = c_customer.id;
@ -46,9 +41,7 @@ void Park_spot::update_db() {
} }
void Park_spot::save_db() { void Park_spot::save_db() {
//(int id, bool taken, int customer_id)
string statement{"insert into Park_spot values ( , , , );"}; string statement{"insert into Park_spot values ( , , , );"};
// after ( = 28)
statement.insert(36, to_string(int(v_type))); statement.insert(36, to_string(int(v_type)));
statement.insert(34, "NULL"); statement.insert(34, "NULL");
statement.insert(32, "0"); statement.insert(32, "0");

View File

@ -17,7 +17,7 @@ Park_time::Park_time(int c_id, int s_id)
save_db(); save_db();
} }
/* /*
this one initializes with data from the database. should probably only be used in the query this one initializes with data from the database. should only be used in the query
functions. functions.
*/ */
Park_time::Park_time(int id_, int customer_id_, int spot_id_, int start_, int duration_) Park_time::Park_time(int id_, int customer_id_, int spot_id_, int start_, int duration_)
@ -30,7 +30,6 @@ Park_time::Park_time(int id_, int customer_id_, int spot_id_, int start_, int du
simple checking if customer is clocking out at the right spot. simple checking if customer is clocking out at the right spot.
sets end(time of clocking out) and calculates the duration. sets end(time of clocking out) and calculates the duration.
updates the info in the database. updates the info in the database.
*/ */
void Park_time::clock_out(int c_id, int s_id) { void Park_time::clock_out(int c_id, int s_id) {
@ -60,7 +59,8 @@ std::ostream& operator<<(std::ostream& os, const Park_time& pt) {
os << "Customer # " << pt.customer_id << "at parking spot " << pt.spot_id << "\n"; os << "Customer # " << pt.customer_id << "at parking spot " << pt.spot_id << "\n";
os << "Clocked in :" << std::ctime(&start_); os << "Clocked in :" << std::ctime(&start_);
os << "clocked out : " << std::ctime(&end_); os << "clocked out : " << std::ctime(&end_);
os << "duration : " << pt.duration << "\n"; float dur_h = pt.duration / 3600.0;
os << "duration : " << dur_h << " h\n";
os << "- - - - - - - - - - - - - - - - - - - -\n"; os << "- - - - - - - - - - - - - - - - - - - -\n";
return os; return os;
} }
@ -110,15 +110,11 @@ int Park_time::auto_increment_db() {
return id; return id;
} }
//------------------ test function to help test this // text animtion
void text_animation(const string& text, unsigned int pause_time) {
void Wait(int sec) for (const char m : text) // range loop; for each character in string
{
{ cout << m << flush;
/* sleep_for(milliseconds(pause_time));
a wait function where 1 sec represents 1 hour irl. It has been used for testing }
purposes mostly. TODO: Needs to be removed at completion of project, or seperated in a test }
cpp/header
*/
std::this_thread::sleep_for(seconds{sec});
}

128
Query.cpp
View File

@ -25,29 +25,6 @@ vector<Park_time> query_parktimes_for_customer(int cid) {
//--------------------------------------------- customers //--------------------------------------------- customers
vector<Customer> query_customer_with_name(string name) {
/*
We use this instead of plain customers because:
1. no error handling needed here if there are no customers
2. multiple customers could be returned with the same name.
*/
vector<Customer> result;
SQLite::Statement query(data::db,
"SELECT id, name, password, vehicle FROM Customer WHERE name = ?;");
query.bind(1, name);
while (query.executeStep()) {
int id = query.getColumn(0);
string name_ = query.getColumn(1);
string password = query.getColumn(2);
int vehicle = query.getColumn(3); // cast to vehicle
string telephone = query.getColumn(4);
vector<Park_time> park_instances = query_parktimes_for_customer(id);
result.push_back(
Customer{id, name_, password, Vehicle_type(vehicle), park_instances, telephone});
}
return result;
}
Customer query_customer_with_id(int id) { Customer query_customer_with_id(int id) {
/* do not call this function if you are not certain a customer with this id /* do not call this function if you are not certain a customer with this id
exists. exists.
@ -63,30 +40,27 @@ Customer query_customer_with_id(int id) {
string password = query.getColumn(2); string password = query.getColumn(2);
int vehicle = query.getColumn(3); // cast to vehicle int vehicle = query.getColumn(3); // cast to vehicle
string telephone = query.getColumn(4); string telephone = query.getColumn(4);
int role = query.getColumn(5);
vector<Park_time> park_instances = query_parktimes_for_customer(id); vector<Park_time> park_instances = query_parktimes_for_customer(id);
Customer result{id, name, password, Vehicle_type(vehicle), park_instances, telephone}; Customer result{id, name, password, Vehicle_type(vehicle), park_instances, telephone, role};
return result; return result;
} }
} }
//----------------- ADMIN int query_role_customer(int id) {
Admin query_admin_with_id(int id) {
SQLite::Statement query(data::db, "SELECT * FROM Customer WHERE id = ?;"); SQLite::Statement query(data::db, "SELECT * FROM Customer WHERE id = ?;");
query.bind(1, id); query.bind(1, id);
while (query.executeStep()) { while (query.executeStep()) {
string name = query.getColumn(1); int role = query.getColumn(5);
string password = query.getColumn(2); return role;
Admin result{id, name, password};
return result;
} }
} }
//------------------------------- parkspot info //------------------------------- parkspot info
// -- parkspots info, report gen
Park_spot query_parkspot_with_id(int id, vector<Park_spot>& parkspots) { Park_spot query_parkspot_with_id(int id, vector<Park_spot>& parkspots) {
for (Park_spot& i : parkspots) { for (Park_spot& i : parkspots) {
if (i.id == id) { if (i.id == id) {
@ -95,22 +69,13 @@ Park_spot query_parkspot_with_id(int id, vector<Park_spot>& parkspots) {
} }
} }
void reports_from_parkspot(int spotid, bool weekly) { void reports_from_parkspot(int spotid, pair<int, int> period) {
std::time_t t = std::time(0); // get time now
std::tm* now = std::localtime(&t);
if (weekly) {
now->tm_wday = 1;
} else {
now->tm_mday = 1;
}
int s_since_epoch = mktime(now);
vector<Park_time> park_times; vector<Park_time> park_times;
SQLite::Statement query(data::db, "SELECT * FROM Park_time WHERE spot_id = ? AND start > ?;"); SQLite::Statement query(data::db,
"SELECT * FROM Park_time WHERE spot_id = ? AND start > ? AND end < ?;");
query.bind(1, spotid); query.bind(1, spotid);
query.bind(2, s_since_epoch); query.bind(2, period.first);
query.bind(3, period.second);
while (query.executeStep()) { while (query.executeStep()) {
int id = query.getColumn(0); int id = query.getColumn(0);
int cid = query.getColumn(1); int cid = query.getColumn(1);
@ -126,20 +91,12 @@ void reports_from_parkspot(int spotid, bool weekly) {
} }
} }
void reports_from_allparkspots(bool weekly) { void reports_from_allparkspots(pair<int, int> period) {
std::time_t t = std::time(0); // get time now
std::tm* now = std::localtime(&t);
if (weekly) {
now->tm_wday = 1;
} else {
now->tm_mday = 1;
}
int s_since_epoch = mktime(now);
vector<Park_time> park_times; vector<Park_time> park_times;
SQLite::Statement query(data::db, "SELECT * FROM Park_time WHERE start > ?;"); SQLite::Statement query(data::db, "SELECT * FROM Park_time WHERE start > ? AND end < ?;");
query.bind(1, s_since_epoch); query.bind(1, period.first);
query.bind(2, period.second);
while (query.executeStep()) { while (query.executeStep()) {
int id = query.getColumn(0); int id = query.getColumn(0);
int cid = query.getColumn(1); int cid = query.getColumn(1);
@ -157,29 +114,40 @@ void reports_from_allparkspots(bool weekly) {
} }
void current_status_parkspots(vector<Park_spot>& spots) { void current_status_parkspots(vector<Park_spot>& spots) {
cout << "P.spot \t\tStatus\t\t Customer\n";
for (auto& i : spots) { for (auto& i : spots) {
cout << "---------------------------\n"; cout << "\n" << i.id << "\t\t" << ((i.taken) ? "true" : "false");
cout << "PS #" << i.id << "\n";
cout << "Taken: " << ((i.taken) ? "true" : "false") << "\n";
if (i.taken) { if (i.taken) {
cout << "Customer#" << i.parked_customer << " parked there\n"; cout << "\t\t" << i.parked_customer;
} }
} }
cout << "\n";
} }
// -------------- paroking spots vector<Park_time> reports_from_customer(int cid, pair<int, int> period) {
vector<Park_time> park_times;
int verhicle = int(query_customer_with_id(cid).vehicle);
float sum = 0;
SQLite::Statement query(
data::db, "SELECT * FROM Park_time WHERE customer_id = ? AND start > ? AND end < ?;");
query.bind(1, cid);
query.bind(2, period.first);
query.bind(3, period.second);
while (query.executeStep()) {
int id = query.getColumn(0);
int spotid = query.getColumn(2);
int start = query.getColumn(3);
int duration = query.getColumn(5);
Park_time result{id, cid, spotid, start, duration};
park_times.push_back(result);
sum += duration / 3600;
}
query.reset();
// vector<Park_spot> populate_spots(){ for (auto i : park_times) {
// vector<Park_spot> spots; cout << std::setprecision(2) << i;
// SQLite::Statement query(data::db, "SELECT * FROM Park_spot WHERE id > sum += i.duration / 3600.0;
// 0;"); }
// // query.bind(1, 2); cout << "Your fees for this month: $" << std::setprecision(4) << sum * verhicle << "\n";
// while (query.executeStep()) { return park_times;
// int id = query.getColumn(0); }
// int taken = query.getColumn(1);
// int cid = query.getColumn(2);
// // park_customers.push_back(query_customer_with_id(cid));
// spots.push_back({id, taken, cid});
// }
// return spots;
// }

View File

@ -5,6 +5,7 @@ namespace data {
SQLite::Database start_db() { SQLite::Database start_db() {
/* /*
Opens the database, creates it if it can't find the file. Opens the database, creates it if it can't find the file.
Then creates tables if they don't exist
*/ */
SQLite::Database db("test.db3", SQLite::OPEN_READWRITE | SQLite::OPEN_CREATE); SQLite::Database db("test.db3", SQLite::OPEN_READWRITE | SQLite::OPEN_CREATE);
while (sodium_init() < 0) { while (sodium_init() < 0) {
@ -13,19 +14,21 @@ SQLite::Database start_db() {
This shouldn't be here, really, but I can't think of a better place This shouldn't be here, really, but I can't think of a better place
where it runs at least once. This seeds the random generator needed for where it runs at least once. This seeds the random generator needed for
salts and other stuff, and needs to be run at least once when working salts and other stuff, and needs to be run at least once when working
with any libsodium function. with any libsodium function. And since this definitely needs to be run at least once, why
not include it here? you can't (well, shouldn't be able to) login into anything if this
doesn't run, since you need to compare passwords to login, and then running the program is
as futile as not opening the db correctly.
*/ */
} }
db.exec( db.exec(
"create table if not exists Customer (id integer primary key, name " "create table if not exists Customer (id integer primary key, name "
"text, password text, vehicle int, telephone text);"); "text, password text, vehicle int, telephone text, role int)");
db.exec( db.exec(
"create table if not exists Park_spot (id integer primary key, taken " "create table if not exists Park_spot (id integer primary key, taken "
"int, customer_id int, vehicle_type int);"); "int, customer_id int, vehicle_type int)");
db.exec( db.exec(
"create table if not exists Park_time (id integer primary key, " "create table if not exists Park_time (id integer primary key, "
"customer_id int, spot_id int, start int, end int, duration int);"); "customer_id int, spot_id int, start int, end int, duration int)");
db.exec("create table if not exists Admin (id int primary key, name text, password text);");
return db; return db;
} }

View File

@ -3,17 +3,19 @@
string hash_password(string password) { string hash_password(string password) {
/* /*
Passing strings and converting to char* because I do not want to be forced Passing strings and converting to char* because I do not want to be forced
to use char * whenever I want to call the function. Low level stuff in the to use char * whenever the function is called.
function, the least possible low level stuff outside. Low level stuff in the function, the least possible low level stuff outside.
This uses the password hashing algorithm Argon2 implemented by libsodium. This uses the password hashing algorithm Argon2 implemented by libsodium.
DO NOT MODIFY memory_limit and cpu_limit after you add customers to the db. DO NOT MODIFY memory_limit and cpu_limit after you add customers to the db.
When you do that, the hashed passwords can't be decrypted, and that would be When you do that, the hashed passwords can't be decrypted, and that would be
BAD BAD.
*/ */
const char* password_ = password.c_str(); const char* password_ = password.c_str();
char hashed_password_[crypto_pwhash_STRBYTES]; char hashed_password_[crypto_pwhash_STRBYTES];
int memory_limit = 3.2e+7; // 3.2e7 = 32e6 = 32 mb int memory_limit = 3.2e+7; // 3.2e7 = 32e6 = 32 mb
int cpu_limit = 1; // this is n_threads int cpu_limit = 1; // this somewhat resembles n_threads, but is not a 1 to 1 match.
int result = int result =
crypto_pwhash_str(hashed_password_, password_, strlen(password_), cpu_limit, memory_limit); crypto_pwhash_str(hashed_password_, password_, strlen(password_), cpu_limit, memory_limit);

BIN
graph.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

394
graph.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 30 KiB

View File

@ -1,21 +0,0 @@
#ifndef ADMIN_H
#define ADMIN_H
#pragma once
#include "data.h"
class Admin {
public:
int id;
string name;
string password;
Admin(string name_, string password_);
Admin(int id_, string name_, string password);
// private:
void update_db();
void save_db();
int auto_increment_db();
};
#endif // CUSTOMER_H

View File

@ -10,10 +10,11 @@ using std::vector;
/* /*
enum classes make it easy to represent categories. enum classes make it easy to represent categories.
So you can use something like Vehicle_type::car instead of 2. but under the So you can use something like Vehicle_type::twowheeler instead of 2 in code, so you know it's that.
hood, it's still an int. This is here so you won't have to have global variables but under the hood, it's still an int.
for these categories, or worse, use magic numbers in the code. This is so you don't have to polute the global namespace with unnecesary variables.
enum classes do not permit implicit conversion between int and the enum class, and are in the
Enumclass:: scope in contrast to plain enums. https://en.cppreference.com/w/cpp/language/enum
*/ */
enum class Vehicle_type { twoweeler = 1, fourweeler = 2 }; enum class Vehicle_type { twoweeler = 1, fourweeler = 2 };
@ -21,15 +22,9 @@ enum class Vehicle_type { twoweeler = 1, fourweeler = 2 };
Customer constructors do the same stuff as all the other constructors. Customer constructors do the same stuff as all the other constructors.
clock_in and out create and modify park_time objects and store them to clock_in and out create and modify park_time objects and store them to
park_instances. Technically, now that we have a working db, we don't need it. park_instances. Technically, now that we have a working db, we don't need it.
TODO: fix this. It might have some performance benefits to keeping it, though.
TODO: test or fix this.
gen_monthly just prints out all the park_time objects in park_instances. save, update, delete and auto increment are the same as in park_time but for customers.
It should (and can safely) be removed, but it's here as a quick example of
report generation It has no logic to speak of that only generates report of
ptime objects of this month.
TODO: remove when have seperate report generation functions.
save, update, delete and auto increment are the same as in park_time.
*/ */
class Customer { class Customer {
@ -39,9 +34,10 @@ class Customer {
string password; string password;
Vehicle_type vehicle; Vehicle_type vehicle;
string telephone; string telephone;
Customer(string name_, string password_, Vehicle_type vehicle_, string telephone_); int role;
Customer(string name_, string password_, Vehicle_type vehicle_, string telephone_, int role_);
Customer(int id_, string name_, string password_, Vehicle_type vehicle_, Customer(int id_, string name_, string password_, Vehicle_type vehicle_,
vector<Park_time> instances, string telephone_); vector<Park_time> instances, string telephone_, int role_);
void clock_in(int s_id); void clock_in(int s_id);
void clock_out(int s_id); void clock_out(int s_id);
bool parked(); bool parked();

View File

@ -1,14 +1,26 @@
#include "Query.h" #include "Query.h"
using std::cin; using std::cin;
//interface functions
void interface(vector<Park_spot>& spots); void interface(vector<Park_spot>& spots);
void interface_member(vector<Park_spot>& spots); void interface_member(vector<Park_spot>& spots, Customer& c);
void interface_admin(vector<Park_spot>& spots); void interface_admin(vector<Park_spot>& spots);
void park(Customer& c, vector<Park_spot>& spots); void park(Customer& c, vector<Park_spot>& spots);
void new_customer(); void new_customer();
void new_admin();
void new_parkspot(vector<Park_spot>& spots); void new_parkspot(vector<Park_spot>& spots);
void new_admin(); void edit_information(Customer&);
// time creation
pair<int, int> create_month_period();
pair<int, int> create_week_period();
// report functions
void report_single_spot(bool weekly = false);
void report_all_spots(bool weekly = false);
void report_customer(int customerID, bool weekly = false);
// confirmation function
bool confirm();

View File

@ -6,11 +6,12 @@
/* /*
db representation: db representation:
int id not null int id not null
bool taken not null int taken // the library seems to be having problems with bools as types.
int customer_id (null) (many to one, foreign key, whatever) int customer_id (nullable)
Represents a parkspot.
Has the same kind of db functions, same kind of constructors as previous classes.
Dit representeert een parkeerplaats. Het heeft als internal state alleen dat t
bezet is of niet.
*/ */
class Park_spot { class Park_spot {

View File

@ -6,14 +6,13 @@
#include <chrono> #include <chrono>
#include <ctime> #include <ctime>
#include <iostream>
#include <string>
#include <thread> #include <thread>
using namespace std::chrono; using namespace std::chrono;
using std::cout; using std::cout;
using std::string; using std::flush;
using std::to_string; using std::to_string;
using std::this_thread::sleep_for;
/* /*
@ -41,6 +40,12 @@ auto_increment pulls the highest id stored in the db, to be used in the construc
start_to_int() is used to convert the start timepoint to an integer that can be saved in the start_to_int() is used to convert the start timepoint to an integer that can be saved in the
database SQL datetime and chrono datetime don't seem the most compatible. database SQL datetime and chrono datetime don't seem the most compatible.
We choose chrono because it's the recomended way from c++11 onwards, and is more typesafe and
acurate https://stackoverflow.com/questions/36095323/what-is-the-difference-between-chrono-and-ctime
but, it does not have parsing and formatting for human readable time.
It will get that in c++20, but that's a little too late for us :(
So for now, conversion to/from ctime objects it is....
*/ */
class Park_time { class Park_time {
@ -64,7 +69,7 @@ class Park_time {
int start_to_int(); // helper int start_to_int(); // helper
}; };
// test funciton // function that slowly outputs each character one by one
void Wait(int sec); void text_animation(const string& text, unsigned int pause_time);
#endif // Park_time #endif // Park_time

View File

@ -3,7 +3,9 @@
#pragma once #pragma once
#include "Park_spot.h" #include "Park_spot.h"
#include "Admin.h"
#include <iomanip>
using std::pair;
/*these are the functions that search the database and create objects from it. /*these are the functions that search the database and create objects from it.
@ -11,54 +13,30 @@ query_parktimes_for_customer searches for the parktimes that are needed in
customer initialisaiton. generally, i see no use outside of that. customer initialisaiton. generally, i see no use outside of that.
query_customer_with_name searches for customer data by name. query_customer_with_name searches for customer data by name.
NOTE: query_customer_with_name has been removed, nothing is using it
query_customer_with_id does what the above does, but with id. query_customer_with_id does what the above does, but with id.
query_parkspot_with_id does what the above do, but with a vector and not to the db.
populate_spots is used to query for all the park_spots and return them as populate_spots is used to query for all the park_spots in db and return them in a vector.
objects. We can keep that in memory to reduce calls to the db, but increasing the memory footprint of this
program
The design desision to use vector<T> instead of <T> is for the following reports_from_x functions query the db for parktimes with various conditions
reasons: current_status_parkspots takes in a vector and outputs the status of them
1. some of these can potentially return more than one object. For example, 2
customers who have the same name.
2. I have no clue how many of you have done error handling in c++
(try/catch/finally).
I dont want to bombard you with more new concepts than needed.
so now you'd do
vector<Customer> test = query_customer_with_name("Testman");
if (!test.size()) {print no customers found, do stuff}
else if (test.size() > 1) { do stuff to get the right one if you only need one
}
instead of
try {
customer test = query_customer_with_name("Testman");
}
catch(someException.probablycalled_not_found) {do_Stuff};
catch(...) {
do stuff
}
finally{
do more stuff
}
*/ */
vector<Park_time> query_parktimes_for_customer(int cid); vector<Park_time> query_parktimes_for_customer(int cid);
vector<Customer> query_customer_with_name(string name);
Customer query_customer_with_id(int id); Customer query_customer_with_id(int id);
Park_spot query_parkspot_with_id(int id, vector<Park_spot>& parkspots);
Admin query_admin_with_id(int id); int query_role_customer(int id);
vector<Park_spot> populate_spots(); vector<Park_spot> populate_spots();
Park_spot query_parkspot_with_id(int id, vector<Park_spot>& parkspots);
void reports_from_parkspot(int spotid, bool weekly = false); void reports_from_parkspot(int spotid, pair<int, int> period);
void reports_from_allparkspots(bool weekly = false); void reports_from_allparkspots(pair<int, int> period);
void current_status_parkspots(vector<Park_spot>& spots); void current_status_parkspots(vector<Park_spot>& spots);
vector<Park_time> reports_from_customer(int cid, pair<int, int> period);
#endif // CUSTOMER_H #endif // CUSTOMER_H

View File

@ -9,7 +9,10 @@ namespace data {
/* /*
start_db is the function that opens the database, and start_db is the function that opens the database, and
if the necesary tables are not there, creates them. if the necesary tables are not there, creates them.
db is the database, and is static to avoid multiple redefinition errors. db is the database, and is static to avoid multiple redefinition errors,
because multiple cpp files import this header.
TODO: remove this namespace, we didn't add more functions here like originally planned.
*/ */
SQLite::Database start_db(); SQLite::Database start_db();
static SQLite::Database db = start_db(); static SQLite::Database db = start_db();

View File

@ -10,11 +10,14 @@
using std::string; using std::string;
/* /*
hash_password takes the password, and encrypts it. This needs to be done, hash_password takes the password, and encrypts it. This needs to be done,
because storing passwords in plaintext is BAD! because storing passwords in plaintext is BAD, no matter if it's just for a school project!
verify_password takes in a password and the hashed password, and then does magic encryption verify_password takes in a password and the hashed password, and then does magic encryption
stuff(no, not really. It basically hashes the password with the same salt and other parameters) and stuff(no, not really. It basically hashes the password with the same salt and other parameters, but
to see if the password stored and the given password match. that's not that important to know) and to see if the password stored and the given password match.
call these whenever you are working with passwords.
so to check if passwords match, use something like verifypassword(customer.password,
someplainpassword) see libsodium documentation for more info
*/ */
string hash_password(string password); string hash_password(string password);

View File

@ -1,5 +1,5 @@
#include "headers/Interface.h" #include "headers/Interface.h"
#include "headers/Admin.h"
/* /*
Code structure is like this: Code structure is like this:
@ -8,10 +8,10 @@ verify passwords
2. data.cpp and /header/data.h contain the code to start up the database. 2. data.cpp and /header/data.h contain the code to start up the database.
Originally, they were supposed to contain all the functions to save to the Originally, they were supposed to contain all the functions to save to the
database and query from the database. I had trouble doing that, (cyclical database and query from the database. But there were issues, and we did stuff
includes) and some other issues. the other issues are gone due to the latest in the meantime. Most of the original problems that prevented
refactor, but to make it like my original plan is going to take a few hours, and that are fixed with the latest refactor, but it would take a bit of time to
I have done too much already to want to do more work unless needed. place the functions there and test that they do what they do.
The functions to save to a database have been integrated in the classes The functions to save to a database have been integrated in the classes
themself, and unless issues arrise from that I'm not changing that. Functions to themself, and unless issues arrise from that I'm not changing that. Functions to
get objects from the database are in Query.cpp en header. get objects from the database are in Query.cpp en header.
@ -35,9 +35,13 @@ namesake.
Cointain functions that search the database and return objects(P_time, P_spot, Cointain functions that search the database and return objects(P_time, P_spot,
Customer) It is the least tested of the whole project, use with care. Customer) It is the least tested of the whole project, use with care.
7.Interface.cpp and header
contain all the functions needed to have an interface that's seen when the program is
running.
Explanation of what members do of P_time, P_spot, Customer are in the respective Explanation of what members do of P_time, P_spot, Customer are in the respective
headers. Explanations of how the member functions work(Or how I intended for headers. Explanations of how the member functions work(Or how we intended for
them to work) are in the respective .cpp files. void Wait(int sec) them to work) are in the respective .cpp files.
*/ */
static vector<Park_spot> parking_spots = populate_spots(); static vector<Park_spot> parking_spots = populate_spots();
@ -45,11 +49,10 @@ static vector<Park_spot> parking_spots = populate_spots();
static vector<Customer> park_customers; static vector<Customer> park_customers;
int main() { int main() {
// state of db:
// er zijn 5 parkspots, 2 met 2weeler en 4 met 4weeler while (true) {
// er zijn customers met password "password" interface(parking_spots);
// er is een admin id=1 met password PASSWORD }
interface(parking_spots);
} }
/* /*
@ -57,6 +60,7 @@ Why is this not in query.cpp? Because somehow, it errors out when it's there.
The error message indicates it is a memory issue but I suspect it's a The error message indicates it is a memory issue but I suspect it's a
concurrency issue. Do not move this. concurrency issue. Do not move this.
*/ */
vector<Park_spot> populate_spots() { vector<Park_spot> populate_spots() {
vector<Park_spot> spots; vector<Park_spot> spots;
SQLite::Statement query(data::db, "SELECT * FROM Park_spot WHERE id > 0;"); SQLite::Statement query(data::db, "SELECT * FROM Park_spot WHERE id > 0;");
@ -68,4 +72,4 @@ vector<Park_spot> populate_spots() {
spots.push_back({id, taken, cid, vtype}); spots.push_back({id, taken, cid, vtype});
} }
return spots; return spots;
} }

5
newParkManne.cpp Normal file
View File

@ -0,0 +1,5 @@
#include <iostream>
void say_hello(){
std::cout << "Hello, from newParkManne!\n";
}

Binary file not shown.

View File

@ -12,13 +12,14 @@ Or click the build icon in vscode *shrugs*
# Parkmanne # Parkmanne
## A stroll in the park ## A stroll in the park
#TODO ######TO-DO List:
1. fix password of admin(probably buffer of input cusing the problem) - [x] Admin login
2. add adress to customer - [x] Billing report menu
3. billing - [x] Report from a specific month i.e. january
4. delete/edit admin - [x] Edit option in menu
- [x] Option to confirm edit after input
- [x] Divide menu in sub menus
- [x] Analytics of customer (e.g. # customers with 2-wheeler or list of customer and telephone numbers etc.)
This is a graph of how everything is connected. This is a graph of how everything is connected.
If you need to add functionality that doesn't fall in any of these, and you're unsure of what to include, you can decide something like this: If you need to add functionality that doesn't fall in any of these, and you're unsure of what to include, you can decide something like this:
@ -36,5 +37,5 @@ Since customer also includes data, i don't have to include it again.
Last example: Last example:
![header includes](graph.png) ![header includes](graph.svg)

BIN
test.db3

Binary file not shown.

View File

@ -1,395 +1,396 @@
# CMAKE generated file: DO NOT EDIT! # CMAKE generated file: DO NOT EDIT!
# Generated by "MinGW Makefiles" Generator, CMake Version 3.14 # Generated by "Unix Makefiles" Generator, CMake Version 3.10
# Default target executed when no arguments are given to make. # Default target executed when no arguments are given to make.
default_target: all default_target: all
.PHONY : default_target .PHONY : default_target
# Allow only one "make -f Makefile2" at a time, but pass parallelism. # Allow only one "make -f Makefile2" at a time, but pass parallelism.
.NOTPARALLEL: .NOTPARALLEL:
#============================================================================= #=============================================================================
# Special targets provided by cmake. # Special targets provided by cmake.
# Disable implicit rules so canonical targets will work. # Disable implicit rules so canonical targets will work.
.SUFFIXES: .SUFFIXES:
# Remove some rules from gmake that .SUFFIXES does not remove. # Remove some rules from gmake that .SUFFIXES does not remove.
SUFFIXES = SUFFIXES =
.SUFFIXES: .hpux_make_needs_suffix_list .SUFFIXES: .hpux_make_needs_suffix_list
# Suppress display of executed commands. # Suppress display of executed commands.
$(VERBOSE).SILENT: $(VERBOSE).SILENT:
# A target that is always out of date. # A target that is always out of date.
cmake_force: cmake_force:
.PHONY : cmake_force .PHONY : cmake_force
#============================================================================= #=============================================================================
# Set environment variables for the build. # Set environment variables for the build.
SHELL = cmd.exe # The shell in which to execute make rules.
SHELL = /bin/sh
# The CMake executable.
CMAKE_COMMAND = C:\MSYS\mingw64\bin\cmake.exe # The CMake executable.
CMAKE_COMMAND = /usr/bin/cmake
# The command to remove a file.
RM = C:\MSYS\mingw64\bin\cmake.exe -E remove -f # The command to remove a file.
RM = /usr/bin/cmake -E remove -f
# Escaping for special characters.
EQUALS = = # Escaping for special characters.
EQUALS = =
# The top-level source directory on which CMake was run.
CMAKE_SOURCE_DIR = C:\Users\MassiveAtoms\Documents\C++\Parkmanne # The top-level source directory on which CMake was run.
CMAKE_SOURCE_DIR = /home/pyrostefan/Documents/Parkmanne/Parkmanne
# The top-level build directory on which CMake was run.
CMAKE_BINARY_DIR = C:\Users\MassiveAtoms\Documents\C++\Parkmanne # The top-level build directory on which CMake was run.
CMAKE_BINARY_DIR = /home/pyrostefan/Documents/Parkmanne/Parkmanne
#=============================================================================
# Targets provided globally by CMake. #=============================================================================
# Targets provided globally by CMake.
# Special rule for the target install/strip
install/strip: preinstall # Special rule for the target install/strip
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing the project stripped..." install/strip: preinstall
C:\MSYS\mingw64\bin\cmake.exe -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing the project stripped..."
.PHONY : install/strip /usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake
.PHONY : install/strip
# Special rule for the target install/strip
install/strip/fast: preinstall/fast # Special rule for the target install/strip
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing the project stripped..." install/strip/fast: preinstall/fast
C:\MSYS\mingw64\bin\cmake.exe -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing the project stripped..."
.PHONY : install/strip/fast /usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake
.PHONY : install/strip/fast
# Special rule for the target install/local
install/local: preinstall # Special rule for the target install/local
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing only the local directory..." install/local: preinstall
C:\MSYS\mingw64\bin\cmake.exe -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing only the local directory..."
.PHONY : install/local /usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake
.PHONY : install/local
# Special rule for the target install/local
install/local/fast: preinstall/fast # Special rule for the target install/local
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing only the local directory..." install/local/fast: preinstall/fast
C:\MSYS\mingw64\bin\cmake.exe -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing only the local directory..."
.PHONY : install/local/fast /usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake
.PHONY : install/local/fast
# Special rule for the target edit_cache
edit_cache: # Special rule for the target edit_cache
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake cache editor..." edit_cache:
C:\MSYS\mingw64\bin\cmake-gui.exe -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "No interactive CMake dialog available..."
.PHONY : edit_cache /usr/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available.
.PHONY : edit_cache
# Special rule for the target edit_cache
edit_cache/fast: edit_cache # Special rule for the target edit_cache
edit_cache/fast: edit_cache
.PHONY : edit_cache/fast
.PHONY : edit_cache/fast
# Special rule for the target rebuild_cache
rebuild_cache: # Special rule for the target rebuild_cache
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake to regenerate build system..." rebuild_cache:
C:\MSYS\mingw64\bin\cmake.exe -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake to regenerate build system..."
.PHONY : rebuild_cache /usr/bin/cmake -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
.PHONY : rebuild_cache
# Special rule for the target rebuild_cache
rebuild_cache/fast: rebuild_cache # Special rule for the target rebuild_cache
rebuild_cache/fast: rebuild_cache
.PHONY : rebuild_cache/fast
.PHONY : rebuild_cache/fast
# Special rule for the target list_install_components
list_install_components: # Special rule for the target list_install_components
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Available install components are: \"headers\" \"libraries\"" list_install_components:
.PHONY : list_install_components @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Available install components are: \"headers\" \"libraries\""
.PHONY : list_install_components
# Special rule for the target list_install_components
list_install_components/fast: list_install_components # Special rule for the target list_install_components
list_install_components/fast: list_install_components
.PHONY : list_install_components/fast
.PHONY : list_install_components/fast
# Special rule for the target install
install: preinstall # Special rule for the target install
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..." install: preinstall
C:\MSYS\mingw64\bin\cmake.exe -P cmake_install.cmake @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..."
.PHONY : install /usr/bin/cmake -P cmake_install.cmake
.PHONY : install
# Special rule for the target install
install/fast: preinstall/fast # Special rule for the target install
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..." install/fast: preinstall/fast
C:\MSYS\mingw64\bin\cmake.exe -P cmake_install.cmake @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..."
.PHONY : install/fast /usr/bin/cmake -P cmake_install.cmake
.PHONY : install/fast
# The main all target
all: cmake_check_build_system # The main all target
cd /d C:\Users\MassiveAtoms\Documents\C++\Parkmanne && $(CMAKE_COMMAND) -E cmake_progress_start C:\Users\MassiveAtoms\Documents\C++\Parkmanne\CMakeFiles C:\Users\MassiveAtoms\Documents\C++\Parkmanne\thirdparty\SQLiteCpp\CMakeFiles\progress.marks all: cmake_check_build_system
cd /d C:\Users\MassiveAtoms\Documents\C++\Parkmanne && $(MAKE) -f CMakeFiles\Makefile2 thirdparty/SQLiteCpp/all cd /home/pyrostefan/Documents/Parkmanne/Parkmanne && $(CMAKE_COMMAND) -E cmake_progress_start /home/pyrostefan/Documents/Parkmanne/Parkmanne/CMakeFiles /home/pyrostefan/Documents/Parkmanne/Parkmanne/thirdparty/SQLiteCpp/CMakeFiles/progress.marks
$(CMAKE_COMMAND) -E cmake_progress_start C:\Users\MassiveAtoms\Documents\C++\Parkmanne\CMakeFiles 0 cd /home/pyrostefan/Documents/Parkmanne/Parkmanne && $(MAKE) -f CMakeFiles/Makefile2 thirdparty/SQLiteCpp/all
.PHONY : all $(CMAKE_COMMAND) -E cmake_progress_start /home/pyrostefan/Documents/Parkmanne/Parkmanne/CMakeFiles 0
.PHONY : all
# The main clean target
clean: # The main clean target
cd /d C:\Users\MassiveAtoms\Documents\C++\Parkmanne && $(MAKE) -f CMakeFiles\Makefile2 thirdparty/SQLiteCpp/clean clean:
.PHONY : clean cd /home/pyrostefan/Documents/Parkmanne/Parkmanne && $(MAKE) -f CMakeFiles/Makefile2 thirdparty/SQLiteCpp/clean
.PHONY : clean
# The main clean target
clean/fast: clean # The main clean target
clean/fast: clean
.PHONY : clean/fast
.PHONY : clean/fast
# Prepare targets for installation.
preinstall: all # Prepare targets for installation.
cd /d C:\Users\MassiveAtoms\Documents\C++\Parkmanne && $(MAKE) -f CMakeFiles\Makefile2 thirdparty/SQLiteCpp/preinstall preinstall: all
.PHONY : preinstall cd /home/pyrostefan/Documents/Parkmanne/Parkmanne && $(MAKE) -f CMakeFiles/Makefile2 thirdparty/SQLiteCpp/preinstall
.PHONY : preinstall
# Prepare targets for installation.
preinstall/fast: # Prepare targets for installation.
cd /d C:\Users\MassiveAtoms\Documents\C++\Parkmanne && $(MAKE) -f CMakeFiles\Makefile2 thirdparty/SQLiteCpp/preinstall preinstall/fast:
.PHONY : preinstall/fast cd /home/pyrostefan/Documents/Parkmanne/Parkmanne && $(MAKE) -f CMakeFiles/Makefile2 thirdparty/SQLiteCpp/preinstall
.PHONY : preinstall/fast
# clear depends
depend: # clear depends
cd /d C:\Users\MassiveAtoms\Documents\C++\Parkmanne && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles\Makefile.cmake 1 depend:
.PHONY : depend cd /home/pyrostefan/Documents/Parkmanne/Parkmanne && $(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1
.PHONY : depend
# Convenience name for target.
thirdparty/SQLiteCpp/CMakeFiles/SQLiteCpp_cpplint.dir/rule: # Convenience name for target.
cd /d C:\Users\MassiveAtoms\Documents\C++\Parkmanne && $(MAKE) -f CMakeFiles\Makefile2 thirdparty/SQLiteCpp/CMakeFiles/SQLiteCpp_cpplint.dir/rule thirdparty/SQLiteCpp/CMakeFiles/SQLiteCpp_cpplint.dir/rule:
.PHONY : thirdparty/SQLiteCpp/CMakeFiles/SQLiteCpp_cpplint.dir/rule cd /home/pyrostefan/Documents/Parkmanne/Parkmanne && $(MAKE) -f CMakeFiles/Makefile2 thirdparty/SQLiteCpp/CMakeFiles/SQLiteCpp_cpplint.dir/rule
.PHONY : thirdparty/SQLiteCpp/CMakeFiles/SQLiteCpp_cpplint.dir/rule
# Convenience name for target.
SQLiteCpp_cpplint: thirdparty/SQLiteCpp/CMakeFiles/SQLiteCpp_cpplint.dir/rule # Convenience name for target.
SQLiteCpp_cpplint: thirdparty/SQLiteCpp/CMakeFiles/SQLiteCpp_cpplint.dir/rule
.PHONY : SQLiteCpp_cpplint
.PHONY : SQLiteCpp_cpplint
# fast build rule for target.
SQLiteCpp_cpplint/fast: # fast build rule for target.
cd /d C:\Users\MassiveAtoms\Documents\C++\Parkmanne && $(MAKE) -f thirdparty\SQLiteCpp\CMakeFiles\SQLiteCpp_cpplint.dir\build.make thirdparty/SQLiteCpp/CMakeFiles/SQLiteCpp_cpplint.dir/build SQLiteCpp_cpplint/fast:
.PHONY : SQLiteCpp_cpplint/fast cd /home/pyrostefan/Documents/Parkmanne/Parkmanne && $(MAKE) -f thirdparty/SQLiteCpp/CMakeFiles/SQLiteCpp_cpplint.dir/build.make thirdparty/SQLiteCpp/CMakeFiles/SQLiteCpp_cpplint.dir/build
.PHONY : SQLiteCpp_cpplint/fast
# Convenience name for target.
thirdparty/SQLiteCpp/CMakeFiles/SQLiteCpp.dir/rule: # Convenience name for target.
cd /d C:\Users\MassiveAtoms\Documents\C++\Parkmanne && $(MAKE) -f CMakeFiles\Makefile2 thirdparty/SQLiteCpp/CMakeFiles/SQLiteCpp.dir/rule thirdparty/SQLiteCpp/CMakeFiles/SQLiteCpp.dir/rule:
.PHONY : thirdparty/SQLiteCpp/CMakeFiles/SQLiteCpp.dir/rule cd /home/pyrostefan/Documents/Parkmanne/Parkmanne && $(MAKE) -f CMakeFiles/Makefile2 thirdparty/SQLiteCpp/CMakeFiles/SQLiteCpp.dir/rule
.PHONY : thirdparty/SQLiteCpp/CMakeFiles/SQLiteCpp.dir/rule
# Convenience name for target.
SQLiteCpp: thirdparty/SQLiteCpp/CMakeFiles/SQLiteCpp.dir/rule # Convenience name for target.
SQLiteCpp: thirdparty/SQLiteCpp/CMakeFiles/SQLiteCpp.dir/rule
.PHONY : SQLiteCpp
.PHONY : SQLiteCpp
# fast build rule for target.
SQLiteCpp/fast: # fast build rule for target.
cd /d C:\Users\MassiveAtoms\Documents\C++\Parkmanne && $(MAKE) -f thirdparty\SQLiteCpp\CMakeFiles\SQLiteCpp.dir\build.make thirdparty/SQLiteCpp/CMakeFiles/SQLiteCpp.dir/build SQLiteCpp/fast:
.PHONY : SQLiteCpp/fast cd /home/pyrostefan/Documents/Parkmanne/Parkmanne && $(MAKE) -f thirdparty/SQLiteCpp/CMakeFiles/SQLiteCpp.dir/build.make thirdparty/SQLiteCpp/CMakeFiles/SQLiteCpp.dir/build
.PHONY : SQLiteCpp/fast
src/Backup.obj: src/Backup.cpp.obj
src/Backup.o: src/Backup.cpp.o
.PHONY : src/Backup.obj
.PHONY : src/Backup.o
# target to build an object file
src/Backup.cpp.obj: # target to build an object file
cd /d C:\Users\MassiveAtoms\Documents\C++\Parkmanne && $(MAKE) -f thirdparty\SQLiteCpp\CMakeFiles\SQLiteCpp.dir\build.make thirdparty/SQLiteCpp/CMakeFiles/SQLiteCpp.dir/src/Backup.cpp.obj src/Backup.cpp.o:
.PHONY : src/Backup.cpp.obj cd /home/pyrostefan/Documents/Parkmanne/Parkmanne && $(MAKE) -f thirdparty/SQLiteCpp/CMakeFiles/SQLiteCpp.dir/build.make thirdparty/SQLiteCpp/CMakeFiles/SQLiteCpp.dir/src/Backup.cpp.o
.PHONY : src/Backup.cpp.o
src/Backup.i: src/Backup.cpp.i
src/Backup.i: src/Backup.cpp.i
.PHONY : src/Backup.i
.PHONY : src/Backup.i
# target to preprocess a source file
src/Backup.cpp.i: # target to preprocess a source file
cd /d C:\Users\MassiveAtoms\Documents\C++\Parkmanne && $(MAKE) -f thirdparty\SQLiteCpp\CMakeFiles\SQLiteCpp.dir\build.make thirdparty/SQLiteCpp/CMakeFiles/SQLiteCpp.dir/src/Backup.cpp.i src/Backup.cpp.i:
.PHONY : src/Backup.cpp.i cd /home/pyrostefan/Documents/Parkmanne/Parkmanne && $(MAKE) -f thirdparty/SQLiteCpp/CMakeFiles/SQLiteCpp.dir/build.make thirdparty/SQLiteCpp/CMakeFiles/SQLiteCpp.dir/src/Backup.cpp.i
.PHONY : src/Backup.cpp.i
src/Backup.s: src/Backup.cpp.s
src/Backup.s: src/Backup.cpp.s
.PHONY : src/Backup.s
.PHONY : src/Backup.s
# target to generate assembly for a file
src/Backup.cpp.s: # target to generate assembly for a file
cd /d C:\Users\MassiveAtoms\Documents\C++\Parkmanne && $(MAKE) -f thirdparty\SQLiteCpp\CMakeFiles\SQLiteCpp.dir\build.make thirdparty/SQLiteCpp/CMakeFiles/SQLiteCpp.dir/src/Backup.cpp.s src/Backup.cpp.s:
.PHONY : src/Backup.cpp.s cd /home/pyrostefan/Documents/Parkmanne/Parkmanne && $(MAKE) -f thirdparty/SQLiteCpp/CMakeFiles/SQLiteCpp.dir/build.make thirdparty/SQLiteCpp/CMakeFiles/SQLiteCpp.dir/src/Backup.cpp.s
.PHONY : src/Backup.cpp.s
src/Column.obj: src/Column.cpp.obj
src/Column.o: src/Column.cpp.o
.PHONY : src/Column.obj
.PHONY : src/Column.o
# target to build an object file
src/Column.cpp.obj: # target to build an object file
cd /d C:\Users\MassiveAtoms\Documents\C++\Parkmanne && $(MAKE) -f thirdparty\SQLiteCpp\CMakeFiles\SQLiteCpp.dir\build.make thirdparty/SQLiteCpp/CMakeFiles/SQLiteCpp.dir/src/Column.cpp.obj src/Column.cpp.o:
.PHONY : src/Column.cpp.obj cd /home/pyrostefan/Documents/Parkmanne/Parkmanne && $(MAKE) -f thirdparty/SQLiteCpp/CMakeFiles/SQLiteCpp.dir/build.make thirdparty/SQLiteCpp/CMakeFiles/SQLiteCpp.dir/src/Column.cpp.o
.PHONY : src/Column.cpp.o
src/Column.i: src/Column.cpp.i
src/Column.i: src/Column.cpp.i
.PHONY : src/Column.i
.PHONY : src/Column.i
# target to preprocess a source file
src/Column.cpp.i: # target to preprocess a source file
cd /d C:\Users\MassiveAtoms\Documents\C++\Parkmanne && $(MAKE) -f thirdparty\SQLiteCpp\CMakeFiles\SQLiteCpp.dir\build.make thirdparty/SQLiteCpp/CMakeFiles/SQLiteCpp.dir/src/Column.cpp.i src/Column.cpp.i:
.PHONY : src/Column.cpp.i cd /home/pyrostefan/Documents/Parkmanne/Parkmanne && $(MAKE) -f thirdparty/SQLiteCpp/CMakeFiles/SQLiteCpp.dir/build.make thirdparty/SQLiteCpp/CMakeFiles/SQLiteCpp.dir/src/Column.cpp.i
.PHONY : src/Column.cpp.i
src/Column.s: src/Column.cpp.s
src/Column.s: src/Column.cpp.s
.PHONY : src/Column.s
.PHONY : src/Column.s
# target to generate assembly for a file
src/Column.cpp.s: # target to generate assembly for a file
cd /d C:\Users\MassiveAtoms\Documents\C++\Parkmanne && $(MAKE) -f thirdparty\SQLiteCpp\CMakeFiles\SQLiteCpp.dir\build.make thirdparty/SQLiteCpp/CMakeFiles/SQLiteCpp.dir/src/Column.cpp.s src/Column.cpp.s:
.PHONY : src/Column.cpp.s cd /home/pyrostefan/Documents/Parkmanne/Parkmanne && $(MAKE) -f thirdparty/SQLiteCpp/CMakeFiles/SQLiteCpp.dir/build.make thirdparty/SQLiteCpp/CMakeFiles/SQLiteCpp.dir/src/Column.cpp.s
.PHONY : src/Column.cpp.s
src/Database.obj: src/Database.cpp.obj
src/Database.o: src/Database.cpp.o
.PHONY : src/Database.obj
.PHONY : src/Database.o
# target to build an object file
src/Database.cpp.obj: # target to build an object file
cd /d C:\Users\MassiveAtoms\Documents\C++\Parkmanne && $(MAKE) -f thirdparty\SQLiteCpp\CMakeFiles\SQLiteCpp.dir\build.make thirdparty/SQLiteCpp/CMakeFiles/SQLiteCpp.dir/src/Database.cpp.obj src/Database.cpp.o:
.PHONY : src/Database.cpp.obj cd /home/pyrostefan/Documents/Parkmanne/Parkmanne && $(MAKE) -f thirdparty/SQLiteCpp/CMakeFiles/SQLiteCpp.dir/build.make thirdparty/SQLiteCpp/CMakeFiles/SQLiteCpp.dir/src/Database.cpp.o
.PHONY : src/Database.cpp.o
src/Database.i: src/Database.cpp.i
src/Database.i: src/Database.cpp.i
.PHONY : src/Database.i
.PHONY : src/Database.i
# target to preprocess a source file
src/Database.cpp.i: # target to preprocess a source file
cd /d C:\Users\MassiveAtoms\Documents\C++\Parkmanne && $(MAKE) -f thirdparty\SQLiteCpp\CMakeFiles\SQLiteCpp.dir\build.make thirdparty/SQLiteCpp/CMakeFiles/SQLiteCpp.dir/src/Database.cpp.i src/Database.cpp.i:
.PHONY : src/Database.cpp.i cd /home/pyrostefan/Documents/Parkmanne/Parkmanne && $(MAKE) -f thirdparty/SQLiteCpp/CMakeFiles/SQLiteCpp.dir/build.make thirdparty/SQLiteCpp/CMakeFiles/SQLiteCpp.dir/src/Database.cpp.i
.PHONY : src/Database.cpp.i
src/Database.s: src/Database.cpp.s
src/Database.s: src/Database.cpp.s
.PHONY : src/Database.s
.PHONY : src/Database.s
# target to generate assembly for a file
src/Database.cpp.s: # target to generate assembly for a file
cd /d C:\Users\MassiveAtoms\Documents\C++\Parkmanne && $(MAKE) -f thirdparty\SQLiteCpp\CMakeFiles\SQLiteCpp.dir\build.make thirdparty/SQLiteCpp/CMakeFiles/SQLiteCpp.dir/src/Database.cpp.s src/Database.cpp.s:
.PHONY : src/Database.cpp.s cd /home/pyrostefan/Documents/Parkmanne/Parkmanne && $(MAKE) -f thirdparty/SQLiteCpp/CMakeFiles/SQLiteCpp.dir/build.make thirdparty/SQLiteCpp/CMakeFiles/SQLiteCpp.dir/src/Database.cpp.s
.PHONY : src/Database.cpp.s
src/Exception.obj: src/Exception.cpp.obj
src/Exception.o: src/Exception.cpp.o
.PHONY : src/Exception.obj
.PHONY : src/Exception.o
# target to build an object file
src/Exception.cpp.obj: # target to build an object file
cd /d C:\Users\MassiveAtoms\Documents\C++\Parkmanne && $(MAKE) -f thirdparty\SQLiteCpp\CMakeFiles\SQLiteCpp.dir\build.make thirdparty/SQLiteCpp/CMakeFiles/SQLiteCpp.dir/src/Exception.cpp.obj src/Exception.cpp.o:
.PHONY : src/Exception.cpp.obj cd /home/pyrostefan/Documents/Parkmanne/Parkmanne && $(MAKE) -f thirdparty/SQLiteCpp/CMakeFiles/SQLiteCpp.dir/build.make thirdparty/SQLiteCpp/CMakeFiles/SQLiteCpp.dir/src/Exception.cpp.o
.PHONY : src/Exception.cpp.o
src/Exception.i: src/Exception.cpp.i
src/Exception.i: src/Exception.cpp.i
.PHONY : src/Exception.i
.PHONY : src/Exception.i
# target to preprocess a source file
src/Exception.cpp.i: # target to preprocess a source file
cd /d C:\Users\MassiveAtoms\Documents\C++\Parkmanne && $(MAKE) -f thirdparty\SQLiteCpp\CMakeFiles\SQLiteCpp.dir\build.make thirdparty/SQLiteCpp/CMakeFiles/SQLiteCpp.dir/src/Exception.cpp.i src/Exception.cpp.i:
.PHONY : src/Exception.cpp.i cd /home/pyrostefan/Documents/Parkmanne/Parkmanne && $(MAKE) -f thirdparty/SQLiteCpp/CMakeFiles/SQLiteCpp.dir/build.make thirdparty/SQLiteCpp/CMakeFiles/SQLiteCpp.dir/src/Exception.cpp.i
.PHONY : src/Exception.cpp.i
src/Exception.s: src/Exception.cpp.s
src/Exception.s: src/Exception.cpp.s
.PHONY : src/Exception.s
.PHONY : src/Exception.s
# target to generate assembly for a file
src/Exception.cpp.s: # target to generate assembly for a file
cd /d C:\Users\MassiveAtoms\Documents\C++\Parkmanne && $(MAKE) -f thirdparty\SQLiteCpp\CMakeFiles\SQLiteCpp.dir\build.make thirdparty/SQLiteCpp/CMakeFiles/SQLiteCpp.dir/src/Exception.cpp.s src/Exception.cpp.s:
.PHONY : src/Exception.cpp.s cd /home/pyrostefan/Documents/Parkmanne/Parkmanne && $(MAKE) -f thirdparty/SQLiteCpp/CMakeFiles/SQLiteCpp.dir/build.make thirdparty/SQLiteCpp/CMakeFiles/SQLiteCpp.dir/src/Exception.cpp.s
.PHONY : src/Exception.cpp.s
src/Statement.obj: src/Statement.cpp.obj
src/Statement.o: src/Statement.cpp.o
.PHONY : src/Statement.obj
.PHONY : src/Statement.o
# target to build an object file
src/Statement.cpp.obj: # target to build an object file
cd /d C:\Users\MassiveAtoms\Documents\C++\Parkmanne && $(MAKE) -f thirdparty\SQLiteCpp\CMakeFiles\SQLiteCpp.dir\build.make thirdparty/SQLiteCpp/CMakeFiles/SQLiteCpp.dir/src/Statement.cpp.obj src/Statement.cpp.o:
.PHONY : src/Statement.cpp.obj cd /home/pyrostefan/Documents/Parkmanne/Parkmanne && $(MAKE) -f thirdparty/SQLiteCpp/CMakeFiles/SQLiteCpp.dir/build.make thirdparty/SQLiteCpp/CMakeFiles/SQLiteCpp.dir/src/Statement.cpp.o
.PHONY : src/Statement.cpp.o
src/Statement.i: src/Statement.cpp.i
src/Statement.i: src/Statement.cpp.i
.PHONY : src/Statement.i
.PHONY : src/Statement.i
# target to preprocess a source file
src/Statement.cpp.i: # target to preprocess a source file
cd /d C:\Users\MassiveAtoms\Documents\C++\Parkmanne && $(MAKE) -f thirdparty\SQLiteCpp\CMakeFiles\SQLiteCpp.dir\build.make thirdparty/SQLiteCpp/CMakeFiles/SQLiteCpp.dir/src/Statement.cpp.i src/Statement.cpp.i:
.PHONY : src/Statement.cpp.i cd /home/pyrostefan/Documents/Parkmanne/Parkmanne && $(MAKE) -f thirdparty/SQLiteCpp/CMakeFiles/SQLiteCpp.dir/build.make thirdparty/SQLiteCpp/CMakeFiles/SQLiteCpp.dir/src/Statement.cpp.i
.PHONY : src/Statement.cpp.i
src/Statement.s: src/Statement.cpp.s
src/Statement.s: src/Statement.cpp.s
.PHONY : src/Statement.s
.PHONY : src/Statement.s
# target to generate assembly for a file
src/Statement.cpp.s: # target to generate assembly for a file
cd /d C:\Users\MassiveAtoms\Documents\C++\Parkmanne && $(MAKE) -f thirdparty\SQLiteCpp\CMakeFiles\SQLiteCpp.dir\build.make thirdparty/SQLiteCpp/CMakeFiles/SQLiteCpp.dir/src/Statement.cpp.s src/Statement.cpp.s:
.PHONY : src/Statement.cpp.s cd /home/pyrostefan/Documents/Parkmanne/Parkmanne && $(MAKE) -f thirdparty/SQLiteCpp/CMakeFiles/SQLiteCpp.dir/build.make thirdparty/SQLiteCpp/CMakeFiles/SQLiteCpp.dir/src/Statement.cpp.s
.PHONY : src/Statement.cpp.s
src/Transaction.obj: src/Transaction.cpp.obj
src/Transaction.o: src/Transaction.cpp.o
.PHONY : src/Transaction.obj
.PHONY : src/Transaction.o
# target to build an object file
src/Transaction.cpp.obj: # target to build an object file
cd /d C:\Users\MassiveAtoms\Documents\C++\Parkmanne && $(MAKE) -f thirdparty\SQLiteCpp\CMakeFiles\SQLiteCpp.dir\build.make thirdparty/SQLiteCpp/CMakeFiles/SQLiteCpp.dir/src/Transaction.cpp.obj src/Transaction.cpp.o:
.PHONY : src/Transaction.cpp.obj cd /home/pyrostefan/Documents/Parkmanne/Parkmanne && $(MAKE) -f thirdparty/SQLiteCpp/CMakeFiles/SQLiteCpp.dir/build.make thirdparty/SQLiteCpp/CMakeFiles/SQLiteCpp.dir/src/Transaction.cpp.o
.PHONY : src/Transaction.cpp.o
src/Transaction.i: src/Transaction.cpp.i
src/Transaction.i: src/Transaction.cpp.i
.PHONY : src/Transaction.i
.PHONY : src/Transaction.i
# target to preprocess a source file
src/Transaction.cpp.i: # target to preprocess a source file
cd /d C:\Users\MassiveAtoms\Documents\C++\Parkmanne && $(MAKE) -f thirdparty\SQLiteCpp\CMakeFiles\SQLiteCpp.dir\build.make thirdparty/SQLiteCpp/CMakeFiles/SQLiteCpp.dir/src/Transaction.cpp.i src/Transaction.cpp.i:
.PHONY : src/Transaction.cpp.i cd /home/pyrostefan/Documents/Parkmanne/Parkmanne && $(MAKE) -f thirdparty/SQLiteCpp/CMakeFiles/SQLiteCpp.dir/build.make thirdparty/SQLiteCpp/CMakeFiles/SQLiteCpp.dir/src/Transaction.cpp.i
.PHONY : src/Transaction.cpp.i
src/Transaction.s: src/Transaction.cpp.s
src/Transaction.s: src/Transaction.cpp.s
.PHONY : src/Transaction.s
.PHONY : src/Transaction.s
# target to generate assembly for a file
src/Transaction.cpp.s: # target to generate assembly for a file
cd /d C:\Users\MassiveAtoms\Documents\C++\Parkmanne && $(MAKE) -f thirdparty\SQLiteCpp\CMakeFiles\SQLiteCpp.dir\build.make thirdparty/SQLiteCpp/CMakeFiles/SQLiteCpp.dir/src/Transaction.cpp.s src/Transaction.cpp.s:
.PHONY : src/Transaction.cpp.s cd /home/pyrostefan/Documents/Parkmanne/Parkmanne && $(MAKE) -f thirdparty/SQLiteCpp/CMakeFiles/SQLiteCpp.dir/build.make thirdparty/SQLiteCpp/CMakeFiles/SQLiteCpp.dir/src/Transaction.cpp.s
.PHONY : src/Transaction.cpp.s
# Help Target
help: # Help Target
@echo The following are some of the valid targets for this Makefile: help:
@echo ... all (the default if no target is provided) @echo "The following are some of the valid targets for this Makefile:"
@echo ... clean @echo "... all (the default if no target is provided)"
@echo ... depend @echo "... clean"
@echo ... install/strip @echo "... depend"
@echo ... install/local @echo "... install/strip"
@echo ... SQLiteCpp_cpplint @echo "... install/local"
@echo ... SQLiteCpp @echo "... SQLiteCpp_cpplint"
@echo ... edit_cache @echo "... SQLiteCpp"
@echo ... rebuild_cache @echo "... edit_cache"
@echo ... list_install_components @echo "... rebuild_cache"
@echo ... install @echo "... list_install_components"
@echo ... src/Backup.obj @echo "... install"
@echo ... src/Backup.i @echo "... src/Backup.o"
@echo ... src/Backup.s @echo "... src/Backup.i"
@echo ... src/Column.obj @echo "... src/Backup.s"
@echo ... src/Column.i @echo "... src/Column.o"
@echo ... src/Column.s @echo "... src/Column.i"
@echo ... src/Database.obj @echo "... src/Column.s"
@echo ... src/Database.i @echo "... src/Database.o"
@echo ... src/Database.s @echo "... src/Database.i"
@echo ... src/Exception.obj @echo "... src/Database.s"
@echo ... src/Exception.i @echo "... src/Exception.o"
@echo ... src/Exception.s @echo "... src/Exception.i"
@echo ... src/Statement.obj @echo "... src/Exception.s"
@echo ... src/Statement.i @echo "... src/Statement.o"
@echo ... src/Statement.s @echo "... src/Statement.i"
@echo ... src/Transaction.obj @echo "... src/Statement.s"
@echo ... src/Transaction.i @echo "... src/Transaction.o"
@echo ... src/Transaction.s @echo "... src/Transaction.i"
.PHONY : help @echo "... src/Transaction.s"
.PHONY : help
#=============================================================================
# Special targets to cleanup operation of make. #=============================================================================
# Special targets to cleanup operation of make.
# Special rule to run CMake to check the build system integrity.
# No rule that depends on this can have commands that come from listfiles # Special rule to run CMake to check the build system integrity.
# because they might be regenerated. # No rule that depends on this can have commands that come from listfiles
cmake_check_build_system: # because they might be regenerated.
cd /d C:\Users\MassiveAtoms\Documents\C++\Parkmanne && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles\Makefile.cmake 0 cmake_check_build_system:
.PHONY : cmake_check_build_system cd /home/pyrostefan/Documents/Parkmanne/Parkmanne && $(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0
.PHONY : cmake_check_build_system

View File

@ -1,67 +1,72 @@
# Install script for directory: C:/Users/MassiveAtoms/Documents/C++/Parkmanne/thirdparty/SQLiteCpp # Install script for directory: /home/pyrostefan/Documents/Parkmanne/Parkmanne/thirdparty/SQLiteCpp
# Set the install prefix # Set the install prefix
if(NOT DEFINED CMAKE_INSTALL_PREFIX) if(NOT DEFINED CMAKE_INSTALL_PREFIX)
set(CMAKE_INSTALL_PREFIX "C:/Program Files (x86)/park") set(CMAKE_INSTALL_PREFIX "/usr/local")
endif() endif()
string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
# Set the install configuration name. # Set the install configuration name.
if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME)
if(BUILD_TYPE) if(BUILD_TYPE)
string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" string(REGEX REPLACE "^[^A-Za-z0-9_]+" ""
CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}")
else() else()
set(CMAKE_INSTALL_CONFIG_NAME "") set(CMAKE_INSTALL_CONFIG_NAME "")
endif() endif()
message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"")
endif() endif()
# Set the component getting installed. # Set the component getting installed.
if(NOT CMAKE_INSTALL_COMPONENT) if(NOT CMAKE_INSTALL_COMPONENT)
if(COMPONENT) if(COMPONENT)
message(STATUS "Install component: \"${COMPONENT}\"") message(STATUS "Install component: \"${COMPONENT}\"")
set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") set(CMAKE_INSTALL_COMPONENT "${COMPONENT}")
else() else()
set(CMAKE_INSTALL_COMPONENT) set(CMAKE_INSTALL_COMPONENT)
endif() endif()
endif() endif()
# Is this installation the result of a crosscompile? # Install shared libraries without execute permission?
if(NOT DEFINED CMAKE_CROSSCOMPILING) if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE)
set(CMAKE_CROSSCOMPILING "FALSE") set(CMAKE_INSTALL_SO_NO_EXE "1")
endif() endif()
if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xlibrariesx" OR NOT CMAKE_INSTALL_COMPONENT) # Is this installation the result of a crosscompile?
file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/lib" TYPE STATIC_LIBRARY FILES "C:/Users/MassiveAtoms/Documents/C++/Parkmanne/thirdparty/SQLiteCpp/libSQLiteCpp.a") if(NOT DEFINED CMAKE_CROSSCOMPILING)
endif() set(CMAKE_CROSSCOMPILING "FALSE")
endif()
if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xheadersx" OR NOT CMAKE_INSTALL_COMPONENT)
file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/include" TYPE DIRECTORY FILES "C:/Users/MassiveAtoms/Documents/C++/Parkmanne/thirdparty/SQLiteCpp/include/" FILES_MATCHING REGEX ".*\\.(hpp|h)$") if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xlibrariesx" OR NOT CMAKE_INSTALL_COMPONENT)
endif() file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/lib" TYPE STATIC_LIBRARY FILES "/home/pyrostefan/Documents/Parkmanne/Parkmanne/thirdparty/SQLiteCpp/libSQLiteCpp.a")
endif()
if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT)
if(EXISTS "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/cmake/SQLiteCpp/SQLiteCppConfig.cmake") if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xheadersx" OR NOT CMAKE_INSTALL_COMPONENT)
file(DIFFERENT EXPORT_FILE_CHANGED FILES file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/include" TYPE DIRECTORY FILES "/home/pyrostefan/Documents/Parkmanne/Parkmanne/thirdparty/SQLiteCpp/include/" FILES_MATCHING REGEX ".*\\.(hpp|h)$")
"$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/cmake/SQLiteCpp/SQLiteCppConfig.cmake" endif()
"C:/Users/MassiveAtoms/Documents/C++/Parkmanne/thirdparty/SQLiteCpp/CMakeFiles/Export/lib/cmake/SQLiteCpp/SQLiteCppConfig.cmake")
if(EXPORT_FILE_CHANGED) if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT)
file(GLOB OLD_CONFIG_FILES "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/cmake/SQLiteCpp/SQLiteCppConfig-*.cmake") if(EXISTS "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/cmake/SQLiteCpp/SQLiteCppConfig.cmake")
if(OLD_CONFIG_FILES) file(DIFFERENT EXPORT_FILE_CHANGED FILES
message(STATUS "Old export file \"$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/cmake/SQLiteCpp/SQLiteCppConfig.cmake\" will be replaced. Removing files [${OLD_CONFIG_FILES}].") "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/cmake/SQLiteCpp/SQLiteCppConfig.cmake"
file(REMOVE ${OLD_CONFIG_FILES}) "/home/pyrostefan/Documents/Parkmanne/Parkmanne/thirdparty/SQLiteCpp/CMakeFiles/Export/lib/cmake/SQLiteCpp/SQLiteCppConfig.cmake")
endif() if(EXPORT_FILE_CHANGED)
endif() file(GLOB OLD_CONFIG_FILES "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/cmake/SQLiteCpp/SQLiteCppConfig-*.cmake")
endif() if(OLD_CONFIG_FILES)
file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/cmake/SQLiteCpp" TYPE FILE FILES "C:/Users/MassiveAtoms/Documents/C++/Parkmanne/thirdparty/SQLiteCpp/CMakeFiles/Export/lib/cmake/SQLiteCpp/SQLiteCppConfig.cmake") message(STATUS "Old export file \"$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/cmake/SQLiteCpp/SQLiteCppConfig.cmake\" will be replaced. Removing files [${OLD_CONFIG_FILES}].")
if("${CMAKE_INSTALL_CONFIG_NAME}" MATCHES "^()$") file(REMOVE ${OLD_CONFIG_FILES})
file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/cmake/SQLiteCpp" TYPE FILE FILES "C:/Users/MassiveAtoms/Documents/C++/Parkmanne/thirdparty/SQLiteCpp/CMakeFiles/Export/lib/cmake/SQLiteCpp/SQLiteCppConfig-noconfig.cmake") endif()
endif() endif()
endif() endif()
file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/cmake/SQLiteCpp" TYPE FILE FILES "/home/pyrostefan/Documents/Parkmanne/Parkmanne/thirdparty/SQLiteCpp/CMakeFiles/Export/lib/cmake/SQLiteCpp/SQLiteCppConfig.cmake")
if(NOT CMAKE_INSTALL_LOCAL_ONLY) if("${CMAKE_INSTALL_CONFIG_NAME}" MATCHES "^()$")
# Include the install script for each subdirectory. file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/cmake/SQLiteCpp" TYPE FILE FILES "/home/pyrostefan/Documents/Parkmanne/Parkmanne/thirdparty/SQLiteCpp/CMakeFiles/Export/lib/cmake/SQLiteCpp/SQLiteCppConfig-noconfig.cmake")
include("C:/Users/MassiveAtoms/Documents/C++/Parkmanne/thirdparty/SQLiteCpp/sqlite3/cmake_install.cmake") endif()
endif()
endif()
if(NOT CMAKE_INSTALL_LOCAL_ONLY)
# Include the install script for each subdirectory.
include("/home/pyrostefan/Documents/Parkmanne/Parkmanne/thirdparty/SQLiteCpp/sqlite3/cmake_install.cmake")
endif()

View File

@ -1,229 +1,230 @@
# CMAKE generated file: DO NOT EDIT! # CMAKE generated file: DO NOT EDIT!
# Generated by "MinGW Makefiles" Generator, CMake Version 3.14 # Generated by "Unix Makefiles" Generator, CMake Version 3.10
# Default target executed when no arguments are given to make. # Default target executed when no arguments are given to make.
default_target: all default_target: all
.PHONY : default_target .PHONY : default_target
# Allow only one "make -f Makefile2" at a time, but pass parallelism. # Allow only one "make -f Makefile2" at a time, but pass parallelism.
.NOTPARALLEL: .NOTPARALLEL:
#============================================================================= #=============================================================================
# Special targets provided by cmake. # Special targets provided by cmake.
# Disable implicit rules so canonical targets will work. # Disable implicit rules so canonical targets will work.
.SUFFIXES: .SUFFIXES:
# Remove some rules from gmake that .SUFFIXES does not remove. # Remove some rules from gmake that .SUFFIXES does not remove.
SUFFIXES = SUFFIXES =
.SUFFIXES: .hpux_make_needs_suffix_list .SUFFIXES: .hpux_make_needs_suffix_list
# Suppress display of executed commands. # Suppress display of executed commands.
$(VERBOSE).SILENT: $(VERBOSE).SILENT:
# A target that is always out of date. # A target that is always out of date.
cmake_force: cmake_force:
.PHONY : cmake_force .PHONY : cmake_force
#============================================================================= #=============================================================================
# Set environment variables for the build. # Set environment variables for the build.
SHELL = cmd.exe # The shell in which to execute make rules.
SHELL = /bin/sh
# The CMake executable.
CMAKE_COMMAND = C:\MSYS\mingw64\bin\cmake.exe # The CMake executable.
CMAKE_COMMAND = /usr/bin/cmake
# The command to remove a file.
RM = C:\MSYS\mingw64\bin\cmake.exe -E remove -f # The command to remove a file.
RM = /usr/bin/cmake -E remove -f
# Escaping for special characters.
EQUALS = = # Escaping for special characters.
EQUALS = =
# The top-level source directory on which CMake was run.
CMAKE_SOURCE_DIR = C:\Users\MassiveAtoms\Documents\C++\Parkmanne # The top-level source directory on which CMake was run.
CMAKE_SOURCE_DIR = /home/pyrostefan/Documents/Parkmanne/Parkmanne
# The top-level build directory on which CMake was run.
CMAKE_BINARY_DIR = C:\Users\MassiveAtoms\Documents\C++\Parkmanne # The top-level build directory on which CMake was run.
CMAKE_BINARY_DIR = /home/pyrostefan/Documents/Parkmanne/Parkmanne
#=============================================================================
# Targets provided globally by CMake. #=============================================================================
# Targets provided globally by CMake.
# Special rule for the target install/strip
install/strip: preinstall # Special rule for the target install/strip
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing the project stripped..." install/strip: preinstall
C:\MSYS\mingw64\bin\cmake.exe -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing the project stripped..."
.PHONY : install/strip /usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake
.PHONY : install/strip
# Special rule for the target install/strip
install/strip/fast: preinstall/fast # Special rule for the target install/strip
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing the project stripped..." install/strip/fast: preinstall/fast
C:\MSYS\mingw64\bin\cmake.exe -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing the project stripped..."
.PHONY : install/strip/fast /usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake
.PHONY : install/strip/fast
# Special rule for the target edit_cache
edit_cache: # Special rule for the target edit_cache
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake cache editor..." edit_cache:
C:\MSYS\mingw64\bin\cmake-gui.exe -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "No interactive CMake dialog available..."
.PHONY : edit_cache /usr/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available.
.PHONY : edit_cache
# Special rule for the target edit_cache
edit_cache/fast: edit_cache # Special rule for the target edit_cache
edit_cache/fast: edit_cache
.PHONY : edit_cache/fast
.PHONY : edit_cache/fast
# Special rule for the target rebuild_cache
rebuild_cache: # Special rule for the target rebuild_cache
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake to regenerate build system..." rebuild_cache:
C:\MSYS\mingw64\bin\cmake.exe -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake to regenerate build system..."
.PHONY : rebuild_cache /usr/bin/cmake -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
.PHONY : rebuild_cache
# Special rule for the target rebuild_cache
rebuild_cache/fast: rebuild_cache # Special rule for the target rebuild_cache
rebuild_cache/fast: rebuild_cache
.PHONY : rebuild_cache/fast
.PHONY : rebuild_cache/fast
# Special rule for the target list_install_components
list_install_components: # Special rule for the target list_install_components
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Available install components are: \"headers\" \"libraries\"" list_install_components:
.PHONY : list_install_components @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Available install components are: \"headers\" \"libraries\""
.PHONY : list_install_components
# Special rule for the target list_install_components
list_install_components/fast: list_install_components # Special rule for the target list_install_components
list_install_components/fast: list_install_components
.PHONY : list_install_components/fast
.PHONY : list_install_components/fast
# Special rule for the target install/local
install/local: preinstall # Special rule for the target install/local
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing only the local directory..." install/local: preinstall
C:\MSYS\mingw64\bin\cmake.exe -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing only the local directory..."
.PHONY : install/local /usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake
.PHONY : install/local
# Special rule for the target install/local
install/local/fast: preinstall/fast # Special rule for the target install/local
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing only the local directory..." install/local/fast: preinstall/fast
C:\MSYS\mingw64\bin\cmake.exe -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing only the local directory..."
.PHONY : install/local/fast /usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake
.PHONY : install/local/fast
# Special rule for the target install
install: preinstall # Special rule for the target install
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..." install: preinstall
C:\MSYS\mingw64\bin\cmake.exe -P cmake_install.cmake @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..."
.PHONY : install /usr/bin/cmake -P cmake_install.cmake
.PHONY : install
# Special rule for the target install
install/fast: preinstall/fast # Special rule for the target install
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..." install/fast: preinstall/fast
C:\MSYS\mingw64\bin\cmake.exe -P cmake_install.cmake @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..."
.PHONY : install/fast /usr/bin/cmake -P cmake_install.cmake
.PHONY : install/fast
# The main all target
all: cmake_check_build_system # The main all target
cd /d C:\Users\MassiveAtoms\Documents\C++\Parkmanne && $(CMAKE_COMMAND) -E cmake_progress_start C:\Users\MassiveAtoms\Documents\C++\Parkmanne\CMakeFiles C:\Users\MassiveAtoms\Documents\C++\Parkmanne\thirdparty\SQLiteCpp\sqlite3\CMakeFiles\progress.marks all: cmake_check_build_system
cd /d C:\Users\MassiveAtoms\Documents\C++\Parkmanne && $(MAKE) -f CMakeFiles\Makefile2 thirdparty/SQLiteCpp/sqlite3/all cd /home/pyrostefan/Documents/Parkmanne/Parkmanne && $(CMAKE_COMMAND) -E cmake_progress_start /home/pyrostefan/Documents/Parkmanne/Parkmanne/CMakeFiles /home/pyrostefan/Documents/Parkmanne/Parkmanne/thirdparty/SQLiteCpp/sqlite3/CMakeFiles/progress.marks
$(CMAKE_COMMAND) -E cmake_progress_start C:\Users\MassiveAtoms\Documents\C++\Parkmanne\CMakeFiles 0 cd /home/pyrostefan/Documents/Parkmanne/Parkmanne && $(MAKE) -f CMakeFiles/Makefile2 thirdparty/SQLiteCpp/sqlite3/all
.PHONY : all $(CMAKE_COMMAND) -E cmake_progress_start /home/pyrostefan/Documents/Parkmanne/Parkmanne/CMakeFiles 0
.PHONY : all
# The main clean target
clean: # The main clean target
cd /d C:\Users\MassiveAtoms\Documents\C++\Parkmanne && $(MAKE) -f CMakeFiles\Makefile2 thirdparty/SQLiteCpp/sqlite3/clean clean:
.PHONY : clean cd /home/pyrostefan/Documents/Parkmanne/Parkmanne && $(MAKE) -f CMakeFiles/Makefile2 thirdparty/SQLiteCpp/sqlite3/clean
.PHONY : clean
# The main clean target
clean/fast: clean # The main clean target
clean/fast: clean
.PHONY : clean/fast
.PHONY : clean/fast
# Prepare targets for installation.
preinstall: all # Prepare targets for installation.
cd /d C:\Users\MassiveAtoms\Documents\C++\Parkmanne && $(MAKE) -f CMakeFiles\Makefile2 thirdparty/SQLiteCpp/sqlite3/preinstall preinstall: all
.PHONY : preinstall cd /home/pyrostefan/Documents/Parkmanne/Parkmanne && $(MAKE) -f CMakeFiles/Makefile2 thirdparty/SQLiteCpp/sqlite3/preinstall
.PHONY : preinstall
# Prepare targets for installation.
preinstall/fast: # Prepare targets for installation.
cd /d C:\Users\MassiveAtoms\Documents\C++\Parkmanne && $(MAKE) -f CMakeFiles\Makefile2 thirdparty/SQLiteCpp/sqlite3/preinstall preinstall/fast:
.PHONY : preinstall/fast cd /home/pyrostefan/Documents/Parkmanne/Parkmanne && $(MAKE) -f CMakeFiles/Makefile2 thirdparty/SQLiteCpp/sqlite3/preinstall
.PHONY : preinstall/fast
# clear depends
depend: # clear depends
cd /d C:\Users\MassiveAtoms\Documents\C++\Parkmanne && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles\Makefile.cmake 1 depend:
.PHONY : depend cd /home/pyrostefan/Documents/Parkmanne/Parkmanne && $(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1
.PHONY : depend
# Convenience name for target.
thirdparty/SQLiteCpp/sqlite3/CMakeFiles/sqlite3.dir/rule: # Convenience name for target.
cd /d C:\Users\MassiveAtoms\Documents\C++\Parkmanne && $(MAKE) -f CMakeFiles\Makefile2 thirdparty/SQLiteCpp/sqlite3/CMakeFiles/sqlite3.dir/rule thirdparty/SQLiteCpp/sqlite3/CMakeFiles/sqlite3.dir/rule:
.PHONY : thirdparty/SQLiteCpp/sqlite3/CMakeFiles/sqlite3.dir/rule cd /home/pyrostefan/Documents/Parkmanne/Parkmanne && $(MAKE) -f CMakeFiles/Makefile2 thirdparty/SQLiteCpp/sqlite3/CMakeFiles/sqlite3.dir/rule
.PHONY : thirdparty/SQLiteCpp/sqlite3/CMakeFiles/sqlite3.dir/rule
# Convenience name for target.
sqlite3: thirdparty/SQLiteCpp/sqlite3/CMakeFiles/sqlite3.dir/rule # Convenience name for target.
sqlite3: thirdparty/SQLiteCpp/sqlite3/CMakeFiles/sqlite3.dir/rule
.PHONY : sqlite3
.PHONY : sqlite3
# fast build rule for target.
sqlite3/fast: # fast build rule for target.
cd /d C:\Users\MassiveAtoms\Documents\C++\Parkmanne && $(MAKE) -f thirdparty\SQLiteCpp\sqlite3\CMakeFiles\sqlite3.dir\build.make thirdparty/SQLiteCpp/sqlite3/CMakeFiles/sqlite3.dir/build sqlite3/fast:
.PHONY : sqlite3/fast cd /home/pyrostefan/Documents/Parkmanne/Parkmanne && $(MAKE) -f thirdparty/SQLiteCpp/sqlite3/CMakeFiles/sqlite3.dir/build.make thirdparty/SQLiteCpp/sqlite3/CMakeFiles/sqlite3.dir/build
.PHONY : sqlite3/fast
sqlite3.obj: sqlite3.c.obj
sqlite3.o: sqlite3.c.o
.PHONY : sqlite3.obj
.PHONY : sqlite3.o
# target to build an object file
sqlite3.c.obj: # target to build an object file
cd /d C:\Users\MassiveAtoms\Documents\C++\Parkmanne && $(MAKE) -f thirdparty\SQLiteCpp\sqlite3\CMakeFiles\sqlite3.dir\build.make thirdparty/SQLiteCpp/sqlite3/CMakeFiles/sqlite3.dir/sqlite3.c.obj sqlite3.c.o:
.PHONY : sqlite3.c.obj cd /home/pyrostefan/Documents/Parkmanne/Parkmanne && $(MAKE) -f thirdparty/SQLiteCpp/sqlite3/CMakeFiles/sqlite3.dir/build.make thirdparty/SQLiteCpp/sqlite3/CMakeFiles/sqlite3.dir/sqlite3.c.o
.PHONY : sqlite3.c.o
sqlite3.i: sqlite3.c.i
sqlite3.i: sqlite3.c.i
.PHONY : sqlite3.i
.PHONY : sqlite3.i
# target to preprocess a source file
sqlite3.c.i: # target to preprocess a source file
cd /d C:\Users\MassiveAtoms\Documents\C++\Parkmanne && $(MAKE) -f thirdparty\SQLiteCpp\sqlite3\CMakeFiles\sqlite3.dir\build.make thirdparty/SQLiteCpp/sqlite3/CMakeFiles/sqlite3.dir/sqlite3.c.i sqlite3.c.i:
.PHONY : sqlite3.c.i cd /home/pyrostefan/Documents/Parkmanne/Parkmanne && $(MAKE) -f thirdparty/SQLiteCpp/sqlite3/CMakeFiles/sqlite3.dir/build.make thirdparty/SQLiteCpp/sqlite3/CMakeFiles/sqlite3.dir/sqlite3.c.i
.PHONY : sqlite3.c.i
sqlite3.s: sqlite3.c.s
sqlite3.s: sqlite3.c.s
.PHONY : sqlite3.s
.PHONY : sqlite3.s
# target to generate assembly for a file
sqlite3.c.s: # target to generate assembly for a file
cd /d C:\Users\MassiveAtoms\Documents\C++\Parkmanne && $(MAKE) -f thirdparty\SQLiteCpp\sqlite3\CMakeFiles\sqlite3.dir\build.make thirdparty/SQLiteCpp/sqlite3/CMakeFiles/sqlite3.dir/sqlite3.c.s sqlite3.c.s:
.PHONY : sqlite3.c.s cd /home/pyrostefan/Documents/Parkmanne/Parkmanne && $(MAKE) -f thirdparty/SQLiteCpp/sqlite3/CMakeFiles/sqlite3.dir/build.make thirdparty/SQLiteCpp/sqlite3/CMakeFiles/sqlite3.dir/sqlite3.c.s
.PHONY : sqlite3.c.s
# Help Target
help: # Help Target
@echo The following are some of the valid targets for this Makefile: help:
@echo ... all (the default if no target is provided) @echo "The following are some of the valid targets for this Makefile:"
@echo ... clean @echo "... all (the default if no target is provided)"
@echo ... depend @echo "... clean"
@echo ... install/strip @echo "... depend"
@echo ... edit_cache @echo "... install/strip"
@echo ... sqlite3 @echo "... edit_cache"
@echo ... rebuild_cache @echo "... sqlite3"
@echo ... list_install_components @echo "... rebuild_cache"
@echo ... install/local @echo "... list_install_components"
@echo ... install @echo "... install/local"
@echo ... sqlite3.obj @echo "... install"
@echo ... sqlite3.i @echo "... sqlite3.o"
@echo ... sqlite3.s @echo "... sqlite3.i"
.PHONY : help @echo "... sqlite3.s"
.PHONY : help
#=============================================================================
# Special targets to cleanup operation of make. #=============================================================================
# Special targets to cleanup operation of make.
# Special rule to run CMake to check the build system integrity.
# No rule that depends on this can have commands that come from listfiles # Special rule to run CMake to check the build system integrity.
# because they might be regenerated. # No rule that depends on this can have commands that come from listfiles
cmake_check_build_system: # because they might be regenerated.
cd /d C:\Users\MassiveAtoms\Documents\C++\Parkmanne && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles\Makefile.cmake 0 cmake_check_build_system:
.PHONY : cmake_check_build_system cd /home/pyrostefan/Documents/Parkmanne/Parkmanne && $(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0
.PHONY : cmake_check_build_system

View File

@ -1,34 +1,39 @@
# Install script for directory: C:/Users/MassiveAtoms/Documents/C++/Parkmanne/thirdparty/SQLiteCpp/sqlite3 # Install script for directory: /home/pyrostefan/Documents/Parkmanne/Parkmanne/thirdparty/SQLiteCpp/sqlite3
# Set the install prefix # Set the install prefix
if(NOT DEFINED CMAKE_INSTALL_PREFIX) if(NOT DEFINED CMAKE_INSTALL_PREFIX)
set(CMAKE_INSTALL_PREFIX "C:/Program Files (x86)/park") set(CMAKE_INSTALL_PREFIX "/usr/local")
endif() endif()
string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
# Set the install configuration name. # Set the install configuration name.
if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME)
if(BUILD_TYPE) if(BUILD_TYPE)
string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" string(REGEX REPLACE "^[^A-Za-z0-9_]+" ""
CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}")
else() else()
set(CMAKE_INSTALL_CONFIG_NAME "") set(CMAKE_INSTALL_CONFIG_NAME "")
endif() endif()
message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"")
endif() endif()
# Set the component getting installed. # Set the component getting installed.
if(NOT CMAKE_INSTALL_COMPONENT) if(NOT CMAKE_INSTALL_COMPONENT)
if(COMPONENT) if(COMPONENT)
message(STATUS "Install component: \"${COMPONENT}\"") message(STATUS "Install component: \"${COMPONENT}\"")
set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") set(CMAKE_INSTALL_COMPONENT "${COMPONENT}")
else() else()
set(CMAKE_INSTALL_COMPONENT) set(CMAKE_INSTALL_COMPONENT)
endif() endif()
endif() endif()
# Is this installation the result of a crosscompile? # Install shared libraries without execute permission?
if(NOT DEFINED CMAKE_CROSSCOMPILING) if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE)
set(CMAKE_CROSSCOMPILING "FALSE") set(CMAKE_INSTALL_SO_NO_EXE "1")
endif() endif()
# Is this installation the result of a crosscompile?
if(NOT DEFINED CMAKE_CROSSCOMPILING)
set(CMAKE_CROSSCOMPILING "FALSE")
endif()