• Main Page
  • Classes
  • Files
  • File List

Swiften/Base/SafeByteArray.h

00001 /*
00002  * Copyright (c) 2011 Remko Tronçon
00003  * Licensed under the GNU General Public License v3.
00004  * See Documentation/Licenses/GPLv3.txt for more information.
00005  */
00006 
00007 #pragma once
00008 
00009 #include <vector>
00010 
00011 #include <Swiften/Base/API.h>
00012 #include <Swiften/Base/SafeAllocator.h>
00013 #include <Swiften/Base/ByteArray.h>
00014 #include <boost/smart_ptr/make_shared.hpp>
00015 
00016 namespace Swift {
00017   typedef std::vector<unsigned char, SafeAllocator<unsigned char> > SafeByteArray;
00018 
00019   inline SafeByteArray createSafeByteArray(const ByteArray& a) {
00020     return SafeByteArray(a.begin(), a.end());
00021   }
00022 
00023   SWIFTEN_API SafeByteArray createSafeByteArray(const char* c);
00024 
00025   inline SafeByteArray createSafeByteArray(const std::string& s) {
00026     return SafeByteArray(s.begin(), s.end());
00027   }
00028 
00029   inline boost::shared_ptr<SafeByteArray> createSafeByteArrayRef(const std::string& s) {
00030     return boost::make_shared<SafeByteArray>(s.begin(), s.end());
00031   }
00032 
00033   inline SafeByteArray createSafeByteArray(char c) {
00034     return SafeByteArray(1, c);
00035   }
00036 
00037   inline SafeByteArray createSafeByteArray(const char* c, size_t n) {
00038     return SafeByteArray(c, c + n);
00039   }
00040 
00041   inline boost::shared_ptr<SafeByteArray> createSafeByteArrayRef(const char* c, size_t n) {
00042     return boost::make_shared<SafeByteArray>(c, c + n);
00043   }
00044 
00045   inline SafeByteArray createSafeByteArray(const unsigned char* c, size_t n) {
00046     return SafeByteArray(c, c + n);
00047   }
00048 
00049   inline boost::shared_ptr<SafeByteArray> createSafeByteArrayRef(const unsigned char* c, size_t n) {
00050     return boost::make_shared<SafeByteArray>(c, c + n);
00051   }
00052 
00053   /* WARNING! This breaks the safety of the data in the safe byte array.
00054    * Do not use in modes that require data safety. */
00055   inline std::string safeByteArrayToString(const SafeByteArray& b) {
00056     return byteArrayToString(ByteArray(b.begin(), b.end()));
00057   }
00058 }
00059 

Generated on Fri Oct 12 2012 21:00:19 for Swiften by  doxygen 1.7.1