hcodedb::HCodeDB Class Reference


Public Member Functions

def __init__
def hcodeobj
def readdb

Data Fields

 data
 db
 fp
 version

Detailed Description

Definition at line 47 of file hcodedb.py.


Member Function Documentation

def hcodedb::HCodeDB::__init__ (   self,
  fp = None 
)

Definition at line 48 of file hcodedb.py.

00048                                :
00049         self.data = []
00050         self.db = {}
00051         if fp:
00052             self.fp = fp
00053             self.readdb()
00054 
    def hcodeobj(self, key, type, size, data):

def hcodedb::HCodeDB::hcodeobj (   self,
  key,
  type,
  size,
  data 
)

Definition at line 55 of file hcodedb.py.

00055                                              :
00056         if type == gtypes.MECH:
00057             return MECHObject(key, type, size, data)
00058         elif type == gtypes.MAP:
00059             return MAPObject(key, type, size, data)
00060         else:
00061             return HCodeObject(key, type, size, data)
00062 
    def readdb(self):

def hcodedb::HCodeDB::readdb (   self  ) 

Definition at line 63 of file hcodedb.py.

00063                     :
00064         # version, [key, type, size]+
00065         # version == char
00066         # key == int
00067         # type == unsigned char
00068         # size == unsigned short
00069         self.version = ord(self.fp.read(1))
00070         keydata = self.fp.read(4)
00071         while keydata and len(keydata) == 4:
00072             key = struct.unpack("=i", keydata)[0]
00073             if key < 0:
00074                 break
00075             header = self.fp.read(3)
00076             type, size = struct.unpack("=bH", header)
00077             data = self.fp.read(size)
00078 # Disabled MT_LIST support, MUX doesn't use it
00079 #            data = [self.fp.read(size),]
00080 #            if type == gtypes.MT_LIST:
00081 #                sys.stderr.write("Found MT_LIST_TYPE.\n")
00082 #                self.recursize_readlist(data)
00083             obj = self.hcodeobj(key, type, size, data)
00084             self.data.append(obj)
00085             self.db[key] = obj
00086             keydata = self.fp.read(4)
00087 
00088         sys.stderr.write("Done loading xcode tree: %d\n"%self.fp.tell())
00089         # Read postdata, objtypes and all
00090         # (God, this db format is f*cked)
00091         for meth in ("load_update1", "load_update2",
00092                      "load_update3", "load_update4"):
00093             for obj in self.data:
00094                 if hasattr(obj, meth):
00095                     getattr(obj,meth)(self.fp)
00096             sys.stderr.write("Done pass " + meth + ": %d\n"%self.fp.tell())
00097 
00098             
00099 
00100 
class HCodeObject:


Field Documentation

hcodedb::HCodeDB::data

Definition at line 49 of file hcodedb.py.

hcodedb::HCodeDB::db

Definition at line 50 of file hcodedb.py.

hcodedb::HCodeDB::fp

Definition at line 52 of file hcodedb.py.

hcodedb::HCodeDB::version

Definition at line 69 of file hcodedb.py.


The documentation for this class was generated from the following file:
Generated on Mon May 28 04:25:49 2007 for BattletechMUX by  doxygen 1.4.7