Finale PDK Framework  0.54
Public Member Functions | List of all members
__FCCollection Class Reference

Base class for all collection classes. A collection is a storage that can store multiple objects of similar types. More...

#include <ff_basecollection.h>

Inheritance diagram for __FCCollection:
__FCIteratorBase __FCBase __FCCollectionData __FCCollectionTinyXML __FCNoteEntryCollection __FCUserWindow FCCells FCDocuments FCGuides FCNoteEntry FCNoteEntryLayers FCNotePitches FCNumberCollection FCNumbers FCParts FCPDFWriter FCPercussionLayoutNotesLookup FCPercussionMapNotes FCPercussionMapNotesLookup FCPercussionNoteTypes FCSettingsPairs FCShapeDefInstructions FCStaffListLookup FCStrings FCTreeNode

Public Member Functions

virtual const char * ClassName ()
 Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child class. More...
 
 __FCCollection ()
 The constructor.
 
virtual ~__FCCollection ()
 The virtual destructor, which deallocates the array and also all its elements. More...
 
int GetCount () const
 Returns the number of elements of the collection. More...
 
void Add (__FCBase *pNewItem)
 Adds an element to the end of the collection. More...
 
bool UniqueAdd (__FCBase *pNewItem)
 Adds an element to the end of the collection, but only if it doesn't exist in the collection before. More...
 
void InsertItemAt (__FCBase *pNewItem, int index)
 Inserts an item into the collection. More...
 
bool ElementExists (__FCBase *pQueryItem)
 Returns true if the element is found in the collection, otherwise false. More...
 
void ClearAll ()
 Destroys all the objects in the collection and empties the collection. More...
 
void DetachAll ()
 Removes all the objects from the collection, without freeing/destroying the objects. More...
 
__FCBaseGetItemAt (int index)
 Returns the object at the index position. Index is 0-based. More...
 
__FCBaseGetLastItem ()
 Returns the last item in the collection.
 
__FCBaseoperator[] (int index)
 Identical to the GetItemAt method.
 
int GetIndexOf (__FCBase *pObject)
 Returns the 0-based order index for the object within the collection. More...
 
__FCBaseDetachItemAt (int index)
 Removes the object at the index position. Index is 0-based. More...
 
bool ClearItemAt (int index)
 Deletes the object at the index position and disposes the object. Index is 0-based. More...
 
int ToEndFrom (int index, FCIteratorHandler *pIterator)
 Processes one element after another and iterates from one specific index to the end of the collection. More...
 
virtual int ForEach (FCIteratorHandler *pIterator)
 Processes all elements in the collection (starting with item 0), or until the iterator Iterate() returns false. More...
 
virtual int ForEachIndex (FCIteratorHandler *pIterator)
 Same as ForEach, but the IterateIndex callback of the iterator handler is used instead.
 
virtual __FCBaseFindFirst (FCIteratorHandler *pIterator)
 Process elements until a match is found. More...
 
__FCBaseFindUserData (void *data_to_find)
 Returns the first element in the collection that has the indicated userdata. More...
 
bool Sort (FCIteratorHandler *pIterator)
 Sorts the elements of. More...
 
bool Swap (int index1, int index2)
 Swaps to items in the collection. More...
 
bool IsEmpty ()
 Returns true if the collection contains no elements. More...
 
int MoveFrom (__FCCollection *pOtherCollection, bool unique=false)
 Moves elements from another collection into this collection. The other will be empty after the operation. More...
 
bool IsIdentical (__FCCollection *pCompareCollection)
 Returns true if two collections are considered to be identical. More...
 
virtual void DebugDump ()
 Outputs the class data/information for debugging purposes. More...
 
- Public Member Functions inherited from __FCIteratorBase
 __FCIteratorBase ()
 The constructor. More...
 
- Public Member Functions inherited from __FCBase
virtual const PDKFRAMEWORK_CLASSID GetClassID ()
 Returns the internal class ID for the PDK Framework class. This is implemented mostly because Lua has problems to resolve the true classes of inherited objects. More...
 
 __FCBase ()
 The constructor.
 
virtual ~__FCBase ()
 Virtual destructor, so all inherited classes get the virtual destructor. More...
 
void DebugMsgDigit (const char *pszPrefixText, int i)
 Creates a simple Message Box for debug purposes. The text appears with the extra digit (in decimal presentation) appearing afterwards. More...
 
