summaryrefslogtreecommitdiff
path: root/src/address.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/address.cc')
-rw-r--r--src/address.cc65
1 files changed, 65 insertions, 0 deletions
diff --git a/src/address.cc b/src/address.cc
new file mode 100644
index 0000000..7739500
--- /dev/null
+++ b/src/address.cc
@@ -0,0 +1,65 @@
+/** -------------------------------------------------------------------
+ * @file address.cc
+ * @brief Implementation of the Address class
+ * @author Andreas Aardal Hanssen
+ * @date 2005
+ * ---------------------------------------------------------------- **/
+#include "address.h"
+#include "convert.h"
+#include <string>
+
+using namespace ::std;
+using namespace Binc;
+
+//------------------------------------------------------------------------
+Address::Address(const string &name, const string &addr)
+{
+ string::size_type pos = addr.find('@');
+ this->name = name;
+ if (pos != string::npos) {
+ this->local = addr.substr(0, pos);
+ this->host = addr.substr(pos + 1);
+ } else this->local = addr;
+}
+
+//------------------------------------------------------------------------
+Address::Address(const string &wholeaddress)
+{
+ string::size_type start = wholeaddress.find('<');
+ string addr;
+ if (start != string::npos)
+ addr = wholeaddress.substr(start + 1);
+ else
+ addr = wholeaddress;
+
+ trim(addr, "<>");
+
+ if (start != string::npos)
+ name = wholeaddress.substr(0, start);
+ else
+ name = "";
+ trim(name);
+ trim(name, "\"");
+
+ start = addr.find('@');
+ local = addr.substr(0, start);
+ host = addr.substr(start + 1);
+
+ trim(local);
+ trim(host);
+ trim(name);
+}
+
+//------------------------------------------------------------------------
+string Address::toParenList(void) const
+{
+ string tmp = "(";
+ tmp += name == "" ? "NIL" : toImapString(name);
+ tmp += " NIL ";
+ tmp += local == "" ? "\"\"" : toImapString(local);
+ tmp += " ";
+ tmp += host == "" ? "\"\"" : toImapString(host);
+ tmp += ")";
+
+ return tmp;
+}