Skip to content

Commit 896e857

Browse files
added 'Delete' function to release the exprtk allocated memory
1 parent 4c4e669 commit 896e857

File tree

7 files changed

+21
-0
lines changed

7 files changed

+21
-0
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ import (
4444

4545
func main() {
4646
exprtkObj := exprtk.NewExprtk()
47+
defer exprtkObj.Delete()
4748

4849
exprtkObj.SetExpression("(x + 2)*(y-2)")
4950

examples/example-01.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
func example01() {
1010
// Create a new exprtk instance
1111
exprtkObj := exprtk.NewExprtk()
12+
defer exprtkObj.Delete()
1213

1314
// Set the expression
1415
exprtkObj.SetExpression("(x + 2)*(y-2)")

examples/example-02.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ func example02() {
1919
var array []float64 = []float64{1, 2, 3, -4.3, 10, -6.5, 7, 8, -1.3}
2020

2121
exprtkObj := exprtk.NewExprtk()
22+
defer exprtkObj.Delete()
23+
2224
exprtkObj.SetExpression(eqn)
2325
exprtkObj.AddStringVariable("eqn")
2426
exprtkObj.AddVectorVariable("x")

exprtk.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,3 +74,8 @@ func (obj GoExprtk) CompileExpression() error {
7474
func (obj GoExprtk) GetEvaluatedValue() float64 {
7575
return float64(C.getEvaluatedValue(obj.exprtk))
7676
}
77+
78+
// Delete ... Destroys the created object and releases the memory
79+
func (obj GoExprtk) Delete() {
80+
C.deleteExprtk(obj.exprtk)
81+
}

exprtk_test.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99

1010
func TestNewExprtk(t *testing.T) {
1111
exprtkObj := NewExprtk()
12+
defer exprtkObj.Delete()
1213

1314
if reflect.TypeOf(exprtkObj).String() != "exprtk.GoExprtk" {
1415
t.Error("NewExprtk returned incorrect type")
@@ -17,6 +18,7 @@ func TestNewExprtk(t *testing.T) {
1718

1819
func TestCompileExpression(t *testing.T) {
1920
exprtkObj := NewExprtk()
21+
defer exprtkObj.Delete()
2022

2123
exprtkObj.SetExpression("x.1 + y.1")
2224

@@ -41,6 +43,7 @@ func TestCompileExpression(t *testing.T) {
4143

4244
func TestDoubleVariables(t *testing.T) {
4345
exprtkObj := NewExprtk()
46+
defer exprtkObj.Delete()
4447

4548
exprtkObj.SetExpression("(x + 2)*(y-2)")
4649

@@ -74,6 +77,8 @@ func TestMixedVariables(t *testing.T) {
7477
var array []float64 = []float64{1, 2, 3, -4.3, 10, -6.5, 7, 8, -1.3}
7578

7679
exprtkObj := NewExprtk()
80+
defer exprtkObj.Delete()
81+
7782
exprtkObj.SetExpression(eqn)
7883
exprtkObj.AddStringVariable("eqn")
7984
exprtkObj.AddVectorVariable("x")

exprtkwrapper.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,4 +139,9 @@ void addVectorVariable(exprtkWrapper obj, char* var)
139139
v->value.push_back(double(0));
140140
exprtkStruct->vectorValue.push_back(v);
141141
exprtkStruct->symbolTable.add_vector(v->varName,v->value);
142+
}
143+
144+
void deleteExprtk(exprtkWrapper obj)
145+
{
146+
delete (ExprtkStruct*)obj;
142147
}

exprtkwrapper.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ void setVectorVariableValue(exprtkWrapper, char* var, double val[], int len);
2929

3030
double getEvaluatedValue(exprtkWrapper);
3131

32+
void deleteExprtk(exprtkWrapper);
33+
3234

3335
#ifdef __cplusplus
3436
}

0 commit comments

Comments
 (0)