void DebugMsgHex (const char *pszPrefixText, int i)
 Creates a simple Message Box for debug purposes. The text appears with the extra digit (as a hexadecimal number) appearing afterwards. More...
 
void DebugMsgString (const char *pszPrefixText, const char *thestring)
 Creates a simple Message Box for debug purposes. The text appears with the extra string appearing afterwards. More...
 
void DebugMsg (const char *pszMsg)
 Creates a simple Message Box for debug purposes with just one text string. More...
 
void DebugOutMenuInfo (FCUI *pUI, int menuixd_horiz, int menuixd_vert) const
 Outputs the menu command info for debugging purposes. More...
 
int DebugOutFormat (const char *fmt,...)
 Outputs debug text using C style "printf" syntax. More...
 
virtual void DebugDataDump ()
 Outputs a memory dump of the data block in the object for debugging purposes. More...
 
virtual void DebugDataByteArrayDump ()
 Outputs a memory dump of the data block in the object for debugging purposes, as a C++ byte array. More...
 
void Set16BitFlag (FLAG_16 *flag, FLAG_16 flagbits, bool state)
 Sets a 16 bit flag in the data block. More...
 
void Set32BitFlag (FLAG_32 *flag, FLAG_32 flagbits, bool state)
 Sets a 32 bit flag in the data block. More...
 
bool GetBitFlag (FLAG_32 flag, FLAG_32 flagbits) const
 Gets a state from flag bits. Returns true if any bit in the mask is set. More...
 
void SetUserData (void *pData)
 Sets the user data attached to the instance of an object. More...
 
void SetUserData2 (void *pData)
 Sets the additional user data attached to the instance of an object. More...
 
void * GetUserData () const
 Gets the user data attached to the instance of an object. More...
 
void * GetUserData2 () const
 Gets the additional user data attached to the instance of an object. More...
 
virtual bool IsIdentical (__FCBase *pCompareObject)
 Returns true if the data in the passed object is considered to be identical to the current object, otherwise false. More...
 
void StoreXML_String (tinyxml2::XMLElement *pParentNode, const char *pszElementName, FCString *pStringValue)
 Helper function to store FCString objects in the XML file. More...
 
void StoreXML_Integer (tinyxml2::XMLElement *pParentNode, const char *pszElementName, int value)
 Helper function to store integer objects in the XML file. More...
 
void StoreXML_Bool (tinyxml2::XMLElement *pParentNode, const char *pszElementName, bool value)
 Helper function to store boolean objects in the XML file. More...
 
void StoreXML_StringAttribute (tinyxml2::XMLElement *pNode, const char *pszAttributeName, FCString *pStringValue)
 Helper function to store FCString objects in the XML file, as an attribute to a node. More...
 
void StoreXML_IntegerAttribute (tinyxml2::XMLElement *pNode, const char *pszAttributeName, int value)
 Helper function to store integer objects in the XML file, as an attribute to a node. More...
 
void StoreXML_BoolAttribute (tinyxml2::XMLElement *pNode, const char *pszAttributeName, bool value)
 Helper function to store boolean objects in the XML file, as an attribute to a node. More...
 
void StoreXML_FloatAttribute (tinyxml2::XMLElement *pNode, const char *pszAttributeName, float value)
 Helper function to store floating point objects in the XML file, as an attribute to a node. More...
 
virtual void StoreToXML (tinyxml2::XMLElement *pParentNode)
 Virtual method that is used to store an object's data. More...
 
bool ReadXML_String (tinyxml2::XMLElement *pParentNode, const char *pszElementName, FCString *pStringValue)
 Helper method to read FCString objects from the XML file. More...
 
bool ReadXML_Integer (tinyxml2::XMLElement *pParentNode, const char *pszElementName, int *pValue)
 Helper method to read integer objects from the XML file. More...
 
bool ReadXML_Bool (tinyxml2::XMLElement *pParentNode, const char *pszElementName, bool *pValue)
 Helper method to read boolean objects from the XML file. More...
 
bool ReadXML_StringAttribute (tinyxml2::XMLElement *pNode, const char *pszAttributeName, FCString *pStringValue)
 Helper method to read FCString objects from the XML file, as an attribute to a node. More...
 
