diff --git a/clibrary.c b/clibrary.c index c34292a..3790249 100644 --- a/clibrary.c +++ b/clibrary.c @@ -159,7 +159,6 @@ void PrintType(struct ValueType *Typ, struct OutputStream *Stream) case TypeChar: PrintStr("char", Stream); break; case TypeUnsignedInt: PrintStr("unsigned int", Stream); break; case TypeUnsignedShort: PrintStr("unsigned short", Stream); break; - case TypeUnsignedChar: PrintStr("unsigned char", Stream); break; #ifndef NO_FP case TypeFP: PrintStr("double", Stream); break; #endif diff --git a/expression.c b/expression.c index 0c5c8ff..bbfafec 100644 --- a/expression.c +++ b/expression.c @@ -136,7 +136,6 @@ int ExpressionCoerceInteger(struct Value *Val) case TypeChar: return (int)Val->Val->Character; case TypeShort: return (int)Val->Val->ShortInteger; case TypeUnsignedInt: return (int)Val->Val->UnsignedInteger; - case TypeUnsignedChar: return (int)Val->Val->UnsignedCharacter; case TypeUnsignedShort: return (int)Val->Val->UnsignedShortInteger; case TypePointer: return (int)Val->Val->NativePointer; #ifndef NO_FP @@ -154,7 +153,6 @@ unsigned int ExpressionCoerceUnsignedInteger(struct Value *Val) case TypeChar: return (unsigned int)Val->Val->Character; case TypeShort: return (unsigned int)Val->Val->ShortInteger; case TypeUnsignedInt: return (unsigned int)Val->Val->UnsignedInteger; - case TypeUnsignedChar: return (unsigned int)Val->Val->UnsignedCharacter; case TypeUnsignedShort: return (unsigned int)Val->Val->UnsignedShortInteger; case TypePointer: return (unsigned int)Val->Val->NativePointer; #ifndef NO_FP @@ -172,7 +170,6 @@ double ExpressionCoerceFP(struct Value *Val) case TypeChar: return (double)Val->Val->Character; case TypeShort: return (double)Val->Val->ShortInteger; case TypeUnsignedInt: return (double)Val->Val->UnsignedInteger; - case TypeUnsignedChar: return (double)Val->Val->UnsignedCharacter; case TypeUnsignedShort: return (double)Val->Val->UnsignedShortInteger; #ifndef NO_FP case TypeFP: return (double)Val->Val->FP; @@ -321,10 +318,9 @@ void ExpressionAssign(struct ParseState *Parser, struct Value *DestValue, struct { case TypeInt: DestValue->Val->Integer = ExpressionCoerceInteger(SourceValue); break; case TypeShort: DestValue->Val->ShortInteger = ExpressionCoerceInteger(SourceValue); break; - case TypeChar: DestValue->Val->Character = ExpressionCoerceInteger(SourceValue); break; + case TypeChar: DestValue->Val->Character = ExpressionCoerceUnsignedInteger(SourceValue); break; case TypeUnsignedInt: DestValue->Val->UnsignedInteger = ExpressionCoerceUnsignedInteger(SourceValue); break; case TypeUnsignedShort: DestValue->Val->UnsignedShortInteger = ExpressionCoerceUnsignedInteger(SourceValue); break; - case TypeUnsignedChar: DestValue->Val->UnsignedCharacter = ExpressionCoerceUnsignedInteger(SourceValue); break; #ifndef NO_FP case TypeFP: diff --git a/picoc.h b/picoc.h index 8a4cbb8..3931ada 100644 --- a/picoc.h +++ b/picoc.h @@ -115,10 +115,9 @@ enum BaseType TypeVoid, /* no type */ TypeInt, /* integer */ TypeShort, /* short integer */ - TypeChar, /* a single character */ + TypeChar, /* a single character (unsigned) */ TypeUnsignedInt, /* unsigned integer */ TypeUnsignedShort, /* unsigned short integer */ - TypeUnsignedChar, /* a single unsigned character */ #ifndef NO_FP TypeFP, /* floating point */ #endif @@ -164,7 +163,6 @@ union AnyValue unsigned char Character; short ShortInteger; int Integer; - unsigned char UnsignedCharacter; unsigned short UnsignedShortInteger; unsigned int UnsignedInteger; char *Identifier; diff --git a/type.c b/type.c index 110a923..2a8153a 100644 --- a/type.c +++ b/type.c @@ -7,7 +7,6 @@ struct ValueType ShortType; struct ValueType CharType; struct ValueType UnsignedIntType; struct ValueType UnsignedShortType; -struct ValueType UnsignedCharType; #ifndef NO_FP struct ValueType FPType; #endif @@ -122,10 +121,9 @@ void TypeInit() UberType.DerivedTypeList = NULL; TypeAddBaseType(&IntType, TypeInt, sizeof(int)); TypeAddBaseType(&ShortType, TypeShort, sizeof(short)); - TypeAddBaseType(&CharType, TypeChar, sizeof(char)); + TypeAddBaseType(&CharType, TypeChar, sizeof(unsigned char)); TypeAddBaseType(&UnsignedIntType, TypeUnsignedInt, sizeof(unsigned int)); TypeAddBaseType(&UnsignedShortType, TypeUnsignedShort, sizeof(unsigned short)); - TypeAddBaseType(&UnsignedCharType, TypeUnsignedChar, sizeof(unsigned char)); TypeAddBaseType(&VoidType, TypeVoid, 0); TypeAddBaseType(&FunctionType, TypeFunction, sizeof(int)); TypeAddBaseType(&MacroType, TypeMacro, sizeof(int)); @@ -324,7 +322,7 @@ int TypeParseFront(struct ParseState *Parser, struct ValueType **Typ) { case TokenIntType: case TokenLongType: *Typ = Unsigned ? &UnsignedIntType : &IntType; break; case TokenShortType: *Typ = Unsigned ? &UnsignedShortType : &ShortType; break; - case TokenCharType: *Typ = Unsigned ? &UnsignedCharType : &CharType; break; + case TokenCharType: *Typ = &CharType; break; #ifndef NO_FP case TokenFloatType: case TokenDoubleType: *Typ = &FPType; break; #endif