Changeset 3055


Ignore:
Timestamp:
Jun 16, 2013, 2:21:30 AM (8 years ago)
Author:
Peter
Message:

closes #746. New function BamRead::name(1)

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/test/bam.cc

    r3031 r3055  
    167167
    168168
     169void test_name(test::Suite& suite, const BamRead& b)
     170{
     171  suite.out() << "test name\n";
     172  BamRead bam(b);
     173  std::string name = "my-new-name";
     174  bam.name(name);
     175  if (bam.name() != name) {
     176    suite.add(false);
     177    suite.err() << "error: name: '" << bam.name()
     178                << "' expected: '" << name << "'\n";
     179  }
     180  // check that other fields are not changed
     181  if (bam.cigar_str()!=b.cigar_str()) {
     182    suite.add(false);
     183    suite.err() << "error: cigar str:" << bam.cigar_str() << " != "
     184                << b.cigar_str() << "\n";
     185  }
     186  if (bam.sequence()!=b.sequence()) {
     187    suite.add(false);
     188    suite.err() << "error: sequence:" << bam.sequence() << " != "
     189                << b.sequence() << "\n";
     190  }
     191}
     192
     193
    169194void test1(test::Suite& suite)
    170195{
     
    213238  test_aux(suite, bam);
    214239  test_sequence(suite, bam);
    215 }
    216 #endif
     240  test_name(suite, bam);
     241}
     242#endif
  • trunk/yat/omic/BamRead.cc

    r3032 r3055  
    181181  const char* BamRead::name(void) const
    182182  { return bam1_qname(bam_); }
     183
     184
     185  void BamRead::name(const std::string& n)
     186  {
     187    int offset = n.size() + 1 - core().l_qname;
     188    assert(bam_);
     189    reserve(bam_->data_len + offset);
     190    // move remaining data
     191    if (offset)
     192      memmove(bam_->data + core().l_qname + offset,
     193              bam_->data + core().l_qname,
     194              bam_->data_len - core().l_qname);
     195    core().l_qname += offset;
     196    // copy new name
     197    memcpy(bam1_qname(bam_), n.c_str(), n.size()+1);
     198    bam_->data_len += offset;
     199    assert(bam_->data_len <= bam_->m_data);
     200  }
    183201
    184202
  • trunk/yat/omic/BamRead.h

    r3031 r3055  
    234234
    235235    /**
     236       \brief modify name
     237
     238       \since New in yat 0.11
     239    */
     240    void name(const std::string& n);
     241
     242    /**
    236243       \brief chromosome ID
    237244     */
Note: See TracChangeset for help on using the changeset viewer.