]> git.tdb.fi Git - r2c2.git/blobdiff - source/libr2c2/articlenumber.h
Rework article numbers
[r2c2.git] / source / libr2c2 / articlenumber.h
index c4939674991b69e865017c7c7fc5ab3c09d362b2..79356c88b7008be05e8fa8cdeb76267a531a4289 100644 (file)
@@ -3,34 +3,36 @@
 
 #include <string>
 #include <vector>
+#include <msp/datafile/objectloader.h>
 #include <msp/strings/lexicalcast.h>
 
 namespace R2C2 {
 
 class ArticleNumber
 {
-private:
-       struct Part
+public:
+       class Loader: public Msp::DataFile::ObjectLoader<ArticleNumber>
        {
-               unsigned number;
-               char letter;
-
-               bool operator<(const Part &) const;
+       public:
+               Loader(ArticleNumber &);
        };
 
-       std::vector<Part> parts;
+private:
+       std::string vendor;
+       std::string article;
+       std::string part;
 
 public:
        ArticleNumber() { }
-       ArticleNumber(unsigned);
        ArticleNumber(const std::string &);
+       ArticleNumber(const std::string &, const std::string &, const std::string & = std::string());
 
+       const std::string &get_vendor() const { return vendor; }
+       const std::string &get_article() const { return article; }
+       const std::string &get_part() const { return part; }
        std::string str() const;
-
-       bool operator<(const ArticleNumber &) const;
 };
 
-void operator>>(const Msp::LexicalConverter &, ArticleNumber &);
 void operator<<(Msp::LexicalConverter &, const ArticleNumber &);
 
 } // namespace R2C2