bool ReadXML_IntegerAttribute (tinyxml2::XMLElement *pNode, const char *pszAttributeName, int *pValue)
 Helper method to read integer objects from the XML file, as an attribute to a node. More...
 
bool ReadXML_BoolAttribute (tinyxml2::XMLElement *pNode, const char *pszAttributeName, bool *pValue)
 Helper method to read boolean objects from the XML file, as an attribute to a node. More...
 
bool ReadXML_FloatAttribute (tinyxml2::XMLElement *pNode, const char *pszAttributeName, float *pValue)
 Helper method to read floating point objects from the XML file, as an attribute to a node. More...
 
virtual bool ReadFromXML (tinyxml2::XMLElement *pParentNode)
 Virtual method that is used to read object data. More...
 

Additional Inherited Members

- Public Types inherited from __FCBase
enum  PDKFRAMEWORK_CLASSID {
  FCID_UNKNOWN = 0, FCID_ACCIDENTALMOD, FCID_ALLOTMENT, FCID_ARTICULATION,
  FCID_ARTICULATIONDEF, FCID_BACKWARDREPEAT, FCID_BASELINE, FCID_BEAMMOD,
  FCID_BEATCHARTELEMENT, FCID_BROKENBEAMMOD, FCID_CATEGORYDEF, FCID_CELLCLEFCHANGE,
  FCID_CELLFRAMEHOLD, FCID_CELLGRAPHIC, FCID_CELLTEXT, FCID_CENTERSMARTSHAPE,
  FCID_CHORD, FCID_CHORDPREFS, FCID_CHORDSUFFIXELEMENT, FCID_CHORUSSYLLABLE,
  FCID_CLEFDEF, FCID_COMPOSITETIMESIGBOTTOMELEMENT, FCID_COMPOSITETIMESIGTOPELEMENT, FCID_CROSSSTAFFMOD,
  FCID_CUSTOMSMARTLINEDEF, FCID_CUSTOMSTEMMOD, FCID_DISTANCEPREFS, FCID_DOTMOD,
  FCID_ENCLOSURE, FCID_ENDINGREPEAT, FCID_ENTRYALTERMOD, FCID_EXECUTABLESHAPEDEF,
  FCID_EXPRESSION, FCID_FONTINFO, FCID_FONTPREFS, FCID_FREEZESYSTEM,
  FCID_FRETBOARDSTYLEDEF, FCID_FRETBOARDSTYLEDEFS, FCID_FRETBOARDGROUPDEF, FCID_FRETBOARDGROUPDEFS,
  FCID_FRETINSTRUMENTDEF, FCID_GENERALPREFS, FCID_GRIDSGUIDESPREFS, FCID_GROUP,
  FCID_GROUPNAMEPOSITIONPREFS, FCID_HUMANPLAYBACKPREFS, FCID_INDEPENDENTCELLDETAIL, FCID_INSTRUMENTDEF,
  FCID_INSTRUMENTPLAYBACKDATA, FCID_KEYSIGNATURE, FCID_LAYERPREFS, FCID_LYRICSPREFS,
  FCID_MEASURE, FCID_MEASURENUMBERREGION, FCID_METATOOLASSIGNMENT, FCID_MIDIEXPRESSION,
  FCID_MISCDOCPREFS, FCID_MULTIMEASUREREST, FCID_MULTIMEASURERESTPREFS, FCID_MULTISTAFFINSTRUMENT,
  FCID_MULTISTAFFINSTRUMENTS, FCID_MUSICCHARACTERPREFS, FCID_MUSICSPACINGPREFS, FCID_NUMBER,
  FCID_NOTEHEADMOD, FCID_OTHERINCI, FCID_PERCUSSIONLAYOUTNOTE, FCID_PERCUSSIONSTAFF,
  FCID_PERFORMANCEMOD, FCID_PAGE, FCID_PAGEFORMATPREFS, FCID_PAGEGRAPHIC,
  FCID_PAGETEXT, FCID_PART, FCID_PARTEXTRACTPREFS, FCID_PARTSCOPEPREFS,
  FCID_PERCUSSIONNOTEMOD, FCID_PIANOBRACEPREFS, FCID_PLAYBACKPREFS, FCID_RAWTEXT,
  FCID_REPEATPREFS, FCID_SECONDARYBEAMBREAKMOD, FCID_SECTIONSYLLABLE, FCID_SEPARATEMEASURENUMBER,
  FCID_SEPARATEPLACEMENT, FCID_SHAPEDEF, FCID_SHAPEEXPRESSIONDEF, FCID_SLURCONTOURPREFS,
  FCID_SIZEPREFS, FCID_SMARTSHAPE, FCID_SMARTSHAPEENTRYMARK, FCID_SMARTSHAPEMEASUREMARK,
  FCID_SMARTSHAPEPREFS, FCID_STAFF, FCID_STAFFLIST, FCID_STAFFNAMEPOSITION,
  FCID_STAFFNAMEPOSITIONPREFS, FCID_STAFFSTYLEASSIGN, FCID_STAFFSTYLEDEF, FCID_STAFFSYSTEM,
  FCID_STEMCONNECTIONTABLE, FCID_STEMMOD, FCID_STRING, FCID_SYLLABLEENTRYMOD,
  FCID_SYSTEMSTAFF, FCID_TABLATURENOTEMOD, FCID_TEMPOELEMENT, FCID_TEXTBLOCK,
  FCID_TEXTEXPRESSIONDEF, FCID_TEXTREPEAT, FCID_TEXTREPEATDEF, FCID_TIEMOD,
  FCID_TIEPREFS, FCID_TIECONTOURPREFS, FCID_TIEPLACEMENTPREFS, FCID_TIMESIGNATURE,
  FCID_TUPLET, FCID_TUPLETPREFS, FCID_VERSESYLLABLE
}
 Constants for the GetClassID method. More...
 
