osquery-1/osquery/core/conversions.h

93 lines
2.2 KiB
C
Raw Normal View History

/*
* Copyright (c) 2014, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
2015-05-12 06:31:13 +00:00
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*
*/
#pragma once
#include <memory>
#include <boost/bind.hpp>
#include <boost/shared_ptr.hpp>
2014-12-10 09:17:24 +00:00
#ifdef DARWIN
#include <CoreFoundation/CoreFoundation.h>
#endif
namespace osquery {
template <typename T>
void do_release_boost(typename boost::shared_ptr<T> const&, T*) {}
/**
* @brief Convert a boost::shared_ptr to a std::shared_ptr
2014-09-16 05:56:11 +00:00
*/
template <typename T>
typename std::shared_ptr<T> boost_to_std_shared_ptr(
typename boost::shared_ptr<T> const& p) {
return std::shared_ptr<T>(p.get(), boost::bind(&do_release_boost<T>, p, _1));
}
template <typename T>
void do_release_std(typename std::shared_ptr<T> const&, T*) {}
/**
* @brief Convert a std::shared_ptr to a boost::shared_ptr
2014-09-16 05:56:11 +00:00
*/
template <typename T>
typename boost::shared_ptr<T> std_to_boost_shared_ptr(
typename std::shared_ptr<T> const& p) {
return boost::shared_ptr<T>(p.get(), boost::bind(&do_release_std<T>, p, _1));
}
2014-12-10 09:17:24 +00:00
/**
* @brief Decode a base64 encoded string.
*
* @param encoded The encode base64 string.
* @return Decoded string.
*/
std::string base64Decode(const std::string& encoded);
/**
* @brief Encode a string.
*
* @param A string to encode.
* @return Encoded string.
*/
std::string base64Encode(const std::string& unencoded);
/**
* @brief Check if a string is ASCII printable
*
* @param A string to check.
* @return If the string is printable.
*/
bool isPrintable(const std::string& check);
2014-12-10 09:17:24 +00:00
#ifdef DARWIN
2014-12-10 17:12:12 +00:00
/**
* @brief Convert a CFStringRef to a std::string.
*/
2014-12-10 09:52:02 +00:00
std::string stringFromCFString(const CFStringRef& cf_string);
2014-12-10 17:12:12 +00:00
/**
* @brief Convert a CFNumberRef to a std::string.
*/
2014-12-10 09:17:24 +00:00
std::string stringFromCFNumber(const CFDataRef& cf_number);
std::string stringFromCFNumber(const CFDataRef& cf_number, CFNumberType type);
/**
* @brief Convert a CFAbsoluteTime to a std::string.
*/
std::string stringFromCFAbsoluteTime(const CFDataRef& cf_abstime);
2014-12-10 22:51:43 +00:00
std::string stringFromCFData(const CFDataRef& cf_data);
2014-12-10 09:17:24 +00:00
#endif
}