From 21a8cb71eef688527b4e3b77d54d48cf4eea3103 Mon Sep 17 00:00:00 2001 From: Maciej Suminski Date: Wed, 26 Nov 2014 11:14:51 +0100 Subject: [PATCH] vvp: Handles for dynamic array ranges. --- vvp/vpi_darray.cc | 19 ++++++++++++++++--- vvp/vpi_priv.h | 1 + 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/vvp/vpi_darray.cc b/vvp/vpi_darray.cc index bb1fbd055..49a041335 100644 --- a/vvp/vpi_darray.cc +++ b/vvp/vpi_darray.cc @@ -57,12 +57,14 @@ unsigned __vpiDarrayVar::get_size() const vpiHandle __vpiDarrayVar::get_left_range() { - return NULL; + left_range_.set_value(0); + return &left_range_; } vpiHandle __vpiDarrayVar::get_right_range() { - return NULL; + right_range_.set_value(get_size() - 1); + return &right_range_; } int __vpiDarrayVar::get_word_size() const @@ -141,7 +143,18 @@ char* __vpiDarrayVar::vpi_get_str(int code) vpiHandle __vpiDarrayVar::vpi_handle(int code) { - return 0; + switch (code) { + case vpiLeftRange: + return get_left_range(); + + case vpiRightRange: + return get_right_range(); + + //case vpiModule: + //return vpip_module(scope_); + } + + return 0; } vpiHandle __vpiDarrayVar::vpi_index(int index) diff --git a/vvp/vpi_priv.h b/vvp/vpi_priv.h index 108b225f1..d1d2aabf6 100644 --- a/vvp/vpi_priv.h +++ b/vvp/vpi_priv.h @@ -589,6 +589,7 @@ class __vpiDarrayVar : public __vpiBaseVar, public __vpiArrayBase { protected: vvp_darray*get_vvp_darray() const; + __vpiDecConst left_range_, right_range_; }; extern vpiHandle vpip_make_darray_var(const char*name, vvp_net_t*net);