sc_vector.hh revision 12852:300397457d0b
111730Sar4jc@virginia.edu/* 211730Sar4jc@virginia.edu * Copyright 2018 Google, Inc. 311730Sar4jc@virginia.edu * 411730Sar4jc@virginia.edu * Redistribution and use in source and binary forms, with or without 511730Sar4jc@virginia.edu * modification, are permitted provided that the following conditions are 611730Sar4jc@virginia.edu * met: redistributions of source code must retain the above copyright 711730Sar4jc@virginia.edu * notice, this list of conditions and the following disclaimer; 811730Sar4jc@virginia.edu * redistributions in binary form must reproduce the above copyright 911730Sar4jc@virginia.edu * notice, this list of conditions and the following disclaimer in the 1011730Sar4jc@virginia.edu * documentation and/or other materials provided with the distribution; 1111730Sar4jc@virginia.edu * neither the name of the copyright holders nor the names of its 1211730Sar4jc@virginia.edu * contributors may be used to endorse or promote products derived from 1311730Sar4jc@virginia.edu * this software without specific prior written permission. 1411730Sar4jc@virginia.edu * 1511730Sar4jc@virginia.edu * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 1611730Sar4jc@virginia.edu * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 1711730Sar4jc@virginia.edu * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 1811730Sar4jc@virginia.edu * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 1911730Sar4jc@virginia.edu * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 2011730Sar4jc@virginia.edu * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 2111730Sar4jc@virginia.edu * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 2211730Sar4jc@virginia.edu * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 2311730Sar4jc@virginia.edu * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 2411730Sar4jc@virginia.edu * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 2511730Sar4jc@virginia.edu * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2611730Sar4jc@virginia.edu * 2711730Sar4jc@virginia.edu * Authors: Gabe Black 2811730Sar4jc@virginia.edu */ 2911730Sar4jc@virginia.edu 3011730Sar4jc@virginia.edu#ifndef __SYSTEMC_EXT_UTIL_SC_VECTOR_HH__ 3111730Sar4jc@virginia.edu#define __SYSTEMC_EXT_UTIL_SC_VECTOR_HH__ 3211730Sar4jc@virginia.edu 3311730Sar4jc@virginia.edu#include <stdint.h> 3411730Sar4jc@virginia.edu 3511730Sar4jc@virginia.edu#include <exception> 3611730Sar4jc@virginia.edu#include <vector> 3711730Sar4jc@virginia.edu 3811730Sar4jc@virginia.edu#include "../core/sc_object.hh" 3911730Sar4jc@virginia.edu#include "warn_unimpl.hh" 4011730Sar4jc@virginia.edu 4111730Sar4jc@virginia.edunamespace sc_core 4211730Sar4jc@virginia.edu{ 4311730Sar4jc@virginia.edu 4411730Sar4jc@virginia.edutemplate <typename T, typename MT> 4511730Sar4jc@virginia.educlass sc_vector_assembly; 4611730Sar4jc@virginia.edu 4711730Sar4jc@virginia.edutemplate <typename T> 4811730Sar4jc@virginia.educlass sc_vector; 4911730Sar4jc@virginia.edu 5011730Sar4jc@virginia.edutemplate <typename T, typename MT> 5111730Sar4jc@virginia.edusc_vector_assembly<T, MT> sc_assemble_vector( 5211730Sar4jc@virginia.edu sc_vector<T> &, MT(T::* member_ptr)); 5311730Sar4jc@virginia.edu 5411730Sar4jc@virginia.educlass sc_vector_base : public sc_object 5511730Sar4jc@virginia.edu{ 5611730Sar4jc@virginia.edu public: 5711730Sar4jc@virginia.edu typedef size_t size_type; 5811730Sar4jc@virginia.edu 5911730Sar4jc@virginia.edu virtual const char *kind() const { return "sc_vector"; } 6011730Sar4jc@virginia.edu size_type size() const; 6111730Sar4jc@virginia.edu const std::vector<sc_object *> &get_elements() const; 6211730Sar4jc@virginia.edu}; 6311730Sar4jc@virginia.edu 6411730Sar4jc@virginia.edutemplate <typename T> 6511730Sar4jc@virginia.educlass sc_vector_iter : 6611730Sar4jc@virginia.edu public std::iterator<std::random_access_iterator_tag, T> 6711730Sar4jc@virginia.edu{ 6811730Sar4jc@virginia.edu // Conforms to Random Access Iterator category. 6911730Sar4jc@virginia.edu // See ISO/IEC 14882:2003(E), 24.1 [lib.iterator.requirements] 7011730Sar4jc@virginia.edu 7111730Sar4jc@virginia.edu // Implementation-defined 7211730Sar4jc@virginia.edu}; 7311730Sar4jc@virginia.edu 7411730Sar4jc@virginia.edutemplate <typename T> 7511730Sar4jc@virginia.educlass sc_vector : public sc_vector_base 7611730Sar4jc@virginia.edu{ 7711730Sar4jc@virginia.edu public: 7811730Sar4jc@virginia.edu using sc_vector_base::size_type; 7911730Sar4jc@virginia.edu typedef sc_vector_iter<T> iterator; 8011730Sar4jc@virginia.edu typedef sc_vector_iter<const T> const_iterator; 8111730Sar4jc@virginia.edu 8211730Sar4jc@virginia.edu sc_vector() : sc_vector_base() 8311730Sar4jc@virginia.edu { 8411730Sar4jc@virginia.edu sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 8511730Sar4jc@virginia.edu } 8611730Sar4jc@virginia.edu explicit sc_vector(const char *) : sc_vector_base() 8711730Sar4jc@virginia.edu { 8811730Sar4jc@virginia.edu sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 8911730Sar4jc@virginia.edu } 9011730Sar4jc@virginia.edu sc_vector(const char *, size_type) : sc_vector_base() 9111730Sar4jc@virginia.edu { 9211730Sar4jc@virginia.edu sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 9311730Sar4jc@virginia.edu } 9411730Sar4jc@virginia.edu template <typename Creator> 9511730Sar4jc@virginia.edu sc_vector(const char *, size_type, Creator) : sc_vector_base() 9611730Sar4jc@virginia.edu { 9711730Sar4jc@virginia.edu sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 9811730Sar4jc@virginia.edu } 9911730Sar4jc@virginia.edu virtual ~sc_vector() {} 10011730Sar4jc@virginia.edu 10111730Sar4jc@virginia.edu void 10211730Sar4jc@virginia.edu init(size_type) 10311730Sar4jc@virginia.edu { 10411730Sar4jc@virginia.edu sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 10511730Sar4jc@virginia.edu } 10611730Sar4jc@virginia.edu static T * 10711730Sar4jc@virginia.edu create_element(const char *, size_type) 10811730Sar4jc@virginia.edu { 10911730Sar4jc@virginia.edu sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 11011730Sar4jc@virginia.edu return nullptr; 11111730Sar4jc@virginia.edu } 11211730Sar4jc@virginia.edu 11311730Sar4jc@virginia.edu template <typename Creator> 11411730Sar4jc@virginia.edu void 11511730Sar4jc@virginia.edu init(size_type, Creator) 11611730Sar4jc@virginia.edu { 11711730Sar4jc@virginia.edu sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 11811730Sar4jc@virginia.edu } 11911730Sar4jc@virginia.edu 12011730Sar4jc@virginia.edu T & 12111730Sar4jc@virginia.edu operator [] (size_type) 12211730Sar4jc@virginia.edu { 12311730Sar4jc@virginia.edu sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 12411730Sar4jc@virginia.edu return *(T *)nullptr; 12511730Sar4jc@virginia.edu } 12611730Sar4jc@virginia.edu const T & 12711730Sar4jc@virginia.edu operator [] (size_type) const 12811730Sar4jc@virginia.edu { 12911730Sar4jc@virginia.edu sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 13011730Sar4jc@virginia.edu return *(const T *)nullptr; 13111730Sar4jc@virginia.edu } 13211730Sar4jc@virginia.edu 13311730Sar4jc@virginia.edu T & 13411730Sar4jc@virginia.edu at(size_type) 13511730Sar4jc@virginia.edu { 13611730Sar4jc@virginia.edu sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 13711730Sar4jc@virginia.edu return *(T *)nullptr; 13811730Sar4jc@virginia.edu } 13911730Sar4jc@virginia.edu const T & 14011730Sar4jc@virginia.edu at(size_type) const 14111730Sar4jc@virginia.edu { 14211730Sar4jc@virginia.edu sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 14311730Sar4jc@virginia.edu return *(const T *)nullptr; 14411730Sar4jc@virginia.edu } 14511730Sar4jc@virginia.edu 14611730Sar4jc@virginia.edu iterator 14711730Sar4jc@virginia.edu begin() 14811730Sar4jc@virginia.edu { 14911730Sar4jc@virginia.edu sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 15011730Sar4jc@virginia.edu return iterator(); 15111730Sar4jc@virginia.edu } 15211730Sar4jc@virginia.edu iterator 15311730Sar4jc@virginia.edu end() 15411730Sar4jc@virginia.edu { 15511730Sar4jc@virginia.edu sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 15611730Sar4jc@virginia.edu return iterator(); 15711730Sar4jc@virginia.edu } 15811730Sar4jc@virginia.edu 15911730Sar4jc@virginia.edu const_iterator 16011730Sar4jc@virginia.edu begin() const 16111730Sar4jc@virginia.edu { 16211730Sar4jc@virginia.edu sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 16311730Sar4jc@virginia.edu return const_iterator(); 16411730Sar4jc@virginia.edu } 16511730Sar4jc@virginia.edu const_iterator 16611730Sar4jc@virginia.edu end() const 16711730Sar4jc@virginia.edu { 16811730Sar4jc@virginia.edu sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 16911730Sar4jc@virginia.edu return const_iterator(); 17011730Sar4jc@virginia.edu } 17111730Sar4jc@virginia.edu 17211730Sar4jc@virginia.edu const_iterator 17311730Sar4jc@virginia.edu cbegin() const 17411730Sar4jc@virginia.edu { 17511730Sar4jc@virginia.edu sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 17611730Sar4jc@virginia.edu return const_iterator(); 17711730Sar4jc@virginia.edu } 17811730Sar4jc@virginia.edu const_iterator 17911730Sar4jc@virginia.edu cend() const 18011730Sar4jc@virginia.edu { 18111730Sar4jc@virginia.edu sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 18211730Sar4jc@virginia.edu return const_iterator(); 18311730Sar4jc@virginia.edu } 18411730Sar4jc@virginia.edu 18511730Sar4jc@virginia.edu template <typename ContainerType, typename ArgumentType> 18611730Sar4jc@virginia.edu iterator 18711730Sar4jc@virginia.edu bind(sc_vector_assembly<ContainerType, ArgumentType>) 18811730Sar4jc@virginia.edu { 18911730Sar4jc@virginia.edu sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 19011730Sar4jc@virginia.edu return iterator(); 19111730Sar4jc@virginia.edu } 19211730Sar4jc@virginia.edu 19311730Sar4jc@virginia.edu template <typename BindableContainer> 19411730Sar4jc@virginia.edu iterator 19511730Sar4jc@virginia.edu bind(BindableContainer &) 19611730Sar4jc@virginia.edu { 19711730Sar4jc@virginia.edu sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 19811730Sar4jc@virginia.edu return iterator(); 19911730Sar4jc@virginia.edu } 20011730Sar4jc@virginia.edu 20111730Sar4jc@virginia.edu template <typename BindableIterator> 20211730Sar4jc@virginia.edu iterator 20311730Sar4jc@virginia.edu bind(BindableIterator, BindableIterator) 20411730Sar4jc@virginia.edu { 20511730Sar4jc@virginia.edu sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 20611730Sar4jc@virginia.edu return iterator(); 20711730Sar4jc@virginia.edu } 20811730Sar4jc@virginia.edu 20911730Sar4jc@virginia.edu template <typename BindableIterator> 21011730Sar4jc@virginia.edu iterator 21111730Sar4jc@virginia.edu bind(BindableIterator, BindableIterator, iterator) 21211730Sar4jc@virginia.edu { 21311730Sar4jc@virginia.edu sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 21411730Sar4jc@virginia.edu return iterator(); 21511730Sar4jc@virginia.edu } 21611730Sar4jc@virginia.edu 21711730Sar4jc@virginia.edu template <typename ContainerType, typename ArgumentType> 21811730Sar4jc@virginia.edu iterator 21911730Sar4jc@virginia.edu operator () (sc_vector_assembly<ContainerType, ArgumentType> c) 22011730Sar4jc@virginia.edu { 22111730Sar4jc@virginia.edu sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 22211730Sar4jc@virginia.edu return iterator(); 22311730Sar4jc@virginia.edu } 22411730Sar4jc@virginia.edu 22511730Sar4jc@virginia.edu template <typename ArgumentContainer> 22611730Sar4jc@virginia.edu iterator 22711730Sar4jc@virginia.edu operator () (ArgumentContainer &) 22811730Sar4jc@virginia.edu { 22911730Sar4jc@virginia.edu sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 23011730Sar4jc@virginia.edu return iterator(); 23111730Sar4jc@virginia.edu } 23211730Sar4jc@virginia.edu 23311730Sar4jc@virginia.edu template <typename ArgumentIterator> 23411730Sar4jc@virginia.edu iterator 23511730Sar4jc@virginia.edu operator () (ArgumentIterator, ArgumentIterator) 23611730Sar4jc@virginia.edu { 23711730Sar4jc@virginia.edu sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 23811730Sar4jc@virginia.edu return iterator(); 23911730Sar4jc@virginia.edu } 24011730Sar4jc@virginia.edu 24111730Sar4jc@virginia.edu template <typename ArgumentIterator> 24211730Sar4jc@virginia.edu iterator 24311730Sar4jc@virginia.edu operator () (ArgumentIterator, ArgumentIterator, iterator) 24411730Sar4jc@virginia.edu { 24511730Sar4jc@virginia.edu sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 24611730Sar4jc@virginia.edu return iterator(); 24711730Sar4jc@virginia.edu } 24811730Sar4jc@virginia.edu 24911730Sar4jc@virginia.edu private: 25011730Sar4jc@virginia.edu // Disabled 25111730Sar4jc@virginia.edu sc_vector(const sc_vector &) : sc_vector_base() {} 25211730Sar4jc@virginia.edu sc_vector &operator = (const sc_vector &) { return *this; } 25311730Sar4jc@virginia.edu}; 25411730Sar4jc@virginia.edu 25511730Sar4jc@virginia.edutemplate <typename T, typename MT> 25611730Sar4jc@virginia.educlass sc_vector_assembly 25711730Sar4jc@virginia.edu{ 25811730Sar4jc@virginia.edu public: 25911730Sar4jc@virginia.edu friend sc_vector_assembly<T, MT> sc_assemble_vector<>( 26011730Sar4jc@virginia.edu sc_vector<T> &, MT(T::* member_ptr)); 26111730Sar4jc@virginia.edu 26211730Sar4jc@virginia.edu typedef size_t size_type; 26311730Sar4jc@virginia.edu // These next two types are supposed to be implementation defined. We'll 26411730Sar4jc@virginia.edu // just stick in a substitute for now, but these should probably not just 26511730Sar4jc@virginia.edu // be STL vector iterators. 26611730Sar4jc@virginia.edu typedef typename std::vector<T>::iterator iterator; 26711730Sar4jc@virginia.edu typedef typename std::vector<T>::const_iterator const_iterator; 26811730Sar4jc@virginia.edu typedef MT (T::* member_type); 26911730Sar4jc@virginia.edu 27011730Sar4jc@virginia.edu sc_vector_assembly(const sc_vector_assembly &) 27111730Sar4jc@virginia.edu { 27211730Sar4jc@virginia.edu sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 27311730Sar4jc@virginia.edu } 27411730Sar4jc@virginia.edu 27511730Sar4jc@virginia.edu iterator 27611730Sar4jc@virginia.edu begin() 27711730Sar4jc@virginia.edu { 27811730Sar4jc@virginia.edu sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 27911730Sar4jc@virginia.edu return iterator(); 28011730Sar4jc@virginia.edu } 28111730Sar4jc@virginia.edu iterator 28211730Sar4jc@virginia.edu end() 28311730Sar4jc@virginia.edu { 28411730Sar4jc@virginia.edu sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 28511730Sar4jc@virginia.edu return iterator(); 28611730Sar4jc@virginia.edu } 28711730Sar4jc@virginia.edu 28811730Sar4jc@virginia.edu const_iterator 28911730Sar4jc@virginia.edu cbegin() const 29011730Sar4jc@virginia.edu { 29111730Sar4jc@virginia.edu sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 29211730Sar4jc@virginia.edu return const_iterator(); 29311730Sar4jc@virginia.edu } 29411730Sar4jc@virginia.edu const_iterator 29511730Sar4jc@virginia.edu cend() const 29611730Sar4jc@virginia.edu { 29711730Sar4jc@virginia.edu sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 29811730Sar4jc@virginia.edu return const_iterator(); 29911730Sar4jc@virginia.edu } 30011730Sar4jc@virginia.edu 30111730Sar4jc@virginia.edu size_type 30211730Sar4jc@virginia.edu size() const 30311730Sar4jc@virginia.edu { 30411730Sar4jc@virginia.edu sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 30511730Sar4jc@virginia.edu return 0; 30611730Sar4jc@virginia.edu } 30711730Sar4jc@virginia.edu std::vector<sc_object *> 30811730Sar4jc@virginia.edu get_elements() const 30911730Sar4jc@virginia.edu { 31011730Sar4jc@virginia.edu sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 31111730Sar4jc@virginia.edu return *(std::vector<sc_object *> *)nullptr; 31211730Sar4jc@virginia.edu } 31311730Sar4jc@virginia.edu 31411730Sar4jc@virginia.edu typename iterator::reference 31511730Sar4jc@virginia.edu operator [] (size_type) 31611730Sar4jc@virginia.edu { 31711730Sar4jc@virginia.edu sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 31811730Sar4jc@virginia.edu return typename iterator::reference(); 31911730Sar4jc@virginia.edu } 32011730Sar4jc@virginia.edu typename const_iterator::reference 32111730Sar4jc@virginia.edu operator [] (size_type) const 32211730Sar4jc@virginia.edu { 32311730Sar4jc@virginia.edu sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 32411730Sar4jc@virginia.edu return typename iterator::reference(); 32511730Sar4jc@virginia.edu } 32611730Sar4jc@virginia.edu 32711730Sar4jc@virginia.edu typename iterator::reference 32811730Sar4jc@virginia.edu at(size_type) 32911730Sar4jc@virginia.edu { 33011730Sar4jc@virginia.edu sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 33111730Sar4jc@virginia.edu return typename iterator::reference(); 33211730Sar4jc@virginia.edu } 33311730Sar4jc@virginia.edu typename const_iterator::reference 33411730Sar4jc@virginia.edu at(size_type) const 33511730Sar4jc@virginia.edu { 33611730Sar4jc@virginia.edu sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 33711730Sar4jc@virginia.edu return typename iterator::reference(); 33811730Sar4jc@virginia.edu } 33911730Sar4jc@virginia.edu 34011730Sar4jc@virginia.edu template <typename ContainerType, typename ArgumentType> 34111730Sar4jc@virginia.edu iterator 34211730Sar4jc@virginia.edu bind(sc_vector_assembly<ContainerType, ArgumentType>) 34311730Sar4jc@virginia.edu { 34411730Sar4jc@virginia.edu sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 34511730Sar4jc@virginia.edu return iterator(); 34611730Sar4jc@virginia.edu } 34711730Sar4jc@virginia.edu 34811730Sar4jc@virginia.edu template <typename BindableContainer> 34911730Sar4jc@virginia.edu iterator 35011730Sar4jc@virginia.edu bind(BindableContainer &) 35111730Sar4jc@virginia.edu { 35211730Sar4jc@virginia.edu sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 35311730Sar4jc@virginia.edu return iterator(); 35411730Sar4jc@virginia.edu } 35511730Sar4jc@virginia.edu 35611730Sar4jc@virginia.edu template <typename BindableIterator> 35711730Sar4jc@virginia.edu iterator 35811730Sar4jc@virginia.edu bind(BindableIterator, BindableIterator) 35911730Sar4jc@virginia.edu { 36011730Sar4jc@virginia.edu sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 36111730Sar4jc@virginia.edu return iterator(); 36211730Sar4jc@virginia.edu } 36311730Sar4jc@virginia.edu 36411730Sar4jc@virginia.edu template <typename BindableIterator> 36511730Sar4jc@virginia.edu iterator 36611730Sar4jc@virginia.edu bind(BindableIterator, BindableIterator, iterator) 36711730Sar4jc@virginia.edu { 36811730Sar4jc@virginia.edu sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 36911730Sar4jc@virginia.edu return iterator(); 37011730Sar4jc@virginia.edu } 37111730Sar4jc@virginia.edu 37211730Sar4jc@virginia.edu template <typename BindableIterator> 37311730Sar4jc@virginia.edu iterator 37411730Sar4jc@virginia.edu bind(BindableIterator, BindableIterator, typename sc_vector<T>::iterator) 37511730Sar4jc@virginia.edu { 37611730Sar4jc@virginia.edu sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 37711730Sar4jc@virginia.edu return iterator(); 37811730Sar4jc@virginia.edu } 37911730Sar4jc@virginia.edu 38011730Sar4jc@virginia.edu template <typename ContainerType, typename ArgumentType> 38111730Sar4jc@virginia.edu iterator 38211730Sar4jc@virginia.edu operator () (sc_vector_assembly<ContainerType, ArgumentType>) 38311730Sar4jc@virginia.edu { 38411730Sar4jc@virginia.edu sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 38511730Sar4jc@virginia.edu return iterator(); 38611730Sar4jc@virginia.edu } 38711730Sar4jc@virginia.edu 38811730Sar4jc@virginia.edu template <typename ArgumentContainer> 38911730Sar4jc@virginia.edu iterator 39011730Sar4jc@virginia.edu operator () (ArgumentContainer &) 39111730Sar4jc@virginia.edu { 39211730Sar4jc@virginia.edu sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 39311730Sar4jc@virginia.edu return iterator(); 39411730Sar4jc@virginia.edu } 39511730Sar4jc@virginia.edu 39611730Sar4jc@virginia.edu template <typename ArgumentIterator> 39711730Sar4jc@virginia.edu iterator 39811730Sar4jc@virginia.edu operator () (ArgumentIterator, ArgumentIterator) 39911730Sar4jc@virginia.edu { 40011730Sar4jc@virginia.edu sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 40111730Sar4jc@virginia.edu return iterator(); 40211730Sar4jc@virginia.edu } 40311730Sar4jc@virginia.edu 40411730Sar4jc@virginia.edu template <typename ArgumentIterator> 40511730Sar4jc@virginia.edu iterator 40611730Sar4jc@virginia.edu operator () (ArgumentIterator, ArgumentIterator, iterator) 40711730Sar4jc@virginia.edu { 40811730Sar4jc@virginia.edu sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 40911730Sar4jc@virginia.edu return iterator(); 41011730Sar4jc@virginia.edu } 41111730Sar4jc@virginia.edu 41211730Sar4jc@virginia.edu template <typename ArgumentIterator> 41311730Sar4jc@virginia.edu iterator 41411730Sar4jc@virginia.edu operator () (ArgumentIterator, ArgumentIterator, 41511730Sar4jc@virginia.edu typename sc_vector<T>::iterator) 41611730Sar4jc@virginia.edu { 41711730Sar4jc@virginia.edu sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 41811730Sar4jc@virginia.edu return iterator(); 41911730Sar4jc@virginia.edu } 42011730Sar4jc@virginia.edu 42111730Sar4jc@virginia.edu private: 42211730Sar4jc@virginia.edu // Temporary constructor which will (eventually) actually bind an 42311730Sar4jc@virginia.edu // sc_vector_assembly instance to an sc_vector. 42411730Sar4jc@virginia.edu sc_vector_assembly<T, MT>() 42511730Sar4jc@virginia.edu { 42611730Sar4jc@virginia.edu sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 42711730Sar4jc@virginia.edu } 42811730Sar4jc@virginia.edu}; 42911730Sar4jc@virginia.edu 43011730Sar4jc@virginia.edutemplate <typename T, typename MT> 43111730Sar4jc@virginia.edusc_vector_assembly<T, MT> 43211730Sar4jc@virginia.edusc_assemble_vector(sc_vector<T> &, MT(T::* member_ptr)) 43311730Sar4jc@virginia.edu{ 43411730Sar4jc@virginia.edu sc_utils_warn_unimpl(__PRETTY_FUNCTION__); 43511730Sar4jc@virginia.edu return sc_vector_assembly<T, MT>(); 43611730Sar4jc@virginia.edu} 43711730Sar4jc@virginia.edu 43811730Sar4jc@virginia.edu} // namespace sc_core 43911730Sar4jc@virginia.edu 44011730Sar4jc@virginia.edu#endif //__SYSTEMC_EXT_UTIL_SC_VECTOR_HH__ 441