gnash-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gnash-commit] /srv/bzr/gnash/rtmp r9643: Add support for operator= for


From: rob
Subject: [Gnash-commit] /srv/bzr/gnash/rtmp r9643: Add support for operator= for Elemenbt types, as the first byte is often an AMF type.
Date: Fri, 19 Sep 2008 17:57:20 -0600
User-agent: Bazaar (1.5)

------------------------------------------------------------
revno: 9643
committer: address@hidden
branch nick: rtmp
timestamp: Fri 2008-09-19 17:57:20 -0600
message:
  Add support for operator= for Elemenbt types, as the first byte is often an 
AMF type.
modified:
  libamf/amf.cpp
  libamf/amf.h
  libamf/buffer.cpp
  libamf/buffer.h
  libamf/element.cpp
=== modified file 'libamf/amf.cpp'
--- a/libamf/amf.cpp    2008-08-13 19:26:51 +0000
+++ b/libamf/amf.cpp    2008-09-19 23:57:20 +0000
@@ -21,8 +21,7 @@
 #include "gnashconfig.h"
 #endif
 
-#include "GnashException.h"
-
+#include <boost/shared_ptr.hpp>
 #include <string>
 #include <vector>
 
@@ -33,6 +32,7 @@
 #endif
 
 #include "log.h"
+#include "GnashException.h"
 #include "buffer.h"
 #include "amf.h"
 #include "network.h"
@@ -173,17 +173,19 @@
 /// @return a binary AMF packet in big endian format (header,data) which
 /// needs to be deleted[] after being used.
 ///
-Buffer *
+boost::shared_ptr<Buffer>
 AMF::encodeNumber(double indata)
 {
 //    GNASH_REPORT_FUNCTION;
     double num;
     // Encode the data as a 64 bit, big-endian, numeric value
-    Buffer *buf = new Buffer(AMF0_NUMBER_SIZE + 1); // only one additional 
byte for the type
-    buf->append(Element::NUMBER_AMF0);
+    // only one additional byte for the type
+    boost::shared_ptr<Buffer> buf(new Buffer(AMF0_NUMBER_SIZE + 1));
+    *buf->reference() = Element::NUMBER_AMF0;
+    buf->operator += (Element::NUMBER_AMF0);
     num = indata;
     swapBytes(&num, AMF0_NUMBER_SIZE);
-    buf->append(num);
+    buf += num;
     
     return buf;
 }
@@ -193,12 +195,12 @@
 /// @return a binary AMF packet in big endian format (header,data) which
 /// needs to be deleted[] after being used.
 ///
