[apps] Remove arg parameter in Shared::Function::nameWithArgument and Shared::CartesianFunction::derivativeNameWithArgument

This commit is contained in:
Ruben Dashyan
2019-07-16 15:33:03 +02:00
committed by Léa Saviot
parent b1b309c0c4
commit b665e841ad
13 changed files with 22 additions and 23 deletions

View File

@@ -23,7 +23,7 @@ void GraphControllerHelper::reloadDerivativeInBannerViewForCursorOnFunction(Shar
constexpr size_t bufferSize = FunctionBannerDelegate::k_maxNumberOfCharacters+PrintFloat::bufferSizeForFloatsWithPrecision(Preferences::LargeNumberOfSignificantDigits);
char buffer[bufferSize];
const char * space = " ";
int numberOfChar = function->derivativeNameWithArgument(buffer, bufferSize, CartesianFunction::Symbol());
int numberOfChar = function->derivativeNameWithArgument(buffer, bufferSize);
const char * legend = "=";
assert(numberOfChar <= bufferSize);
numberOfChar += strlcpy(buffer+numberOfChar, legend, bufferSize-numberOfChar);

View File

@@ -40,7 +40,7 @@ Layout IntegralGraphController::createFunctionLayout(ExpiringPointer<Shared::Fun
constexpr size_t bufferSize = SymbolAbstract::k_maxNameSize+5; // f(x)dx
char buffer[bufferSize];
const char * dx = "dx";
int numberOfChars = function->nameWithArgument(buffer, bufferSize-strlen(dx), CartesianFunction::Symbol());
int numberOfChars = function->nameWithArgument(buffer, bufferSize-strlen(dx));
assert(numberOfChars <= bufferSize);
strlcpy(buffer+numberOfChars, dx, bufferSize-numberOfChars);
return LayoutHelper::String(buffer, strlen(buffer), KDFont::SmallFont);

View File

@@ -25,12 +25,12 @@ void IntersectionGraphController::reloadBannerView() {
const char * legend = "=";
// 'f(x)=g(x)=', keep 2 chars for '='
ExpiringPointer<CartesianFunction> f = functionStore()->modelForRecord(m_record);
int numberOfChar = f->nameWithArgument(buffer, bufferSize-2, CartesianFunction::Symbol());
int numberOfChar = f->nameWithArgument(buffer, bufferSize-2);
assert(numberOfChar <= bufferSize);
numberOfChar += strlcpy(buffer+numberOfChar, legend, bufferSize-numberOfChar);
// keep 1 char for '=';
ExpiringPointer<CartesianFunction> g = functionStore()->modelForRecord(m_intersectedRecord);
numberOfChar += g->nameWithArgument(buffer+numberOfChar, bufferSize-numberOfChar-1, CartesianFunction::Symbol());
numberOfChar += g->nameWithArgument(buffer+numberOfChar, bufferSize-numberOfChar-1);
assert(numberOfChar <= bufferSize);
numberOfChar += strlcpy(buffer+numberOfChar, legend, bufferSize-numberOfChar);
numberOfChar += PoincareHelpers::ConvertFloatToText<double>(m_cursor->y(), buffer+numberOfChar, bufferSize-numberOfChar, Poincare::Preferences::MediumNumberOfSignificantDigits);

View File

@@ -187,7 +187,7 @@ void ListController::willDisplayExpressionCellAtIndex(HighlightCell * cell, int
void ListController::setFunctionNameInTextField(ExpiringPointer<Function> function, TextField * textField) {
assert(textField != nullptr);
char bufferName[BufferTextView::k_maxNumberOfChar];
function->nameWithArgument(bufferName, BufferTextView::k_maxNumberOfChar, modelStore()->symbol());
function->nameWithArgument(bufferName, BufferTextView::k_maxNumberOfChar);
textField->setText(bufferName);
}

View File

@@ -18,7 +18,7 @@ DerivativeParameterController::DerivativeParameterController(ValuesController *
}
void DerivativeParameterController::viewWillAppear() {
functionStore()->modelForRecord(m_record)->derivativeNameWithArgument(m_pageTitle, k_maxNumberOfCharsInTitle, Shared::CartesianFunction::Symbol());
functionStore()->modelForRecord(m_record)->derivativeNameWithArgument(m_pageTitle, k_maxNumberOfCharsInTitle);
}
const char * DerivativeParameterController::title() {

View File

@@ -49,9 +49,9 @@ void ValuesController::willDisplayCellAtLocation(HighlightCell * cell, int i, in
* after the isDerivativeColumn call, else it will expire. */
Shared::ExpiringPointer<CartesianFunction> function = functionStore()->modelForRecord(recordAtColumn(i));
if (isDerivative) {
function->derivativeNameWithArgument(bufferName, bufferNameSize, CartesianFunction::Symbol());
function->derivativeNameWithArgument(bufferName, bufferNameSize);
} else {
function->nameWithArgument(bufferName, bufferNameSize, CartesianFunction::Symbol());
function->nameWithArgument(bufferName, bufferNameSize);
}
myFunctionCell->setText(bufferName);
myFunctionCell->setColor(function->color());

View File

@@ -65,10 +65,10 @@ CartesianFunction CartesianFunction::NewModel(Ion::Storage::Record::ErrorStatus
return CartesianFunction(Ion::Storage::sharedStorage()->recordBaseNamedWithExtension(baseName, Ion::Storage::funcExtension));
}
int CartesianFunction::derivativeNameWithArgument(char * buffer, size_t bufferSize, CodePoint arg) {
int CartesianFunction::derivativeNameWithArgument(char * buffer, size_t bufferSize) {
// Fill buffer with f(x). Keep size for derivative sign.
int derivativeSize = UTF8Decoder::CharSizeOfCodePoint('\'');
int numberOfChars = nameWithArgument(buffer, bufferSize - derivativeSize, arg);
int numberOfChars = nameWithArgument(buffer, bufferSize - derivativeSize);
assert(numberOfChars + derivativeSize < (int)bufferSize);
char * firstParenthesis = const_cast<char *>(UTF8Helper::CodePointSearch(buffer, '('));
if (!UTF8Helper::CodePointIs(firstParenthesis, '(')) {

View File

@@ -21,7 +21,7 @@ public:
// Derivative
bool displayDerivative() const;
void setDisplayDerivative(bool display);
int derivativeNameWithArgument(char * buffer, size_t bufferSize, CodePoint arg);
int derivativeNameWithArgument(char * buffer, size_t bufferSize);
double approximateDerivative(double x, Poincare::Context * context) const;
// Integral
double sumBetweenBounds(double start, double end, Poincare::Context * context) const override;

View File

@@ -64,14 +64,15 @@ void Function::setActive(bool active) {
recordData()->setActive(active);
}
int Function::nameWithArgument(char * buffer, size_t bufferSize, CodePoint arg) {
assert(UTF8Decoder::CharSizeOfCodePoint(arg) == 1);
int Function::nameWithArgument(char * buffer, size_t bufferSize) {
const char * functionName = fullName();
size_t baseNameLength = SymbolAbstract::TruncateExtension(buffer, functionName, bufferSize - k_parenthesedArgumentLength);
assert(baseNameLength <= bufferSize);
size_t result = baseNameLength + strlcpy(&buffer[baseNameLength], k_parenthesedArgument, bufferSize-baseNameLength);
if (baseNameLength + 1 < bufferSize) {
UTF8Decoder::CodePointToChars(arg, buffer+baseNameLength+1, bufferSize - (baseNameLength+1));
int bufferRemainingSize = bufferSize - (baseNameLength+1);
if (bufferRemainingSize > 0) {
assert(UTF8Decoder::CharSizeOfCodePoint(symbol()) == 1);
UTF8Decoder::CodePointToChars(symbol(), buffer+baseNameLength+1, bufferRemainingSize);
}
return result;
}

View File

@@ -33,7 +33,7 @@ public:
void setActive(bool active);
// Name
int nameWithArgument(char * buffer, size_t bufferSize, CodePoint arg);
int nameWithArgument(char * buffer, size_t bufferSize);
// Evaluation
virtual float evaluateAtAbscissa(float x, Poincare::Context * context) const {

View File

@@ -7,13 +7,12 @@ using namespace Poincare;
namespace Shared {
void FunctionBannerDelegate::reloadBannerViewForCursorOnFunction(CurveViewCursor * cursor, Ion::Storage::Record record, FunctionStore * functionStore) {
CodePoint symbol = functionStore->symbol();
ExpiringPointer<Function> function = functionStore->modelForRecord(record);
constexpr int bufferSize = k_maxNumberOfCharacters+PrintFloat::bufferSizeForFloatsWithPrecision(Preferences::LargeNumberOfSignificantDigits);
char buffer[bufferSize];
const char * space = " ";
int numberOfChar = 0;
buffer[numberOfChar++] = symbol;
buffer[numberOfChar++] = function->symbol();
assert(numberOfChar <= bufferSize);
strlcpy(buffer + numberOfChar, "=", bufferSize - numberOfChar);
bannerView()->abscissaSymbol()->setText(buffer);
@@ -25,7 +24,7 @@ void FunctionBannerDelegate::reloadBannerViewForCursorOnFunction(CurveViewCursor
strlcpy(buffer+numberOfChar, space, bufferSize - numberOfChar);
bannerView()->abscissaValue()->setText(buffer);
numberOfChar = function->nameWithArgument(buffer, bufferSize, symbol);
numberOfChar = function->nameWithArgument(buffer, bufferSize);
assert(numberOfChar <= bufferSize);
numberOfChar += strlcpy(buffer+numberOfChar, "=", bufferSize-numberOfChar);
numberOfChar += PoincareHelpers::ConvertFloatToText<double>(cursor->y(), buffer+numberOfChar, bufferSize-numberOfChar, precision);

View File

@@ -9,8 +9,7 @@ const char * ValuesFunctionParameterController::title() {
}
void ValuesFunctionParameterController::viewWillAppear() {
CodePoint symbol = FunctionApp::app()->functionStore()->symbol();
FunctionApp::app()->functionStore()->modelForRecord(m_record)->nameWithArgument(m_pageTitle, Function::k_maxNameWithArgumentSize, symbol);
FunctionApp::app()->functionStore()->modelForRecord(m_record)->nameWithArgument(m_pageTitle, Function::k_maxNameWithArgumentSize);
}
void ValuesFunctionParameterController::didBecomeFirstResponder() {

View File

@@ -113,8 +113,8 @@ void VariableBoxController::willDisplayCellForIndex(HighlightCell * cell, int in
CartesianFunction f(record);
symbolLength = f.nameWithArgument(
symbolName,
Shared::Function::k_maxNameWithArgumentSize,
Shared::CartesianFunction::Symbol());
Shared::Function::k_maxNameWithArgumentSize
);
}
Layout symbolLayout = LayoutHelper::String(symbolName, symbolLength);
myCell->setLayout(symbolLayout);