Skip to content

Commit 7755355

Browse files
committed
Variable to number code now working(still haven't reapplied the operations code etc)
1 parent 694d5ec commit 7755355

3 files changed

Lines changed: 39 additions & 18 deletions

File tree

ExprFormulaTester/ExprFormulaTester.cpp

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -260,24 +260,21 @@ int main()
260260
tsl::ordered_map<std::string, MediumDec> ValueDefinitions;
261261
ValueDefinitions.insert_or_assign("x", MediumDec::One);
262262

263-
//tsl::ordered_map<std::string, MediumDec&> RefDefinitions;
264-
//MediumDec XReference = MediumDec::One;
265-
//RefDefinitions.insert_or_assign("x", XReference);
266-
//rootTest = AltFormTest.EvalValueRefs(RefDefinitions);
267-
//std::cout << AltFormTest.ToString() << " = " << rootTest.ToString()<< std::endl;
268-
269-
//
270-
271263
std::cout << "(MediumDecFormula) "<< AltFormTest.ToString() <<std::endl;
272-
//AltFormTest = AltFormTest.SimplifyFormula(ValueDefinitions);
273-
//std::cout << " = " << AltFormTest.ToString() << std::endl;
264+
AltFormTest = AltFormTest.SimplifyFormula(ValueDefinitions);
265+
std::cout << " = " << AltFormTest.ToString() << std::endl;
274266
//AltFormTest = "5.5^(1.5+x)+6x";
275267
//std::cout << "(MediumDecFormula) " << AltFormTest.ToString() << " = " << rootTest.ToString() << std::endl;
276268
//AltFormTest = "5+(5/4)";
277269
//std::cout << "(MediumDecFormula) " << AltFormTest.ToString() << " = " << rootTest.ToString() << std::endl;
278270
//AltFormTest = "(4/3)/2";
279271
//std::cout << "(MediumDecFormula) " << AltFormTest.ToString() << " = " << rootTest.ToString() << std::endl;
280272

273+
//tsl::ordered_map<std::string, MediumDec&> RefDefinitions;
274+
//MediumDec XReference = MediumDec::One;
275+
//RefDefinitions.insert_or_assign("x", XReference);
276+
//rootTest = AltFormTest.EvalValueRefs(RefDefinitions);
277+
//std::cout << AltFormTest.ToString() << " = " << rootTest.ToString()<< std::endl;
281278

282279
//DoubleFormula DoubleFormTest = "5.5+(5.5+2)";
283280
//std::cout << "(DoubleFormula) " << DoubleFormTest.ToString() << std::endl;

GlobalCode/Databases/MediumDecFormula.hpp

Lines changed: 29 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
#include "VariableFormula.hpp"
88
#include "..\AltNum\MediumDec.hpp"
99
#include "ElementType.hpp"
10+
#include "tsl\ordered_map.h"
1011

1112
//Preprocessor Switches
1213
/*
@@ -46,16 +47,40 @@ namespace BlazesRusCode
4647
{
4748
std::string CurString;
4849
MediumDec targetResult;
49-
for (FormData::iterator CurrentVal = Data.at(FormIndex).begin(), LastVal = Data.at(FormIndex).end(); CurrentVal != LastVal; ++CurrentVal)
50+
FormData& FormDRef = Data.at(FormIndex);
51+
for (FormData::iterator CurrentVal = FormDRef.begin(), LastVal = FormDRef.end(); CurrentVal != LastVal; ++CurrentVal)
5052
{
5153
if (CurrentVal->second.ElementCat == FormulaElementType::Formula)//FormulaDetected
5254
{
5355
SwapUpdatedFormData(ElementValues, CurrentVal->second.Index);
54-
//if(Data.at(FormIndex).size() == 1)
55-
// ReplaceFormVal(CurrentVal->first, targetResult);
56+
//if (Data.at(FormIndex).size() == 1)
57+
//{
58+
// FormData& ContainedFormulaElement = Data.at(CurrentVal->first);
59+
// auto FirstElement = ContainedFormulaElement.front();
60+
// /*
61+
// if(ContainedFormulaElement.ElementCat == FormulaElementType::Num)
62+
// {
63+
// }
64+
// */
65+
// //targetResult = ContainedFormulaElement.;
66+
// //FormDRef.ReplaceFormVal(CurrentVal->first, targetResult);
67+
//}
5668
}
5769
else if (CurrentVal->second.ElementCat == FormulaElementType::Variable)//Swap Variable with values
58-
Data.at(FormIndex).ReplaceFormVal(CurrentVal->first, ElementValues.at(CurString));
70+
{
71+
CurString = FormDRef.VariableMap.at(CurrentVal->first).Name;
72+
tsl::ordered_map<std::string, MediumDec>::iterator KeyedElemVal = ElementValues.find(CurString);
73+
if(KeyedElemVal!= ElementValues.end())//Only attempt to replace variable if matching variable is found
74+
{
75+
FormDRef.at(CurrentVal->first).ElementCat = FormulaElementType::Num;
76+
targetResult = KeyedElemVal.value();
77+
FormDRef.NumMap.insert_or_assign(CurrentVal->first, targetResult);//ElementValues.at(CurString));
78+
}
79+
else
80+
{
81+
std::cout << "Failed to replace variable named " << CurString << " with value data" << std::endl;
82+
}
83+
}
5984
}
6085
}
6186

GlobalCode/Databases/VariableFormula.hpp

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ namespace BlazesRusCode
161161
/// <summary>
162162
/// The map that stores the Variable Names and potential pointers to the referenced variable
163163
/// </summary>
164-
ParallelIntVariable VariableMap;
164+
ParallelIntVariable VariableMap;//To-Do later place since map of this inside main formula code
165165

166166
/// <summary>
167167
/// The variable storage map with Variable Name linked to related Index(shortcut)
@@ -229,14 +229,13 @@ namespace BlazesRusCode
229229
}
230230

231231
/// <summary>
232-
/// Replaces the non-number based form value (and add to number map).
232+
/// Replaces the non-(number/Variable-Storage) based form value (and add to number map).
233233
/// </summary>
234234
/// <param name="Key">The key.</param>
235235
/// <param name="Value">The value.</param>
236236
void ReplaceFormVal(int Key, VarType Value)
237237
{
238-
FormElement& KeyedVal = this->at(Key);
239-
KeyedVal.ElementCat = FormulaElementType::Num;
238+
this->at(Key).ElementCat = FormulaElementType::Num;
240239
NumMap.insert_or_assign(Key, Value);
241240
}
242241

0 commit comments

Comments
 (0)