Files
pymol-open-source/layer1/Shaker.h
Thomas Holder 4f50d7568a eliminate pymol::vla non-const legacy VLA cast
Avoid assignment of pymol::vla<T> return values to T*.

Refactoring to facilitate this:
- const-correctness (const T* cast still works)
- .data()
- T* -> pymol::vla<T> function arguments
2019-09-23 15:56:55 +02:00

119 lines
3.3 KiB
C

/*
A* -------------------------------------------------------------------
B* This file contains source code for the PyMOL computer program
C* copyright 1998-2000 by Warren Lyford Delano of DeLano Scientific.
D* -------------------------------------------------------------------
E* It is unlawful to modify or remove this copyright notice.
F* -------------------------------------------------------------------
G* Please see the accompanying LICENSE file for further information.
H* -------------------------------------------------------------------
I* Additional authors of this source file include:
-*
-*
-*
Z* -------------------------------------------------------------------
*/
#ifndef _H_Shaker
#define _H_Shaker
#include "vla.h"
#define cShakerDistBond 0
#define cShakerDistAngle 1
#define cShakerDistLimit 2
#define cShakerDistMinim 3
#define cShakerDistMaxim 4
typedef struct {
int at0, at1;
int type;
float targ, targ2, weight;
} ShakerDistCon;
#define cShakerTorsAlkane 1
#define cShakerTors
typedef struct {
int at0, at1, at2, at3;
int type;
} ShakerTorsCon;
#define cShakerTorsSP3SP3 1
#define cShakerTorsDisulfide 2
#define cShakerTorsAmide 3
#define cShakerTorsFlat 4
typedef struct {
int at0, at1, at2, at3;
float targ1, targ2;
} ShakerPyraCon;
typedef struct {
int at0, at1, at2, at3, fixed;
float target;
} ShakerPlanCon;
typedef struct {
int at0, at1, at2;
} ShakerLineCon;
struct CShaker {
PyMOLGlobals *G;
pymol::vla<ShakerDistCon> DistCon;
int NDistCon;
pymol::vla<ShakerPyraCon> PyraCon;
int NPyraCon;
pymol::vla<ShakerPlanCon> PlanCon;
int NPlanCon;
pymol::vla<ShakerLineCon> LineCon;
int NLineCon;
pymol::vla<ShakerTorsCon> TorsCon;
int NTorsCon;
CShaker(PyMOLGlobals * G);
};
void ShakerReset(CShaker * I);
void ShakerAddDistCon(CShaker * I, int atom0, int atom1, float dist, int type,
float weight);
void ShakerAddTorsCon(CShaker * I, int atom0, int atom1, int atom2, int atom3, int type);
void ShakerAddPyraCon(CShaker * I, int atom0, int atom1, int atom2, int atom3,
float targ1, float targ2);
void ShakerAddPlanCon(CShaker * I, int atom0, int atom1, int atom2, int atom3,
float target, int fixed);
void ShakerAddLineCon(CShaker * I, int atom0, int atom1, int atom2);
float ShakerGetPyra(float *targ2,
const float *v0, const float *v1, const float *v2, const float *v3);
/* the following fn's have been inlined in Sculpt.c
float ShakerDoDist(float target,float *v0,float *v1,float *d0to1,float *d1to0,float wt);
float ShakerDoTors(int type, float *v0,float *v1,float *v2,float *v3,
float *p0,float *p1,float *p2,float *p3,float wt);
float ShakerDoDistLimit(float target,float *v0,float *v1,float *d0to1,float *d1to0,float wt);
*/
float ShakerDoPyra(float targ1, float targ2,
const float *v0, const float *v1, const float *v2, const float *v3,
float *p0, float *p1, float *p2, float *p3, float wt, float inv_wt);
float ShakerDoLine(const float *v0, const float *v1, const float *v2,
float *p0, float *p1, float *p2, float wt);
float ShakerDoPlan(
const float *v0,
const float *v1,
const float *v2,
const float *v3,
float *p0, float *p1, float *p2, float *p3,
float target, int fixed, float wt);
#endif