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