# tools.py
#
# Utility functions
import struct
def EncodeString(str):
assert len(str)<=253
return str
def EncodeAddress(addr):
(a,b,c,d)=map(int, addr.split("."))
return struct.pack("BBBB", a, b, c, d)
def EncodeInteger(num):
return struct.pack("!I", num)
def EncodeDate(num):
return struct.pack("!I", num)
def DecodeString(str):
return str
def DecodeAddress(addr):
return ".".join(map(str, struct.unpack("BBBB", addr)))
def DecodeInteger(num):
return (struct.unpack("!I", num))[0]
def DecodeDate(num):
return (struct.unpack("!I", num))[0]
def EncodeAttr(datatype, value):
if datatype=="string":
return EncodeString(value)
elif datatype=="ipaddr":
return EncodeAddress(value)
elif datatype=="integer":
return EncodeInteger(value)
elif datatype=="date":
return EncodeDate(value)
else:
return value
def DecodeAttr(datatype, value):
if datatype=="string":
return DecodeString(value)
elif datatype=="ipaddr":
return DecodeAddress(value)
elif datatype=="integer":
return DecodeInteger(value)
elif datatype=="date":
return DecodeDate(value)
else:
return value
syntax highlighted by Code2HTML, v. 0.9.1