Example #1
0
void DependencyParts::DeleteAll() {
  for (int i = 0; i < NUM_DEPENDENCYPARTS; ++i) {
    offsets_[i] = -1;
  }

  DeleteIndices();

  for (iterator iter = begin(); iter != end(); iter++) {
    if  ((*iter) != NULL) {
      delete (*iter);
      *iter = NULL;
    }
  }

  clear();
}
void SequenceParts::DeleteAll() {
  for (int i = 0; i < NUM_SEQUENCEPARTS; ++i) {
    offsets_[i] = -1;
  }

  DeleteIndices();

  for (iterator iter = begin(); iter != end(); iter++) {
    if ((*iter) != NULL) {
      delete (*iter);
      *iter = NULL;
    }
  }

  clear();
}
Example #3
0
	//! sets the pointers to the indices
	void VertexBuffer::SetIndices(void* pIndices, uint numIndices, bool _32bitIndices /*= false*/)
	{
		if(pIndices == m_pIndices)
			return;
			
		_sizeOfIndex = _32bitIndices ? 4 : 2;
		DeleteIndices();

		m_pIndices = pIndices;
		m_MaxIndices = numIndices;
		m_NumIndices = numIndices;

		if(_32bitIndices)
			_getIndex = [this](uint index){ return ((uint*)m_pIndices)[index]; };
		else
			_getIndex = [this](uint index){ return ((ushort*)m_pIndices)[index]; };
	}
