This file is indexed.

/usr/include/trilinos/RTC_OperatorRTC.hh is in libtrilinos-pamgen-dev 12.4.2-2.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
#ifndef _OPERATORRTC_H
#define _OPERATORRTC_H

#include "RTC_commonRTC.hh"
#include "RTC_ObjectRTC.hh"
#include "RTC_ScalarNumberRTC.hh"

#include <string>
#include <map>
#include <cassert>


namespace PG_RuntimeCompiler {

/**
 * A Operator object represnts the operators in the code the user gives us. 
 */

class Value;

class Operator: public Object
{
 public:

  /**
   * Constructor -> Trivial
   *
   * @param op - An enum specifying which operator this is
   */
  Operator(const std::string& name, bool isUnary, 
           int precedence, bool isLeftAssoc);

  /**
   * Destructor -> The destructor is a no-op
   */  
  virtual ~Operator() {}

  /**
   * getName() -> This method returns the string name of the 
   *              Operator(ex: "Add","Subtract",...)
   */  
  std::string getName() const { return _name;}

  int getPrecedence() const {return _precedence;}
  
  bool isLeftAssociative() const {return _leftAssociative;}

  /**
   * doBinaryOp -> This method performs an operation on arg1 and arg2 and 
   *               stores the result in store.
   * 
   * @param arg1  - The first  argument to the operation
   * @param arg2  - The second argument to the operation
   * @param store - The memory where the result is stored
   */ 
  virtual void performOp(Value* arg1, Value* arg2, 
                         ScalarNumber<double>& store) = 0;

  virtual void performOp(Value* arg, ScalarNumber<double>& store) = 0;

  std::ostream& operator<<(std::ostream& os) const;
  
  bool isUnary() const {return _isUnary;}

  static Operator* getOp(const std::string& name);
  
  static void init();
 protected:
  
  bool        _isUnary;
  std::string _name; //!< A string representation of the operator
  int         _precedence;
  bool        _leftAssociative;

 private:
  static std::map<std::string, Operator*> OPERATORS;
  static bool ISINIT;
};

class AddO : public Operator 
{
 public:
  AddO() : Operator("+", false, 6, true) {}

  void performOp(Value* arg1, Value* arg2, ScalarNumber<double>& store);
  void performOp(Value* arg, ScalarNumber<double>& store) {assert(0);}
};

class SubtractO : public Operator 
{
 public:
  SubtractO() : Operator("-", false, 6, true) {}

  void performOp(Value* arg1, Value* arg2, ScalarNumber<double>& store);
  void performOp(Value* arg, ScalarNumber<double>& store) {assert(0);}
};

class MultiplyO : public Operator 
{
 public:
  MultiplyO() : Operator("*", false, 7, true) {}

  void performOp(Value* arg1, Value* arg2, ScalarNumber<double>& store);
  void performOp(Value* arg, ScalarNumber<double>& store) {assert(0);}
};

class DivideO : public Operator 
{
 public:
  DivideO() : Operator("/", false, 7, true) {}

  void performOp(Value* arg1, Value* arg2, ScalarNumber<double>& store);
  void performOp(Value* arg, ScalarNumber<double>& store) {assert(0);}
};

class EqualityO : public Operator 
{
 public:
  EqualityO() : Operator("==", false, 3, true) {}

  void performOp(Value* arg1, Value* arg2, ScalarNumber<double>& store);
  void performOp(Value* arg, ScalarNumber<double>& store) {assert(0);}
};

class GreaterO : public Operator 
{
 public:
  GreaterO() : Operator(">", false, 4, true) {}

  void performOp(Value* arg1, Value* arg2, ScalarNumber<double>& store);
  void performOp(Value* arg, ScalarNumber<double>& store) {assert(0);}
};

class LessO : public Operator 
{
 public:
  LessO() : Operator("<", false, 4, true) {}

