Code Examples
A repository of 155 code examples for BeepBeep
TriangleArea.java
1 package customprocessors;
2 
3 import ca.uqac.lif.cep.Context;
4 import ca.uqac.lif.cep.EventTracker;
5 import ca.uqac.lif.cep.functions.Function;
6 import java.util.Set;
7 
8 public class TriangleArea extends Function
9 {
10  public TriangleArea()
11  {
12  super();
13  }
14 
15  @Override
16  public void evaluate(Object[] inputs, Object[] outputs, Context con, EventTracker et)
17  {
18  float a = ((Number) inputs[0]).floatValue();
19  float b = ((Number) inputs[1]).floatValue();
20  float c = ((Number) inputs[2]).floatValue();
21  float s = (a + b + c) / 2f;
22  outputs[0] = Math.sqrt(s * (s-a) * (s-b) * (s-c));
23  }
24 
25  @Override
26  public boolean evaluatePartial(Object[] inputs,
27  Object[] outputs, Context c)
28  {
29  if (inputs[0] != null && ((Number) inputs[0]).floatValue() == 0)
30  {
31  outputs[0] = 0;
32  return true;
33  }
34  if (inputs[1] != null && ((Number) inputs[1]).floatValue() == 0)
35  {
36  outputs[0] = 0;
37  return true;
38  }
39  if (inputs[2] != null && ((Number) inputs[2]).floatValue() == 0)
40  {
41  outputs[0] = 0;
42  return true;
43  }
44  if (inputs[0] != null && inputs[1] != null && inputs[2] != null)
45  {
46  evaluate(inputs, outputs);
47  return true;
48  }
49  outputs[0] = null;
50  return false;
51  }
52 
53  @Override
54  public int getInputArity()
55  {
56  return 3;
57  }
58 
59  @Override
60  public int getOutputArity()
61  {
62  return 1;
63  }
64 
65  @Override
66  public void getInputTypesFor(Set<Class<?>> classes, int index)
67  {
68  classes.add(Number.class);
69  }
70 
71  @Override
72  public Class<?> getOutputTypeFor(int index)
73  {
74  return Number.class;
75  }
76 
77  @Override
78  public Function duplicate(boolean with_state)
79  {
80  return new TriangleArea();
81  }
82 
83  public static void main(String[] args)
84  {
85  ///
86  TriangleArea ta = new TriangleArea();
87  Object[] out = new Object[1];
88  boolean b;
89  b = ta.evaluatePartial(new Object[] {3, 4, 5}, out, null);
90  System.out.println("b: " + b + ", " + out[0]);
91  b = ta.evaluatePartial(new Object[] {3, null, 5}, out, null);
92  System.out.println("b: " + b + ", " + out[0]);
93  b = ta.evaluatePartial(new Object[] {3, null, 0}, out, null);
94  System.out.println("b: " + b + ", " + out[0]);
95  ///
96  }
97 }