Data-Nested

 view release on metacpan or  search on metacpan

lib/Data/Nested/Multifile.pm  view on Meta::CPAN

   if (exists $$self{"eles"}{$ele}) {
      $$self{"err"}    = "nmfele02";
      $$self{"errmsg"} = "Attempt to overwrite an existing element: $ele";
      return undef;
   }

   # Add the element

   my $NME = $$self{"file"}{$label};
   $NME->add_ele($ele,$nds);

   if ($NME->err()) {
      $$self{"err"}    = $NME->err();
      $$self{"errmsg"} = $NME->errmsg();
      return undef;
   }

   _eles($self);
   return;
}

###############################################################################
# COPY_ELE METHOD
###############################################################################

sub copy_ele {
   my($self,$ele,@args) = @_;

   if (! defined $$self{"file"}) {
      $$self{"err"}    = "nmffil08";
      $$self{"errmsg"} = "No file set.";
   }

   # Check to make sure $ele is valid (it need only exist)

   if (! $self->ele($ele)) {
      $$self{"err"}    = "nmfele01";
      $$self{"errmsg"} = "The specified element does not exist: $ele";
      return "";
   }

   # Get the structure there.

   my $file = $self->ele_file($ele);
   my $NME  = (_ele_nme($self,$ele))[0];
   my $nds  = dclone($NME->_ele_nds($ele,1));

   if (! @args  ||  ! exists $$self{"file"}{$args[0]}) {
      # The first argument is not a label, so prepend the label of the
      # original element.
      unshift(@args,$file);
   }

   add_ele($self,@args,$nds);
}

###############################################################################
# UPDATE_ELE METHOD
###############################################################################

sub update_ele {
   my($self,$ele,@args) = @_;
   $$self{"err"}    = "";
   $$self{"errmsg"} = "";

   if (! defined $$self{"file"}) {
      $$self{"err"}    = "nmffil08";
      $$self{"errmsg"} = "No file set.";
   }

   my $NME;
   ($NME,$ele) = _ele_nme($self,$ele);
   return undef  if ($self->err());

   $NME->update_ele($ele,@args);
   if ($NME->err()) {
      $$self{"err"}    = $NME->err();
      $$self{"errmsg"} = $NME->errmsg();
      return undef;
   }

   _eles($self);
   return;
}

###############################################################################
# DUMP METHOD
###############################################################################

sub dump {
   my($self,$ele,@args) = @_;
   $$self{"err"}    = "";
   $$self{"errmsg"} = "";

   if (! defined $$self{"file"}) {
      $$self{"err"}    = "nmffil08";
      $$self{"errmsg"} = "No file set.";
   }

   my $NME;
   ($NME,$ele) = _ele_nme($self,$ele);
   return undef  if ($self->err());

   my $ret = $NME->dump($ele,@args);
   if ($NME->err()) {
      $$self{"err"}    = $NME->err();
      $$self{"errmsg"} = $NME->errmsg();
      return undef;
   }
   return $ret;
}

###############################################################################
# SAVE METHOD
###############################################################################

sub save {
   my($self,$nobackup) = @_;

   if (! defined $$self{"file"}) {
      $$self{"err"}    = "nmffil08";



( run in 0.552 second using v1.01-cache-2.11-cpan-cdf2f3d4e48 )