Skip to content

Commit 116b3b3

Browse files
first commit
0 parents  commit 116b3b3

File tree

6 files changed

+34858
-0
lines changed

6 files changed

+34858
-0
lines changed

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
<p align="center">
2+
<h1 align="center"> Go Mathematical Expression Toolkit </h1>
3+
</p>

exprtk.go

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
package exprtk
2+
3+
// #cgo CXXFLAGS: -std=c++11
4+
// #cgo LDFLAGS: -L.
5+
// #include "exprtkwrapper.h"
6+
import "C"
7+
import "fmt"
8+
9+
// GoExprtk ...Exprtk Structure
10+
type GoExprtk struct {
11+
exprtk C.exprtkWrapper
12+
}
13+
14+
// NewExprtk ... Creates a new object
15+
func NewExprtk() GoExprtk {
16+
var obj GoExprtk
17+
obj.exprtk = C.exprtkWrapperInit()
18+
return obj
19+
}
20+
21+
// SetExpression ... Sets an Expression
22+
func (obj GoExprtk) SetExpression(expr string) {
23+
C.setExpressionString(obj.exprtk, C.CString(expr))
24+
}
25+
26+
// AddDoubleVariable ... Adds variable to the expression
27+
func (obj GoExprtk) AddDoubleVariable(x string) {
28+
C.addDoubleVariable(obj.exprtk, C.CString(x))
29+
}
30+
31+
// AddStringVariable ... Adds variable to the expression
32+
func (obj GoExprtk) AddStringVariable(x string) {
33+
C.addStringVariable(obj.exprtk, C.CString(x))
34+
}
35+
36+
// AddVectorVariable ... Adds variable to the expression
37+
func (obj GoExprtk) AddVectorVariable(x string) {
38+
C.addVectorVariable(obj.exprtk, C.CString(x))
39+
}
40+
41+
// SetDoubleVariableValue ... Sets value to the variable
42+
func (obj GoExprtk) SetDoubleVariableValue(varName string, val float64) {
43+
C.setDoubleVariableValue(obj.exprtk, C.CString(varName), C.double(val))
44+
}
45+
46+
// SetStringVariableValue ... Sets value to the variable
47+
func (obj GoExprtk) SetStringVariableValue(varName string, val string) {
48+
C.setStringVariableValue(obj.exprtk, C.CString(varName), C.CString(val))
49+
}
50+
51+
// SetVectorVariableValue ... Sets value to the variable
52+
func (obj GoExprtk) SetVectorVariableValue(varName string, val []float64) {
53+
arr := make([]C.double, 0)
54+
for i := 0; i < len(val); i++ {
55+
arr = append(arr, C.double(val[i]))
56+
}
57+
firstValue := &(arr[0])
58+
var arrayLength C.int = C.int(len(arr))
59+
C.setVectorVariableValue(obj.exprtk, C.CString(varName), firstValue, arrayLength)
60+
}
61+
62+
// CompileExpression ... Compiles the Expression
63+
func (obj GoExprtk) CompileExpression() {
64+
value := C.compileExpression(obj.exprtk)
65+
if value == 0 {
66+
fmt.Println("Equation didn't compile")
67+
} else {
68+
fmt.Println("Equation Compiled")
69+
}
70+
}
71+
72+
// GetEvaluatedValue ... Returns the evaluated value
73+
func (obj GoExprtk) GetEvaluatedValue() float64 {
74+
return float64(C.getEvaluatedValue(obj.exprtk))
75+
}

0 commit comments

Comments
 (0)