C12Adapter Opensource C++ Interface
MEIndexOutOfRange Class Reference

Exception, array index is out of range. More...

Inheritance diagram for MEIndexOutOfRange:

Public Member Functions

 MEIndexOutOfRange (int lo, int hi, int val, MConstChars arrayName=NULL)
 Constructor that takes all properties as parameters. More...
 
 MEIndexOutOfRange (const MEIndexOutOfRange &ex)
 Copy constructor. More...
 
virtual ~MEIndexOutOfRange ()
 Destructor.
 
MEIndexOutOfRangeoperator= (const MEIndexOutOfRange &ex)
 Assignment operator. More...
 
virtual MExceptionNewClone () const
 Clone the exception, so the new exception has the same final type. More...
 
virtual M_NORETURN_FUNC void Rethrow ()
 Rethrows this exception. More...
 
int GetIndexMin () const
 
void SetIndexMin (int lo)
 
int GetIndexMax () const
 
void SetIndexMax (int hi)
 
int GetValue () const
 
void SetValue (int value)
 
- Public Member Functions inherited from MException
 MException ()
 Object constructor. More...
 
 MException (const MStdString &message, MErrorEnum::Type code=MErrorEnum::ClientApplicationError, KindType kind=MException::ErrorUser)
 Object constructor with code, kind and variable number of parameters. More...
 
 MException (const MException &ex)
 Object copy constructor. More...
 
virtual ~MException ()
 Object destructor.
 
void InitAll (MException::KindType kind, MErrorEnum::Type code, const MStdString &message)
 Initialize all exception fields with the exact given data.
 
MExceptionoperator= (const MException &ex)
 Assignment operator. More...
 
virtual MStdString AsSimplifiedString () const
 Return a possibly simplified string that specifies information about exception. More...
 
virtual MStdString AsString () const
 Return the string that specifies extended information about exception. More...
 
MStdString GetMessageString () const
 Returns the message that is stored in this exception object. More...
 
void SetMessageString (const MStdString &msg)
 Sets the new message to exception. More...
 
MStdString GetKindAsString () const
 Return a string that represents the exception error kind. More...
 
MStdString GetFileName () const
 Get the file name where the error took place, if this information is available.
 
unsigned GetFileLineNumber () const
 Get the line number within file where the error took place.
 
void UpdateFileNameAndLineNumber (MFileNameAndLineNumber fl)
 Set file name and line number where the compile error took place, if the exception does not have this information already.
 
void UpdateFileAndLine (const MStdString &file, unsigned line)
 If not set already, set file name and line number associated with this exception. More...
 
void AddFileAndLineToStack (const MStdString &file, unsigned line)
 Add file name and line number context associated with this exception into stack. More...
 
void AddFileNameAndLineNumberToStack (MFileNameAndLineNumber fl)
 Add file name and line number context associated with this exception into stack. More...
 
const MFileNameAndLineNumber::VectorTypeGetStack () const
 Get the stack of file names and line numbers.
 
MStdStringVector GetCallStack () const
 Get the stack of file names and line numbers as collection of strings.
 
void Append (const MStdString &)
 Append the specified string to the end of the exception string. More...
 
void Prepend (const MStdString &)
 Prepend the specified string before the beginning of the exception string. More...
 
MErrorEnum::Type GetCode () const
 
void SetCode (MErrorEnum::Type code)
 
KindType GetKind () const
 
void SetKind (KindType kind)
 
void Init (KindType kind, MErrorEnum::Type code, MConstLocalChars str,...)
 Initialize the exception with the given message code and kind from which the message string is fetched from the resource. More...
 
void Init (KindType kind, MErrorEnum::Type code, const char *str,...)
 Initialize the exception with the given message code and kind from which the message string is fetched from the resource. More...
 
void Init (MErrorEnum::Type code, MConstLocalChars str,...)
 Initialize the exception with the given message code and kind from which the message string is fetched from the resource. More...
 
void Init (MErrorEnum::Type code, const char *str,...)
 Initialize the exception with the given message code and kind from which the message string is fetched from the resource. More...
 
void InitVA (KindType kind, MErrorEnum::Type code, MConstLocalChars str, va_list va)
 Initialize the exception with the given message code from the VA list argument. More...
 
void InitVA (KindType kind, MErrorEnum::Type code, const char *str, va_list va)
 Initialize the exception with the given message code from the VA list argument. More...
 
