Beispiel #1
0
/*============================================
	SUMiscUtils::LinkListenerToControls
	
	Note:
	This is the same as the UReanimator method, but this will work with
	any broadcaster instead of just LControl.
==============================================*/
void SUMiscUtils::LinkListenerToControls(
		LListener	*inListener,
		LView		*inControlContainer,
		ResIDT		inResListID)
{
	#pragma options align=mac68k

	typedef struct {
		SInt16	numberOfItems;
		PaneIDT	itemID[1];
	} SResList, *SResListP;

	#pragma options align=reset

	StResource	idList('RidL', inResListID);
	HLockHi(idList.mResourceH);
	SResListP	resListP = (SResListP) *idList.mResourceH;
	
	for (SInt16 i = 0; i < resListP->numberOfItems; i++) 
	{
		LPane* thePane = inControlContainer->FindPaneByID(resListP->itemID[i] ) ;
		LBroadcaster 	*theBroad = dynamic_cast<LBroadcaster*>(thePane);
		if (theBroad != nil) {
			theBroad->AddListener( inListener );
		}
	}
}
Beispiel #2
0
void hash_index_object_t::test<3>()
{
    LLUUIDHashMap<UUIDTableEntry, 5>	hashTable(UUIDTableEntry::uuidEq, UUIDTableEntry());
    const int numElementsToCheck = 10;
    std::vector<LLUUID> idList(numElementsToCheck);
    int i;

    for (i = 0; i < numElementsToCheck; i++)
    {
        LLUUID id;
        id.generate();
        UUIDTableEntry entry(id, i);
        hashTable.set(id, entry);
        idList[i] = id;
    }

    for (i = 0; i < numElementsToCheck; i++)
    {
        LLUUID id = idList[i];
        // set new entry with value = i+numElementsToCheck
        UUIDTableEntry entry(id, i+numElementsToCheck);
        hashTable.set(id, entry);
    }

    for (i = 0; i < numElementsToCheck; i++)
    {
        LLUUID idToCheck = idList[i];
        UUIDTableEntry entryToCheck = hashTable.get(idToCheck);
        ensure("set/get did not work", entryToCheck.getID() == idToCheck && entryToCheck.getValue() == (size_t)(i+numElementsToCheck));
    }
}
Beispiel #3
0
void datalogProgram ::scheme(){
    predicate mypredicate;
    if (tokens.at(vecIndex).getTokenType() == ID){
        mypredicate.ident = tokens.at(vecIndex).getText();
        match(ID);
        match(LEFT_PAREN);
        if (tokens.at(vecIndex).getTokenType() == ID){
            parameter aParam;
            aParam.textValue =tokens.at(vecIndex).getText();
            match(ID);
            mypredicate.myParameters.push_back(aParam);
            idList(mypredicate.myParameters);
            match(RIGHT_PAREN);
            schemes.push_back(mypredicate);
        }
        else{
            if (currentStatus == true){
                currentStatus = false;
                falseTok = tokens.at(vecIndex);
            }
        }
        
    }
    else{
        if (currentStatus == true){
            currentStatus = false;
            falseTok = tokens.at(vecIndex);
        }
    }
}
Beispiel #4
0
void hash_index_object_t::test<6>()
{
    LLUUIDHashMap<UUIDTableEntry, 2>	hashTable(UUIDTableEntry::uuidEq, UUIDTableEntry());
    LLUUIDHashMapIter<UUIDTableEntry, 2> hashIter(&hashTable);
    const int numElementsToCheck = 256;
    std::vector<LLUUID> idList(numElementsToCheck);
    int i;

    for (i = 0; i < numElementsToCheck; i++)
    {
        LLUUID id;
        id.generate();
        // LLUUIDHashMap uses mData[0] to pick the bucket
        // overwrite mData[0] so that it ranges from 0 to 255
        // to create a sparse map
        id.mData[0] = i;
        UUIDTableEntry entry(id, i);
        hashTable.set(id, entry);
        idList[i] = id;
    }

    hashIter.first();
    int numElementsIterated = 0;
    while(!hashIter.done())
    {
        numElementsIterated++;
        UUIDTableEntry tableEntry = *hashIter;
        LLUUID id = tableEntry.getID();
        hashIter.next();
        ensure("Iteration failed for sparse map", tableEntry.getValue() < (size_t)numElementsToCheck && idList[tableEntry.getValue()] ==  tableEntry.getID());
    }

    ensure("iteration count failed", numElementsIterated == numElementsToCheck);
}
Beispiel #5
0
void hash_index_object_t::test<7>()
{
    LLUUIDHashMap<UUIDTableEntry, 2>	hashTable(UUIDTableEntry::uuidEq, UUIDTableEntry());
    LLUUIDHashMapIter<UUIDTableEntry, 2> hashIter(&hashTable);
    const int numElementsToCheck = 256;
    std::vector<LLUUID> idList(numElementsToCheck);
    int i;

    LLUUID uuidtoSearch;
    for (i = 0; i < numElementsToCheck; i++)
    {
        LLUUID id;
        id.generate();
        // LLUUIDHashMap uses mData[0] to pick the bucket
        // overwrite mData[0] so that it ranges from 0 to 255
        // to create a sparse map
        id.mData[0] = i;
        UUIDTableEntry entry(id, i);
        hashTable.set(id, entry);
        idList[i] = id;

        // pick uuid somewhere in the middle
        if (i == 5)
        {
            uuidtoSearch = id;
        }
    }

    hashIter.first();
    int numElementsIterated = 0;
    while(!hashIter.done())
    {
        numElementsIterated++;
        UUIDTableEntry tableEntry = *hashIter;
        LLUUID id = tableEntry.getID();
        if (uuidtoSearch == id)
        {
            break;
        }
        hashIter.next();
    }

    // current iterator implementation will not allow any remove operations
    // until ALL elements have been iterated over. this seems to be
    // an unnecessary restriction. Iterator should have a method to
    // reset() its state so that further operations (inckuding remove)
    // can be performed on the HashMap without having to iterate thru
    // all the remaining nodes.

//		 hashIter.reset();
//		 hashTable.remove(uuidtoSearch);
//		 ensure("remove after iteration reset failed", hashTable.check(uuidtoSearch) == FALSE);
}
Beispiel #6
0
void datalogProgram ::idList(vector<parameter>& myParams){
    if (tokens.at(vecIndex).getTokenType() == COMMA){
        match (COMMA);
        parameter aParam;
        aParam.textValue = tokens.at(vecIndex).getText();
        myParams.push_back(aParam);
        match(ID);
        idList(myParams);
    }
    else if(tokens.at(vecIndex).getTokenType() == RIGHT_PAREN){}
    else{
        if (currentStatus == true){
            currentStatus = false;
            falseTok = tokens.at(vecIndex);
        }
    }
}
list<int>* ClassifBPlusTree::searchAllIds(Key k){
	pair<Record*, BPlusTreeIterator*> searchResult = BPlusTree::search(k);
	list<int>* toReturn = new list<int>;

	if(searchResult.first != NULL){
		int listOffset = searchResult.first->getData()->readAsInt(0);
		ListofID idList(this->fileBlockManager, listOffset);
		list<int>::iterator it;
		list<int> listOfIds = idList.getListID();
		for(it=listOfIds.begin();it!=listOfIds.end();++it)
		{
			int current = *it;
			toReturn->push_back(current);
		}
	}
	return toReturn;
}
Beispiel #8
0
  void statement () {

    std::cout << "\nIn statement\n";
    nextToken = getNextToken();

    switch (nextToken) {

      case (scanner::Id) :

        ident ();
        match (scanner::AssignOp);
        expression();
        match (scanner::SemiColon);

        break;

      case (scanner::ReadSym) :

        match (scanner::ReadSym);
        match (scanner::LParen);
        idList();
        match (scanner::RParen);
        match (scanner::SemiColon);

        break;

      case (scanner::WriteSym) :

        match (scanner::WriteSym);
        match (scanner::LParen);
        exprList ();
        match (scanner::RParen);
        match (scanner::SemiColon);
        break;

      default:

        syntaxError (nextToken);

    }

    std::cout << "\nEnd statement\n";

  }
