33 for (
int n =
qeid - 1; n >= 1; n--)
34 eid[n].amvol->down_absref(f);
38 for (
int n = 1; n <
qeid; ++n)
39 eid[n].amvol->up_absref(f);
43 for (
int n = 0; n <
qeid; ++n) {
44 if (
eid[n].amvol.get() == amvol)
return 1;
50 for (
int n = 0; n <
qeid; ++n) {
51 if (
eid[n].amvol->Gavol() == avol)
return 1;
59 if (tid1.
qeid != tid2.
qeid)
return 0;
63 for (
int n = 0; n < tid1.
qeid - 1; ++n) {
73 Ifile <<
"no volume defined, qeid=" <<
qeid <<
'\n';
76 for (
int n = 0; n <
qeid - 1; ++n) {
95 const int s = atid->
qeid;
98 mcerr <<
"absvol::find_embed_vol:\n"
99 <<
" aman->get_qel() > 0 && atid->qeid == pqamvol\n"
100 <<
" atid->qeid=" << atid->
qeid <<
'\n';
101 mcerr <<
" Increase pqamvol\n";
105 for (
int n = 0; n < aman.
get_qel(); ++n) {
107 const int i = aman[n]->m_find_embed_vol(fpt, dir, atid);
109 if (s < atid->qeid)
break;
110 Imcout <<
"absvol::find_embed_vol:\n";
111 Imcout <<
" Warning: contradiction between "
112 <<
" i==1 and s == fnamvol\n";
120 faeid->
amvol.put(NULL);
133 for (
int n = 0; n < aman.
get_qel(); ++n) {
134 if (aman[n]->m_range_ext(fts, 0) == 1) {
136 faeid->
amvol.put(aman[n]);
140 if (sb == 1 || sb == 2)
return 1;
148 Ifile <<
"absvol::print(l=" << l <<
"): name=" << s <<
'\n';
154 Ifile <<
"The following volumes are embraced, q=" << embed.
get_qel()
157 for (
int n = 0; n < embed.
get_qel(); ++n) {
158 Ifile <<
"n=" << n <<
'\n';
160 embed[n]->m_print(file, l);
165 Ifile <<
"None of embraced volumes\n";
176 const vec& fdir)
const {
191 mfunname(
"int manip_absvol::m_find_embed_vol(...)");
201 if (atid->
qeid < s) {
202 mcerr <<
"manip_absvol::m_find_embed_vol: should never happen\n";
208 if (atid->
qeid < s) {
209 mcerr <<
"manip_absvol::m_find_embed_vol: should never happen\n";
222 int s = avol->
range(ts, s_ext, sb, faeid);
243 strcpy(nm,
"mvol->");
251 Ifile <<
"manip_absvol::m_print(l=" << l <<
"): " << s <<
'\n';
257 asys->
print(file, l - 1);
259 mcout <<
"manip_absvol::m_print: system==NULL\n";
262 avol->
print(file, l - 1);
264 mcout <<
"manip_absvol::m_print: avol==NULL\n";
276 aref_tran.pass(
new absref_transmit(1,
aref_ptr));
290 : csys(fc, fbas, fname) {}
293 strcpy(nm,
"mvol->");
303 Ifile <<
"sh_manip_absvol::m_print(l=" << l <<
"): " << s <<
'\n';
309 avol->
print(file, l - 1);
311 mcout <<
"manip_absvol::m_print: avol==NULL\n";
#define macro_copy_body_not_defined(type)
virtual void print(std::ostream &file, int l) const
virtual int find_embed_vol(const point &fpt, const vec &dir, manip_absvol_treeid *atid) const
virtual int range_ext(trajestep &fts, int s_ext) const =0
virtual int check_point_inside(const point &fpt, const vec &dir) const =0
virtual DynLinArr< manip_absvol * > Gamanip_embed(void) const
virtual int range(trajestep &fts, int s_ext, int &sb, manip_absvol_eid *faeid) const
virtual void chname(char *nm) const
virtual void print(std::ostream &file, int l) const
PassivePtr< manip_absvol > amvol
void print(std::ostream &file, int l) const
int check_manip_absvol_registered(manip_absvol *amvol)
const manip_absvol_eid * G_laeid() const
manip_absvol_eid eid[pqamvol]
void print(std::ostream &file, int l) const
void down_absref(absref *f)
manip_absvol * G_lamvol() const
void up_absref(absref *f)
int check_absvol_registered(absvol *avol)
void down_absref(absref *f) const
virtual const abssyscoor * Gasc(void) const
void up_absref(absref *f) const
virtual int m_range_ext(trajestep &fts, int s_ext) const
void m_chname(char *nm) const
virtual int m_check_point_inside(const point &fpt, const vec &dir) const
virtual absvol * Gavol(void) const =0
virtual int m_range(trajestep &fts, int s_ext, int &sb, manip_absvol_eid *faeid) const
virtual void m_print(std::ostream &file, int l) const
virtual int m_find_embed_vol(const point &fpt, const vec &fdir, manip_absvol_treeid *atid) const
virtual void up(const abssyscoor *fasc)
virtual const abssyscoor * Gasc(void) const
virtual void m_chname(char *nm) const
virtual void get_components(ActivePtr< absref_transmit > &aref_tran)
virtual void m_print(std::ostream &file, int l) const
void up(const basis *fabas_new)
std::ostream & noindent(std::ostream &f)
int operator==(manip_absvol_treeid &tid1, manip_absvol_treeid &tid2)