void InitVA (MErrorEnum::Type code, MConstLocalChars str, va_list va)
 Initialize the exception with the given message code from the VA list argument. More...
 
void InitVA (MErrorEnum::Type code, const char *str, va_list va)
 Initialize the exception with the given message code from the VA list argument. More...
 
MFileNameAndLineNumber GetFileNameAndLineNumber () const
 
void SetFileNameAndLineNumber (MFileNameAndLineNumber fl)
 
void AppendToString (MConstLocalChars str,...)
 
void AppendToString (const char *str,...)
 
void PrependBeforeString (MConstLocalChars str,...)
 
void PrependBeforeString (const char *str,...)
 
- Public Member Functions inherited from MObject
virtual ~MObject ()
 Object destructor.
 
virtual const MClassGetClass () const =0
 Get the final class of the object. More...
 
virtual unsigned GetEmbeddedSizeof () const
 For embedded object types, return the size of the class. More...
 
bool IsEmbeddedObject () const
 Tell if the object is of embedded kind. More...
 
SHOW_INTERNAL MVariant Call (const MStdString &name, const MVariant &params)
 Call the object service with parameters, given as variant. More...
 
MVariant Call0 (const MStdString &name)
 Call the object service with no parameters. More...
 
MVariant Call1 (const MStdString &name, const MVariant &p1)
 Call the object service with one parameter. More...
 
MVariant Call2 (const MStdString &name, const MVariant &p1, const MVariant &p2)
 Call the object service with two parameter. More...
 
MVariant Call3 (const MStdString &name, const MVariant &p1, const MVariant &p2, const MVariant &p3)
 Call the object service with three parameter. More...
 
MVariant Call4 (const MStdString &name, const MVariant &p1, const MVariant &p2, const MVariant &p3, const MVariant &p4)
 Call the object service with four parameter. More...
 
MVariant Call5 (const MStdString &name, const MVariant &p1, const MVariant &p2, const MVariant &p3, const MVariant &p4, const MVariant &p5)
 Call the object service with five parameter. More...
 
MVariant Call6 (const MStdString &name, const MVariant &p1, const MVariant &p2, const MVariant &p3, const MVariant &p4, const MVariant &p5, const MVariant &p6)
 Call the object service with six parameter. More...
 
virtual MVariant CallV (const MStdString &name, const MVariant::VariantVector &params)
 Call the object service with parameters, given as variant vector. More...
 
virtual bool IsPropertyPresent (const MStdString &name) const
 Tell if the property with the given name exists.
 
virtual bool IsServicePresent (const MStdString &name) const
 Tell if the service with the given name exists.
 
virtual MVariant GetProperty (const MStdString &name) const
 Get the property value using name of the property. More...
 
virtual void SetProperty (const MStdString &name, const MVariant &value)
 Set the property using name of the property, and value. More...
 
virtual MStdStringVector GetAllPropertyNames () const
 Return the list of publicly available properties, persistent or not. More...
 
virtual MStdStringVector GetAllPersistentPropertyNames () const
 Return the list of persistent properties. More...
 
virtual void SetPersistentPropertiesToDefault ()
 Set the persistent properties of the object to their default values. More...
 
virtual MVariant GetPersistentPropertyDefaultValue (const MStdString &name) const
 Get the default value of persistent property with the name given. More...
 
virtual void SetPersistentPropertyToDefault (const MStdString &name)
 Set the persistent property with the name given to default value. More...
 
virtual const char * GetType () const
 Get the name of the type for the object (could be the same as class name).
 
virtual void SetType (const MStdString &)
 Intentionally, it will set the name of the type for the object, but the service will not allow setting the name to anything other than the current name. More...
 
virtual void Validate ()
 Validate internal structures of the object. More...
 

Static Public Member Functions

static MEIndexOutOfRangeNew ()
 Create a new exception of this type, all parameters are clear.
 
static M_NORETURN_FUNC void ThrowIndex (int lo, int hi, int val)
 
static M_NORETURN_FUNC void Throw (int lo, int hi, int val)
 
static M_NORETURN_FUNC void ThrowNamedIndex (int lo, int hi, int val, MConstChars arrayName)
 
static M_NORETURN_FUNC void Throw (int lo, int hi, int val, MConstChars arrayName)
 
static void CheckIndex (int lo, int hi, int val)
 
static void Check (int lo, int hi, int val)
 
