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