sc_vector.hh revision 12852
112852Sgabeblack@google.com/* 212852Sgabeblack@google.com * Copyright 2018 Google, Inc. 312852Sgabeblack@google.com * 412852Sgabeblack@google.com * Redistribution and use in source and binary forms, with or without 512852Sgabeblack@google.com * modification, are permitted provided that the following conditions are 612852Sgabeblack@google.com * met: redistributions of source code must retain the above copyright 712852Sgabeblack@google.com * notice, this list of conditions and the following disclaimer; 812852Sgabeblack@google.com * redistributions in binary form must reproduce the above copyright 912852Sgabeblack@google.com * notice, this list of conditions and the following disclaimer in the 1012852Sgabeblack@google.com * documentation and/or other materials provided with the distribution; 1112852Sgabeblack@google.com * neither the name of the copyright holders nor the names of its 1212852Sgabeblack@google.com * contributors may be used to endorse or promote products derived from 1312852Sgabeblack@google.com * this software without specific prior written permission. 1412852Sgabeblack@google.com * 1512852Sgabeblack@google.com * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 1612852Sgabeblack@google.com * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 1712852Sgabeblack@google.com * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 1812852Sgabeblack@google.com * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 1912852Sgabeblack@google.com * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 2012852Sgabeblack@google.com * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 2112852Sgabeblack@google.com * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 2212852Sgabeblack@google.com * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 2312852Sgabeblack@google.com * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 2412852Sgabeblack@google.com * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 2512852Sgabeblack@google.com * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2612852Sgabeblack@google.com * 2712852Sgabeblack@google.com * Authors: Gabe Black 2812852Sgabeblack@google.com */ 2912852Sgabeblack@google.com 3012852Sgabeblack@google.com#ifndef __SYSTEMC_EXT_UTIL_SC_VECTOR_HH__ 3112852Sgabeblack@google.com#define __SYSTEMC_EXT_UTIL_SC_VECTOR_HH__ 3212852Sgabeblack@google.com 3312852Sgabeblack@google.com#include <stdint.h> 3412852Sgabeblack@google.com 3512852Sgabeblack@google.com#include <exception> 3612852Sgabeblack@google.com#include <vector> 3712852Sgabeblack@google.com 3812852Sgabeblack@google.com#include "../core/sc_object.hh" 3912852Sgabeblack@google.com#include "warn_unimpl.hh" 4012852Sgabeblack@google.com 4112852Sgabeblack@google.comnamespace sc_core 4212852Sgabeblack@google.com{ 4312852Sgabeblack@google.com 4412852Sgabeblack@google.comtemplate <typename T, typename MT> 4512852Sgabeblack@google.comclass sc_vector_assembly; 4612852Sgabeblack@google.com 4712852Sgabeblack@google.comtemplate <typename T> 4812852Sgabeblack@google.comclass sc_vector; 4912852Sgabeblack@google.com 5012852Sgabeblack@google.comtemplate <typename T, typename MT> 5112852Sgabeblack@google.comsc_vector_assembly<T, MT> sc_assemble_vector( 5212852Sgabeblack@google.com sc_vector<T> &, MT(T::* member_ptr)); 5312852Sgabeblack@google.com 5412852Sgabeblack@google.comclass sc_vector_base : public sc_object 5512852Sgabeblack@google.com{ 5612852Sgabeblack@google.com public: 5712852Sgabeblack@google.com typedef size_t size_type; 5812852Sgabeblack@google.com 5912852Sgabeblack@google.com virtual const char *kind() const { return "sc_vector"; } 6012852Sgabeblack@google.com size_type size() const; 6112852Sgabeblack@google.com const std::vector<sc_object *> &get_elements() const; 6212852Sgabeblack@google.com}; 6312852Sgabeblack@google.com 6412852Sgabeblack@google.comtemplate <typename T> 6512852Sgabeblack@google.comclass sc_vector_iter : 6612852Sgabeblack@google.com public std::iterator<std::random_access_iterator_tag, T> 6712852Sgabeblack@google.com{ 6812852Sgabeblack@google.com // Conforms to Random Access Iterator category. 6912852Sgabeblack@google.com // See ISO/IEC 14882:2003(E), 24.1 [lib.iterator.requirements] 7012852Sgabeblack@google.com 7112852Sgabeblack@google.com // Implementation-defined 7212852Sgabeblack@google.com}; 7312852Sgabeblack@google.com 7412852Sgabeblack@google.comtemplate <typename T> 7512852Sgabeblack@google.comclass sc_vector : public sc_vector_base 7612852Sgabeblack@google.com{ 7712852Sgabeblack@google.com public: 7812852Sgabeblack@google.com using sc_vector_base::size_type; 7912852Sgabeblack@google.com typedef sc_vector_iter<T> iterator; 8012852Sgabeblack@google.com typedef sc_vector_iter<const T> const_iterator; 8112852Sgabeblack@google.com 8212852Sgabeblack@google.com sc_vector() : sc_vector_base() 8312852Sgabeblack@google.com { 8412852Sgabeblack@google.com sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 8512852Sgabeblack@google.com } 8612852Sgabeblack@google.com explicit sc_vector(const char *) : sc_vector_base() 8712852Sgabeblack@google.com { 8812852Sgabeblack@google.com sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 8912852Sgabeblack@google.com } 9012852Sgabeblack@google.com sc_vector(const char *, size_type) : sc_vector_base() 9112852Sgabeblack@google.com { 9212852Sgabeblack@google.com sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 9312852Sgabeblack@google.com } 9412852Sgabeblack@google.com template <typename Creator> 9512852Sgabeblack@google.com sc_vector(const char *, size_type, Creator) : sc_vector_base() 9612852Sgabeblack@google.com { 9712852Sgabeblack@google.com sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 9812852Sgabeblack@google.com } 9912852Sgabeblack@google.com virtual ~sc_vector() {} 10012852Sgabeblack@google.com 10112852Sgabeblack@google.com void 10212852Sgabeblack@google.com init(size_type) 10312852Sgabeblack@google.com { 10412852Sgabeblack@google.com sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 10512852Sgabeblack@google.com } 10612852Sgabeblack@google.com static T * 10712852Sgabeblack@google.com create_element(const char *, size_type) 10812852Sgabeblack@google.com { 10912852Sgabeblack@google.com sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 11012852Sgabeblack@google.com return nullptr; 11112852Sgabeblack@google.com } 11212852Sgabeblack@google.com 11312852Sgabeblack@google.com template <typename Creator> 11412852Sgabeblack@google.com void 11512852Sgabeblack@google.com init(size_type, Creator) 11612852Sgabeblack@google.com { 11712852Sgabeblack@google.com sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 11812852Sgabeblack@google.com } 11912852Sgabeblack@google.com 12012852Sgabeblack@google.com T & 12112852Sgabeblack@google.com operator [] (size_type) 12212852Sgabeblack@google.com { 12312852Sgabeblack@google.com sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 12412852Sgabeblack@google.com return *(T *)nullptr; 12512852Sgabeblack@google.com } 12612852Sgabeblack@google.com const T & 12712852Sgabeblack@google.com operator [] (size_type) const 12812852Sgabeblack@google.com { 12912852Sgabeblack@google.com sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 13012852Sgabeblack@google.com return *(const T *)nullptr; 13112852Sgabeblack@google.com } 13212852Sgabeblack@google.com 13312852Sgabeblack@google.com T & 13412852Sgabeblack@google.com at(size_type) 13512852Sgabeblack@google.com { 13612852Sgabeblack@google.com sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 13712852Sgabeblack@google.com return *(T *)nullptr; 13812852Sgabeblack@google.com } 13912852Sgabeblack@google.com const T & 14012852Sgabeblack@google.com at(size_type) const 14112852Sgabeblack@google.com { 14212852Sgabeblack@google.com sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 14312852Sgabeblack@google.com return *(const T *)nullptr; 14412852Sgabeblack@google.com } 14512852Sgabeblack@google.com 14612852Sgabeblack@google.com iterator 14712852Sgabeblack@google.com begin() 14812852Sgabeblack@google.com { 14912852Sgabeblack@google.com sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 15012852Sgabeblack@google.com return iterator(); 15112852Sgabeblack@google.com } 15212852Sgabeblack@google.com iterator 15312852Sgabeblack@google.com end() 15412852Sgabeblack@google.com { 15512852Sgabeblack@google.com sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 15612852Sgabeblack@google.com return iterator(); 15712852Sgabeblack@google.com } 15812852Sgabeblack@google.com 15912852Sgabeblack@google.com const_iterator 16012852Sgabeblack@google.com begin() const 16112852Sgabeblack@google.com { 16212852Sgabeblack@google.com sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 16312852Sgabeblack@google.com return const_iterator(); 16412852Sgabeblack@google.com } 16512852Sgabeblack@google.com const_iterator 16612852Sgabeblack@google.com end() const 16712852Sgabeblack@google.com { 16812852Sgabeblack@google.com sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 16912852Sgabeblack@google.com return const_iterator(); 17012852Sgabeblack@google.com } 17112852Sgabeblack@google.com 17212852Sgabeblack@google.com const_iterator 17312852Sgabeblack@google.com cbegin() const 17412852Sgabeblack@google.com { 17512852Sgabeblack@google.com sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 17612852Sgabeblack@google.com return const_iterator(); 17712852Sgabeblack@google.com } 17812852Sgabeblack@google.com const_iterator 17912852Sgabeblack@google.com cend() const 18012852Sgabeblack@google.com { 18112852Sgabeblack@google.com sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 18212852Sgabeblack@google.com return const_iterator(); 18312852Sgabeblack@google.com } 18412852Sgabeblack@google.com 18512852Sgabeblack@google.com template <typename ContainerType, typename ArgumentType> 18612852Sgabeblack@google.com iterator 18712852Sgabeblack@google.com bind(sc_vector_assembly<ContainerType, ArgumentType>) 18812852Sgabeblack@google.com { 18912852Sgabeblack@google.com sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 19012852Sgabeblack@google.com return iterator(); 19112852Sgabeblack@google.com } 19212852Sgabeblack@google.com 19312852Sgabeblack@google.com template <typename BindableContainer> 19412852Sgabeblack@google.com iterator 19512852Sgabeblack@google.com bind(BindableContainer &) 19612852Sgabeblack@google.com { 19712852Sgabeblack@google.com sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 19812852Sgabeblack@google.com return iterator(); 19912852Sgabeblack@google.com } 20012852Sgabeblack@google.com 20112852Sgabeblack@google.com template <typename BindableIterator> 20212852Sgabeblack@google.com iterator 20312852Sgabeblack@google.com bind(BindableIterator, BindableIterator) 20412852Sgabeblack@google.com { 20512852Sgabeblack@google.com sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 20612852Sgabeblack@google.com return iterator(); 20712852Sgabeblack@google.com } 20812852Sgabeblack@google.com 20912852Sgabeblack@google.com template <typename BindableIterator> 21012852Sgabeblack@google.com iterator 21112852Sgabeblack@google.com bind(BindableIterator, BindableIterator, iterator) 21212852Sgabeblack@google.com { 21312852Sgabeblack@google.com sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 21412852Sgabeblack@google.com return iterator(); 21512852Sgabeblack@google.com } 21612852Sgabeblack@google.com 21712852Sgabeblack@google.com template <typename ContainerType, typename ArgumentType> 21812852Sgabeblack@google.com iterator 21912852Sgabeblack@google.com operator () (sc_vector_assembly<ContainerType, ArgumentType> c) 22012852Sgabeblack@google.com { 22112852Sgabeblack@google.com sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 22212852Sgabeblack@google.com return iterator(); 22312852Sgabeblack@google.com } 22412852Sgabeblack@google.com 22512852Sgabeblack@google.com template <typename ArgumentContainer> 22612852Sgabeblack@google.com iterator 22712852Sgabeblack@google.com operator () (ArgumentContainer &) 22812852Sgabeblack@google.com { 22912852Sgabeblack@google.com sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 23012852Sgabeblack@google.com return iterator(); 23112852Sgabeblack@google.com } 23212852Sgabeblack@google.com 23312852Sgabeblack@google.com template <typename ArgumentIterator> 23412852Sgabeblack@google.com iterator 23512852Sgabeblack@google.com operator () (ArgumentIterator, ArgumentIterator) 23612852Sgabeblack@google.com { 23712852Sgabeblack@google.com sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 23812852Sgabeblack@google.com return iterator(); 23912852Sgabeblack@google.com } 24012852Sgabeblack@google.com 24112852Sgabeblack@google.com template <typename ArgumentIterator> 24212852Sgabeblack@google.com iterator 24312852Sgabeblack@google.com operator () (ArgumentIterator, ArgumentIterator, iterator) 24412852Sgabeblack@google.com { 24512852Sgabeblack@google.com sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 24612852Sgabeblack@google.com return iterator(); 24712852Sgabeblack@google.com } 24812852Sgabeblack@google.com 24912852Sgabeblack@google.com private: 25012852Sgabeblack@google.com // Disabled 25112852Sgabeblack@google.com sc_vector(const sc_vector &) : sc_vector_base() {} 25212852Sgabeblack@google.com sc_vector &operator = (const sc_vector &) { return *this; } 25312852Sgabeblack@google.com}; 25412852Sgabeblack@google.com 25512852Sgabeblack@google.comtemplate <typename T, typename MT> 25612852Sgabeblack@google.comclass sc_vector_assembly 25712852Sgabeblack@google.com{ 25812852Sgabeblack@google.com public: 25912852Sgabeblack@google.com friend sc_vector_assembly<T, MT> sc_assemble_vector<>( 26012852Sgabeblack@google.com sc_vector<T> &, MT(T::* member_ptr)); 26112852Sgabeblack@google.com 26212852Sgabeblack@google.com typedef size_t size_type; 26312852Sgabeblack@google.com // These next two types are supposed to be implementation defined. We'll 26412852Sgabeblack@google.com // just stick in a substitute for now, but these should probably not just 26512852Sgabeblack@google.com // be STL vector iterators. 26612852Sgabeblack@google.com typedef typename std::vector<T>::iterator iterator; 26712852Sgabeblack@google.com typedef typename std::vector<T>::const_iterator const_iterator; 26812852Sgabeblack@google.com typedef MT (T::* member_type); 26912852Sgabeblack@google.com 27012852Sgabeblack@google.com sc_vector_assembly(const sc_vector_assembly &) 27112852Sgabeblack@google.com { 27212852Sgabeblack@google.com sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 27312852Sgabeblack@google.com } 27412852Sgabeblack@google.com 27512852Sgabeblack@google.com iterator 27612852Sgabeblack@google.com begin() 27712852Sgabeblack@google.com { 27812852Sgabeblack@google.com sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 27912852Sgabeblack@google.com return iterator(); 28012852Sgabeblack@google.com } 28112852Sgabeblack@google.com iterator 28212852Sgabeblack@google.com end() 28312852Sgabeblack@google.com { 28412852Sgabeblack@google.com sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 28512852Sgabeblack@google.com return iterator(); 28612852Sgabeblack@google.com } 28712852Sgabeblack@google.com 28812852Sgabeblack@google.com const_iterator 28912852Sgabeblack@google.com cbegin() const 29012852Sgabeblack@google.com { 29112852Sgabeblack@google.com sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 29212852Sgabeblack@google.com return const_iterator(); 29312852Sgabeblack@google.com } 29412852Sgabeblack@google.com const_iterator 29512852Sgabeblack@google.com cend() const 29612852Sgabeblack@google.com { 29712852Sgabeblack@google.com sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 29812852Sgabeblack@google.com return const_iterator(); 29912852Sgabeblack@google.com } 30012852Sgabeblack@google.com 30112852Sgabeblack@google.com size_type 30212852Sgabeblack@google.com size() const 30312852Sgabeblack@google.com { 30412852Sgabeblack@google.com sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 30512852Sgabeblack@google.com return 0; 30612852Sgabeblack@google.com } 30712852Sgabeblack@google.com std::vector<sc_object *> 30812852Sgabeblack@google.com get_elements() const 30912852Sgabeblack@google.com { 31012852Sgabeblack@google.com sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 31112852Sgabeblack@google.com return *(std::vector<sc_object *> *)nullptr; 31212852Sgabeblack@google.com } 31312852Sgabeblack@google.com 31412852Sgabeblack@google.com typename iterator::reference 31512852Sgabeblack@google.com operator [] (size_type) 31612852Sgabeblack@google.com { 31712852Sgabeblack@google.com sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 31812852Sgabeblack@google.com return typename iterator::reference(); 31912852Sgabeblack@google.com } 32012852Sgabeblack@google.com typename const_iterator::reference 32112852Sgabeblack@google.com operator [] (size_type) const 32212852Sgabeblack@google.com { 32312852Sgabeblack@google.com sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 32412852Sgabeblack@google.com return typename iterator::reference(); 32512852Sgabeblack@google.com } 32612852Sgabeblack@google.com 32712852Sgabeblack@google.com typename iterator::reference 32812852Sgabeblack@google.com at(size_type) 32912852Sgabeblack@google.com { 33012852Sgabeblack@google.com sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 33112852Sgabeblack@google.com return typename iterator::reference(); 33212852Sgabeblack@google.com } 33312852Sgabeblack@google.com typename const_iterator::reference 33412852Sgabeblack@google.com at(size_type) const 33512852Sgabeblack@google.com { 33612852Sgabeblack@google.com sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 33712852Sgabeblack@google.com return typename iterator::reference(); 33812852Sgabeblack@google.com } 33912852Sgabeblack@google.com 34012852Sgabeblack@google.com template <typename ContainerType, typename ArgumentType> 34112852Sgabeblack@google.com iterator 34212852Sgabeblack@google.com bind(sc_vector_assembly<ContainerType, ArgumentType>) 34312852Sgabeblack@google.com { 34412852Sgabeblack@google.com sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 34512852Sgabeblack@google.com return iterator(); 34612852Sgabeblack@google.com } 34712852Sgabeblack@google.com 34812852Sgabeblack@google.com template <typename BindableContainer> 34912852Sgabeblack@google.com iterator 35012852Sgabeblack@google.com bind(BindableContainer &) 35112852Sgabeblack@google.com { 35212852Sgabeblack@google.com sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 35312852Sgabeblack@google.com return iterator(); 35412852Sgabeblack@google.com } 35512852Sgabeblack@google.com 35612852Sgabeblack@google.com template <typename BindableIterator> 35712852Sgabeblack@google.com iterator 35812852Sgabeblack@google.com bind(BindableIterator, BindableIterator) 35912852Sgabeblack@google.com { 36012852Sgabeblack@google.com sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 36112852Sgabeblack@google.com return iterator(); 36212852Sgabeblack@google.com } 36312852Sgabeblack@google.com 36412852Sgabeblack@google.com template <typename BindableIterator> 36512852Sgabeblack@google.com iterator 36612852Sgabeblack@google.com bind(BindableIterator, BindableIterator, iterator) 36712852Sgabeblack@google.com { 36812852Sgabeblack@google.com sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 36912852Sgabeblack@google.com return iterator(); 37012852Sgabeblack@google.com } 37112852Sgabeblack@google.com 37212852Sgabeblack@google.com template <typename BindableIterator> 37312852Sgabeblack@google.com iterator 37412852Sgabeblack@google.com bind(BindableIterator, BindableIterator, typename sc_vector<T>::iterator) 37512852Sgabeblack@google.com { 37612852Sgabeblack@google.com sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 37712852Sgabeblack@google.com return iterator(); 37812852Sgabeblack@google.com } 37912852Sgabeblack@google.com 38012852Sgabeblack@google.com template <typename ContainerType, typename ArgumentType> 38112852Sgabeblack@google.com iterator 38212852Sgabeblack@google.com operator () (sc_vector_assembly<ContainerType, ArgumentType>) 38312852Sgabeblack@google.com { 38412852Sgabeblack@google.com sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 38512852Sgabeblack@google.com return iterator(); 38612852Sgabeblack@google.com } 38712852Sgabeblack@google.com 38812852Sgabeblack@google.com template <typename ArgumentContainer> 38912852Sgabeblack@google.com iterator 39012852Sgabeblack@google.com operator () (ArgumentContainer &) 39112852Sgabeblack@google.com { 39212852Sgabeblack@google.com sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 39312852Sgabeblack@google.com return iterator(); 39412852Sgabeblack@google.com } 39512852Sgabeblack@google.com 39612852Sgabeblack@google.com template <typename ArgumentIterator> 39712852Sgabeblack@google.com iterator 39812852Sgabeblack@google.com operator () (ArgumentIterator, ArgumentIterator) 39912852Sgabeblack@google.com { 40012852Sgabeblack@google.com sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 40112852Sgabeblack@google.com return iterator(); 40212852Sgabeblack@google.com } 40312852Sgabeblack@google.com 40412852Sgabeblack@google.com template <typename ArgumentIterator> 40512852Sgabeblack@google.com iterator 40612852Sgabeblack@google.com operator () (ArgumentIterator, ArgumentIterator, iterator) 40712852Sgabeblack@google.com { 40812852Sgabeblack@google.com sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 40912852Sgabeblack@google.com return iterator(); 41012852Sgabeblack@google.com } 41112852Sgabeblack@google.com 41212852Sgabeblack@google.com template <typename ArgumentIterator> 41312852Sgabeblack@google.com iterator 41412852Sgabeblack@google.com operator () (ArgumentIterator, ArgumentIterator, 41512852Sgabeblack@google.com typename sc_vector<T>::iterator) 41612852Sgabeblack@google.com { 41712852Sgabeblack@google.com sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 41812852Sgabeblack@google.com return iterator(); 41912852Sgabeblack@google.com } 42012852Sgabeblack@google.com 42112852Sgabeblack@google.com private: 42212852Sgabeblack@google.com // Temporary constructor which will (eventually) actually bind an 42312852Sgabeblack@google.com // sc_vector_assembly instance to an sc_vector. 42412852Sgabeblack@google.com sc_vector_assembly<T, MT>() 42512852Sgabeblack@google.com { 42612852Sgabeblack@google.com sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 42712852Sgabeblack@google.com } 42812852Sgabeblack@google.com}; 42912852Sgabeblack@google.com 43012852Sgabeblack@google.comtemplate <typename T, typename MT> 43112852Sgabeblack@google.comsc_vector_assembly<T, MT> 43212852Sgabeblack@google.comsc_assemble_vector(sc_vector<T> &, MT(T::* member_ptr)) 43312852Sgabeblack@google.com{ 43412852Sgabeblack@google.com sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 43512852Sgabeblack@google.com return sc_vector_assembly<T, MT>(); 43612852Sgabeblack@google.com} 43712852Sgabeblack@google.com 43812852Sgabeblack@google.com} // namespace sc_core 43912852Sgabeblack@google.com 44012852Sgabeblack@google.com#endif //__SYSTEMC_EXT_UTIL_SC_VECTOR_HH__ 441