1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-09-03 14:10:33 +03:00

0024788: Foundation Classes - remove Dico_Dictionary

Class Dico_Dictionary was replaced by NCollection_DataMap/NCollection_IndexedDataMap classes.
Changed argument name in template class NCollection_Datamap to eliminate redefinitions of static members in dependent code.
This commit is contained in:
ski
2016-10-12 18:02:55 +03:00
committed by apn
parent be70005cb5
commit 997e128f88
85 changed files with 1674 additions and 4530 deletions

View File

@@ -12,8 +12,6 @@
// commercial license or contractual agreement.
#include <Dico_DictionaryOfTransient.hxx>
#include <Dico_IteratorOfDictionaryOfTransient.hxx>
#include <MoniTool_AttrList.hxx>
#include <MoniTool_IntVal.hxx>
#include <MoniTool_RealVal.hxx>
@@ -33,23 +31,22 @@ MoniTool_AttrList::MoniTool_AttrList () { }
void MoniTool_AttrList::SetAttribute
(const Standard_CString name, const Handle(Standard_Transient)& val)
{
if (theattrib.IsNull()) theattrib = new Dico_DictionaryOfTransient;
theattrib->SetItem (name,val);
theattrib.Bind(name,val);
}
Standard_Boolean MoniTool_AttrList::RemoveAttribute
(const Standard_CString name)
{
if (theattrib.IsNull()) return Standard_False;
return theattrib->RemoveItem (name);
if (theattrib.IsEmpty()) return Standard_False;
return theattrib.UnBind(name);
}
Standard_Boolean MoniTool_AttrList::GetAttribute
(const Standard_CString name, const Handle(Standard_Type)& type,
Handle(Standard_Transient)& val) const
{
if (theattrib.IsNull()) { val.Nullify(); return Standard_False; }
if (!theattrib->GetItem (name,val)) { val.Nullify(); return Standard_False; }
if (theattrib.IsEmpty()) { val.Nullify(); return Standard_False; }
if (!theattrib.Find(name, val)) { val.Nullify(); return Standard_False; }
if (!val->IsKind(type)) { val.Nullify(); return Standard_False; }
return Standard_True;
}
@@ -58,8 +55,9 @@ MoniTool_AttrList::MoniTool_AttrList () { }
(const Standard_CString name) const
{
Handle(Standard_Transient) atr;
if (theattrib.IsNull()) return atr;
if (!theattrib->GetItem (name,atr)) atr.Nullify();
if (theattrib.IsEmpty()) return atr;
if (!theattrib.Find(name, atr))
atr.Nullify();
return atr;
}
@@ -156,7 +154,7 @@ MoniTool_AttrList::MoniTool_AttrList () { }
return hval->ToCString();
}
Handle(Dico_DictionaryOfTransient) MoniTool_AttrList::AttrList () const
const NCollection_DataMap<TCollection_AsciiString, Handle(Standard_Transient)>& MoniTool_AttrList::AttrList () const
{ return theattrib; }
void MoniTool_AttrList::SameAttributes (const MoniTool_AttrList& other)
@@ -166,13 +164,14 @@ MoniTool_AttrList::MoniTool_AttrList () { }
(const MoniTool_AttrList& other,
const Standard_CString fromname, const Standard_Boolean copied)
{
Handle(Dico_DictionaryOfTransient) list = other.AttrList();
if (list.IsNull()) return;
if (theattrib.IsNull()) theattrib = new Dico_DictionaryOfTransient;
const NCollection_DataMap<TCollection_AsciiString, Handle(Standard_Transient)>& list = other.AttrList();
if (list.IsEmpty()) return;
for (Dico_IteratorOfDictionaryOfTransient iter (list,fromname);
iter.More(); iter.Next()) {
TCollection_AsciiString name = iter.Name();
NCollection_DataMap<TCollection_AsciiString, Handle(Standard_Transient)>::Iterator iter(list);
for (; iter.More(); iter.Next()) {
TCollection_AsciiString name = iter.Key();
if (!name.StartsWith(fromname))
continue;
Handle(Standard_Transient) atr = iter.Value();
Handle(Standard_Transient) newatr = atr;
@@ -200,8 +199,6 @@ MoniTool_AttrList::MoniTool_AttrList () { }
}
}
theattrib->SetItem (name.ToCString(),newatr);
theattrib.Bind(name, newatr);
}
}

View File

