diff options
Diffstat (limited to 'CommonLibs/ScalarTypes.h')
-rw-r--r-- | CommonLibs/ScalarTypes.h | 136 |
1 files changed, 0 insertions, 136 deletions
diff --git a/CommonLibs/ScalarTypes.h b/CommonLibs/ScalarTypes.h deleted file mode 100644 index 077d889..0000000 --- a/CommonLibs/ScalarTypes.h +++ /dev/null @@ -1,136 +0,0 @@ -/* -* Copyright 2011 Range Networks, Inc. -* All Rights Reserved. -* -* This software is distributed under multiple licenses; -* see the COPYING file in the main directory for licensing -* information for this specific distribuion. -* -* This use of this software may be subject to additional restrictions. -* See the LEGAL file in the main directory for details. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -*/ - -#ifndef SCALARTYPES_H -#define SCALARTYPES_H -#include <iostream> // For size_t -#include <stdint.h> -//#include "GSMCommon.h" // Was included for Z100Timer - -// We dont bother to define *= /= etc.; you'll have to convert: a*=b; to: a=a*b; -#define _INITIALIZED_SCALAR_BASE_FUNCS(Classname,Basetype,Init) \ - Classname() : value(Init) {} \ - Classname(Basetype wvalue) { value = wvalue; } /* Can set from basetype. */ \ - operator Basetype(void) const { return value; } /* Converts from basetype. */ \ - Basetype operator=(Basetype wvalue) { return value = wvalue; } \ - Basetype* operator&() { return &value; } - -#define _INITIALIZED_SCALAR_ARITH_FUNCS(Basetype) \ - Basetype operator++() { return ++value; } \ - Basetype operator++(int) { return value++; } \ - Basetype operator--() { return --value; } \ - Basetype operator--(int) { return value--; } \ - Basetype operator+=(Basetype wvalue) { return value = value + wvalue; } \ - Basetype operator-=(Basetype wvalue) { return value = value - wvalue; } - -#define _INITIALIZED_SCALAR_FUNCS(Classname,Basetype,Init) \ - _INITIALIZED_SCALAR_BASE_FUNCS(Classname,Basetype,Init) \ - _INITIALIZED_SCALAR_ARITH_FUNCS(Basetype) - - -#define _DECLARE_SCALAR_TYPE(Classname_i,Classname_z,Basetype) \ - template <Basetype Init> \ - struct Classname_i { \ - Basetype value; \ - _INITIALIZED_SCALAR_FUNCS(Classname_i,Basetype,Init) \ - }; \ - typedef Classname_i<0> Classname_z; - - -// Usage: -// Where 'classname' is one of the types listed below, then: -// classname_z specifies a zero initialized type; -// classname_i<value> initializes the type to the specified value. -// We also define Float_z. -_DECLARE_SCALAR_TYPE(Int_i, Int_z, int) -_DECLARE_SCALAR_TYPE(Char_i, Char_z, signed char) -_DECLARE_SCALAR_TYPE(Int16_i, Int16_z, int16_t) -_DECLARE_SCALAR_TYPE(Int32_i, Int32_z, int32_t) -_DECLARE_SCALAR_TYPE(UInt_i, UInt_z, unsigned) -_DECLARE_SCALAR_TYPE(UChar_i, UChar_z, unsigned char) -_DECLARE_SCALAR_TYPE(UInt16_i, UInt16_z, uint16_t) -_DECLARE_SCALAR_TYPE(UInt32_i, UInt32_z, uint32_t) -_DECLARE_SCALAR_TYPE(Size_t_i, Size_t_z, size_t) - -// Bool is special because it cannot accept some arithmetic funcs -//_DECLARE_SCALAR_TYPE(Bool_i, Bool_z, bool) -template <bool Init> -struct Bool_i { - bool value; - _INITIALIZED_SCALAR_BASE_FUNCS(Bool_i,bool,Init) -}; -typedef Bool_i<0> Bool_z; - -// float is special, because C++ does not permit the template initalization: -struct Float_z { - float value; - _INITIALIZED_SCALAR_FUNCS(Float_z,float,0) -}; -struct Double_z { - double value; - _INITIALIZED_SCALAR_FUNCS(Double_z,double,0) -}; - - -class ItemWithValueAndWidth { - public: - virtual unsigned getValue() const = 0; - virtual unsigned getWidth() const = 0; -}; - -// A Range Networks Field with a specified width. -// See RLCMessages.h for examples. -template <int Width=32, unsigned Init=0> -class Field_i : public ItemWithValueAndWidth -{ - public: - unsigned value; - _INITIALIZED_SCALAR_FUNCS(Field_i,unsigned,Init) - unsigned getWidth() const { return Width; } - unsigned getValue() const { return value; } -}; - -// Synonym for Field_i, but no way to do it. -template <int Width, unsigned Init=0> -class Field_z : public ItemWithValueAndWidth -{ - public: - unsigned value; - _INITIALIZED_SCALAR_FUNCS(Field_z,unsigned,Init) - unsigned getWidth() const { return Width; } - unsigned getValue() const { return value; } -}; - -// This is an uninitialized field. -template <int Width=32, unsigned Init=0> -class Field : public ItemWithValueAndWidth -{ - public: - unsigned value; - _INITIALIZED_SCALAR_FUNCS(Field,unsigned,Init) - unsigned getWidth() const { return Width; } - unsigned getValue() const { return value; } -}; - - -// A Z100Timer with an initial value specified. -//template <int Init> -//class Z100Timer_i : public GSM::Z100Timer { -// public: -// Z100Timer_i() : GSM::Z100Timer(Init) {} -//}; - -#endif |