Hey,

I'm trying to serialise some data. I have a c++ class:
        class ostream
        {
            std::ostream& stream;
        public:
            ostream(std::ostream& s) : stream(s) {}

            void write(const char* bytes, Uint32 count)
            {
                stream.write(bytes, count);
            }
        };
As you can see, it only wraps std::ostream.

I call the python function like this:
ostream stream(file);
GameObject* obj = new GameObject(...);
                if(boost::python::override f = get_override("serialise"))
                    return f(boost::python::object(boost::python::ptr(obj)),
boost::python::object(boost::python::ptr(&stream)));

Then in the python script:
    def serialise(self, gameobj, file):
        if(gameobj in self.components):
            b = pickle.dumps(self.components[gameobj])
            # this is some testing code and dont really make sense because I
don't know what to do...
            file.write(str(len(str(b))), 10) # try to serialise an int that
tells the size of the byte-object
            print(len(str(b)))
            file.write(str(b), len(str(b))) # write the byte object
        return len(str(b)) + 10 # return amount of bytes we wrote

First i "pickle" a python object. I convert that byte-object to a string
since my write() function in c++ takes a const char*. But i'd like to pass
the byte-object directly since const char* is basically a byte, right?

Also, the other problem, when im about to read the serialised data I need to
know the size of the previously serialised data to unpickle it. I thoght
that I could to the c++ way and add a integer before the byte stream that
reveal how big it is. But How can i serialise an int from python that takes
up constant "byte-size" for an integer between lets say 0-10000!?

Any help on this one? Thanks!
_______________________________________________
Cplusplus-sig mailing list
Cplusplus-sig@python.org
http://mail.python.org/mailman/listinfo/cplusplus-sig

Reply via email to