enum  MEASUREMENTUNITS {
  MEASUREMENTUNIT_DEFAULT = UNIT_DEFAULT, MEASUREMENTUNIT_EVPUS = UNIT_EVPUS, MEASUREMENTUNIT_INCHES = UNIT_INCHES, MEASUREMENTUNIT_CENTIMETERS = UNIT_CENTS,
  MEASUREMENTUNIT_POINTS = UNIT_POINTS, MEASUREMENTUNIT_PICAS = UNIT_PICAS, MEASUREMENTUNIT_SPACES = UNIT_SPACES, MEASUREMENTUNIT_MILLIMETERS = 100
}
 Constants for Finale's standard measurement units. More...
 
- Static Public Member Functions inherited from __FCBase
static void DebugOutPtr (const char *pszPrefixText, void *ptr)
 Static method that outputs a line for debugging purposes. The prefix text appears with the extra ptr (in hexadeximal representation) appearing afterwards. More...
 
static void DebugOutDigit (const char *pszPrefixText, int i)
 Static method that outputs a line for debugging purposes. The text appears with the extra digit (in decimal presentation) appearing afterwards. More...
 
static void DebugOutFloat (const char *pszPrefixText, float f)
 Static method that outputs a line for debugging purposes. The text appears with the extra float value appearing afterwards. More...
 
static void DebugOutTag (const char *pszPrefixText, EXTAG extag)
 Static method that outputs a line for debugging purposes. The text appears with the EXTAG (in text) appearing afterwards. More...
 
static void DebugOutHex (const char *pszPrefixText, int i)
 Static method that outputs a line for debugging purposes. The text appears with the extra digit (in hexadecimal presentation) appearing afterwards. More...
 
static void DebugOutBin (const char *pszPrefixText, int i)
 Static method that outputs a line for debugging purposes. The text appears with the extra digit (in binary presentation) appearing afterwards. More...
 
static void DebugOutString (const char *pszPrefixText, const char *thestring)
 Static method that outputs a line for debugging purposes (C string version). The text appears with the extra string appearing afterwards. More...
 
static void DebugOutString (const char *pszPrefixText, FCString *pString)
 Static method that outputs a line for debugging purposes (FCString version). The text appears with the extra string appearing afterwards. More...
 
static void DebugOutBool (const char *pszPrefixText, bool state)
 Static method that outputs a line for debugging purposes. The boolean state appears afterwards as either "TRUE" or "FALSE". More...
 
static void DebugOutBlock (const void *pBuffer, int startoffset, int size)
 Static method that outputs a memory block for debugging purposes. Eight bytes per line will appear (as hex digits) until the whole memory block is dumped. More...
 