  void performOp(Value* arg1, Value* arg2, ScalarNumber<double>& store);
  void performOp(Value* arg, ScalarNumber<double>& store) {assert(0);}
};

class GreaterEqualO : public Operator 
{
 public:
  GreaterEqualO() : Operator(">=", false, 4, true) {}

  void performOp(Value* arg1, Value* arg2, ScalarNumber<double>& store);
  void performOp(Value* arg, ScalarNumber<double>& store) {assert(0);}
};

class LessEqualO : public Operator 
{
 public:
  LessEqualO() : Operator("<=", false, 4, true) {}

  void performOp(Value* arg1, Value* arg2, ScalarNumber<double>& store);
  void performOp(Value* arg, ScalarNumber<double>& store) {assert(0);}
};

class AssignmentO : public Operator 
{
 public:
  AssignmentO() : Operator("=", false, 0, false) {}

  void performOp(Value* arg1, Value* arg2, ScalarNumber<double>& store);
  void performOp(Value* arg, ScalarNumber<double>& store) {assert(0);}
};

class LogicOrO : public Operator 
{
 public:
  LogicOrO() : Operator("||", false, 1, true) {}

  void performOp(Value* arg1, Value* arg2, ScalarNumber<double>& store);
  void performOp(Value* arg, ScalarNumber<double>& store) {assert(0);}
};

class LogicAndO : public Operator 
{
 public:
  LogicAndO() : Operator("&&", false, 2, true) {}

  void performOp(Value* arg1, Value* arg2, ScalarNumber<double>& store);
  void performOp(Value* arg, ScalarNumber<double>& store) {assert(0);}
};

class InEqualityO : public Operator 
{
 public:
  InEqualityO() : Operator("!=", false, 3, true) {}

  void performOp(Value* arg1, Value* arg2, ScalarNumber<double>& store);
  void performOp(Value* arg, ScalarNumber<double>& store) {assert(0);}
};

class ModuloO : public Operator 
{
 public:
  ModuloO() : Operator("%", false, 7, true) {}

  void performOp(Value* arg1, Value* arg2, ScalarNumber<double>& store);
  void performOp(Value* arg, ScalarNumber<double>& store) {assert(0);}
};

class ExponentO : public Operator 
{
 public:
  ExponentO() : Operator("^", false, 8, false) {}

  void performOp(Value* arg1, Value* arg2, ScalarNumber<double>& store);
  void performOp(Value* arg, ScalarNumber<double>& store) {assert(0);}
};

//Important - OpenParen, CloseParen, and ArrayInit are structural operators,
//not arithmetic operators, therefore they cannot be performed.
class OpenParenO : public Operator 
{
 public:
  OpenParenO() : Operator("(", false, 0, true) {}

  void performOp(Value* arg1, Value* arg2, ScalarNumber<double>& store) {assert(0);}
  void performOp(Value* arg, ScalarNumber<double>& store) {assert(0);}
};

class CloseParenO : public Operator 
{
 public:
  CloseParenO() : Operator(")", false, 0, true) {}

  void performOp(Value* arg1, Value* arg2, ScalarNumber<double>& store){assert(0);}
  void performOp(Value* arg, ScalarNumber<double>& store) {assert(0);}
};

class ArrayInitO : public Operator
{
 public:
  ArrayInitO() : Operator("init", false, 0, true) {}

  void performOp(Value* arg1, Value* arg2, ScalarNumber<double>& store){assert(0);}
  void performOp(Value* arg, ScalarNumber<double>& store) {assert(0);}
};

class NegationO : public Operator 
{
 public:
  NegationO() : Operator("_", true, 11, false) {}

  void performOp(Value* arg1, Value* arg2, ScalarNumber<double>& store) {assert(0);}
  void performOp(Value* arg, ScalarNumber<double>& store);
};

class LogicNotO : public Operator 
{
 public:
  LogicNotO() : Operator("!", true, 11, false) {}

  void performOp(Value* arg1, Value* arg2, ScalarNumber<double>& store) {assert(0);}
  void performOp(Value* arg, ScalarNumber<double>& store);
};

}

#endif