Skip to content

Commit

Permalink
token: use alias for pointers
Browse files Browse the repository at this point in the history
in preparation for changing token pointers to shared pointers, the alias
TokenPtr was added for all Token*; arguments of functions with token
pointers that did not modify the token were changed to a constant
reference (when changed to shared pointers, this will prevent
unnecessary copying of shared pointers); and token pointer
initializations and checks with NULL were changed to nullptr
  • Loading branch information
thunder422 committed Sep 12, 2014
1 parent ca85a25 commit 233a8f4
Show file tree
Hide file tree
Showing 22 changed files with 204 additions and 194 deletions.
16 changes: 8 additions & 8 deletions basic/basic.cpp
Expand Up @@ -30,7 +30,7 @@

// REM FUNCTIONS

quint16 remEncode(ProgramModel *programUnit, Token *token)
quint16 remEncode(ProgramModel *programUnit, const TokenPtr &token)
{
return programUnit->remDictionary()->add(token, Qt::CaseSensitive);
}
Expand Down Expand Up @@ -60,13 +60,13 @@ void ConstNumInfo::addElement(void)
m_valueInt.resize(m_valueInt.size() + 1);
}

void ConstNumInfo::setElement(int index, Token *token)
void ConstNumInfo::setElement(int index, const TokenPtr &token)
{
m_value[index] = token->value();
m_valueInt[index] = token->valueInt();
}

quint16 constNumEncode(ProgramModel *programUnit, Token *token)
quint16 constNumEncode(ProgramModel *programUnit, const TokenPtr &token)
{
return programUnit->constNumDictionary()->add(token);
}
Expand All @@ -93,7 +93,7 @@ void ConstStrInfo::addElement(void)
m_value.append(new QString);
}

void ConstStrInfo::setElement(int index, Token *token)
void ConstStrInfo::setElement(int index, const TokenPtr &token)
{
*m_value[index] = token->string();
}
Expand All @@ -112,7 +112,7 @@ ConstStrInfo::~ConstStrInfo(void)
}


quint16 constStrEncode(ProgramModel *programUnit, Token *token)
quint16 constStrEncode(ProgramModel *programUnit, const TokenPtr &token)
{
return programUnit->constStrDictionary()->add(token, Qt::CaseSensitive);
}
Expand All @@ -139,17 +139,17 @@ void constStrRecreate(Recreator &recreator, RpnItemPtr &rpnItem)

// VARIABLE FUNCTIONS

quint16 varDblEncode(ProgramModel *programUnit, Token *token)
quint16 varDblEncode(ProgramModel *programUnit, const TokenPtr &token)
{
return programUnit->varDblDictionary()->add(token);
}

quint16 varIntEncode(ProgramModel *programUnit, Token *token)
quint16 varIntEncode(ProgramModel *programUnit, const TokenPtr &token)
{
return programUnit->varIntDictionary()->add(token);
}

quint16 varStrEncode(ProgramModel *programUnit, Token *token)
quint16 varStrEncode(ProgramModel *programUnit, const TokenPtr &token)
{
return programUnit->varStrDictionary()->add(token);
}
Expand Down
28 changes: 14 additions & 14 deletions basic/basic.h
Expand Up @@ -48,7 +48,7 @@ class ConstNumInfo : public AbstractInfo
public:
void clear(void);
void addElement(void);
void setElement(int index, Token *token);
void setElement(int index, const TokenPtr &token);

