aboutsummaryrefslogtreecommitdiffstats
path: root/examples/example7.cpp
diff options
context:
space:
mode:
authorVincent Richard <[email protected]>2005-05-15 18:05:38 +0000
committerVincent Richard <[email protected]>2005-05-15 18:05:38 +0000
commit8134a52f56697a51c734e1406d57a05fda77bac7 (patch)
treedd7fee1a9a7922fcdbaec7592b8ce39e1a031c38 /examples/example7.cpp
parentOops... missing ')'. (diff)
downloadvmime-8134a52f56697a51c734e1406d57a05fda77bac7.tar.gz
vmime-8134a52f56697a51c734e1406d57a05fda77bac7.zip
Service properties enhancement.
Diffstat (limited to 'examples/example7.cpp')
-rw-r--r--examples/example7.cpp110
1 files changed, 110 insertions, 0 deletions
diff --git a/examples/example7.cpp b/examples/example7.cpp
new file mode 100644
index 00000000..16492bb4
--- /dev/null
+++ b/examples/example7.cpp
@@ -0,0 +1,110 @@
+//
+// VMime library (http://www.vmime.org)
+// Copyright (C) 2002-2005 Vincent Richard <[email protected]>
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+//
+
+//
+// EXAMPLE DESCRIPTION:
+// ====================
+// This sample program demonstrates how to enumerate encoders and
+// messaging services in VMime.
+//
+// For more information, please visit:
+// http://www.vmime.org/
+//
+
+#include <iostream>
+
+#include "vmime/vmime.hpp"
+#include "vmime/platforms/posix/posixHandler.hpp"
+
+
+int main()
+{
+ // VMime initialization
+ vmime::platformDependant::setHandler<vmime::platforms::posix::posixHandler>();
+
+ // Enumerate encoders
+ vmime::encoderFactory* ef = vmime::encoderFactory::getInstance();
+
+ std::cout << "Available encoders:" << std::endl;
+
+ for (int i = 0 ; i < ef->getEncoderCount() ; ++i)
+ {
+ const vmime::encoderFactory::registeredEncoder& enc = *ef->getEncoderAt(i);
+
+ std::cout << " * " << enc.getName() << std::endl;
+
+ vmime::encoder* e = enc.create();
+
+ std::vector <vmime::string> props = e->getAvailableProperties();
+
+ for (std::vector <vmime::string>::const_iterator it = props.begin() ; it != props.end() ; ++it)
+ std::cout << " - " << *it << std::endl;
+
+ delete (e);
+ }
+
+ std::cout << std::endl;
+
+ // Enumerate messaging services and their properties
+ vmime::messaging::serviceFactory* sf = vmime::messaging::serviceFactory::getInstance();
+
+ std::cout << "Available messaging services:" << std::endl;
+
+ for (int i = 0 ; i < sf->getServiceCount() ; ++i)
+ {
+ const vmime::messaging::serviceFactory::registeredService& serv = *sf->getServiceAt(i);
+
+ std::cout << " * " << serv.getName() << std::endl;
+
+ std::vector <vmime::messaging::serviceInfos::property> props =
+ serv.getInfos().getAvailableProperties();
+
+ for (std::vector <vmime::messaging::serviceInfos::property>::const_iterator it = props.begin() ;
+ it != props.end() ; ++it)
+ {
+ const vmime::messaging::serviceInfos::property& p = *it;
+
+ const vmime::string name = serv.getInfos().getPropertyPrefix() + p.getName();
+
+ vmime::string type;
+
+ switch (p.getType())
+ {
+ case vmime::messaging::serviceInfos::property::TYPE_INTEGER: type = "TYPE_INTEGER"; break;
+ case vmime::messaging::serviceInfos::property::TYPE_STRING: type = "TYPE_STRING"; break;
+ case vmime::messaging::serviceInfos::property::TYPE_BOOL: type = "TYPE_BOOL"; break;
+ default: type = "(unknown)"; break;
+ }
+
+ vmime::string flags;
+
+ if (p.getFlags() & vmime::messaging::serviceInfos::property::FLAG_REQUIRED)
+ flags += " FLAG_REQUIRED";
+ if (p.getFlags() & vmime::messaging::serviceInfos::property::FLAG_HIDDEN)
+ flags += " FLAG_HIDDEN";
+
+ std::cout << " - " << serv.getInfos().getPropertyPrefix() + p.getName();
+ std::cout << " (type=" << type << ", flags=" << flags;
+ std::cout << ", defaultValue=" << p.getDefaultValue() << ")" << std::endl;
+ }
+ }
+
+ std::cout << std::endl;
+}
+