diff options
Diffstat (limited to 'import')
-rw-r--r-- | import/hwpf/fapi2/include/array.H | 182 |
1 files changed, 0 insertions, 182 deletions
diff --git a/import/hwpf/fapi2/include/array.H b/import/hwpf/fapi2/include/array.H deleted file mode 100644 index e7bb8d95..00000000 --- a/import/hwpf/fapi2/include/array.H +++ /dev/null @@ -1,182 +0,0 @@ -/* IBM_PROLOG_BEGIN_TAG */ -/* This is an automatically generated prolog. */ -/* */ -/* $Source: hwpf/fapi2/include/array.H $ */ -/* */ -/* IBM CONFIDENTIAL */ -/* */ -/* EKB Project */ -/* */ -/* COPYRIGHT 2012,2015 */ -/* [+] International Business Machines Corp. */ -/* */ -/* */ -/* The source code for this program is not published or otherwise */ -/* divested of its trade secrets, irrespective of what has been */ -/* deposited with the U.S. Copyright Office. */ -/* */ -/* IBM_PROLOG_END_TAG */ -/** - * @file array.H - * @brief definitions for fapi2 arrays - */ - -#ifndef __FAPI2_ARRAY__ -#define __FAPI2_ARRAY__ - -#include <stdint.h> -#include <utility> -#include <assert.h> -#include <string.h> - -namespace fapi2 -{ -/// -/// @brief Class representing a FAPI2 array -/// FAPI2 arrays are defined to be very lightweight but support -/// c++ container operations (iterators, bounds checking, assignment, etc.) -/// To avoid the code-bloat associated with std::vector templates, -/// fapi2::array is presently limited to 64-bit elements. -/// -/// To construct an array, you can either pass in an existing chunk -/// of memory, or let the container allocate memory for you: -/// fapi2::array foo(3, &PIB_MEM_BLOCK); -/// creates an array 3 x uit64_t in size, located at &PIB_MEM_BLOCK. -/// The memory pointed to by the address passed in is untouched -/// during creation. This allows for a light-weight overlay on top -/// of existing memory. It also means you need to initialize the space -/// yourself. -/// fapi2_array foo(3); -/// creates an array 3 x uint64_t in size, and that memory will be -/// allocated by the constructor and initiaized to 0's. -/// -/// -class array -{ - public: - - typedef uint64_t element_type; - typedef element_type* iterator; - typedef const element_type* const_iterator; - - /// - /// @brief Create an array - /// @param[in] i_size the size of the array - /// @param[in] i_data a pointer to memory of appropriate size - /// defaults to nullptr which causes the platform to - /// allocate memory of size * element_type - /// @warning fapi2::arrays, like arrays, can not be re-sized after - /// creation. - /// - array(const uint32_t i_size, element_type* i_data = nullptr); - - /// - /// @brief Destroy an array - /// - ~array(void); - - /// - /// @brief operator[] - /// @param[in] i_index the index of the element - /// @return a reference to the element in question. - /// @note array[0] = 0 works as well as foo = array[0] - /// - element_type& operator[](const uint32_t i_index); - - /// - /// @brief operator=() - /// @param[in] i_other the other array - /// @return a reference to this, after the assignement - /// - array& operator=(const array& i_other); - - /// - /// @brief move operator=() - /// @note To use: new_array = std::move(old_array). old_array will be - /// destroyed and no copy will be made (moved) - /// - array& operator=(array&& i_other); - - /// - /// @brief operator==() - /// - bool operator==(const array& i_other); - - /// - /// @brief operator!=() - /// - __attribute__ ((always_inline)) - bool operator!=(const array& i_other) - { - return ! operator==(i_other); - } - - /// - /// @brief Return an iterator the to beginning of the array - /// @return An iterator to the beginning of the array - /// - __attribute__ ((always_inline)) - iterator begin(void) - { - return iv_data; - } - - /// - /// @brief Return an iterator the to end of the array - /// @return An iterator to the end of the array - /// - __attribute__ ((always_inline)) - iterator end(void) - { - return iv_data + size(); - } - - /// - /// @brief Return a const_iterator the to beginning of the array - /// @return A const_iterator to the beginning of the array - /// - __attribute__ ((always_inline)) - const_iterator begin(void) const - { - return iv_data; - } - - /// - /// @brief Return a const_iterator the to end of the array - /// @return A const_iterator to the end the array - /// - __attribute__ ((always_inline)) - const_iterator end(void) const - { - return iv_data + size(); - } - - private: - - enum - { - // Bit in iv_size representing whether we delete in the dtor - delete_bit = 0x80000000, - - // The resulting size limit - size_limit = 0x7FFFFFFF, - }; - - __attribute__ ((always_inline)) - uint32_t size(void) - { - return (iv_size & ~delete_bit); - } - - __attribute__ ((always_inline)) - uint32_t size(void) const - { - return (iv_size & ~delete_bit); - } - - uint32_t iv_size; - element_type* iv_data; -}; -} - -#endif |