# This file was automatically generated by SWIG (http://www.swig.org).
# Version 1.3.31
#
# Don't modify this file, modify the SWIG interface instead.
# This file is compatible with both classic and new-style classes.

import _xtcparser
import new
new_instancemethod = new.instancemethod
try:
    _swig_property = property
except NameError:
    pass # Python < 2.2 doesn't have 'property'.
def _swig_setattr_nondynamic(self,class_type,name,value,static=1):
    if (name == "thisown"): return self.this.own(value)
    if (name == "this"):
        if type(value).__name__ == 'PySwigObject':
            self.__dict__[name] = value
            return
    method = class_type.__swig_setmethods__.get(name,None)
    if method: return method(self,value)
    if (not static) or hasattr(self,name):
        self.__dict__[name] = value
    else:
        raise AttributeError("You cannot add attributes to %s" % self)

def _swig_setattr(self,class_type,name,value):
    return _swig_setattr_nondynamic(self,class_type,name,value,0)

def _swig_getattr(self,class_type,name):
    if (name == "thisown"): return self.this.own()
    method = class_type.__swig_getmethods__.get(name,None)
    if method: return method(self)
    raise AttributeError,name

def _swig_repr(self):
    try: strthis = "proxy of " + self.this.__repr__()
    except: strthis = ""
    return "<%s.%s; %s >" % (self.__class__.__module__, self.__class__.__name__, strthis,)

import types
try:
    _object = types.ObjectType
    _newclass = 1
except AttributeError:
    class _object : pass
    _newclass = 0
del types


read_xtc_out = _xtcparser.read_xtc_out
open_xtc = _xtcparser.open_xtc
read_header_xtc = _xtcparser.read_header_xtc
read_first_frame_xtc = _xtcparser.read_first_frame_xtc
read_next_frame_xtc = _xtcparser.read_next_frame_xtc
close_xtc = _xtcparser.close_xtc
#
# this Python function uses the module interface for reading an xtc trajectory file
# the function does not check if file exists or if it has .xtc extension
#
def read_xtc(file):
    
    nframes = 0
    _xtcparser.open_xtc(file)
    headers = []
    status, magic, natoms, step, time =_xtcparser.read_header_xtc()
    if not status:
        print "Error in reading header of file %s"%file
        return 0
    import numpy.oldnumeric as Numeric
    cs = Numeric.zeros((natoms, 3), typecode="f")
    status, prec = _xtcparser.read_first_frame_xtc(magic, cs)
    coords=[]
    
    if not status:
        print "Error in reading frame %d"%nframes
        return 0
    while status:
        nframes = nframes + 1
        coords.append(cs.astype("f")) # to make a copy of the array
        headers.append({'frame':nframes, 'step':step, 'time':time, 'prec':prec})
        #cs = Numeric.zeros((natoms, 3), typecode="f")
        status, step,time,prec = _xtcparser.read_next_frame_xtc(cs)
          
    return coords, headers





