Εξωτερική πρόσβαση σε δομές δεδομένων STL (καταργήθηκε 2011)

Στόχος της εργασίας είναι η δημιουργία μιας ενδιάμεσης επαφής που θα επιτρέπει την εύκολη σύνδεση των δομών δεδομένων που παρέχει η βιβλιοθήκη STL της C++ (vector, deque, list, set, map) στους τελικούς χρήστες του προγράμματος. Αυτό μπορεί να επιτευχθεί με τρεις τρόπους: Με τον τρόπο αυτό θα μπορεί κανείς εύκολα να προσθέσει τη δυνατότητα χρήσης εντολών SQL, του φλοιού του Unix, ή XML πάνω στις δομές δεδομένων ενός προγράμματος.

Η σχεσιακή βάση δεδομένων SQLite μπορεί εύκολα να ενσωματωθεί ως βιβλιοθήκη σε προγράμματα γραμμένα σε C ή C++. Επιπλέον η SQLite παρέχει μια διεπαφή ιδεατών πινάκων μέσω της οποίας μπορούμε να αντιστοιχίσουμε δικές μας πηγές δεδομένων σε πίνακες SQL.

Παράδειγμα κώδικα

class Employee : public SqlValueInterface {
private:
	int id;
	string givenName;
	string familyName;
	int salary;
};

main()
{
	vector <Employee> e;

	sql_register_vector("Employees", e);
	fuse_register_vector("Employees", e);
	xml_register_vector("Employees", e);
}

Παράδειγμα χρήσης

Μέσω SQL

SELECT MIN(salary), AVG(salary), MAX(salary) FROM Employees;
SELECT * FROM Employees ORDER BY familyName;

Ως αρχείο κειμένου

awk '
{ sum += $4; count++ }
END { print "Average salary is ", sum / count }
' /tmp/fuse/Employees

Σημείωση

Το τμήμα του έργου που αφορά τη σύνδεση με τη σχεσιακή βάση δεδομένων μπορεί να υλοποιηθεί και σε Java με τη χρήση της HSQLB και των κλάσεων που υλοποιούν περιέκτες του πακέτου java.util.

Βιβλιογραφία