double *array(void)
{
Expand Down Expand Up @@ -89,7 +89,7 @@ class ConstStrInfo : public AbstractInfo
~ConstStrInfo(void);
void clear(void);
void addElement(void);
void setElement(int index, Token *token);
void setElement(int index, const TokenPtr &token);
void clearElement(int index);

QString **array(void)
Expand Down Expand Up @@ -117,21 +117,21 @@ class ConstStrDictionary : public InfoDictionary


// translate functions
Token::Status inputTranslate(Translator &translator, Token *commandToken,
Token *&token);
Token::Status letTranslate(Translator &translator, Token *commandToken,
Token *&token);
Token::Status printTranslate(Translator &translator, Token *commandToken,
Token *&token);
Token::Status inputTranslate(Translator &translator, TokenPtr commandToken,
TokenPtr &token);
Token::Status letTranslate(Translator &translator, TokenPtr commandToken,
TokenPtr &token);
Token::Status printTranslate(Translator &translator, TokenPtr commandToken,
TokenPtr &token);


// encode functions
quint16 remEncode(ProgramModel *programUnit, Token *token);
quint16 constNumEncode(ProgramModel *programUnit, Token *token);
quint16 constStrEncode(ProgramModel *programUnit, Token *token);
quint16 varDblEncode(ProgramModel *programUnit, Token *token);
quint16 varIntEncode(ProgramModel *programUnit, Token *token);
quint16 varStrEncode(ProgramModel *programUnit, Token *token);
quint16 remEncode(ProgramModel *programUnit, const TokenPtr &token);
quint16 constNumEncode(ProgramModel *programUnit, const TokenPtr &token);
quint16 constStrEncode(ProgramModel *programUnit, const TokenPtr &token);
quint16 varDblEncode(ProgramModel *programUnit, const TokenPtr &token);
quint16 varIntEncode(ProgramModel *programUnit, const TokenPtr &token);
quint16 varStrEncode(ProgramModel *programUnit, const TokenPtr &token);


// operand text functions
Expand Down
6 changes: 3 additions & 3 deletions basic/input.cpp
Expand Up @@ -29,12 +29,12 @@


// INPUT command translate function
Token::Status inputTranslate(Translator &translator, Token *commandToken,
Token *&token)
Token::Status inputTranslate(Translator &translator, TokenPtr commandToken,
TokenPtr &token)
{
Token::Status status;
bool done;
Token *inputToken;
TokenPtr inputToken;

if (commandToken->isCode(Input_Code))
{
Expand Down
10 changes: 5 additions & 5 deletions basic/let.cpp
Expand Up @@ -29,8 +29,8 @@


// LET command translate function
Token::Status letTranslate(Translator &translator, Token *commandToken,
Token *&token)
Token::Status letTranslate(Translator &translator, TokenPtr commandToken,
TokenPtr &token)
{
Token::Status status;
int column;
Expand Down Expand Up @@ -62,7 +62,7 @@ Token::Status letTranslate(Translator &translator, Token *commandToken,
return status;
}
// next token determines error
Token *nextToken;
TokenPtr nextToken;
if ((status = translator.getToken(nextToken))
!= Token::Status::Good)
{
Expand Down Expand Up @@ -153,7 +153,7 @@ Token::Status letTranslate(Translator &translator, Token *commandToken,
return status;
}

Token *letToken = letStack.pop();
TokenPtr letToken = letStack.pop();
if (!letStack.isEmpty())
{
if (haveSubStr)
Expand Down Expand Up @@ -199,7 +199,7 @@ Token::Status letTranslate(Translator &translator, Token *commandToken,


// function to append LET keyword if the option sub-code is set
void letRecreate(Recreator &recreator, Token *token)
void letRecreate(Recreator &recreator, TokenPtr token)
{
if (token->hasSubCode(Option_SubCode))
{
Expand Down
9 changes: 5 additions & 4 deletions basic/print.cpp
Expand Up @@ -30,11 +30,11 @@


// PRINT command translate function
Token::Status printTranslate(Translator &translator, Token *commandToken,
Token *&token)
Token::Status printTranslate(Translator &translator, TokenPtr commandToken,
TokenPtr &token)
{
Token::Status status;
Token *lastSemiColon = NULL;
TokenPtr lastSemiColon {};
bool separator = false;
bool printFunction = false;

Expand Down Expand Up @@ -73,7 +73,8 @@ Token::Status printTranslate(Translator &translator, Token *commandToken,
}
else // append appropriate print code for done stack top item
{
Token *printToken = translator.table().newToken(PrintDbl_Code);
TokenPtr printToken
= translator.table().newToken(PrintDbl_Code);
translator.processFinalOperand(printToken);
printFunction = false;
}
Expand Down
4 changes: 2 additions & 2 deletions dictionary.cpp
Expand Up @@ -47,7 +47,7 @@ void Dictionary::clear(void)
}


quint16 Dictionary::add(Token *token, Qt::CaseSensitivity cs,
quint16 Dictionary::add(const TokenPtr &token, Qt::CaseSensitivity cs,
Dictionary::EntryType *returnNewEntry)
{
EntryType newEntry;
Expand Down Expand Up @@ -172,7 +172,7 @@ void InfoDictionary::clear(void)


// function to possibly add a new dictionary entry and return its index
quint16 InfoDictionary::add(Token *token, Qt::CaseSensitivity cs)
quint16 InfoDictionary::add(const TokenPtr &token, Qt::CaseSensitivity cs)
{
EntryType returnNewEntry;
int index = Dictionary::add(token, cs, &returnNewEntry);
Expand Down
9 changes: 6 additions & 3 deletions dictionary.h
Expand Up @@ -30,6 +30,7 @@
#include <QStringList>

class Token;
using TokenPtr = Token *;


class Dictionary
Expand All @@ -45,7 +46,8 @@ class Dictionary
};

void clear(void);
quint16 add(Token *token, Qt::CaseSensitivity cs = Qt::CaseInsensitive,
quint16 add(const TokenPtr &token,
Qt::CaseSensitivity cs = Qt::CaseInsensitive,
EntryType *returnNewEntry = NULL);
int remove(quint16 index, Qt::CaseSensitivity cs = Qt::CaseInsensitive);
QString string(int index) const
Expand All @@ -69,7 +71,7 @@ class AbstractInfo
virtual ~AbstractInfo(void) {}
virtual void clear(void) {}
virtual void addElement(void) {}
virtual void setElement(int index, Token *token)
virtual void setElement(int index, const TokenPtr &token)
{
Q_UNUSED(index)
Q_UNUSED(token)
Expand All @@ -88,7 +90,8 @@ class InfoDictionary : public Dictionary
~InfoDictionary(void);

void clear(void);
quint16 add(Token *token, Qt::CaseSensitivity cs = Qt::CaseInsensitive);
quint16 add(const TokenPtr &token,
Qt::CaseSensitivity cs = Qt::CaseInsensitive);
void remove(quint16 index, Qt::CaseSensitivity cs = Qt::CaseInsensitive);

protected:
Expand Down
4 changes: 2 additions & 2 deletions donestack.cpp
Expand Up @@ -33,7 +33,7 @@
// - no action if first operand token pointer is not set
// - no action if first operand token is not an open parentheses token

void DoneItem::deleteOpenParen(Token *token)
void DoneItem::deleteOpenParen(TokenPtr token)
{
if (token != NULL && token->isCode(OpenParen_Code))
{
Expand All @@ -51,7 +51,7 @@ void DoneItem::deleteOpenParen(Token *token)
// as a dummy parentheses token, then last operand flag is cleared
// - if closing parentheses token is not being used, then it is deleted

void DoneItem::deleteCloseParen(Token *token)
void DoneItem::deleteCloseParen(TokenPtr token)
{
if (token != NULL && token->isCode(CloseParen_Code))
{
Expand Down
15 changes: 8 additions & 7 deletions donestack.h
Expand Up @@ -31,20 +31,21 @@
class RpnItem;
using RpnItemPtr = std::shared_ptr<RpnItem>;
class Token;
using TokenPtr = Token *;


class DoneItem
{
public:
RpnItemPtr rpnItem; // pointer to RPN item
Token *first; // operator token's first operand pointer
Token *last; // operator token's last operand pointer
TokenPtr first; // operator token's first operand pointer
TokenPtr last; // operator token's last operand pointer

DoneItem(RpnItemPtr _rpnItem) : rpnItem{_rpnItem}, first{nullptr},
last{nullptr} {}
DoneItem(RpnItemPtr _rpnItem, Token *_last) : rpnItem{_rpnItem},
DoneItem(RpnItemPtr _rpnItem, TokenPtr _last) : rpnItem{_rpnItem},
first{nullptr}, last{_last} {}
DoneItem(RpnItemPtr _rpnItem, Token *_first, Token *_last) :
DoneItem(RpnItemPtr _rpnItem, TokenPtr _first, TokenPtr _last) :
rpnItem{_rpnItem}, first{_first}, last{_last} {}
~DoneItem()
{
Expand All @@ -53,21 +54,21 @@ class DoneItem
}

// delete token if is an open parentheses
static void deleteOpenParen(Token *token);
static void deleteOpenParen(TokenPtr token);
void deleteOpenParen(void)
{
deleteOpenParen(first);
}

// delete token if is a close parentheses
static void deleteCloseParen(Token *token);
static void deleteCloseParen(TokenPtr token);
void deleteCloseParen(void)
{
deleteCloseParen(last);
}

// replace the item's first and last operand token
void replaceFirstLast(Token *_first, Token *_last)
void replaceFirstLast(TokenPtr _first, TokenPtr _last)
{
deleteOpenParen(first);
deleteCloseParen(last);
Expand Down
2 changes: 1 addition & 1 deletion parser.cpp
Expand Up @@ -39,7 +39,7 @@ Parser::Parser(void) :
// - the token must be deallocated when it is no longer needed
// - the token may contain an error message if an error was found

Token *Parser::token(bool operandState)
TokenPtr Parser::token(bool operandState)
{
m_operandState = operandState;
skipWhitespace();
Expand Down
4 changes: 2 additions & 2 deletions parser.h
Expand Up @@ -45,7 +45,7 @@ class Parser
m_pos = 0;
m_operandState = false;
}
Token *token(bool operandState = false);
TokenPtr token(bool operandState = false);

private:
// main functions
Expand All @@ -62,7 +62,7 @@ class Parser
Table &m_table; // pointer to the table object
QString m_input; // input line being parsed
int m_pos; // index to current position in input string
Token *m_token; // pointer to working token (to be returned)
TokenPtr m_token; // pointer to working token (to be returned)
bool m_operandState; // currently operand state flag (2011-03-27)
};

Expand Down
4 changes: 2 additions & 2 deletions programmodel.cpp
Expand Up @@ -636,7 +636,7 @@ ProgramCode ProgramModel::encode(const RpnList &input)

for (RpnItemPtr rpnItem : input)
{
Token *token = rpnItem->token();
TokenPtr token = rpnItem->token();
programLine[token->index()].setInstruction(token->code(),
token->subCodes());
EncodeFunction encode = m_table.encodeFunction(token->code());
Expand Down Expand Up @@ -672,7 +672,7 @@ RpnList ProgramModel::decode(const LineInfo &lineInfo)
ProgramWord *line = m_code.data() + lineInfo.offset;
for (int i = 0; i < lineInfo.size; i++)
{
Token *token = new Token;
TokenPtr token = new Token;
token->setCode(line[i].instructionCode());
token->addSubCode(line[i].instructionSubCode());

Expand Down
4 changes: 2 additions & 2 deletions rpnlist.cpp
Expand Up @@ -96,7 +96,7 @@ bool RpnList::operator==(const RpnList &other) const

// function to create an rpn item for a token and append it to the list

RpnItemPtr RpnList::append(Token *token, RpnItemVector attached)
RpnItemPtr RpnList::append(TokenPtr token, RpnItemVector attached)
{
token->removeSubCode(UnUsed_SubCode); // mark as used
m_list.emplace_back(RpnItemPtr{new RpnItem{token, attached}});
Expand All @@ -110,7 +110,7 @@ RpnItemPtr RpnList::append(Token *token, RpnItemVector attached)
// - sets code size required for encoded line
// - upon error returns token of code not yet implemented

bool RpnList::setCodeSize(Table &table, Token *&token)
bool RpnList::setCodeSize(Table &table, TokenPtr &token)
{
// count number of program words needed
m_codeSize = 0;
Expand Down

0 comments on commit 233a8f4

Please sign in to comment.