rrcc/src/EmbeddedResource.h
DataHoarder d9094e7d83
All checks were successful
continuous-integration/drone/push Build is passing
- Added Linker and multiple file assembly support.
- Added asm/registers.asm and asm/api.asm  with some used registers on the platform
- Added embedded resources into build
2021-01-01 07:31:30 +01:00

55 lines
2.4 KiB
C++

/*****************************************************************************
* Copyright (c) 2020, rrcc FM10K-Documentation Contributors
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the copyright holder nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/
#pragma once
#include <cstddef>
class EmbeddedResource {
public:
EmbeddedResource(const char *start, const char *end) : mData(start),
mSize(end - start) {}
const char *const &data() const { return mData; }
const size_t &size() const { return mSize; }
const char *begin() const { return mData; }
const char *end() const { return mData + mSize; }
private:
const char *mData;
size_t mSize;
};
#define LOAD_RESOURCE(x) ([]() { \
extern const char _binary_##x##_start, _binary_##x##_end; \
return EmbeddedResource(&_binary_##x##_start, &_binary_##x##_end); \
})()