--- /dev/null
+/* $Id$
+
+This file is part of R²C²
+Copyright © 2010 Mikkosoft Productions, Mikko Rasa
+Distributed under the GPL
+*/
+
+#ifndef LIBR2C2_ARTICLENUMBER_H_
+#define LIBR2C2_ARTICLENUMBER_H_
+
+#include <string>
+#include <vector>
+#include <msp/strings/lexicalcast.h>
+
+namespace R2C2 {
+
+class ArticleNumber
+{
+private:
+ struct Part
+ {
+ unsigned number;
+ char letter;
+
+ bool operator<(const Part &) const;
+ };
+
+ std::vector<Part> parts;
+
+public:
+ ArticleNumber() { }
+ ArticleNumber(unsigned);
+ ArticleNumber(const std::string &);
+
+ std::string str() const;
+
+ bool operator<(const ArticleNumber &) const;
+};
+
+void operator>>(const Msp::LexicalConverter &, ArticleNumber &);
+void operator<<(Msp::LexicalConverter &, const ArticleNumber &);
+
+} // namespace R2C2
+
+#endif