Beispiel #9
0
  void idList () {

    std::cout << "\nIn idList\n";

    ident();

    nextToken = getNextToken();

    if (nextToken == scanner::Comma) {

      match(scanner::Comma);
      
      idList();

    }

    std::cout << "\nEnd idList\n";

  }
Beispiel #10
0
void datalogProgram ::headPred(predicate &headPredicate){
    if (tokens.at(vecIndex).getTokenType() == ID){
        headPredicate.ident = tokens.at(vecIndex).getText();
        match(ID);
        match(LEFT_PAREN);
        parameter aParam;
        aParam.textValue =tokens.at(vecIndex).getText();
        headPredicate.myParameters.push_back(aParam);
        match(ID);
        idList(headPredicate.myParameters);
        match(RIGHT_PAREN);
    }
    else{
        if (currentStatus == true){
            currentStatus = false;
            falseTok = tokens.at(vecIndex);
        }
    }
}
Beispiel #11
0
void hash_index_object_t::test<4>()
{
    LLUUIDHashMap<UUIDTableEntry, 5>	hashTable(UUIDTableEntry::uuidEq, UUIDTableEntry());
    const int numElementsToCheck = 10;
    std::vector<LLUUID> idList(numElementsToCheck);
    int i;

    for (i = 0; i < numElementsToCheck; i++)
    {
        LLUUID id;
        id.generate();
        UUIDTableEntry entry(id, i);
        hashTable.set(id, entry);
        idList[i] = id;
    }

    hashTable.removeAll();
    ensure("removeAll failed", hashTable.getLength() == 0);
}
Beispiel #12
0
void hash_index_object_t::test<2>()
{
    LLUUIDHashMap<UUIDTableEntry, 2>	hashTable(UUIDTableEntry::uuidEq, UUIDTableEntry());
    const int numElementsToCheck = 5;
    std::vector<LLUUID> idList(numElementsToCheck*10);
    int i;

    for (i = 0; i < numElementsToCheck; i++)
    {
        LLUUID id;
        id.generate();
        UUIDTableEntry entry(id, i);
        hashTable.set(id, entry);
        idList[i] = id;
    }

    ensure("getLength failed", hashTable.getLength() == numElementsToCheck);

    // remove all but the last element
    for (i = 0; i < numElementsToCheck-1; i++)
    {
        LLUUID idToCheck = idList[i];
        hashTable.remove(idToCheck);
    }

    // there should only be one element left now.
    ensure("getLength failed", hashTable.getLength() == 1);

    for (i = 0; i < numElementsToCheck; i++)
    {
        LLUUID idToCheck = idList[i];
        if (i != numElementsToCheck - 1)
        {
            ensure("remove did not work", hashTable.check(idToCheck)  == FALSE);
        }
        else
        {
            UUIDTableEntry entryToCheck = hashTable.get(idToCheck);
            ensure("remove did not work", entryToCheck.getID() == idToCheck && entryToCheck.getValue() == (size_t)i);
        }
    }
}
bool ClassifBPlusTree::removeKey(Key key,int idToRemove)
{
	bool toReturn;
	pair<Record*, BPlusTreeIterator*> searchResult = BPlusTree::search(key);
	if(searchResult.first != NULL)
	{
		int listOffset = searchResult.first->getData()->readAsInt(0);
		ListofID idList(this->fileBlockManager, listOffset);
		toReturn = idList.removeID(idToRemove);
		if(idList.getListID().size() == 0)
			toReturn = BPlusTree::removeKey(key);
		else
			idList.writeListinFile();
	}
	else
	{
		return false;
	}
	return toReturn;
}
Beispiel #14
0
void hash_index_object_t::test<5>()
{
    LLUUIDHashMap<UUIDTableEntry, 2>	hashTable(UUIDTableEntry::uuidEq, UUIDTableEntry());
    const int numElementsToCheck = 256;
    std::vector<LLUUID> idList(numElementsToCheck);
    int i;

    for (i = 0; i < numElementsToCheck; i++)
    {
        LLUUID id;
        id.generate();
        // LLUUIDHashMap uses mData[0] to pick the bucket
        // overwrite mData[0] so that it ranges from 0 to 255
        id.mData[0] = i;
        UUIDTableEntry entry(id, i);
        hashTable.set(id, entry);
        idList[i] = id;
    }

    for (i = 0; i < numElementsToCheck; i++)
    {
        LLUUID idToCheck = idList[i];
        UUIDTableEntry entryToCheck = hashTable.get(idToCheck);
        ensure("set/get did not work for sparse map", entryToCheck.getID() == idToCheck && entryToCheck.getValue() == (size_t)i);
    }

    for (i = 0; i < numElementsToCheck; i++)
    {
        LLUUID idToCheck = idList[i];
        if (i % 2 != 0)
        {
            hashTable.remove(idToCheck);
        }
    }

    for (i = 0; i < numElementsToCheck; i++)
    {
        LLUUID idToCheck = idList[i];
        ensure("remove or check did not work for sparse map", (i % 2 == 0 && hashTable.check(idToCheck)) || (i % 2 != 0 && !hashTable.check(idToCheck)));
    }
}
Beispiel #15
0
void hash_index_object_t::test<1>()
{
    LLUUIDHashMap<UUIDTableEntry, 32>	hashTable(UUIDTableEntry::uuidEq, UUIDTableEntry());
    const int numElementsToCheck = 32*256*32;
    std::vector<LLUUID> idList(numElementsToCheck);
    int i;

    for (i = 0; i < numElementsToCheck; i++)
    {
        LLUUID id;
        id.generate();
        UUIDTableEntry entry(id, i);
        hashTable.set(id, entry);
        idList[i] = id;
    }

    for (i = 0; i < numElementsToCheck; i++)
    {
        LLUUID idToCheck = idList[i];
        UUIDTableEntry entryToCheck = hashTable.get(idToCheck);
        ensure("set/get did not work", entryToCheck.getID() == idToCheck && entryToCheck.getValue() == (size_t)i);
    }

    for (i = 0; i < numElementsToCheck; i++)
    {
        LLUUID idToCheck = idList[i];
        if (i % 2 != 0)
        {
            hashTable.remove(idToCheck);
        }
    }

    for (i = 0; i < numElementsToCheck; i++)
    {
        LLUUID idToCheck = idList[i];
        ensure("remove or check did not work", (i % 2 == 0 && hashTable.check(idToCheck)) || (i % 2 != 0 && !hashTable.check(idToCheck)));
    }
}
Beispiel #16
0
QStringList Layer::_getLayerIds( ) const {
    QStringList idList( m_state.getValue<QString>( Util::ID));
    return idList;
}
Beispiel #17
0
//Produção NameDecl
NameDeclNode* namedecl(){
      printf("Statement'\n");  
       ModifierListNode* modifiers = modifierList();
       IdListNode* idlistdl = idList();
       return new NameDeclNode(modifiers,idlistdl);
}
Beispiel #18
0
/// Create wxPdfDocument font metrics file
void
MakeFont::CreateFontMetricsFile(const wxString& xmlFileName, wxPdfFontData& font, bool includeGlyphInfo)
{
  wxXmlDocument fontMetrics;
  const wxPdfFontDescription& fd = font.GetDescription();

  wxXmlNode* rootNode = new wxXmlNode(wxXML_ELEMENT_NODE, wxT("wxpdfdoc-font-metrics"));
#if wxCHECK_VERSION(2,9,0)
  rootNode->AddAttribute(wxT("type"), font.GetType() /*wxT("TrueTypeUnicode")*/);
#else
  rootNode->AddProperty(wxT("type"), font.GetType() /*wxT("TrueTypeUnicode")*/);
#endif
  wxXmlNode* node;
  wxXmlNode* textNode;

  node = new wxXmlNode(wxXML_ELEMENT_NODE, wxT("font-name"));
  textNode = new wxXmlNode(wxXML_TEXT_NODE, wxT("text"), font.GetName());
  node->AddChild(textNode);
  rootNode->AddChild(node);

  node = new wxXmlNode(wxXML_ELEMENT_NODE, wxT("encoding"));
  textNode = new wxXmlNode(wxXML_TEXT_NODE, wxT("text"), font.GetEncoding());
  node->AddChild(textNode);
  rootNode->AddChild(node);

  wxXmlNode* descNode = new wxXmlNode(wxXML_ELEMENT_NODE, wxT("description"));

  node = new wxXmlNode(wxXML_ELEMENT_NODE, wxT("ascent"));
  textNode = new wxXmlNode(wxXML_TEXT_NODE, wxT("text"), wxString::Format(wxT("%d"), fd.GetAscent()));
  node->AddChild(textNode);
  descNode->AddChild(node);

  node = new wxXmlNode(wxXML_ELEMENT_NODE, wxT("descent"));
  textNode = new wxXmlNode(wxXML_TEXT_NODE, wxT("text"), wxString::Format(wxT("%d"), fd.GetDescent()));
  node->AddChild(textNode);
  descNode->AddChild(node);

  node = new wxXmlNode(wxXML_ELEMENT_NODE, wxT("cap-height"));
  textNode = new wxXmlNode(wxXML_TEXT_NODE, wxT("text"), wxString::Format(wxT("%d"), fd.GetCapHeight()));
  node->AddChild(textNode);
  descNode->AddChild(node);

  node = new wxXmlNode(wxXML_ELEMENT_NODE, wxT("flags"));
  textNode = new wxXmlNode(wxXML_TEXT_NODE, wxT("text"), wxString::Format(wxT("%d"), fd.GetFlags()));
  node->AddChild(textNode);
  descNode->AddChild(node);

  node = new wxXmlNode(wxXML_ELEMENT_NODE, wxT("font-bbox"));
  textNode = new wxXmlNode(wxXML_TEXT_NODE, wxT("text"), fd.GetFontBBox());
  node->AddChild(textNode);
  descNode->AddChild(node);

  node = new wxXmlNode(wxXML_ELEMENT_NODE, wxT("italic-angle"));
  textNode = new wxXmlNode(wxXML_TEXT_NODE, wxT("text"), wxString::Format(wxT("%d"), fd.GetItalicAngle()));
  node->AddChild(textNode);
  descNode->AddChild(node);

  node = new wxXmlNode(wxXML_ELEMENT_NODE, wxT("stem-v"));
  textNode = new wxXmlNode(wxXML_TEXT_NODE, wxT("text"), wxString::Format(wxT("%d"), fd.GetStemV()));
  node->AddChild(textNode);
  descNode->AddChild(node);

  node = new wxXmlNode(wxXML_ELEMENT_NODE, wxT("missing-width"));
  textNode = new wxXmlNode(wxXML_TEXT_NODE, wxT("text"), wxString::Format(wxT("%d"), fd.GetMissingWidth()));
  node->AddChild(textNode);
  descNode->AddChild(node);
  
  node = new wxXmlNode(wxXML_ELEMENT_NODE, wxT("x-height"));
  textNode = new wxXmlNode(wxXML_TEXT_NODE, wxT("text"), wxString::Format(wxT("%d"), fd.GetXHeight()));
  node->AddChild(textNode);
  descNode->AddChild(node);
  
  node = new wxXmlNode(wxXML_ELEMENT_NODE, wxT("underline-position"));
  textNode = new wxXmlNode(wxXML_TEXT_NODE, wxT("text"), wxString::Format(wxT("%d"), fd.GetUnderlinePosition()));
  node->AddChild(textNode);
  descNode->AddChild(node);

  node = new wxXmlNode(wxXML_ELEMENT_NODE, wxT("underline-thickness"));
  textNode = new wxXmlNode(wxXML_TEXT_NODE, wxT("text"), wxString::Format(wxT("%d"), fd.GetUnderlineThickness()));
  node->AddChild(textNode);
  descNode->AddChild(node);

  rootNode->AddChild(descNode);

  node = new wxXmlNode(wxXML_ELEMENT_NODE, wxT("diff"));
  textNode = new wxXmlNode(wxXML_TEXT_NODE, wxT("text"), font.GetDiffs());
  node->AddChild(textNode);
  rootNode->AddChild(node);

  node = new wxXmlNode(wxXML_ELEMENT_NODE, wxT("file"));
#if wxCHECK_VERSION(2,9,0)
  node->AddAttribute(wxT("name"), font.GetFontFile());
#else
  node->AddProperty(wxT("name"), font.GetFontFile());
#endif
  wxString fontType = font.GetType();
  if (fontType == wxT("TrueTypeUnicode") || fontType == wxT("OpenTypeUnicode"))
  {
    // TrueTypeUnicode (name,ctg,originalsize)
#if wxCHECK_VERSION(2,9,0)
    node->AddAttribute(wxT("ctg"), font.GetCtgFile());
    node->AddAttribute(wxT("originalsize"), wxString::Format(wxT("%d"), font.GetSize1()));
#else
    node->AddProperty(wxT("ctg"), font.GetCtgFile());
    node->AddProperty(wxT("originalsize"), wxString::Format(wxT("%d"), font.GetSize1()));
#endif
  }
  else if (fontType == wxT("TrueType"))
  {
    // Truetype (name, originalsize)
#if wxCHECK_VERSION(2,9,0)
    node->AddAttribute(wxT("originalsize"), wxString::Format(wxT("%d"), font.GetSize1()));
#else
    node->AddProperty(wxT("originalsize"), wxString::Format(wxT("%d"), font.GetSize1()));
#endif
  }
  else if  (fontType == wxT("Type1"))
  {
    // Type1 (name, size1, size2)
#if wxCHECK_VERSION(2,9,0)
    node->AddAttribute(wxT("size1"), wxString::Format(wxT("%d"), font.GetSize1()));
#else
    node->AddProperty(wxT("size1"), wxString::Format(wxT("%d"), font.GetSize1()));
#endif
    if (font.HasSize2())
    {
#if wxCHECK_VERSION(2,9,0)
      node->AddAttribute(wxT("size2"), wxString::Format(wxT("%d"), font.GetSize2()));
#else
      node->AddProperty(wxT("size2"), wxString::Format(wxT("%d"), font.GetSize2()));
#endif
    }
  }
  rootNode->AddChild(node);

  wxXmlNode* widthsNode = new wxXmlNode(wxXML_ELEMENT_NODE, wxT("widths"));
  if (includeGlyphInfo)
  {
#if wxCHECK_VERSION(2,9,0)
    widthsNode->AddAttribute(wxT("subsetting"), wxT("enabled"));
#else
    widthsNode->AddProperty(wxT("subsetting"), wxT("enabled"));
#endif
  }

  wxPdfGlyphWidthMap* widths = (wxPdfGlyphWidthMap*) font.GetGlyphWidthMap();
  wxPdfChar2GlyphMap* glyphs = (wxPdfChar2GlyphMap*) font.GetChar2GlyphMap();
  wxPdfSortedArrayInt idList(CompareInts);
  wxPdfGlyphWidthMap::iterator iter = widths->begin();
  for (iter = widths->begin(); iter != widths->end(); iter++)
  {
    idList.Add(iter->first);
  }
  size_t j;
  for (j = 0; j < idList.GetCount(); j++)
  {
    node = new wxXmlNode(wxXML_ELEMENT_NODE, wxT("char"));
#if wxCHECK_VERSION(2,9,0)
    node->AddAttribute(wxT("id"), wxString::Format(wxT("%d"), idList[j]));
#else
    node->AddProperty(wxT("id"), wxString::Format(wxT("%d"), idList[j]));
#endif
    if (includeGlyphInfo)
    {
      int glyph = (*glyphs)[idList[j]];
#if wxCHECK_VERSION(2,9,0)
      node->AddAttribute(wxT("gn"), wxString::Format(wxT("%d"), glyph));
#else
      node->AddProperty(wxT("gn"), wxString::Format(wxT("%d"), glyph));
#endif
    }
#if wxCHECK_VERSION(2,9,0)
    node->AddAttribute(wxT("width"), wxString::Format(wxT("%d"), (*widths)[idList[j]]));
#else
    node->AddProperty(wxT("width"), wxString::Format(wxT("%d"), (*widths)[idList[j]]));
#endif
    widthsNode->AddChild(node);
  }
  rootNode->AddChild(widthsNode);

  wxXmlDocument voltData;
  wxXmlNode* voltRoot = NULL;
  if (!m_volt.IsEmpty())
  {
    wxFileSystem fs;
    // Open volt data XML file
    wxFSFile* xmlVoltData = fs.OpenFile(wxFileSystem::FileNameToURL(m_volt));
    if (xmlVoltData != NULL)
    {
      // Load the XML file
      bool loaded = voltData.Load(*(xmlVoltData->GetStream()));
      delete xmlVoltData;
      if (loaded)
      {
        if (voltData.IsOk() && voltData.GetRoot()->GetName().IsSameAs(wxT("volt")))
        {
          voltRoot = voltData.GetRoot();
          rootNode->AddChild(voltRoot);
        }
      }
    }
  }

  fontMetrics.SetRoot(rootNode);
  fontMetrics.Save(xmlFileName);
  if (voltRoot != NULL)
  {
    rootNode->RemoveChild(voltRoot);
  }
}
//********************************************
//* Increment the account to the next ID number
//* available.
//********************************************
int AccountsManager::getNewIdNumber() {
    QList<int> numbers = idList();
    for (int i = 1;; i++)
        if (!numbers.contains(i))
            return i;
}