29#ifndef __SYSTEMC_EXT_DT_BIT_SC_BIT_PROXIES_HH__
30#define __SYSTEMC_EXT_DT_BIT_SC_BIT_PROXIES_HH__
41template <
class X,
class Traits>
42class sc_bitref_conv_r;
51template <
class X,
class Y>
53template <
class X,
class Y>
61template <
class T,
class Traits=
typename T::traits_type>
69#if __cplusplus >= 201103L
71 explicit operator bool()
const
92class sc_bitref_r :
public sc_bitref_conv_r<T>
158template <
class T1,
class T2>
164template <
class T1,
class T2>
169template <
class T1,
class T2>
174template <
class T1,
class T2>
177template <
class T1,
class T2>
181template <
class T1,
class T2>
185template <
class T1,
class T2>
189template <
class T1,
class T2,
class T3>
193template <
class T1,
class T2>
222template <
class T1,
class T2>
226template <
class T1,
class T2>
230template <
class T1,
class T2,
class T3>
234template <
class T1,
class T2>
263template <
class T1,
class T2>
267template <
class T1,
class T2>
271template <
class T1,
class T2>
275template <
class T1,
class T2>
279template <
class T1,
class T2,
class T3>
283template <
class T1,
class T2,
class T3>
287template <
class T1,
class T2>
291template <
class T1,
class T2>
320template <
class T1,
class T2>
324template <
class T1,
class T2>
328template <
class T1,
class T2>
332template <
class T1,
class T2>
336template <
class T1,
class T2,
class T3>
340template <
class T1,
class T2,
class T3>
344template <
class T1,
class T2>
348template <
class T1,
class T2>
553 void scan(::std::istream &is=::std::cin);
563template <
class T1,
class T2>
567template <
class T1,
class T2>
571template <
class T1,
class T2,
class T3>
575template <
class T1,
class T2>
580template <
class T1,
class T2>
584template <
class T1,
class T2>
588template <
class T1,
class T2,
class T3>
592template <
class T1,
class T2>
662template <
class T1,
class T2>
666template <
class T1,
class T2>
670template <
class T1,
class T2,
class T3>
674template <
class T1,
class T2>
703template <
class T1,
class T2>
707template <
class T1,
class T2>
711template <
class T1,
class T2,
class T3>
715template <
class T1,
class T2>
742template <
class T1,
class T2>
746template <
class T1,
class T2>
750template <
class T1,
class T2>
754template <
class T1,
class T2>
758template <
class T1,
class T2,
class T3>
762template <
class T1,
class T2,
class T3>
766template <
class T1,
class T2>
770template <
class T1,
class T2>
799template <
class T1,
class T2>
803template <
class T1,
class T2>
807template <
class T1,
class T2>
811template <
class T1,
class T2>
815template <
class T1,
class T2,
class T3>
819template <
class T1,
class T2,
class T3>
823template <
class T1,
class T2>
827template <
class T1,
class T2>
980 void scan(::std::istream & =::std::cin);
990template <
class T1,
class T2>
994template <
class T1,
class T2>
998template <
class T1,
class T2,
class T3>
1002template <
class T1,
class T2>
1007template <
class T1,
class T2>
1011template <
class T1,
class T2>
1015template <
class T1,
class T2,
class T3>
1019template <
class T1,
class T2>
1033template <
class X,
class Y>
1041 m_left(const_cast<X &>(left_)),
m_right(const_cast<Y &>(right_)),
1091template <
class T1,
class T2,
class T3>
1095template <
class T1,
class T2,
class T3>
1099template <
class T1,
class T2,
class T3,
class T4>
1103template <
class T1,
class T2,
class T3>
1107template <
class T1,
class T2>
1111template <
class T1,
class T2>
1115template <
class T1,
class T2>
1119template <
class T1,
class T2>
1123template <
class T1,
class T2>
1127template <
class T1,
class T2>
1132template <
class T1,
class T2,
class T3>
1136template <
class T1,
class T2,
class T3>
1140template <
class T1,
class T2,
class T3,
class T4>
1144template <
class T1,
class T2,
class T3>
1148template <
class T1,
class T2>
1152template <
class T1,
class T2>
1156template <
class T1,
class T2>
1160template <
class T1,
class T2>
1164template <
class T1,
class T2>
1168template <
class T1,
class T2>
1173template <
class T1,
class T2,
class T3>
1177template <
class T1,
class T2,
class T3>
1181template <
class T1,
class T2,
class T3>
1185template <
class T1,
class T2,
class T3>
1189template <
class T1,
class T2,
class T3,
class T4>
1193template <
class T1,
class T2,
class T3,
class T4>
1197template <
class T1,
class T2,
class T3>
1201template <
class T1,
class T2,
class T3>
1205template <
class T1,
class T2>
1209template <
class T1,
class T2>
1213template <
class T1,
class T2>
1217template <
class T1,
class T2>
1221template <
class T1,
class T2>
1225template <
class T1,
class T2>
1230template <
class T1,
class T2,
class T3>
1234template <
class T1,
class T2,
class T3>
1238template <
class T1,
class T2,
class T3>
1242template <
class T1,
class T2,
class T3>
1246template <
class T1,
class T2,
class T3,
class T4>
1250template <
class T1,
class T2,
class T3,
class T4>
1254template <
class T1,
class T2,
class T3>
1258template <
class T1,
class T2,
class T3>
1262template <
class T1,
class T2>
1266template <
class T1,
class T2>
1270template <
class T1,
class T2>
1274template <
class T1,
class T2>
1278template <
class T1,
class T2>
1282template <
class T1,
class T2>
1293template <
class X,
class Y>
1419 void scan(::std::istream & =::std::cin);
1429template <
class T1,
class T2,
class T3>
1433template <
class T1,
class T2,
class T3>
1437template <
class T1,
class T2,
class T3,
class T4>
1441template <
class T1,
class T2,
class T3>
1446template <
class T1,
class T2,
class T3>
1450template <
class T1,
class T2,
class T3>
1454template <
class T1,
class T2,
class T3,
class T4>
1458template <
class T1,
class T2,
class T3>
1463template <
class T1,
class T2>
1476template <
class T1,
class T2>
1480template <
class T1,
class T2>
1484template <
class T1,
class T2,
class T3>
1488template <
class T1,
class T2>
1515template <
class T1,
class T2>
1519template <
class T1,
class T2>
1523template <
class T1,
class T2,
class T3>
1527template <
class T1,
class T2>
1551template <
class T1,
class T2>
1555template <
class T1,
class T2>
1559template <
class T1,
class T2>
1563template <
class T1,
class T2>
1567template <
class T1,
class T2,
class T3>
1571template <
class T1,
class T2,
class T3>
1575template <
class T1,
class T2>
1578template <
class T1,
class T2>
1602template <
class T1,
class T2>
1606template <
class T1,
class T2>
1610template <
class T1,
class T2>
1614template <
class T1,
class T2>
1618template <
class T1,
class T2,
class T3>
1622template <
class T1,
class T2,
class T3>
1626template <
class T1,
class T2>
1629template <
class T1,
class T2>
1652template <
class T1,
class T2>
1656template <
class T1,
class T2>
1660template <
class T1,
class T2,
class T3>
1664template <
class T1,
class T2>
1668template <
class T1,
class T2>
1671template <
class T1,
class T2>
1674template <
class T1,
class T2,
class T3>
1678template <
class T1,
class T2>
1693template <
class T1,
class T2>
1701template <
class T1,
class T2>
1709template <
class T1,
class T2>
1717template <
class T1,
class T2>
1721 return ((
int)
a.value() ==
b.value());
1724template <
class T1,
class T2>
1728 return ((
int)
a.value() !=
b.value());
1737 return m_obj.get_bit(m_index);
1769template <
class T1,
class T2>
1774 *
a.clone(), *
b.clone(), 3);
1777template <
class T1,
class T2>
1778inline sc_concref_r<sc_bitref_r<T1>, sc_subref_r<T2> >
1782 *
a.clone(), *
b.clone(), 3);
1785template <
class T1,
class T2,
class T3>
1786inline sc_concref_r<sc_bitref_r<T1>, sc_concref_r<T2, T3> >
1790 *
a.clone(), *
b.clone(), 3);
1793template <
class T1,
class T2>
1794inline sc_concref_r<sc_bitref_r<T1>, T2>
1798 *
a.clone(),
b.back_cast(), 1);
1802template <
class T1,
class T2>
1804sc_concref_r<sc_bitref_r<T1>, sc_bitref_r<T2> >
1808 *
a.clone(), *
b.clone(), 3);
1811template <
class T1,
class T2>
1812inline sc_concref_r<sc_bitref_r<T1>, sc_subref_r<T2> >
1816 *
a.clone(), *
b.clone(), 3);
1819template <
class T1,
class T2,
class T3>
1820inline sc_concref_r<sc_bitref_r<T1>, sc_concref_r<T2, T3> >
1824 *
a.clone(), *
b.clone(), 3);
1827template <
class T1,
class T2>
1828inline sc_concref_r<sc_bitref_r<T1>, T2>
1832 *
a.clone(),
b.back_cast(), 1);
1836template <
class T1,
class T2>
1837inline sc_concref_r<sc_bitref_r<T1>, sc_bitref_r<T2> >
1841 *
a.clone(), *
b.clone(), 3);
1844template <
class T1,
class T2>
1845inline sc_concref_r<sc_bitref_r<T1>, sc_bitref_r<T2> >
1849 *
a.clone(), *
b.clone(), 3);
1852template <
class T1,
class T2>
1853inline sc_concref_r<sc_bitref_r<T1>, sc_subref_r<T2> >
1857 *
a.clone(), *
b.clone(), 3);
1860template <
class T1,
class T2>
1861inline sc_concref_r<sc_bitref_r<T1>, sc_subref_r<T2> >
1865 *
a.clone(), *
b.clone(), 3);
1868template <
class T1,
class T2,
class T3>
1869inline sc_concref_r<sc_bitref_r<T1>, sc_concref_r<T2, T3> >
1873 *
a.clone(), *
b.clone(), 3);
1876template <
class T1,
class T2,
class T3>
1877inline sc_concref_r<sc_bitref_r<T1>, sc_concref_r<T2, T3> >
1881 *
a.clone(), *
b.clone(), 3);
1884template <
class T1,
class T2>
1885inline sc_concref_r<sc_bitref_r<T1>, T2>
1889 *
a.clone(),
b.back_cast(), 1);
1892template <
class T1,
class T2>
1893inline sc_concref_r<sc_bitref_r<T1>, T2>
1897 *
a.clone(),
b.back_cast(), 1);
1901template <
class T1,
class T2>
1902inline sc_concref_r<sc_bitref_r<T1>, sc_bitref_r<T2> >
1906 *
a.clone(), *
b.clone(), 3);
1909template <
class T1,
class T2>
1910inline sc_concref_r<sc_bitref_r<T1>, sc_bitref_r<T2> >
1914 *
a.clone(), *
b.clone(), 3);
1917template <
class T1,
class T2>
1918inline sc_concref_r<sc_bitref_r<T1>, sc_subref_r<T2> >
1922 *
a.clone(), *
b.clone(), 3);
1925template <
class T1,
class T2>
1926inline sc_concref_r<sc_bitref_r<T1>, sc_subref_r<T2> >
1930 *
a.clone(), *
b.clone(), 3);
1933template <
class T1,
class T2,
class T3>
1934inline sc_concref_r<sc_bitref_r<T1>, sc_concref_r<T2, T3> >
1938 *
a.clone(), *
b.clone(), 3);
1941template <
class T1,
class T2,
class T3>
1942inline sc_concref_r<sc_bitref_r<T1>, sc_concref_r<T2, T3> >
1946 *
a.clone(), *
b.clone(), 3);
1949template <
class T1,
class T2>
1950inline sc_concref_r<sc_bitref_r<T1>, T2>
1956template <
class T1,
class T2>
1957inline sc_concref_r<sc_bitref_r<T1>, T2>
1972inline sc_bitref<X> &
1975 this->m_obj.set_bit(this->m_index,
a.value());
1984 this->m_obj.
set_bit(this->m_index,
a.value());
2070 this->m_obj.set_bit(this->m_index, value);
2080 unsigned int bi = this->m_index % (8 *
sizeof(
sc_digit));
2082 unsigned int wi = this->m_index / (8 *
sizeof(
sc_digit));
2084 temp = this->m_obj.get_word(wi);
2085 temp = (temp & ~(1 << bi)) | ((w & 1) << bi);
2086 this->m_obj.set_word(wi, temp);
2096 unsigned int bi = this->m_index % (8 *
sizeof(
sc_digit));
2098 unsigned int wi = this->m_index / (8 *
sizeof(
sc_digit));
2100 temp = this->m_obj.get_cword(wi);
2101 temp = (temp & ~(1 << bi)) | ((w & 1) << bi);
2102 this->m_obj.set_cword(wi, temp);
2119template <
class T1,
class T2>
2124 *
a.clone(), *
b.clone(), 3);
2127template <
class T1,
class T2>
2128inline sc_concref<sc_bitref<T1>, sc_subref<T2> >
2132 *
a.clone(), *
b.clone(), 3);
2135template <
class T1,
class T2,
class T3>
2136inline sc_concref<sc_bitref<T1>, sc_concref<T2, T3> >
2140 *
a.clone(), *
b.clone(), 3);
2143template <
class T1,
class T2>
2144inline sc_concref<sc_bitref<T1>, T2>
2151template <
class T1,
class T2>
2152inline sc_concref<sc_bitref<T1>, sc_bitref<T2> >
2156 *
a.clone(), *
b.clone(), 3);
2159template <
class T1,
class T2>
2160inline sc_concref<sc_bitref<T1>, sc_subref<T2> >
2164 *
a.clone(), *
b.clone(), 3);
2167template <
class T1,
class T2,
class T3>
2168inline sc_concref<sc_bitref<T1>, sc_concref<T2, T3> >
2172 *
a.clone(), *
b.clone(), 3);
2175template <
class T1,
class T2>
2176inline sc_concref<sc_bitref<T1>, T2>
2183inline ::std::istream &
2201 int len = m_obj.length();
2202 if (m_hi < 0 || m_hi >=
len || m_lo < 0 || m_lo >=
len) {
2207 m_len = m_lo - m_hi + 1;
2209 m_len = m_hi - m_lo + 1;
2219 return m_obj.get_bit(m_lo - n);
2221 return m_obj.get_bit(m_lo + n);
2230 m_obj.set_bit(m_lo - n, value);
2232 m_obj.set_bit(m_lo + n, value);
2247 for (
int n = n1; n > n2; n--) {
2253 for (
int n = n1; n < n2; n++) {
2270 for (
int n = n1; n > n2; n--) {
2278 for (
int n = n1; n < n2; n++) {
2298 for (
int n = n1; n > n2; n--) {
2299 result |= ((m_obj[n].value() &
SC_DIGIT_TWO) >> 1) << k++;
2304 for (
int n = n1; n < n2; n++) {
2305 result |= ((m_obj[n].value() &
SC_DIGIT_TWO) >> 1) << k++;
2321 for (
int n = n1; n > n2; n--) {
2329 for (
int n = n1; n < n2; n++) {
2343 for (
int i = 0; i < sz; ++i) {
2352template <
class T1,
class T2>
2357 *
a.clone(), *
b.clone(), 3);
2360template <
class T1,
class T2>
2361inline sc_concref_r<sc_subref_r<T1>, sc_subref_r<T2> >
2365 *
a.clone(), *
b.clone(), 3);
2368template <
class T1,
class T2,
class T3>
2369inline sc_concref_r<sc_subref_r<T1>, sc_concref_r<T2, T3> >
2373 *
a.clone(), *
b.clone(), 3);
2376template <
class T1,
class T2>
2377inline sc_concref_r<sc_subref_r<T1>, T2>
2381 *
a.clone(),
b.back_cast(), 1);
2385template <
class T1,
class T2>
2386inline sc_concref_r<sc_subref_r<T1>, sc_bitref_r<T2> >
2390 *
a.clone(), *
b.clone(), 3);
2393template <
class T1,
class T2>
2394inline sc_concref_r<sc_subref_r<T1>, sc_subref_r<T2> >
2398 *
a.clone(), *
b.clone(), 3);
2401template <
class T1,
class T2,
class T3>
2402inline sc_concref_r<sc_subref_r<T1>, sc_concref_r<T2, T3> >
2406 *
a.clone(), *
b.clone(), 3);
2409template <
class T1,
class T2>
2410inline sc_concref_r<sc_subref_r<T1>, T2>
2417template <
class T1,
class T2>
2418inline sc_concref_r<sc_subref_r<T1>, sc_bitref_r<T2> >
2422 *
a.clone(), *
b.clone(), 3);
2425template <
class T1,
class T2>
2426inline sc_concref_r<sc_subref_r<T1>, sc_bitref_r<T2> >
2430 *
a.clone(), *
b.clone(), 3);
2433template <
class T1,
class T2>
2434inline sc_concref_r<sc_subref_r<T1>, sc_subref_r<T2> >
2438 *
a.clone(), *
b.clone(), 3);
2441template <
class T1,
class T2>
2442inline sc_concref_r<sc_subref_r<T1>, sc_subref_r<T2> >
2446 *
a.clone(), *
b.clone(), 3);
2449template <
class T1,
class T2,
class T3>
2451sc_concref_r<sc_subref_r<T1>, sc_concref_r<T2, T3> >
2455 *
a.clone(), *
b.clone(), 3);
2458template <
class T1,
class T2,
class T3>
2459inline sc_concref_r<sc_subref_r<T1>, sc_concref_r<T2, T3> >
2463 *
a.clone(), *
b.clone(), 3);
2466template <
class T1,
class T2>
2467inline sc_concref_r<sc_subref_r<T1>, T2>
2473template <
class T1,
class T2>
2474inline sc_concref_r<sc_subref_r<T1>, T2>
2481template <
class T1,
class T2>
2482inline sc_concref_r<sc_subref_r<T1>, sc_bitref_r<T2> >
2486 *
a.clone(), *
b.clone(), 3);
2489template <
class T1,
class T2>
2490inline sc_concref_r<sc_subref_r<T1>, sc_bitref_r<T2> >
2494 *
a.clone(), *
b.clone(), 3);
2497template <
class T1,
class T2>
2498inline sc_concref_r<sc_subref_r<T1>, sc_subref_r<T2> >
2502 *
a.clone(), *
b.clone(), 3);
2505template <
class T1,
class T2>
2506inline sc_concref_r<sc_subref_r<T1>, sc_subref_r<T2> >
2510 *
a.clone(), *
b.clone(), 3);
2513template <
class T1,
class T2,
class T3>
2514inline sc_concref_r<sc_subref_r<T1>, sc_concref_r<T2, T3> >
2518 *
a.clone(), *
b.clone(), 3);
2521template <
class T1,
class T2,
class T3>
2522inline sc_concref_r<sc_subref_r<T1>, sc_concref_r<T2, T3> >
2526 *
a.clone(), *
b.clone(), 3);
2529template <
class T1,
class T2>
2530inline sc_concref_r<sc_subref_r<T1>, T2>
2536template <
class T1,
class T2>
2537inline sc_concref_r<sc_subref_r<T1>, T2>
2565template <
class T1,
class T2>
2571 *
a.clone(), *
b.clone(), 3);
2574template <
class T1,
class T2>
2575inline sc_concref<sc_subref<T1>, sc_subref<T2> >
2579 *
a.clone(), *
b.clone(), 3);
2582template <
class T1,
class T2,
class T3>
2583inline sc_concref<sc_subref<T1>, sc_concref<T2,T3> >
2587 *
a.clone(), *
b.clone(), 3);
2590template <
class T1,
class T2>
2591inline sc_concref<sc_subref<T1>, T2>
2598template <
class T1,
class T2>
2599inline sc_concref<sc_subref<T1>, sc_bitref<T2> >
2603 *
a.clone(), *
b.clone(), 3);
2606template <
class T1,
class T2>
2607inline sc_concref<sc_subref<T1>, sc_subref<T2> >
2611 *
a.clone(), *
b.clone(), 3);
2614template <
class T1,
class T2,
class T3>
2615inline sc_concref<sc_subref<T1>, sc_concref<T2, T3> >
2619 *
a.clone(), *
b.clone(), 3);
2622template <
class T1,
class T2>
2623inline sc_concref<sc_subref<T1>, T2>
2630inline ::std::istream &
2644template <
class X,
class Y>
2647 if (--m_refs == 0) {
2649 if (m_delete == 0) {
2662template <
class X,
class Y>
2666 int r_len = m_right.length();
2669 }
else if (n < r_len + m_left.length()) {
2670 return value_type(m_left.get_bit(n - r_len));
2677template <
class X,
class Y>
2681 int r_len = m_right.length();
2683 m_right.set_bit(n,
typename Y::value_type(v));
2684 }
else if (n < r_len + m_left.length()) {
2685 m_left.set_bit(n - r_len,
typename X::value_type(v));
2691template <
class X,
class Y>
2695 if (i < 0 || i >= size()) {
2700 int r_len = r.length();
2703 return r.get_word(i);
2710 return l.get_word(j);
2715 sc_digit rl_mask = ~SC_DIGIT_ZERO >> nshift;
2716 return ((r.get_word(i) & rl_mask) | (l.get_word(0) << shift));
2720 return ((l.get_word(j - 1) >> nshift) | (l.get_word(j) << shift));
2722 return (l.get_word(j - 1) >> nshift);
2725template <
class X,
class Y>
2729 if (i < 0 || i >= size()) {
2734 int r_len = r.length();
2750 sc_digit lh_mask = ~SC_DIGIT_ZERO << nshift;
2752 sc_digit rl_mask = ~SC_DIGIT_ZERO >> nshift;
2753 r.set_word(i, w & rl_mask);
2754 l.set_word(0, (l.get_word(0) & lh_mask) | (w >> shift));
2758 sc_digit ll_mask = ~SC_DIGIT_ZERO >> shift;
2759 l.set_word(j - 1, (l.get_word(j - 1) & ll_mask) | (w << nshift));
2761 l.set_word(j, (l.get_word(j) & lh_mask) | (w >> shift));
2764template <
class X,
class Y>
2768 if (i < 0 || i >= size()) {
2773 int r_len = r.length();
2776 return r.get_cword(i);
2783 return l.get_cword(j);
2788 sc_digit rl_mask = ~SC_DIGIT_ZERO >> nshift;
2789 return ((r.get_cword(i) & rl_mask) | (l.get_cword(0) << shift));
2793 return ((l.get_cword(j - 1) >> nshift) | (l.get_cword(j) << shift));
2795 return (l.get_cword( j - 1 ) >> nshift);
2798template <
class X,
class Y>
2802 if (i < 0 || i >= size()) {
2807 int r_len = r.length();
2823 sc_digit lh_mask = ~SC_DIGIT_ZERO << nshift;
2825 sc_digit rl_mask = ~SC_DIGIT_ZERO >> nshift;
2826 r.set_cword(i, w & rl_mask);
2827 l.set_cword(0, (l.get_cword(0) & lh_mask) | (w >> shift));
2831 sc_digit ll_mask = ~SC_DIGIT_ZERO >> shift;
2832 l.set_cword(j - 1, (l.get_cword(j - 1) & ll_mask) | (w << nshift));
2834 l.set_cword(j, (l.get_cword(j) & lh_mask) | (w >> shift));
2838template <
class T1,
class T2,
class T3>
2843 *
a.clone(), *
b.clone(), 3);
2846template <
class T1,
class T2,
class T3>
2847inline sc_concref_r<sc_concref_r<T1, T2>, sc_subref_r<T3> >
2851 *
a.clone(), *
b.clone(), 3);
2854template <
class T1,
class T2,
class T3,
class T4>
2855inline sc_concref_r<sc_concref_r<T1, T2>, sc_concref_r<T3, T4> >
2859 *
a.clone(), *
b.clone(), 3);
2862template <
class T1,
class T2,
class T3>
2863inline sc_concref_r<sc_concref_r<T1, T2>, T3>
2867 *
a.clone(),
b.back_cast(), 1);
2871template <
class T1,
class T2,
class T3>
2872inline sc_concref_r<sc_concref_r<T1, T2>, sc_bitref_r<T3> >
2876 *
a.clone(), *
b.clone(), 3);
2879template <
class T1,
class T2,
class T3>
2880inline sc_concref_r<sc_concref_r<T1, T2>, sc_subref_r<T3> >
2884 *
a.clone(), *
b.clone(), 3);
2887template <
class T1,
class T2,
class T3,
class T4>
2888inline sc_concref_r<sc_concref_r<T1, T2>, sc_concref_r<T3, T4> >
2892 *
a.clone(), *
b.clone(), 3);
2895template <
class T1,
class T2,
class T3>
2896inline sc_concref_r<sc_concref_r<T1, T2>, T3>
2900 *
a.clone(),
b.back_cast(), 1);
2904template <
class T1,
class T2,
class T3>
2905inline sc_concref_r<sc_concref_r<T1, T2>, sc_bitref_r<T3> >
2909 *
a.clone(), *
b.clone(), 3);
2912template <
class T1,
class T2,
class T3>
2913inline sc_concref_r<sc_concref_r<T1, T2>, sc_bitref_r<T3> >
2917 *
a.clone(), *
b.clone(), 3);
2920template <
class T1,
class T2,
class T3>
2922sc_concref_r<sc_concref_r<T1, T2>, sc_subref_r<T3> >
2926 *
a.clone(), *
b.clone(), 3);
2929template <
class T1,
class T2,
class T3>
2930inline sc_concref_r<sc_concref_r<T1, T2>, sc_subref_r<T3> >
2934 *
a.clone(), *
b.clone(), 3);
2937template <
class T1,
class T2,
class T3,
class T4>
2938inline sc_concref_r<sc_concref_r<T1, T2>, sc_concref_r<T3, T4> >
2942 *
a.clone(), *
b.clone(), 3);
2945template <
class T1,
class T2,
class T3,
class T4>
2946inline sc_concref_r<sc_concref_r<T1, T2>, sc_concref_r<T3, T4> >
2950 *
a.clone(), *
b.clone(), 3);
2953template <
class T1,
class T2,
class T3>
2954inline sc_concref_r<sc_concref_r<T1, T2>, T3>
2958 *
a.clone(),
b.back_cast(), 1);
2961template <
class T1,
class T2,
class T3>
2962inline sc_concref_r<sc_concref_r<T1, T2>, T3>
2966 *
a.clone(),
b.back_cast(), 1);
2970template <
class T1,
class T2,
class T3>
2971inline sc_concref_r<sc_concref_r<T1, T2>, sc_bitref_r<T3> >
2975 *
a.clone(), *
b.clone(), 3);
2978template <
class T1,
class T2,
class T3>
2979inline sc_concref_r<sc_concref_r<T1, T2>, sc_bitref_r<T3> >
2983 *
a.clone(), *
b.clone(), 3);
2986template <
class T1,
class T2,
class T3>
2987inline sc_concref_r<sc_concref_r<T1, T2>, sc_subref_r<T3> >
2991 *
a.clone(), *
b.clone(), 3);
2994template <
class T1,
class T2,
class T3>
2995inline sc_concref_r<sc_concref_r<T1, T2>, sc_subref_r<T3> >
2999 *
a.clone(), *
b.clone(), 3);
3002template <
class T1,
class T2,
class T3,
class T4>
3003inline sc_concref_r<sc_concref_r<T1, T2>, sc_concref_r<T3, T4> >
3007 *
a.clone(), *
b.clone(), 3);
3010template <
class T1,
class T2,
class T3,
class T4>
3011inline sc_concref_r<sc_concref_r<T1, T2>, sc_concref_r<T3, T4> >
3015 *
a.clone(), *
b.clone(), 3);
3018template <
class T1,
class T2,
class T3>
3019inline sc_concref_r<sc_concref_r<T1, T2>, T3>
3023 *
a.clone(),
b.back_cast(), 1);
3026template <
class T1,
class T2,
class T3>
3027inline sc_concref_r<sc_concref_r<T1, T2>, T3>
3031 *
a.clone(),
b.back_cast(), 1);
3042template <
class T1,
class T2>
3052template <
class T1,
class T2,
class T3>
3057 *
a.clone(), *
b.clone(), 3);
3060template <
class T1,
class T2,
class T3>
3061inline sc_concref<sc_concref<T1, T2>, sc_subref<T3> >
3065 *
a.clone(), *
b.clone(), 3);
3068template <
class T1,
class T2,
class T3,
class T4>
3069inline sc_concref<sc_concref<T1, T2>, sc_concref<T3, T4> >
3073 *
a.clone(), *
b.clone(), 3);
3076template <
class T1,
class T2,
class T3>
3077inline sc_concref<sc_concref<T1, T2>, T3>
3081 *
a.clone(),
b.back_cast(), 1);
3085template <
class T1,
class T2,
class T3>
3086inline sc_concref<sc_concref<T1, T2>, sc_bitref<T3> >
3090 *
a.clone(), *
b.clone(), 3);
3093template <
class T1,
class T2,
class T3>
3094inline sc_concref<sc_concref<T1, T2>, sc_subref<T3> >
3098 *
a.clone(), *
b.clone(), 3);
3101template <
class T1,
class T2,
class T3,
class T4>
3102inline sc_concref<sc_concref<T1, T2>, sc_concref<T3, T4> >
3106 *
a.clone(), *
b.clone(), 3);
3109template <
class T1,
class T2,
class T3>
3110inline sc_concref<sc_concref<T1, T2>, T3>
3114 *
a.clone(),
b.back_cast(), 1);
3117template <
class X,
class Y>
3118inline ::std::istream &
3135template <
class T1,
class T2>
3136inline sc_concref_r<T1, sc_bitref_r<T2> >
3140 a.back_cast(), *
b.clone(), 2);
3143template <
class T1,
class T2>
3144inline sc_concref_r<T1, sc_subref_r<T2> >
3148 a.back_cast(), *
b.clone(), 2);
3151template <
class T1,
class T2,
class T3>
3152inline sc_concref_r<T1, sc_concref_r<T2, T3> >
3156 a.back_cast(), *
b.clone(), 2);
3159template <
class T1,
class T2>
3160inline sc_concref_r<T1, T2>
3167template <
class T1,
class T2>
3168inline sc_concref_r<T1, sc_bitref_r<T2> >
3174template <
class T1,
class T2>
3175inline sc_concref_r<T1, sc_subref_r<T2> >
3181template <
class T1,
class T2,
class T3>
3182inline sc_concref_r<T1, sc_concref_r<T2, T3> >
3186 a.back_cast(), *
b.clone(), 2);
3189template <
class T1,
class T2>
3190inline sc_concref_r<T1, T2>
3197template <
class T1,
class T2>
3198inline sc_concref_r<T1, sc_bitref_r<T2> >
3204template <
class T1,
class T2>
3205inline sc_concref_r<T1, sc_bitref_r<T2> >
3211template <
class T1,
class T2>
3212inline sc_concref_r<T1, sc_subref_r<T2> >
3218template <
class T1,
class T2>
3219inline sc_concref_r<T1, sc_subref_r<T2> >
3225template <
class T1,
class T2,
class T3>
3226inline sc_concref_r<T1, sc_concref_r<T2, T3> >
3230 a.back_cast(), *
b.clone(), 2);
3233template <
class T1,
class T2,
class T3>
3234inline sc_concref_r<T1, sc_concref_r<T2, T3> >
3238 a.back_cast(), *
b.clone(), 2);
3241template <
class T1,
class T2>
3242inline sc_concref_r<T1, T2>
3248template <
class T1,
class T2>
3249inline sc_concref_r<T1, T2>
3256template <
class T1,
class T2>
3257inline sc_concref_r<T1, sc_bitref_r<T2> >
3263template <
class T1,
class T2>
3264inline sc_concref_r<T1, sc_bitref_r<T2> >
3270template <
class T1,
class T2>
3271inline sc_concref_r<T1, sc_subref_r<T2> >
3277template <
class T1,
class T2>
3278inline sc_concref_r<T1, sc_subref_r<T2> >
3284template <
class T1,
class T2,
class T3>
3285inline sc_concref_r<T1, sc_concref_r<T2, T3> >
3289 a.back_cast(), *
b.clone(), 2);
3292template <
class T1,
class T2,
class T3>
3293inline sc_concref_r<T1, sc_concref_r<T2, T3> >
3297 a.back_cast(), *
b.clone(), 2);
3300template <
class T1,
class T2>
3301inline sc_concref_r<T1, T2>
3307template <
class T1,
class T2>
3308inline sc_concref_r<T1, T2>
3317template <
class T1,
class T2>
3318inline sc_concref<T1, sc_bitref<T2> >
3324template <
class T1,
class T2>
3325inline sc_concref<T1, sc_subref<T2> >
3331template <
class T1,
class T2,
class T3>
3332inline sc_concref<T1, sc_concref<T2, T3> >
3338template <
class T1,
class T2>
3339inline sc_concref<T1, T2>
3346template <
class T1,
class T2>
3347inline sc_concref<T1, sc_bitref<T2> >
3353template <
class T1,
class T2>
3354inline sc_concref<T1, sc_subref<T2> >
3360template <
class T1,
class T2,
class T3>
3361inline sc_concref<T1, sc_concref<T2, T3> >
3367template <
class T1,
class T2>
3368inline sc_concref<T1, T2>
sc_bitref_r< T > & operator=(const sc_bitref_r< T > &)
sc_bitref_r< T > * clone() const
T::traits_type traits_type
sc_digit get_word(int i) const
sc_bitref_r(const T &obj_, int index_)
sc_bitref_r(const sc_bitref_r< T > &a)
sc_digit get_cword(int i) const
traits_type::bit_type bit_type
bit_type operator~() const
void print(::std::ostream &os=::std::cout) const
traits_type::value_type value_type
value_type get_bit(int n) const
sc_bitref(const sc_bitref< X > &a)
sc_bitref_r< X >::value_type value_type
sc_bitref< X > & operator&=(const sc_bitref_r< X > &a)
void set_bit(int n, value_type value)
sc_bitref< X > & operator^=(const sc_bitref_r< X > &a)
sc_bitref< X > & operator|=(const sc_bitref_r< X > &a)
void set_cword(int i, sc_digit w)
sc_bitref(X &obj_, int index_)
void scan(::std::istream &is=::std::cin)
sc_bitref< X > * clone() const
sc_bitref< X > & operator=(const sc_bitref_r< X > &a)
void set_word(int i, sc_digit w)
value_type get_bit(int n) const
sc_concref_r< X, Y > & operator=(const sc_concref_r< X, Y > &)
sc_concref_r(const X &left_, const Y &right_, int delete_=0)
void set_cword(int i, sc_digit w)
sc_concref_r(const sc_concref_r< X, Y > &a)
sc_proxy< sc_concref_r< X, Y > >::value_type value_type
sc_concref_r< X, Y > * clone() const
void set_word(int i, sc_digit w)
sc_digit get_cword(int i) const
void set_bit(int n, value_type value)
sc_digit get_word(int i) const
sc_concref< X, Y > * clone() const
sc_concref< X, Y > & operator=(const sc_proxy< Z > &a)
void scan(::std::istream &=::std::cin)
sc_concref(const sc_concref< X, Y > &a)
sc_concref(X &left_, Y &right_, int delete_=0)
sc_concref_r< X, Y > base_type
static const sc_logic_value_t and_table[4][4]
static const sc_logic_value_t not_table[4]
static const sc_logic_value_t xor_table[4][4]
static const sc_logic_value_t or_table[4][4]
sc_logic_value_t value() const
X & assign_(const sc_proxy< Y > &a)
void set_bit(int n, value_type value)
sc_subref_r< X > * clone() const
void set_word(int i, sc_digit w)
sc_digit get_word(int i) const
sc_digit get_cword(int i) const
value_type get_bit(int n) const
sc_subref_r(const sc_subref_r< X > &a)
sc_subref_r(const X &obj_, int hi_, int lo_)
void set_cword(int i, sc_digit w)
sc_subref_r< X > & operator=(const sc_subref_r< X > &)
sc_proxy< sc_subref_r< X > >::value_type value_type
sc_subref< X > & operator=(const sc_proxy< Y > &a)
sc_subref_r< X > base_type
void scan(::std::istream &=::std::cin)
sc_subref< X > * clone() const
sc_subref(const sc_subref< X > &a)
sc_subref(X &obj_, int hi_, int lo_)
const char SC_ID_OUT_OF_BOUNDS_[]
const sc_digit SC_DIGIT_ONE
const sc_digit SC_DIGIT_ZERO
sc_signed operator|(const sc_unsigned &u, const sc_int_base &v)
const T sc_min(const T &a, const T &b)
sc_signed operator&(const sc_unsigned &u, const sc_int_base &v)
sc_signed operator^(const sc_unsigned &u, const sc_int_base &v)
sc_concref_r< sc_bitref_r< T1 >, sc_bitref_r< T2 > > concat(sc_bitref_r< T1 >, sc_bitref_r< T2 >)
sc_concref_r< sc_bitref_r< T1 >, sc_bitref_r< T2 > > operator,(sc_bitref_r< T1 >, sc_bitref_r< T2 >)
bool operator==(const sc_signed &u, const sc_int_base &v)
const T sc_max(const T &a, const T &b)
bool operator!=(const sc_signed &u, const sc_int_base &v)
const sc_digit SC_DIGIT_TWO
sc_signed operator>>(const sc_signed &u, const sc_int_base &v)
#define SC_REPORT_ERROR(msg_type, msg)