static void DebugOutByteArrayBlock (const void *pBuffer, int startoffset, int size)
 Static method that outputs a memory block for debugging purposes. Eight bytes per line will appear (as hex digits) as a C++ onebyte array, until the whole memory block is dumped. More...
 
static void DebugOut (const char *pszLine)
 Static method to output a line of text for debugging purposes. More...
 

Detailed Description

Base class for all collection classes. A collection is a storage that can store multiple objects of similar types.

Any object that is in the collection at descruction time will be destroyed. This class should not be used directly, but can be inherited by a class who needs to collect items.

Constructor & Destructor Documentation

virtual __FCCollection::~__FCCollection ( )
inlinevirtual

The virtual destructor, which deallocates the array and also all its elements.

It's the caller's responsibility to make sure that:

  • There are no multiple identical objects in the collection when the collection is disposed.
  • The objects in the collection aren't referenced elsewhere when the collection is disposed.

Member Function Documentation

void __FCCollection::Add ( __FCBase pNewItem)

Adds an element to the end of the collection.

It's the caller's responsibility to make sure that there isn't multiple identical objects in the collection at the collection's destruction.

virtual const char* __FCCollection::ClassName ( )
inlinevirtual

Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child class.

Lua-supported.

Reimplemented from __FCIteratorBase.

Reimplemented in FCPercussionLayoutNotesLookup, FCPercussionMapNotesLookup, FCPercussionMapNotes, FCNoteEntryLayer, FCSmartShapes, FCCustomSmartLineDefs, FCSmartShapeEntryMarks, FCSmartShapeMeasureMarks, FCNoteEntryCell, FCNoteEntries, FCMetatoolAssignments, FCChords, FCMidiExpressions, FCCellFrameHolds, FCCellTexts, FCCellGraphics, FCCellClefChanges, FCStaffLists, FCInstrumentDefs, FCShapeDefInstructions, FCPercussionLayoutNotes, FCTempoElements, FCBeatChartElements, FCFretboardGroupDefs, FCFretboardStyleDefs, FCChordSuffixElements, FCShapeDefs, FCExecutableShapeDefs, FCTextRepeats, FCNumberCollection, FCFretInstrumentDefs, FCTextRepeatDefs, FCPageGraphics, FCAllotments, FCMultiStaffInstruments, FCFreezeSystems, FCMultiMeasureRests, FCStaffStyleAssigns, FCStaffStyleDefs, FCCompositeTimeSigBottom, FCStrings, FCSeparatePlacements, FCTextBlocks, FCNoteEntry, FCSeparateMeasureNumbers, FCPageTexts, FCExpressions, FCSettingsPairs, FCShapeExpressionDefs, __FCCollectionNoInciDetail, FCTextExpressionDefs, __FCCollectionPrefs, __FCCollectionDetail, FCNotePitches, __FCCollectionGlobal, __FCCollectionNoInciOther, FCCategoryDefs, FCPerformanceMods, FCCompositeTimeSigTop, FCCrossStaffMods, __FCCollectionInciOther, FCDotMods, FCEndTieMods, __FCCollectionEntryDetail, FCStartTieMods, FCSystemStaves, FCParts, FCTablatureNoteMods, __FCCollectionData, FCArticulationDefs, FCPercussionNoteMods, FCAccidentalMods, FCNoteheadMods, FCSectionSyllables, FCMeasureNumberRegions, FCChorusSyllables, FCCells, FCVerseSyllables, FCStaves, FCDocuments, FCTuplets, FCClefDefs, __FCCollectionNoInciCellDetail, FCMeasures, __FCCollectionCellDetail, FCSecondaryBeamMods, FCStaffSystems, FCPrimaryBeamMods, FCBaselines, FCBrokenBeamMods, FCCustomStemMods, FCSecondaryBeamBreakMods, FCPages, FCStemMods, FCGroups, FCArticulations, and FCOtherIncis.

void __FCCollection::ClearAll ( )
inline

Destroys all the objects in the collection and empties the collection.

Use DetachAll to remove the objects without destroying them.

bool __FCCollection::ClearItemAt ( int  index)

Deletes the object at the index position and disposes the object. Index is 0-based.

The object must have the __FCBase class as a base parent.

Returns
True if item was deleted from the collection. If the index value is out of range, false is returned.
virtual void __FCCollection::DebugDump ( )
inlinevirtual