-Buffer *
+boost::shared_ptr<Buffer>
 AMF::encodeBoolean(bool flag)
 {
 //    GNASH_REPORT_FUNCTION;
     // Encode a boolean value. 0 for false, 1 for true
-    Buffer *buf = new Buffer(2);
+    boost::shared_ptr<Buffer>buf = new Buffer(2);
     buf->append(Element::BOOLEAN_AMF0);
     buf->append(flag);
     
@@ -210,11 +212,11 @@
 /// @return a binary AMF packet in big endian format (header,data) which
 /// needs to be deleted[] after being used.
 ///
-Buffer *
+boost::shared_ptr<Buffer>
 AMF::encodeObjectEnd()
 {
 //    GNASH_REPORT_FUNCTION;
-    Buffer *buf = new Buffer(1);
+    boost::shared_ptr<Buffer>buf = new Buffer(1);
     buf->append(TERMINATOR);
 
     return buf;
@@ -226,17 +228,17 @@
 /// @return a binary AMF packet in big endian format (header,data) which
 /// needs to be deleted[] after being used.
 ///
-Buffer *
+boost::shared_ptr<Buffer>
 AMF::encodeObject(Element *el)
 {
     GNASH_REPORT_FUNCTION;
 //    AMF amf_obj;
     
     for (size_t i=0; i< el->propertiesSize(); i++) {
-//     Buffer *var = amf_obj.encodeProperty();
+//     boost::shared_ptr<Buffer>var = amf_obj.encodeProperty();
 //     Element *child = el[i];
 #if 0
-       Buffer *buf = new Buffer(AMF_HEADER_SIZE + size);
+       boost::shared_ptr<Buffer>buf = new Buffer(AMF_HEADER_SIZE + size);
        buf->append(Element::OBJECT);
        boost::uint32_t num = size;
        swapBytes(&num, 4);
@@ -256,11 +258,11 @@
 /// @return a binary AMF packet in big endian format (header,data) which
 /// needs to be deleted[] after being used.
 ///
-Buffer *
+boost::shared_ptr<Buffer>
 AMF::encodeUndefined()
 {
 //    GNASH_REPORT_FUNCTION;
-    Buffer *buf = new Buffer(AMF_HEADER_SIZE);
+    boost::shared_ptr<Buffer>buf = new Buffer(AMF_HEADER_SIZE);
     buf->append(Element::UNDEFINED_AMF0);
     
     return buf;
@@ -271,11 +273,11 @@
 /// @return a binary AMF packet in big endian format (header,data) which
 /// needs to be deleted[] after being used.
 ///
-Buffer *
+boost::shared_ptr<Buffer>
 AMF::encodeUnsupported()
 {
 //    GNASH_REPORT_FUNCTION;
-    Buffer *buf = new Buffer(AMF_HEADER_SIZE);
+    boost::shared_ptr<Buffer>buf = new Buffer(AMF_HEADER_SIZE);
     buf->append(Element::UNSUPPORTED_AMF0);
     
     return buf;
@@ -286,11 +288,11 @@
 /// @return a binary AMF packet in big endian format (header,data) which
 /// needs to be deleted[] after being used.
 ///
-Buffer *
+boost::shared_ptr<Buffer>
 AMF::encodeDate(Network::byte_t *data)
 {
 //    GNASH_REPORT_FUNCTION;
-    Buffer *buf = new Buffer(AMF_HEADER_SIZE);
+    boost::shared_ptr<Buffer>buf = new Buffer(AMF_HEADER_SIZE);
     buf->append(Element::DATE_AMF0);
     double num = *reinterpret_cast<const double*>(data);
     swapBytes(&num, 8);
@@ -303,12 +305,12 @@
 /// @return a binary AMF packet in big endian format (header,data) which
 /// needs to be deleted[] after being used.
 ///
-Buffer *
+boost::shared_ptr<Buffer>
 AMF::encodeNull()
 {
 //    GNASH_REPORT_FUNCTION;
 
-    Buffer *buf = new Buffer(1);
+    boost::shared_ptr<Buffer>buf = new Buffer(1);
     buf->append(Element::NULL_AMF0);
     
     return buf;
@@ -319,7 +321,7 @@
 /// @return a binary AMF packet in big endian format (header,data) which
 /// needs to be deleted[] after being used.
 ///
-Buffer *
+boost::shared_ptr<Buffer>
 AMF::encodeXMLObject(Network::byte_t * /*data */, size_t /* size */)
 {
 //    GNASH_REPORT_FUNCTION;
@@ -333,7 +335,7 @@
 /// @return a binary AMF packet in big endian format (header,data) which
 /// needs to be deleted[] after being used.
 ///
-Buffer *
+boost::shared_ptr<Buffer>
 AMF::encodeTypedObject(Network::byte_t * /* data */, size_t /* size */)
 {
 //    GNASH_REPORT_FUNCTION;
@@ -347,7 +349,7 @@
 /// @return a binary AMF packet in big endian format (header,data) which
 /// needs to be deleted[] after being used.
 ///
-Buffer *
+boost::shared_ptr<Buffer>
 AMF::encodeReference(Network::byte_t * /* data */, size_t /* size */)
 {
 //    GNASH_REPORT_FUNCTION;
@@ -361,7 +363,7 @@
 /// @return a binary AMF packet in big endian format (header,data) which
 /// needs to be deleted[] after being used.
 ///
-Buffer *
+boost::shared_ptr<Buffer>
 AMF::encodeMovieClip(Network::byte_t * /*data */, size_t /* size */)
 {
 //    GNASH_REPORT_FUNCTION;
@@ -375,7 +377,7 @@
 /// @return a binary AMF packet in big endian format (header,data) which
 /// needs to be deleted[] after being used.
 ///
-Buffer *
+boost::shared_ptr<Buffer>
 AMF::encodeECMAArray(Network::byte_t * /*data */, size_t /* size */)
 {
 //    GNASH_REPORT_FUNCTION;
@@ -389,7 +391,7 @@
 /// @return a binary AMF packet in big endian format (header,data) which
 /// needs to be deleted[] after being used.
 ///
-Buffer *
+boost::shared_ptr<Buffer>
 AMF::encodeLongString(Network::byte_t * /* data */, size_t /* size */)
 {
 //    GNASH_REPORT_FUNCTION;
@@ -403,7 +405,7 @@
 /// @return a binary AMF packet in big endian format (header,data) which
 /// needs to be deleted[] after being used.
 ///
-Buffer *
+boost::shared_ptr<Buffer>
 AMF::encodeRecordSet(Network::byte_t * /* data */, size_t /* size */)
 {
 //    GNASH_REPORT_FUNCTION;
@@ -417,7 +419,7 @@
 /// @return a binary AMF packet in big endian format (header,data) which
 /// needs to be deleted[] after being used.
 ///
-Buffer *
+boost::shared_ptr<Buffer>
 AMF::encodeStrictArray(Network::byte_t * /* data */, size_t /* size */)
 {
 //    GNASH_REPORT_FUNCTION;
@@ -431,20 +433,20 @@
 /// @return a binary AMF packet in big endian format (header,data) which
 /// needs to be deleted[] after being used.
 ///
-Buffer *
+boost::shared_ptr<Buffer>
 AMF::encodeString(const string &str)
 {
     Network::byte_t *ptr = const_cast<Network::byte_t 
*>(reinterpret_cast<const Network::byte_t *>(str.c_str()));
     return encodeString(ptr, str.size());
 }
 
-Buffer *
+boost::shared_ptr<Buffer>
 AMF::encodeString(Network::byte_t *data, size_t size)
 {
 //    GNASH_REPORT_FUNCTION;
     boost::uint16_t length;
     
-    Buffer *buf = new Buffer(size + AMF_HEADER_SIZE);
+    boost::shared_ptr<Buffer>buf = new Buffer(size + AMF_HEADER_SIZE);
     buf->append(Element::STRING_AMF0);
     // when a string is stored in an element, we add a NULL terminator so
     // it can be printed by to_string() efficiently. The NULL terminator
@@ -464,13 +466,13 @@
 /// @return a binary AMF packet in big endian format (header,data) which
 /// needs to be deleted[] after being used.
 ///
-Buffer *
+boost::shared_ptr<Buffer>
 AMF::encodeNullString()
 {
 //    GNASH_REPORT_FUNCTION;
     boost::uint16_t length;
     
-    Buffer *buf = new Buffer(AMF_HEADER_SIZE);
+    boost::shared_ptr<Buffer>buf = new Buffer(AMF_HEADER_SIZE);
     buf->append(Element::STRING_AMF0);
     // when a string is stored in an element, we add a NULL terminator so
     // it can be printed by to_string() efficiently. The NULL terminator
@@ -499,12 +501,12 @@
 /// normal ASCII. It may be that these need to be converted to wide
 /// characters, but for now we just leave them as standard multibyte
 /// characters.
-Buffer *
+boost::shared_ptr<Buffer>
 AMF::encodeElement(Element *el)
 {
 //    GNASH_REPORT_FUNCTION;
-    Buffer *buf = 0;
-    Buffer *tmp = 0;
+    boost::shared_ptr<Buffer>buf = 0;
+    boost::shared_ptr<Buffer>tmp = 0;
     
     size_t outsize;
     if (el->getType() == Element::BOOLEAN_AMF0) {
@@ -611,7 +613,7 @@
     return buf;
 }
 
-Buffer *
+boost::shared_ptr<Buffer>
 AMF::encodeProperty(amf::Element *el)
 {
 //    GNASH_REPORT_FUNCTION;
@@ -619,7 +621,7 @@
     
     outsize = el->getNameSize() + el->getLength() + AMF_VAR_HEADER_SIZE;
 
-    Buffer *buf = new Buffer(outsize);
+    boost::shared_ptr<Buffer>buf = new Buffer(outsize);
     _totalsize += outsize;
 
     // Add the length of the string for the name of the variable
@@ -663,7 +665,7 @@
 }
 
 Element *
-AMF::extractAMF(Buffer *buf)
+AMF::extractAMF(boost::shared_ptr<Buffer>buf)
 {
 //    GNASH_REPORT_FUNCTION;
     Network::byte_t* start = buf->reference();
@@ -836,7 +838,7 @@
 }
 
 Element *
-AMF::extractProperty(Buffer *buf)
+AMF::extractProperty(boost::shared_ptr<Buffer> buf)
 {
 //    GNASH_REPORT_FUNCTION;
 

=== modified file 'libamf/amf.h'
--- a/libamf/amf.h      2008-08-04 08:29:21 +0000
+++ b/libamf/amf.h      2008-09-19 23:57:20 +0000
@@ -35,6 +35,7 @@
 #include <cstring>
 #include <map>
 #include <boost/cstdint.hpp>
+#include <boost/shared_ptr.hpp>
 
 #include "network.h"
 #include "element.h"
@@ -115,108 +116,108 @@
 
     /// @return a binary AMF packet in big endian format (header,data)
     ///
-    static Buffer *encodeString(const std::string &str);
-    static Buffer *encodeString(gnash::Network::byte_t *data, size_t size);
+    static boost::shared_ptr<Buffer> encodeString(const std::string &str);
+    static boost::shared_ptr<Buffer> encodeString(gnash::Network::byte_t 
*data, size_t size);
 
     /// @return a binary AMF packet in big endian format (header,data)
     ///
-    static Buffer *encodeNullString();
+    static boost::shared_ptr<Buffer> encodeNullString();
 
     /// Encode a Boolean object
     ///
     /// @return a binary AMF packet in big endian format (header,data)
     ///
-    static Buffer *encodeBoolean(bool flag);
+    static boost::shared_ptr<Buffer> encodeBoolean(bool flag);
 
     /// Encode an "Undefined" object
     ///
     /// @return a binary AMF packet in big endian format (header,data)
     ///
-    static Buffer *encodeUndefined();
+    static boost::shared_ptr<Buffer> encodeUndefined();
 
     /// Encode a "NULL" object
     ///
     /// @return a binary AMF packet in big endian format (header,data)
     ///
-    static Buffer *encodeNull();
+    static boost::shared_ptr<Buffer> encodeNull();
 
     /// Encode a "Unsupported" object
     ///
     /// @return a binary AMF packet in big endian format (header,data)
     ///
-    static  Buffer *encodeUnsupported();
+    static  boost::shared_ptr<Buffer> encodeUnsupported();
 
     /// Encode an XML object
     ///
     /// @return a binary AMF packet in big endian format (header,data)
     ///
-    static Buffer *encodeXMLObject(gnash::Network::byte_t *data, size_t size);
+    static boost::shared_ptr<Buffer> encodeXMLObject(gnash::Network::byte_t 
*data, size_t size);
 
     /// Encode a Typed Object
     ///
     /// @return a binary AMF packet in big endian format (header,data)
     ///
-    static Buffer *encodeTypedObject(gnash::Network::byte_t *data, size_t 
size);
+    static boost::shared_ptr<Buffer> encodeTypedObject(gnash::Network::byte_t 
*data, size_t size);
 
     /// Encode a Reference to an object
     ///
     /// @return a binary AMF packet in big endian format (header,data)
     ///
-    static Buffer *encodeReference(gnash::Network::byte_t *data, size_t size);
+    static boost::shared_ptr<Buffer> encodeReference(gnash::Network::byte_t 
*data, size_t size);
 
     /// Encode a Movie Clip
     ///
     /// @return a binary AMF packet in big endian format (header,data)
     ///
-    static Buffer *encodeMovieClip(gnash::Network::byte_t *data, size_t size);
+    static boost::shared_ptr<Buffer> encodeMovieClip(gnash::Network::byte_t 
*data, size_t size);
 
     /// Encode an ECMA Array
     ///
     /// @return a binary AMF packet in big endian format (header,data)
     ///
-    static Buffer *encodeECMAArray(gnash::Network::byte_t *data, size_t size);
+    static boost::shared_ptr<Buffer> encodeECMAArray(gnash::Network::byte_t 
*data, size_t size);
 
     /// Encode a long string
     ///
     /// @return a binary AMF packet in big endian format (header,data)
     ///
-    static Buffer *encodeLongString(gnash::Network::byte_t *data, size_t size);
+    static boost::shared_ptr<Buffer> encodeLongString(gnash::Network::byte_t 
*data, size_t size);
 
     /// Encode a Record Set
     ///
     /// @return a binary AMF packet in big endian format (header,data)
     ///
-    static Buffer *encodeRecordSet(gnash::Network::byte_t *data, size_t size);
+    static boost::shared_ptr<Buffer> encodeRecordSet(gnash::Network::byte_t 
*data, size_t size);
 
     /// Encode a Date
     ///
     /// @return a binary AMF packet in big endian format (header,data)
     ///
-    static Buffer *encodeDate(gnash::Network::byte_t *data);
+    static boost::shared_ptr<Buffer> encodeDate(gnash::Network::byte_t *data);
 
     /// Encode a Strict Array
     ///
     /// @return a binary AMF packet in big endian format (header,data)
     ///
-    static Buffer *encodeStrictArray(gnash::Network::byte_t *data, size_t 
size);
+    static boost::shared_ptr<Buffer> encodeStrictArray(gnash::Network::byte_t 
*data, size_t size);
     
     /// Encode an object
     ///
     /// @return a binary AMF packet in big endian format (header,data)
     ///
-    static Buffer *encodeObject(Element *el);
+    static boost::shared_ptr<Buffer> encodeObject(Element *el);
 
     /// Encode the end of an object
     ///
     /// @return a binary AMF packet in big endian format (header,data)
     ///
-    static Buffer *encodeObjectEnd();
+    static boost::shared_ptr<Buffer> encodeObjectEnd();
 
     /// Encode a 64 bit number
     ///
     /// @return a binary AMF packet in big endian format (header,data)
     ///
-    static Buffer *encodeNumber(double num);
+    static boost::shared_ptr<Buffer> encodeNumber(double num);
 
     /// Encode a element. 
     ///
@@ -225,7 +226,7 @@
     /// @return a newly allocated byte array.
     /// to be deleted by caller using delete [] operator, or NULL
     ///
-    static Buffer *encodeElement(amf::Element *el);
+    static boost::shared_ptr<Buffer> encodeElement(amf::Element *el);
 
     /// Encode a variable. 
     //
@@ -237,8 +238,8 @@
     ///         in form of a newly allocated byte array.
     ///         to be deleted by caller using delete [] operator, or NULL
     ///
-    Buffer *encodeProperty(amf::Element *el);
-    static Buffer *encodeVariableHeader(const std::string &name);
+    boost::shared_ptr<Buffer> encodeProperty(amf::Element *el);
+    static boost::shared_ptr<Buffer> encodeVariableHeader(const std::string 
&name);
     
     //
     // Methods for extracting data from big endian formatted raw AMF data.
@@ -266,7 +267,7 @@
     amf::Element *extractAMF(gnash::Network::byte_t *in, 
gnash::Network::byte_t* tooFar);
 
     /// Extract an AMF object. These have no name like the variables do.
-    amf::Element *extractAMF(Buffer *buf);
+    amf::Element *extractAMF(boost::shared_ptr<Buffer>buf);
     
     /// \brief
     /// Extract an AMF "variable", which is a standard AMF object preceeded by
@@ -286,7 +287,7 @@
     /// \brief
     /// Extract an AMF "variable", which is a standard AMF object preceeded by
     /// just a length and a name field.
-    amf::Element *extractProperty(Buffer *buf);
+    amf::Element *extractProperty(boost::shared_ptr<Buffer> buf);
 
     size_t totalsize() { return _totalsize; }
     

=== modified file 'libamf/buffer.cpp'
--- a/libamf/buffer.cpp 2008-09-19 22:11:12 +0000
+++ b/libamf/buffer.cpp 2008-09-19 23:57:20 +0000
@@ -160,166 +160,6 @@
     return *this;
 }
 
-#if 0
-void
-Buffer::copy(const string &str)
-{    
-//    GNASH_REPORT_FUNCTION;
-    std::copy(str.begin(), str.end(), _ptr);
-    _seekptr = _ptr + str.size();
-}
-
-void
-Buffer::copy(boost::uint16_t length)
-{
-    Network::byte_t *data = reinterpret_cast<Network::byte_t *>(&length);
-    std::copy(data, data + sizeof(boost::uint16_t), _ptr);
-    _seekptr = _ptr + sizeof(boost::uint16_t);
-}
-
-void
-Buffer::copy(double num)
-{
-//    GNASH_REPORT_FUNCTION;
-    Network::byte_t *ptr = reinterpret_cast<Network::byte_t *>(&num);
-    std::copy(ptr, ptr + amf::AMF0_NUMBER_SIZE, _ptr);
-    _seekptr = _ptr + amf::AMF0_NUMBER_SIZE;
-}
-
-void
-Buffer::copy(Network::byte_t val)
-{
-    GNASH_REPORT_FUNCTION;
-    *_ptr = val;
-    _seekptr = _ptr + sizeof(bool);
-}
-#endif
-
-#if 0
-void
-Buffer::copy(bool val)
-{
-    GNASH_REPORT_FUNCTION;
-    return copy(static_cast<Network::byte_t>(val));
-}
-#endif
-
-#if 0
-Network::byte_t *
-Buffer::append(boost::uint16_t length)
-{
-//    GNASH_REPORT_FUNCTION;
-    
-    if ((_seekptr + sizeof(boost::uint16_t)) <= (_ptr + _nbytes)) {
-       Network::byte_t *data = reinterpret_cast<Network::byte_t *>(&length);
-       std::copy(data, data + sizeof(boost::uint16_t), _seekptr);
-       std::copy(data, data + sizeof(boost::uint16_t), _data.get());
-       _seekptr += sizeof(boost::uint16_t);
-       return _seekptr;
-    }
-    return 0;
-}
-
-Network::byte_t *
-Buffer::append(gnash::Network::byte_t *data, size_t nbytes)
-{
-//    GNASH_REPORT_FUNCTION;
-
-    if ((_seekptr + nbytes) <= (_ptr + _nbytes)) {
-       std::copy(data, data + nbytes, _seekptr);
-       _seekptr += nbytes;
-       return _seekptr;
-    }
-    return 0;
-}
-
-Network::byte_t *
-Buffer::append(double num)
-{
-//    GNASH_REPORT_FUNCTION;
-    if ((_seekptr + sizeof(double)) <= (_ptr + _nbytes)) {
-       Network::byte_t *ptr = reinterpret_cast<Network::byte_t *>(&num);
-       std::copy(ptr, ptr + amf::AMF0_NUMBER_SIZE, _seekptr);
-       _seekptr += amf::AMF0_NUMBER_SIZE;
-       return _seekptr;
-    }
-    return 0;
-}
-
-Network::byte_t *
-Buffer::append(bool val)
-{
-//    GNASH_REPORT_FUNCTION;
-    if ((_seekptr + sizeof(bool)) <= (_ptr + _nbytes)) {
-       *_seekptr = val;
-       _seekptr += sizeof(bool);
-       return _seekptr;
-    }
-    return 0;
-}
-
-Network::byte_t *
-Buffer::append(boost::uint32_t num)
-{
-//    GNASH_REPORT_FUNCTION;
-    Network::byte_t *ptr = reinterpret_cast< Network::byte_t *>(&num);    
-    return append(ptr, sizeof(boost::uint32_t));
-}
-
-Network::byte_t *
-Buffer::append(Network::byte_t byte)
-{
-//    GNASH_REPORT_FUNCTION;
-    if ((_seekptr + sizeof(gnash::Network::byte_t)) <= (_ptr + _nbytes)) {
-       *_seekptr = byte;
-       _seekptr += sizeof(gnash::Network::byte_t);
-       return _seekptr;
-    }
-    return 0;
-}
-
-Network::byte_t *
-Buffer::append(const std::string &str)
-{
-//    GNASH_REPORT_FUNCTION;
-    if ((_seekptr + str.size()) <= (_ptr + _nbytes)) {
-       std::copy(str.begin(), str.end(), _seekptr);    
-       _seekptr += str.size();
-       return _seekptr;
-    }
-    return 0;
-}
-
-Network::byte_t *
-Buffer::append(amf::Element::amf0_type_e type)
-{
-    return append(static_cast<Network::byte_t>(type));
-}
-
-Network::byte_t *
-Buffer::append(Buffer &buf)
-{
-//    GNASH_REPORT_FUNCTION;
-    return append(&buf);
-}
-
-Network::byte_t *
-Buffer::append(Buffer *buf)
-{
-//    GNASH_REPORT_FUNCTION;
-    size_t diff = _seekptr - _ptr;
-    
-    if (buf->size() > (_nbytes - diff)) {
-         resize(buf->size() + diff);
-    }
-    
-    std::copy(buf->begin(), buf->end(), _seekptr);
-    _seekptr += buf->size();
-
-    return _seekptr;
-}
-#endif
-
 // make ourselves be able to appended too. If the source
 // buffer is larger than the current buffer has room for,
 // resize ourselves (which copies the data too) to make
@@ -376,6 +216,7 @@
     return append(ptr, sizeof(boost::uint16_t));
 }
 
+
 Buffer &
 Buffer::operator=(Buffer &buf)
 {
@@ -413,6 +254,13 @@
 }
 
 Buffer &
+Buffer::operator=(amf::Element::amf0_type_e type)
+{
+    Network::byte_t nb = static_cast<Network::byte_t>(type);
+    return operator+=(nb);
+}
+
+Buffer &
 Buffer::operator=(gnash::Network::byte_t byte)
 {
 //    GNASH_REPORT_FUNCTION;

=== modified file 'libamf/buffer.h'
--- a/libamf/buffer.h   2008-09-19 22:11:12 +0000
+++ b/libamf/buffer.h   2008-09-19 23:57:20 +0000
@@ -60,7 +60,8 @@
     Buffer &operator=(double num);
     Buffer &operator=(boost::uint16_t length);
     Buffer &operator=(gnash::Network::byte_t byte);
-    Buffer &operator=(gnash::Network::byte_t *data);    
+    Buffer &operator=(gnash::Network::byte_t *data);
+    Buffer &operator=(amf::Element::amf0_type_e type);
     
     Buffer &operator+=(Buffer &buf);
     Buffer &operator+=(const std::string &str);
@@ -111,8 +112,7 @@
 #endif
   private:
     // Initialize a block of memory for this buffer
-    Buffer &init(size_t nbytes);
-    
+    Buffer &init(size_t nbytes);    
     gnash::Network::byte_t hex2digit (gnash::Network::byte_t digit);
 };
 

=== modified file 'libamf/element.cpp'
--- a/libamf/element.cpp        2008-09-18 04:05:29 +0000
+++ b/libamf/element.cpp        2008-09-19 23:57:20 +0000
@@ -544,10 +544,7 @@
     if (name.size()) {
         setName(name);
     }
-    _type = Element::NUMBER_AMF0;
-    check_buffer(AMF0_NUMBER_SIZE);
-    _buffer->copy(num);
-    return *this;
+    return makeNumber(num);
 }
 
 Element &


reply via email to

[Prev in Thread] Current Thread [Next in Thread]