Example #4
0
void DependencyParts::BuildIndices(int sentence_length, bool labeled) {
  DeleteIndices();
  index_.resize(sentence_length);
  for (int h = 0; h < sentence_length; ++h) {
    index_[h].resize(sentence_length);
    for (int m = 0; m < sentence_length; ++m) {
      index_[h][m] = -1;
    }
  }

  int offset, num_basic_parts;
  GetOffsetArc(&offset, &num_basic_parts);
  for (int r = 0; r < num_basic_parts; ++r) {
    Part *part = (*this)[offset + r];
    CHECK(part->type() == DEPENDENCYPART_ARC);
    int h = static_cast<DependencyPartArc*>(part)->head();
    int m = static_cast<DependencyPartArc*>(part)->modifier();
    index_[h][m] = offset + r;
  }

  if (labeled) {
    index_labeled_.resize(sentence_length);
    for (int h = 0; h < sentence_length; ++h) {
      index_labeled_[h].resize(sentence_length);
      for (int m = 0; m < sentence_length; ++m) {
        index_labeled_[h][m].clear();
      }
    }

    int offset, num_labeled_arcs;
    GetOffsetLabeledArc(&offset, &num_labeled_arcs);
    for (int r = 0; r < num_labeled_arcs; ++r) {
      Part *part = (*this)[offset + r];
      CHECK(part->type() == DEPENDENCYPART_LABELEDARC);
      int h = static_cast<DependencyPartLabeledArc*>(part)->head();
      int m = static_cast<DependencyPartLabeledArc*>(part)->modifier();
      index_labeled_[h][m].push_back(offset + r);
    }
  }
}
void CTupleStoreImpl::ConstructL()
{
	CALLSTACKITEM_N(_CL("CTupleStoreImpl"), _CL("ConstructL"));

	iSubNameIndexLength=40;

	// name:      id,           tupletype,   
	TInt cols[]={ EDbColUint32, EDbColInt32, 
	//{     Uid,         Id,          subname1 }, 
		EDbColInt32, EDbColInt32, EDbColText, 
	//      priority,   
		EDbColInt8,
	// {	Uid,         Id},
		EDbColInt32, EDbColInt32, 
	//      data              LeaseExpires
		EDbColLongBinary, EDbColDateTime, 
	//		subname2
		EDbColText, -1 };

	TInt col_flags[]={ TDbCol::EAutoIncrement, 0, 0, 0, 0, 0,
		0, 0, 
		0, 0,
		0, 0 };
	// the tuple id is added to indices so that data is read in
	// the order it arrives
	TInt idxs[]={ 
		ETupleType, ENameModule, ENameId, ENameSubName2, ETupleId, -2, 
		ETupleId, -2,
		ETupleType, EComponentModule, EComponentId, 
			EPriority, ETupleId, -2,
		ELeaseExpires, 
		-1 };

	MDBStore::ConstructL(cols, idxs, false, 
		_L("TUPLES"), EFalse, col_flags);

	iTimer=CTimeOut::NewL(*this, CActive::EPriorityIdle);
	if (SeekIdL(0)) {
		TInt version=0;
		iTable.GetL();
		// check version and migrate if necessary
		version=iTable.ColInt32(ENameId);

		if (version<KVersion) {
			SwitchIndexL(-1); // no index
			TBool found=iTable.FirstL();
			while (found) {
				iTable.GetL();
				TUint uid_in_table, new_uid;
				new_uid=uid_in_table=iTable.ColInt(ENameModule);
				GetBackwardsCompatibleUid(new_uid);
				if (new_uid != uid_in_table) {
					UpdateL();
					iTable.SetColL(ENameModule, new_uid);
					MDBStore::PutL();
				}
				found=iTable.NextL();
			}
		}
		if (version<=KVersionBeforeExpires) {
			SwitchIndexL(-1); // no index
			TBool found=iTable.FirstL();
			while (found) {
				iTable.GetL();
				TInt tupletype;
				TTupleName tn;

				tn.iModule.iUid=iTable.ColInt(ENameModule);
				tn.iId=iTable.ColInt(ENameId);
				tupletype=iTable.ColInt(ETupleType);

				if ( (!(tn == KCLSettingsTuple)) && tupletype!=ETupleSpaceInternal ) {
					MDBStore::DeleteL();
				}
				found=iTable.NextL();
			}
		}

		if (version<KVersionBeforeNewUids) {
			TInt no_idxs[]={ -1 };
			iTable.Close();
			DeleteIndices(_L("TUPLES"));
			CC_TRAPD(err, MDBStore::ConstructL(cols, no_idxs, 
				false, _L("TUPLES"), ETrue, col_flags));
			iDb.BeginL();
			TTransactionHolder th(*this);
			TBool found=iTable.FirstL();
			while (found) {
				iTable.GetL();
				if ( iTable.ColUint(ETupleId) == 0 ) {
					UpdateL();
					iTable.SetColL(ENameId, KVersion);
					MDBStore::PutL();
				} else if (! iTable.IsColNull(ENameSubName1)) {
					UpdateL();
					iTable.SetColL(ENameSubName2,
						iTable.ColDes(ENameSubName1).Left(iSubNameIndexLength));
					MDBStore::PutL();
				}
				found=iTable.NextL();
			}
			iDb.CommitL();
			MDBStore::ConstructL(cols, idxs, 
				false, _L("TUPLES"), ETrue, col_flags);
		}

		if (version>=KVersionBeforeNewUids) {
			CleanOldTuplesL();
		}
		SeekIdL(0);
		UpdateL();
		iTable.SetColL(ENameId, KVersion);
		MDBStore::PutL();
		
	} else {
		InsertL();
		iTable.SetColL(ETupleType, ETupleSpaceInternal);
		iTable.SetColL(ENameId, KVersion);
		iTable.SetColL( ELeaseExpires, Time::MaxTTime() );
		MDBStore::PutL();
	}
}
Example #6
0
void SemanticParts::BuildIndices(int sentence_length, bool labeled) {
  DeleteIndices();

  int offset, num_basic_parts;
  GetOffsetArc(&offset, &num_basic_parts);
  index_senses_.resize(sentence_length);
  for (int r = 0; r < num_basic_parts; ++r) {
    Part *part = (*this)[offset + r];
    CHECK(part->type() == SEMANTICPART_ARC) << part->type();
    int p = static_cast<SemanticPartArc*>(part)->predicate();
    int s = static_cast<SemanticPartArc*>(part)->sense();
    int k = 0;
    for (; k < index_senses_[p].size(); ++k) {
      if (index_senses_[p][k] == s) break;
    }
    if (k == index_senses_[p].size()) {
      index_senses_[p].push_back(s);
    }
  }

  index_.resize(sentence_length);
  for (int p = 0; p < sentence_length; ++p) {
    index_[p].resize(sentence_length);
    for (int a = 0; a < sentence_length; ++a) {
      index_[p][a].clear();
    }
  }

  for (int r = 0; r < num_basic_parts; ++r) {
    Part *part = (*this)[offset + r];
    CHECK(part->type() == SEMANTICPART_ARC);
    int p = static_cast<SemanticPartArc*>(part)->predicate();
    int a = static_cast<SemanticPartArc*>(part)->argument();
    int s = static_cast<SemanticPartArc*>(part)->sense();
    if (s >= index_[p][a].size()) index_[p][a].resize(s+1, -1);
    index_[p][a][s] = offset + r;
  }

  if (labeled) {
    index_labeled_.resize(sentence_length);
    for (int p = 0; p < sentence_length; ++p) {
      index_labeled_[p].resize(sentence_length);
      for (int a = 0; a < sentence_length; ++a) {
        index_labeled_[p][a].clear();
      }
    }

    int offset, num_labeled_arcs;
    GetOffsetLabeledArc(&offset, &num_labeled_arcs);
    for (int r = 0; r < num_labeled_arcs; ++r) {
      Part *part = (*this)[offset + r];
      CHECK(part->type() == SEMANTICPART_LABELEDARC);
      int p = static_cast<SemanticPartLabeledArc*>(part)->predicate();
      int a = static_cast<SemanticPartLabeledArc*>(part)->argument();
      int s = static_cast<SemanticPartLabeledArc*>(part)->sense();
      //int role = static_cast<SemanticPartLabeledArc*>(part)->role();
      if (s >= index_labeled_[p][a].size()) index_labeled_[p][a].resize(s+1);
      //if (role >= index_labeled_[p][a][s].size()) {
      //  index_labeled_[p][a][s].resize(role+1, -1);
      //}
      //index_labeled_[p][a][s][role] = offset + r;
      index_labeled_[p][a][s].push_back(offset + r);
    }
  }
}
Example #7
0
	//! destructor
	VertexBuffer::~VertexBuffer()
	{
		DeleteVertices();
		DeleteIndices();
	}