view release on metacpan or search on metacpan
xs/TITERATOR.xs view on Meta::CPAN
RETVAL
void
_NAMESPACE_::DESTROY()
CODE:
if(!SvREADONLY(SvRV(ST(0))))
delete THIS;
void
_NAMESPACE_::data()
PPCODE:
!!!!USEPAIR
/* iterator for Map */
_T_ & data = (*THIS)->second;
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::_T_", (void *)&data);
SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
!!!!USEWCHAR
/* iterator for String */
wchar_t & data = **THIS;
xs/TITERATOR.xs view on Meta::CPAN
!!!!USELIST
/* iterator for List */
_T_ * data = **THIS;
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::_T_", (void *)data);
SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
void
_NAMESPACE_::next()
PPCODE:
_NAMESPACE_ & i = THIS->operator++();
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::_NAMESPACE_", (void *)&i);
SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
void
_NAMESPACE_::last()
PPCODE:
_NAMESPACE_ & i = THIS->operator--();
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::_NAMESPACE_", (void *)&i);
SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
#ifdef LONGMOVEMENT
void
_NAMESPACE_::forward(n)
int n
PPCODE:
(void)THIS->operator+=(n);
/* leave ST(0) untouched and return */
//ST(0) = sv_newmortal();
//sv_setref_pv(ST(0), "Audio::_NAMESPACE_", (void *)THIS);
//SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
void
_NAMESPACE_::backward(n)
int n
PPCODE:
(void)THIS->operator-=(n);
/* leave ST(0) untouched and return */
//ST(0) = sv_newmortal();
//sv_setref_pv(ST(0), "Audio::_NAMESPACE_", (void *)THIS);
//SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
#endif
#ifdef MOREMETHODS
xs/TITERATOR.xs view on Meta::CPAN
_NAMESPACE_::greatEqual(i)
_NAMESPACE_ * i
CODE:
RETVAL = THIS->operator>=(*i);
OUTPUT:
RETVAL
void
_NAMESPACE_::copy(i)
_NAMESPACE_ * i
PPCODE:
(void)THIS->operator=(*i);
XSRETURN(1);
#endif /* MOREMETHODS */
xs/TLIST.xs view on Meta::CPAN
RETVAL
void
_NAMESPACE_::erase(it)
_NAMESPACE_::Iterator * it
CODE:
THIS->erase(*it);
void
_NAMESPACE_::front()
PPCODE:
_T_ * item = THIS->front();
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::_T_", (void *)item);
SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
void
_NAMESPACE_::back()
PPCODE:
_T_ * item = THIS->back();
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::_T_", (void *)item);
SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
################################################################
#
# const T & front() const
# const T & back() const
xs/TLIST.xs view on Meta::CPAN
void
_NAMESPACE_::setAutoDelete(autoDelete)
bool autoDelete
CODE:
THIS->setAutoDelete(autoDelete);
void
_NAMESPACE_::getItem(i)
unsigned int i
PPCODE:
_T_ * item = THIS->operator[](i);
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::_T_", (void *)item);
SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
################################################################
#
# const T & operator[](uint i) const
# not exported
#
################################################################
void
_NAMESPACE_::copy(l)
_NAMESPACE_ * l
PPCODE:
(void)THIS->operator=(*l);
XSRETURN(1);
bool
_NAMESPACE_::equals(l)
_NAMESPACE_ * l
CODE:
RETVAL = THIS->operator==(*l);
OUTPUT:
RETVAL
xs/TLIST.xs view on Meta::CPAN
# SPECIAL FUNCTIONS for TIE MAGIC
#
################################################################
static void
_NAMESPACE_::TIEARRAY(...)
PROTOTYPE: ;$
PREINIT:
_NAMESPACE_ * l;
_NAMESPACE_ * list;
PPCODE:
/*!
* tie @a, "_NAMESPACE_"
* tie @a, "_NAMESPACE_", $obj_to_tie
*/
switch(items) {
case 2:
if(sv_isobject(ST(1)) &&
sv_derived_from(ST(1), "Audio::_NAMESPACE_")) {
if(SvREADONLY(SvRV(ST(1)))){
/* READONLY on, create a new SV */
xs/TLIST.xs view on Meta::CPAN
/* items == 1 */
list = new _NAMESPACE_();
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::_NAMESPACE_", (void *)list);
}
XSRETURN(1);
void
_NAMESPACE_::FETCH(index)
unsigned int index
PPCODE:
if(0 <= index && index < THIS->size()) {
ST(0) = sv_newmortal();
_T_ * item = THIS->operator[](index);
sv_setref_pv(ST(0), "Audio::_T_", (void *)item);
SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
} else
XSRETURN_UNDEF;
void
xs/TLIST.xs view on Meta::CPAN
THIS->erase(it);
}
void
_NAMESPACE_::CLEAR()
CODE:
THIS->clear();
void
_NAMESPACE_::PUSH(...)
PPCODE:
if(items > 1) {
/* ensure all items are of type _T_/_NAMESPACE_ before pushing */
for(int i = 1; i < items; i++) {
if(!(sv_isobject(ST(i)) && sv_derived_from(ST(i), "Audio::_T_") ||
sv_derived_from(ST(i), "Audio::_NAMESPACE_")))
croak("ST(i) is not of type Audio::_T_/_NAMESPACE_");
}
for(int i = 1; i < items; i++) {
if(sv_derived_from(ST(i), "Audio::_T_"))
(void)THIS->append(INT2PTR(_T_ *, SvIV(SvRV(ST(i)))));
xs/TLIST.xs view on Meta::CPAN
#
# POPed & SHIFTed item will ALWAYS be marks as READONLY
# which means it is only a reference
# NEVER takes charge of performing delete action
#
################################################################
void
_NAMESPACE_::POP()
PREINIT:
_NAMESPACE_::Iterator it;
PPCODE:
if(!THIS->isEmpty()) {
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::_T_", (void *)THIS->back());
SvREADONLY_on(SvRV(ST(0)));
it = THIS->end();
THIS->erase(--it);
XSRETURN(1);
} else
XSRETURN_UNDEF;
void
_NAMESPACE_::SHIFT()
PPCODE:
if(!THIS->isEmpty()) {
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::_T_", (void *)THIS->front());
SvREADONLY_on(SvRV(ST(0)));
THIS->erase(THIS->begin());
XSRETURN(1);
} else
XSRETURN_UNDEF;
void
_NAMESPACE_::UNSHIFT(...)
PPCODE:
if(items > 1) {
/* ensure all items are of type _T_/_NAMESPACE_ firstly */
for(int i = 1; i < items; i++) {
if(!(sv_isobject(ST(i)) && sv_derived_from(ST(i), "Audio::_T_") ||
sv_derived_from(ST(i), "Audio::_NAMESPACE_")))
croak("ST(i) is not of type _T_/_NAMESPACE_");
}
for(int i = items - 1; i > 0; i--) {
if(sv_derived_from(ST(i), "Audio::_T_"))
(void)THIS->append(INT2PTR(_T_ *, SvIV(SvRV(ST(i)))));
xs/TLIST.xs view on Meta::CPAN
void
_NAMESPACE_::SPLICE(...)
PROTOTYPE: $;$@
PREINIT:
unsigned int offset;
unsigned int length;
_NAMESPACE_::Iterator it, it_next;
_NAMESPACE_ * obj;
_T_ * item;
PPCODE:
switch(items) {
case 2:
/* splice(offset, length=$#this-offset+1) */
if(SvIOK(ST(1)) || SvUOK(ST(1)))
offset = SvUV(ST(1));
else
croak("ST(1) is not of type uint");
length = THIS->size() - offset;
break;
case 3:
_KEY_ * key
CODE:
if(THIS->contains(*key))
THIS->erase(THIS->find(*key));
void
_NAMESPACE_::getItem(key)
_KEY_ * key
INIT:
_T_ & item = THIS->operator[](*key);
PPCODE:
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::_T_", (void *)&item);
SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
################################################################
#
# const T & operator[](const Key &key) const
# not exported
#
################################################################
#
# Map<Key, T> & operator=(const Map<Key, T> &m)
# not exported
#
################################################################
void
_NAMESPACE_::copy(m)
_NAMESPACE_ * m
PPCODE:
(void)THIS->operator=(*m);
/* return ST(0) */
XSRETURN(1);
################################################################
#
# PROTECTED MEMBER FUNCTIONS
#
# void detach()
# not exported
#
# SPECIAL FUNCTIONS FOR TIE MAGIC
#
################################################################
static void
_NAMESPACE_::TIEHASH(...)
PROTOTYPE: ;$
PREINIT:
_NAMESPACE_ * map;
PPCODE:
/*!
* tie %h, "_NAMESPACE_"
* tie %h, "_NAMESPACE_", $obj_to_tie
*/
switch(items) {
case 2:
if(sv_isobject(ST(1)) &&
sv_derived_from(ST(1), "Audio::_NAMESPACE_")) {
if(SvREADONLY(SvRV(ST(1)))){
ST(0) = sv_newmortal();
/* items == 1 */
map = new _NAMESPACE_();
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::_NAMESPACE_", (void *)map);
}
XSRETURN(1);
void
_NAMESPACE_::FETCH(key)
_KEY_ * key
PPCODE:
/*!
* this will NOT copy the value
* just return the reference
*/
if(THIS->contains(*key)) {
_T_ & value = THIS->operator[](*key);
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::_T_", (void *)&value);
SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
_KEY_ * key
CODE:
RETVAL = THIS->contains(*key);
OUTPUT:
RETVAL
void
_NAMESPACE_::FIRSTKEY()
PREINIT:
_NAMESPACE_::Iterator it;
PPCODE:
if(THIS->isEmpty())
XSRETURN_UNDEF;
it = THIS->begin();
/* (**it) is a std::pair<const _KEY_, _T_> */
const _KEY_ & key = it->first;
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::_KEY_", (void *)&key);
SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
xs/apeitem.xs view on Meta::CPAN
################################################################
#
# implement
# Item & operator=(const Item &item)
#
################################################################
void
TagLib::APE::Item::copy(item)
TagLib::APE::Item * item
PPCODE:
(void)THIS->operator=(*item);
XSRETURN(1);
TagLib::String *
TagLib::APE::Item::key()
CODE:
RETVAL = new TagLib::String(THIS->key());
OUTPUT:
RETVAL
xs/apeitemlistmap.xs view on Meta::CPAN
TagLib::String * key
CODE:
if(THIS->contains(*key))
THIS->erase(THIS->find(*key));
void
TagLib::APE::ItemListMap::getItem(key)
TagLib::String * key
INIT:
TagLib::APE::Item & item = THIS->operator[](*key);
PPCODE:
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::TagLib::APE::Item", (void *)&item);
SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
################################################################
#
# const T & operator[](const Key &key) const
# not exported
#
xs/apeitemlistmap.xs view on Meta::CPAN
################################################################
#
# Map<Key, T> & operator=(const Map<Key, T> &m)
# not exported
#
################################################################
void
TagLib::APE::ItemListMap::copy(m)
TagLib::APE::ItemListMap * m
PPCODE:
(void)THIS->operator=(*m);
/* return ST(0) */
XSRETURN(1);
################################################################
#
# PROTECTED MEMBER FUNCTIONS
#
# void detach()
# not exported
xs/apeitemlistmap.xs view on Meta::CPAN
#
# SPECIAL FUNCTIONS FOR TIE MAGIC
#
################################################################
static void
TagLib::APE::ItemListMap::TIEHASH(...)
PROTOTYPE: ;$
PREINIT:
TagLib::APE::ItemListMap * map;
PPCODE:
/*!
* tie %h, "TagLib::APE::ItemListMap"
* tie %h, "TagLib::APE::ItemListMap", $obj_to_tie
*/
switch(items) {
case 2:
if(sv_isobject(ST(1)) &&
sv_derived_from(ST(1), "Audio::TagLib::APE::ItemListMap")) {
if(SvREADONLY(SvRV(ST(1)))){
ST(0) = sv_newmortal();
xs/apeitemlistmap.xs view on Meta::CPAN
/* items == 1 */
map = new TagLib::APE::ItemListMap();
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::TagLib::APE::ItemListMap", (void *)map);
}
XSRETURN(1);
void
TagLib::APE::ItemListMap::FETCH(key)
TagLib::String * key
PPCODE:
/*!
* this will NOT copy the value
* just return the reference
*/
if(THIS->contains(*key)) {
TagLib::APE::Item & value = THIS->operator[](*key);
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::TagLib::APE::Item", (void *)&value);
SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
xs/apeitemlistmap.xs view on Meta::CPAN
TagLib::String * key
CODE:
RETVAL = THIS->contains(*key);
OUTPUT:
RETVAL
void
TagLib::APE::ItemListMap::FIRSTKEY()
PREINIT:
TagLib::APE::ItemListMap::Iterator it;
PPCODE:
if(THIS->isEmpty())
XSRETURN_UNDEF;
it = THIS->begin();
/* (**it) is a std::pair<const TagLib::String, TagLib::APE::Item> */
const TagLib::String & key = it->first;
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::TagLib::String", (void *)&key);
SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
xs/apeitemlistmapiterator.xs view on Meta::CPAN
RETVAL
void
TagLib::APE::ItemListMap::Iterator::DESTROY()
CODE:
if(!SvREADONLY(SvRV(ST(0))))
delete THIS;
void
TagLib::APE::ItemListMap::Iterator::data()
PPCODE:
//USEPAIR
/* iterator for Map */
TagLib::APE::Item & data = (*THIS)->second;
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::TagLib::APE::Item", (void *)&data);
SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
void
TagLib::APE::ItemListMap::Iterator::next()
PPCODE:
TagLib::APE::ItemListMap::Iterator & i = THIS->operator++();
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::TagLib::APE::ItemListMap::Iterator", (void *)&i);
SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
void
TagLib::APE::ItemListMap::Iterator::last()
PPCODE:
TagLib::APE::ItemListMap::Iterator & i = THIS->operator--();
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::TagLib::APE::ItemListMap::Iterator", (void *)&i);
SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
#ifdef LONGMOVEMENT
void
TagLib::APE::ItemListMap::Iterator::forward(n)
int n
PPCODE:
(void)THIS->operator+=(n);
/* leave ST(0) untouched and return */
//ST(0) = sv_newmortal();
//sv_setref_pv(ST(0), "Audio::TagLib::APE::ItemListMap::Iterator", (void *)THIS);
//SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
void
TagLib::APE::ItemListMap::Iterator::backward(n)
int n
PPCODE:
(void)THIS->operator-=(n);
/* leave ST(0) untouched and return */
//ST(0) = sv_newmortal();
//sv_setref_pv(ST(0), "Audio::TagLib::APE::ItemListMap::Iterator", (void *)THIS);
//SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
#endif
#ifdef MOREMETHODS
xs/apeitemlistmapiterator.xs view on Meta::CPAN
TagLib::APE::ItemListMap::Iterator::greatEqual(i)
TagLib::APE::ItemListMap::Iterator * i
CODE:
RETVAL = THIS->operator>=(*i);
OUTPUT:
RETVAL
void
TagLib::APE::ItemListMap::Iterator::copy(i)
TagLib::APE::ItemListMap::Iterator * i
PPCODE:
(void)THIS->operator=(*i);
XSRETURN(1);
#endif /* MOREMETHODS */
xs/apetag.xs view on Meta::CPAN
void
TagLib::APE::Tag::setTrack(i)
unsigned int i
CODE:
THIS->setTrack(i);
void
TagLib::APE::Tag::footer()
PREINIT:
TagLib::APE::Footer * f;
PPCODE:
f = THIS->footer();
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::TagLib::APE::Footer", (void *)f);
SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
void
TagLib::APE::Tag::itemListMap()
PREINIT:
SV * refobj, * refhash;
HV * hash;
INIT:
const TagLib::APE::ItemListMap & map = THIS->itemListMap();
PPCODE:
/*
refobj = sv_newmortal();
sv_setref_pv(refobj, "Audio::TagLib::APE::ItemListMap", (void *)&map);
SvREADONLY_on(SvRV(refobj));
hash = newHV();
hv_magic(hash, (GV *)refobj, PERL_MAGIC_tied);
refhash = newRV_noinc((SV *)hash);
ST(0) = sv_2mortal(refhash);
XSRETURN(1);
*/
xs/bytevectoriterator.xs view on Meta::CPAN
RETVAL
void
TagLib::ByteVector::Iterator::DESTROY()
CODE:
if(!SvREADONLY(SvRV(ST(0))))
delete THIS;
void
TagLib::ByteVector::Iterator::data()
PPCODE:
//USECHAR
/* iterator for ByteVector */
char data = **THIS;
ST(0) = sv_2mortal(newSVpvn(&data, 1));
XSRETURN(1);
void
TagLib::ByteVector::Iterator::next()
PPCODE:
TagLib::ByteVector::Iterator & i = THIS->operator++();
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::TagLib::ByteVector::Iterator", (void *)&i);
SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
void
TagLib::ByteVector::Iterator::last()
PPCODE:
TagLib::ByteVector::Iterator & i = THIS->operator--();
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::TagLib::ByteVector::Iterator", (void *)&i);
SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
#ifdef LONGMOVEMENT
void
TagLib::ByteVector::Iterator::forward(n)
int n
PPCODE:
(void)THIS->operator+=(n);
/* leave ST(0) untouched and return */
//ST(0) = sv_newmortal();
//sv_setref_pv(ST(0), "Audio::TagLib::ByteVector::Iterator", (void *)THIS);
//SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
void
TagLib::ByteVector::Iterator::backward(n)
int n
PPCODE:
(void)THIS->operator-=(n);
/* leave ST(0) untouched and return */
//ST(0) = sv_newmortal();
//sv_setref_pv(ST(0), "Audio::TagLib::ByteVector::Iterator", (void *)THIS);
//SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
#endif
#ifdef MOREMETHODS
xs/bytevectoriterator.xs view on Meta::CPAN
TagLib::ByteVector::Iterator::greatEqual(i)
TagLib::ByteVector::Iterator * i
CODE:
RETVAL = THIS->operator>=(*i);
OUTPUT:
RETVAL
void
TagLib::ByteVector::Iterator::copy(i)
TagLib::ByteVector::Iterator * i
PPCODE:
(void)THIS->operator=(*i);
XSRETURN(1);
#endif /* MOREMETHODS */
#undef LONGMOVEMENT
xs/fileref.xs view on Meta::CPAN
void
TagLib::FileRef::DESTROY()
CODE:
if(!SvREADONLY(SvRV(ST(0))))
delete THIS;
SV *
TagLib::FileRef::tag()
PREINIT:
TagLib::Tag * t;
PPCODE:
/*!
* the returned Tag object is owned by THIS object
* thus set READONLY on to skip the destructor
* refer to TagLib::Tag::DESTROY for detail
*/
t = THIS->tag();
if(t != NULL) {
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::TagLib::Tag", (void*)t);
SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
} else
XSRETURN_UNDEF;
SV *
TagLib::FileRef::audioProperties()
PREINIT:
TagLib::AudioProperties * p;
PPCODE:
/*!
* the returned AudioProperties object is owned by THIS object
* thus set READONLY on to skip the destructor
* refer to TagLib::AudioProperties::DESTROY for detail
*/
p = THIS->audioProperties();
if(p != NULL) {
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::TagLib::AudioProperties", (void*)p);
SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
} else
XSRETURN_UNDEF;
SV *
TagLib::FileRef::file()
PREINIT:
TagLib::File * f;
PPCODE:
/*!
* the returned File object is owned by THIS object
* thus set READONLY on to skip the destructor
* refer to TagLib::File::DESTROY for detail
*/
f = THIS->file();
if(f != NULL) {
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::TagLib::File", (void*)f);
SvREADONLY_on(SvRV(ST(0)));
xs/fileref.xs view on Meta::CPAN
bool
TagLib::FileRef::isNull()
CODE:
RETVAL = THIS->isNull();
OUTPUT:
RETVAL
void
TagLib::FileRef::copy(ref)
TagLib::FileRef * ref
PPCODE:
(void)THIS->operator=(*ref);
XSRETURN(1);
bool
TagLib::FileRef::_equal(ref, swap=NULL)
TagLib::FileRef * ref
char * swap
CODE:
RETVAL = THIS->operator==(*ref);
OUTPUT:
xs/fileref.xs view on Meta::CPAN
#
################################################################
void
TagLib::FileRef::FileTypeResolver::createFile(fileName, readAudioProperties=true, style=TagLib::AudioProperties::Average)
const char * fileName
bool readAudioProperties
TagLib::AudioProperties::ReadStyle style
PREINIT:
TagLib::File * file;
PPCODE:
file = THIS->createFile(fileName, readAudioProperties, style);
if(file != NULL) {
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::TagLib::File", (void *)file);
SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
} else
XSRETURN_UNDEF;
xs/flacfile.xs view on Meta::CPAN
void
TagLib::FLAC::File::DESTROY()
CODE:
if(!SvREADONLY(SvRV(ST(0))))
delete THIS;
void
TagLib::FLAC::File::tag()
INIT:
TagLib::Tag * tag = THIS->tag();
PPCODE:
if(tag != NULL) {
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::TagLib::Tag", (void *)tag);
SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
} else
XSRETURN_UNDEF;
void
TagLib::FLAC::File::audioProperties()
INIT:
TagLib::AudioProperties * p = THIS->audioProperties();
PPCODE:
if(p != NULL) {
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::TagLib::FLAC::Properties", (void *)p);
SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
} else
XSRETURN_UNDEF;
bool
TagLib::FLAC::File::save()
CODE:
RETVAL = THIS->save();
OUTPUT:
RETVAL
void
TagLib::FLAC::File::ID3v2Tag(create=false)
bool create
INIT:
TagLib::ID3v2::Tag * tag = THIS->ID3v2Tag(create);
PPCODE:
if(tag != NULL) {
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::TagLib::ID3v2::Tag", (void *)tag);
SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
} else
XSRETURN_UNDEF;
void
TagLib::FLAC::File::ID3v1Tag(create=false)
bool create
INIT:
TagLib::ID3v1::Tag * tag = THIS->ID3v1Tag(create);
PPCODE:
if(tag != NULL) {
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::TagLib::ID3v1::Tag", (void *)tag);
SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
} else
XSRETURN_UNDEF;
void
TagLib::FLAC::File::xiphComment(create=false)
bool create
INIT:
TagLib::Ogg::XiphComment * xc = THIS->xiphComment(create);
PPCODE:
if(xc != NULL) {
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::TagLib::Ogg::XiphComment", (void *)xc);
SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
} else
XSRETURN_UNDEF;
void
TagLib::FLAC::File::setID3v2FrameFactory(factory)
xs/id3v1genremap.xs view on Meta::CPAN
################################################################
#
# Map<Key, T> & operator=(const Map<Key, T> &m)
# not exported
#
################################################################
void
TagLib::ID3v1::GenreMap::copy(m)
TagLib::ID3v1::GenreMap * m
PPCODE:
(void)THIS->operator=(*m);
XSRETURN(1);
################################################################
#
# PROTECTED MEMBER FUNCTIONS
#
# void detach()
# not exported
#
xs/id3v1genremap.xs view on Meta::CPAN
# SPECIAL FUNCTIONS FOR TIE MAGIC
#
################################################################
static void
TagLib::ID3v1::GenreMap::TIEHASH(...)
PROTOTYPE: ;$
PREINIT:
SV * refobj;
TagLib::ID3v1::GenreMap * map;
PPCODE:
/*!
* tie %h, "Audio::TagLib::ID3v1::GenreMap"
* tie %h, "Audio::TagLib::ID3v1::GenreMap", $obj_to_tie
*/
switch(items) {
case 2:
if(sv_isobject(ST(1)) &&
sv_derived_from(ST(1), "Audio::TagLib::ID3v1::GenreMap")) {
refobj = newRV_inc(SvRV(ST(1)));
} else
xs/id3v1genremap.xs view on Meta::CPAN
}
sv_bless(refobj, gv_stashpv("Audio::TagLib::ID3v1::GenreMap", TRUE));
ST(0) = refobj;
XSRETURN(1);
void
TagLib::ID3v1::GenreMap::FETCH(key)
TagLib::String * key
PREINIT:
int value;
PPCODE:
if(THIS->contains(*key)) {
value = THIS->operator[](*key);
ST(0) = sv_2mortal(newSViv(value));
XSRETURN(1);
} else
XSRETURN_UNDEF;
void
TagLib::ID3v1::GenreMap::STORE(key, value)
TagLib::String * key
xs/id3v1genremap.xs view on Meta::CPAN
TagLib::String * key
CODE:
RETVAL = THIS->contains(*key);
OUTPUT:
RETVAL
void
TagLib::ID3v1::GenreMap::FIRSTKEY()
PREINIT:
TagLib::ID3v1::GenreMap::Iterator it;
PPCODE:
if(THIS->isEmpty())
XSRETURN_UNDEF;
it = THIS->begin();
/* (**it) is a std::pair<const TagLib::String, int> */
const TagLib::String & key = it->first;
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::TagLib::String", (void *)&key);
SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
xs/id3v1genremapiterator.xs view on Meta::CPAN
int
TagLib::ID3v1::GenreMap::Iterator::data()
CODE:
/* iterator for Map & List */
RETVAL = (*THIS)->second;
OUTPUT:
RETVAL
void
TagLib::ID3v1::GenreMap::Iterator::next()
PPCODE:
TagLib::ID3v1::GenreMap::Iterator & i = THIS->operator++();
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::TagLib::ID3v1::GenreMap::Iterator", (void *)&i);
SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
void
TagLib::ID3v1::GenreMap::Iterator::last()
PPCODE:
TagLib::ID3v1::GenreMap::Iterator & i = THIS->operator--();
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::TagLib::ID3v1::GenreMap::Iterator", (void *)&i);
SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
#ifdef LONGMOVEMENT
void
TagLib::ID3v1::GenreMap::Iterator::forward(n)
int n
PPCODE:
TagLib::ID3v1::GenreMap::Iterator & i = THIS->operator+=(n);
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::TagLib::ID3v1::GenreMap::Iterator", (void *)&i);
SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
void
TagLib::ID3v1::GenreMap::Iterator::backward(n)
int n
PPCODE:
TagLib::ID3v1::GenreMap::Iterator & i = THIS->operator-=(n);
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::TagLib::ID3v1::GenreMap::Iterator", (void *)&i);
SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
#endif
#undef MOREMETHODS
#ifdef MOREMETHODS
xs/id3v1genremapiterator.xs view on Meta::CPAN
TagLib::ID3v1::GenreMap::Iterator::greatEqual(i)
TagLib::ID3v1::GenreMap::Iterator * i
CODE:
RETVAL = THIS->operator>=(*i);
OUTPUT:
RETVAL
void
TagLib::ID3v1::GenreMap::Iterator::_copy(it)
TagLib::ID3v1::GenreMap::Iterator * it
PPCODE:
(void)THIS->operator=(*it);
XSRETURN(1);
#endif /* MOREMETHODS */
xs/id3v2relativevolumeframe.xs view on Meta::CPAN
RETVAL = new TagLib::String(THIS->toString());
OUTPUT:
RETVAL
# List< ChannelType > channels () const
void
TagLib::ID3v2::RelativeVolumeFrame::channels()
INIT:
TagLib::List<TagLib::ID3v2::RelativeVolumeFrame::ChannelType>
l = THIS->channels();
PPCODE:
switch(GIMME_V) {
case G_SCALAR:
ST(0) = sv_2mortal(newSVuv(l.size()));
XSRETURN(1);
case G_ARRAY:
if(l.size() != 0) {
/* Make room on the stack */
EXTEND(SP, l.size());
for(int i = 0; i < l.size(); i++) {
switch(l[i]) {
xs/id3v2relativevolumeframe.xs view on Meta::CPAN
void
TagLib::ID3v2::RelativeVolumeFrame::PeakVolume::setBitsRepresentingPeak(c)
unsigned char c
CODE:
THIS->bitsRepresentingPeak = c;
void
TagLib::ID3v2::RelativeVolumeFrame::PeakVolume::peakVolume()
INIT:
TagLib::ByteVector & pv = THIS->peakVolume;
PPCODE:
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::TagLib::ByteVector", (void *)&pv);
SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
################################################################
#
# new member function
# exported for setting peakVolume
#
xs/id3v2tag.xs view on Meta::CPAN
TagLib::ID3v2::Tag::isEmpty()
CODE:
RETVAL = THIS->isEmpty();
OUTPUT:
RETVAL
void
TagLib::ID3v2::Tag::header()
PREINIT:
TagLib::ID3v2::Header * h;
PPCODE:
h = THIS->header();
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::TagLib::ID3v2::Header", (void *)h);
SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
void
TagLib::ID3v2::Tag::extendedHeader()
PREINIT:
TagLib::ID3v2::ExtendedHeader * eh;
PPCODE:
eh = THIS->extendedHeader();
if(eh != NULL) {
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::TagLib::ID3v2::ExtendedHeader",
(void *)eh);
SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
} else
XSRETURN_UNDEF;
void
TagLib::ID3v2::Tag::footer()
PREINIT:
TagLib::ID3v2::Footer * f;
PPCODE:
f = THIS->footer();
if(f != NULL) {
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::TagLib::ID3v2::Footer", (void *)f);
SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
} else
XSRETURN_UNDEF;
void
TagLib::ID3v2::Tag::frameListMap()
PPCODE:
const TagLib::ID3v2::FrameListMap & map = THIS->frameListMap();
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::TagLib::ID3v2::FrameListMap", (void *)&map);
SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
void
TagLib::ID3v2::Tag::frameList(...)
PROTOTYPE: ;$
PPCODE:
switch(items) {
case 2:
/* const FrameList & frameList(const ByteVector &frameID)
* const
*/
if(sv_isobject(ST(1)) && sv_derived_from(ST(1),
"Audio::TagLib::ByteVector")) {
const TagLib::ID3v2::FrameList & list = THIS->frameList(
*INT2PTR(TagLib::ByteVector *, SvIV(SvRV(ST(1)))));
ST(0) = sv_newmortal();
xs/id3v2tag.xs view on Meta::CPAN
const TagLib::ID3v2::FrameList & list2 = THIS->frameList();
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::TagLib::ID3v2::FrameList", (void *)&list2);
}
SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
void
TagLib::ID3v2::Tag::addFrame(frame)
TagLib::ID3v2::Frame * frame
PPCODE:
THIS->addFrame(frame);
SvREADONLY_on(SvRV(ST(1)));
XSRETURN_UNDEF;
void
TagLib::ID3v2::Tag::removeFrame(frame, del=true)
TagLib::ID3v2::Frame * frame
bool del
CODE:
THIS->removeFrame(frame, del);
xs/id3v2tagframelist.xs view on Meta::CPAN
RETVAL
void
TagLib::ID3v2::FrameList::erase(it)
TagLib::ID3v2::FrameList::Iterator * it
CODE:
THIS->erase(*it);
void
TagLib::ID3v2::FrameList::front()
PPCODE:
TagLib::ID3v2::Frame * item = THIS->front();
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::TagLib::ID3v2::Frame", (void *)item);
SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
void
TagLib::ID3v2::FrameList::back()
PPCODE:
TagLib::ID3v2::Frame * item = THIS->back();
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::TagLib::ID3v2::Frame", (void *)item);
SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
################################################################
#
# const T & front() const
# const T & back() const
xs/id3v2tagframelist.xs view on Meta::CPAN
void
TagLib::ID3v2::FrameList::setAutoDelete(autoDelete)
bool autoDelete
CODE:
THIS->setAutoDelete(autoDelete);
void
TagLib::ID3v2::FrameList::getItem(i)
unsigned int i
PPCODE:
TagLib::ID3v2::Frame * item = THIS->operator[](i);
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::TagLib::ID3v2::Frame", (void *)item);
SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
################################################################
#
# const T & operator[](uint i) const
# not exported
#
################################################################
void
TagLib::ID3v2::FrameList::copy(l)
TagLib::ID3v2::FrameList * l
PPCODE:
(void)THIS->operator=(*l);
XSRETURN(1);
bool
TagLib::ID3v2::FrameList::equals(l)
TagLib::ID3v2::FrameList * l
CODE:
RETVAL = THIS->operator==(*l);
OUTPUT:
RETVAL
xs/id3v2tagframelist.xs view on Meta::CPAN
# SPECIAL FUNCTIONS for TIE MAGIC
#
################################################################
static void
TagLib::ID3v2::FrameList::TIEARRAY(...)
PROTOTYPE: ;$
PREINIT:
TagLib::ID3v2::FrameList * l;
TagLib::ID3v2::FrameList * list;
PPCODE:
/*!
* tie @a, "TagLib::ID3v2::FrameList"
* tie @a, "TagLib::ID3v2::FrameList", $obj_to_tie
*/
switch(items) {
case 2:
if(sv_isobject(ST(1)) &&
sv_derived_from(ST(1), "Audio::TagLib::ID3v2::FrameList")) {
if(SvREADONLY(SvRV(ST(1)))){
/* READONLY on, create a new SV */
xs/id3v2tagframelist.xs view on Meta::CPAN
/* items == 1 */
list = new TagLib::ID3v2::FrameList();
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::TagLib::ID3v2::FrameList", (void *)list);
}
XSRETURN(1);
void
TagLib::ID3v2::FrameList::FETCH(index)
unsigned int index
PPCODE:
if(0 <= index && index < THIS->size()) {
ST(0) = sv_newmortal();
TagLib::ID3v2::Frame * item = THIS->operator[](index);
sv_setref_pv(ST(0), "Audio::TagLib::ID3v2::Frame", (void *)item);
SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
} else
XSRETURN_UNDEF;
void
xs/id3v2tagframelist.xs view on Meta::CPAN
THIS->erase(it);
}
void
TagLib::ID3v2::FrameList::CLEAR()
CODE:
THIS->clear();
void
TagLib::ID3v2::FrameList::PUSH(...)
PPCODE:
if(items > 1) {
/* ensure all items are of type TagLib::ID3v2::Frame/TagLib::ID3v2::FrameList before pushing */
for(int i = 1; i < items; i++) {
// GCL fixing gcc warning
// if(!(sv_isobject(ST(i)) && sv_derived_from(ST(i), "Audio::TagLib::ID3v2::Frame") ||
// sv_derived_from(ST(i), "Audio::TagLib::ID3v2::FrameList")))
if(!((sv_isobject(ST(i)) && sv_derived_from(ST(i), "Audio::TagLib::ID3v2::Frame")) ||
sv_derived_from(ST(i), "Audio::TagLib::ID3v2::FrameList")))
croak("ST(i) is not of type Audio::TagLib::ID3v2::Frame/TagLib::ID3v2::FrameList");
}
xs/id3v2tagframelist.xs view on Meta::CPAN
#
# POPed & SHIFTed item will ALWAYS be marks as READONLY
# which means it is only a reference
# NEVER takes charge of performing delete action
#
################################################################
void
TagLib::ID3v2::FrameList::POP()
PREINIT:
TagLib::ID3v2::FrameList::Iterator it;
PPCODE:
if(!THIS->isEmpty()) {
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::TagLib::ID3v2::Frame", (void *)THIS->back());
SvREADONLY_on(SvRV(ST(0)));
it = THIS->end();
THIS->erase(--it);
XSRETURN(1);
} else
XSRETURN_UNDEF;
void
TagLib::ID3v2::FrameList::SHIFT()
PPCODE:
if(!THIS->isEmpty()) {
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::TagLib::ID3v2::Frame", (void *)THIS->front());
SvREADONLY_on(SvRV(ST(0)));
THIS->erase(THIS->begin());
XSRETURN(1);
} else
XSRETURN_UNDEF;
void
TagLib::ID3v2::FrameList::UNSHIFT(...)
PPCODE:
if(items > 1) {
/* ensure all items are of type TagLib::ID3v2::Frame/TagLib::ID3v2::FrameList firstly */
for(int i = 1; i < items; i++) {
// GCL fixing gcc warning
// if(!(sv_isobject(ST(i)) && sv_derived_from(ST(i), "Audio::TagLib::ID3v2::Frame")) ||
// sv_derived_from(ST(i), "Audio::TagLib::ID3v2::FrameList"))
if((!((sv_isobject(ST(i)) &&
sv_derived_from(ST(i), "Audio::TagLib::ID3v2::Frame"))) ||
sv_derived_from(ST(i), "Audio::TagLib::ID3v2::FrameList")))
croak("ST(i) is not of type TagLib::ID3v2::Frame/TagLib::ID3v2::FrameList");
xs/id3v2tagframelist.xs view on Meta::CPAN
void
TagLib::ID3v2::FrameList::SPLICE(...)
PROTOTYPE: $;$@
PREINIT:
unsigned int offset;
unsigned int length;
TagLib::ID3v2::FrameList::Iterator it, it_next;
TagLib::ID3v2::FrameList * obj;
TagLib::ID3v2::Frame * item;
PPCODE:
switch(items) {
case 2:
/* splice(offset, length=$#this-offset+1) */
if(SvIOK(ST(1)) || SvUOK(ST(1)))
offset = SvUV(ST(1));
else
croak("ST(1) is not of type uint");
length = THIS->size() - offset;
break;
case 3:
xs/id3v2tagframelistiterator.xs view on Meta::CPAN
RETVAL
void
TagLib::ID3v2::FrameList::Iterator::DESTROY()
CODE:
if(!SvREADONLY(SvRV(ST(0))))
delete THIS;
void
TagLib::ID3v2::FrameList::Iterator::data()
PPCODE:
//USELIST
/* iterator for List */
TagLib::ID3v2::Frame * data = **THIS;
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::TagLib::ID3v2::Frame", (void *)data);
SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
void
TagLib::ID3v2::FrameList::Iterator::next()
PPCODE:
TagLib::ID3v2::FrameList::Iterator & i = THIS->operator++();
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::TagLib::ID3v2::FrameList::Iterator", (void *)&i);
SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
void
TagLib::ID3v2::FrameList::Iterator::last()
PPCODE:
TagLib::ID3v2::FrameList::Iterator & i = THIS->operator--();
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::TagLib::ID3v2::FrameList::Iterator", (void *)&i);
SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
#ifdef LONGMOVEMENT
void
TagLib::ID3v2::FrameList::Iterator::forward(n)
int n
PPCODE:
(void)THIS->operator+=(n);
/* leave ST(0) untouched and return */
//ST(0) = sv_newmortal();
//sv_setref_pv(ST(0), "Audio::TagLib::ID3v2::FrameList::Iterator", (void *)THIS);
//SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
void
TagLib::ID3v2::FrameList::Iterator::backward(n)
int n
PPCODE:
(void)THIS->operator-=(n);
/* leave ST(0) untouched and return */
//ST(0) = sv_newmortal();
//sv_setref_pv(ST(0), "Audio::TagLib::ID3v2::FrameList::Iterator", (void *)THIS);
//SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
#endif
#ifdef MOREMETHODS
xs/id3v2tagframelistiterator.xs view on Meta::CPAN
TagLib::ID3v2::FrameList::Iterator::greatEqual(i)
TagLib::ID3v2::FrameList::Iterator * i
CODE:
RETVAL = THIS->operator>=(*i);
OUTPUT:
RETVAL
void
TagLib::ID3v2::FrameList::Iterator::copy(i)
TagLib::ID3v2::FrameList::Iterator * i
PPCODE:
(void)THIS->operator=(*i);
XSRETURN(1);
#endif /* MOREMETHODS */
xs/id3v2tagframelistmap.xs view on Meta::CPAN
TagLib::ByteVector * key
CODE:
if(THIS->contains(*key))
THIS->erase(THIS->find(*key));
void
TagLib::ID3v2::FrameListMap::getItem(key)
TagLib::ByteVector * key
INIT:
TagLib::ID3v2::FrameList & item = THIS->operator[](*key);
PPCODE:
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::TagLib::ID3v2::FrameList", (void *)&item);
SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
################################################################
#
# const T & operator[](const Key &key) const
# not exported
#
xs/id3v2tagframelistmap.xs view on Meta::CPAN
################################################################
#
# Map<Key, T> & operator=(const Map<Key, T> &m)
# not exported
#
################################################################
void
TagLib::ID3v2::FrameListMap::copy(m)
TagLib::ID3v2::FrameListMap * m
PPCODE:
(void)THIS->operator=(*m);
/* return ST(0) */
XSRETURN(1);
################################################################
#
# PROTECTED MEMBER FUNCTIONS
#
# void detach()
# not exported
xs/id3v2tagframelistmap.xs view on Meta::CPAN
#
# SPECIAL FUNCTIONS FOR TIE MAGIC
#
################################################################
static void
TagLib::ID3v2::FrameListMap::TIEHASH(...)
PROTOTYPE: ;$
PREINIT:
TagLib::ID3v2::FrameListMap * map;
PPCODE:
/*!
* tie %h, "TagLib::ID3v2::FrameListMap"
* tie %h, "TagLib::ID3v2::FrameListMap", $obj_to_tie
*/
switch(items) {
case 2:
if(sv_isobject(ST(1)) &&
sv_derived_from(ST(1), "Audio::TagLib::ID3v2::FrameListMap")) {
if(SvREADONLY(SvRV(ST(1)))){
ST(0) = sv_newmortal();
xs/id3v2tagframelistmap.xs view on Meta::CPAN
/* items == 1 */
map = new TagLib::ID3v2::FrameListMap();
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::TagLib::ID3v2::FrameListMap", (void *)map);
}
XSRETURN(1);
void
TagLib::ID3v2::FrameListMap::FETCH(key)
TagLib::ByteVector * key
PPCODE:
/*!
* this will NOT copy the value
* just return the reference
*/
if(THIS->contains(*key)) {
TagLib::ID3v2::FrameList & value = THIS->operator[](*key);
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::TagLib::ID3v2::FrameList", (void *)&value);
SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
xs/id3v2tagframelistmap.xs view on Meta::CPAN
TagLib::ByteVector * key
CODE:
RETVAL = THIS->contains(*key);
OUTPUT:
RETVAL
void
TagLib::ID3v2::FrameListMap::FIRSTKEY()
PREINIT:
TagLib::ID3v2::FrameListMap::Iterator it;
PPCODE:
if(THIS->isEmpty())
XSRETURN_UNDEF;
it = THIS->begin();
/* (**it) is a std::pair<const TagLib::ByteVector, TagLib::ID3v2::FrameList> */
const TagLib::ByteVector & key = it->first;
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::TagLib::ByteVector", (void *)&key);
SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
xs/id3v2tagframelistmapiterator.xs view on Meta::CPAN
RETVAL
void
TagLib::ID3v2::FrameListMap::Iterator::DESTROY()
CODE:
if(!SvREADONLY(SvRV(ST(0))))
delete THIS;
void
TagLib::ID3v2::FrameListMap::Iterator::data()
PPCODE:
//USEPAIR
/* iterator for Map */
TagLib::ID3v2::FrameList & data = (*THIS)->second;
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::TagLib::ID3v2::FrameList", (void *)&data);
SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
void
TagLib::ID3v2::FrameListMap::Iterator::next()
PPCODE:
TagLib::ID3v2::FrameListMap::Iterator & i = THIS->operator++();
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::TagLib::ID3v2::FrameListMap::Iterator", (void *)&i);
SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
void
TagLib::ID3v2::FrameListMap::Iterator::last()
PPCODE:
TagLib::ID3v2::FrameListMap::Iterator & i = THIS->operator--();
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::TagLib::ID3v2::FrameListMap::Iterator", (void *)&i);
SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
#ifdef LONGMOVEMENT
void
TagLib::ID3v2::FrameListMap::Iterator::forward(n)
int n
PPCODE:
(void)THIS->operator+=(n);
/* leave ST(0) untouched and return */
//ST(0) = sv_newmortal();
//sv_setref_pv(ST(0), "Audio::TagLib::ID3v2::FrameListMap::Iterator", (void *)THIS);
//SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
void
TagLib::ID3v2::FrameListMap::Iterator::backward(n)
int n
PPCODE:
(void)THIS->operator-=(n);
/* leave ST(0) untouched and return */
//ST(0) = sv_newmortal();
//sv_setref_pv(ST(0), "Audio::TagLib::ID3v2::FrameListMap::Iterator", (void *)THIS);
//SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
#endif
#ifdef MOREMETHODS
xs/id3v2tagframelistmapiterator.xs view on Meta::CPAN
TagLib::ID3v2::FrameListMap::Iterator::greatEqual(i)
TagLib::ID3v2::FrameListMap::Iterator * i
CODE:
RETVAL = THIS->operator>=(*i);
OUTPUT:
RETVAL
void
TagLib::ID3v2::FrameListMap::Iterator::copy(i)
TagLib::ID3v2::FrameListMap::Iterator * i
PPCODE:
(void)THIS->operator=(*i);
XSRETURN(1);
#endif /* MOREMETHODS */
xs/mpcfile.xs view on Meta::CPAN
void
TagLib::MPC::File::DESTROY()
CODE:
if(!SvREADONLY(SvRV(ST(0))))
delete THIS;
void
TagLib::MPC::File::tag()
INIT:
TagLib::Tag * tag = THIS->tag();
PPCODE:
if(tag != NULL) {
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::TagLib::Tag", (void *)tag);
SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
} else
XSRETURN_UNDEF;
void
TagLib::MPC::File::audioProperties()
INIT:
TagLib::MPC::Properties * p = THIS->audioProperties();
PPCODE:
if(p != NULL) {
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::TagLib::MPC::Properties", (void *)p);
SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
} else
XSRETURN_UNDEF;
bool
TagLib::MPC::File::save()
CODE:
RETVAL = THIS->save();
OUTPUT:
RETVAL
void
TagLib::MPC::File::ID3v1Tag(create=false)
bool create
INIT:
TagLib::ID3v1::Tag * tag = THIS->ID3v1Tag(create);
PPCODE:
if(tag != NULL) {
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::TagLib::ID3v1::Tag", (void *)tag);
SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
} else
XSRETURN_UNDEF;
void
TagLib::MPC::File::APETag(create=false)
bool create
INIT:
TagLib::APE::Tag * tag = THIS->APETag(create);
PPCODE:
if(tag != NULL) {
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::TagLib::APE::Tag", (void *)tag);
SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
} else
XSRETURN_UNDEF;
void
TagLib::MPC::File::remove(tags=TagLib::MPC::File::AllTags)
xs/mpegfile.xs view on Meta::CPAN
void
TagLib::MPEG::File::DESTROY()
CODE:
if(!SvREADONLY(SvRV(ST(0))))
delete THIS;
void
TagLib::MPEG::File::tag()
INIT:
TagLib::Tag * tag = THIS->tag();
PPCODE:
if(tag != NULL) {
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::TagLib::Tag", (void *)tag);
SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
} else
XSRETURN_UNDEF;
void
TagLib::MPEG::File::audioProperties()
INIT:
TagLib::MPEG::Properties * p = THIS->audioProperties();
PPCODE:
if(p != NULL) {
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::TagLib::MPEG::Properties", (void *)p);
SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
} else
XSRETURN_UNDEF;
bool
TagLib::MPEG::File::save(...)
xs/mpegfile.xs view on Meta::CPAN
RETVAL = THIS->save();
}
OUTPUT:
RETVAL
void
TagLib::MPEG::File::ID3v2Tag(create=false)
bool create
INIT:
TagLib::ID3v2::Tag * tag = THIS->ID3v2Tag(create);
PPCODE:
if(tag != NULL) {
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::TagLib::ID3v2::Tag", (void *)tag);
SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
} else
XSRETURN_UNDEF;
void
TagLib::MPEG::File::ID3v1Tag(create=false)
bool create
INIT:
TagLib::ID3v1::Tag * tag = THIS->ID3v1Tag(create);
PPCODE:
if(tag != NULL) {
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::TagLib::ID3v1::Tag", (void *)tag);
SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
} else
XSRETURN_UNDEF;
void
TagLib::MPEG::File::APETag(create=false)
bool create
INIT:
TagLib::APE::Tag * tag = THIS->APETag(create);
PPCODE:
if(tag != NULL) {
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::TagLib::APE::Tag", (void *)tag);
SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
} else
XSRETURN_UNDEF;
bool
TagLib::MPEG::File::strip(...)
xs/mpegheader.xs view on Meta::CPAN
int
TagLib::MPEG::Header::frameLength()
CODE:
RETVAL = THIS->frameLength();
OUTPUT:
RETVAL
void
TagLib::MPEG::Header::copy(h)
TagLib::MPEG::Header * h
PPCODE:
(void)THIS->operator=(*h);
XSRETURN(1);
xs/oggfieldlistmap.xs view on Meta::CPAN
TagLib::String * key
CODE:
if(THIS->contains(*key))
THIS->erase(THIS->find(*key));
void
TagLib::Ogg::FieldListMap::getItem(key)
TagLib::String * key
INIT:
TagLib::StringList & item = THIS->operator[](*key);
PPCODE:
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::TagLib::StringList", (void *)&item);
SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
################################################################
#
# const T & operator[](const Key &key) const
# not exported
#
xs/oggfieldlistmap.xs view on Meta::CPAN
################################################################
#
# Map<Key, T> & operator=(const Map<Key, T> &m)
# not exported
#
################################################################
void
TagLib::Ogg::FieldListMap::copy(m)
TagLib::Ogg::FieldListMap * m
PPCODE:
(void)THIS->operator=(*m);
/* return ST(0) */
XSRETURN(1);
################################################################
#
# PROTECTED MEMBER FUNCTIONS
#
# void detach()
# not exported
xs/oggfieldlistmap.xs view on Meta::CPAN
#
# SPECIAL FUNCTIONS FOR TIE MAGIC
#
################################################################
static void
TagLib::Ogg::FieldListMap::TIEHASH(...)
PROTOTYPE: ;$
PREINIT:
TagLib::Ogg::FieldListMap * map;
PPCODE:
/*!
* tie %h, "TagLib::Ogg::FieldListMap"
* tie %h, "TagLib::Ogg::FieldListMap", $obj_to_tie
*/
switch(items) {
case 2:
if(sv_isobject(ST(1)) &&
sv_derived_from(ST(1), "Audio::TagLib::Ogg::FieldListMap")) {
if(SvREADONLY(SvRV(ST(1)))){
ST(0) = sv_newmortal();
xs/oggfieldlistmap.xs view on Meta::CPAN
/* items == 1 */
map = new TagLib::Ogg::FieldListMap();
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::TagLib::Ogg::FieldListMap", (void *)map);
}
XSRETURN(1);
void
TagLib::Ogg::FieldListMap::FETCH(key)
TagLib::String * key
PPCODE:
/*!
* this will NOT copy the value
* just return the reference
*/
if(THIS->contains(*key)) {
TagLib::StringList & value = THIS->operator[](*key);
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::TagLib::StringList", (void *)&value);
SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
xs/oggfieldlistmap.xs view on Meta::CPAN
TagLib::String * key
CODE:
RETVAL = THIS->contains(*key);
OUTPUT:
RETVAL
void
TagLib::Ogg::FieldListMap::FIRSTKEY()
PREINIT:
TagLib::Ogg::FieldListMap::Iterator it;
PPCODE:
if(THIS->isEmpty())
XSRETURN_UNDEF;
it = THIS->begin();
/* (**it) is a std::pair<const TagLib::String, TagLib::StringList> */
const TagLib::String & key = it->first;
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::TagLib::String", (void *)&key);
SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
xs/oggfieldlistmapiterator.xs view on Meta::CPAN
RETVAL
void
TagLib::Ogg::FieldListMap::Iterator::DESTROY()
CODE:
if(!SvREADONLY(SvRV(ST(0))))
delete THIS;
void
TagLib::Ogg::FieldListMap::Iterator::data()
PPCODE:
//USEPAIR
/* iterator for Map */
TagLib::StringList & data = (*THIS)->second;
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::TagLib::StringList", (void *)&data);
SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
void
TagLib::Ogg::FieldListMap::Iterator::next()
PPCODE:
TagLib::Ogg::FieldListMap::Iterator & i = THIS->operator++();
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::TagLib::Ogg::FieldListMap::Iterator", (void *)&i);
SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
void
TagLib::Ogg::FieldListMap::Iterator::last()
PPCODE:
TagLib::Ogg::FieldListMap::Iterator & i = THIS->operator--();
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::TagLib::Ogg::FieldListMap::Iterator", (void *)&i);
SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
#ifdef LONGMOVEMENT
void
TagLib::Ogg::FieldListMap::Iterator::forward(n)
int n
PPCODE:
(void)THIS->operator+=(n);
/* leave ST(0) untouched and return */
//ST(0) = sv_newmortal();
//sv_setref_pv(ST(0), "Audio::TagLib::Ogg::FieldListMap::Iterator", (void *)THIS);
//SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
void
TagLib::Ogg::FieldListMap::Iterator::backward(n)
int n
PPCODE:
(void)THIS->operator-=(n);
/* leave ST(0) untouched and return */
//ST(0) = sv_newmortal();
//sv_setref_pv(ST(0), "Audio::TagLib::Ogg::FieldListMap::Iterator", (void *)THIS);
//SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
#endif
#ifdef MOREMETHODS
xs/oggfieldlistmapiterator.xs view on Meta::CPAN
TagLib::Ogg::FieldListMap::Iterator::greatEqual(i)
TagLib::Ogg::FieldListMap::Iterator * i
CODE:
RETVAL = THIS->operator>=(*i);
OUTPUT:
RETVAL
void
TagLib::Ogg::FieldListMap::Iterator::copy(i)
TagLib::Ogg::FieldListMap::Iterator * i
PPCODE:
(void)THIS->operator=(*i);
XSRETURN(1);
#endif /* MOREMETHODS */
xs/oggfile.xs view on Meta::CPAN
TagLib::Ogg::File::setPacket(i, p)
unsigned int i
TagLib::ByteVector * p
CODE:
THIS->setPacket(i, *p);
void
TagLib::Ogg::File::firstPageHeader()
INIT:
const TagLib::Ogg::PageHeader * h = THIS->firstPageHeader();
PPCODE:
if(h != NULL) {
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::TagLib::Ogg::PageHeader", (void *)h);
SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
} else
XSRETURN_UNDEF;
void
TagLib::Ogg::File::lastPageHeader()
INIT:
const TagLib::Ogg::PageHeader * h = THIS->lastPageHeader();
PPCODE:
if(h != NULL) {
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::TagLib::Ogg::PageHeader", (void *)h);
SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
} else
XSRETURN_UNDEF;
bool
TagLib::Ogg::File::save()
xs/oggflacfile.xs view on Meta::CPAN
void
TagLib::Ogg::FLAC::File::DESTROY()
CODE:
if(!SvREADONLY(SvRV(ST(0))))
delete THIS;
void
TagLib::Ogg::FLAC::File::tag()
INIT:
TagLib::Ogg::XiphComment * tag = THIS->tag();
PPCODE:
if(tag != NULL) {
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::TagLib::Ogg::XiphComment", (void *)tag);
SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
} else
XSRETURN_UNDEF;
void
TagLib::Ogg::FLAC::File::audioProperties()
INIT:
TagLib::FLAC::Properties * p = THIS->audioProperties();
PPCODE:
if(p != NULL) {
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::TagLib::FLAC::Properties", (void *)p);
SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
} else
XSRETURN_UNDEF;
bool
TagLib::Ogg::FLAC::File::hasXiphComment()
xs/oggpage.xs view on Meta::CPAN
TagLib::Ogg::Page::fileOffset()
CODE:
RETVAL = THIS->fileOffset();
OUTPUT:
RETVAL
void
TagLib::Ogg::Page::header()
INIT:
const TagLib::Ogg::PageHeader * h = THIS->header();
PPCODE:
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::TagLib::Ogg::PageHeader", (void *)h);
SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
int
TagLib::Ogg::Page::firstPacketIndex()
CODE:
RETVAL = THIS->firstPacketIndex();
OUTPUT:
xs/oggpage.xs view on Meta::CPAN
bool firstPacketContinued
bool lastPacketCompleted
bool containsLastPacket
PREINIT:
SV * sv;
INIT:
TagLib::List<TagLib::Ogg::Page *> l = TagLib::Ogg::Page::paginate(
*packets, strategy, streamSerialNumber, firstPage,
firstPacketContinued, lastPacketCompleted,
containsLastPacket);
PPCODE:
switch(GIMME_V) {
case G_SCALAR:
ST(0) = sv_2mortal(newSVuv(l.size()));
XSRETURN(1);
case G_ARRAY:
if(0 < l.size()) {
EXTEND(SP, l.size());
for(int i = 0; i < l.size(); i++) {
sv = sv_newmortal();
sv_setref_pv(sv, "Audio::TagLib::Ogg::Page",
xs/oggpageheader.xs view on Meta::CPAN
TagLib::Ogg::PageHeader::isValid()
CODE:
RETVAL = THIS->isValid();
OUTPUT:
RETVAL
void
TagLib::Ogg::PageHeader::packetSizes()
INIT:
TagLib::List<int> l = THIS->packetSizes();
PPCODE:
switch(GIMME_V) {
case G_SCALAR:
ST(0) = sv_2mortal(newSVuv(l.size()));
XSRETURN(1);
case G_ARRAY:
EXTEND(SP, l.size());
if(0 < l.size()) {
for(int i = 0; i < l.size(); i++)
PUSHs(sv_2mortal(newSViv(l[i])));
//XSRETURN(l.size());
xs/relativevolumeframe.xs view on Meta::CPAN
CODE:
RETVAL = new TagLib::String(THIS->toString());
OUTPUT:
RETVAL
void
TagLib::ID3v2::RelativeVolumeFrame::channels()
INIT:
TagLib::List<TagLib::ID3v2::RelativeVolumeFrame::ChannelType>
l = THIS->channels();
PPCODE:
switch(GIMME_V) {
case G_SCALAR:
ST(0) = sv_2mortal(newSVuv(l.size()));
XSRETURN(1);
case G_ARRAY:
if(l.size() != 0) {
EXTEND(SP, l.size());
for(int i = 0; i < l.size(); i++) {
switch(l[i]) {
case TagLib::ID3v2::RelativeVolumeFrame::Other:
xs/relativevolumeframe.xs view on Meta::CPAN
void
TagLib::ID3v2::RelativeVolumeFrame::PeakVolume::setBitsRepresentingPeak(c)
unsigned char c
CODE:
THIS->bitsRepresentingPeak = c;
void
TagLib::ID3v2::RelativeVolumeFrame::PeakVolume::peakVolume()
INIT:
TagLib::ByteVector & pv = THIS->peakVolume;
PPCODE:
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::TagLib::ByteVector", (void *)&pv);
SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
################################################################
#
# new member function
# exported for setting peakVolume
#
xs/stringiterator.xs view on Meta::CPAN
RETVAL
void
TagLib::String::Iterator::DESTROY()
CODE:
if(!SvREADONLY(SvRV(ST(0))))
delete THIS;
void
TagLib::String::Iterator::data()
PPCODE:
//USEWCHAR
/* iterator for String */
wchar_t & data = **THIS;
/* Festus Hagen 1.62.fh8 - [rt.cpan.org #82529] # */
iconv_t codec = iconv_open("UTF-8", "UTF-16LE");
if(codec == (iconv_t)(-1))
croak("iconv_open failed");
char *inbuf, *outbuf;
char utf8[1024];
size_t inlen, outlen;
xs/stringiterator.xs view on Meta::CPAN
if(iconv_wrap(codec, &inbuf, &inlen, &outbuf, &outlen) == -1)
croak("iconv failed");
utf8[1024-outlen] = '\0';
iconv_close(codec);
ST(0) = sv_2mortal(newSVpvn(utf8, strlen(utf8)));
SvUTF8_on(ST(0));
XSRETURN(1);
void
TagLib::String::Iterator::next()
PPCODE:
TagLib::String::Iterator & i = THIS->operator++();
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::TagLib::String::Iterator", (void *)&i);
SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
void
TagLib::String::Iterator::last()
PPCODE:
TagLib::String::Iterator & i = THIS->operator--();
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), "Audio::TagLib::String::Iterator", (void *)&i);
SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
#ifdef LONGMOVEMENT
void
TagLib::String::Iterator::forward(n)
int n
PPCODE:
(void)THIS->operator+=(n);
/* leave ST(0) untouched and return */
//ST(0) = sv_newmortal();
//sv_setref_pv(ST(0), "Audio::TagLib::String::Iterator", (void *)THIS);
//SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
void
TagLib::String::Iterator::backward(n)
int n
PPCODE:
(void)THIS->operator-=(n);
/* leave ST(0) untouched and return */
//ST(0) = sv_newmortal();
//sv_setref_pv(ST(0), "Audio::TagLib::String::Iterator", (void *)THIS);
//SvREADONLY_on(SvRV(ST(0)));
XSRETURN(1);
#endif
#ifdef MOREMETHODS
xs/stringiterator.xs view on Meta::CPAN
TagLib::String::Iterator::greatEqual(i)
TagLib::String::Iterator * i
CODE:
RETVAL = THIS->operator>=(*i);
OUTPUT:
RETVAL
void
TagLib::String::Iterator::copy(i)
TagLib::String::Iterator * i
PPCODE:
(void)THIS->operator=(*i);
XSRETURN(1);
#endif /* MOREMETHODS */
#undef LONGMOVEMENT
xs/tbytevector.xs view on Meta::CPAN
TagLib::ByteVector::size()
CODE:
RETVAL = THIS->size();
OUTPUT:
RETVAL
void
TagLib::ByteVector::resize(size, padding = 0)
unsigned int size
char padding
PPCODE:
(void)THIS->resize(size, padding);
XSRETURN(1);
TagLib::ByteVector::Iterator *
TagLib::ByteVector::begin()
CODE:
RETVAL = new TagLib::ByteVector::Iterator(THIS->begin());
OUTPUT:
RETVAL
xs/tbytevector.xs view on Meta::CPAN
################################################################
#
# THIS IS A NEW ADDED PRIVATE SYMBOL
# which implements
# ByteVector & operator=(const ByteVector &v)
#
################################################################
void
TagLib::ByteVector::copy(v)
TagLib::ByteVector * v
PPCODE:
(void)THIS->operator=(*THIS);
XSRETURN(1);
################################################################
#
# STATIC PUBLIC MEMBER FUNCTIONS
#
################################################################
static TagLib::ByteVector *
TagLib::ByteVector::fromUInt(value, mostSignificantByteFirst=true)
xs/tbytevector.xs view on Meta::CPAN
################################################################
#
# return the memory address of instance
#
################################################################
void
TagLib::ByteVector::_memoAddress()
PREINIT:
char strAddress[512];
PPCODE:
sprintf(strAddress, "%#u", THIS);
ST(0) = newSVpv(strAddress, 0);
sv_2mortal(ST(0));
XSRETURN(1);