FLImaging 6.5.8.1
Expression.h
1#pragma once
2
10#include "DefinitionsMathematics.h"
11#include "Equation.h"
12
13#include <vector>
14#include <complex>
15#include <functional>
16
18namespace FLImaging
19{
21 namespace Foundation
22 {
28 class FL_EXPORT CExpression : public Base::CFLBase
29 {
30 public:
31
37
46
55
63 CExpression(const wchar_t* pWcsExpression);
64
69 virtual ~CExpression();
70
80 const CResult Clear();
81
93 const CResult Assign(const CExpression& rhs);
94
106 const CResult Assign(const CExpression* pRhs);
107
119 const CResult SetExpression(const wchar_t* pWcsExpression);
120
128 const wchar_t* GetExpression();
129
143 Base::CFLString<wchar_t> GetExpression(bool bExponentialNotation, int32_t i32CoeffPrecision);
144
156 const CResult Evaluate(wchar_t** ppWcsEvaluatorExpression = nullptr);
157
181 const CResult Solve(const wchar_t* pWcsVariable, Base::CFLArray<std::complex<double>>* pFlaResult, ECoefficientOrder eCoeffOrder = ECoefficientOrder_Ascending, EAccuracy eAccuracy = EAccuracy_Bits64);
182
208 const CResult Solve(const wchar_t* pWcsVariable, Base::CFLArray<std::complex<double>>* pFlaResult, Base::CFLArray<std::complex<double>>* pFlaDiscontinuous, ECoefficientOrder eCoeffOrder = ECoefficientOrder_Ascending, EAccuracy eAccuracy = EAccuracy_Bits64);
209
221 const CResult ExpandExpression(wchar_t** ppWcsEvaluatorExpression = nullptr);
222
234 const CResult UnrollPower(wchar_t** ppWcsEvaluatorExpression = nullptr);
235
247 const CResult CollectExpression(wchar_t** ppWcsEvaluatorExpression = nullptr);
248
257
267 int32_t GetIndexOfVariable(const wchar_t* pWcsVariableName);
268
278 int32_t GetIndexOfEvaluatedVariable(const wchar_t* pWcsVariableName);
279
293 const CResult AssignVariable(int32_t i32Index, double f64Value);
294
308 const CResult AssignVariable(const wchar_t* pWcsVariableName, double f64Value);
309
321 const CResult ResetVariable(int32_t i32Index);
322
334 const CResult ResetVariable(const wchar_t* pWcsVariableName);
335
345 double* GetVariable(int32_t i32Index);
346
356 double* GetVariable(const wchar_t* pWcsVariableName);
357
367 const double GetEvaluatedVariable(int32_t i32Index);
368
378 const double GetEvaluatedVariable(const wchar_t* pWcsVariableName);
379
380 CExpression Differentiate(const wchar_t* pWcsVariableName);
381 CExpression Differentiate();
382//
383// CExpression Integrate(const wchar_t* pWcsVariableName);
384// CExpression Integrate();
385
397 {
405 EExpressionValid_Initialized = 0,
406
415
424 };
425
436
437 const CResult GetExpression(std::function<double(double)>* pExpression);
438
439
440 SupportToDuplicateObject(CExpression, *this);
441 DeclareGetClassType();
442
443 protected:
444 wchar_t* m_pWcsExpression;
445 std::vector<std::pair<Base::CFLString<wchar_t>, double> >* m_pVctVariables;
446 std::vector<std::pair<Base::CFLString<wchar_t>, double> >* m_pVctEvaluatedVariables;
447 EExpressionValid m_eExpressionValid;
448 };
449 }
450}
451
Template type 의 배열 클래스.
Definition RangeTree.h:19
FLImaging의 최상위 기저 클래스
Definition FLBase.h:36
Template type 의 문자열 클래스
Definition INIUtilities.h:20
FLImaging 모듈의 수행 결과 객체
Definition ResultsDef.h:1514
수식을 표현하는 클래스
Definition Expression.h:29
const double GetEvaluatedVariable(const wchar_t *pWcsVariableName)
const CResult AssignVariable(const wchar_t *pWcsVariableName, double f64Value)
CExpression(const CExpression &rhs)
EExpressionValid
수식이 유효한지 표현하기 위한 열거형
Definition Expression.h:397
@ EExpressionValid_Invalid
유효하지 않은 수식
Definition Expression.h:423
@ EExpressionValid_Valid
유효한 수식
Definition Expression.h:414
CExpression(const CExpression *pRhs)
const CResult ResetVariable(int32_t i32Index)
const CResult SetExpression(const wchar_t *pWcsExpression)
const CResult ExpandExpression(wchar_t **ppWcsEvaluatorExpression=nullptr)
const CResult AssignVariable(int32_t i32Index, double f64Value)
const CResult UnrollPower(wchar_t **ppWcsEvaluatorExpression=nullptr)
EExpressionValid IsExprssionValid()
double * GetVariable(const wchar_t *pWcsVariableName)
CExpression(const wchar_t *pWcsExpression)
double * GetVariable(int32_t i32Index)
const CResult ResetVariable(const wchar_t *pWcsVariableName)
int32_t GetIndexOfVariable(const wchar_t *pWcsVariableName)
int32_t GetIndexOfEvaluatedVariable(const wchar_t *pWcsVariableName)
const CResult Solve(const wchar_t *pWcsVariable, Base::CFLArray< std::complex< double > > *pFlaResult, Base::CFLArray< std::complex< double > > *pFlaDiscontinuous, ECoefficientOrder eCoeffOrder=ECoefficientOrder_Ascending, EAccuracy eAccuracy=EAccuracy_Bits64)
const CResult Evaluate(wchar_t **ppWcsEvaluatorExpression=nullptr)
const double GetEvaluatedVariable(int32_t i32Index)
const CResult Assign(const CExpression &rhs)
const CResult CollectExpression(wchar_t **ppWcsEvaluatorExpression=nullptr)
const CResult Solve(const wchar_t *pWcsVariable, Base::CFLArray< std::complex< double > > *pFlaResult, ECoefficientOrder eCoeffOrder=ECoefficientOrder_Ascending, EAccuracy eAccuracy=EAccuracy_Bits64)
const CResult Assign(const CExpression *pRhs)
Base::CFLString< wchar_t > GetExpression(bool bExponentialNotation, int32_t i32CoeffPrecision)
ECoefficientOrder
계수의 나열 순서를 나타냅니다.
Definition DefinitionsMathematics.h:118
EAccuracy
연산 정확도
Definition DefinitionsMathematics.h:144