/* * Copyright 2014 (c) Anna Schumaker. * Test a DatabaseEntry */ #include #include #include #include #include #include enum action_t { PRIMARY_KEY, PRINT, READ, WRITE }; class IntEntry : public DatabaseEntry { public: unsigned int val; std::string key; IntEntry(unsigned int, const std::string &); const std::string primary_key(); void write(File &); void read(File &); void print(); }; IntEntry :: IntEntry(unsigned int i, const std::string &s) { val = i; key = s; } const std::string IntEntry :: primary_key() { return key; } void IntEntry :: write(File &f) { f << val << " " << key; } void IntEntry :: read(File &f) { f >> val >> key; } void IntEntry :: print() { :: print("Value: %u Key: %s Valid: %d\n", val, key.c_str(), valid); } int main(int argc, char **argv) { action_t action = PRINT; char c; while ((c = getopt(argc, argv, "prw")) != -1) { switch (c) { case 'p': action = PRIMARY_KEY; break; case 'r': action = READ; break; case 'w': action = WRITE; break; } } if (optind >= argc) { print("ERROR: Not enough arguments\n"); return 1; } unsigned int i = atoi(argv[optind++]); std::string key = argv[optind]; File f("db_entry.txt", FILE_TYPE_DATA); IntEntry ient(i, key); switch (action) { case PRIMARY_KEY: print("Primary key: %s\n", ient.primary_key().c_str()); break; case PRINT: ient.print(); break; case READ: f.open(OPEN_READ); ient.read(f); ient.print(); f.close(); break; case WRITE: f.open(OPEN_WRITE); ient.write(f); f.close(); break; } return 0; }