Skip to content

Commit

Permalink
[v7] Move Resource to v7
Browse files Browse the repository at this point in the history
  • Loading branch information
jslee02 committed Mar 23, 2024
1 parent 39c20d6 commit a208d79
Show file tree
Hide file tree
Showing 11 changed files with 457 additions and 188 deletions.
45 changes: 5 additions & 40 deletions dart/common/LocalResource.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -30,47 +30,12 @@
* POSSIBILITY OF SUCH DAMAGE.
*/

#ifndef DART_COMMON_LOCALRESOURCE_HPP_
#define DART_COMMON_LOCALRESOURCE_HPP_
#pragma once

#include <dart/common/ClassWithVirtualBase.hpp>
#include <dart/common/Resource.hpp>
#include <dart/v7/local_resource.hpp>

namespace dart {
namespace common {
namespace dart::common {

DART_DECLARE_CLASS_WITH_VIRTUAL_BASE_BEGIN
class LocalResource : public virtual Resource
{
public:
explicit LocalResource(const std::string& _path);
virtual ~LocalResource();
using LocalResource = v7::LocalResource;

LocalResource(const LocalResource& _other) = delete;
LocalResource& operator=(const LocalResource& _other) = delete;

/// Returns true if the resource is open and in a valid state.
bool isGood() const;

// Documentation inherited.
std::size_t getSize() override;

// Documentation inherited.
std::size_t tell() override;

// Documentation inherited.
bool seek(ptrdiff_t _origin, SeekType _mode) override;

// Documentation inherited.
std::size_t read(
void* _buffer, std::size_t _size, std::size_t _count) override;

private:
std::FILE* mFile;
};
DART_DECLARE_CLASS_WITH_VIRTUAL_BASE_END

} // namespace common
} // namespace dart

#endif // ifndef DART_COMMON_LOCALRESOURCE_HPP_
} // namespace dart::common
64 changes: 5 additions & 59 deletions dart/common/Resource.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -30,67 +30,13 @@
* POSSIBILITY OF SUCH DAMAGE.
*/

#ifndef DART_COMMON_RESOURCE_HPP_
#define DART_COMMON_RESOURCE_HPP_
#pragma once

#include <memory>
#include <string>
#include <dart/v7/resource.hpp>

#include <cstddef>

namespace dart {
namespace common {

/// \brief Resource provides file-like access to a resource loaded from URI.
///
/// It is expected that each \a ResourceRetriever will provide a concrete /
/// instantiation of the Resource class. This interface exposes an similar API
/// to that of the the standard C file manipulation functions.
class Resource
{
public:
/// \brief Position to seek relative to.
enum SeekType
{
SEEKTYPE_CUR, ///< Current position.
SEEKTYPE_END, ///< End of file.
SEEKTYPE_SET ///< Begining of file.
};

virtual ~Resource() = default;

/// \brief Return the size of the resource, in bytes.
virtual std::size_t getSize() = 0;

/// \brief Return the current value of the position indicator.
/// \note This method has the same API as the standard ftell function.
virtual std::size_t tell() = 0;

/// \brief Set the position indicator to a new position.
/// \param[in] _offset Offset, in bytes, relative to _origin.
/// \param[in] _origin Position used as the reference of _offset.
/// \note This method has the same API as the standard fseek function.
virtual bool seek(ptrdiff_t _offset, SeekType _origin) = 0;

/// \brief Read _count element, each of size _size, into _buffer.
/// \param[out] _buffer Pointer to a block of memory with a size of at least
/// (_size * _count) bytes.
/// \param[in] _size Size, in bytes, of each element.
/// \param[in] _count Number of elements, each of _size bytes.
/// \note This method has the same API as the standard fread function.
virtual std::size_t read(void* _buffer, std::size_t _size, std::size_t _count)
= 0;

/// Reads all data from this resource, and returns it as a string.
///
/// \return The string retrieved from the resource.
/// \throw std::runtime_error when failed to read sucessfully.
virtual std::string readAll();
};
namespace dart::common {

using Resource = v7::Resource;
using ResourcePtr = std::shared_ptr<Resource>;

} // namespace common
} // namespace dart

#endif // ifndef DART_COMMON_RESOURCE_HPP_
} // namespace dart::common
6 changes: 3 additions & 3 deletions dart/dynamics/AssimpInputResourceAdaptor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -141,15 +141,15 @@ aiReturn AssimpInputResourceAdaptor::Seek(std::size_t pOffset, aiOrigin pOrigin)
Resource::SeekType origin;
switch (pOrigin) {
case aiOrigin_CUR:
origin = Resource::SEEKTYPE_CUR;
origin = Resource::SeekType::CUR;
break;

case aiOrigin_END:
origin = Resource::SEEKTYPE_END;
origin = Resource::SeekType::END;
break;

case aiOrigin_SET:
origin = Resource::SEEKTYPE_SET;
origin = Resource::SeekType::SET;
break;

default:
Expand Down
39 changes: 39 additions & 0 deletions dart/v7/empty.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
/*
* Copyright (c) The DART development contributors
* All rights reserved.
*
* The list of contributors can be found at:
* https://github.com/dartsim/dart/blob/main/LICENSE
*
* This file is provided under the following "BSD-style" License:
* 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.
* 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 HOLDER 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.
*/

#include "dart/v7/empty.hpp"

namespace dart::v7 {

//

} // namespace dart::v7
41 changes: 41 additions & 0 deletions dart/v7/empty.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
/*
* Copyright (c) The DART development contributors
* All rights reserved.
*
* The list of contributors can be found at:
* https://github.com/dartsim/dart/blob/main/LICENSE
*
* This file is provided under the following "BSD-style" License:
* 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.
* 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 HOLDER 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 <dart/v7/fwd.hpp>

namespace dart::v7 {

//

} // namespace dart::v7
Loading

0 comments on commit a208d79

Please sign in to comment.