コード例 #1
0
ファイル: network.cpp プロジェクト: JLiangWaterloo/sat
int TNEANet::DelAttrDatN(const int& NId, const TStr& attr) {
  TInt vecType = KeyToIndexTypeN(attr).Val1;
  if (vecType == IntType) {
    VecOfIntVecsN[KeyToIndexTypeN.GetDat(attr).Val2][NId] = GetIntAttrDefaultN(attr);
  } else if (vecType == StrType) {
    VecOfStrVecsN[KeyToIndexTypeN.GetDat(attr).Val2][NId] = GetStrAttrDefaultN(attr);
  } else if (vecType == FltType) {
    VecOfFltVecsN[KeyToIndexTypeN.GetDat(attr).Val2][NId] = GetFltAttrDefaultN(attr);
  } else {
    return -1;
  }
  return 0;
}
コード例 #2
0
ファイル: networkmp.cpp プロジェクト: roks/snap-dev1
int TNEANetMP::AddNode(int NId) {
    int i;
    if (NId == -1) {
        NId = MxNId;
        MxNId++;
    } else {
        IAssertR(!IsNode(NId), TStr::Fmt("NodeId %d already exists", NId));
        MxNId = TMath::Mx(NId+1, MxNId());
    }
    // update attribute columns
    NodeH.AddDat(NId, TNode(NId));
    for (i = 0; i < VecOfIntVecsN.Len(); i++) {
        TVec<TInt>& IntVec = VecOfIntVecsN[i];
        IntVec.Ins(NodeH.GetKeyId(NId), TInt::Mn);
    }
    TVec<TStr> DefIntVec = TVec<TStr>();
    IntDefaultsN.GetKeyV(DefIntVec);
    for (i = 0; i < DefIntVec.Len(); i++) {
        TStr attr = DefIntVec[i];
        TVec<TInt>& IntVec = VecOfIntVecsN[KeyToIndexTypeN.GetDat(DefIntVec[i]).Val2];
        IntVec[NodeH.GetKeyId(NId)] = GetIntAttrDefaultN(attr);
    }
    for (i = 0; i < VecOfStrVecsN.Len(); i++) {
        TVec<TStr>& StrVec = VecOfStrVecsN[i];
        StrVec.Ins(NodeH.GetKeyId(NId), TStr::GetNullStr());
    }
    TVec<TStr> DefStrVec = TVec<TStr>();
    IntDefaultsN.GetKeyV(DefStrVec);
    for (i = 0; i < DefStrVec.Len(); i++) {
        TStr attr = DefStrVec[i];
        TVec<TStr>& StrVec = VecOfStrVecsN[KeyToIndexTypeN.GetDat(DefStrVec[i]).Val2];
        StrVec[NodeH.GetKeyId(NId)] = GetStrAttrDefaultN(attr);
    }
    for (i = 0; i < VecOfFltVecsN.Len(); i++) {
        TVec<TFlt>& FltVec = VecOfFltVecsN[i];
        FltVec.Ins(NodeH.GetKeyId(NId), TFlt::Mn);
    }
    TVec<TStr> DefFltVec = TVec<TStr>();
    FltDefaultsN.GetKeyV(DefFltVec);
    for (i = 0; i < DefFltVec.Len(); i++) {
        TStr attr = DefFltVec[i];
        TVec<TFlt>& FltVec = VecOfFltVecsN[KeyToIndexTypeN.GetDat(DefFltVec[i]).Val2];
        FltVec[NodeH.GetKeyId(NId)] = GetFltAttrDefaultN(attr);
    }
    return NId;
}
コード例 #3
0
ファイル: network.cpp プロジェクト: JLiangWaterloo/sat
int TNEANet::AddStrAttrDatN(const int& NId, const TStr& value, const TStr& attr) {
  int i;
  TInt CurrLen;
  if (!IsNode(NId)) {
    // AddNode(NId);
    return -1;
  }
  if (KeyToIndexTypeN.IsKey(attr)) {
    TVec<TStr>& NewVec = VecOfStrVecsN[KeyToIndexTypeN.GetDat(attr).Val2];
    NewVec[NodeH.GetKeyId(NId)] = value;
  } else {
    CurrLen = VecOfStrVecsN.Len();
    KeyToIndexTypeN.AddDat(attr, TIntPr(StrType, CurrLen));
    TVec<TStr> NewVec = TVec<TStr>();
    for (i = 0; i < MxNId; i++) {
        NewVec.Ins(i, GetStrAttrDefaultN(attr));
    }
    NewVec[NodeH.GetKeyId(NId)] = value;
    VecOfStrVecsN.Add(NewVec);
  }
  return 0;
} 
コード例 #4
0
ファイル: network.cpp プロジェクト: JLiangWaterloo/sat
bool TNEANet::NodeAttrIsStrDeleted(const int& NId, const TStrIntPrH::TIter& NodeHI) const {
  return (NodeHI.GetDat().Val1 == StrType &&
    GetStrAttrDefaultN(NodeHI.GetKey()) == this->VecOfStrVecsN.GetVal(
    this->KeyToIndexTypeN.GetDat(NodeHI.GetKey()).Val2).GetVal(NId));
}