75#ifndef ALR_CHECK_BOUND
76#define ALR_CHECK_BOUND
78#ifndef ALR_CHECK_EACH_BOUND
79#define ALR_CHECK_EACH_BOUND
82#ifdef USE_REPLACE_ALLOC
101#ifndef DONT_USE_ABSPTR
117#define PILF_CONST const
118#define PILF_MUTABLE mutable
130template <
class T>
class DynArr;
149#ifndef DONT_USE_ABSPTR
162 mcerr <<
"ERROR in DynLinArr(long fqel):\n";
163 mcerr <<
"qel > max_qel_DynLinArr:\n";
165 mcerr <<
"Type of T is (in internal notations) " <<
typeid(T).name()
170 mcerr <<
"ERROR in DynLinArr(long fqel):\n";
171 mcerr <<
"qel < 0:\n";
173 mcerr <<
"Type of T is (in internal notations) " <<
typeid(T).name()
177#ifdef USE_REPLACE_ALLOC
179 el = (T*)malloc(
sizeof(T) * fqel);
181 for (n = 0; n < fqel; n++)
185 el = (fqel > 0) ? (
new T[fqel]) : (T*)NULL;
189 DynLinArr(
long fqel,
const T& val) : qel(fqel), el(NULL) {
191 mcerr <<
"ERROR in DynLinArr(long fqel, const T& val):\n";
192 mcerr <<
"qel > max_qel_DynLinArr:\n";
194 mcerr <<
"Type of T is (in internal notations) " <<
typeid(T).name()
199 mcerr <<
"ERROR in DynLinArr(long fqel, const T& val):\n";
200 mcerr <<
"qel < 0:\n";
202 mcerr <<
"Type of T is (in internal notations) " <<
typeid(T).name()
206#ifdef USE_REPLACE_ALLOC
208 el = (T*)malloc(
sizeof(T) * fqel);
210 for (n = 0; n < fqel; n++)
214 el = (fqel > 0) ? (
new T[fqel]) : (T*)NULL;
220 mcerr <<
"ERROR in DynLinArr(long fqel, const T* ar, ArgInterp_Arr):\n";
221 mcerr <<
"qel > max_qel_DynLinArr:\n";
223 mcerr <<
"Type of T is (in internal notations) " <<
typeid(T).name()
228 mcerr <<
"ERROR in DynLinArr(long fqel, const T* ar, ArgInterp_Arr):\n";
229 mcerr <<
"qel < 0:\n";
231 mcerr <<
"Type of T is (in internal notations) " <<
typeid(T).name()
235#ifdef USE_REPLACE_ALLOC
237 el = (T*)malloc(
sizeof(T) * fqel);
239 for (n = 0; n < fqel; n++)
243 el = (fqel > 0) ? (
new T[fqel]) : (T*)NULL;
246 for (n = 0; n < qel; n++)
275#ifdef DEBUG_DYNLINARR
276 mcout <<
"DynLinArr( DynLinArr<T>& f, Pilfer) is working\n";
292 for (n = 0; n < qel; n++)
303 for (n = 0; n < qel; n++)
309#ifdef ALR_CHECK_BOUND
310 if (n >= 0 && n < qel) {
313 mcerr <<
"ERROR in const T& DynLinArr::operator[](long n) const: "
314 <<
"n is out of bounds, n=" << n <<
" qel=" << qel <<
'\n';
315 mcerr <<
"Type of T is (in internal notations) " <<
typeid(T).name()
341#ifdef ALR_CHECK_BOUND
342 if (n >= 0 && n < qel) {
345 mcerr <<
"ERROR in const T& DynLinArr::operator[](long n) const: "
346 <<
"n is out of bounds, n=" << n <<
" qel=" << qel <<
'\n';
347 mcerr <<
"Type of T is (in internal notations) " <<
typeid(T).name()
376 inline const T&
acu(
long n)
const
381#ifdef ALR_CHECK_BOUND
385 mcerr <<
"ERROR in const T& DynLinArr::last_el(void) const: qel <=0:"
386 <<
" qel" << qel <<
'\n';
387 mcerr <<
"Type of T is (in internal notations) " <<
typeid(T).name()
401#ifdef ALR_CHECK_BOUND
405 mcerr <<
"ERROR in const T& DynLinArr::last_el(void) const: qel <=0:"
406 <<
" qel" << qel <<
'\n';
407 mcerr <<
"Type of T is (in internal notations) " <<
typeid(T).name()
455#ifdef DEBUG_DYNLINARR
456 mcout <<
"DynLinArr::pilfer is called\n";
461 mcerr <<
"ERROR in DynLinArr::pilfer(...):\n";
462 mcerr <<
"Both the destination and source arrays are not empty\n";
467#ifdef USE_REPLACE_ALLOC
470 for (n = 0; n < qel; n++)
514 template <
class P,
class X>
547 long q_to_sort = 0)
const;
549 long q_to_sort = 0)
const;
558#ifndef DONT_USE_ABSPTR
565#ifdef USE_REPLACE_ALLOC
568 for (n = 0; n < qel; n++) {
582#ifdef USE_REPLACE_ALLOC
586#ifndef DONT_USE_ABSPTR
593 for (n = 0; n < ar.qel; n++)
601template <
class T,
class X>
603 void (*fun2)(X& f)) {
605 for (n = 0; n < ar.qel; n++)
606 (*fun1)(ar.el[n], fun2);
617 mcerr <<
"ERROR in template<class T> void DynLinArr<T>::check(void):\n";
618 mcerr <<
"qel < 0, qel=" << qel <<
'\n';
619 mcerr <<
"Type of T is (in internal notations) " <<
typeid(T).name()
623 if (qel == 0 && el != NULL) {
624 mcerr <<
"ERROR in template<class T> void DynLinArr<T>::check(void):\n";
626 mcerr <<
"qel == 0 && el != NULL: el=" << el <<
'\n';
627 mcerr <<
"Type of T is (in internal notations) " <<
typeid(T).name()
633 mcerr <<
"ERROR in template<class T> void DynLinArr<T>::check(void):\n";
634 mcerr <<
"qel > 0 && el == NULL: qel=" << qel <<
'\n';
635 mcerr <<
"Type of T is (in internal notations) " <<
typeid(T).name()
640 mcerr <<
"ERROR in template<class T> void DynLinArr<T>::check(void):\n";
641 mcerr <<
"qel > max_qel_DynLinArr: \n";
643 mcerr <<
"Type of T is (in internal notations) " <<
typeid(T).name()
652#ifdef DEBUG_DYNLINARR
653 mcout <<
"DynLinArr<T>& DynLinArr<T>::operator=(const DynLinArr<T>& f) is "
665#ifdef USE_REPLACE_ALLOC
668 temp_el = (T*)malloc(
sizeof(T) * q);
671 for (n = 0; n < q; n++)
672 new (&(temp_el[n])) T(f.el[n]);
680 T* temp_el = (T*)NULL;
686 for (n = 0; n < q; n++)
687 temp_el[n] = f.el[n];
711#ifdef DEBUG_DYNLINARR
712 mcout <<
"DynLinArr<T>& DynLinArr<T>::operator=(const DynLinArr<D>& f) is "
725#ifdef USE_REPLACE_ALLOC
728 temp_el = (T*)malloc(
sizeof(T) * q);
733 for (n = 0; n < q; n++)
734 new (&(temp_el[n])) T(f.el[n]);
741 T* temp_el = (T*)NULL;
747 for (n = 0; n < q; n++)
763#ifndef DONT_USE_ABSPTR
768#ifdef DEBUG_DYNLINARR
769 mcout <<
"DynLinArr(const DynLinArr<T>& f) is working\n";
784 mcerr <<
"ERROR in template<class T> void DynLinArr<T>::put_qel(long "
786 mcerr <<
"fqel < 0, fqel=" << fqel <<
'\n';
787 mcerr <<
"Type of T is (in internal notations) " <<
typeid(T).name()
795#ifdef USE_REPLACE_ALLOC
796 el = (T*)malloc(
sizeof(T) * fqel);
797 for (
long n = 0; n < fqel; ++n)
807#ifdef USE_REPLACE_ALLOC
808 for (
long n = 0; n < qel; ++n)
817#ifdef USE_REPLACE_ALLOC
818 elh = (T*)malloc(
sizeof(T) * fqel);
819 for (n = 0; n < fqel; ++n)
824 for (
long n = 0; n < fqel; ++n) {
825 if (n < qel) elh[n] = el[n];
827#ifdef USE_REPLACE_ALLOC
828 for (
long n = 0; n < qel; ++n)
852 mcerr <<
"ERROR in template<class T> void DynLinArr<T>::put_qel(long fqel, "
853 "const T* val, ArgInterp_SingleAdr):\n";
854 mcerr <<
"fqel < 0, fqel=" << fqel <<
'\n';
855 mcerr <<
"Type of T is (in internal notations) " <<
typeid(T).name()
859 mcerr <<
sizeof(t) <<
"\n";
865#ifdef USE_REPLACE_ALLOC
866 el = (T*)malloc(
sizeof(T) * fqel);
867 for (
long n = 0; n < fqel; ++n)
873 if (val != NULL)
for (
long n = 0; n < qel; ++n)
879#ifdef USE_REPLACE_ALLOC
880 for (
long n = 0; n < qel; ++n)
889#ifdef USE_REPLACE_ALLOC
890 elh = (T*)malloc(
sizeof(T) * fqel);
891 for (
long n = 0; n < fqel; ++n)
896 for (
long n = 0; n < fqel; ++n) {
899 else if (val != NULL)
902#ifdef USE_REPLACE_ALLOC
903 for (
long n = 0; n < qel; ++n)
924 mfunnamep(
"void DynLinArr<T>::sort(long q_to_sort = 0)");
927 if (q_to_sort <= 0) q_to_sort = qel;
928 if (q_to_sort <= 1)
return;
930 long n_possible_next = 1;
933 for (n = 0; n < q_to_sort - 1; n++) {
937 long nmin = n_possible_next;
939 int s_change_possible_next = 0;
942 for (m = n_possible_next + 1; m < q_to_sort; m++) {
945 if (el_min > el[m]) {
946 n_possible_next = nmin;
947 s_change_possible_next = 1;
953 if (s_change_possible_next == 0 || n_possible_next < n + 2) {
954 n_possible_next = n + 2;
964 if (el[n] > el_min) {
965 if (s_change_possible_next == 1) {
967 if (n_possible_next < q_to_sort && el[n] < el[n_possible_next]) {
968 n_possible_next = nmin;
986 mfunnamep(
"void DynLinArr<T>::sort(DynLinArr< long >& sort_ind, long "
987 "q_to_sort = 0) const");
990 if (q_to_sort <= 0) q_to_sort = qel;
996 for (n = 0; n < q_to_sort; n++) {
999 if (q_to_sort <= 1)
return;
1001 long n_possible_next = 1;
1003 for (n = 0; n < q_to_sort - 1; n++) {
1005 long nmin = n_possible_next;
1006 long ind_nmin = sort_ind.
acu(nmin);
1007 int s_change_possible_next = 0;
1010 for (m = n_possible_next + 1; m < q_to_sort; m++) {
1011 if (el[ind_nmin] > el[sort_ind.
acu(m)])
1014 n_possible_next = nmin;
1015 s_change_possible_next = 1;
1017 ind_nmin = sort_ind.
acu(nmin);
1020 if (s_change_possible_next == 0 || n_possible_next < n + 2) {
1021 n_possible_next = n + 2;
1023 if (el[sort_ind.
acu(n)] > el[ind_nmin])
1026 if (s_change_possible_next == 1) {
1027 if (n_possible_next < q_to_sort &&
1028 el[sort_ind.
acu(n)] < el[sort_ind.
acu(n_possible_next)]) {
1029 n_possible_next = nmin;
1033 sort_ind.
acu(nmin) = sort_ind.
acu(n);
1034 sort_ind.
acu(n) = ind_nmin;
1041 long q_to_sort)
const {
1042 mfunnamep(
"void DynLinArr<T>::sort_select_increasing(DynLinArr< long >& "
1043 "sort_ind, long q_to_sort = 0) const");
1046 long s_last_noninc = 0;
1047 if (q_to_sort <= 0) {
1050 }
else if (q_to_sort == qel) {
1058 for (n = 0; n < qel; n++) {
1061 if (q_to_sort <= 1)
return;
1063 long n_possible_next = 1;
1065 for (n = 0; n < q_to_sort - s_last_noninc; n++) {
1067 long nmin = n_possible_next;
1068 long ind_nmin = sort_ind[nmin];
1069 int s_change_possible_next = 0;
1072 for (m = n_possible_next + 1; m < qel; m++) {
1073 if (el[ind_nmin] > el[sort_ind[m]])
1076 n_possible_next = nmin;
1077 s_change_possible_next = 1;
1079 ind_nmin = sort_ind[nmin];
1082 if (s_change_possible_next == 0 || n_possible_next < n + 2) {
1083 n_possible_next = n + 2;
1085 if (el[sort_ind[n]] > el[ind_nmin])
1088 if (s_change_possible_next == 1) {
1089 if (n_possible_next < q_to_sort &&
1090 el[sort_ind[n]] < el[sort_ind[n_possible_next]]) {
1091 n_possible_next = nmin;
1095 sort_ind[nmin] = sort_ind[n];
1096 sort_ind[n] = ind_nmin;
1104 long q_to_sort)
const {
1105 mfunnamep(
"void DynLinArr<T>::sort_select_decreasing(DynLinArr< long >& "
1106 "sort_ind, long q_to_sort = 0) const");
1109 long s_last_noninc = 0;
1110 if (q_to_sort <= 0) {
1113 }
else if (q_to_sort == qel) {
1122 for (n = 0; n < qel; n++) {
1125 if (q_to_sort <= 1)
return;
1127 long n_possible_next = 1;
1129 for (n = 0; n < q_to_sort - s_last_noninc; n++) {
1132 long nmax = n_possible_next;
1134 long ind_nmax = sort_ind[nmax];
1135 int s_change_possible_next = 0;
1138 for (m = n_possible_next + 1; m < qel; m++) {
1140 if (el[ind_nmax] < el[sort_ind[m]]) {
1141 n_possible_next = nmax;
1142 s_change_possible_next = 1;
1145 ind_nmax = sort_ind[nmax];
1148 if (s_change_possible_next == 0 || n_possible_next < n + 2) {
1149 n_possible_next = n + 2;
1152 if (el[sort_ind[n]] < el[ind_nmax]) {
1153 if (s_change_possible_next == 1) {
1154 if (n_possible_next < q_to_sort &&
1155 el[sort_ind[n]] > el[sort_ind[n_possible_next]]) {
1156 n_possible_next = nmax;
1160 sort_ind[nmax] = sort_ind[n];
1161 sort_ind[n] = ind_nmax;
1245#ifndef BAN_DEFAULT_PAR_FUN_TEMPL
1259 mcerr <<
"ERROR in long append(class DynLinArr& dla, ...): dla.get_qel() < "
1261 <<
"dla.get_qel()=" << dla.
get_qel() <<
" qael=" << qael <<
'\n';
1262 mcerr <<
"Type of T is (in internal notations) " <<
typeid(T).name()
1267 if (new_qel <= qael) new_qel =
find_max(3 * qael,
long(3));
1278#define append_to_DynLinArr(t, dla, qael, tempt, new_qel) \
1280 if (dla.get_qel() < qael) { \
1281 mcerr << "append(class DynLinArr& dla, ...): dla.get_qel() < qael, " \
1282 << "dla.get_qel()=" << dla.get_qel() << " qael=" << qael << '\n'; \
1286 if (dla.get_qel() == qael) { \
1287 if (new_qel <= qael) nn = find_max(3 * qael, long(3)); \
1288 dla.put_qel(nn, tempt); \
1292#define append_to_DynLinArr_short(t, dla, qael) \
1294 if (dla.get_qel() < qael) { \
1295 mcerr << "append(class DynLinArr& dla, ...): dla.get_qel() < qael, " \
1296 << "dla.get_qel()=" << dla.get_qel() << " qael=" << qael << '\n'; \
1300 if (dla.get_qel() == qael) { \
1301 nn = find_max(3 * qael, long(3)); \
1302 dla.put_qel(nn, NULL); \
1328 for (n = 0; n < f.
get_qel(); n++) {
1331 Ifile <<
"n=" << n <<
" el[n]=";
1333 std::ostringstream ost;
1348 "template<class T> istream& operator>>(istream& file, DynLinArr<T>& f)");
1359 for (fn = 0; fn < qel; fn++) {
1412 for (n = 0; n < f.
get_qel(); n++) {
1416 std::ostringstream ost;
1448 Ifile <<
"DynLinArr<T>: qel=" << f.
get_qel() <<
" q to print is " << q
1452 mcerr <<
"print_DynLinArr(...): q>f.get_qel(), q=" << q
1453 <<
" f.get_qel()=" << f.
get_qel() <<
'\n';
1454 mcerr <<
"Type of T is (in internal notations) " <<
typeid(T).name()
1460 for (n = 0; n < q; n++) {
1464 std::ostringstream ost;
1478 Ifile <<
"DynLinArr<T>: qel=" << f.
get_qel() <<
" q to print is " << q
1482 mcerr <<
"print_adr_DynLinArr(...): q>f.get_qel(), q=" << q
1483 <<
" f.get_qel()=" << f.
get_qel() <<
'\n';
1484 mcerr <<
"Type of T is (in internal notations) " <<
typeid(T).name()
1490 for (n = 0; n < q; n++) {
1494 std::ostringstream ost;
1495 f[n]->print(ost, l);
1526#define Iprintdla_int(file, name) \
1527 file << indn << #name << "=" << noindent; \
1528 print_DynLinArr_int(file, name);
1529#define Iprintdla_long(file, name) \
1530 file << indn << #name << "=" << noindent; \
1531 print_DynLinArr_long(file, name);
1532#define Iprintdla_float(file, name) \
1533 file << indn << #name << "=" << noindent; \
1534 print_DynLinArr_float(file, name);
1535#define Iprintdla_double(file, name) \
1536 file << indn << #name << "=" << noindent; \
1537 print_DynLinArr_double(file, name);
1541 mfunnamep(
"template<class T, class X> void copy_DynLinArr(const T& s, X& d)");
1544 long q = s.get_qel();
1547 for (n = 0; n < q; n++) {
1554 long q = s.get_qel();
1557 for (n = 0; n < q; n++) {
1568 for (n = 0; n < q; n++)
1572template <
class T,
class T1>
1578 for (n = 0; n < q; n++)
1586 if (ncur < dar->get_qel() - 1)
1587 return &((*dar)[++ncur]);
1589 ncur = dar->get_qel();
1593 if (ncur >= 0 || ncur < dar->get_qel())
1594 return &((*dar)[ncur]);
1601 return &((*dar)[--ncur]);
1641 for (n = 0; n < qfirst; n++) {
1643 if (!(fd1[n] == fd2[n]))
return 0;
1655 if (qfirst > fd1.
get_qel())
return 0;
1657 for (n = 0; n < qfirst; n++)
1658 if (!(fd1[n] == fd2[n]))
return 0;
1662template <
class T>
int ifequal(T* fd1, T* fd2,
long qfirst) {
1664 for (n = 0; n < qfirst; n++)
1665 if (!(fd1[n] == fd2[n]))
return 0;
1680 if (qfd1 + qfd2 == 0)
return ret;
1681 for (n = 0; n < qfd1; n++) {
1684 for (n = 0; n < qfd2; n++) {
1685 ret[qfd1 + n] = fd2[n];
1696#ifndef DONT_USE_ABSPTR
1713 mcout <<
"explicit DynArr(long fqel, T* val=NULL) is called\n";
1724 mcout <<
"explicit DynArr(long fqel, T* val=NULL) is called\n";
1735 for (n = 0; n < fqel; n++)
1745 for (
long n = 0; n < qel[0]; n++)
1750 DynArr(
long fqel1,
long fqel2, T* val = NULL)
1755 mcout <<
"DynArr(long fqel1, long fqel2, T* val=NULL) is called\n";
1770 <<
"DynArr(long fqel1, long fqel2, T val, ArgInterp_Val t) is called\n";
1780 DynArr(
long fqel1,
long fqel2,
long fqel3, T* val = NULL)
1783 el(fqel1 * fqel2 * fqel3) {
1787 cum_qel[0] = fqel2 * fqel3;
1794 DynArr(
long fqel1,
long fqel2,
long fqel3,
long fqel4, T* val = NULL)
1797 el(fqel1 * fqel2 * fqel3 * fqel4) {
1802 cum_qel[0] = fqel2 * fqel3 * fqel4;
1803 cum_qel[1] = fqel3 * fqel4;
1816 if (qdim <= 0)
return;
1820 for (ndim = 1; ndim < qdim; ndim++)
1823 cum_qel[qdim - 1] = 1;
1824 for (ndim = qdim - 2; ndim >= 0; ndim--)
1825 cum_qel[ndim] = qel[ndim + 1] * cum_qel[ndim + 1];
1833 if (qdim <= 0)
return;
1837 for (ndim = 1; ndim < qdim; ndim++)
1840 cum_qel[qdim - 1] = 1;
1841 for (ndim = qdim - 2; ndim >= 0; ndim--)
1842 cum_qel[ndim] = qel[ndim + 1] * cum_qel[ndim + 1];
1847#ifndef DONT_USE_ABSPTR
1852 mcout <<
"DynArr(const DynArr<T>& f) is working\n";
1859 mcout <<
"DynArr( DynArr<T>& f, Pilfer) is working\n";
1865 mcout <<
"DynArr::pilfer is called\n";
1869 if (f.qel.get_qel() != 0) {
1870 mcerr <<
"ERROR in DynArr::pilfer(...):\n";
1871 mcerr <<
"Both the destination and source arrays are not empty\n";
1882 cum_qel.
pilfer(f.cum_qel);
1912 operator D&()
const {
1914 mcerr <<
"ERROR in IndexingProvider::operator D& (): q_deref_ind != "
1917 mcerr <<
"Type of T is (in internal notations) " <<
typeid(D).name()
1921#ifdef ALR_CHECK_BOUND
1929 mcerr <<
"ERROR in T& IndexingProvider::operator=(T& f): q_deref_ind "
1930 "!= arr.get_qel().get_qel()\n";
1932 mcerr <<
"Type of T is (in internal notations) " <<
typeid(D).name()
1936#ifdef ALR_CHECK_BOUND
1946 mcerr <<
"ERROR in DynArr::IndexingProvider& DynArr::operator[](long "
1947 "n): q_deref_ind >= arr.get_qel().get_qel()\n";
1949 mcerr <<
"Type of T is (in internal notations) " <<
typeid(D).name()
1953#ifdef ALR_CHECK_EACH_BOUND
1959#ifdef ALR_CHECK_EACH_BOUND
1961 mcerr <<
"Error in IndexingProvider<D>& "
1962 "IndexingProvider::operator[](long n): n < 0 || n >= "
1963 "qel.acu(q_deref_ind)\n";
1965 mcerr <<
"Type of T is (in internal notations) " <<
typeid(T).name()
1974 mcerr <<
"ERROR in DynArr::IndexingProvider& DynArr::operator[](long "
1975 "n): q_deref_ind >= arr.get_qel().get_qel()\n";
1977 mcerr <<
"Type of T is (in internal notations) " <<
typeid(D).name()
1981#ifdef ALR_CHECK_EACH_BOUND
1987#ifdef ALR_CHECK_EACH_BOUND
1989 mcerr <<
"Error in IndexingProvider<D>& "
1990 "IndexingProvider::operator[](long n): n < 0 || n >= "
1991 "qel.acu(q_deref_ind)\n";
1993 mcerr <<
"Type of T is (in internal notations) " <<
typeid(T).name()
2008 mcerr <<
"ERROR in DynArr::IndexingProvider DynArr::operator[](long n): "
2009 "qel.get_qel()< 1, qel.get_qel()=" << qel.
get_qel() <<
'\n';
2010 mcerr <<
"Type of T is (in internal notations) " <<
typeid(T).name()
2014#ifdef ALR_CHECK_EACH_BOUND
2015 if (n >= 0 && n < qel.
acu(0)) {
2018#ifdef ALR_CHECK_EACH_BOUND
2020 mcerr <<
"Error in IndexingProvider<T> DynArr::operator[](long n): n < 0 "
2021 "|| n >= qel.acu(0)\n";
2023 mcerr <<
"Type of T is (in internal notations) " <<
typeid(T).name()
2032 mcerr <<
"ERROR in DynArr::IndexingProvider DynArr::operator[](long n): "
2033 "qel.get_qel()< 1, qel.get_qel()=" << qel.
get_qel() <<
'\n';
2034 mcerr <<
"Type of T is (in internal notations) " <<
typeid(T).name()
2038#ifdef ALR_CHECK_EACH_BOUND
2039 if (n >= 0 && n < qel.
acu(0)) {
2045#ifdef ALR_CHECK_EACH_BOUND
2047 mcerr <<
"Error in IndexingProvider<T> DynArr::operator[](long n): n < 0 "
2048 "|| n >= qel.acu(0)\n";
2050 mcerr <<
"Type of T is (in internal notations) " <<
typeid(T).name()
2062 mcerr <<
"ERROR in DynArr::ac(long i): qel.get_qel()!= 1, qel.get_qel()="
2064 mcerr <<
"Type of T is (in internal notations) " <<
typeid(T).name()
2074 const T&
ac(
long i)
const
2079 mcerr <<
"ERROR in DynArr::ac(long i): qel.get_qel()!= 1, qel.get_qel()="
2081 mcerr <<
"Type of T is (in internal notations) " <<
typeid(T).name()
2115 mcerr <<
"ERROR in DynArr::ac(const DynLinArr<long>& ind): "
2116 <<
"qel.get_qel()!= ind.get_qel()\n"
2117 <<
"qel.get_qel()=" << qel.
get_qel()
2118 <<
" ind.get_qel()=" << ind.
get_qel() <<
'\n';
2119 mcerr <<
"Type of T is (in internal notations) " <<
typeid(T).name()
2123#ifdef ALR_CHECK_EACH_BOUND
2126 return el[ind.
acu(0)];
2128 return el[calc_lin_ind(ind)];
2131 return el[ind.
acu(0)];
2133 return el.acu(calc_lin_ind(ind));
2137 return el[ind.
acu(0)];
2139 return el[calc_lin_ind(ind)];
2145 if ((q = qel.
get_qel()) != ind.get_qel()) {
2146 mcerr <<
"ERROR in DynArr::ac(const DynLinArr<long>& ind): "
2147 <<
"qel.get_qel()!= ind.get_qel()\n"
2148 <<
"qel.get_qel()=" << qel.
get_qel()
2149 <<
" ind.get_qel()=" << ind.get_qel() <<
'\n';
2150 mcerr <<
"Type of T is (in internal notations) " <<
typeid(T).name()
2167#ifdef ALR_CHECK_EACH_BOUND
2170 return el[ind.acu(0)];
2172 return el[calc_lin_ind(ind)];
2175 return el[ind.acu(0)];
2177 return el.acu(calc_lin_ind(ind));
2181 return el[ind.acu(0)];
2183 return el[calc_lin_ind(ind)];
2193 mcerr <<
"ERROR in DynArr::acp(const DynLinArr<long>& ind): "
2194 <<
"qel.get_qel()!= ind.get_qel()\n"
2195 <<
"qel.get_qel()=" << qel.
get_qel()
2196 <<
" ind.get_qel()=" << ind.
get_qel() <<
'\n';
2197 mcerr <<
"Type of T is (in internal notations) " <<
typeid(T).name()
2202#ifdef ALR_CHECK_EACH_BOUND
2205 return el[ind.
acu(0)];
2207 return el[calc_lin_ind(ind)];
2210 return el[ind.
acu(0)];
2212 return el.acu(calc_lin_ind(ind));
2216 return el[ind.
acu(0)];
2218 return el[calc_lin_ind(ind)];
2225 mcerr <<
"ERROR in DynArr::acp(const DynLinArr<long>& ind): "
2226 <<
"qel.get_qel()!= ind.get_qel()\n"
2227 <<
"qel.get_qel()=" << qel.
get_qel()
2228 <<
" ind.get_qel()=" << ind.
get_qel() <<
'\n';
2229 mcerr <<
"Type of T is (in internal notations) " <<
typeid(T).name()
2233#ifdef ALR_CHECK_EACH_BOUND
2236 return el[ind.
acu(0)];
2238 return el[calc_lin_ind(ind)];
2241 return el[ind.
acu(0)];
2243 return el.acu(calc_lin_ind(ind));
2247 return el[ind.
acu(0)];
2249 return el[calc_lin_ind(ind)];
2256 return el.acu(ind.
acu(0));
2258 return el.acu(calc_lin_ind(ind));
2263 return el.acu(ind.acu(0));
2265 return el.acu(calc_lin_ind(ind));
2271#ifdef ALR_CHECK_EACH_BOUND
2272 if (i1 >= 0 && i1 < qel.
acu(0)) {
2273 if (i2 >= 0 && i2 < qel.
acu(1)) {
2275 return el[i1 * cum_qel.
acu(0) + i2];
2277 return el.acu(i1 * cum_qel.
acu(0) + i2);
2280 mcerr <<
"Error in DynArr::ac(long i1, long i2): i2 < 0 || i2 >= "
2285 mcerr <<
"Error in DynArr::ac(long i1, long i2): i1 < 0 || i1 >= "
2290 mcerr <<
"ERROR in DynArr::ac(long i1, long i2): qel.get_qel()!= 2,"
2291 <<
" qel.get_qel()=" << qel.
get_qel() <<
'\n';
2293 mcerr <<
"Type of T is (in internal notations) " <<
typeid(T).name()
2301 return el[i1 * cum_qel.
acu(0) + i2];
2338 const T&
ac(
long i1,
long i2)
const
2341#ifdef ALR_CHECK_EACH_BOUND
2342 if (i1 >= 0 && i1 < qel.
acu(0)) {
2343 if (i2 >= 0 && i2 < qel.
acu(1)) {
2345 return el[i1 * cum_qel.
acu(0) + i2];
2347 return el.acu(i1 * cum_qel.
acu(0) + i2);
2350 mcerr <<
"Error in DynArr::ac(long i1, long i2): i2 < 0 || i2 >= "
2355 mcerr <<
"Error in DynArr::ac(long i1, long i2): i1 < 0 || i1 >= "
2360 mcerr <<
"ERROR in DynArr::ac(long i1, long i2): qel.get_qel()!= 2,"
2361 <<
" qel.get_qel()=" << qel.
get_qel() <<
'\n';
2363 mcerr <<
"Type of T is (in internal notations) " <<
typeid(T).name()
2371 return el[i1 * cum_qel.
acu(0) + i2];
2411 return el.acu(i1 * cum_qel.
acu(0) + i2);
2413 inline const T&
acu(
long i1,
long i2)
const
2415 return el.acu(i1 * cum_qel.
acu(0) + i2);
2418 T&
ac(
long i1,
long i2,
long i3)
2421 mcerr <<
"ERROR in DynArr::ac(long i1, long i2, long i3): "
2422 "qel.get_qel()!= 3,"
2423 <<
" qel.get_qel()=" << qel.
get_qel() <<
'\n';
2424 mcerr <<
"Type of T is (in internal notations) " <<
typeid(T).name()
2428#ifdef ALR_CHECK_EACH_BOUND
2429 if (i1 < 0 || i1 >= qel.
acu(0)) {
2430 mcerr <<
"Error in DynArr::ac(long i1, long i2, long i3): i1 < 0 || i1 "
2435 if (i2 < 0 || i2 >= qel.
acu(1)) {
2436 mcerr <<
"Error in DynArr::ac(long i1, long i2, long i3): i2 < 0 || i2 "
2441 if (i3 < 0 || i3 >= qel.
acu(2)) {
2442 mcerr <<
"Error in DynArr::ac(long i1, long i2, long i3): i3 < 0 || i3 "
2448 return el.acu(i1 * cum_qel.
acu(0) + i2 * cum_qel.
acu(1) + i3);
2450 return el[i1 * cum_qel.
acu(0) + i2 * cum_qel[1] + i3];
2453 return el[i1 * cum_qel.acu(0) + i2 * cum_qel[1] + i3];
2458 const T&
ac(
long i1,
long i2,
long i3)
const
2461 mcerr <<
"ERROR in DynArr::ac(long i1, long i2, long i3): "
2462 "qel.get_qel()!= 3,"
2463 <<
" qel.get_qel()=" << qel.
get_qel() <<
'\n';
2464 mcerr <<
"Type of T is (in internal notations) " <<
typeid(T).name()
2468#ifdef ALR_CHECK_EACH_BOUND
2469 if (i1 < 0 || i1 >= qel.
acu(0)) {
2470 mcerr <<
"Error in DynArr::ac(long i1, long i2, long i3): i1 < 0 || i1 "
2475 if (i2 < 0 || i2 >= qel.
acu(1)) {
2476 mcerr <<
"Error in DynArr::ac(long i1, long i2, long i3): i2 < 0 || i2 "
2481 if (i3 < 0 || i3 >= qel.
acu(2)) {
2482 mcerr <<
"Error in DynArr::ac(long i1, long i2, long i3): i3 < 0 || i3 "
2488 return el.acu(i1 * cum_qel.
acu(0) + i2 * cum_qel.
acu(1) + i3);
2490 return el[i1 * cum_qel.
acu(0) + i2 * cum_qel[1] + i3];
2493 return el[i1 * cum_qel.acu(0) + i2 * cum_qel[1] + i3];
2502 long qelln = el.get_qel();
2503#ifdef ALR_CHECK_BOUND
2504 if (n >= 0 && n < qelln) {
2507 mcerr <<
"ERROR in T& DynArr::ac_lin(long n): "
2508 <<
"n is out of bounds, n=" << n <<
" qelln=" << qelln <<
'\n';
2509 mcerr <<
"Type of T is (in internal notations) " <<
typeid(T).name()
2522 long qelln = el.get_qel();
2523#ifdef ALR_CHECK_BOUND
2524 if (n >= 0 && n < qelln) {
2527 mcerr <<
"ERROR in T& DynArr::ac_lin(long n): "
2528 <<
"n is out of bounds, n=" << n <<
" qelln=" << qelln <<
'\n';
2529 mcerr <<
"Type of T is (in internal notations) " <<
typeid(T).name()
2543 inline const T&
acu_lin(
long n)
const {
return el[n]; }
2583 template <
class P,
class X>
2585 void (*fun2)(X& f));
2594 if (q == 0)
return 0;
2596 for (n = 0; n < q; n++) {
2597 if (qel[n] <= 0)
return 0;
2601#ifndef DONT_USE_ABSPTR
2622 long qdim1 = qel.
get_qel() - 1;
2636 for (n = 0; n < qdim1; n++) {
2637#ifdef ALR_CHECK_EACH_BOUND
2639 if (ind[n] < 0 || ind[n] >= qel[n]) {
2640 mcerr <<
"ERROR in long DynArr::calc_lin_ind(const DynLinArr<long>& "
2642 mcerr <<
"ind[n] < 0 || ind[n] >= qel[n]\n";
2648 if (ind.
acu(n) < 0 || ind.
acu(n) >= qel.acu(n)) {
2649 mcerr <<
"ERROR in long DynArr::calc_lin_ind(const DynLinArr<long>& "
2651 mcerr <<
"ind.acu(n) < 0 || ind.acu(n) >= qel.acu(n)\n";
2658 i += ind[n] * cum_qel[n];
2660#ifdef ALR_CHECK_EACH_BOUND
2662 if (ind[qdim1] < 0 || ind[qdim1] >= qel[qdim1]) {
2663 mcerr <<
"ERROR in long DynArr::calc_lin_ind(const DynLinArr<long>& ind) "
2665 mcerr <<
"ind[qdim1] < 0 || ind[qdim1] >= qel[qdim1]\n";
2671 if (ind.
acu(qdim1) < 0 || ind.
acu(qdim1) >= qel.acu(qdim1)) {
2672 mcerr <<
"ERROR in long DynArr::calc_lin_ind(const DynLinArr<long>& ind) "
2674 mcerr <<
"ind.acu(qdim1) < 0 || ind.acu(qdim1) >= qel.acu(qdim1)\n";
2685#ifdef USE_REPLACE_ALLOC
2693 mcout <<
"DynArr<T>& DynArr<T>::operator=(const DynArr<T>& f)\n";
2701 cum_qel = f.cum_qel;
2710#ifdef DEBUG_DYNLINARR
2711 mcout <<
"DynArr<T>& DynArr<T>::operator=(const DynArr<D>& f)\n";
2723#ifdef USE_REPLACE_ALLOC
2726 temp_el = (T*)malloc(
sizeof(T) * q);
2728 for (n = 0; n < q; n++)
2729 new (&(temp_el[n])) T;
2733 T* temp_el = (q > 0) ? (
new T[q]) : (T*)NULL;
2736 for (n = 0; n < q; n++)
2738 pass(q, qel, cum_qel, temp_el);
2744 long q = ar.el.get_qel();
2746 for (n = 0; n < q; n++)
2749template <
class T,
class X>
2751 void (*fun2)(X& f)) {
2752 long q = ar.el.get_qel();
2754 for (n = 0; n < q; n++)
2755 (*fun1)(ar.el[n], fun2);
2765 : ncur(fdar->get_qdim()), dar((
DynArr<T>*)fdar) {
2767 long qdim1 = ncur.
get_qel() - 1;
2769 for (n = 0; n < qdim1; n++)
2777 return &(dar->ac(ncur));
2786 if (qdim <= 0)
return NULL;
2787 for (n = 0; n < qdim; n++) {
2788 if (ncur[n] < 0 || ncur[n] >= dar->get_qel()[n])
return NULL;
2790 return &(dar->ac(ncur));
2797 return &(dar->ac(ncur));
2816 if (qel.get_qel() == 0) {
2824 while ((at = iter.
more()) != NULL) {
2825 if (confirm_ind_ext(iter.
get_ncur()))
2836 for (n = 0; n < q; n++) {
2837 if (!(f1.
acu(n) == f2.
acu(n)))
return 0;
2842template <
class T,
class P>
2847 for (n = 0; n < q; n++) {
2867template <
class T,
class P>
2895 mfunnamep(
"template<class T, class X> void copy_DynArr(const DynArr<T>& s, "
2902 while ((at = iter.
more()) != NULL) {
2909template <
class T,
class X>
2911 mfunnamep(
"template<class T, class X> void convert_DynArr(const DynArr<T>& "
2912 "s, DynArr<X>& d)");
2918 while ((at = iter.
more()) != NULL) {
2920 d.
ac(ncur) = X(*at);
2928 for (n = 0; n < qel; n++) {
2934 mfunnamep(
"template<class T> DynArr<T> DynArr<T>::top(void)");
2936 long qdim = get_qdim();
2940 for (n1 = 0; n1 < qel[0]; n1++) {
2941 for (n2 = 0; n2 < qel[1]; n2++) {
2942 r.
ac(n2, n1) = ac(n1, n2);
2953 mcerr <<
"ERROR in DynLinArr<T>::DynLinArr(const DynArr<T>& f):\n"
2954 <<
"f.get_qdim() != 1, f.get_qdim()=" << f.
get_qdim() <<
'\n';
2955 mcerr <<
"Type of T is (in internal notations) " <<
typeid(T).name()
2963#ifdef USE_REPLACE_ALLOC
2964 el = (T*)malloc(
sizeof(T) * qel);
2966 for (n = 0; n < qel; n++)
2972 for (n = 0; n < qel; n++)
2987 mcerr <<
"ERROR in DynLinArr<T>::DynLinArr(const DynArr<T>& f, int "
2988 "n_of_dim,long roc_number):\n"
2989 <<
"f.get_qdim() != 2, f.get_qdim()=" << f.
get_qdim() <<
'\n';
2990 mcerr <<
"Type of T is (in internal notations) " <<
typeid(T).name()
2995 if (n_of_dim == 0) {
3002#ifdef USE_REPLACE_ALLOC
3003 el = (T*)malloc(
sizeof(T) * qel);
3005 for (n = 0; n < qel; n++)
3011 if (n_of_dim == 0) {
3012 for (n = 0; n < qel; n++)
3013 el[n] = f.
ac(roc_number, n);
3015 for (n = 0; n < qel; n++)
3016 el[n] = f.
ac(n, roc_number);
3036 Ifile <<
"Content element by element:\n";
3037 Ifile <<
"(The first number is sequencial number, then there are "
3038 "indexes, the last is the element)\n";
3044 while ((at = iter_f.
more()) != NULL) {
3045 std::ostringstream ost;
3048 Ifile <<
"nseq=" << std::setw(5) << nseq <<
" ncur=";
3050 for (n = 0; n < iter_f.
get_ncur().get_qel(); n++) {
3051 file <<
' ' << std::setw(5) << iter_f.
get_ncur()[n];
3064 Ifile <<
"Content is empty.\n";
3101 "template<class T> istream& operator>>(istream& file, DynArr<T>& f)");
3121 file >> cum_qel_loc;
3127 long qseq = qel_loc[0];
3128 for (n = 1; n < qel_loc.
get_qel(); n++) {
3131 for (n = 0; n < qseq; n++) {
3138 for (m = 0; m < qel_loc.
get_qel(); m++) {
3208 Ifile <<
"Content element by element:\n";
3209 Ifile <<
"(The first number is sequencial number, then there are indexes, "
3210 "the last is the element)\n";
3215 while ((at = iter_f.
more()) != NULL) {
3217 Ifile <<
"nseq=" << std::setw(5) << nseq <<
" ncur=";
3219 for (n = 0; n < iter_f.
get_ncur().get_qel(); n++) {
3220 file <<
' ' << std::setw(5) << iter_f.
get_ncur()[n];
3225 std::ostringstream ost;
3248#define Iprintda_double(file, name) \
3249 file << indn << #name << "=" << noindent; \
3250 print_DynArr_double(file, name);
void print_adr_DynLinArr(std::ostream &file, const DynLinArr< T > &f, int l, long q)
const int pq_arrelem_in_line
void print_DynLinArr_long(std::ostream &file, const DynLinArr< long > &f)
int operator!=(const DynLinArr< T > &f1, const DynLinArr< T > &f2)
DynLinArr< long > qel_communicat
void print_DynLinArr_float(std::ostream &file, const DynLinArr< float > &f)
void convert_DynArr(const DynArr< T > &s, DynArr< X > &d)
void print_DynArr_float(std::ostream &file, const DynArr< float > &f)
void copy_DynLinArr(const T &s, X &d)
void print_DynArr_int_w(std::ostream &file, const DynArr< int > &f, int w)
int find_next_comb_not_less(const DynLinArr< long > &qel, DynLinArr< long > &f)
DynLinArr< T > merge(const DynLinArr< T > &fd1, long qfd1, const DynLinArr< T > &fd2, long qfd2)
String DynLinArr_char_we_to_String(DynLinArr< char > &ar)
void print_DynLinArr_double(std::ostream &file, const DynLinArr< double > &f)
void print_DynArr_double(std::ostream &file, const DynArr< double > &f)
int ifequal(const DynLinArr< T > &fd1, const DynLinArr< T > &fd2, long qfirst=-1)
void convert_DynLinArr(const T &s, X &d)
void print_DynLinArr_int(std::ostream &file, const DynLinArr< int > &f)
void put_qel_1(DynLinArr< T > &f, long fq)
int operator==(const DynLinArr< T > &f1, const DynLinArr< T > &f2)
void print_DynLinArr(std::ostream &file, const DynLinArr< T > &f, int l)
int apeq_mant(const DynLinArr< T > &f1, const DynLinArr< T > &f2, P prec)
int find_next_comb(const DynLinArr< long > &qel, DynLinArr< long > &f)
void assignAll_1(DynLinArr< T > &f, const T1 &ft)
void apply2(DynLinArr< T > &ar, void(*fun1)(T &f, void(*fun21)(X &f)), void(*fun2)(X &f))
void print_DynArr(std::ostream &file, const DynArr< T > &f, int l)
void print_DynLinArr_int_double3(std::ostream &file, const DynLinArr< int > &iar, const DynLinArr< double > &dar1, const DynLinArr< double > &dar2, const DynLinArr< double > &dar3)
std::istream & operator>>(std::istream &file, DynLinArr< T > &f)
void print_DynLinArr_int_double(std::ostream &file, const DynLinArr< int > &iar, const DynLinArr< double > &dar)
void copy_DynArr(const DynArr< T > &s, DynArr< X > &d)
void print_DynLinArr_double2(std::ostream &file, const DynLinArr< double > &f1, const DynLinArr< double > &f2)
int find_prev_comb(const DynLinArr< long > &qel, DynLinArr< long > &f)
void apply1(DynArr< T > &ar, void(*fun)(T &f))
int gconfirm_ind_ext(const DynLinArr< long > &qel, const DynLinArr< long > &ind)
long append(const T &t, DynLinArr< T > &dla, long &qael, T *tempt=NULL, long new_qel=0)
std::ostream & operator<<(std::ostream &file, const DynLinArr< T > &f)
int gconfirm_ind(const DynLinArr< long > &qel, const DynLinArr< long > &ind)
#define macro_copy_body(type)
DoubleAc find_max(const DoubleAc &a, const DoubleAc &b)
#define check_econd11(a, signb, stream)
#define mfunnamep(string)
#define check_econd12(a, sign, b, stream)
void put_one_n(std::ostringstream &ost)
D & operator=(const D &f)
IndexingProvider< D > & operator[](long n)
const IndexingProvider< D > & operator[](long n) const
IndexingProvider(DynArr< D > &farr, long fq_deref_ind, long fcurrent_pos)
void pilfer(PILF_CONST DynArr< T > &f)
const T & ac(long i1, long i2, long i3) const
T & acp(const DynLinArr< long > &ind)
DynArr(long fqel1, long fqel2, T *val=NULL)
const T & acp(const DynLinArr< long > &ind) const
const T & acu(const DynLinArr< long > &ind) const
DynArr(long fqel, T *val=NULL)
T & ac(const DynLinArr< long > &ind)
void pass(long q, DynLinArr< long > fqel, DynLinArr< long > fcum_qel, T *fel)
const DynLinArr< long > & get_cum_qel(void) const
DynArr(PILF_CONST DynArr< T > &f, Pilfer)
void assignAll(const T &val)
DynArr(long fqel1, long fqel2, long fqel3, T *val=NULL)
const T & ac(long i1, long i2) const
const DynLinArr< T > & get_el(void) const
long get_qdim(void) const
DynArr< T > & operator=(const DynArr< T > &f)
DynArr(const DynLinArr< T > &f)
const T & acu(long i1, long i2) const
DynArr(const DynArr< T > &f)
DynArr(const DynLinArr< long > &fqel, T val, ArgInterp_Val)
const IndexingProvider< T > operator[](long n) const
const T & ac_lin(long n) const
int confirm_ind_ext(const DynLinArr< long > &ind)
DynArr< T > & operator=(const DynArr< D > &f)
DynArr(long fqel, T val, ArgInterp_Val)
int get_s_non_emplty(void) const
const T & ac(const DynLinArr< long > &ind) const
T & acu(long i1, long i2)
friend void apply2(DynArr< P > &ar, void(*fun1)(P &f, void(*fun21)(X &f)), void(*fun2)(X &f))
DynArr(long fqel1, long fqel2, T val, ArgInterp_Val)
IndexingProvider< T > operator[](long n)
T & acu(const DynLinArr< long > &ind)
friend void apply1(DynArr< P > &ar, void(*fun)(P &f))
const T & ac(long i) const
int confirm_ind(const DynLinArr< long > &ind)
const T & acu(long i1) const
long get_qel_lin(void) const
const DynLinArr< long > & get_qel(void) const
DynArr(long fqel, const T *ar, ArgInterp_Arr)
T & ac(long i1, long i2, long i3)
const T & acu_lin(long n) const
void put_qel(T *val=NULL)
DynArr(const DynLinArr< long > &fqel, T *val)
DynArr(long fqel1, long fqel2, long fqel3, long fqel4, T *val=NULL)
DynLinArr< T > & assignAll1(const X &f)
void pilfer(PILF_CONST DynLinArr< T > &f)
DynLinArr(const DynArr< T > &f)
DynLinArr< T > & operator=(const DynLinArr< D > &f)
DynLinArr(long fqel, const T &val)
void increment(const T *val=NULL)
DynLinArr(PILF_CONST DynLinArr< T > &f, Pilfer)
const T & acu(long n) const
friend void apply1(DynLinArr< P > &ar, void(*fun)(P &f))
void increment(const T &val)
void put_qel(long fqel, const T *val, ArgInterp_SingleAdr t)
DynLinArr(const DynArr< T > &f, int n_of_dim, long roc_number)
const T & operator[](long n) const
void sort_select_decreasing(DynLinArr< long > &sort_ind, long q_to_sort=0) const
void sort(long q_to_sort=0)
friend void apply2(DynLinArr< P > &ar, void(*fun1)(P &f, void(*fun21)(X &f)), void(*fun2)(X &f))
DynLinArr(long fqel, const T *ar, ArgInterp_Arr)
void put_qel(long fqel, const T &val)
macro_copy_header(DynLinArr)
DynLinArr & assignAll(const T &f)
void sort_select_increasing(DynLinArr< long > &sort_ind, long q_to_sort=0) const
DynLinArr< T > & operator=(const DynLinArr< T > &f)
const T & last_el(void) const
void pass(long fqel, T *fel)
void sort(DynLinArr< long > &sort_ind, long q_to_sort=0) const
DynLinArr(const DynLinArr< T > &f)
IterDynArr(const DynArr< T > *fdar)
const DynLinArr< long > & get_ncur(void) const
IterDynLinArr(DynLinArr< T > *fdar)
long set_position(const String &word, std::istream &istrm, int s_rewind, int s_req_sep)
void definp_any_par(T &inp, const String &word, const definp_endpar &dep, int fs_short=0)
std::ostream & yesindent(std::ostream &f)
std::ostream & noindent(std::ostream &f)
#define Iprint3n(file, name1, name2, name3)
#define Iprintn(file, name)
#define Iprint2n(file, name1, name2)