diff --git a/poincare/include/poincare/symbol_abstract.h b/poincare/include/poincare/symbol_abstract.h index 32812f698..2c32368f5 100644 --- a/poincare/include/poincare/symbol_abstract.h +++ b/poincare/include/poincare/symbol_abstract.h @@ -43,6 +43,8 @@ protected: class SymbolAbstract : public Expression { public: const char * name() const { return node()->name(); } + static size_t TruncateExtension(char * dst, const char * src, size_t len); + constexpr static size_t k_maxNameSize = 16; protected: SymbolAbstract(const SymbolAbstractNode * node) : Expression(node) {} SymbolAbstractNode * node() const { return static_cast(Expression::node()); } diff --git a/poincare/src/symbol_abstract.cpp b/poincare/src/symbol_abstract.cpp index f809dc1a0..8525aaa7b 100644 --- a/poincare/src/symbol_abstract.cpp +++ b/poincare/src/symbol_abstract.cpp @@ -20,4 +20,14 @@ void SymbolAbstractNode::initName(size_t nameSize) { modifiableName[nameSize-1] = 0; } +size_t SymbolAbstract::TruncateExtension(char * dst, const char * src, size_t len) { + const char * cur = src; + const char * end = src+len-1; + while (*cur != '.' && cur < end) { + *dst++ = *cur++; + } + *dst = 0; + return cur-src; +} + }