static void CheckNamedIndex (int lo, int hi, int val, MConstChars arrayName)
 
static void Check (int lo, int hi, int val, MConstChars arrayName)
 
- Static Public Member Functions inherited from MException
static MExceptionNew ()
 Create a new exception of this type, all parameters are clear.
 
static M_NORETURN_FUNC void ThrowUnknownError ()
 Throws this exception as unknown error. More...
 
static M_NORETURN_FUNC void ThrowCannotIndexItem (MConstChars itemName=NULL)
 Throws this exception as error that signifies the item cannot be indexed.
 
static M_NORETURN_FUNC void ThrowNotSupportedForThisType ()
 Throws this exception as error that signifies the operation is not supported for such type.
 
static M_NORETURN_FUNC void ThrowNoValue ()
 Throws this exception as error that signifies the value is absent.
 
static M_NORETURN_FUNC void ThrowNoValue (MFileNameAndLineNumber fl)
 Throws this exception as error that signifies the value given in file and line is absent.
 
static M_NORETURN_FUNC void ThrowBadTimeValue (MConstChars str=NULL)
 Throws this exception as error that signifies the time value is bad.
 
static M_NORETURN_FUNC void ThrowDivisionByZero ()
 Throws this exception as division by zero.
 
static M_NORETURN_FUNC void ThrowCallOutOfSequence ()
 Throws an error that the call is made out of sequence.
 
static M_NORETURN_FUNC void ThrowBadFileFormat (const MStdString &fileName)
 Throws file has bad format.
 
static M_NORETURN_FUNC void ThrowUnexpectedChar (int ch)
 Throws an exception that complains about an unexpected character. More...
 
static M_NORETURN_FUNC void ThrowStringTooLong (int stringLength, int maximumPossibleLength)
 Throws an exception that tells that the string is bigger than the maximum length. More...
 
static M_NORETURN_FUNC void ThrowUnsupportedType (int typetag)
 Throws an error that the given variant type is not supported.
 
static M_NORETURN_FUNC void Throw (const MStdString &message, MErrorEnum::Type code=MErrorEnum::ClientApplicationError)
 Throw this exception with the user message given as parameter. More...
 
static MStdString SimplifyMessageString (const MStdString &message)
 Attempt to simplify the error message string given. More...
 
static MStdString GetKindAsStringStatic (KindType kind)
 Return a string that represents the exception error kind using kind as parameter. More...
 
static MStdString VisualizeParameter (const MVariant &v)
 Make the given variant suitable for showing in error message. More...
 
static char * VisualizeVariantParameter (char *buff, const MVariant &v)
 Make the given variant parameter suitable for showing in error message. More...
 
static char * VisualizeStringParameter (char *buff, const MStdString &v)
 Make the given string parameter suitable for showing in error message. More...
 
static char * VisualizeCharsParameter (char *buff, const char *v)
 Make the given zero terminated string parameter suitable for showing in error message. More...
 
static char * VisualizeCharsParameter (char *buff, const char *v, unsigned len)
 Make the given not zero terminated character parameter suitable for showing in error message. More...
 
static M_NORETURN_FUNC void ThrowSyntaxError (MConstChars offendingString)
 
static M_NORETURN_FUNC void ThrowSyntaxError (MConstChars offendingString, size_t offendingStringLength)
 
static M_NORETURN_FUNC void ThrowUnknownItem (MException::KindType kind, MConstChars name)
 
static M_NORETURN_FUNC void ThrowUnknownItem (MConstChars name)
 
static M_NORETURN_FUNC void ThrowUnknownItem (MException::KindType kind, const MStdString &name)
 
static M_NORETURN_FUNC void ThrowUnknownItem (const MStdString &name)
 
static M_NORETURN_FUNC void Throw (MErrorEnum::Type code, MConstLocalChars str,...)
 
static M_NORETURN_FUNC void Throw (MErrorEnum::Type code, const char *str,...)
 
static M_NORETURN_FUNC void Throw (KindType kind, MErrorEnum::Type code, MConstLocalChars str,...)
 
static M_NORETURN_FUNC void Throw (KindType kind, MErrorEnum::Type code, const char *str,...)
 
- Static Public Member Functions inherited from MObject
static const MClassGetStaticClass ()
 Get the declared class of this particular object. More...
 
static bool IsClassPresent (const MStdString &name)
 Tells if the given class name is available. More...
 

Additional Inherited Members

