mirror of
https://github.com/jeremysrand/abCalc.git
synced 2024-06-16 00:29:26 +00:00
Implement some basic mode tracking
This commit is contained in:
parent
e96affc7ad
commit
b691e28672
5
Makefile
5
Makefile
|
@ -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
|
NAME=abCalc
|
||||||
|
|
||||||
all: $(NAME)
|
all: $(NAME)
|
||||||
|
|
||||||
abCalcExpr.o: abCalcExpr.h
|
abCalcExpr.o: abCalcExpr.h
|
||||||
abCalcExprReal.o: abCalcExpr.h
|
abCalcExprReal.o: abCalcExpr.h abCalcExprReal.h
|
||||||
abCalcStack.o: abCalcExpr.h abCalcStack.h
|
abCalcStack.o: abCalcExpr.h abCalcStack.h
|
||||||
|
abCalcMode.o: abCalcMode.h abCalcExpr.h
|
||||||
|
|
||||||
$(NAME): $(OBJS)
|
$(NAME): $(OBJS)
|
||||||
cc -o $(NAME) $(OBJS)
|
cc -o $(NAME) $(OBJS)
|
||||||
|
|
|
@ -14,7 +14,7 @@ typedef enum abCalcExprType {
|
||||||
|
|
||||||
|
|
||||||
typedef double abCalcRealType;
|
typedef double abCalcRealType;
|
||||||
typedef long abCalcIntType;
|
typedef unsigned long abCalcIntType;
|
||||||
|
|
||||||
|
|
||||||
typedef struct abCalcExpr {
|
typedef struct abCalcExpr {
|
||||||
|
|
8
abCalcExprReal.h
Normal file
8
abCalcExprReal.h
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
/*
|
||||||
|
abCalcExprReal.h
|
||||||
|
By: Jeremy Rand
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
void abCalcExprRealInit(void);
|
||||||
|
|
47
abCalcMode.c
Normal file
47
abCalcMode.c
Normal 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
33
abCalcMode.h
Normal 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);
|
Loading…
Reference in New Issue
Block a user