コード例 #1
0
ファイル: InputSource.cpp プロジェクト: JanX2/SFBAudioEngine
SFB::InputSource::unique_ptr SFB::InputSource::CreateForURL(CFURLRef url, int flags, CFErrorRef *error)
{
	if(nullptr == url)
		return nullptr;

	// If there is no scheme the URL is invalid
	SFB::CFString scheme = CFURLCopyScheme(url);
	if(!scheme) {
		if(error)
			*error = CFErrorCreate(kCFAllocatorDefault, kCFErrorDomainPOSIX, EINVAL, nullptr);
		return nullptr;
	}

	if(kCFCompareEqualTo == CFStringCompare(CFSTR("file"), scheme, kCFCompareCaseInsensitive)) {
		if(InputSource::MemoryMapFiles & flags)
			return unique_ptr(new MemoryMappedFileInputSource(url));
		else if(InputSource::LoadFilesInMemory & flags)
			return unique_ptr(new InMemoryFileInputSource(url));
		else
			return unique_ptr(new FileInputSource(url));
	}
	else if(kCFCompareEqualTo == CFStringCompare(CFSTR("http"), scheme, kCFCompareCaseInsensitive))
		return unique_ptr(new HTTPInputSource(url));

	return nullptr;
}
コード例 #2
0
SFB::Audio::Decoder::unique_ptr SFB::Audio::LoopableRegionDecoder::CreateForDecoderRegion(Decoder::unique_ptr decoder, SInt64 startingFrame, UInt32 frameCount, UInt32 repeatCount, CFErrorRef *)
{
	if(!decoder)
		return nullptr;

	return unique_ptr(new LoopableRegionDecoder(std::move(decoder), startingFrame, frameCount, repeatCount));
}
コード例 #3
0
SFB::Audio::Decoder::unique_ptr SFB::Audio::LoopableRegionDecoder::CreateForDecoderRegion(Decoder::unique_ptr decoder, SInt64 startingFrame, CFErrorRef */*error*/)
{
	if(!decoder)
		return nullptr;

	return unique_ptr(new LoopableRegionDecoder(std::move(decoder), startingFrame));
}
コード例 #4
0
ファイル: InputSource.cpp プロジェクト: JanX2/SFBAudioEngine
SFB::InputSource::unique_ptr SFB::InputSource::CreateWithMemory(const void *bytes, SInt64 byteCount, bool copyBytes, CFErrorRef *error)
{
	if(nullptr == bytes || 0 >= byteCount)
		return nullptr;

	return unique_ptr(new MemoryInputSource(bytes, byteCount, copyBytes));
}
コード例 #5
0
  //! Loading std::unique_ptr, case when user provides load_and_allocate for polymorphic types
  template <class Archive, class T, class D> inline
  typename std::enable_if<std::is_polymorphic<T>::value, void>::type
  load( Archive & ar, std::unique_ptr<T, D> & ptr )
  {
    std::uint32_t nameid;
    ar( nameid );

    // Check to see if we can skip all of this polymorphism business
    if(polymorphic_detail::serialize_wrapper(ar, ptr, nameid))
      return;

    auto binding = polymorphic_detail::getInputBinding(ar, nameid);
    std::unique_ptr<void, ::cereal::detail::EmptyDeleter<void>> result;
    binding.unique_ptr(&ar, result);
    ptr.reset(static_cast<T*>(result.release()));
  }
コード例 #6
0
ファイル: example5.cpp プロジェクト: acmorrow/unique_ptr_clib
 unique_ptr<T> make_unique(Args&& ...args) {
     using lifecycle = typename traits<T>::lifecycle;
     using unique_ptr = unique_ptr<T>;
     return unique_ptr(lifecycle::ctor(std::forward<Args>(args)...), lifecycle::dtor);
 }
コード例 #7
0
ファイル: WAVEMetadata.cpp プロジェクト: JanX2/SFBAudioEngine
SFB::Audio::Metadata::unique_ptr SFB::Audio::WAVEMetadata::CreateMetadata(CFURLRef url)
{
	return unique_ptr(new WAVEMetadata(url));
}
コード例 #8
0
SFB::Audio::Metadata::unique_ptr SFB::Audio::Musepack::CreateMetadata(CFURLRef url)
{
	return unique_ptr(new Musepack(url));
}
コード例 #9
0
SFB::Audio::Decoder::unique_ptr SFB::Audio::MusepackDecoder::CreateDecoder(InputSource::unique_ptr inputSource)
{
	return unique_ptr(new MusepackDecoder(std::move(inputSource)));
}
コード例 #10
0
SFB::Audio::Decoder::unique_ptr SFB::Audio::TrueAudioDecoder::CreateDecoder(InputSource::unique_ptr inputSource)
{
	return unique_ptr(new TrueAudioDecoder(std::move(inputSource)));
}
コード例 #11
0
SFB::Audio::Metadata::unique_ptr SFB::Audio::OggFLACMetadata::CreateMetadata(CFURLRef url)
{
	return unique_ptr(new OggFLACMetadata(url));
}
コード例 #12
0
SFB::Audio::Decoder::unique_ptr SFB::Audio::LibsndfileDecoder::CreateDecoder(InputSource::unique_ptr inputSource)
{
	return unique_ptr(new LibsndfileDecoder(std::move(inputSource)));
}
コード例 #13
0
SFB::Audio::Decoder::unique_ptr SFB::Audio::OggSpeexDecoder::CreateDecoder(InputSource::unique_ptr inputSource)
{
	return unique_ptr(new OggSpeexDecoder(std::move(inputSource)));
}
コード例 #14
0
SFB::Audio::Metadata::unique_ptr SFB::Audio::TrueAudioMetadata::CreateMetadata(CFURLRef url)
{
    return unique_ptr(new TrueAudioMetadata(url));
}