void saveFrame(Sound& sound) { sounds.enqueue_tail(sound); samples += sound.getSamples(); channels = sound.getChannels(); printf(" %ld sound frames buffered in memory (%ld samples)\n", (long int) sounds.size(), (long int) samples); }
// Are we or the parameter node involved in any recursion? bool AST_Exception::in_recursion (ACE_Unbounded_Queue<AST_Type *> &list) { bool self_test = (list.size () == 0); // We should calculate this only once. If it has already been // done, just return it. if (self_test && this->in_recursion_ != -1) { return (this->in_recursion_ == 1); } if (list.size () > 1) { if (match_names (this, list)) { // this happens when we are not recursed ourselves but instead // are part of another recursive type return false; } } list.enqueue_tail(this); // Proceed if the number of members in our scope is greater than 0. if (this->nmembers () > 0) { // Continue until each element is visited. for (UTL_ScopeActiveIterator i (this, IK_decls);!i.is_done ();i.next ()) { AST_Field *field = AST_Field::narrow_from_decl (i.item ()); if (field == 0) // This will be an enum value or other legitimate non-field // member - in any case, no recursion. { continue; } AST_Type *type = field->field_type (); if (type->node_type () == AST_Decl::NT_typedef) { AST_Typedef *td = AST_Typedef::narrow_from_decl (type); type = td->primitive_base_type (); } if (type == 0) { ACE_ERROR_RETURN ((LM_ERROR, ACE_TEXT ("(%N:%l) AST_Exception::") ACE_TEXT ("in_recursion - ") ACE_TEXT ("bad field type\n")), 0); } if (type->in_recursion (list)) { if (self_test) this->in_recursion_ = 1; idl_global->recursive_type_seen_ = true; return true; } } } // Not in recursion. if (self_test) this->in_recursion_ = 0; return 0; //this->in_recursion_; }