src/Expression.cc

changeset 112
def56932f938
parent 110
7a7a53f1d51b
child 115
9be16e1c1e44
--- a/src/Expression.cc	Sun Feb 23 17:21:18 2014 +0200
+++ b/src/Expression.cc	Sun Feb 23 17:45:34 2014 +0200
@@ -4,7 +4,7 @@
 
 struct OperatorInfo
 {
-	TokenType	token;
+	ETokenType	token;
 	int			priority;
 	int			numoperands;
 	DataHeader	header;
@@ -73,23 +73,23 @@
 //
 ExpressionSymbol* Expression::ParseSymbol()
 {
-	int pos = mLexer->GetPosition();
+	int pos = mLexer->Position();
 	ExpressionValue* op = null;
 
-	if (mLexer->GetNext (TK_Colon))
+	if (mLexer->Next (TK_Colon))
 		return new ExpressionColon;
 
 	// Check for OPER_erator
 	for (const OperatorInfo& op : gOperators)
-		if (mLexer->GetNext (op.token))
+		if (mLexer->Next (op.token))
 			return new ExpressionOperator ((ExpressionOperatorType) (&op - &gOperators[0]));
 
 	// Check sub-expression
-	if (mLexer->GetNext (TK_ParenStart))
+	if (mLexer->Next (TK_ParenStart))
 	{
 		Expression expr (mParser, mLexer, mType);
 		mLexer->MustGetNext (TK_ParenEnd);
-		return expr.GetResult()->Clone();
+		return expr.Result()->Clone();
 	}
 
 	op = new ExpressionValue (mType);
@@ -107,24 +107,24 @@
 	}
 
 	// Check for variables
-	if (mLexer->GetNext (TK_DollarSign))
+	if (mLexer->Next (TK_DollarSign))
 	{
 		mLexer->MustGetNext (TK_Symbol);
-		Variable* var = mParser->FindVariable (GetTokenString());
+		Variable* var = mParser->FindVariable (TokenString());
 
 		if (var == null)
-			Error ("unknown variable %1", GetTokenString());
+			Error ("unknown variable %1", TokenString());
 
 		if (var->type != mType)
 			Error ("expression requires %1, variable $%2 is of type %3",
-				GetTypeName (mType), var->name, GetTypeName (var->type));
+				DataTypeName (mType), var->name, DataTypeName (var->type));
 
 		if (var->isarray)
 		{
 			mLexer->MustGetNext (TK_BracketStart);
 			Expression expr (mParser, mLexer, TYPE_Int);
-			expr.GetResult()->ConvertToBuffer();
-			DataBuffer* buf = expr.GetResult()->GetBuffer()->Clone();
+			expr.Result()->ConvertToBuffer();
+			DataBuffer* buf = expr.Result()->Buffer()->Clone();
 			buf->WriteDWord (DH_PushGlobalArray);
 			buf->WriteDWord (var->index);
 			op->SetBuffer (buf);
@@ -154,40 +154,40 @@
 		case TYPE_Void:
 		case TYPE_Unknown:
 		{
-			Error ("unknown identifier `%1` (expected keyword, function or variable)", GetTokenString());
+			Error ("unknown identifier `%1` (expected keyword, function or variable)", TokenString());
 			break;
 		}
 
 		case TYPE_Bool:
 		{
-			if (mLexer->GetNext (TK_True) || mLexer->GetNext (TK_False))
+			if (mLexer->Next (TK_True) || mLexer->Next (TK_False))
 			{
-				TokenType tt = mLexer->GetTokenType();
-				op->SetValue (tt ==TK_True ? 1 : 0);
+				ETokenType tt = mLexer->TokenType();
+				op->SetValue (tt == TK_True ? 1 : 0);
 				return op;
 			}
 		}
 
 		case TYPE_Int:
 		{
-			if (mLexer->GetNext (TK_Number))
+			if (mLexer->Next (TK_Number))
 			{
-				op->SetValue (GetTokenString().ToLong());
+				op->SetValue (TokenString().ToLong());
 				return op;
 			}
 		}
 
 		case TYPE_String:
 		{
-			if (mLexer->GetNext (TK_String))
+			if (mLexer->Next (TK_String))
 			{
-				op->SetValue (GetStringTableIndex (GetTokenString()));
+				op->SetValue (StringTableIndex (TokenString()));
 				return op;
 			}
 		}
 	}
 
-	mBadTokenText = mLexer->GetToken()->text;
+	mBadTokenText = mLexer->Token()->text;
 	mLexer->SetPosition (pos);
 	delete op;
 	return null;
@@ -205,14 +205,14 @@
 {
 	for (auto it = mSymbols.begin() + 1; it != mSymbols.end(); ++it)
 	{
-		if ((*it)->GetType() != EXPRSYM_Operator)
+		if ((*it)->Type() != EXPRSYM_Operator)
 			continue;
 
 		ExpressionOperator* op = static_cast<ExpressionOperator*> (*it);
 
 		// Unary minus with a value as the previous symbol cannot really be
 		// unary; replace with binary minus.
-		if (op->GetID() == OPER_UnaryMinus && (*(it - 1))->GetType() == EXPRSYM_Value)
+		if (op->ID() == OPER_UnaryMinus && (*(it - 1))->Type() == EXPRSYM_Value)
 			op->SetID (OPER_Subtraction);
 	}
 }
@@ -225,8 +225,8 @@
 {
 	// If it's an unary OPER_erator we skip to its value. The actual OPER_erator will
 	// be verified separately.
-	if ((*it)->GetType() == EXPRSYM_Operator &&
-		gOperators[static_cast<ExpressionOperator*> (*it)->GetID()].numoperands == 1)
+	if ((*it)->Type() == EXPRSYM_Operator &&
+		gOperators[static_cast<ExpressionOperator*> (*it)->ID()].numoperands == 1)
 	{
 		++it;
 	}
@@ -234,7 +234,7 @@
 	int i = it - mSymbols.begin();
 
 	// Ensure it's an actual value
-	if ((*it)->GetType() != EXPRSYM_Value)
+	if ((*it)->Type() != EXPRSYM_Value)
 		Error ("malformed expression (symbol #%1 is not a value)", i);
 
 	verified[i] = true;
@@ -249,7 +249,7 @@
 {
 	if (mSymbols.Size() == 1)
 	{
-		if (mSymbols[0]->GetType() != EXPRSYM_Value)
+		if (mSymbols[0]->Type() != EXPRSYM_Value)
 			Error ("bad expression");
 
 		return;
@@ -267,11 +267,11 @@
 	{
 		int i = (it - first);
 
-		if ((*it)->GetType() != EXPRSYM_Operator)
+		if ((*it)->Type() != EXPRSYM_Operator)
 			continue;
 
 		ExpressionOperator* op = static_cast<ExpressionOperator*> (*it);
-		int numoperands = gOperators[op->GetID()].numoperands;
+		int numoperands = gOperators[op->ID()].numoperands;
 
 		switch (numoperands)
 		{
@@ -331,7 +331,7 @@
 					it >= mSymbols.end() - 3 ||
 					verified[i] == true ||
 					verified[i + 2] == true ||
-					(*(it + 2))->GetType() != EXPRSYM_Colon)
+					(*(it + 2))->Type() != EXPRSYM_Colon)
 				{
 					Error ("malformed expression");
 				}
@@ -361,15 +361,15 @@
 Expression::SymbolList::Iterator Expression::FindPrioritizedOperator()
 {
 	SymbolList::Iterator	best = mSymbols.end();
-	int						bestpriority = INT_MAX;
+	int						bestpriority = __INT_MAX__;
 
 	for (SymbolList::Iterator it = mSymbols.begin(); it != mSymbols.end(); ++it)
 	{
-		if ((*it)->GetType() != EXPRSYM_Operator)
+		if ((*it)->Type() != EXPRSYM_Operator)
 			continue;
 
 		ExpressionOperator* op = static_cast<ExpressionOperator*> (*it);
-		const OperatorInfo* info = &gOperators[op->GetID()];
+		const OperatorInfo* info = &gOperators[op->ID()];
 
 		if (info->priority < bestpriority)
 		{
@@ -388,7 +388,7 @@
 ExpressionValue* Expression::EvaluateOperator (const ExpressionOperator* op,
 											   const List<ExpressionValue*>& values)
 {
-	const OperatorInfo* info = &gOperators[op->GetID()];
+	const OperatorInfo* info = &gOperators[op->ID()];
 	bool isconstexpr = true;
 	assert (values.Size() == info->numoperands);
 
@@ -415,16 +415,16 @@
 		// until Zandronum processes it at run-time.
 		newval->SetBuffer (new DataBuffer);
 
-		if (op->GetID() == OPER_Ternary)
+		if (op->ID() == OPER_Ternary)
 		{
 			// There isn't a dataheader for ternary OPER_erator. Instead, we use DH_IfNotGoto
 			// to create an "if-block" inside an expression.
 			// Behold, big block of writing madness! :P
 			//
-			DataBuffer* buf = newval->GetBuffer();
-			DataBuffer* b0 = values[0]->GetBuffer();
-			DataBuffer* b1 = values[1]->GetBuffer();
-			DataBuffer* b2 = values[2]->GetBuffer();
+			DataBuffer* buf = newval->Buffer();
+			DataBuffer* b0 = values[0]->Buffer();
+			DataBuffer* b1 = values[1]->Buffer();
+			DataBuffer* b2 = values[2]->Buffer();
 			ByteMark* mark1 = buf->AddMark (""); // start of "else" case
 			ByteMark* mark2 = buf->AddMark (""); // end of expression
 			buf->MergeAndDestroy (b0);
@@ -446,14 +446,14 @@
 			// data header.
 			for (ExpressionValue* val : values)
 			{
-				newval->GetBuffer()->MergeAndDestroy (val->GetBuffer());
+				newval->Buffer()->MergeAndDestroy (val->Buffer());
 
 				// Null the pointer out so that the value's destructor will not
 				// attempt to double-free it.
 				val->SetBuffer (null);
 			}
 
-			newval->GetBuffer()->WriteDWord (info->header);
+			newval->Buffer()->WriteDWord (info->header);
 		}
 	}
 	else
@@ -464,9 +464,9 @@
 		int a;
 
 		for (ExpressionValue* val : values)
-			nums << val->GetValue();
+			nums << val->Value();
 
-		switch (op->GetID())
+		switch (op->ID())
 		{
 			case OPER_Addition:			a = nums[0] + nums[1];					break;
 			case OPER_Subtraction:			a = nums[0] - nums[1];					break;
@@ -529,7 +529,7 @@
 		int i = it - mSymbols.begin();
 		List<SymbolList::Iterator> OPER_erands;
 		ExpressionOperator* op = static_cast<ExpressionOperator*> (*it);
-		const OperatorInfo* info = &gOperators[op->GetID()];
+		const OperatorInfo* info = &gOperators[op->ID()];
 		int lower, upper; // Boundaries of area to replace
 
 		switch (info->numoperands)
@@ -579,23 +579,23 @@
 		mSymbols.Insert (lower, newvalue);
 	}
 
-	assert (mSymbols.Size() == 1 && mSymbols.First()->GetType() == EXPRSYM_Value);
+	assert (mSymbols.Size() == 1 && mSymbols.First()->Type() == EXPRSYM_Value);
 	ExpressionValue* val = static_cast<ExpressionValue*> (mSymbols.First());
 	return val;
 }
 
 // =============================================================================
 //
-ExpressionValue* Expression::GetResult()
+ExpressionValue* Expression::Result()
 {
 	return static_cast<ExpressionValue*> (mSymbols.First());
 }
 
 // =============================================================================
 //
-String Expression::GetTokenString()
+String Expression::TokenString()
 {
-	return mLexer->GetToken()->text;
+	return mLexer->Token()->text;
 }
 
 // =============================================================================
@@ -631,16 +631,16 @@
 	{
 		case TYPE_Bool:
 		case TYPE_Int:
-			GetBuffer()->WriteDWord (DH_PushNumber);
-			GetBuffer()->WriteDWord (abs (mValue));
+			Buffer()->WriteDWord (DH_PushNumber);
+			Buffer()->WriteDWord (abs (mValue));
 
 			if (mValue < 0)
-				GetBuffer()->WriteDWord (DH_UnaryMinus);
+				Buffer()->WriteDWord (DH_UnaryMinus);
 			break;
 
 		case TYPE_String:
-			GetBuffer()->WriteDWord (DH_PushStringIndex);
-			GetBuffer()->WriteDWord (mValue);
+			Buffer()->WriteDWord (DH_PushStringIndex);
+			Buffer()->WriteDWord (mValue);
 			break;
 
 		case TYPE_Void:

mercurial