1 // -*- C++ -*-
2 // ACL:license
3 // ----------------------------------------------------------------------
4 // This software and ancillary information (herein called "SOFTWARE")
5 // called PETE (Portable Expression Template Engine) is
6 // made available under the terms described here.  The SOFTWARE has been
7 // approved for release with associated LA-CC Number LA-CC-99-5.
8 //
9 // Unless otherwise indicated, this SOFTWARE has been authored by an
10 // employee or employees of the University of California, operator of the
11 // Los Alamos National Laboratory under Contract No.  W-7405-ENG-36 with
12 // the U.S. Department of Energy.  The U.S. Government has rights to use,
13 // reproduce, and distribute this SOFTWARE. The public may copy, distribute,
14 // prepare derivative works and publicly display this SOFTWARE without
15 // charge, provided that this Notice and any statement of authorship are
16 // reproduced on all copies.  Neither the Government nor the University
17 // makes any warranty, express or implied, or assumes any liability or
18 // responsibility for the use of this SOFTWARE.
19 //
20 // If SOFTWARE is modified to produce derivative works, such modified
21 // SOFTWARE should be clearly marked, so as not to confuse it with the
22 // version available from LANL.
23 //
24 // For more information about PETE, send e-mail to pete@acl.lanl.gov,
25 // or visit the PETE web page at http://www.acl.lanl.gov/pete/.
26 // ----------------------------------------------------------------------
27 // ACL:license
28 
29 #ifndef PETE_PETE_PETE_H
30 #define PETE_PETE_PETE_H
31 
32 ///////////////////////////////////////////////////////////////////////////////
33 //
34 // This is the header file you should include if you want to use PETE, the
35 // Portable Expression Template Engine. You don't need add any member
36 // functions to make your container class PETE-aware, but you will need to
37 // create some traits classes and use the MakeOperator tool to create
38 // operator and math functions.
39 //
40 // See html/index.html for detailed instructions on using PETE.
41 //
42 ///////////////////////////////////////////////////////////////////////////////
43 
44 #if PETE_MAKE_EMPTY_CONSTRUCTORS
45 
46 #define PETE_EMPTY_CONSTRUCTORS(CLASS) \
47   CLASS() {}                           \
48   CLASS(const CLASS&) {}               \
49   CLASS& operator=(const CLASS&) { return *this; }
50 
51 #define PETE_EMPTY_CONSTRUCTORS_TEMPLATE(CLASS, ARG) \
52   CLASS() {}                                         \
53   CLASS(const CLASS<ARG>&) {}                        \
54   CLASS& operator=(const CLASS<ARG>&) { return *this; }
55 
56 #else
57 
58 #define PETE_EMPTY_CONSTRUCTORS(CLASS)
59 #define PETE_EMPTY_CONSTRUCTORS_TEMPLATE(CLASS, ARG)
60 
61 #endif
62 
63 #include "PETE/Scalar.h"
64 #include "PETE/TypeComputations.h"
65 #include "PETE/TreeNodes.h"
66 #include "PETE/OperatorTags.h"
67 #include "PETE/Functors.h"
68 #include "PETE/Combiners.h"
69 #include "PETE/ForEach.h"
70 #include "PETE/CreateLeaf.h"
71 
72 // Some useful PETE definitions.
73 
74 #define PETE_MAJOR_VERSION 2
75 #define PETE_MINOR_VERSION 1
76 #define PETE_PATCH_LEVEL 1
77 #define PETE_VERSION_STRING "PETE 2.1.1"
78 #define PETE_VERSION_NUM_STRING "2.1.1"
79 
80 #endif // PETE_PETE_PETE_H
81 
82 // ACL:rcsinfo
83