@@ -27,9 +27,9 @@
#include <MoniTool_ValueType.hxx>
#include <Standard_Integer.hxx>
#include <Standard_Real.hxx>
class Dico_DictionaryOfTransient;
class Standard_Transient;
#include <NCollection_DataMap.hxx>
#include <Standard_Transient.hxx>
#include <TCollection_AsciiString.hxx>
//! a AttrList allows to record a list of attributes as Transients
//! which can be edited, changed ...
@@ -111,7 +111,7 @@ public:
Standard_EXPORT Standard_CString StringAttribute (const Standard_CString name) const;
//! Returns the exhaustive list of attributes
Standard_EXPORT Handle(Dico_DictionaryOfTransient) AttrList() const;
Standard_EXPORT const NCollection_DataMap<TCollection_AsciiString, Handle(Standard_Transient)>& AttrList() const;
//! Gets the list of attributes from <other>, as such, i.e.
//! not copied : attributes are shared, any attribute edited,
@@ -145,7 +145,7 @@ private:
Handle(Dico_DictionaryOfTransient) theattrib;
NCollection_DataMap<TCollection_AsciiString, Handle(Standard_Transient)> theattrib;
};

View File

@@ -12,8 +12,6 @@
// commercial license or contractual agreement.
#include <Dico_DictionaryOfInteger.hxx>
#include <Dico_DictionaryOfTransient.hxx>
#include <Geom2d_CartesianPoint.hxx>
#include <Geom2d_Curve.hxx>
#include <Geom_CartesianPoint.hxx>
@@ -32,26 +30,12 @@
#include <TopAbs.hxx>
#include <TopoDS_HShape.hxx>
#include <TopoDS_Shape.hxx>
#include <NCollection_DataMap.hxx>
IMPLEMENT_STANDARD_RTTIEXT(MoniTool_CaseData,MMgt_TShared)
//#include <GeomTools.hxx>
// definitions
static Handle(Dico_DictionaryOfInteger)& defchecks()
{
static Handle(Dico_DictionaryOfInteger) defch;
if (defch.IsNull()) defch = new Dico_DictionaryOfInteger();
return defch;
}
static Handle(Dico_DictionaryOfTransient)& defmess()
{
static Handle(Dico_DictionaryOfTransient) defms;
if (defms.IsNull()) defms = new Dico_DictionaryOfTransient();
return defms;
}
static NCollection_DataMap<TCollection_AsciiString, Standard_Integer> defch;
static NCollection_DataMap<TCollection_AsciiString, Handle(Standard_Transient)> defms;
static Standard_Boolean stachr = Standard_False;
//static OSD_Timer chrono;
@@ -411,15 +395,16 @@ Message_Msg MoniTool_CaseData::Msg () const
void MoniTool_CaseData::SetDefWarning (const Standard_CString acode)
{ defchecks()->SetItem (acode,1); }
{ defch.Bind(acode,1); }
void MoniTool_CaseData::SetDefFail (const Standard_CString acode)
{ defchecks()->SetItem (acode,2); }
{ defch.Bind(acode,2); }
Standard_Integer MoniTool_CaseData::DefCheck (const Standard_CString acode)
{
Standard_Integer val;
if (!defchecks()->GetItem (acode,val)) val = 0;
if (!defch.Find(acode, val))
val = 0;
return val;
}
@@ -428,14 +413,14 @@ Message_Msg MoniTool_CaseData::Msg () const
(const Standard_CString casecode, const Standard_CString mesdef)
{
Handle(TCollection_HAsciiString) str = new TCollection_HAsciiString (mesdef);
defmess()->SetItem (casecode,str);
defms.Bind(casecode,str);
}
Standard_CString MoniTool_CaseData::DefMsg (const Standard_CString casecode)
{
//Standard_CString mesd;
Handle(TCollection_HAsciiString) str;
if (!defmess()->GetItem (casecode,str)) return "";
Handle(Standard_Transient) aTStr;
if (!defms.Find(casecode, aTStr)) return "";
Handle(TCollection_HAsciiString) str = Handle(TCollection_HAsciiString)::DownCast(aTStr);
if (str.IsNull()) return "";
return str->ToCString();
}

View File

