23#define USE_DOUBLE_PTR_IN_PASSIVEPTR
33#define USE_DELETE_AT_ZERO_COUNT
60#define COPY_TYPE_CHECK
64#define USE_GETSETTERS_IN_PASSIVEPTR
73#define USE_PRIVATE_PARAM_IN_PASSIVEPTR
77#if defined(USE_PRIVATE_PARAM_IN_PASSIVEPTR) && \
78 !defined(USE_GETSETTERS_IN_PASSIVEPTR)
79"options incompatible\n";
82#define USE_CHAR_CONTROL_VARIABLES
105#if defined(USE_CHAR_CONTROL_VARIABLES) && defined(USE_BIT_FIELDS)
106"options incompatible\n";
108#if defined(USE_CHAR_CONTROL_VARIABLES) && defined(USE_BIT_OPERA)
109"options incompatible\n";
111#if defined(USE_BIT_FIELDS) && defined(USE_BIT_OPERA)
112"options incompatible\n";
115#define USE_CHAR_GETSETTERS_PARAMETERS
122#if defined(USE_CHAR_CONTROL_VARIABLES) && \
123 !defined(USE_CHAR_GETSETTERS_PARAMETERS)
124"options incompatible\n";
133#ifdef DEBUG_ACTIVEPTR
134 mcout <<
"static X* StandardCopyDefinition::copy(const X* f)\n";
138#ifndef COPY_TYPE_CHECK
142#ifdef DEBUG_ACTIVEPTR
143 mcout <<
"X* StandardCopyDefinition::copy(const X* f): f->copy() returned "
145 mcerr <<
"Type of X is (in internal notations) " <<
typeid(X).name()
147 mcerr <<
"Type of *p is (in internal notations) " <<
typeid(*p).name()
150 if (
typeid(*p) !=
typeid(*f)) {
151 mcerr <<
"Error in X* StandardCopyDefinition::copy(const X* f): "
152 <<
"typeid(*p) != typeid(*f) \n";
153 mcerr <<
"Type of X is (in internal notations) " <<
typeid(X).name()
155 mcerr <<
"Type of *p is (in internal notations) " <<
typeid(*p).name()
157 mcerr <<
"Type of *f is (in internal notations) " <<
typeid(*f).name()
159 mcerr <<
"Possible reason is omiting of copy function in one of the "
160 "derivative classes\n";
199namespace CountPP_ns {
207 inline void book(
void);
218 long number_of_booked;
222 if (number_of_booked > LONG_MAX - 1) {
223 mcerr <<
"Error in CountPassivePtr::book(void):\n"
224 <<
" too much booked counters, number_of_booked > LONG_MAX-1, "
225 "number_of_booked=" << number_of_booked <<
'\n';
232 if (number_of_booked < 1) {
233 mcerr <<
"Error in CountPassivePtr::unbook(void):\n"
234 <<
" number_of_booked < 1, number_of_booked=" << number_of_booked
244const unsigned char eb_s_ban_del = 1;
245const unsigned char eb_s_ban_sub1 = 2;
246const unsigned char eb_s_ban_sub2 = 4;
247const unsigned char eb_s_ban_cop1 = 8;
248const unsigned char eb_s_ban_cop2 = 16;
249#ifdef USE_DELETE_AT_ZERO_COUNT
250const unsigned char eb_s_allow_del_at_zero_count = 32;
262 inline static void clear_bit(
unsigned char& cw,
unsigned char b) {
267 inline static void rise_bit(
unsigned char& cw,
unsigned char b) { cw |= b; }
271#elif defined(USE_BIT_FIELDS)
274 unsigned int s_ban_del : 1;
275 unsigned int s_ban_sub : 2;
276 unsigned int s_ban_cop : 2;
277#ifdef USE_DELETE_AT_ZERO_COUNT
278 unsigned int s_allow_del_at_zero_count : 1;
286 s_allow_del_at_zero_count(0)
290#ifdef USE_CHAR_GETSETTERS_PARAMETERS
291 ControlParam(
char fs_ban_del,
char fs_ban_sub,
char fs_ban_cop = 0
294 char fs_allow_del_at_zero_count = 0
299 ControlParam(int fs_ban_del, int fs_ban_sub, int fs_ban_cop = 0
302 int fs_allow_del_at_zero_count = 0
307 s_ban_del(fs_ban_del),
308 s_ban_sub(fs_ban_sub),
309 s_ban_cop(fs_ban_cop)
312 s_allow_del_at_zero_count(fs_allow_del_at_zero_count)
315 if (!(fs_ban_del == 0 || fs_ban_del == 1)) {
316 mcerr <<
"ERROR in ControlParam::ControlParam(...)\n";
317 mcerr <<
"s_ban_del is outside limits, s_ban_del=" << fs_ban_del
321 if (fs_ban_sub < 0 || fs_ban_sub > 2) {
322 mcerr <<
"ERROR in ControlParam::ControlParam(...):\n";
323 mcerr <<
"s_ban_sub is outside limits, s_ban_sub=" << fs_ban_sub
327 if (fs_ban_cop < 0 || fs_ban_cop > 2) {
328 mcerr <<
"ERROR in ControlParam::ControlParam(...):\n";
329 mcerr <<
"s_ban_cop is outside limits, s_ban_cop=" << fs_ban_cop
333#ifdef USE_DELETE_AT_ZERO_COUNT
334 if (!(s_allow_del_at_zero_count == 0 || s_allow_del_at_zero_count == 1)) {
335 mcerr <<
"ERROR in ControlParam::ControlParam(...)\n";
336 mcerr <<
"s_allow_del_at_zero_count is outside limits, "
337 "s_allow_del_at_zero_count=" << fs_allow_del_at_zero_count
350#elif defined USE_BIT_FIELDS
357 s_allow_del_at_zero_count(0),
362#ifdef USE_CHAR_GETSETTERS_PARAMETERS
366 inline
RegPassivePtr(int fs_ban_del, int fs_ban_sub, int fs_ban_cop = 0)
371#elif defined(USE_BIT_FIELDS)
372 conparam(fs_ban_del, fs_ban_sub, fs_ban_cop),
374 s_ban_del(fs_ban_del), s_ban_sub(fs_ban_sub), s_ban_cop(fs_ban_cop),
376 s_allow_del_at_zero_count(0),
412 virtual void print(std::ostream& file,
int l = 1)
const;
426 unsigned char control_word;
429#ifdef USE_PRIVATE_PARAM_IN_PASSIVEPTR
432 static int s_ban_del_ignore;
433 static int s_print_adr_cpp;
434#ifdef USE_PRIVATE_PARAM_IN_PASSIVEPTR
438#elif defined(USE_BIT_FIELDS)
440 ControlParam conparam;
443#ifdef USE_PRIVATE_PARAM_IN_PASSIVEPTR
446 static int s_ban_del_ignore;
447 static int s_print_adr_cpp;
448#ifdef USE_PRIVATE_PARAM_IN_PASSIVEPTR
454#ifdef USE_PRIVATE_PARAM_IN_PASSIVEPTR
457#ifdef USE_CHAR_CONTROL_VARIABLES
469 static int s_ban_del_ignore;
476#ifdef USE_CHAR_CONTROL_VARIABLES
496#ifdef USE_CHAR_CONTROL_VARIABLES
508#ifdef USE_DELETE_AT_ZERO_COUNT
509#ifdef USE_CHAR_CONTROL_VARIABLES
510 char s_allow_del_at_zero_count;
512 int s_allow_del_at_zero_count;
522 static int s_print_adr_cpp;
530#ifdef USE_PRIVATE_PARAM_IN_PASSIVEPTR
536#ifdef USE_GETSETTERS_IN_PASSIVEPTR
538#ifdef USE_CHAR_GETSETTERS_PARAMETERS
546 clear_bit(control_word, eb_s_ban_del);
547 else if (fs_ban_del == 1)
548 rise_bit(control_word, eb_s_ban_del);
550 if (fs_ban_del == 0 || fs_ban_del == 1) {
552 conparam.s_ban_del = fs_ban_del;
554 s_ban_del = fs_ban_del;
559 mcerr <<
"ERROR in inline void set_s_ban_del(int fs_ban_del):\n";
560 mcerr <<
"s_ban_del is outside limits, s_ban_del=" << int(fs_ban_del)
566#ifdef USE_CHAR_GETSETTERS_PARAMETERS
573 if ((control_word & eb_s_ban_del) != 0)
578#elif defined(USE_BIT_FIELDS)
580 return conparam.s_ban_del;
583 {
return s_ban_del; }
586#ifdef USE_CHAR_GETSETTERS_PARAMETERS
592 if (fs_ban_del_ignore == 0 || fs_ban_del_ignore == 1) {
593 s_ban_del_ignore = fs_ban_del_ignore;
595 mcerr <<
"ERROR in inline void set_s_ban_del_ignore(int "
596 "fs_ban_del_ignore ):\n";
597 mcerr <<
"s_ban_del_ignore is outside limits, s_ban_del_ignore="
598 << int(fs_ban_del_ignore) <<
'\n';
603#ifdef USE_CHAR_GETSETTERS_PARAMETERS
609 return s_ban_del_ignore;
612#ifdef USE_CHAR_GETSETTERS_PARAMETERS
619 if (fs_ban_sub == 0) {
620 clear_bit(control_word, eb_s_ban_sub1);
621 clear_bit(control_word, eb_s_ban_sub2);
622 }
else if (fs_ban_sub == 1) {
623 rise_bit(control_word, eb_s_ban_sub1);
624 clear_bit(control_word, eb_s_ban_sub2);
625 }
else if (fs_ban_sub == 2) {
626 clear_bit(control_word, eb_s_ban_sub1);
627 rise_bit(control_word, eb_s_ban_sub2);
630 if (fs_ban_sub >= 0 && fs_ban_sub <= 2) {
632 conparam.s_ban_sub = fs_ban_sub;
634 s_ban_sub = fs_ban_sub;
639 mcerr <<
"ERROR in inline void set_s_ban_sub(int fs_ban_sub):\n";
640 mcerr <<
"s_ban_sub is outside limits, s_ban_sub=" << int(fs_ban_sub)
646#ifdef USE_CHAR_GETSETTERS_PARAMETERS
653 if ((control_word & eb_s_ban_sub2) == 0) {
654 if ((control_word & eb_s_ban_sub1) == 0)
664#elif defined(USE_BIT_FIELDS)
666 return conparam.s_ban_sub;
669 {
return s_ban_sub; }
672#ifdef USE_CHAR_GETSETTERS_PARAMETERS
679 if (fs_ban_cop == 0) {
680 clear_bit(control_word, eb_s_ban_cop1);
681 clear_bit(control_word, eb_s_ban_cop2);
682 }
else if (fs_ban_cop == 1) {
683 rise_bit(control_word, eb_s_ban_cop1);
684 clear_bit(control_word, eb_s_ban_cop2);
685 }
else if (fs_ban_cop == 2) {
686 clear_bit(control_word, eb_s_ban_cop1);
687 rise_bit(control_word, eb_s_ban_cop2);
690 if (fs_ban_cop >= 0 && fs_ban_cop <= 2) {
692 conparam.s_ban_cop = fs_ban_cop;
694 s_ban_cop = fs_ban_cop;
699 mcerr <<
"ERROR in inline void set_s_ban_cop(int fs_ban_cop):\n";
700 mcerr <<
"s_ban_cop is outside limits, s_ban_cop=" << int(fs_ban_cop)
706#ifdef USE_CHAR_GETSETTERS_PARAMETERS
713 if ((control_word & eb_s_ban_cop2) == 0) {
714 if ((control_word & eb_s_ban_cop1) == 0)
722#elif defined USE_BIT_FIELDS
724 return conparam.s_ban_cop;
727 {
return s_ban_cop; }
730#ifdef USE_DELETE_AT_ZERO_COUNT
732#ifdef USE_CHAR_GETSETTERS_PARAMETERS
739 if (fs_allow_del_at_zero_count == 0)
740 clear_bit(control_word, eb_s_allow_del_at_zero_count);
741 else if (fs_allow_del_at_zero_count == 1)
742 rise_bit(control_word, eb_s_allow_del_at_zero_count);
744 if (fs_allow_del_at_zero_count == 0 || fs_allow_del_at_zero_count == 1) {
746 conparam.s_allow_del_at_zero_count = fs_allow_del_at_zero_count;
748 s_allow_del_at_zero_count = fs_allow_del_at_zero_count;
753 mcerr <<
"ERROR in inline void set_s_allow_del_at_zero_count(int "
754 "fs_allow_del_at_zero_count):\n";
755 mcerr <<
"s_allow_del_at_zero_count is outside limits, "
756 "s_allow_del_at_zero_count=" << int(fs_allow_del_at_zero_count)
762#ifdef USE_CHAR_GETSETTERS_PARAMETERS
769 if ((control_word & eb_s_allow_del_at_zero_count) != 0)
774#elif defined(USE_BIT_FIELDS)
776 return conparam.s_allow_del_at_zero_count;
779 {
return s_allow_del_at_zero_count; }
784#ifdef USE_CHAR_GETSETTERS_PARAMETERS
790 if (fs_print_adr_cpp == 0 || fs_print_adr_cpp == 1) {
791 s_print_adr_cpp = fs_print_adr_cpp;
793 mcerr <<
"ERROR in inline void set_s_print_adr_cpp(int fs_print_adr_cpp "
795 mcerr <<
"s_print_adr_cpp is outside limits, s_print_adr_cpp="
796 << int(fs_print_adr_cpp) <<
'\n';
801#ifdef USE_CHAR_GETSETTERS_PARAMETERS
807 return s_print_adr_cpp;
819 if (number_of_booked != 0) {
820 mcerr <<
"Error in CountPassivePtr::~CountPassivePtr():\n"
821 <<
" number_of_booked != 0, number_of_booked=" << number_of_booked
826 mcerr <<
"rpp = NULL\n";
829 if (rpp != NULL) rpp->cpp = NULL;
837 inline X*
get(
void)
const {
838 if (cpp == NULL)
return NULL;
839#ifdef USE_DOUBLE_PTR_IN_PASSIVEPTR
841 if (cpp->get_rpp() == NULL)
return NULL;
842#ifdef USE_CHECK_DOUBLE_PTR_IN_PASSIVEPTR
843 X* temp_ptr =
dynamic_cast<X*
>(
const_cast<RegPassivePtr*
>(cpp->get_rpp()));
844 if (ptr != temp_ptr) {
845 mcerr <<
"Error in inline X* PassivePtr::get(void):\n";
846 mcerr <<
"ptr != temp_ptr\n";
853 return (X*)(cpp->get_rpp());
864 inline void put(X* fptr);
882#ifdef USE_DOUBLE_PTR_IN_PASSIVEPTR
888#ifdef USE_DOUBLE_PTR_IN_PASSIVEPTR
906 inline X* operator->(
void)
const;
908 inline X* getver(
void)
const;
909#ifdef IMPLICIT_X_STAR
910 inline operator X*(void)
const;
916 return cpp->get_number_of_booked();
918 void print(std::ostream& file,
int l = 1)
const;
924#ifdef USE_DOUBLE_PTR_IN_PASSIVEPTR
938 Ifile <<
"PassivePtr<X>:";
940 file <<
" pointer is NULL, no object, number of ref's is "
941 << get_total_number_of_references() <<
"\n";
944 get()->print(file, l);
947 Ifile <<
"number of ref's is " << get_total_number_of_references() <<
'\n';
953 Ifile <<
"PassivePtr<X>:";
955 file <<
" pointer is NULL, no object, number of ref's is "
973#ifdef USE_DELETE_AT_ZERO_COUNT
975 if ((arptr = cpp->get_rpp()) != NULL &&
979 arptr->s_allow_del_at_zero_count == 1 &&
981 cpp->get_number_of_booked() == 1)
986 if (cpp->get_rpp() == NULL && cpp->get_number_of_booked() == 0)
994#ifdef USE_DOUBLE_PTR_IN_PASSIVEPTR
1001 if (f.cpp != NULL) {
1006#ifdef USE_DOUBLE_PTR_IN_PASSIVEPTR
1012 if (
this != &f) put(f.
get());
1025#ifdef USE_DELETE_AT_ZERO_COUNT
1027 if ((arptr = cpp->get_rpp()) != NULL &&
1031 arptr->s_allow_del_at_zero_count == 1 &&
1033 cpp->get_number_of_booked() == 1)
1038 if (cpp->get_rpp() == NULL && cpp->get_number_of_booked() == 0) {
1044 if (cpp != NULL) cpp->
book();
1045#ifdef USE_DOUBLE_PTR_IN_PASSIVEPTR
1053#ifdef USE_DOUBLE_PTR_IN_PASSIVEPTR
1054#ifdef SKIP_CHECKS_NULL
1058 mcerr <<
"Error in X* PassivePtr<X>::operator->(void) const: cpp == NULL\n";
1059 mcerr <<
"This means that the pointer is emtpy, "
1060 <<
"there is no addressed object.\n";
1061 mcerr <<
"Type of X is (in internal notations) " <<
typeid(X).name()
1065 if (cpp->get_rpp() == NULL) {
1066 mcerr <<
"Error in X* PassivePtr<X>::operator->(void) const: "
1067 "cpp->get_rpp() == NULL\n";
1068 mcerr <<
"This means that the pointer is emtpy, "
1069 <<
"there is no addressed object.\n";
1070 mcerr <<
"Type of X is (in internal notations) " <<
typeid(X).name()
1074#ifdef USE_CHECK_DOUBLE_PTR_IN_PASSIVEPTR
1075 X* temp_ptr =
dynamic_cast<X*
>(
const_cast<RegPassivePtr*
>(cpp->get_rpp()));
1076 if (ptr != temp_ptr) {
1077 mcerr <<
"Error in inline X* PassivePtr::operator->(void):\n";
1078 mcerr <<
"ptr != temp_ptr\n";
1085#ifdef SKIP_CHECKS_NULL
1089 mcerr <<
"Error in X* PassivePtr<X>::operator->(void) const: cpp == NULL\n";
1090 mcerr <<
"This means that the pointer is emtpy, "
1091 <<
"there is no addressed object.\n";
1092 mcerr <<
"Type of X is (in internal notations) " <<
typeid(X).name()
1097 if ((rpp = cpp->get_rpp()) == NULL) {
1098 mcerr <<
"Error in X* PassivePtr<X>::operator->(void) const: "
1099 "cpp->get_rpp() == NULL\n";
1100 mcerr <<
"This means that the pointer is emtpy, "
1101 <<
"there is no addressed object.\n";
1102 mcerr <<
"Type of X is (in internal notations) " <<
typeid(X).name()
1113#ifdef USE_DOUBLE_PTR_IN_PASSIVEPTR
1114#ifdef SKIP_CHECKS_NULL
1118 mcerr <<
"Error in X& PassivePtr<X>::operator*(void) const: cpp == NULL\n";
1119 mcerr <<
"This means that the pointer is emtpy, "
1120 <<
"there is no addressed object.\n";
1121 mcerr <<
"Type of X is (in internal notations) " <<
typeid(X).name()
1125 if (cpp->get_rpp() == NULL) {
1126 mcerr <<
"Error in X& PassivePtr<X>::operator*(void) const: cpp->get_rpp() "
1128 mcerr <<
"This means that the pointer is emtpy, "
1129 <<
"there is no addressed object.\n";
1130 mcerr <<
"Type of X is (in internal notations) " <<
typeid(X).name()
1134#ifdef USE_CHECK_DOUBLE_PTR_IN_PASSIVEPTR
1135 X* temp_ptr =
dynamic_cast<X*
>(
const_cast<RegPassivePtr*
>(cpp->get_rpp()));
1136 if (ptr != temp_ptr) {
1137 mcerr <<
"Error in inline X& PassivePtr::operator*(void):\n";
1138 mcerr <<
"ptr != temp_ptr\n";
1145#ifdef SKIP_CHECKS_NULL
1149 mcerr <<
"Error in X& PassivePtr<X>::operator*(void) const: cpp == NULL\n";
1150 mcerr <<
"This means that the pointer is emtpy, "
1151 <<
"there is no addressed object.\n";
1152 mcerr <<
"Type of X is (in internal notations) " <<
typeid(X).name()
1166 if ((rpp = cpp->get_rpp()) == NULL) {
1167 mcerr <<
"Error in X& PassivePtr<X>::operator*(void) const: cpp->get_rpp() "
1169 mcerr <<
"This means that the pointer is emtpy, "
1170 <<
"there is no addressed object.\n";
1171 mcerr <<
"Type of X is (in internal notations) " <<
typeid(X).name()
1176 return *((X*)(rpp));
1182#ifdef USE_DOUBLE_PTR_IN_PASSIVEPTR
1183#ifdef SKIP_CHECKS_NULL
1187 mcerr <<
"Error in X* PassivePtr<X>::getver(void) const: cpp == NULL\n";
1188 mcerr <<
"This means that the pointer is emtpy, "
1189 <<
"there is no addressed object.\n";
1190 mcerr <<
"Type of X is (in internal notations) " <<
typeid(X).name()
1194 if (cpp->get_rpp() == NULL) {
1195 mcerr <<
"Error in X* PassivePtr<X>::getver(void) const: cpp->get_rpp() == "
1197 mcerr <<
"This means that the pointer is emtpy, "
1198 <<
"there is no addressed object.\n";
1199 mcerr <<
"Type of X is (in internal notations) " <<
typeid(X).name()
1203#ifdef USE_CHECK_DOUBLE_PTR_IN_PASSIVEPTR
1204 X* temp_ptr =
dynamic_cast<X*
>(
const_cast<RegPassivePtr*
>(cpp->get_rpp()));
1205 if (ptr != temp_ptr) {
1206 mcerr <<
"Error in inline X* PassivePtr::getver(void):\n";
1207 mcerr <<
"ptr != temp_ptr\n";
1214#ifdef SKIP_CHECKS_NULL
1218 mcerr <<
"Error in X* PassivePtr<X>::getver(void) const: cpp == NULL\n";
1219 mcerr <<
"This means that the pointer is emtpy, "
1220 <<
"there is no addressed object.\n";
1221 mcerr <<
"Type of X is (in internal notations) " <<
typeid(X).name()
1226 if ((rpp = cpp->get_rpp()) == NULL) {
1227 mcerr <<
"Error in X* PassivePtr<X>::getver(void) const: cpp->get_rpp() == "
1229 mcerr <<
"This means that the pointer is emtpy, "
1230 <<
"there is no addressed object.\n";
1231 mcerr <<
"Type of X is (in internal notations) " <<
typeid(X).name()
1240#ifdef IMPLICIT_X_STAR
1243#ifdef USE_DOUBLE_PTR_IN_PASSIVEPTR
1244#ifdef SKIP_CHECKS_NULL
1248 mcerr <<
"Error in PassivePtr<X>::operator X*(void) const: cpp == NULL\n";
1249 mcerr <<
"This means that the pointer is emtpy, "
1250 <<
"there is no addressed object.\n";
1251 mcerr <<
"Type of X is (in internal notations) " <<
typeid(X).name()
1255 if (cpp->get_rpp() == NULL) {
1256 mcerr <<
"Error in X* PassivePtr<X>::operator X*(void) const: "
1257 "cpp->get_rpp() == NULL\n";
1258 mcerr <<
"This means that the pointer is emtpy, "
1259 <<
"there is no addressed object.\n";
1260 mcerr <<
"Type of X is (in internal notations) " <<
typeid(X).name()
1264#ifdef USE_CHECK_DOUBLE_PTR_IN_PASSIVEPTR
1265 X* temp_ptr =
dynamic_cast<X*
>(
const_cast<RegPassivePtr*
>(cpp->get_rpp()));
1266 if (ptr != temp_ptr) {
1267 mcerr <<
"Error in inline X* PassivePtr::operator X*(void):\n";
1268 mcerr <<
"ptr != temp_ptr\n";
1275#ifdef SKIP_CHECKS_NULL
1276 const RegPassivePtr* rpp = cpp->get_rpp();
1280 <<
"Error in X* PassivePtr<X>::operator X*(void) const: cpp == NULL\n";
1281 mcerr <<
"This means that the pointer is emtpy, "
1282 <<
"there is no addressed object.\n";
1283 mcerr <<
"Type of X is (in internal notations) " <<
typeid(X).name()
1287 const RegPassivePtr* rpp;
1288 if ((rpp = cpp->get_rpp()) == NULL) {
1289 mcerr <<
"Error in X* PassivePtr<X>::operator X*(void) const: "
1290 "cpp->get_rpp() == NULL\n";
1291 mcerr <<
"This means that the pointer is emtpy, "
1292 <<
"there is no addressed object.\n";
1293 mcerr <<
"Type of X is (in internal notations) " <<
typeid(X).name()
1305 return f1.
get() == f2.
get();
1311#ifdef USE_DELETE_AT_ZERO_COUNT
1313 if ((arptr = cpp->get_rpp()) != NULL &&
1317 arptr->s_allow_del_at_zero_count == 1 &&
1319 cpp->get_number_of_booked() == 1)
1324 if (cpp->get_rpp() == NULL && cpp->get_number_of_booked() == 0) {
1334 return f1.
get() < f2.
get();
#define USE_PRIVATE_PARAM_IN_PASSIVEPTR
#define USE_DOUBLE_PTR_IN_PASSIVEPTR
#define USE_DELETE_AT_ZERO_COUNT
Counter of protected pointers.
long get_number_of_booked(void)
void change_rpp(const RegPassivePtr *frpp)
const RegPassivePtr * get_rpp(void)
CountPassivePtr(const RegPassivePtr *frpp)
X * operator->(void) const
void move_pointer(PassivePtr< X > &f)
long get_total_number_of_references(void) const
PassivePtr< X > & operator=(const PassivePtr< X > &f)
void print(std::ostream &file, int l=1) const
X & operator*(void) const
virtual PassivePtr * copy() const
static char get_s_ban_del_ignore(void)
void clear_pointers(void) const
static void set_s_ban_del_ignore(char fs_ban_del_ignore)
static void set_s_print_adr_cpp(char fs_print_adr_cpp)
virtual void print(std::ostream &file, int l=1) const
static char get_s_print_adr_cpp(void)
RegPassivePtr & operator=(const RegPassivePtr &f)
char get_s_allow_del_at_zero_count(void) const
void set_s_ban_cop(char fs_ban_cop)
RegPassivePtr(char fs_ban_del, char fs_ban_sub, char fs_ban_cop=0)
void set_s_allow_del_at_zero_count(char fs_allow_del_at_zero_count)
char get_s_ban_sub(void) const
virtual RegPassivePtr * copy() const
friend std::ostream & operator<<(std::ostream &file, const RegPassivePtr &f)
void set_s_ban_sub(char fs_ban_sub)
char get_s_ban_cop(void) const
void set_s_ban_del(char fs_ban_del)
char get_s_ban_del(void) const
CountPP_ns::CountPassivePtr * book(void) const
long get_total_number_of_references(void) const
static X * copy(const X *f)
std::ostream & noindent(std::ostream &f)
std::ostream & operator<<(std::ostream &file, const BGMesh &bgm)
int operator==(const circumf &f1, const circumf &f2)
DoubleAc operator*(const DoubleAc &f1, const DoubleAc &f2)
bool operator<(PassivePtr< X > f1, PassivePtr< X > f2)
std::ostream & yesindent(std::ostream &f)