Outputs the class data/information for debugging purposes.

Accessible if PDK_FRAMEWORK_DEBUG is defined.

When child class inherit this method to output the contents of its own members, it should call the parent before providing its own output.

Reimplemented from __FCBase.

Reimplemented in FCNoteEntryLayer, FCTreeNode, and FCNotePitches.

void __FCCollection::DetachAll ( )
inline

Removes all the objects from the collection, without freeing/destroying the objects.

use ClearAll to destroy the objects.

__FCBase * __FCCollection::DetachItemAt ( int  index)

Removes the object at the index position. Index is 0-based.

The removed object pointer is not disposed by this operation.

Returns
The object pointer if item was removed from the collection. If the index value is out of range, NULL is returned.
bool __FCCollection::ElementExists ( __FCBase pQueryItem)

Returns true if the element is found in the collection, otherwise false.

__FCBase * __FCCollection::FindFirst ( FCIteratorHandler pIterator)
virtual

Process elements until a match is found.

This method uses the Match virtual method in the iterator handler to decide a match.

Returns
NULL if no element was found in the collection. Otherwise, the found element.

Implements __FCIteratorBase.

__FCBase * __FCCollection::FindUserData ( void *  data_to_find)

Returns the first element in the collection that has the indicated userdata.

Parameters
data_to_findThe data to find as userdata
Returns
The first found object. NULL if no matching object was found in the collection.
int __FCCollection::ForEach ( FCIteratorHandler pIterator)
virtual

Processes all elements in the collection (starting with item 0), or until the iterator Iterate() returns false.

Parameters
pIteratorPointer to an iterator object that will process each object.
Returns
Returns the total number of processed items.

Implements __FCIteratorBase.

int __FCCollection::GetCount ( ) const
inline

Returns the number of elements of the collection.

Lua-supported (also as a read-only property).

int __FCCollection::GetIndexOf ( __FCBase pObject)

Returns the 0-based order index for the object within the collection.

Returns
-1 if the item isn't found in the collection. Otherwise, the 0-based index value.
__FCBase * __FCCollection::GetItemAt ( int  index)

Returns the object at the index position. Index is 0-based.

Returns
Pointer to the object. If the index value is out of range, NULL is returned.
void __FCCollection::InsertItemAt ( __FCBase pNewItem,
int  index 
)

Inserts an item into the collection.

Parameters
pNewItemThe item to insert.
index0-based index. If the index value is bigger than the collection, the item is appended at the end instead.
bool __FCCollection::IsEmpty ( )
inline

Returns true if the collection contains no elements.

Lua-supported.

bool __FCCollection::IsIdentical ( __FCCollection pCompareCollection)
inline

Returns true if two collections are considered to be identical.

The collections are considered to be identical if:

  1. The number of items are the same in both collections
  2. The virtual method __FCBase::IsIdentical returns true when each element's data is compared
Parameters
pCompareCollectionThe collection to compare.
int __FCCollection::MoveFrom ( __FCCollection pOtherCollection,
bool  unique = false 
)
inline

Moves elements from another collection into this collection. The other will be empty after the operation.

Parameters
pOtherCollectionThe pointer to the collection containing the elements to move.
uniqueIf true, only append new elements to the current collection if they are unique. If false, append all elements to the current collection.
Returns
The number of moved elements.
bool __FCCollection::Sort ( FCIteratorHandler pIterator)

Sorts the elements of.

This method uses the Compare virtual method in the iterator handler to decide the relationship between 2 objects.

Parameters
pIteratorPointer to the iterator handler object.
Returns
True if the collection was changed during the sorting.
bool __FCCollection::Swap ( int  index1,
int  index2 
)
inline

Swaps to items in the collection.

Returns
True if a swap was made.
int __FCCollection::ToEndFrom ( int  index,
FCIteratorHandler pIterator 
)

Processes one element after another and iterates from one specific index to the end of the collection.

Parameters
indexThe 0-based index value where the iteration should start.
pIteratorPointer to an iterator object that will process each object.
Returns
Returns the total number of processed items.
bool __FCCollection::UniqueAdd ( __FCBase pNewItem)
inline

Adds an element to the end of the collection, but only if it doesn't exist in the collection before.

Returns
True if the element was added, otherwise false.