"""

This module provides functions that read and write mstring in a binary
format.

Functions:
load      Load an mstring object.
load_str  Load an mstring object from a string.
save      Save an mstring object.
save_str  Save an mstring object to a string.

"""
try:
    import cPickle as pickle
except ImportError:
    import pickle

def load(handle):
    """load(handle) -> mstring"""
    return pickle.load(handle)

def load_str(s):
    """load_str(s) -> mstring"""
    return pickle.loads(s)

def save(handle, ms):
    """save(handle, ms)"""
    pickle.dump(ms, handle, 1)

def save_str(ms):
    """save_str(ms) -> str"""
    return pickle.dumps(ms, 1)
