Clipper
container_types.h
1 
4 //C Copyright (C) 2000-2006 Kevin Cowtan and University of York
5 //L
6 //L This library is free software and is distributed under the terms
7 //L and conditions of version 2.1 of the GNU Lesser General Public
8 //L Licence (LGPL) with the following additional clause:
9 //L
10 //L `You may also combine or link a "work that uses the Library" to
11 //L produce a work containing portions of the Library, and distribute
12 //L that work under terms of your choice, provided that you give
13 //L prominent notice with each copy of the work that the specified
14 //L version of the Library is used in it, and that you include or
15 //L provide public access to the complete corresponding
16 //L machine-readable source code for the Library including whatever
17 //L changes were used in the work. (i.e. If you make changes to the
18 //L Library you must distribute those, but you do not need to
19 //L distribute source or object code to those portions of the work
20 //L not covered by this licence.)'
21 //L
22 //L Note that this clause grants an additional right and does not impose
23 //L any additional restriction, and so does not affect compatibility
24 //L with the GNU General Public Licence (GPL). If you wish to negotiate
25 //L other terms, please contact the maintainer.
26 //L
27 //L You can redistribute it and/or modify the library under the terms of
28 //L the GNU Lesser General Public License as published by the Free Software
29 //L Foundation; either version 2.1 of the License, or (at your option) any
30 //L later version.
31 //L
32 //L This library is distributed in the hope that it will be useful, but
33 //L WITHOUT ANY WARRANTY; without even the implied warranty of
34 //L MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
35 //L Lesser General Public License for more details.
36 //L
37 //L You should have received a copy of the CCP4 licence and/or GNU
38 //L Lesser General Public License along with this library; if not, write
39 //L to the CCP4 Secretary, Daresbury Laboratory, Warrington WA4 4AD, UK.
40 //L The GNU Lesser General Public can also be obtained by writing to the
41 //L Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
42 //L MA 02111-1307 USA
43 
44 
45 #ifndef CLIPPER_CONTAINER_TYPES
46 #define CLIPPER_CONTAINER_TYPES
47 
48 
49 #include "container.h"
50 
51 
52 namespace clipper
53 {
54 
55  extern const Resolution NullResolution; //<! null instance
56  extern const Spacegroup NullSpacegroup; //<! null instance
57  extern const Cell NullCell; //<! null instance
58  extern const Grid_sampling NullGrid_sampling; //<! null instance
59 
60 
62 
64  class CResolution : public Container, public Resolution
65  {
66  public:
68  CResolution( const String name = "",
69  const Resolution& resol = NullResolution ) :
70  Container( name ), Resolution( resol ) {}
73  const Resolution& resol = NullResolution ) :
74  Container( parent, name ), Resolution( resol ) {}
76  void init( const Resolution& resolution_ );
77  };
78 
79 
81 
83  class CSpacegroup : public Container, public Spacegroup
84  {
85  public:
87  CSpacegroup( const String name = "",
88  const Spacegroup& spgr = NullSpacegroup ) :
89  Container( name ), Spacegroup( spgr ) {}
92  const Spacegroup& spgr = NullSpacegroup ) :
93  Container( parent, name ), Spacegroup( spgr ) {}
95  void init( const Spacegroup& spacegroup_ );
96  };
97 
98 
100 
102  class CCell : public Container, public Cell
103  {
104  public:
106  CCell( const String name = "",
107  const Cell& cell = NullCell ) :
108  Container( name ), Cell( cell ) {}
110  CCell( Container& parent, const String name = "",
111  const Cell& cell = NullCell ) :
112  Container( parent, name ), Cell( cell ) {}
114  void init( const Cell& cell_ );
115  };
116 
117 
119 
121  class CGrid_sampling : public Container, public Grid_sampling
122  {
123  public:
125  CGrid_sampling( const String name = "",
126  const Grid_sampling& grid = NullGrid_sampling );
128  CGrid_sampling( Container& parent, const String name = "",
129  const ftype rate = 1.5 );
131  CGrid_sampling( Container& parent, const String name,
132  const Grid_sampling& grid );
134  void init( const Spacegroup& spacegroup, const Cell& cell,
135  const Resolution& resolution, const ftype rate );
137  void init( const Grid_sampling& grid_sampling_ );
139  void update();
140  private:
141  ftype rate_;
142  };
143 
144 
145 } // namespace clipper
146 
147 #endif
const Container & parent() const
get the parent of this object
Definition: container.cpp:142
void init(const Spacegroup &spacegroup, const Cell &cell, const Resolution &resolution, const ftype rate)
initialiser: from sampling rate
Definition: container_types.cpp:110
CResolution(Container &parent, const String name="", const Resolution &resol=NullResolution)
constructor: make child object
Definition: container_types.h:72
CSpacegroup(Container &parent, const String name="", const Spacegroup &spgr=NullSpacegroup)
constructor: make child object
Definition: container_types.h:91
void init(const Cell &cell_)
initialiser: from Cell
Definition: container_types.cpp:74
Resolution container.
Definition: container_types.h:64
CCell container.
Definition: container_types.h:102
CCell(Container &parent, const String name="", const Cell &cell=NullCell)
constructor: make child object
Definition: container_types.h:110
CGrid_sampling(const String name="", const Grid_sampling &grid=NullGrid_sampling)
constructor: make null object or top object in tree
Definition: container_types.cpp:84
Spacegroup container.
Definition: container_types.h:83
Resolution in angstroms.
Definition: coords.h:68
CCell(const String name="", const Cell &cell=NullCell)
constructor: make null object or top object in tree
Definition: container_types.h:106
void update()
hierarchical update
Definition: container_types.cpp:141
CResolution(const String name="", const Resolution &resol=NullResolution)
constructor: make null object or top object in tree
Definition: container_types.h:68
void init(const Spacegroup &spacegroup_)
initialiser: from Spacegroup
Definition: container_types.cpp:65
ftype64 ftype
ftype definition for floating point representation
Definition: clipper_precision.h:58
CSpacegroup(const String name="", const Spacegroup &spgr=NullSpacegroup)
constructor: make null object or top object in tree
Definition: container_types.h:87
Cell object.
Definition: cell.h:121
String name() const
get the name of this tree object
Definition: container.cpp:127
Spacegroup object.
Definition: spacegroup.h:172
String extension with simple parsing methods.
Definition: clipper_types.h:64
void init(const Resolution &resolution_)
initialiser: from Resolution
Definition: container_types.cpp:56
CGrid_sampling container.
Definition: container_types.h:121
Grid sampling of a unit cell.
Definition: coords.h:515
Definition for a generic container Object.
Definition: container.h:68