@@ -12,10 +12,6 @@
// commercial license or contractual agreement.
#include <Dico_DictionaryOfInteger.hxx>
#include <Dico_DictionaryOfTransient.hxx>
#include <Dico_IteratorOfDictionaryOfInteger.hxx>
#include <Dico_IteratorOfDictionaryOfTransient.hxx>
#include <Message_Messenger.hxx>
#include <MoniTool_Element.hxx>
#include <MoniTool_TypedValue.hxx>
@@ -31,31 +27,32 @@ IMPLEMENT_STANDARD_RTTIEXT(MoniTool_TypedValue,MMgt_TShared)
// Not Used :
//static char defmess[30];
static Handle(Dico_DictionaryOfTransient) libtv()
static NCollection_DataMap<TCollection_AsciiString, Handle(Standard_Transient)> thelibtv;
static NCollection_DataMap<TCollection_AsciiString, Handle(Standard_Transient)> astats;
static NCollection_DataMap<TCollection_AsciiString, Handle(Standard_Transient)>& libtv()
{
static Handle(Dico_DictionaryOfTransient) thelibtv;
if (thelibtv.IsNull()) {
thelibtv = new Dico_DictionaryOfTransient;
if (thelibtv.IsEmpty()) {
Handle(MoniTool_TypedValue) tv;
tv = new MoniTool_TypedValue("Integer",MoniTool_ValueInteger);
thelibtv->SetItem ("Integer",tv);
thelibtv.Bind ("Integer",tv);
tv = new MoniTool_TypedValue("Real",MoniTool_ValueReal);
thelibtv->SetItem ("Real",tv);
thelibtv.Bind ("Real",tv);
tv = new MoniTool_TypedValue("Text",MoniTool_ValueText);
thelibtv->SetItem ("Text",tv);
thelibtv.Bind ("Text",tv);
tv = new MoniTool_TypedValue("Transient",MoniTool_ValueIdent);
thelibtv->SetItem ("Transient",tv);
thelibtv.Bind ("Transient",tv);
tv = new MoniTool_TypedValue("Boolean",MoniTool_ValueEnum);
tv->AddDef ("enum 0"); // = 0 False , > 0 True
tv->AddDef ("eval False");
tv->AddDef ("eval True");
thelibtv->SetItem ("Boolean",tv);
thelibtv.Bind ("Boolean",tv);
tv = new MoniTool_TypedValue("Logical",MoniTool_ValueEnum);
tv->AddDef ("enum -1"); // < 0 False , = 0 Unk , > 0 True
tv->AddDef ("eval False");
tv->AddDef ("eval Unknown");
tv->AddDef ("eval True");
thelibtv->SetItem ("Logical",tv);
thelibtv.Bind ("Logical",tv);
}
return thelibtv;
}
@@ -101,7 +98,7 @@ static Standard_Boolean StaticPath(const Handle(TCollection_HAsciiString)& val)
theival (other->IntegerValue()) , thehval (other->HStringValue()) ,
theoval (other->ObjectValue())
{
Handle(Dico_DictionaryOfInteger) eadds;
NCollection_DataMap<TCollection_AsciiString, Standard_Integer> eadds;
Standard_CString satisname;
other->Internals (theinterp,thesatisf,satisname, eadds);
thesatisn.AssignCat (satisname);
@@ -121,10 +118,9 @@ static Standard_Boolean StaticPath(const Handle(TCollection_HAsciiString)& val)
}
}
// dupliquer theeadds
if (!eadds.IsNull()) {
theeadds = new Dico_DictionaryOfInteger;
Dico_IteratorOfDictionaryOfInteger itad (eadds);
for (; itad.More(); itad.Next()) theeadds->SetItem (itad.Name(),itad.Value());
if (!eadds.IsEmpty()) {
NCollection_DataMap<TCollection_AsciiString, Standard_Integer>::Iterator itad(eadds);
for (; itad.More(); itad.Next()) theeadds.Bind (itad.Key(),itad.Value());
}
// on duplique la string
@@ -135,7 +131,7 @@ static Standard_Boolean StaticPath(const Handle(TCollection_HAsciiString)& val)
void MoniTool_TypedValue::Internals
(MoniTool_ValueInterpret& interp, MoniTool_ValueSatisfies& satisf,
Standard_CString& satisname,
Handle(Dico_DictionaryOfInteger)& enums) const
NCollection_DataMap<TCollection_AsciiString, Standard_Integer>& enums) const
{ interp = theinterp; satisf = thesatisf; satisname = thesatisn.ToCString();
enums = theeadds; }
@@ -192,17 +188,17 @@ static Standard_Boolean StaticPath(const Handle(TCollection_HAsciiString)& val)
Sprintf(mess," %d:%s",i,enva);
def.AssignCat (mess);
}
if (!theeadds.IsNull()) {
def.AssignCat(" , alpha: ");
Dico_IteratorOfDictionaryOfInteger listadd(theeadds);
for (listadd.Start(); listadd.More(); listadd.Next()) {
TCollection_AsciiString aName = listadd.Name();
Standard_CString enva = aName.ToCString();
if (enva[0] == '?') continue;
Sprintf(mess,":%d ",listadd.Value());
def.AssignCat (enva);
def.AssignCat (mess);
}
if (!theeadds.IsEmpty()) {
def.AssignCat(" , alpha: ");
NCollection_DataMap<TCollection_AsciiString, Standard_Integer>::Iterator listadd(theeadds);
for (; listadd.More(); listadd.Next()) {
TCollection_AsciiString aName = listadd.Key();
Standard_CString enva = aName.ToCString();
if (enva[0] == '?') continue;
Sprintf(mess,":%d ",listadd.Value());
def.AssignCat (enva);
def.AssignCat (mess);
}
}
}
break;
@@ -392,46 +388,45 @@ static Standard_Boolean StaticPath(const Handle(TCollection_HAsciiString)& val)
theenums = enums;
}
if (theeadds.IsNull()) theeadds = new Dico_DictionaryOfInteger;
if (v1[0] != '\0') {
theintup ++; theenums->SetValue(theintup,TCollection_AsciiString(v1));
theeadds->SetItem (v1,theintup);
theeadds.Bind (v1,theintup);
}
if (v2[0] != '\0') {
theintup ++; theenums->SetValue(theintup,TCollection_AsciiString(v2));
theeadds->SetItem (v2,theintup);
theeadds.Bind (v2,theintup);
}
if (v3[0] != '\0') {
theintup ++; theenums->SetValue(theintup,TCollection_AsciiString(v3));
theeadds->SetItem (v3,theintup);
theeadds.Bind (v3,theintup);
}
if (v4[0] != '\0') {
theintup ++; theenums->SetValue(theintup,TCollection_AsciiString(v4));
theeadds->SetItem (v4,theintup);
theeadds.Bind (v4,theintup);
}
if (v5[0] != '\0') {
theintup ++; theenums->SetValue(theintup,TCollection_AsciiString(v5));
theeadds->SetItem (v5,theintup);
theeadds.Bind (v5,theintup);
}
if (v6[0] != '\0') {
theintup ++; theenums->SetValue(theintup,TCollection_AsciiString(v6));
theeadds->SetItem (v6,theintup);
theeadds.Bind (v6,theintup);
}
if (v7[0] != '\0') {
theintup ++; theenums->SetValue(theintup,TCollection_AsciiString(v7));
theeadds->SetItem (v7,theintup);
theeadds.Bind (v7,theintup);
}
if (v8[0] != '\0') {
theintup ++; theenums->SetValue(theintup,TCollection_AsciiString(v8));
theeadds->SetItem (v8,theintup);
theeadds.Bind (v8,theintup);
}
if (v9[0] != '\0') {
theintup ++; theenums->SetValue(theintup,TCollection_AsciiString(v9));
theeadds->SetItem (v9,theintup);
theeadds.Bind (v9,theintup);
}
if (v10[0] != '\0') {
theintup ++; theenums->SetValue(theintup,TCollection_AsciiString(v10));
theeadds->SetItem (v10,theintup);
theeadds.Bind (v10,theintup);
}
}
@@ -458,8 +453,7 @@ static Standard_Boolean StaticPath(const Handle(TCollection_HAsciiString)& val)
theenums->SetValue(num,TCollection_AsciiString(val));
// On met AUSSI dans le dictionnaire
// else {
if (theeadds.IsNull()) theeadds = new Dico_DictionaryOfInteger;
theeadds->SetItem (val,num);
theeadds.Bind (val,num);
// }
}
@@ -489,8 +483,8 @@ static Standard_Boolean StaticPath(const Handle(TCollection_HAsciiString)& val)
for (i = theintlow; i <= theintup; i ++)
if (theenums->Value(i).IsEqual(val)) return i;
// cas additionnel ?
if (!theeadds.IsNull()) {
if (theeadds->GetItem (val,i,Standard_False)) return i;
if (!theeadds.IsEmpty()) {
if (theeadds.Find(val,i)) return i;
}
// entier possible
//gka S4054
@@ -735,7 +729,7 @@ static Standard_Boolean StaticPath(const Handle(TCollection_HAsciiString)& val)
if (tv.IsNull()) return Standard_False;
if (defin[0] != '\0') tv->SetDefinition(defin);
// else if (tv->Definition() == '\0') return Standard_False;
libtv()->SetItem (tv->Name(),tv);
libtv().Bind(tv->Name(),tv);
return Standard_True;
}
@@ -743,7 +737,11 @@ static Standard_Boolean StaticPath(const Handle(TCollection_HAsciiString)& val)
(const Standard_CString defin)
{
Handle(MoniTool_TypedValue) val;
if (!libtv()->GetItem (defin,val,Standard_False)) val.Nullify();
Handle(Standard_Transient) aTVal;
if (libtv().Find(defin, aTVal))
val = Handle(MoniTool_TypedValue)::DownCast(aTVal);
else
val.Nullify();
return val;
}
@@ -758,19 +756,16 @@ static Standard_Boolean StaticPath(const Handle(TCollection_HAsciiString)& val)
Handle(TColStd_HSequenceOfAsciiString) MoniTool_TypedValue::LibList ()
{
Handle(TColStd_HSequenceOfAsciiString) list = new TColStd_HSequenceOfAsciiString();
if (libtv().IsNull()) return list;
for (Dico_IteratorOfDictionaryOfTransient it(libtv()); it.More();it.Next()) {
list->Append (it.Name());
if (libtv().IsEmpty()) return list;
NCollection_DataMap<TCollection_AsciiString, Handle(Standard_Transient)>::Iterator it(libtv());
for (; it.More();it.Next()) {
list->Append (it.Key());
}
return list;
}
Handle(Dico_DictionaryOfTransient) MoniTool_TypedValue::Stats ()
NCollection_DataMap<TCollection_AsciiString, Handle(Standard_Transient)>& MoniTool_TypedValue::Stats ()
{
static Handle(Dico_DictionaryOfTransient) astats;
if (astats.IsNull()) astats = new Dico_DictionaryOfTransient;
return astats;
}
@@ -778,6 +773,10 @@ static Standard_Boolean StaticPath(const Handle(TCollection_HAsciiString)& val)
(const Standard_CString name)
{
Handle(MoniTool_TypedValue) result;
if (!Stats()->GetItem(name,result)) result.Nullify();
Handle(Standard_Transient) aTResult;
if (Stats().Find(name, aTResult))
result = Handle(MoniTool_TypedValue)::DownCast(aTResult);
else
result.Nullify();
return result;
}

View File

@@ -22,6 +22,7 @@
#include <TCollection_AsciiString.hxx>
#include <MoniTool_ValueType.hxx>
#include <NCollection_DataMap.hxx>
#include <Standard_Type.hxx>
#include <Standard_Integer.hxx>
#include <Standard_Real.hxx>
@@ -32,13 +33,11 @@
#include <Standard_CString.hxx>
#include <Standard_Boolean.hxx>
#include <TColStd_HSequenceOfAsciiString.hxx>
class Dico_DictionaryOfInteger;
class TCollection_HAsciiString;
class Standard_Transient;
class Standard_ConstructionError;
class TCollection_AsciiString;
class Message_Messenger;
class Dico_DictionaryOfTransient;
class MoniTool_TypedValue;
@@ -77,7 +76,7 @@ public:
Standard_EXPORT MoniTool_TypedValue(const Handle(MoniTool_TypedValue)& other);
//! Access to internal data which have no other access
Standard_EXPORT void Internals (MoniTool_ValueInterpret& interp, MoniTool_ValueSatisfies& satisf, Standard_CString& satisname, Handle(Dico_DictionaryOfInteger)& enums) const;
Standard_EXPORT void Internals (MoniTool_ValueInterpret& interp, MoniTool_ValueSatisfies& satisf, Standard_CString& satisname, NCollection_DataMap<TCollection_AsciiString, Standard_Integer>& enums) const;
//! Returns the name
Standard_EXPORT Standard_CString Name() const;
@@ -326,7 +325,7 @@ protected:
//! Gives the internal library of static values
Standard_EXPORT static Handle(Dico_DictionaryOfTransient) Stats();
Standard_EXPORT static NCollection_DataMap<TCollection_AsciiString, Handle(Standard_Transient)>& Stats();
@@ -346,7 +345,7 @@ private:
Standard_Real therealup;
TCollection_AsciiString theunidef;
Handle(TColStd_HArray1OfAsciiString) theenums;
Handle(Dico_DictionaryOfInteger) theeadds;
NCollection_DataMap<TCollection_AsciiString, Standard_Integer> theeadds;
MoniTool_ValueInterpret theinterp;
MoniTool_ValueSatisfies thesatisf;
TCollection_AsciiString thesatisn;