⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 elementcarray.h

📁 最新官方例子,图形,描述副,基本控件,通讯协议,等等,
💻 H
字号:
#ifndef ELEMENTCARRAY_H
#define ELEMENTCARRAY_H

// INCLUDES

// System includes
#include <e32base.h>

// User includes
#include "elementlist.h"

// CLASS DECLARATION

/**
*
* @class	CElementCArray elementcarray.h
* @brief	Specialisation of CElementList to store list of CChemicalElements as a CArray
*
* Copyright (c) EMCC Software Ltd 2003
* @version 1.0
*/
class CElementCArray : public CElementList
	{
public:
	/**
	* Destructor
	*/
	~CElementCArray();

	/**
	* Two-phase constructor
	* @return A newly constructed object
	*/
	static CElementCArray* NewL();
	
	/**
	* Two-phase constructor
	* @return A newly constructed object, a pointer to which is left on the cleanup stack
	*/
	static CElementCArray* NewLC();
	

	//From CElementList
public:
	/**
	* Getter for number of elements stored in the list
	* @return the number of elements stored in the list
	*/
	TInt NumberOfElements() const;

	/**
	* Returns the element at the specified zero based index--const overload
	* @param aIndex The zero based index of the element required. Must be greater than zero, and less than
	* NumberOfElements()-1
	* @return A const reference to the element specified by aIndex
	* @panic KElementListPanicElementIndexOutOfRange if aIndex < 0 or aIndex > NumberOfElements()-1
	*/
	const CChemicalElement& At(TInt aIndex) const;

	/**
	* Returns the element at the specified zero based index--non-const overload
	* @param aIndex The zero based index of the element required. Must be greater than zero, and less than
	* NumberOfElements()-1
	* @return A non-const (i.e. modifiable) reference to the element specified by aIndex
	* @panic KPanicElementIndexOutOfRange if aIndex < 0 or aIndex > NumberOfElements()-1
	*/
	CChemicalElement& At(TInt aIndex);

	/**
	* Appends the given element onto the end of the list. Note that ownership of the element is passed to the
	* list, as denoted by the use of a CChemicalElement*.
	* @param aElement The element to be appended to the end of the list. Note its ownership is transferred, so
	* responsibility for aElement's destruction is no longer the responsibility of the caller.
	* @panic KElementListPanicNullElement If aElement==0
	*/
	void AppendL(const CChemicalElement* aElement);

	/**
	* Deletes all of the elements owned by the list, and returns the memory allocated to them to the global heap.
	* Effectively resets the list to be empty.
	*/
	void DeleteAllElements();

	/**
	* Searches the list for an element with name aName, and returns its zero-based index if found.
	* @param aName The name to search for.
	* @return The zero-based index of the element within the list.
	* @leave KErrNotFound If an element with name aName is not found.
	*/
	TInt FindElementByNameL(const TDesC& aName) const;

	/**
	* Searches the list for an element with symbol aSymbol, and returns its zero-based index if found.
	* @param aSymbol The symbol to search for.
	* @return The zero-based index of the element within the list.
	* @leave KErrNotFound If an element with symbol aSymbol is not found.
	*/
	TInt FindElementBySymbolL(const TDesC& aSymbol) const;

	/**
	* Searches the list for an element with atomic number aAtomicNumber, and returns its zero-based index if found.
	* @param aName The atomic number to search for.
	* @return The zero-based index of the element within the list.
	* @leave KErrNotFound If an element with atomic number aAtomicNumber is not found.
	*/
	TInt FindElementByAtomicNumberL(TInt aAtomicNumber) const;

	/**
	* UNSUPPORTED--cannot sort by name as it is stored in the element by pointer, rather than value.
	* @leave KErrNotSupported ALWAYS
	*/
	void SortByNameL();

	/**
	* Re-orders the list in ascending symbol order (i.e. alphabetical by symbol)
	* @leave KErrGeneral if the stack overflows during sorting
	*/
	void SortBySymbolL();

	/**
	* Re-orders the list in ascending atomic number order (i.e. smallest atomic number first)
	* @leave KErrGeneral if the stack overflows during sorting
	*/
	void SortByAtomicNumberL();

	/**
	* UNSUPPORTED--cannot sort CArray types on floating point elements
	* @leave KErrNotSupported ALWAYS
	*/
	void SortByRelativeAtomicMassL();

private:
	//Work around for CArrayPtr find and sort issue
	class TKeyArrayPtr : public TKeyArrayFix
		{
	public:
		inline TKeyArrayPtr(TInt aOffset, TKeyCmpText aType) : TKeyArrayFix(aOffset, aType) {};
		inline TKeyArrayPtr(TInt aOffset, TKeyCmpText aType, TInt aLength) :
			TKeyArrayFix(aOffset, aType, aLength) {};
		inline TKeyArrayPtr(TInt aOffset, TKeyCmpNumeric aType) : TKeyArrayFix(aOffset, aType) {};
		virtual TAny* At(TInt aIndex) const;
		};

private:
	CElementCArray();
	void ConstructL();

	TInt DoFindL(TKeyArrayPtr& aKey, const TDesC& aName, const TDesC& aSymbol, TInt aAtomicNumber) const;


private:
	CArrayPtrFlat<CChemicalElement>*	iElementArray;
	};
#endif // #ifndef ELEMENTCARRAY_H

// End of File

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -