87 template<
class C,
class U> Object<C, U>::Object() : C(), hash_value_(0), invalidated_(0) {
90 template<
class C,
class U> Object<C, U>::Object(
r_code::Mem* ) : C(), hash_value_(0), invalidated_(0) {
92 C::set_oid(UNDEFINED_OID);
95 template<
class C,
class U> Object<C, U>::~Object() {
100 template<
class C,
class U>
bool Object<C, U>::is_invalidated() {
102 return invalidated_ == 1;
105 template<
class C,
class U>
bool Object<C, U>::invalidate() {
115 if (C::code(0).getDescriptor() == Atom::MARKER) {
117 for (uint16 i = 0; i < C::references_size(); ++i)
118 C::get_reference(i)->remove_marker(
this);
121 if (C::is_registered())
122 r_code::Mem::Get()->delete_object(
this);
127 template<
class C,
class U>
void Object<C, U>::compute_hash_value() {
129 hash_value_ = C::code(0).asOpcode() << 20;
130 hash_value_ |= (C::code_size() & 0x00000FFF) << 8;
131 hash_value_ |= C::references_size() & 0x000000FF;
134 template<
class C,
class U> float32 Object<C, U>::get_psln_thr() {
137 float32 r = C::code(C::code(0).getAtomCount()).asFloat();
142 template<
class C,
class U>
void Object<C, U>::mod(uint16 member_index, float32 value) {
144 if (member_index != C::code_size() - 1)
146 float32 v = C::code(member_index).asFloat() + value;
153 C::code(member_index) = Atom::Float(v);
157 template<
class C,
class U>
void Object<C, U>::set(uint16 member_index, float32 value) {
159 if (member_index != C::code_size() - 1)
163 C::code(member_index) = Atom::Float(value);
173 probe.references_[0] = group;
175 std::unordered_set<r_code::_View *, r_code::_View::Hash, r_code::_View::Equal>::const_iterator v = C::views_.find(&probe);
176 if (v != C::views_.end()) {