QDP++
PETE.h
Go to the documentation of this file.
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
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//
43
44#if defined(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"
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// ----------------------------------------------------------------------
84// $RCSfile: PETE.h,v $ $Author: edwards $
85// $Revision: 1.2 $ $Date: 2002-11-23 02:09:01 $
86// ----------------------------------------------------------------------
87// ACL:rcsinfo
88