static PyObject *ObjectCallbackAllStatesAsPyObject(ObjectCallback * I) { int a; PyObject *result = NULL; PyObject *list = PyList_New(I->NState); for(a = 0; a < I->NState; a++) { PyList_SetItem(list, a, ObjectCallbackStateAsPyObject(I->State + a)); } // pickle the list to a string result = PConvPickleDumps(list); Py_XDECREF(list); if(PyErr_Occurred()) { PyErr_Print(); PRINTFB(I->Obj.G, FB_ObjectCallback, FB_Warnings) " Warning: callable needs to be picklable for session storage\n" ENDFB(I->Obj.G); } return result; }
static int ObjectCallbackAllStatesFromPyObject(ObjectCallback * I, PyObject * obj) { int result = false; PyObject *list = NULL; if(PyList_Check(obj)) { list = obj; Py_INCREF(list); } else { // unpickle list from string ok_assert(1, list = PConvPickleLoads(obj)); ok_assert(1, PyList_Check(list)); } I->NState = PyList_Size(list); VLACheck(I->State, ObjectCallbackState, I->NState); for(int a = 0; a < I->NState; a++) { PyObject *val = PyList_GetItem(list, a); ObjectCallbackStateFromPyObject(I->Obj.G, I->State + a, val); } result = true; ok_except1: if(PyErr_Occurred()) { PyErr_Print(); PRINTFB(I->Obj.G, FB_ObjectCallback, FB_Warnings) " Warning: could not load callback object\n" ENDFB(I->Obj.G); } Py_XDECREF(list); return result; }
int RawReadSkip(CRaw * I) { PyMOLGlobals *G = I->G; int result = false; switch (I->mode) { case cRaw_file_stream: if(I->f) { if(!feof(I->f)) { if(fread((char *) I->header, cRaw_header_size, 1, I->f) != 1) { PRINTFB(G, FB_Raw, FB_Errors) "Error-Raw: Error reading header.\n" ENDFB(G); } else { if(I->swap) { swap_bytes(I->header); swap_bytes(I->header + 1); swap_bytes(I->header + 2); swap_bytes(I->header + 3); } fseek(I->f, I->header[0], SEEK_CUR); result = true; } } } break; } return (result); }
CRaw *RawOpenAppend(PyMOLGlobals * G, char *fname) { int target = 0x04030201; int ok = true; OOAlloc(G, CRaw); I->bufVLA = NULL; I->G = G; I->f = fopen(fname, "wba"); if(!I->f) { ok = false; } else { if(!ftell(I->f)) /* write magic if this is a new file */ fwrite(&target, 4, 1, I->f); } if(!ok) { if(I->f) fclose(I->f); OOFreeP(I); PRINTFB(G, FB_Raw, FB_Errors) "Error-RawOpenAppend: Unable to open '%s'.\n", fname ENDFB(G); } else { I->mode = cRaw_file_stream; } return (I); }
ObjectMap *PlugIOManagerLoadVol(PyMOLGlobals * G, ObjectMap * obj, char *fname, int state, int quiet, char *plugin_type) { PRINTFB(G, FB_ObjectMolecule, FB_Errors) " ObjectMap-Error: sorry, VMD Molfile Plugins not compiled into this build.\n" ENDFB(G); return NULL; }
CRaw *RawOpenRead(PyMOLGlobals * G, char *fname) { int target = 0x04030201; int reverse = 0x01020304; int actual; int ok = true; OOAlloc(G, CRaw); I->bufVLA = NULL; I->G = G; I->f = fopen(fname, "rb"); if(!I->f) { ok = false; } else { if(feof(I->f)) ok = false; else if(fread(&actual, 4, 1, I->f) != 1) ok = false; else if(actual == target) I->swap = false; else if(actual == reverse) I->swap = true; else { PRINTFB(G, FB_Raw, FB_Errors) "Error-RawOpenRead: Unrecognized byte ordering. This may not a PyMOL file.\n" ENDFB(G); ok = false; } } if(!ok) { if(I->f) fclose(I->f); OOFreeP(I); PRINTFB(G, FB_Raw, FB_Errors) "Error-RawOpenRead: Unable to open '%s'.\n", fname ENDFB(G); } else { I->mode = cRaw_file_stream; } return (I); }
int PlugIOManagerLoadTraj(PyMOLGlobals * G, ObjectMolecule * obj, char *fname, int frame, int interval, int average, int start, int stop, int max, char *sele, int image, float *shift, int quiet, char *plugin_type) { PRINTFB(G, FB_ObjectMolecule, FB_Errors) " ObjectMolecule-Error: sorry, VMD Molfile Plugins not compiled into this build.\n" ENDFB(G); return 0; }
char *RawRead(CRaw * I, int *type, unsigned int *size, int *serial) { PyMOLGlobals *G = I->G; char *result = NULL; switch (I->mode) { case cRaw_file_stream: if(I->f) { if(!feof(I->f)) { if(fread((char *) I->header, cRaw_header_size, 1, I->f) != 1) { PRINTFB(G, FB_Raw, FB_Errors) "Error-Raw: Error reading header.\n" ENDFB(G); } else { if(I->swap) { swap_bytes(I->header); swap_bytes(I->header + 1); swap_bytes(I->header + 2); swap_bytes(I->header + 3); } VLACheck(I->bufVLA, char, I->header[0]); if(fread(I->bufVLA, I->header[0], 1, I->f) == 1) { result = I->bufVLA; *size = I->header[0]; *type = I->header[1]; /* record type */ *serial = I->header[3]; } else { PRINTFB(G, FB_Raw, FB_Errors) "Error-RawRead: Data read error.\n" ENDFB(G); } } } else { *type = cRaw_EOF; } } break; }