diff options
author | Bernard Normier <bernard@zeroc.com> | 2008-04-25 12:05:30 -0400 |
---|---|---|
committer | Bernard Normier <bernard@zeroc.com> | 2008-04-25 12:05:30 -0400 |
commit | 0d4c299225d186605db478bcbce2283ed3c40b81 (patch) | |
tree | 30df88da79bf4d534b0bea7a881dfe7aecab5d32 /cpp/src/IceStringConverter/Plugin.cpp | |
parent | Fixed bug 3039 (diff) | |
download | ice-0d4c299225d186605db478bcbce2283ed3c40b81.tar.bz2 ice-0d4c299225d186605db478bcbce2283ed3c40b81.tar.xz ice-0d4c299225d186605db478bcbce2283ed3c40b81.zip |
Moved StringConverter plugin into Ice library
Diffstat (limited to 'cpp/src/IceStringConverter/Plugin.cpp')
-rw-r--r-- | cpp/src/IceStringConverter/Plugin.cpp | 131 |
1 files changed, 0 insertions, 131 deletions
diff --git a/cpp/src/IceStringConverter/Plugin.cpp b/cpp/src/IceStringConverter/Plugin.cpp deleted file mode 100644 index bdf34dfe75f..00000000000 --- a/cpp/src/IceStringConverter/Plugin.cpp +++ /dev/null @@ -1,131 +0,0 @@ -// ********************************************************************** -// -// Copyright (c) 2003-2008 ZeroC, Inc. All rights reserved. -// -// This copy of Ice is licensed to you under the terms described in the -// ICE_LICENSE file included in this distribution. -// -// ********************************************************************** - -#include <Ice/Ice.h> -#include <IceUtil/StringUtil.h> -#include <cstdlib> - -using namespace Ice; -using namespace std; - -extern "C" -{ -ICE_DECLSPEC_EXPORT Plugin* -createStringConverter(const CommunicatorPtr& communicator, const string& name, const StringSeq& args) -{ - StringConverterPtr stringConverter; - WstringConverterPtr wstringConverter; - - if(args.size() > 2) - { - Error out(communicator->getLogger()); - out << "Plugin " << name << ": too many arguments"; - return 0; - } - - try - { - -#ifdef _WIN32 - - int cp = -1; - - for(size_t i = 0; i < args.size(); ++i) - { - if(args[i].find("windows=") == 0) - { - cp = atoi(args[i].substr(strlen("windows=")).c_str()); - } - else if(args[i].find("iconv=") != 0) - { - Error out(communicator->getLogger()); - out << "Plugin " << name << ": invalid \"" << args[i] << "\" argument"; - return 0; - } - } - - if(cp == -1) - { - Error out(communicator->getLogger()); - out << "Plugin " << name << ": missing windows=<code page> argument"; - return 0; - } - - if(cp == 0 || cp == INT_MAX || cp < 0) - { - Error out(communicator->getLogger()); - out << "Plugin " << name << ": invalid Windows code page"; - return 0; - } - - stringConverter = new WindowsStringConverter(static_cast<unsigned int>(cp)); -#else - StringSeq iconvArgs; - - for(size_t i = 0; i < args.size(); ++i) - { - if(args[i].find("iconv=") == 0) - { - if(!IceUtilInternal::splitString(args[i].substr(strlen("iconv=")), ", \t\r\n", iconvArgs)) - { - Error out(communicator->getLogger()); - out << "Plugin " << name << ": invalid iconv argument"; - return 0; - } - } - else if(args[i].find("windows=") != 0) - { - Error out(communicator->getLogger()); - out << "Plugin " << name << ": invalid \"" << args[i] << "\" argument"; - return 0; - } - } - - switch(iconvArgs.size()) - { - case 0: - { - stringConverter = new IconvStringConverter<char>; - break; - } - case 1: - { - stringConverter = new IconvStringConverter<char>(iconvArgs[0].c_str()); - break; - } - case 2: - { - stringConverter = new IconvStringConverter<char>(iconvArgs[0].c_str()); - wstringConverter = new IconvStringConverter<wchar_t>(iconvArgs[1].c_str()); - break; - } - default: - { - assert(0); - } - } - -#endif - - return new StringConverterPlugin(communicator, stringConverter, wstringConverter); - } - catch(const std::exception& ex) - { - Error out(communicator->getLogger()); - out << "Plugin " << name << ": creation failed with " << ex.what(); - return 0; - } - catch(...) - { - Error out(communicator->getLogger()); - out << "Plugin " << name << ": creation failed with unknown exception"; - return 0; - } -} -} |