- Public Types inherited from MException
enum  KindType {
  ErrorNone = 0,
  ErrorInformation = 1,
  ErrorWarning = 2,
  Error = 3,
  ErrorFatal = 4,
  ErrorCommunication = 5,
  ErrorSystem = 6,
  ErrorSocket = 7,
  ErrorConfiguration = 8,
  ErrorSecurity = 9,
  ErrorMeter = 10,
  ErrorSoftware = 15,
  ErrorUser = 20
}
 Enumeration that stands for the kind of the exception. More...
 
enum  { MaximumVisibleParameterLength = 64 }
 
- Static Public Attributes inherited from MException
static const char s_itemIsUnknownErrorString []
 Constant string "Item '%s' is unknown", shared through many libraries.
 
- Static Public Attributes inherited from MObject
static const MClass s_class
 Class of MObject.
 
- Protected Member Functions inherited from MObject
 MObject ()
 Object constructor, protected as the class is abstract.
 
void DoSetPersistentPropertiesToDefault (const MClass *staticClass)
 Set the persistent properties to their default values for one object provided the class for that object. More...
 
- Protected Attributes inherited from MException
MErrorEnum::Type m_code
 Message code for this exception.
 
KindType m_kind
 The kind type for this exception.
 
MStdString m_message
 Message string that represents this exception.
 
MFileNameAndLineNumber m_fileNameAndLineNumber
 File name and line number where the compile error took place. More...
 
MFileNameAndLineNumber::VectorType m_stack
 Stack of file names and line numbers.
 

Detailed Description

Exception, array index is out of range.

The text of the message of the exception depends on the exception parameters/properties. English texts for parameters 'val', 'name', 'lo' and 'hi' are:

  • "Index val for 'name' is out of range lo .. hi" when the name is given.
  • "Index %d is out of range %d .. %d" when there is no name. It is not an error to have the value of hi smaller than low, and the error message might read 0 .. -1 for an empty array.

Constructor & Destructor Documentation

MEIndexOutOfRange::MEIndexOutOfRange ( int  lo,
int  hi,
int  val,
MConstChars  arrayName = NULL 
)

Constructor that takes all properties as parameters.

The text thrown by this exception depends on the parameters given, as described here.

Parameters
loLow bound of the array, inclusive.
hiHigh bound of the array, inclusive. It is not an error to have the value of hi smaller than low, and the error message might read 0 .. -1 for an empty array.
valOffending out of range value. There is a debug time assert that checks if the given value is indeed out of range determined by inclusive range lo .. hi.
arrayNameOptional name of the array. If absent, the name will not be reported.
MEIndexOutOfRange::MEIndexOutOfRange ( const MEIndexOutOfRange ex)

Copy constructor.

Parameters
exException from which to create this object.

Member Function Documentation

static void MEIndexOutOfRange::Check ( int  lo,
int  hi,
int  val 
)
inlinestatic

Checks whether the value is in the given index range, and throws an error if it is not.

Precondition
The value shall be within the given range, or an exception is thrown.
Parameters
loLower index bound such as 0.
hiUpper index bound such as arraySize - 1.
valValue of the index that should be within the given bounds, inclusively.
static void MEIndexOutOfRange::Check ( int  lo,
int  hi,
int  val,
MConstChars  arrayName 
)
inlinestatic

Checks whether the named value is in the given index range, and throws an error if it is not.

Precondition
The value shall be within the given range, or an exception is thrown.
Parameters
loLower index bound such as 0.
hiUpper index bound such as arraySize - 1.
valValue of the index that should be within the given bounds, inclusively.
arrayNameArray name to report at failure.
static void MEIndexOutOfRange::CheckIndex ( int  lo,
int  hi,
int  val 
)
static

Checks whether the value is in the given index range, and throws an error if it is not.

Precondition
The value shall be within the given range, or an exception is thrown.
Parameters
loLower index bound such as 0.
hiUpper index bound such as arraySize - 1.
valValue of the index that should be within the given bounds, inclusively.
static void MEIndexOutOfRange::CheckNamedIndex ( int  lo,
int  hi,
int  val,
MConstChars  arrayName 
)
static

Checks whether the named value is in the given index range, and throws an error if it is not.

Precondition
The value shall be within the given range, or an exception is thrown.
Parameters
loLower index bound such as 0.
hiUpper index bound such as arraySize - 1.
valValue of the index that should be within the given bounds, inclusively.
arrayNameArray name to report at failure.
int MEIndexOutOfRange::GetIndexMax ( ) const
inline

