Implement some basic mode tracking

This commit is contained in:
Jeremy Rand 2013-07-24 10:06:38 -05:00
parent e96affc7ad
commit b691e28672
5 changed files with 92 additions and 3 deletions

View File

@ -1,11 +1,12 @@
OBJS=abCalc.o abCalcExpr.o abCalcExprReal.o abCalcExprInt.o abCalcStack.o
OBJS=abCalc.o abCalcExpr.o abCalcExprReal.o abCalcExprInt.o abCalcStack.o abCalcMode.o
NAME=abCalc
all: $(NAME)
abCalcExpr.o: abCalcExpr.h
abCalcExprReal.o: abCalcExpr.h
abCalcExprReal.o: abCalcExpr.h abCalcExprReal.h
abCalcStack.o: abCalcExpr.h abCalcStack.h
abCalcMode.o: abCalcMode.h abCalcExpr.h
$(NAME): $(OBJS)
cc -o $(NAME) $(OBJS)

View File

@ -14,7 +14,7 @@ typedef enum abCalcExprType {
typedef double abCalcRealType;
typedef long abCalcIntType;
typedef unsigned long abCalcIntType;
typedef struct abCalcExpr {

8
abCalcExprReal.h Normal file
View File

@ -0,0 +1,8 @@
/*
abCalcExprReal.h
By: Jeremy Rand
*/
void abCalcExprRealInit(void);

47
abCalcMode.c Normal file
View File

@ -0,0 +1,47 @@
/*
abCalcMode.c
By: Jeremy Rand
*/
#include "abCalcMode.h"
static abCalcModeIntBase gBase = abCalcModeDecBase;
static int gIntWidth = AB_CALC_MODE_MAX_INT_WIDTH;
void abCalcModeInit(void)
{
}
abCalcModeIntBase abCalcModeGetBase(void)
{
return gBase;
}
void abCalcModeSetBase(abCalcModeIntBase base)
{
if ((base >= abCalcModeIntBaseMin) &&
(base < abCalcModeIntBaseMax)) {
gBase = base;
}
}
int abCalcModeGetIntWidth(void)
{
return gIntWidth;
}
void abCalcModeSetIntWidth(int width)
{
if ((width > 0) &&
(width <= AB_CALC_MODE_MAX_INT_WIDTH)) {
gIntWidth = width;
}
}

33
abCalcMode.h Normal file
View File

@ -0,0 +1,33 @@
/*
abCalcMode.h
By: Jeremy Rand
*/
#include "abCalcExpr.h"
typedef enum abCalcModeIntBase
{
abCalcModeIntBaseMin = 0,
abCalcModeBinBase = 0,
abCalcModeOctBase,
abCalcModeDecBase,
abCalcModeHexBase,
abCalcModeIntBaseMax
} abCalcModeIntBase;
#define AB_CALC_MODE_MAX_INT_WIDTH ((sizeof(abCalcIntType) * 8))
void abCalcModeInit(void);
abCalcModeIntBase abCalcModeGetBase(void);
void abCalcModeSetBase(abCalcModeIntBase base);
int abCalcModeGetIntWidth(void);
void abCalcModeSetIntWidth(int width);