Maximum value of exception-guided index.

int MEIndexOutOfRange::GetIndexMin ( ) const
inline

Minimum value of exception-guided index.

int MEIndexOutOfRange::GetValue ( ) const
inline

Value that exceeds exception-guided range.

virtual MException* MEIndexOutOfRange::NewClone ( ) const
virtual

Clone the exception, so the new exception has the same final type.

Returns
New exception, which is the same as this.
See also
Rethrow() Rethrows the cloned exception with respect to the final exception type.

Reimplemented from MException.

MEIndexOutOfRange& MEIndexOutOfRange::operator= ( const MEIndexOutOfRange ex)
inline

Assignment operator.

Be careful while using the assignment operator when dealing with children of this class, as the properties of a child might not be copied correctly.

Parameters
exException from which to copy this exception.
Returns
Reference to this object.
virtual M_NORETURN_FUNC void MEIndexOutOfRange::Rethrow ( )
virtual

Rethrows this exception.

This polymorphic call is necessary if a generic exception is caught by its base, and had to be saved for future throwing. Simple "throw *ex" will not work in this case, as it will call the copy constructor of the declared exception, not the final class copy constructor.

See also
NewClone() Clones the exception so the new exception has the same final type.

Reimplemented from MException.

void MEIndexOutOfRange::SetIndexMax ( int  hi)
inline

Maximum value of exception-guided index.

void MEIndexOutOfRange::SetIndexMin ( int  lo)
inline

Minimum value of exception-guided index.

void MEIndexOutOfRange::SetValue ( int  value)
inline

Value that exceeds exception-guided range.

static M_NORETURN_FUNC void MEIndexOutOfRange::Throw ( int  lo,
int  hi,
int  val 
)
inlinestatic

Throws this exception with the range and the offending index.

Analog of the following code:

throw MEIndexOutOfIndex(lo, hi, val);

but saves memory, if there are many throws in the source code.

Parameters
loLow bound of the array, inclusive.
hiHigh bound of the array, inclusive. It is not an error to have the value of hi smaller than low, and the error message might read 0 .. -1 for an empty array.
valOffending out of range value. There is a debug time assert that checks if the given value is indeed out of range determined by inclusive range lo .. hi.
static M_NORETURN_FUNC void MEIndexOutOfRange::Throw ( int  lo,
int  hi,
int  val,
MConstChars  arrayName 
)
inlinestatic

Throws this exception with the range and the offending index.

Analog of the following code:

throw MEIndexOutOfIndex(lo, hi, val);

but saves memory, if there are many throws in the source code.

Parameters
loLow bound of the array, inclusive.
hiHigh bound of the array, inclusive. It is not an error to have the value of hi smaller than low, and the error message might read 0 .. -1 for an empty array.
valOffending out of range value. There is a debug time assert that checks if the given value is indeed out of range determined by inclusive range lo .. hi.
arrayNameOptional name of the item, typically the array name. If absent, the name will not be reported.
static M_NORETURN_FUNC void MEIndexOutOfRange::ThrowIndex ( int  lo,
int  hi,
int  val 
)
static

Throws this exception with the range and the offending index.

Analog of the following code:

throw MEIndexOutOfIndex(lo, hi, val);

but saves memory, if there are many throws in the source code.

Parameters
loLow bound of the array, inclusive.
hiHigh bound of the array, inclusive. It is not an error to have the value of hi smaller than low, and the error message might read 0 .. -1 for an empty array.
valOffending out of range value. There is a debug time assert that checks if the given value is indeed out of range determined by inclusive range lo .. hi.
static M_NORETURN_FUNC void MEIndexOutOfRange::ThrowNamedIndex ( int  lo,
int  hi,
int  val,
MConstChars  arrayName 
)
static

Throws this exception with the range and the offending index.

Analog of the following code:

throw MEIndexOutOfIndex(lo, hi, val);

but saves memory, if there are many throws in the source code.

Parameters
loLow bound of the array, inclusive.
hiHigh bound of the array, inclusive. It is not an error to have the value of hi smaller than low, and the error message might read 0 .. -1 for an empty array.
valOffending out of range value. There is a debug time assert that checks if the given value is indeed out of range determined by inclusive range lo .. hi.
arrayNameOptional name of the item, typically the array name. If absent, the name will not be reported.