1 // Created on: 1997-07-30
2 // Created by: Denis PASCAL
3 // Copyright (c) 1997-1999 Matra Datavision
4 // Copyright (c) 1999-2014 OPEN CASCADE SAS
6 // This file is part of Open CASCADE Technology software library.
8 // This library is free software; you can redistribute it and/or modify it under
9 // the terms of the GNU Lesser General Public License version 2.1 as published
10 // by the Free Software Foundation, with special exception defined in the file
11 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
12 // distribution for complete text of the license and disclaimer of any warranty.
14 // Alternatively, this file may be used under the terms of Open CASCADE
15 // commercial license or contractual agreement.
17 #include <DDataStd.hxx>
19 #include <Standard_PCharacter.hxx>
22 #include <Draw_Interpretor.hxx>
23 #include <Draw_Appli.hxx>
24 #include <DrawTrSurf.hxx>
28 #include <TDF_Data.hxx>
29 #include <TDF_Label.hxx>
30 #include <TDF_Tool.hxx>
31 #include <TDF_AttributeSequence.hxx>
32 #include <TDF_AttributeList.hxx>
33 #include <TDF_ListIteratorOfAttributeList.hxx>
35 #include <BRep_Tool.hxx>
39 #include <TopoDS_Vertex.hxx>
40 #include <TopoDS_Edge.hxx>
41 #include <TopoDS_Wire.hxx>
42 #include <TopoDS_Face.hxx>
43 #include <TopoDS_Shell.hxx>
44 #include <TopoDS_Solid.hxx>
45 #include <TopoDS_Shape.hxx>
51 #include <TCollection_AsciiString.hxx>
52 #include <TColStd_HArray1OfReal.hxx>
55 #include <TDataStd.hxx>
56 #include <TDataXtd_Triangulation.hxx>
57 #include <TDataStd_Comment.hxx>
58 #include <TDataStd_Name.hxx>
59 #include <TDataStd_Integer.hxx>
60 #include <TDataStd_Real.hxx>
61 #include <TDF_Reference.hxx>
62 #include <TDataStd_UAttribute.hxx>
63 #include <TDataStd_IntegerArray.hxx>
64 #include <TDataStd_BooleanArray.hxx>
65 #include <TDataStd_RealArray.hxx>
66 #include <TDataStd_BooleanList.hxx>
67 #include <TDataStd_IntegerList.hxx>
68 #include <TDataStd_RealList.hxx>
69 #include <TDataStd_Variable.hxx>
70 #include <TDataStd_ExtStringArray.hxx>
71 #include <TDF_ChildIterator.hxx>
72 #include <TDF_Tool.hxx>
74 #include <TDataStd_NamedData.hxx>
75 #include <TColStd_DataMapOfStringInteger.hxx>
76 #include <TColStd_DataMapIteratorOfDataMapOfStringInteger.hxx>
77 #include <TDataStd_DataMapOfStringReal.hxx>
78 #include <TDataStd_DataMapIteratorOfDataMapOfStringReal.hxx>
79 #include <TDataStd_DataMapOfStringByte.hxx>
80 #include <TDataStd_DataMapIteratorOfDataMapOfStringByte.hxx>
81 #include <TDataStd_DataMapOfStringString.hxx>
82 #include <TDataStd_DataMapIteratorOfDataMapOfStringString.hxx>
83 #include <TDataStd_DataMapOfStringHArray1OfInteger.hxx>
84 #include <TDataStd_DataMapIteratorOfDataMapOfStringHArray1OfInteger.hxx>
85 #include <TDataStd_DataMapOfStringHArray1OfReal.hxx>
86 #include <TDataStd_DataMapIteratorOfDataMapOfStringHArray1OfReal.hxx>
87 #include <TColStd_HArray1OfInteger.hxx>
88 #include <TColStd_HArray1OfReal.hxx>
89 #include <TDataStd_AsciiString.hxx>
90 #include <TDataStd_IntPackedMap.hxx>
91 #include <TColStd_HPackedMapOfInteger.hxx>
92 #include <TColStd_PackedMapOfInteger.hxx>
93 #include <TColStd_MapIteratorOfPackedMapOfInteger.hxx>
94 #include <TDataStd_ByteArray.hxx>
95 #include <TDataStd_ListIteratorOfListOfByte.hxx>
96 #include <TColStd_ListIteratorOfListOfInteger.hxx>
97 #include <TColStd_ListIteratorOfListOfReal.hxx>
98 #include <TDataStd_ReferenceArray.hxx>
99 #include <TDataStd_ExtStringList.hxx>
100 #include <TDataStd_ReferenceList.hxx>
101 #include <TDF_ListIteratorOfLabelList.hxx>
102 #include <TDataStd_ListIteratorOfListOfExtendedString.hxx>
105 //=======================================================================
106 //function : DDataStd_SetInteger
107 //purpose : SetInteger (DF, entry, value, [,guid])
108 //=======================================================================
110 static Standard_Integer DDataStd_SetInteger (Draw_Interpretor& di,
116 if (!DDF::GetDF(arg[1],DF)) return 1;
118 DDF::AddLabel(DF, arg[2], L);
120 TDataStd_Integer::Set(L,Draw::Atoi(arg[3]));
122 if (!Standard_GUID::CheckGUIDFormat(arg[4])) {
123 di<<"DDataStd_SetInteger: The format of GUID is invalid\n";
126 Standard_GUID guid(arg[4]);
127 TDataStd_Integer::Set(L, guid, Draw::Atoi(arg[3]));
131 di << "DDataStd_SetInteger : Error\n";
135 //=======================================================================
136 //function : DDataStd_SetReal
137 //purpose : SetReal (DF, entry, value [,guid])
138 //=======================================================================
140 static Standard_Integer DDataStd_SetReal (Draw_Interpretor& di,
146 if (!DDF::GetDF(arg[1],DF)) return 1;
148 DDF::AddLabel(DF, arg[2], L);
150 TDataStd_Real::Set(L,Draw::Atof(arg[3]));
152 if (!Standard_GUID::CheckGUIDFormat(arg[4])) {
153 di<<"DDataStd_SetReal: The format of GUID is invalid\n";
156 Standard_GUID guid(arg[4]);
157 TDataStd_Real::Set(L, guid, Draw::Atof(arg[3]));
161 di << "DDataStd_SetReal : Error\n";
167 //=======================================================================
168 //function : DDataStd_SetReference
169 //purpose : SetReference (DF, entry, reference)
170 //=======================================================================
172 static Standard_Integer DDataStd_SetReference (Draw_Interpretor& di,
178 if (!DDF::GetDF(arg[1],DF)) return 1;
180 DDF::AddLabel(DF, arg[2], L);
182 if (!DDF::FindLabel(DF,arg[3],LREF)) return 1;
183 TDF_Reference::Set(L,LREF);
186 di << "DDataStd_SetReference : Error\n";
191 //=======================================================================
192 //function : DDataStd_SetComment
193 //purpose : SetComment (DF, entry, Comment)
194 //=======================================================================
196 static Standard_Integer DDataStd_SetComment (Draw_Interpretor& di,
202 if (!DDF::GetDF(arg[1],DF)) return 1;
204 DDF::AddLabel(DF, arg[2], L);
205 TDataStd_Comment::Set(L,TCollection_ExtendedString(arg[3],Standard_True));
208 di << "DDataStd_SetComment : Error\n";
212 //=======================================================================
213 //function : DDataStd_GetInteger
214 //purpose : GetReal (DF, entry, [drawname][, guid])
215 //=======================================================================
217 static Standard_Integer DDataStd_GetInteger (Draw_Interpretor& di,
221 if (nb == 3 || nb == 4 || nb == 5) {
223 if (!DDF::GetDF(arg[1],DF)) return 1;
224 Handle(TDataStd_Integer) A;
226 Standard_GUID aNullGuid("00000000-0000-0000-0000-000000000000");
227 Standard_Boolean isdrawname(Standard_False);
229 if(nb == 4) { //DF, entry, guid
230 if (Standard_GUID::CheckGUIDFormat(arg[3]))
231 aGuid = Standard_GUID(arg[3]);
233 if(Standard_GUID::IsEqual(aGuid, aNullGuid)) {
234 isdrawname = Standard_True;
235 aGuid = TDataStd_Integer::GetID();
238 isdrawname = Standard_True;
239 if (Standard_GUID::CheckGUIDFormat(arg[4]))
240 aGuid = Standard_GUID(arg[4]);
242 di<<"DDataStd_GetInteger: The format of GUID is invalid\n";
247 if (!DDF::Find(DF,arg[2],aGuid,A)) return 1;
248 if (nb == 4 && isdrawname) Draw::Set(arg[3],A->Get());
249 else Draw::Set(arg[2],A->Get());
253 di << "DDataStd_GetInteger : Error\n";
257 //=======================================================================
258 //function : DDataStd_GetReal
259 //purpose : GetReal (DF, entry, [drawname][, guid])
260 //=======================================================================
262 static Standard_Integer DDataStd_GetReal (Draw_Interpretor& di,
266 if (nb == 3 || nb == 4 || nb == 5) {
268 if (!DDF::GetDF(arg[1],DF)) return 1;
269 Handle(TDataStd_Real) A;
271 Standard_GUID aNullGuid("00000000-0000-0000-0000-000000000000");
272 Standard_Boolean isdrawname(Standard_False);
275 if (Standard_GUID::CheckGUIDFormat(arg[3]))
276 aGuid = Standard_GUID(arg[3]);
278 if(Standard_GUID::IsEqual(aGuid, aNullGuid)) {
279 isdrawname = Standard_True;
280 aGuid = TDataStd_Real::GetID();
284 isdrawname = Standard_True;
285 if (Standard_GUID::CheckGUIDFormat(arg[4]))
286 aGuid = Standard_GUID(arg[4]);
288 di<<"DDataStd_GetReal: The format of GUID is invalid\n";
292 if (!DDF::Find(DF,arg[2],aGuid,A)) return 1;
293 if (nb == 4 && isdrawname) Draw::Set(arg[3],A->Get());
294 else Draw::Set(arg[2],A->Get());
298 di << "DDataStd_GetReal : Error\n";
303 //=======================================================================
304 //function : DDataStd_GetReference
305 //purpose : GetShape (DF, entry)
306 //=======================================================================
308 static Standard_Integer DDataStd_GetReference (Draw_Interpretor& di,
314 if (!DDF::GetDF(arg[1],DF)) return 1;
315 Handle(TDF_Reference) REF;
316 if (!DDF::Find(DF,arg[2],TDF_Reference::GetID(),REF)) return 1;
317 TCollection_AsciiString entry; TDF_Tool::Entry(REF->Get(),entry);
318 di << entry.ToCString();
321 di << "DDataStd_GetReference : Error\n";
325 //=======================================================================
326 //function : DDataStd_GetComment
327 //purpose : GetShape (DF, entry)
328 //=======================================================================
330 static Standard_Integer DDataStd_GetComment (Draw_Interpretor& di,
336 if (!DDF::GetDF(arg[1],DF)) return 1;
337 Handle(TDataStd_Comment) A;
338 if (!DDF::Find(DF,arg[2],TDataStd_Comment::GetID(),A)) return 1;
339 TCollection_AsciiString s(A->Get(),'?');
340 di << A->Get().ToExtString();
343 di << "DDataStd_GetComment : Error\n";
349 //=======================================================================
351 //purpose : Self (document,label)
352 //=======================================================================
354 static Standard_Integer DDataStd_Self (Draw_Interpretor& di,
358 TCollection_AsciiString s;
361 if (!DDF::GetDF(arg[1],DF)) return 1;
363 if (!DDF::FindLabel(DF,arg[2],L)) return 1;
364 // TDataStd::MakeSelfContained(L,removed);
365 // if (removed.IsEmpty()) cout << "noone attriburte removed" << endl;
366 // for (TDF_ListIteratorOfAttributeList it(removed);it.More();it.Next()) {
367 // TDF_Tool::Entry(it.Value()->Label(),s); cout << s << " ";
372 di << "Self : Error\n";
378 //=======================================================================
379 //function : SetUObject (DF, entry, ObjectID)
380 //=======================================================================
381 // static Standard_Integer DDataStd_SetUObject (Draw_Interpretor&,
382 // Standard_Integer nb,
386 // Handle(TDF_Data) DF;
387 // if (!DDF::GetDF(arg[1],DF)) return 1;
389 // DDF::AddLabel(DF, arg[2], label);
391 // Standard_GUID guid(arg[3]); //"00000000-0000-0000-1111-000000000000");
392 // TDataStd_UObject::Set(label, guid);
396 // cout << "Wrong arguments" << endl;
400 //=======================================================================
401 //function : SetUAttribute (DF, entry, LocalID)
402 //=======================================================================
403 static Standard_Integer DDataStd_SetUAttribute (Draw_Interpretor& di,
409 if (!DDF::GetDF(arg[1],DF)) return 1;
411 DDF::AddLabel(DF, arg[2], label);
413 Standard_GUID guid(arg[3]); //"00000000-0000-0000-2222-000000000000");
414 TDataStd_UAttribute::Set(label, guid);
418 di << "Wrong arguments" << "\n";
422 //=======================================================================
423 //function : GetUAttribute (DF, entry, LoaclID)
424 //=======================================================================
425 static Standard_Integer DDataStd_GetUAttribute (Draw_Interpretor& di,
431 if (!DDF::GetDF(arg[1],DF)) return 1;
433 if( !DDF::FindLabel(DF, arg[2], label) ) {
434 di << "No label for entry" << "\n";
437 Standard_GUID guid(arg[3]); //"00000000-0000-0000-2222-000000000000");
439 Handle(TDataStd_UAttribute) UA;
440 if( !label.FindAttribute(guid, UA) ) {
441 di << "No UAttribute Attribute on label" << "\n";
444 char *aStrGUID = new char[37];
445 UA->ID().ToCString(aStrGUID);
451 di << "Wrong arguments" << "\n";
456 //=======================================================================
457 //function : CheckUObject (DF, entry, ObjectID)
458 //=======================================================================
459 // static Standard_Integer DDataStd_CheckUObject (Draw_Interpretor&,
460 // Standard_Integer nb,
464 // Handle(TDF_Data) DF;
465 // if (!DDF::GetDF(arg[1],DF)) return 1;
467 // if( !DDF::FindLabel(DF, arg[2], label) ) {
468 // cout << "No label for entry" << endl;
471 // Handle(TDataStd_Object) O;
472 // Handle(TDataStd_UObject) UO;
473 // Standard_GUID guidUO(arg[3]);
475 // if( !label.FindAttribute( TDataStd_Object::GetID(), O) ) {
476 // cout << "No Object Attribute on label" << endl;
479 // cout << "UObject is found with ObjectID = ";
480 // O->Find(label, guidUO, UO);
481 // UO->ObjectID().ShallowDump(cout);
487 // cout << "Wrong arguments" << endl;
492 //=======================================================================
493 //function : SetIntArray (DF, entry , isDelta, From, To, elmt1, elmt2, ...
494 //=======================================================================
495 static Standard_Integer DDataStd_SetIntArray (Draw_Interpretor& di,
500 if (!DDF::GetDF(arg[1],DF)) return 1;
502 DDF::AddLabel(DF, arg[2], label);
503 Standard_Boolean isDelta = Draw::Atoi(arg[3]) != 0;
504 Standard_Integer From = Draw::Atoi(arg[4]), To = Draw::Atoi( arg[5] ), j;
505 di << "Array of Standard_Integer with bounds from = " << From << " to = " << To << "\n";
506 Handle(TDataStd_IntegerArray) A = TDataStd_IntegerArray::Set(label, From, To, isDelta);
510 for(Standard_Integer i = From; i<=To; i++) {
511 A->SetValue(i, Draw::Atoi(arg[j]) );
519 //=======================================================================
520 //function : SetIntArrayValue (DF, entry, index, value)
521 //=======================================================================
522 static Standard_Integer DDataStd_SetIntArrayValue (Draw_Interpretor&,
528 if (!DDF::GetDF(arg[1], DF))
533 if (!DDF::AddLabel(DF, arg[2], label))
536 // Get index and value.
537 Standard_Integer index = Draw::Atoi(arg[3]);
538 Standard_Integer value = Draw::Atoi(arg[4]);
541 Handle(TDataStd_IntegerArray) arr;
542 if (label.FindAttribute(TDataStd_IntegerArray::GetID(), arr))
544 arr->SetValue(index, value);
551 //=======================================================================
552 //function : GetIntArray (DF, entry )
553 //=======================================================================
554 static Standard_Integer DDataStd_GetIntArray (Draw_Interpretor& di,
561 if (!DDF::GetDF(arg[1],DF)) return 1;
563 if( !DDF::FindLabel(DF, arg[2], label) ) {
564 di << "No label for entry" << "\n";
568 Handle(TDataStd_IntegerArray) A;
569 if ( !label.FindAttribute(TDataStd_IntegerArray::GetID(), A) ) {
570 di << "There is no TDataStd_IntegerArray under label" << "\n";
574 for(Standard_Integer i = A->Lower(); i<=A->Upper(); i++){
575 //cout << A->Value(i) << endl;
584 //=======================================================================
585 //function : GetIntArrayValue (DF, entry, index)
586 //=======================================================================
587 static Standard_Integer DDataStd_GetIntArrayValue (Draw_Interpretor& di,
592 if (!DDF::GetDF(arg[1],DF))
596 if (!DDF::FindLabel(DF, arg[2], label)) {
597 di << "No label for entry" << "\n";
601 Handle(TDataStd_IntegerArray) A;
602 if ( !label.FindAttribute(TDataStd_IntegerArray::GetID(), A) ) {
603 di << "There is no TDataStd_IntegerArray under label" << "\n";
607 Standard_Integer index = Draw::Atoi(arg[3]);
608 if (index < A->Lower() || index > A->Upper()) {
609 di << "Index is out of range\n";
612 di << A->Value(index) << "\n";
618 //=======================================================================
619 //function : ChangeIntArray (DF, entry, indx, val )
620 //=======================================================================
621 static Standard_Integer DDataStd_ChangeIntArray (Draw_Interpretor& di,
628 if (!DDF::GetDF(arg[1],DF)) return 1;
630 if( !DDF::FindLabel(DF, arg[2], label) ) {
631 di << "No label for entry" << "\n";
635 Handle(TDataStd_IntegerArray) A;
636 if ( !label.FindAttribute(TDataStd_IntegerArray::GetID(), A) ) {
637 di << "There is no TDataStd_IntegerArray at label" << "\n";
640 Standard_Integer indx = Draw::Atoi(arg[3]);
641 Standard_Integer val = Draw::Atoi(arg[4]);
642 Standard_Integer low = A->Lower(), up = A->Upper();
643 if(low <= indx && indx <= up)
644 A->SetValue(indx, val);
646 Handle(TColStd_HArray1OfInteger) Arr = A->Array();
647 Handle(TColStd_HArray1OfInteger) arr;
651 arr = new TColStd_HArray1OfInteger(low, up);
652 for(i=low; i<= Arr->Upper(); i++)
653 arr->SetValue(i, Arr->Value(i));
654 for(i=Arr->Upper()+1; i<= up; i++) {
656 arr->SetValue(i, val);
660 } else if(indx < up) {//clip array : indx to be negative
662 arr = new TColStd_HArray1OfInteger(low, up);
663 for(i=low; i< up; i++)
664 arr->SetValue(i, Arr->Value(i));
665 arr->SetValue(up, val);
671 di << "DDataStd_ChangeIntArray: Error\n";
675 //=======================================================================
676 //function : SetIntArrayT (DF, entry , isDelta, From, To) - for testing
678 //=======================================================================
679 static Standard_Integer DDataStd_SetIntArrayTest (Draw_Interpretor& di,
686 if (!DDF::GetDF(arg[1],DF)) return 1;
688 DDF::AddLabel(DF, arg[2], label);
689 Standard_Boolean isDelta = Draw::Atoi(arg[3]) != 0;
690 Standard_Integer From = Draw::Atoi(arg[4]), To = Draw::Atoi( arg[5] ), j;
691 di << "Array of Standard_Integer with bounds from = " << From << " to = " << To << "\n";
692 Handle(TDataStd_IntegerArray) A = TDataStd_IntegerArray::Set(label, From, To, isDelta);
695 Standard_Integer k = 100;
696 for(Standard_Integer i = From; i<=To; i++) {
704 //=======================================================================
705 //function : SetRealArray (DF, entry , isDelta, From, To, elmt1, elmt2, ...
706 //=======================================================================
707 static Standard_Integer DDataStd_SetRealArray (Draw_Interpretor& di,
714 if (!DDF::GetDF(arg[1],DF)) return 1;
716 DDF::AddLabel(DF, arg[2], label);
717 Standard_Boolean isDelta = Draw::Atoi(arg[3]) != 0;
719 Standard_Integer From = Draw::Atoi(arg[4]), To = Draw::Atoi( arg[5] ), j;
720 di << " Array of Standard_Real with bounds from = " << From << " to = " << To << "\n";
721 Handle(TDataStd_RealArray) A = TDataStd_RealArray::Set(label, From, To, isDelta);
725 for(Standard_Integer i = From; i<=To; i++) {
726 A->SetValue(i, Draw::Atof(arg[j]) );
734 //=======================================================================
735 //function : SetRealArrayValue (DF, entry, index value)
736 //=======================================================================
737 static Standard_Integer DDataStd_SetRealArrayValue (Draw_Interpretor&,
743 if (!DDF::GetDF(arg[1], DF))
748 if (!DDF::AddLabel(DF, arg[2], label))
751 // Get index and value.
752 Standard_Integer index = Draw::Atoi(arg[3]);
753 Standard_Real value = Draw::Atof(arg[4]);
756 Handle(TDataStd_RealArray) realArray;
757 if (label.FindAttribute(TDataStd_RealArray::GetID(), realArray))
759 realArray->SetValue(index, value);
766 //=======================================================================
767 //function : GetRealArray (DF, entry )
768 //=======================================================================
769 static Standard_Integer DDataStd_GetRealArray (Draw_Interpretor& di,
775 if (!DDF::GetDF(arg[1],DF)) return 1;
777 if( !DDF::FindLabel(DF, arg[2], label) ) {
778 di << "No label for entry" << "\n";
782 Handle(TDataStd_RealArray) A;
783 if ( !label.FindAttribute(TDataStd_RealArray::GetID(), A) ) {
784 di << "There is no TDataStd_RealArray under label" << "\n";
788 for(Standard_Integer i = A->Lower(); i<=A->Upper(); i++){
789 //cout << A->Value(i) << endl;
799 //=======================================================================
800 //function : GetRealArrayValue (DF, entry, index)
801 //=======================================================================
802 static Standard_Integer DDataStd_GetRealArrayValue (Draw_Interpretor& di,
807 if (!DDF::GetDF(arg[1],DF))
811 if (!DDF::FindLabel(DF, arg[2], label)) {
812 di << "No label for entry" << "\n";
816 Handle(TDataStd_RealArray) A;
817 if ( !label.FindAttribute(TDataStd_RealArray::GetID(), A) ) {
818 di << "There is no TDataStd_RealArray under label" << "\n";
822 Standard_Integer index = Draw::Atoi(arg[3]);
823 if (index < A->Lower() || index > A->Upper()) {
824 di << "Index is out of range\n";
827 di << A->Value(index) << "\n";
833 //=======================================================================
834 //function : ChangeRealArray (DF, entry, indx, val )
835 //=======================================================================
836 static Standard_Integer DDataStd_ChangeRealArray (Draw_Interpretor& di,
843 if (!DDF::GetDF(arg[1],DF)) return 1;
845 if( !DDF::FindLabel(DF, arg[2], label) ) {
846 di << "No label for entry" << "\n";
850 Handle(TDataStd_RealArray) A;
851 if ( !label.FindAttribute(TDataStd_RealArray::GetID(), A) ) {
852 di << "There is no TDataStd_RealArray at label" << "\n";
855 Standard_Integer indx = Draw::Atoi(arg[3]);
856 Standard_Real val = Draw::Atof(arg[4]);
857 Standard_Integer low = A->Lower(), up = A->Upper();
858 if(low <= indx && indx <= up)
859 A->SetValue(indx, val);
861 Handle(TColStd_HArray1OfReal) Arr = A->Array();
862 Handle(TColStd_HArray1OfReal) arr;
866 arr = new TColStd_HArray1OfReal(low, up);
867 for(i=low; i<= Arr->Upper(); i++)
868 arr->SetValue(i, Arr->Value(i));
869 for(i=Arr->Upper()+1; i<= up; i++) {
871 arr->SetValue(i, val);
875 } else if(indx < up) {//clip array : indx to be negative
877 arr = new TColStd_HArray1OfReal(low, up);
878 for(i=low; i< up; i++)
879 arr->SetValue(i, Arr->Value(i));
880 arr->SetValue(up, val);
886 di << "DDataStd_ChangeRealArray: Error\n";
890 //=======================================================================
891 //function : SetVariable (DF, entry, isConstant[0/1], units)
892 //=======================================================================
893 static Standard_Integer DDataStd_SetVariable (Draw_Interpretor& di,
900 if (!DDF::GetDF(arg[1],DF)) return 1;
902 DDF::AddLabel(DF, arg[2], label);
904 Handle(TDataStd_Variable) aV = TDataStd_Variable::Set(label);
906 const char* aUnits = arg[4];
907 aV->Unit(Standard_CString(aUnits));
909 aV->Constant (Draw::Atoi(arg[3]) != 0);
913 di << "Wrong arguments\n";
917 //=======================================================================
918 //function : GetVariable (DF, entry, [isConstant], [units])
919 //=======================================================================
920 static Standard_Integer DDataStd_GetVariable (Draw_Interpretor& di,
927 if (!DDF::GetDF(arg[1],DF)) return 1;
929 DDF::AddLabel(DF, arg[2], label);
931 Handle(TDataStd_Variable) aV;
932 if (!label.FindAttribute(TDataStd_Variable::GetID(), aV))
934 di << "TDataStd_Variable: no such attribute\n";
937 Draw::Set(arg[3],TCollection_AsciiString(Standard_Integer(aV->IsConstant())).ToCString());
938 Draw::Set(arg[4],aV->Unit().ToCString());
942 di << "Wrong arguments\n";
946 #include <TDataStd_Relation.hxx>
947 #include <TDataStd_Variable.hxx>
948 //=======================================================================
949 //function : SetRelation (DF, entry, expression, var1[, var2, ...])
950 //=======================================================================
951 static Standard_Integer DDataStd_SetRelation (Draw_Interpretor& di,
952 Standard_Integer nb, const char** arg)
957 if (!DDF::GetDF(arg[1],DF)) return 1;
959 DDF::AddLabel(DF, arg[2], label);
961 Standard_CString expr (arg[3]);
962 Handle(TDataStd_Relation) aR = TDataStd_Relation::Set(label);
963 aR->SetRelation(expr);
964 Handle(TDataStd_Variable) aV;
966 for (Standard_Integer i = 4; i < nb; i++)
968 if (!DDF::FindLabel(DF, arg[i], label))
970 di << "No label for entry" << arg[i] << "\n";
973 if (!label.FindAttribute(TDataStd_Variable::GetID(), aV))
975 di << "No TDataStd_Variable Attribute on label\n";
978 aR->GetVariables().Append(aV);
982 di << "Usage: SetRelation (DF, entry, expression, var1[, var2, ...])\n";
986 //=======================================================================
987 //function : DumpRelation (DF, entry)
988 //=======================================================================
989 static Standard_Integer DDataStd_DumpRelation (Draw_Interpretor& di,
990 Standard_Integer nb, const char** arg)
995 if (!DDF::GetDF(arg[1],DF)) return 1;
998 if (!DDF::FindLabel(DF, arg[2], label))
1000 di << "No label for entry " << arg[2] << "\n";
1003 Handle(TDataStd_Relation) aR;
1004 if (!label.FindAttribute(TDataStd_Relation::GetID(), aR))
1006 di << "No TDataStd_Relation Attribute on label " << arg[2] << "\n";
1010 di << "Relation: expression = \"" << aR->GetRelation()
1011 << "\" variables list = (";
1013 Handle(TDF_Attribute) aV;
1014 TCollection_AsciiString anEntry;
1016 TDF_ListIteratorOfAttributeList it;
1017 for (it.Initialize(aR->GetVariables()); it.More(); it.Next())
1022 label = aV->Label();
1023 TDF_Tool::Entry(label, anEntry);
1024 di << anEntry.ToCString() << " ";
1030 di << "Usage: DumpRelation (DF, entry)\n";
1034 #include <TFunction_Function.hxx>
1035 //=======================================================================
1036 //function : SetFunction (DF, entry, guid, failure)
1037 //=======================================================================
1038 static Standard_Integer DDataStd_SetFunction (Draw_Interpretor& di,
1039 Standard_Integer nb, const char** arg)
1043 Handle(TDF_Data) DF;
1044 if (!DDF::GetDF(arg[1],DF)) return 1;
1046 DDF::AddLabel(DF, arg[2], label);
1048 Standard_GUID guid (arg[3]);
1049 Handle(TFunction_Function) aF = TFunction_Function::Set(label, guid);
1051 int fail = Draw::Atoi(arg[4]);
1052 aF->SetFailure(fail);
1057 di << "Wrong arguments" << "\n";
1061 //=======================================================================
1062 //function : GetFunction (DF, entry, guid(out), failure(out))
1063 //=======================================================================
1064 static Standard_Integer DDataStd_GetFunction (Draw_Interpretor& di,
1065 Standard_Integer nb, const char** arg)
1069 Handle(TDF_Data) DF;
1070 if (!DDF::GetDF(arg[1],DF)) return 1;
1072 if (!DDF::FindLabel(DF, arg[2], label))
1074 di << "No label for entry" << "\n";
1078 Handle(TFunction_Function) aF;
1079 if (!label.FindAttribute(TFunction_Function::GetID(), aF))
1081 di << "No TFunction_Function Attribute on label\n";
1085 char *aStrGUID = new char[37];
1086 aF->GetDriverGUID().ToCString(aStrGUID);
1087 Draw::Set(arg[3],aStrGUID);
1089 Draw::Set(arg[4],TCollection_AsciiString(aF->GetFailure()).ToCString());
1094 di << "Wrong arguments" << "\n";
1098 //=======================================================================
1099 //function : SetExtStringArray (DF, entry , isDelta, From, To, elmt1, elmt2, ...
1100 //=======================================================================
1101 static Standard_Integer DDataStd_SetExtStringArray (Draw_Interpretor& di,
1102 Standard_Integer nb,
1105 Handle(TDF_Data) DF;
1106 if (!DDF::GetDF(arg[1],DF)) return 1;
1108 DDF::AddLabel(DF, arg[2], label);
1109 Standard_Boolean isDelta = Draw::Atoi(arg[3]) != 0;
1111 Standard_Integer From = Draw::Atoi(arg[4]), To = Draw::Atoi( arg[5] ), j;
1112 di << "Array of ExtString with bounds from = " << From << " to = " << To << "\n";
1113 Handle(TDataStd_ExtStringArray) A = TDataStd_ExtStringArray::Set(label, From, To, isDelta);
1117 for(Standard_Integer i = From; i<=To; i++) {
1118 A->SetValue(i, arg[j] );
1126 //=======================================================================
1127 //function : SetExtStringArrayValue (DF, entry, index, value)
1128 //=======================================================================
1129 static Standard_Integer DDataStd_SetExtStringArrayValue (Draw_Interpretor&,
1134 Handle(TDF_Data) DF;
1135 if (!DDF::GetDF(arg[1], DF))
1140 if (!DDF::AddLabel(DF, arg[2], label))
1143 // Get index and value.
1144 Standard_Integer index = Draw::Atoi(arg[3]);
1147 Handle(TDataStd_ExtStringArray) arr;
1148 if (label.FindAttribute(TDataStd_ExtStringArray::GetID(), arr))
1150 arr->SetValue(index, arg[4]);
1157 //=======================================================================
1158 //function : GetExtStringArray (DF, entry )
1159 //=======================================================================
1160 static Standard_Integer DDataStd_GetExtStringArray (Draw_Interpretor& di,
1166 Handle(TDF_Data) DF;
1167 if (!DDF::GetDF(arg[1],DF)) return 1;
1169 if( !DDF::FindLabel(DF, arg[2], label) ) {
1170 di << "No label for entry" << "\n";
1174 Handle(TDataStd_ExtStringArray) A;
1175 if ( !label.FindAttribute(TDataStd_ExtStringArray::GetID(), A) ) {
1176 di << "There is no TDataStd_ExtStringArray under label" << "\n";
1180 for(Standard_Integer i = A->Lower(); i<=A->Upper(); i++){
1181 TCollection_AsciiString anAsciiString(A->Value(i),'?');
1182 di << anAsciiString.ToCString();
1190 //=======================================================================
1191 //function : GetExtStringArrayValue (DF, entry, index)
1192 //=======================================================================
1193 static Standard_Integer DDataStd_GetExtStringArrayValue (Draw_Interpretor& di,
1197 Handle(TDF_Data) DF;
1198 if (!DDF::GetDF(arg[1],DF))
1202 if (!DDF::FindLabel(DF, arg[2], label)) {
1203 di << "No label for entry" << "\n";
1207 Handle(TDataStd_ExtStringArray) A;
1208 if ( !label.FindAttribute(TDataStd_ExtStringArray::GetID(), A) ) {
1209 di << "There is no TDataStd_ExtStringArray under label" << "\n";
1213 Standard_Integer index = Draw::Atoi(arg[3]);
1214 if (index < A->Lower() || index > A->Upper()) {
1215 di << "Index is out of range\n";
1218 const TCollection_ExtendedString& value = A->Value(index);
1225 //=======================================================================
1226 //function : ChangeExtStrArray (DF, entry, indx, val )
1227 //=======================================================================
1228 static Standard_Integer DDataStd_ChangeExtStrArray (Draw_Interpretor& di,
1229 Standard_Integer nb,
1234 Handle(TDF_Data) DF;
1235 if (!DDF::GetDF(arg[1],DF)) return 1;
1237 if( !DDF::FindLabel(DF, arg[2], label) ) {
1238 di << "No label for entry" << "\n";
1242 Handle(TDataStd_ExtStringArray) A;
1243 if ( !label.FindAttribute(TDataStd_ExtStringArray::GetID(), A) ) {
1244 di << "There is no TDataStd_ExtStringArray at label" << "\n";
1247 Standard_Integer indx = Draw::Atoi(arg[3]);
1248 TCollection_ExtendedString val(arg[4]);
1249 Standard_Integer low = A->Lower(), up = A->Upper();
1250 if(low <= indx && indx <= up)
1251 A->SetValue(indx, val);//TColStd_HArray1OfExtendedString
1253 Handle(TColStd_HArray1OfExtendedString) Arr = A->Array();
1254 Handle(TColStd_HArray1OfExtendedString) arr;
1258 arr = new TColStd_HArray1OfExtendedString(low, up);
1259 for(i=low; i<= Arr->Upper(); i++)
1260 arr->SetValue(i, Arr->Value(i));
1261 for(i=Arr->Upper()+1; i<= up; i++) {
1263 arr->SetValue(i, val);
1265 arr->SetValue(i, 0);
1267 } else if(indx < up) {//clip array : indx to be negative
1269 arr = new TColStd_HArray1OfExtendedString(low, up);
1270 for(i=low; i< up; i++)
1271 arr->SetValue(i, Arr->Value(i));
1272 arr->SetValue(up, val);
1274 A->ChangeArray(arr);
1278 di << "DDataStd_ChangeExtStringArray: Error\n";
1283 //=======================================================================
1284 //function : DDataStd_KeepUTF
1285 //purpose : SetUTFName (DF, fatherEntry, fileName)
1286 //=======================================================================
1287 static Standard_Integer DDataStd_KeepUTF (Draw_Interpretor& di,
1288 Standard_Integer nb,
1292 Handle(TDF_Data) DF;
1293 if (!DDF::GetDF(arg[1],DF)) return 1;
1295 DDF::AddLabel(DF, arg[2], L);
1296 Standard_CString aFileName(arg[3]);
1299 ifstream anIS (aFileName, ios::in | ios::binary);
1301 ifstream anIS (aFileName);
1304 // Can not open file
1305 cout << "Error: can't open file " << aFileName <<endl;;
1310 anIS.getline(buf, 1023,'\n');
1311 // 0xEFBBBF - prefix of UTF8
1312 p = &buf[3]; //skip prefix
1313 TCollection_ExtendedString aES1(p, Standard_True);
1314 TDataStd_Name::Set(L.NewChild(), aES1);
1317 while (anIS.good() && !anIS.eof()) {
1318 anIS.getline(buf, 1023,'\n');
1319 TCollection_ExtendedString aES2(buf, Standard_True);
1320 const TDF_Label& aLab = L.NewChild();
1321 TDataStd_Name::Set(aLab, aES2);
1325 di << "SetUTFName : String is not kept in DF\n";
1329 //=======================================================================
1330 //function : DDataStd_GetUTFtoFile
1331 //purpose : GetUTF (DF, fatherEntry, fileName)
1332 // : all strings from sub-labels of the <fatherEntry> concatenated
1333 // : in one, converted to UTF8 and kept in the file
1334 //=======================================================================
1335 static Standard_Integer DDataStd_GetUTFtoFile (Draw_Interpretor& di,
1336 Standard_Integer nb,
1340 Handle(TDF_Data) DF;
1341 if (!DDF::GetDF(arg[1],DF)) return 1;
1343 if (!DDF::FindLabel(DF,arg[2],L)) return 1;
1345 TCollection_ExtendedString aES;
1346 Standard_Boolean aF = Standard_False;
1347 TDF_ChildIterator anIt(L);
1348 for(;anIt.More();anIt.Next()) {
1349 const TDF_Label& aLab = anIt.Value();
1350 if(!aLab.IsNull()) {
1351 Handle(TDataStd_Name) anAtt;
1352 if(aLab.FindAttribute(TDataStd_Name::GetID(), anAtt)) {
1353 if(anAtt->Get().Length()) {
1364 cout << "Data is not found in the Document" <<endl;
1368 Standard_CString aFileName(arg[3]);
1371 ofstream anOS (aFileName, ios::in | ios::binary | ios::ate);
1373 ofstream anOS (aFileName, ios::ate);
1376 // A problem with the stream
1378 cout << "Error: problem with the file stream, rdstate = " <<anOS.rdstate() <<endl;
1381 unsigned char prefix[4] = {0xEF,0xBB,0xBF, 0x00};
1382 anOS.write( (char*)&prefix[0], 3);
1383 Standard_Integer n = aES.LengthOfCString();
1384 Standard_PCharacter aCstr = (Standard_PCharacter) Standard::Allocate(n+1);
1385 n = aES.ToUTF8CString(aCstr);
1386 anOS.write( (char*)&aCstr[0], n);
1390 di << "GetUTF : Data is not extracted to the specified file \n";
1394 //=======================================================================
1395 //function : SetByteArray (DF, entry, isDelta, From, To, elmt1, elmt2, ... )
1396 //=======================================================================
1397 static Standard_Integer DDataStd_SetByteArray (Draw_Interpretor& di,
1398 Standard_Integer nb,
1402 Handle(TDF_Data) DF;
1403 if (!DDF::GetDF(arg[1],DF)) return 1;
1405 DDF::AddLabel(DF, arg[2], label);
1406 Standard_Boolean isDelta = Draw::Atoi(arg[3]) != 0;
1407 Standard_Integer From = Draw::Atoi(arg[4]), To = Draw::Atoi( arg[5] ), j;
1408 di << "Array of Standard_Byte with bounds from = " << From << " to = " << To << "\n";
1409 Handle(TDataStd_ByteArray) A = TDataStd_ByteArray::Set(label, From, To, isDelta);
1413 for(Standard_Integer i = From; i<=To; ++i) {
1414 Standard_Integer ival = Draw::Atoi(arg[j]);
1415 if(ival < 0 || 255 < ival) {
1416 cout << "Bad value = " << ival<< endl;
1419 A->SetValue(i, (Standard_Byte)ival);
1425 di << "DDataStd_SetByteArray: Error\n";
1429 //=======================================================================
1430 //function : SetByteArrayValue (DF, entry, index, value)
1431 //=======================================================================
1432 static Standard_Integer DDataStd_SetByteArrayValue (Draw_Interpretor&,
1437 Handle(TDF_Data) DF;
1438 if (!DDF::GetDF(arg[1], DF))
1443 if (!DDF::AddLabel(DF, arg[2], label))
1446 // Get index and value.
1447 Standard_Integer index = Draw::Atoi(arg[3]);
1448 Standard_Integer value = Draw::Atoi(arg[4]);
1451 if(value < 0 || 255 < value) {
1452 cout << "Bad value = " << value << endl;
1457 Handle(TDataStd_ByteArray) arr;
1458 if (label.FindAttribute(TDataStd_ByteArray::GetID(), arr))
1460 arr->SetValue(index, (Standard_Byte) value);
1467 //=======================================================================
1468 //function : SetBooleanArray (DF, entry, isDelta, From, To, elmt1, elmt2, ... )
1469 //=======================================================================
1470 static Standard_Integer DDataStd_SetBooleanArray (Draw_Interpretor& di,
1471 Standard_Integer nb,
1476 Handle(TDF_Data) DF;
1477 if (!DDF::GetDF(arg[1],DF))
1481 DDF::AddLabel(DF, arg[2], label);
1482 Standard_Integer From = Draw::Atoi(arg[4]), To = Draw::Atoi( arg[5] ), j;
1483 di << "Array of Standard_Boolean with bounds from = " << From << " to = " << To << "\n";
1484 Handle(TDataStd_BooleanArray) A = TDataStd_BooleanArray::Set(label, From, To);
1488 for(Standard_Integer i = From; i<=To; i++)
1490 Standard_Integer ival = Draw::Atoi(arg[j]);
1493 cout << "Bad value = " << ival<< ". 0 or 1 is expected." << endl;
1496 A->SetValue(i, ival != 0);
1502 di << "DDataStd_SetBooleanArray: Error\n";
1506 //=======================================================================
1507 //function : SetBooleanArrayValue (DF, entry, index, value)
1508 //=======================================================================
1509 static Standard_Integer DDataStd_SetBooleanArrayValue (Draw_Interpretor& di,
1514 Handle(TDF_Data) DF;
1515 if (!DDF::GetDF(arg[1], DF))
1520 if (!DDF::AddLabel(DF, arg[2], label))
1523 // Get index and value.
1524 Standard_Integer index = Draw::Atoi(arg[3]);
1525 Standard_Integer value = Draw::Atoi(arg[4]);
1528 if (value != 0 && value != 1) {
1529 di << "DDataStd_SetBooleanArrayValue: Error! The value should be either 0 or 1.\n";
1534 Handle(TDataStd_BooleanArray) arr;
1535 if (label.FindAttribute(TDataStd_BooleanArray::GetID(), arr))
1537 arr->SetValue(index, value != 0);
1544 //=======================================================================
1545 //function : DDataStd_SetExtStringList (DF, entry, elmt1, elmt2, ... )
1546 //=======================================================================
1547 static Standard_Integer DDataStd_SetExtStringList (Draw_Interpretor& di,
1548 Standard_Integer nb,
1553 Handle(TDF_Data) DF;
1554 if (!DDF::GetDF(arg[1],DF))
1558 DDF::AddLabel(DF, arg[2], label);
1559 Handle(TDataStd_ExtStringList) A = TDataStd_ExtStringList::Set(label);
1560 for(Standard_Integer i = 3; i <= nb - 1; i++)
1562 TCollection_ExtendedString aValue(arg[i]);
1567 di << "DDataStd_SetExtStringList: Error\n";
1571 //=======================================================================
1572 //function : DDataStd_SetReferenceList (DF, entry, elmt1, elmt2, ... )
1573 //=======================================================================
1574 static Standard_Integer DDataStd_SetReferenceList (Draw_Interpretor& di,
1575 Standard_Integer nb,
1580 Handle(TDF_Data) DF;
1581 if (!DDF::GetDF(arg[1],DF))
1585 DDF::AddLabel(DF, arg[2], label);
1586 if(!label.IsNull()) {
1587 Handle(TDataStd_ReferenceList) A = TDataStd_ReferenceList::Set(label);
1588 for(Standard_Integer i = 3; i <= nb - 1; i++)
1590 TDF_Label aValueLabel;
1591 DDF::AddLabel(DF, arg[i], aValueLabel);
1592 if(aValueLabel.IsNull()) continue;
1593 A->Append(aValueLabel);
1598 di << "DDataStd_SetReferenceList: Error\n";
1603 //=======================================================================
1604 //function : SetBooleanList (DF, entry, elmt1, elmt2, ... )
1605 //=======================================================================
1606 static Standard_Integer DDataStd_SetBooleanList (Draw_Interpretor& di,
1607 Standard_Integer nb,
1612 Handle(TDF_Data) DF;
1613 if (!DDF::GetDF(arg[1],DF))
1617 DDF::AddLabel(DF, arg[2], label);
1618 Handle(TDataStd_BooleanList) A = TDataStd_BooleanList::Set(label);
1619 for(Standard_Integer i = 3; i <= nb - 1; i++)
1621 Standard_Integer ival = Draw::Atoi(arg[i]);
1624 cout << "Bad value = " << ival<< ". 0 or 1 is expected." << endl;
1627 A->Append (ival != 0);
1631 di << "DDataStd_SetBooleanList: Error\n";
1635 //=======================================================================
1636 //function : SetIntegerList (DF, entry, elmt1, elmt2, ... )
1637 //=======================================================================
1638 static Standard_Integer DDataStd_SetIntegerList (Draw_Interpretor& di,
1639 Standard_Integer nb,
1644 Handle(TDF_Data) DF;
1645 if (!DDF::GetDF(arg[1],DF))
1649 DDF::AddLabel(DF, arg[2], label);
1650 Handle(TDataStd_IntegerList) A = TDataStd_IntegerList::Set(label);
1651 for(Standard_Integer i = 3; i <= nb - 1; i++)
1653 Standard_Integer ival = Draw::Atoi(arg[i]);
1658 di << "DDataStd_SetIntegerList: Error\n";
1662 //=======================================================================
1663 //function : SetRealList (DF, entry, elmt1, elmt2, ... )
1664 //=======================================================================
1665 static Standard_Integer DDataStd_SetRealList (Draw_Interpretor& di,
1666 Standard_Integer nb,
1671 Handle(TDF_Data) DF;
1672 if (!DDF::GetDF(arg[1],DF))
1676 DDF::AddLabel(DF, arg[2], label);
1677 Handle(TDataStd_RealList) A = TDataStd_RealList::Set(label);
1678 for(Standard_Integer i = 3; i <= nb - 1; i++)
1680 Standard_Real fval = Draw::Atof(arg[i]);
1685 di << "DDataStd_SetRealList: Error\n";
1689 //=======================================================================
1690 //function : DDataStd_InsertBeforeExtStringList (DF, entry, index, value )
1691 //=======================================================================
1692 static Standard_Integer DDataStd_InsertBeforeExtStringList (Draw_Interpretor& di,
1693 Standard_Integer nb,
1698 Handle(TDF_Data) DF;
1699 if (!DDF::GetDF(arg[1],DF))
1703 DDF::AddLabel(DF, arg[2], label);
1705 Handle(TDataStd_ExtStringList) A;
1706 if (!label.FindAttribute(TDataStd_ExtStringList::GetID(), A))
1709 Standard_Integer index = Draw::Atoi(arg[3]);
1710 TCollection_ExtendedString value = arg[4];
1712 if (A->InsertBefore(index, value))
1717 di << "DDataStd_InsertBeforeExtStringList: Error\n";
1721 //=======================================================================
1722 //function : DDataStd_InsertAfterExtStringList (DF, entry, index, value )
1723 //=======================================================================
1724 static Standard_Integer DDataStd_InsertAfterExtStringList (Draw_Interpretor& di,
1725 Standard_Integer nb,
1730 Handle(TDF_Data) DF;
1731 if (!DDF::GetDF(arg[1],DF))
1735 DDF::AddLabel(DF, arg[2], label);
1737 Handle(TDataStd_ExtStringList) A;
1738 if (!label.FindAttribute(TDataStd_ExtStringList::GetID(), A))
1741 Standard_Integer index = Draw::Atoi(arg[3]);
1742 TCollection_ExtendedString value = arg[4];
1744 if (A->InsertAfter(index, value))
1749 di << "DDataStd_InsertAfterExtStringList: Error\n";
1753 //=======================================================================
1754 //function : DDataStd_RemoveExtStringList (DF, entry, index )
1755 //=======================================================================
1756 static Standard_Integer DDataStd_RemoveExtStringList (Draw_Interpretor& di,
1757 Standard_Integer nb,
1762 Handle(TDF_Data) DF;
1763 if (!DDF::GetDF(arg[1],DF))
1767 DDF::AddLabel(DF, arg[2], label);
1769 Handle(TDataStd_ExtStringList) A;
1770 if (!label.FindAttribute(TDataStd_ExtStringList::GetID(), A))
1773 Standard_Integer index = Draw::Atoi(arg[3]);
1775 if (A->Remove(index))
1780 di << "DDataStd_RemoveExtStringList: Error\n";
1784 //=======================================================================
1785 //function : DDataStd_InsertBeforeBooleanList (DF, entry, index, value )
1786 //=======================================================================
1787 static Standard_Integer DDataStd_InsertBeforeBooleanList (Draw_Interpretor& di,
1788 Standard_Integer nb,
1793 Handle(TDF_Data) DF;
1794 if (!DDF::GetDF(arg[1],DF))
1798 DDF::AddLabel(DF, arg[2], label);
1800 Handle(TDataStd_BooleanList) A;
1801 if (!label.FindAttribute(TDataStd_BooleanList::GetID(), A))
1804 Standard_Integer index = Draw::Atoi(arg[3]);
1805 Standard_Boolean value = Draw::Atoi(arg[4]) != 0;
1807 if (A->InsertBefore(index, value))
1812 di << "DDataStd_InsertBeforeBooleanList: Error\n";
1816 //=======================================================================
1817 //function : DDataStd_InsertAfterBooleanList (DF, entry, index, value )
1818 //=======================================================================
1819 static Standard_Integer DDataStd_InsertAfterBooleanList (Draw_Interpretor& di,
1820 Standard_Integer nb,
1825 Handle(TDF_Data) DF;
1826 if (!DDF::GetDF(arg[1],DF))
1830 DDF::AddLabel(DF, arg[2], label);
1832 Handle(TDataStd_BooleanList) A;
1833 if (!label.FindAttribute(TDataStd_BooleanList::GetID(), A))
1836 Standard_Integer index = Draw::Atoi(arg[3]);
1837 Standard_Boolean value = Draw::Atoi(arg[4]) != 0;
1839 if (A->InsertAfter(index, value))
1844 di << "DDataStd_InsertAfterBooleanList: Error\n";
1848 //=======================================================================
1849 //function : DDataStd_RemoveBooleanList (DF, entry, index )
1850 //=======================================================================
1851 static Standard_Integer DDataStd_RemoveBooleanList (Draw_Interpretor& di,
1852 Standard_Integer nb,
1857 Handle(TDF_Data) DF;
1858 if (!DDF::GetDF(arg[1],DF))
1862 DDF::AddLabel(DF, arg[2], label);
1864 Handle(TDataStd_BooleanList) A;
1865 if (!label.FindAttribute(TDataStd_BooleanList::GetID(), A))
1868 Standard_Integer index = Draw::Atoi(arg[3]);
1870 if (A->Remove(index))
1875 di << "DDataStd_RemoveBooleanList: Error\n";
1879 //=======================================================================
1880 //function : DDataStd_InsertBeforeIntegerList (DF, entry, index, value )
1881 //=======================================================================
1882 static Standard_Integer DDataStd_InsertBeforeIntegerList (Draw_Interpretor& di,
1883 Standard_Integer nb,
1888 Handle(TDF_Data) DF;
1889 if (!DDF::GetDF(arg[1],DF))
1893 DDF::AddLabel(DF, arg[2], label);
1895 Handle(TDataStd_IntegerList) A;
1896 if (!label.FindAttribute(TDataStd_IntegerList::GetID(), A))
1899 Standard_Integer index = Draw::Atoi(arg[3]);
1900 Standard_Integer value = (Standard_Integer) Draw::Atoi(arg[4]);
1902 if (A->InsertBeforeByIndex(index, value))
1907 di << "DDataStd_InsertBeforeIntegerList: Error\n";
1911 //=======================================================================
1912 //function : DDataStd_InsertAfterIntegerList (DF, entry, index, value )
1913 //=======================================================================
1914 static Standard_Integer DDataStd_InsertAfterIntegerList (Draw_Interpretor& di,
1915 Standard_Integer nb,
1920 Handle(TDF_Data) DF;
1921 if (!DDF::GetDF(arg[1],DF))
1925 DDF::AddLabel(DF, arg[2], label);
1927 Handle(TDataStd_IntegerList) A;
1928 if (!label.FindAttribute(TDataStd_IntegerList::GetID(), A))
1931 Standard_Integer index = Draw::Atoi(arg[3]);
1932 Standard_Integer value = (Standard_Integer) Draw::Atoi(arg[4]);
1934 if (A->InsertAfterByIndex(index, value))
1939 di << "DDataStd_InsertAfterIntegerList: Error\n";
1943 //=======================================================================
1944 //function : DDataStd_RemoveIntegerList (DF, entry, index )
1945 //=======================================================================
1946 static Standard_Integer DDataStd_RemoveIntegerList (Draw_Interpretor& di,
1947 Standard_Integer nb,
1952 Handle(TDF_Data) DF;
1953 if (!DDF::GetDF(arg[1],DF))
1957 DDF::AddLabel(DF, arg[2], label);
1959 Handle(TDataStd_IntegerList) A;
1960 if (!label.FindAttribute(TDataStd_IntegerList::GetID(), A))
1963 Standard_Integer index = Draw::Atoi(arg[3]);
1965 if (A->RemoveByIndex(index))
1970 di << "DDataStd_RemoveIntegerList: Error\n";
1974 //=======================================================================
1975 //function : DDataStd_InsertBeforeRealList (DF, entry, index, value )
1976 //=======================================================================
1977 static Standard_Integer DDataStd_InsertBeforeRealList (Draw_Interpretor& di,
1978 Standard_Integer nb,
1983 Handle(TDF_Data) DF;
1984 if (!DDF::GetDF(arg[1],DF))
1988 DDF::AddLabel(DF, arg[2], label);
1990 Handle(TDataStd_RealList) A;
1991 if (!label.FindAttribute(TDataStd_RealList::GetID(), A))
1994 Standard_Integer index = Draw::Atoi(arg[3]);
1995 Standard_Real value = (Standard_Real) Draw::Atof(arg[4]);
1997 if (A->InsertBeforeByIndex(index, value))
2002 di << "DDataStd_InsertBeforeRealList: Error\n";
2006 //=======================================================================
2007 //function : DDataStd_InsertAfterRealList (DF, entry, index, value )
2008 //=======================================================================
2009 static Standard_Integer DDataStd_InsertAfterRealList (Draw_Interpretor& di,
2010 Standard_Integer nb,
2015 Handle(TDF_Data) DF;
2016 if (!DDF::GetDF(arg[1],DF))
2020 DDF::AddLabel(DF, arg[2], label);
2022 Handle(TDataStd_RealList) A;
2023 if (!label.FindAttribute(TDataStd_RealList::GetID(), A))
2026 Standard_Integer index = Draw::Atoi(arg[3]);
2027 Standard_Real value = (Standard_Real) Draw::Atof(arg[4]);
2029 if (A->InsertAfterByIndex(index, value))
2034 di << "DDataStd_InsertAfterRealList: Error\n";
2038 //=======================================================================
2039 //function : DDataStd_RemoveRealList (DF, entry, index )
2040 //=======================================================================
2041 static Standard_Integer DDataStd_RemoveRealList (Draw_Interpretor& di,
2042 Standard_Integer nb,
2047 Handle(TDF_Data) DF;
2048 if (!DDF::GetDF(arg[1],DF))
2052 DDF::AddLabel(DF, arg[2], label);
2054 Handle(TDataStd_RealList) A;
2055 if (!label.FindAttribute(TDataStd_RealList::GetID(), A))
2058 Standard_Integer index = Draw::Atoi(arg[3]);
2060 if (A->RemoveByIndex(index))
2065 di << "DDataStd_RemoveRealList: Error\n";
2069 //=======================================================================
2070 //function : DDataStd_InsertBeforeReferenceList (DF, entry, index, value )
2071 //=======================================================================
2072 static Standard_Integer DDataStd_InsertBeforeReferenceList (Draw_Interpretor& di,
2073 Standard_Integer nb,
2078 Handle(TDF_Data) DF;
2079 if (!DDF::GetDF(arg[1],DF))
2083 DDF::AddLabel(DF, arg[2], label);
2085 Handle(TDataStd_ReferenceList) A;
2086 if (!label.FindAttribute(TDataStd_ReferenceList::GetID(), A))
2089 Standard_Integer index = Draw::Atoi(arg[3]);
2092 if (!DDF::AddLabel(DF, arg[4], refLabel))
2095 if (A->InsertBefore(index, refLabel))
2100 di << "DDataStd_InsertBeforeReferenceList: Error\n";
2104 //=======================================================================
2105 //function : DDataStd_InsertAfterReferenceList (DF, entry, index, value )
2106 //=======================================================================
2107 static Standard_Integer DDataStd_InsertAfterReferenceList (Draw_Interpretor& di,
2108 Standard_Integer nb,
2113 Handle(TDF_Data) DF;
2114 if (!DDF::GetDF(arg[1],DF))
2118 DDF::AddLabel(DF, arg[2], label);
2120 Handle(TDataStd_ReferenceList) A;
2121 if (!label.FindAttribute(TDataStd_ReferenceList::GetID(), A))
2124 Standard_Integer index = Draw::Atoi(arg[3]);
2127 if (!DDF::AddLabel(DF, arg[4], refLabel))
2130 if (A->InsertAfter(index, refLabel))
2135 di << "DDataStd_InsertAfterReferenceList: Error\n";
2139 //=======================================================================
2140 //function : DDataStd_RemoveReferenceList (DF, entry, index )
2141 //=======================================================================
2142 static Standard_Integer DDataStd_RemoveReferenceList (Draw_Interpretor& di,
2143 Standard_Integer nb,
2148 Handle(TDF_Data) DF;
2149 if (!DDF::GetDF(arg[1],DF))
2153 DDF::AddLabel(DF, arg[2], label);
2155 Handle(TDataStd_ReferenceList) A;
2156 if (!label.FindAttribute(TDataStd_ReferenceList::GetID(), A))
2159 Standard_Integer index = Draw::Atoi(arg[3]);
2161 if (A->Remove(index))
2166 di << "DDataStd_RemoveReferenceList: Error\n";
2170 //=======================================================================
2171 //function : GetByteArray (DF, entry )
2172 //=======================================================================
2173 static Standard_Integer DDataStd_GetByteArray (Draw_Interpretor& di,
2179 Handle(TDF_Data) DF;
2180 if (!DDF::GetDF(arg[1],DF)) return 1;
2182 if( !DDF::FindLabel(DF, arg[2], label) ) {
2183 di << "No label for entry" << "\n";
2187 Handle(TDataStd_ByteArray) A;
2188 if ( !label.FindAttribute(TDataStd_ByteArray::GetID(), A) ) {
2189 di << "There is no TDataStd_ByteArray at label" << "\n";
2193 for(Standard_Integer i = A->Lower(); i<=A->Upper(); i++){
2194 //cout << A->Value(i) << endl;
2203 //=======================================================================
2204 //function : GetByteArrayValue (DF, entry, index)
2205 //=======================================================================
2206 static Standard_Integer DDataStd_GetByteArrayValue (Draw_Interpretor& di,
2210 Handle(TDF_Data) DF;
2211 if (!DDF::GetDF(arg[1],DF))
2215 if (!DDF::FindLabel(DF, arg[2], label)) {
2216 di << "No label for entry" << "\n";
2220 Handle(TDataStd_ByteArray) A;
2221 if ( !label.FindAttribute(TDataStd_ByteArray::GetID(), A) ) {
2222 di << "There is no TDataStd_ByteArray under label" << "\n";
2226 Standard_Integer index = Draw::Atoi(arg[3]);
2227 if (index < A->Lower() || index > A->Upper()) {
2228 di << "Index is out of range\n";
2231 di << A->Value(index) << "\n";
2237 //=======================================================================
2238 //function : GetBooleanArray (DF, entry )
2239 //=======================================================================
2240 static Standard_Integer DDataStd_GetBooleanArray (Draw_Interpretor& di,
2244 Handle(TDF_Data) DF;
2245 if (!DDF::GetDF(arg[1],DF))
2249 if ( !DDF::FindLabel(DF, arg[2], label) )
2251 di << "No label for entry" << "\n";
2255 Handle(TDataStd_BooleanArray) A;
2256 if ( !label.FindAttribute(TDataStd_BooleanArray::GetID(), A) )
2258 di << "There is no TDataStd_BooleanArray at label" << "\n";
2262 for (Standard_Integer i = A->Lower(); i<=A->Upper(); i++)
2264 di << (Standard_Integer) A->Value(i);
2272 //=======================================================================
2273 //function : GetBooleanArrayValue (DF, entry, index)
2274 //=======================================================================
2275 static Standard_Integer DDataStd_GetBooleanArrayValue (Draw_Interpretor& di,
2279 Handle(TDF_Data) DF;
2280 if (!DDF::GetDF(arg[1],DF))
2284 if (!DDF::FindLabel(DF, arg[2], label)) {
2285 di << "No label for entry" << "\n";
2289 Handle(TDataStd_BooleanArray) A;
2290 if ( !label.FindAttribute(TDataStd_BooleanArray::GetID(), A) ) {
2291 di << "There is no TDataStd_BooleanArray under label" << "\n";
2295 Standard_Integer index = Draw::Atoi(arg[3]);
2296 if (index < A->Lower() || index > A->Upper()) {
2297 di << "Index is out of range\n";
2300 di << ((A->Value(index) == Standard_True) ? "True" : "False") << "\n";
2306 //=======================================================================
2307 //function : ChangeByteArray (DF, entry, indx, val )
2308 //=======================================================================
2309 static Standard_Integer DDataStd_ChangeByteArray (Draw_Interpretor& di,
2310 Standard_Integer nb,
2315 Handle(TDF_Data) DF;
2316 if (!DDF::GetDF(arg[1],DF)) return 1;
2318 if( !DDF::FindLabel(DF, arg[2], label) ) {
2319 di << "No label for entry" << "\n";
2323 Handle(TDataStd_ByteArray) A;
2324 if ( !label.FindAttribute(TDataStd_ByteArray::GetID(), A) ) {
2325 di << "There is no TDataStd_ByteArray at label" << "\n";
2328 Standard_Integer indx = Draw::Atoi(arg[3]);
2329 Standard_Integer ival = Draw::Atoi(arg[4]);
2330 if (ival > 255 || ival < 0) {
2331 di << "DDataStd_ChangeByteArray: Bad value = " <<ival << "\n";
2334 Standard_Integer low = A->Lower(), up = A->Upper();
2335 if(low <= indx && indx <= up)
2336 A->SetValue(indx, (Standard_Byte)ival);
2338 Handle(TColStd_HArray1OfByte) Arr = A->InternalArray();
2339 Handle(TColStd_HArray1OfByte) arr;
2343 arr = new TColStd_HArray1OfByte(low, up);
2344 for(i=low; i<= Arr->Upper(); i++)
2345 arr->SetValue(i, Arr->Value(i));
2346 for(i=Arr->Upper()+1; i<= up; i++) {
2348 arr->SetValue(i, (Standard_Byte)ival);
2350 arr->SetValue(i, 0);
2352 } else if(indx < up) {//clip array : indx to be negative
2354 arr = new TColStd_HArray1OfByte(low, up);
2355 for(i=low; i< up; i++)
2356 arr->SetValue(i, Arr->Value(i));
2357 arr->SetValue(up, (Standard_Byte)ival);
2359 A->ChangeArray(arr);
2363 di << "DDataStd_ChangeByteArray: Error\n";
2367 //=======================================================================
2368 //function : GetBooleanList (DF, entry )
2369 //=======================================================================
2370 static Standard_Integer DDataStd_GetBooleanList (Draw_Interpretor& di,
2371 Standard_Integer nb,
2375 Handle(TDF_Data) DF;
2376 if (!DDF::GetDF(arg[1],DF))
2380 if ( !DDF::FindLabel(DF, arg[2], label) )
2382 di << "No label for entry" << "\n";
2386 Handle(TDataStd_BooleanList) A;
2387 if ( !label.FindAttribute(TDataStd_BooleanList::GetID(), A) )
2389 di << "There is no TDataStd_BooleanList at label" << "\n";
2393 const TDataStd_ListOfByte& bList = A->List();
2394 Standard_Boolean isEmpty = (bList.Extent() > 0) ? Standard_False : Standard_True;
2396 TDataStd_ListIteratorOfListOfByte itr(bList);
2397 for (; itr.More(); itr.Next())
2399 di << (Standard_Integer) itr.Value() << " ";
2403 di << "List is empty\n";
2406 di << "DDataStd_GetBooleanList: Error\n";
2410 //=======================================================================
2411 //function : GetIntegerList (DF, entry )
2412 //=======================================================================
2413 static Standard_Integer DDataStd_GetIntegerList (Draw_Interpretor& di,
2414 Standard_Integer nb,
2418 Handle(TDF_Data) DF;
2419 if (!DDF::GetDF(arg[1],DF))
2423 if ( !DDF::FindLabel(DF, arg[2], label) )
2425 di << "No label for entry" << "\n";
2429 Handle(TDataStd_IntegerList) A;
2430 if ( !label.FindAttribute(TDataStd_IntegerList::GetID(), A) )
2432 di << "There is no TDataStd_IntegerList at label" << "\n";
2436 const TColStd_ListOfInteger& iList = A->List();
2437 Standard_Boolean isEmpty = (iList.Extent() > 0) ? Standard_False : Standard_True;
2439 TColStd_ListIteratorOfListOfInteger itr(iList);
2440 for (; itr.More(); itr.Next())
2442 di << itr.Value() << " ";
2446 di << "List is empty\n";
2450 di << "DDataStd_GetIntegerList: Error\n";
2454 //=======================================================================
2455 //function : GetRealList (DF, entry )
2456 //=======================================================================
2457 static Standard_Integer DDataStd_GetRealList (Draw_Interpretor& di,
2458 Standard_Integer nb,
2462 Handle(TDF_Data) DF;
2463 if (!DDF::GetDF(arg[1],DF))
2467 if ( !DDF::FindLabel(DF, arg[2], label) )
2469 di << "No label for entry" << "\n";
2473 Handle(TDataStd_RealList) A;
2474 if ( !label.FindAttribute(TDataStd_RealList::GetID(), A) )
2476 di << "There is no TDataStd_RealList at label" << "\n";
2480 const TColStd_ListOfReal& rList = A->List();
2481 Standard_Boolean isEmpty = (rList.Extent() > 0) ? Standard_False : Standard_True;
2483 TColStd_ListIteratorOfListOfReal itr(rList);
2484 for (; itr.More(); itr.Next())
2486 di << itr.Value() << " ";
2490 di << "List is empty\n";
2493 di << "DDataStd_GetRealList: Error\n";
2497 //=======================================================================
2498 //function : DDataStd_GetExtStringList (DF, entry)
2499 //=======================================================================
2500 static Standard_Integer DDataStd_GetExtStringList (Draw_Interpretor& di,
2501 Standard_Integer nb,
2506 Handle(TDF_Data) DF;
2507 if (!DDF::GetDF(arg[1],DF))
2511 if ( !DDF::FindLabel(DF, arg[2], label) )
2513 di << "No label for entry" << "\n";
2517 Handle(TDataStd_ExtStringList) A;
2518 if ( !label.FindAttribute(TDataStd_ExtStringList::GetID(), A) )
2520 di << "There is no TDataStd_ExtStringList at label" << "\n";
2524 const TDataStd_ListOfExtendedString& aList = A->List();
2525 Standard_Boolean isEmpty = (aList.Extent() > 0) ? Standard_False : Standard_True;
2527 TDataStd_ListIteratorOfListOfExtendedString itr(aList);
2528 for (; itr.More(); itr.Next())
2530 const TCollection_ExtendedString& aStr = itr.Value();
2536 di << "List is empty\n";
2540 di << "DDataStd_GetExtStringList: Error\n";
2544 //=======================================================================
2545 //function : DDataStd_GetReferenceList (DF, entry )
2546 //=======================================================================
2547 static Standard_Integer DDataStd_GetReferenceList (Draw_Interpretor& di,
2548 Standard_Integer nb,
2553 Handle(TDF_Data) DF;
2554 if (!DDF::GetDF(arg[1],DF))
2558 if ( !DDF::FindLabel(DF, arg[2], label) )
2560 di << "No label for entry" << "\n";
2564 Handle(TDataStd_ReferenceList) A;
2565 if ( !label.FindAttribute(TDataStd_ReferenceList::GetID(), A) )
2567 di << "There is no TDataStd_ReferenceList at label" << "\n";
2571 const TDF_LabelList& aList = A->List();
2572 Standard_Boolean isEmpty = (aList.Extent() > 0) ? Standard_False : Standard_True;
2574 TDF_ListIteratorOfLabelList itr(aList);
2575 for (; itr.More(); itr.Next())
2577 const TDF_Label& aLabel = itr.Value();
2578 if (!aLabel.IsNull()) {
2579 TCollection_AsciiString entry;
2580 TDF_Tool::Entry(aLabel, entry);
2581 di << entry.ToCString() << " ";
2586 di << "List is empty\n";
2589 di << "DDataStd_GetReferenceList: Error\n";
2593 //=======================================================================
2594 //function : SetIntPackedMap (DF, entry, isDelta, key1, key2, ...
2595 //=======================================================================
2597 static Standard_Integer DDataStd_SetIntPackedMap (Draw_Interpretor& di,
2598 Standard_Integer nb,
2603 Handle(TDF_Data) DF;
2604 if (!DDF::GetDF(arg[1],DF)) return 1;
2606 DDF::AddLabel(DF, arg[2], aLabel);
2607 Standard_Boolean isDelta = Draw::Atoi(arg[3]) != 0;
2608 Standard_Integer aNum = nb - 4;
2609 Handle(TDataStd_IntPackedMap) anAtt;
2610 if(!aLabel.FindAttribute(TDataStd_IntPackedMap::GetID(), anAtt))
2611 anAtt = TDataStd_IntPackedMap::Set(aLabel, isDelta);
2612 if(anAtt.IsNull()) {
2613 di << "IntPackedMap attribute is not found or not set" << "\n";
2616 Standard_Integer j = 4;
2617 TColStd_PackedMapOfInteger aMap;
2618 for(Standard_Integer i = 1; i<=aNum; i++) {
2619 aMap.Add (Draw::Atoi(arg[j]));
2622 const Handle(TColStd_HPackedMapOfInteger)& aHMap = new TColStd_HPackedMapOfInteger(aMap);
2623 anAtt->ChangeMap(aHMap);
2624 cout << "Map extent = " << anAtt->Extent()<<endl;
2627 di << "DDataStd_SetIntPackedMap : Error\n";
2631 //=======================================================================
2632 //function : GetIntPackedMap (DF, entry )
2633 //=======================================================================
2635 static Standard_Integer DDataStd_GetIntPackedMap (Draw_Interpretor& di,
2636 Standard_Integer nb,
2641 Handle(TDF_Data) DF;
2642 if (!DDF::GetDF(arg[1],DF)) return 1;
2644 DDF::AddLabel(DF, arg[2], aLabel);
2645 Handle(TDataStd_IntPackedMap) anAtt;
2646 if(!aLabel.FindAttribute(TDataStd_IntPackedMap::GetID(), anAtt)) {
2647 di << "IntPackedMap attribute is not found or not set" << "\n";
2650 const TColStd_PackedMapOfInteger& aMap = anAtt->GetMap();
2651 TColStd_MapIteratorOfPackedMapOfInteger itr(aMap);
2652 for (Standard_Integer j = 1; itr.More(); itr.Next(),j++){
2653 Standard_Integer aKey(itr.Key());
2658 di << "DDataStd_GetIntPackedMap : Error\n";
2663 //=======================================================================
2664 //function : ChangeIntPackedMap_Add (DF, entry, Key1, Key2,... )
2665 //=======================================================================
2666 static Standard_Integer DDataStd_ChangeIntPackedMap_Add (Draw_Interpretor& di,
2667 Standard_Integer nb,
2672 Handle(TDF_Data) DF;
2673 if (!DDF::GetDF(arg[1],DF)) return 1;
2675 if( !DDF::FindLabel(DF, arg[2], label) ) {
2676 di << "No label for entry" << "\n";
2680 Handle(TDataStd_IntPackedMap) A;
2681 if ( !label.FindAttribute(TDataStd_IntPackedMap::GetID(), A) ) {
2682 di << "There is no TDataStd_IntPackedMap at label" << "\n";
2686 Standard_Integer i, aNum = nb - 3;
2687 Handle(TColStd_HPackedMapOfInteger) aHMap = A->GetHMap();
2688 Handle(TColStd_HPackedMapOfInteger) ahMap = new TColStd_HPackedMapOfInteger();
2689 if(!aHMap.IsNull()) {
2690 ahMap->ChangeMap().Assign(aHMap->Map());
2691 for(i=1; i<=aNum;i++) {
2692 Standard_Integer val = Draw::Atoi(arg[i+2]);
2693 if(!ahMap->Map().Contains(val))
2694 ahMap->ChangeMap().Add(val);
2697 A->ChangeMap(ahMap);
2701 di << "DDataStd_ChangeIntPackedMap_Add: Error\n";
2706 //=======================================================================
2707 //function : ChangeIntPackedMap_Rem (DF, entry, Key1, Key2,... )
2708 //=======================================================================
2709 static Standard_Integer DDataStd_ChangeIntPackedMap_Rem (Draw_Interpretor& di,
2710 Standard_Integer nb,
2715 Handle(TDF_Data) DF;
2716 if (!DDF::GetDF(arg[1],DF)) return 1;
2718 if( !DDF::FindLabel(DF, arg[2], label) ) {
2719 di << "No label for entry" << "\n";
2723 Handle(TDataStd_IntPackedMap) A;
2724 if ( !label.FindAttribute(TDataStd_IntPackedMap::GetID(), A) ) {
2725 di << "There is no TDataStd_IntPackedMap at label" << "\n";
2729 Standard_Integer i, aNum = nb - 3;
2730 Handle(TColStd_HPackedMapOfInteger) aHMap = A->GetHMap();
2731 Handle(TColStd_HPackedMapOfInteger) ahMap = new TColStd_HPackedMapOfInteger();
2732 if(!aHMap.IsNull()) {
2733 ahMap->ChangeMap().Assign(aHMap->Map());
2734 for(i=1; i<=aNum;i++) {
2735 Standard_Integer val = Draw::Atoi(arg[i+2]);
2736 if(ahMap->Map().Contains(val))
2737 ahMap->ChangeMap().Remove(val);
2740 A->ChangeMap(ahMap);
2744 di << "DDataStd_ChangeIntPackedMap_Rem: Error\n";
2748 //=======================================================================
2749 //function : ChangeIntPackedMap_AddRem (DF, entry, Key1, Key2,... )
2750 // : if Keyi exist in map - remove it, if no - add
2751 //=======================================================================
2752 static Standard_Integer DDataStd_ChangeIntPackedMap_AddRem (Draw_Interpretor& di,
2753 Standard_Integer nb,
2758 Handle(TDF_Data) DF;
2759 if (!DDF::GetDF(arg[1],DF)) return 1;
2761 if( !DDF::FindLabel(DF, arg[2], label) ) {
2762 di << "No label for entry" << "\n";
2766 Handle(TDataStd_IntPackedMap) A;
2767 if ( !label.FindAttribute(TDataStd_IntPackedMap::GetID(), A) ) {
2768 di << "There is no TDataStd_IntPackedMap at label" << "\n";
2772 Standard_Integer i, aNum = nb - 3;
2773 Handle(TColStd_HPackedMapOfInteger) aHMap = A->GetHMap();
2774 Handle(TColStd_HPackedMapOfInteger) ahMap = new TColStd_HPackedMapOfInteger();
2775 if(!aHMap.IsNull()) {
2776 ahMap->ChangeMap().Assign(aHMap->Map());
2777 for(i=1; i<=aNum;i++) {
2778 Standard_Integer val = Draw::Atoi(arg[i+2]);
2779 if(!ahMap->Map().Contains(val))
2780 ahMap->ChangeMap().Add(val);
2782 ahMap->ChangeMap().Remove(val);
2785 A->ChangeMap(ahMap);
2789 di << "DDataStd_ChangeIntPackedMap_AddRem: Error\n";
2793 //=======================================================================
2794 //function : SetIntPHugeMap (DF, entry, isDelta Num)
2795 //=======================================================================
2797 static Standard_Integer DDataStd_SetIntPHugeMap (Draw_Interpretor& di,
2798 Standard_Integer nb,
2803 Handle(TDF_Data) DF;
2804 if (!DDF::GetDF(arg[1],DF)) return 1;
2806 DDF::AddLabel(DF, arg[2], aLabel);
2807 Standard_Boolean isDelta = Draw::Atoi(arg[3]) != 0;
2808 Standard_Integer aNum = Draw::Atoi(arg[4]);
2809 Handle(TDataStd_IntPackedMap) anAtt;
2810 if(!aLabel.FindAttribute(TDataStd_IntPackedMap::GetID(), anAtt))
2811 anAtt = TDataStd_IntPackedMap::Set(aLabel, isDelta);
2812 if(anAtt.IsNull()) {
2813 di << "IntPackedMap attribute is not found or not set" << "\n";
2816 TColStd_PackedMapOfInteger aMap;
2817 for(Standard_Integer i = 1; i<=aNum; i++) {
2820 const Handle(TColStd_HPackedMapOfInteger)& aHMap = new TColStd_HPackedMapOfInteger(aMap);
2821 anAtt->ChangeMap(aHMap);
2822 cout << "Map extent = " << anAtt->Extent()<<endl;
2825 di << "DDataStd_SetIntPHugeMap : Error\n";
2829 //=======================================================================
2830 //function : SetNDataIntegers (DF, entry , Num
2831 //=======================================================================
2833 static Standard_Integer DDataStd_SetNDataIntegers2 (Draw_Interpretor& di,
2834 Standard_Integer nb,
2839 Handle(TDF_Data) DF;
2840 if (!DDF::GetDF(arg[1],DF)) return 1;
2842 DDF::AddLabel(DF, arg[2], aLabel);
2843 Standard_Integer aNumP = Draw::Atoi(arg[3]), j;
2844 Handle(TDataStd_NamedData) anAtt;
2845 if(!aLabel.FindAttribute(TDataStd_NamedData::GetID(), anAtt))
2846 anAtt = TDataStd_NamedData::Set(aLabel);
2847 if(anAtt.IsNull()) {
2848 di << "NamedData attribute is not found or not set" << "\n";
2852 TCollection_ExtendedString aKey("Key_");
2853 for(Standard_Integer i = 1; i<=aNumP; i++) {
2854 TCollection_ExtendedString key = aKey + i;
2855 Standard_Integer aVal = j+i;
2856 anAtt->SetInteger(key, aVal);
2861 di << "DDataStd_SetNDataIntegers2 : Error\n";
2865 //=======================================================================
2866 //function : SetNDataIntArrays2 (DF, entry , key, NumOfArElem )
2867 //=======================================================================
2869 static Standard_Integer DDataStd_SetNDataIntAr2 (Draw_Interpretor& di,
2870 Standard_Integer nb,
2875 Handle(TDF_Data) DF;
2876 if (!DDF::GetDF(arg[1],DF)) return 1;
2878 DDF::AddLabel(DF, arg[2], aLabel);
2881 TCollection_ExtendedString aKey(arg[3]);
2882 Standard_Integer aNum = Draw::Atoi(arg[4]);
2883 if (aNum <= 0) return 1;
2884 Handle(TDataStd_NamedData) anAtt;
2885 if(!aLabel.FindAttribute(TDataStd_NamedData::GetID(), anAtt))
2886 anAtt = TDataStd_NamedData::Set(aLabel);
2887 if(anAtt.IsNull()) {
2888 cout<< "NamedData attribute is not found or not set" << endl;
2892 Handle(TColStd_HArray1OfInteger) anArr = new TColStd_HArray1OfInteger(1, aNum);
2893 for(Standard_Integer i = 1; i<=aNum; i++) {
2894 Standard_Integer aVal = j++;
2895 anArr->SetValue(i, aVal);
2898 anAtt->SetArrayOfIntegers(aKey, anArr);
2901 di << "DDataStd_SetNDataIntArrays2 : Error\n";
2906 //=======================================================================
2907 //function : SetAsciiString(DF, entry, String[, guid])
2908 //=======================================================================
2910 static Standard_Integer DDataStd_SetAsciiString (Draw_Interpretor& di,
2911 Standard_Integer nb,
2915 if (nb == 4 || nb == 5) {
2916 Handle(TDF_Data) DF;
2917 if (!DDF::GetDF(arg[1],DF)) return 1;
2919 DDF::AddLabel(DF, arg[2], aLabel);
2920 TCollection_AsciiString aString(arg[3]);
2921 Standard_GUID aGuid (TDataStd_AsciiString::GetID());
2923 if (!Standard_GUID::CheckGUIDFormat(arg[4])) {
2924 di<<"DDataStd_SetAsciiString: The format of GUID is invalid\n";
2927 aGuid = Standard_GUID (arg[4]);
2930 Handle(TDataStd_AsciiString) anAtt = TDataStd_AsciiString::Set(aLabel, aGuid, aString);
2931 if(anAtt.IsNull()) {
2932 di << "AsciiString attribute is not found or not set" << "\n";
2936 cout << "String = " << anAtt->Get().ToCString() << " is kept in DF" << endl;
2939 di << "DDataStd_SetAsciiString : Error\n";
2943 //=======================================================================
2944 //function : GetAsciiString(DF, entry[, guid] )
2945 //=======================================================================
2947 static Standard_Integer DDataStd_GetAsciiString (Draw_Interpretor& di,
2948 Standard_Integer nb,
2951 if (nb == 3 || nb == 4) {
2952 Handle(TDF_Data) DF;
2953 if (!DDF::GetDF(arg[1],DF)) return 1;
2955 DDF::FindLabel(DF, arg[2], aLabel);
2956 if(aLabel.IsNull()) di << "Label is not found" << "\n";
2957 Standard_GUID aGuid (TDataStd_AsciiString::GetID());
2959 if (!Standard_GUID::CheckGUIDFormat(arg[3])) {
2960 di<<"DDataStd_GetAsciiString: The format of GUID is invalid\n";
2963 aGuid = Standard_GUID(arg[3]);
2965 Handle(TDataStd_AsciiString) anAtt;
2966 if( !aLabel.FindAttribute(aGuid, anAtt) ) {
2967 cout << "AsciiString attribute is not found or not set" << endl;
2972 cout << "String = " << anAtt->Get().ToCString() << endl;
2974 di << anAtt->Get().ToCString();
2977 di << "DDataStd_GetAsciiString : Error\n";
2981 //=======================================================================
2982 //function : SetNDataIntegers (DF, entry , Num, key1, val1, ...
2983 //=======================================================================
2985 static Standard_Integer DDataStd_SetNDataIntegers (Draw_Interpretor& di,
2986 Standard_Integer nb,
2991 Handle(TDF_Data) DF;
2992 if (!DDF::GetDF(arg[1],DF)) return 1;
2994 DDF::AddLabel(DF, arg[2], aLabel);
2996 // TCollection_ExtendedString aString("123456789 0_abcde");
2997 // Standard_Integer aPos = aString.Search(" ");
2998 // cout << "From Start = " <<aPos<<endl;
2999 // aPos = aString.SearchFromEnd(" ");
3000 // cout << "From Start = " <<aPos<<endl;
3001 // TCollection_ExtendedString aValue = aString.Split(aPos);
3002 // cout << "Value = |"<<aValue<<endl;
3003 // cout << "aKey = " << aString << "|"<<endl;
3005 Standard_Integer aNumP = Draw::Atoi(arg[3]), j;
3006 Handle(TDataStd_NamedData) anAtt;
3007 if(!aLabel.FindAttribute(TDataStd_NamedData::GetID(), anAtt))
3008 anAtt = TDataStd_NamedData::Set(aLabel);
3009 if(anAtt.IsNull()) {
3010 di << "NamedData attribute is not found or not set" << "\n";
3014 for(Standard_Integer i = 1; i<=aNumP; i++) {
3015 TCollection_ExtendedString aKey(arg[j]);
3016 Standard_Integer aVal = Draw::Atoi(arg[j+1]);
3017 anAtt->SetInteger(aKey, aVal);
3022 di << "DDataStd_SetNDataIntegers : Error\n";
3027 //=======================================================================
3028 //function : GetNDIntegers(DF, entry )
3029 //=======================================================================
3030 static Standard_Integer DDataStd_GetNDIntegers (Draw_Interpretor& di,
3031 Standard_Integer nb,
3036 Handle(TDF_Data) DF;
3037 if (!DDF::GetDF(arg[1],DF)) return 1;
3039 if(!DDF::FindLabel(DF, arg[2], aLabel)) return 1;
3042 Handle(TDataStd_NamedData) anAtt;
3043 if(!aLabel.FindAttribute(TDataStd_NamedData::GetID(), anAtt)) {
3044 cout << "NamedData attribute is not found or not set" << endl;
3047 cout <<"NamedData attribute at Label = " << arg[2] <<endl;
3048 const TColStd_DataMapOfStringInteger& aMap = anAtt->GetIntegersContainer();
3049 TColStd_DataMapIteratorOfDataMapOfStringInteger itr(aMap);
3050 for (; itr.More(); itr.Next()){
3051 TCollection_ExtendedString aKey(itr.Key());
3052 TCollection_AsciiString aStr(aKey,'?');
3053 Standard_Integer aValue = itr.Value();
3054 cout << "Key = " << aStr.ToCString() << " Value = " <<aValue<<endl;;
3059 di << "DDataStd_GetNDIntegers : Error\n";
3063 //=======================================================================
3064 //function : GetNDInteger(DF, entry, key [drawname])
3065 //=======================================================================
3066 static Standard_Integer DDataStd_GetNDInteger (Draw_Interpretor& di,
3067 Standard_Integer nb,
3072 Handle(TDF_Data) DF;
3073 if (!DDF::GetDF(arg[1],DF)) return 1;
3075 if(!DDF::FindLabel(DF, arg[2], aLabel)) return 1;
3078 Handle(TDataStd_NamedData) anAtt;
3079 if(!aLabel.FindAttribute(TDataStd_NamedData::GetID(), anAtt)) {
3080 cout << "NamedData attribute is not found or not set" << endl;
3084 cout <<"NamedData attribute at Label = " << arg[2] <<endl;
3085 if(!anAtt->HasInteger(arg[3])) {
3086 cout << "There is no data specified by Key = "<< arg[3] << endl;
3089 cout << "Key = " << arg[3] << " Value = " <<anAtt->GetInteger(arg[3])<<endl;
3091 Draw::Set(arg[4], anAtt->GetInteger(arg[3]));
3095 di << "DDataStd_SetNDataIntegers : Error\n";
3099 //========================== REALS ======================================
3100 //=======================================================================
3101 //function : SetNDataReals (DF, entry , Num, key1, val1, ...
3102 //=======================================================================
3104 static Standard_Integer DDataStd_SetNDataReals (Draw_Interpretor& di,
3105 Standard_Integer nb,
3110 Handle(TDF_Data) DF;
3111 if (!DDF::GetDF(arg[1],DF)) return 1;
3113 DDF::AddLabel(DF, arg[2], aLabel);
3115 Standard_Integer aNumP = Draw::Atoi(arg[3]), j;
3116 Handle(TDataStd_NamedData) anAtt;
3117 if(!aLabel.FindAttribute(TDataStd_NamedData::GetID(), anAtt))
3118 anAtt = TDataStd_NamedData::Set(aLabel);
3119 if(anAtt.IsNull()) {
3120 cout << "NamedData attribute is not found or not set" << endl;;
3124 for(Standard_Integer i = 1; i<=aNumP; i++) {
3125 TCollection_ExtendedString aKey(arg[j]);
3126 Standard_Real aVal = Draw::Atof(arg[j+1]);
3127 anAtt->SetReal(aKey, aVal);
3132 di << "DDataStd_SetNDataReals : Error\n";
3136 //=======================================================================
3137 //function : GetNDReals(DF, entry )
3138 //=======================================================================
3139 static Standard_Integer DDataStd_GetNDReals (Draw_Interpretor& di,
3140 Standard_Integer nb,
3145 Handle(TDF_Data) DF;
3146 if (!DDF::GetDF(arg[1],DF)) return 1;
3148 if(!DDF::FindLabel(DF, arg[2], aLabel)) return 1;
3151 cout <<"NamedData attribute at Label = " << arg[2] <<endl;
3152 Handle(TDataStd_NamedData) anAtt;
3153 if(!aLabel.FindAttribute(TDataStd_NamedData::GetID(), anAtt)) {
3154 cout << "NamedData attribute is not found or not set" << endl;
3157 const TDataStd_DataMapOfStringReal& aMap = anAtt->GetRealsContainer();
3158 TDataStd_DataMapIteratorOfDataMapOfStringReal itr(aMap);
3159 for (; itr.More(); itr.Next()){
3160 TCollection_ExtendedString aKey(itr.Key());
3161 TCollection_AsciiString aStr(aKey,'?');
3162 Standard_Real aValue = itr.Value();
3163 cout << "Key = " << aStr.ToCString() << " Value = " <<aValue<<endl;
3167 di << "DDataStd_GetNDReals : Error\n";
3171 //=======================================================================
3172 //function : GetNDReal(DF, entry, key [drawname])
3173 //=======================================================================
3174 static Standard_Integer DDataStd_GetNDReal (Draw_Interpretor& di,
3175 Standard_Integer nb,
3180 Handle(TDF_Data) DF;
3181 if (!DDF::GetDF(arg[1],DF)) return 1;
3183 if(!DDF::FindLabel(DF, arg[2], aLabel)) return 1;
3186 Handle(TDataStd_NamedData) anAtt;
3187 if(!aLabel.FindAttribute(TDataStd_NamedData::GetID(), anAtt)) {
3188 cout << "NamedData attribute is not found or not set" << endl;
3192 cout <<"NamedData attribute at Label = " << arg[2] <<endl;
3193 if(!anAtt->HasReal(arg[3])) {
3194 cout << "There is no data specified by Key = "<< arg[3] << endl;
3197 cout << "Key = " << arg[3] << " Value = " <<anAtt->GetReal(arg[3])<<endl;
3199 Draw::Set(arg[4], anAtt->GetReal(arg[3]));
3203 di << "DDataStd_GetNDReal : Error\n";
3207 //======================= Strings =======================================
3208 //=======================================================================
3209 //function : SetNDataStrings (DF, entry , Num, key1, val1, ...
3210 //=======================================================================
3212 static Standard_Integer DDataStd_SetNDataStrings (Draw_Interpretor& di,
3213 Standard_Integer nb,
3218 Handle(TDF_Data) DF;
3219 if (!DDF::GetDF(arg[1],DF)) return 1;
3221 DDF::AddLabel(DF, arg[2], aLabel);
3223 Standard_Integer aNumP = Draw::Atoi(arg[3]), j;
3224 Handle(TDataStd_NamedData) anAtt;
3225 if(!aLabel.FindAttribute(TDataStd_NamedData::GetID(), anAtt))
3226 anAtt = TDataStd_NamedData::Set(aLabel);
3227 if(anAtt.IsNull()) {
3228 di << "NamedData attribute is not found or not set" << "\n";
3232 for(Standard_Integer i = 1; i<=aNumP; i++) {
3233 TCollection_ExtendedString aKey(arg[j]);
3234 TCollection_ExtendedString aVal(arg[j+1]);
3235 anAtt->SetString(aKey, aVal);
3240 di << "DDataStd_SetNDataStrings : Error\n";
3244 //=======================================================================
3245 //function : GetNDStrings(DF, entry )
3246 //=======================================================================
3247 static Standard_Integer DDataStd_GetNDStrings (Draw_Interpretor& di,
3248 Standard_Integer nb,
3253 Handle(TDF_Data) DF;
3254 if (!DDF::GetDF(arg[1],DF)) return 1;
3256 if(!DDF::FindLabel(DF, arg[2], aLabel)) return 1;
3259 Handle(TDataStd_NamedData) anAtt;
3260 if(!aLabel.FindAttribute(TDataStd_NamedData::GetID(), anAtt)) {
3261 cout << "NamedData attribute is not found or not set" << endl;
3264 cout <<"NamedData attribute at Label = " << arg[2] <<endl;
3265 const TDataStd_DataMapOfStringString& aMap = anAtt->GetStringsContainer();
3266 TDataStd_DataMapIteratorOfDataMapOfStringString itr(aMap);
3267 for (; itr.More(); itr.Next()){
3268 TCollection_ExtendedString aKey(itr.Key());
3269 TCollection_AsciiString aStr(aKey,'?');
3270 TCollection_ExtendedString aVal(itr.Value());
3271 TCollection_AsciiString aStrValue(aVal,'?');
3272 cout << "Key = " << aStr.ToCString() << " Value = " <<aStrValue.ToCString()<< endl;
3276 di << "DDataStd_GetNDStrings : Error\n";
3280 //=======================================================================
3281 //function : GetNDString(DF, entry, key [drawname])
3282 //=======================================================================
3283 static Standard_Integer DDataStd_GetNDString (Draw_Interpretor& di,
3284 Standard_Integer nb,
3289 Handle(TDF_Data) DF;
3290 if (!DDF::GetDF(arg[1],DF)) return 1;
3292 if(!DDF::FindLabel(DF, arg[2], aLabel)) return 1;
3295 Handle(TDataStd_NamedData) anAtt;
3296 if(!aLabel.FindAttribute(TDataStd_NamedData::GetID(), anAtt)) {
3297 di << "NamedData attribute is not found or not set" << "\n";
3301 cout <<"NamedData attribute at Label = " << arg[2] <<endl;
3302 if(!anAtt->HasString(arg[3])) {
3303 cout << "There is no data specified by Key = "<< arg[3] << endl;
3306 TCollection_AsciiString aValue (anAtt->GetString(arg[3]), '?');
3307 cout << "Key = " << arg[3] << " Value = " << aValue.ToCString() << endl;
3309 Draw::Set(arg[4], aValue.ToCString());
3313 di << "DDataStd_GetNDString : Error\n";
3317 //=========================== Bytes =====================================
3318 //=======================================================================
3319 //function : SetNDataBytes (DF, entry , Num, key1, val1, ...
3320 //=======================================================================
3322 static Standard_Integer DDataStd_SetNDataBytes (Draw_Interpretor& di,
3323 Standard_Integer nb,
3328 Handle(TDF_Data) DF;
3329 if (!DDF::GetDF(arg[1],DF)) return 1;
3331 DDF::AddLabel(DF, arg[2], aLabel);
3333 Standard_Integer aNumP = Draw::Atoi(arg[3]), j;
3334 Handle(TDataStd_NamedData) anAtt;
3335 if(!aLabel.FindAttribute(TDataStd_NamedData::GetID(), anAtt))
3336 anAtt = TDataStd_NamedData::Set(aLabel);
3337 if(anAtt.IsNull()) {
3338 cout << "NamedData attribute is not found or not set" << endl;
3342 for(Standard_Integer i = 1; i<=aNumP; i++) {
3343 TCollection_ExtendedString aKey(arg[j]);
3344 Standard_Byte aVal = (Standard_Byte)Draw::Atoi(arg[j+1]);
3345 anAtt->SetByte(aKey, aVal);
3350 di << "DDataStd_SetNDataBytes : Error\n";
3354 //=======================================================================
3355 //function : GetNDBytes(DF, entry )
3356 //=======================================================================
3357 static Standard_Integer DDataStd_GetNDBytes (Draw_Interpretor& di,
3358 Standard_Integer nb,
3363 Handle(TDF_Data) DF;
3364 if (!DDF::GetDF(arg[1],DF)) return 1;
3366 if(!DDF::FindLabel(DF, arg[2], aLabel)) return 1;
3369 Handle(TDataStd_NamedData) anAtt;
3370 if(!aLabel.FindAttribute(TDataStd_NamedData::GetID(), anAtt)) {
3371 cout << "NamedData attribute is not found or not set" << endl;
3374 cout <<"NamedData attribute at Label = " << arg[2] <<endl;
3375 const TDataStd_DataMapOfStringByte& aMap = anAtt->GetBytesContainer();
3376 TDataStd_DataMapIteratorOfDataMapOfStringByte itr(aMap);
3377 for (; itr.More(); itr.Next()){
3378 TCollection_ExtendedString aKey(itr.Key());
3379 TCollection_AsciiString aStr(aKey,'?');
3380 Standard_Byte aValue = itr.Value();
3381 cout << "Key = " << aStr.ToCString() << " Value = " <<aValue<<endl;
3385 di << "DDataStd_GetNDBytes : Error\n";
3389 //=======================================================================
3390 //function : GetNDByte(DF, entry, key [drawname])
3391 //=======================================================================
3392 static Standard_Integer DDataStd_GetNDByte (Draw_Interpretor& di,
3393 Standard_Integer nb,
3398 Handle(TDF_Data) DF;
3399 if (!DDF::GetDF(arg[1],DF)) return 1;
3401 if(!DDF::FindLabel(DF, arg[2], aLabel)) return 1;
3404 Handle(TDataStd_NamedData) anAtt;
3405 if(!aLabel.FindAttribute(TDataStd_NamedData::GetID(), anAtt)) {
3406 cout << "NamedData attribute is not found or not set" << endl;
3410 cout <<"NamedData attribute at Label = " << arg[2] <<endl;
3411 if(!anAtt->HasByte(arg[3])) {
3412 cout << "There is no data specified by Key = "<< arg[3] << endl;
3415 cout << "Key = " << arg[3] << " Value = " <<anAtt->GetByte(arg[3])<< endl;
3417 Draw::Set(arg[4], anAtt->GetByte(arg[3]));
3421 di << "DDataStd_GetNDByte : Error\n";
3424 //======================== IntArrays ====================================
3425 //=======================================================================
3426 //function : SetNDataIntArrays (DF, entry , key, NumOfArElem, val1, val2,... )
3427 //=======================================================================
3429 static Standard_Integer DDataStd_SetNDataIntAr (Draw_Interpretor& di,
3430 Standard_Integer nb,
3435 Handle(TDF_Data) DF;
3436 if (!DDF::GetDF(arg[1],DF)) return 1;
3438 DDF::AddLabel(DF, arg[2], aLabel);
3441 TCollection_ExtendedString aKey(arg[3]);
3442 Standard_Integer aNum = Draw::Atoi(arg[4]);
3443 if (aNum <= 0) return 1;
3444 Handle(TDataStd_NamedData) anAtt;
3445 if(!aLabel.FindAttribute(TDataStd_NamedData::GetID(), anAtt))
3446 anAtt = TDataStd_NamedData::Set(aLabel);
3447 if(anAtt.IsNull()) {
3448 cout<< "NamedData attribute is not found or not set" << endl;
3452 Handle(TColStd_HArray1OfInteger) anArr = new TColStd_HArray1OfInteger(1, aNum);
3453 for(Standard_Integer i = 1; i<=aNum; i++) {
3454 Standard_Integer aVal = Draw::Atoi(arg[j]);
3455 anArr->SetValue(i, aVal);
3458 anAtt->SetArrayOfIntegers(aKey, anArr);
3461 di << "DDataStd_SetNDataIntArrays : Error\n";
3466 //=======================================================================
3467 //function : GetNDIntArrays(DF, entry )
3468 //=======================================================================
3469 static Standard_Integer DDataStd_GetNDIntArrays (Draw_Interpretor& di,
3470 Standard_Integer nb,
3475 Handle(TDF_Data) DF;
3476 if (!DDF::GetDF(arg[1],DF)) return 1;
3478 if(!DDF::FindLabel(DF, arg[2], aLabel)) return 1;
3481 Handle(TDataStd_NamedData) anAtt;
3482 if(!aLabel.FindAttribute(TDataStd_NamedData::GetID(), anAtt)) {
3483 cout << "NamedData attribute is not found or not set" << endl;
3486 cout <<"NamedData attribute at Label = " << arg[2] <<endl;
3487 const TDataStd_DataMapOfStringHArray1OfInteger& aMap = anAtt->GetArraysOfIntegersContainer();
3488 TDataStd_DataMapIteratorOfDataMapOfStringHArray1OfInteger itr(aMap);
3489 for (; itr.More(); itr.Next()){
3490 TCollection_ExtendedString aKey(itr.Key());
3491 TCollection_AsciiString aStr(aKey,'?');
3492 cout << "Key = " << aStr.ToCString()<< endl;
3493 Handle(TColStd_HArray1OfInteger) anArrValue = itr.Value();
3494 if(!anArrValue.IsNull()) {
3495 Standard_Integer lower = anArrValue->Lower();
3496 Standard_Integer upper = anArrValue->Upper();
3497 for(Standard_Integer i = lower; i<=upper;i++) {
3498 Standard_Integer aValue = anArrValue->Value(i);
3499 cout << "\tValue("<<i<<") = " <<aValue<<endl;
3502 cout << "\tthe specified array is Null "<<endl;
3506 di << "DDataStd_GetNDIntArrays : Error\n";
3510 //=======================================================================
3511 //function : GetNDIntArray(DF, entry, key )
3512 //=======================================================================
3513 static Standard_Integer DDataStd_GetNDIntArray (Draw_Interpretor& di,
3514 Standard_Integer nb,
3519 Handle(TDF_Data) DF;
3520 if (!DDF::GetDF(arg[1],DF)) return 1;
3522 if(!DDF::FindLabel(DF, arg[2], aLabel)) return 1;
3525 Handle(TDataStd_NamedData) anAtt;
3526 if(!aLabel.FindAttribute(TDataStd_NamedData::GetID(), anAtt)) {
3527 cout << "NamedData attribute is not found or not set" << endl;
3531 cout <<"NamedData attribute at Label = " << arg[2] <<endl;
3532 if(!anAtt->HasArrayOfIntegers(arg[3])) {
3533 cout << "There is no data specified by Key = "<< arg[3] << endl;
3536 cout << "Key = " << arg[3] <<endl;
3538 Handle(TColStd_HArray1OfInteger) anArrValue = anAtt->GetArrayOfIntegers(arg[3]);
3539 if(!anArrValue.IsNull()) {
3540 Standard_Integer lower = anArrValue->Lower();
3541 Standard_Integer upper = anArrValue->Upper();
3542 for(Standard_Integer i = lower; i<=upper;i++) {
3543 Standard_Integer aValue = anArrValue->Value(i);
3544 cout << "\tValue("<<i<<") = " <<aValue<<endl;
3547 cout << "\tthe specified array is Null or not found"<<endl;
3551 di << "DDataStd_SetNDataIntArray : Error\n";
3554 //============================= RealArrays ==============================
3555 //=======================================================================
3556 //function : SetNDataRealArrays (DF entry key NumOfArElem val1 val2... )
3557 //=======================================================================
3559 static Standard_Integer DDataStd_SetNDataRealAr (Draw_Interpretor& di,
3560 Standard_Integer nb,
3565 Handle(TDF_Data) DF;
3566 if (!DDF::GetDF(arg[1],DF)) return 1;
3568 DDF::AddLabel(DF, arg[2], aLabel);
3571 TCollection_ExtendedString aKey(arg[3]);
3572 Standard_Integer aNum = Draw::Atoi(arg[4]);
3573 if (aNum <= 0) return 1;
3574 Handle(TDataStd_NamedData) anAtt;
3575 if(!aLabel.FindAttribute(TDataStd_NamedData::GetID(), anAtt))
3576 anAtt = TDataStd_NamedData::Set(aLabel);
3577 if(anAtt.IsNull()) {
3578 cout << "NamedData attribute is not found or not set" << endl;
3582 Handle(TColStd_HArray1OfReal) anArr = new TColStd_HArray1OfReal(1, aNum);
3583 for(Standard_Integer i = 1; i<=aNum; i++) {
3584 Standard_Real aVal = Draw::Atof(arg[j]);
3585 anArr->SetValue(i, aVal);
3588 anAtt->SetArrayOfReals(aKey, anArr);
3591 di << "DDataStd_SetNDataRealArrays : Error\n";
3596 //=======================================================================
3597 //function : GetNDRealArrays(DF, entry )
3598 //=======================================================================
3599 static Standard_Integer DDataStd_GetNDRealArrays (Draw_Interpretor& di,
3600 Standard_Integer nb,
3605 Handle(TDF_Data) DF;
3606 if (!DDF::GetDF(arg[1],DF)) return 1;
3608 if(!DDF::FindLabel(DF, arg[2], aLabel)) return 1;
3611 Handle(TDataStd_NamedData) anAtt;
3612 if(!aLabel.FindAttribute(TDataStd_NamedData::GetID(), anAtt)) {
3613 cout << "NamedData attribute is not found or not set" << endl;
3616 cout <<"NamedData attribute at Label = " << arg[2] <<endl;
3617 const TDataStd_DataMapOfStringHArray1OfReal& aMap = anAtt->GetArraysOfRealsContainer();
3618 TDataStd_DataMapIteratorOfDataMapOfStringHArray1OfReal itr(aMap);
3619 for (; itr.More(); itr.Next()){
3620 TCollection_ExtendedString aKey(itr.Key());
3621 TCollection_AsciiString aStr(aKey,'?');
3622 cout << "Key = " << aStr.ToCString()<<endl;
3623 Handle(TColStd_HArray1OfReal) anArrValue = itr.Value();
3624 if(!anArrValue.IsNull()) {
3625 Standard_Integer lower = anArrValue->Lower();
3626 Standard_Integer upper = anArrValue->Upper();
3627 for(Standard_Integer i = lower; i<=upper;i++) {
3628 Standard_Real aValue = anArrValue->Value(i);
3629 cout << "\tValue("<<i<<") = " <<aValue<<endl;
3632 cout << "\tthe specified array is Null "<<endl;
3636 di << "DDataStd_GetNDRealArrays : Error\n";
3640 //=======================================================================
3641 //function : GetNDRealArray(DF, entry, key )
3642 //=======================================================================
3643 static Standard_Integer DDataStd_GetNDRealArray (Draw_Interpretor& di,
3644 Standard_Integer nb,
3649 Handle(TDF_Data) DF;
3650 if (!DDF::GetDF(arg[1],DF)) return 1;
3652 if(!DDF::FindLabel(DF, arg[2], aLabel)) return 1;
3655 Handle(TDataStd_NamedData) anAtt;
3656 if(!aLabel.FindAttribute(TDataStd_NamedData::GetID(), anAtt)) {
3657 di << "NamedData attribute is not found or not set" << "\n";
3661 cout <<"NamedData attribute at Label = " << arg[2] <<endl;
3662 if(!anAtt->HasArrayOfReals(arg[3])) {
3663 cout << "There is no data specified by Key = "<< arg[3] << endl;
3666 cout << "Key = " << arg[3] <<endl;
3668 Handle(TColStd_HArray1OfReal) anArrValue = anAtt->GetArrayOfReals(arg[3]);
3669 if(!anArrValue.IsNull()) {
3670 Standard_Integer lower = anArrValue->Lower();
3671 Standard_Integer upper = anArrValue->Upper();
3672 for(Standard_Integer i = lower; i<=upper;i++) {
3673 Standard_Real aValue = anArrValue->Value(i);
3674 cout << "\tValue("<<i<<") = " <<aValue<<endl;
3677 cout << "\tthe specified array is Null or not found"<<endl;
3681 di << "DDataStd_SetNDataRealArray : Error\n";
3685 //=======================================================================
3686 //function : SetRefArray (DF, entry , From, To, elmt1, elmt2, ...
3687 //=======================================================================
3688 static Standard_Integer DDataStd_SetRefArray (Draw_Interpretor& di,
3689 Standard_Integer nb,
3692 Handle(TDF_Data) DF;
3693 if (!DDF::GetDF(arg[1],DF)) return 1;
3695 DDF::AddLabel(DF, arg[2], label);
3697 Standard_Integer From = Draw::Atoi(arg[3]), To = Draw::Atoi( arg[4] ), j;
3698 di << "RefArray with bounds from = " << From << " to = " << To << "\n";
3700 Handle(TDataStd_ReferenceArray) A = TDataStd_ReferenceArray::Set(label, From, To);
3704 for(Standard_Integer i = From; i<=To; i++) {
3705 TDF_Label aRefLabel;
3706 DDF::AddLabel(DF, arg[j], aRefLabel);
3707 A->SetValue(i, aRefLabel);
3714 //=======================================================================
3715 //function : SetRefArrayValue (DF, entry, index, value)
3716 //=======================================================================
3717 static Standard_Integer DDataStd_SetRefArrayValue (Draw_Interpretor&,
3722 Handle(TDF_Data) DF;
3723 if (!DDF::GetDF(arg[1], DF))
3728 if (!DDF::AddLabel(DF, arg[2], label))
3731 // Get index and value.
3732 Standard_Integer index = Draw::Atoi(arg[3]);
3735 Handle(TDataStd_ReferenceArray) arr;
3736 if (label.FindAttribute(TDataStd_ReferenceArray::GetID(), arr))
3738 TDF_Label aRefLabel;
3739 DDF::AddLabel(DF, arg[4], aRefLabel);
3740 arr->SetValue(index, aRefLabel);
3747 //=======================================================================
3748 //function : GetRefArray (DF, entry )
3749 //=======================================================================
3750 static Standard_Integer DDataStd_GetRefArray (Draw_Interpretor& di,
3755 Handle(TDF_Data) DF;
3756 if (!DDF::GetDF(arg[1],DF)) return 1;
3758 if( !DDF::FindLabel(DF, arg[2], label) ) {
3759 di << "No label for entry" << "\n";
3763 Handle(TDataStd_ReferenceArray) A;
3764 if ( !label.FindAttribute(TDataStd_ReferenceArray::GetID(), A) ) {
3765 di << "There is no TDataStd_ReferenceArray under label" << "\n";
3769 for(Standard_Integer i = A->Lower(); i<=A->Upper(); i++){
3770 const TDF_Label& aLabel = A->Value(i);
3771 TCollection_AsciiString entry;
3772 TDF_Tool::Entry(aLabel, entry);
3773 di << entry.ToCString();
3781 //=======================================================================
3782 //function : GetRefArrayValue (DF, entry, index)
3783 //=======================================================================
3784 static Standard_Integer DDataStd_GetRefArrayValue (Draw_Interpretor& di,
3788 Handle(TDF_Data) DF;
3789 if (!DDF::GetDF(arg[1],DF))
3793 if (!DDF::FindLabel(DF, arg[2], label)) {
3794 di << "No label for entry" << "\n";
3798 Handle(TDataStd_ReferenceArray) A;
3799 if ( !label.FindAttribute(TDataStd_ReferenceArray::GetID(), A) ) {
3800 di << "There is no TDataStd_ReferenceArray under label" << "\n";
3804 Standard_Integer index = Draw::Atoi(arg[3]);
3805 if (index < A->Lower() || index > A->Upper()) {
3806 di << "Index is out of range\n";
3809 const TDF_Label& value = A->Value(index);
3810 TCollection_AsciiString entry;
3811 TDF_Tool::Entry(value, entry);
3812 di << entry.ToCString() << "\n";
3818 //=======================================================================
3819 //function : DDataStd_SetTriangulation
3820 //purpose : SetTriangulation (DF, entry, face)
3821 //=======================================================================
3823 static Standard_Integer DDataStd_SetTriangulation (Draw_Interpretor& di,
3824 Standard_Integer nb,
3829 Handle(TDF_Data) DF;
3830 if (!DDF::GetDF(arg[1],DF))
3834 if (!DDF::AddLabel(DF, arg[2], L))
3838 TopoDS_Shape face = DBRep::Get(arg[3]);
3839 if (face.IsNull() ||
3840 face.ShapeType() != TopAbs_FACE)
3842 di << "The face is null or not a face.\n";
3846 // Get triangulation of the face.
3847 TopLoc_Location loc;
3848 Handle(Poly_Triangulation) tris = BRep_Tool::Triangulation(TopoDS::Face(face), loc);
3851 di << "No triangulation in the face.\n";
3855 // Set the attribute.
3856 TDataXtd_Triangulation::Set(L, tris);
3859 di << "DDataStd_SetTriangulation : Error\n";
3863 //=======================================================================
3864 //function : DDataStd_DumpTriangulation
3865 //purpose : DumpTriangulation (DF, entry)
3866 //=======================================================================
3868 static Standard_Integer DDataStd_DumpMesh (Draw_Interpretor& di,
3869 Standard_Integer nb,
3874 Handle(TDF_Data) DF;
3875 if (!DDF::GetDF(arg[1],DF))
3878 Handle(TDataXtd_Triangulation) PT;
3879 if (!DDF::Find(DF,arg[2], TDataXtd_Triangulation::GetID(), PT))
3881 di << "The attribute doesn't exist at the label.\n";
3885 // Dump of the triangulation.
3886 if (PT->Get().IsNull())
3888 di << "No triangulation in the attribute.\n";
3892 di << "Deflection " << PT->Deflection() <<"\n";
3893 di << "Number of nodes " << PT->NbNodes() << "\n";
3894 di << "Number of triangles " << PT->NbTriangles() << "\n";
3895 if (PT->HasUVNodes())
3896 di << "It has 2d-nodes\n";
3897 if (PT->HasNormals())
3898 di << "It has normals\n";
3902 di << "DDataStd_DumpTriangulation : Error\n";
3906 //=======================================================================
3907 //function : BasicCommands
3909 //=======================================================================
3911 void DDataStd::BasicCommands (Draw_Interpretor& theCommands)
3914 static Standard_Boolean done = Standard_False;
3916 done = Standard_True;
3918 const char* g = "DData : Standard Attribute Commands";
3923 theCommands.Add ("SetInteger",
3924 "SetInteger (DF, entry, value [,guid])",
3925 __FILE__, DDataStd_SetInteger, g);
3927 theCommands.Add ("SetIntArray",
3928 "SetIntArray (DF, entry, isDelta, From, To, [elmt1, elmt2, ...])",
3929 __FILE__, DDataStd_SetIntArray, g);
3931 theCommands.Add ("SetIntArrayValue",
3932 "SetIntArrayValue (DF, entry, index, value)",
3933 __FILE__, DDataStd_SetIntArrayValue, g);
3935 theCommands.Add ("SetReal",
3936 "SetReal (DF, entry, value [,guid])",
3937 __FILE__, DDataStd_SetReal, g);
3939 theCommands.Add ("SetRealArray",
3940 "SetRealArray (DF, entry, isDelta, From, To, [elmt1, elmt2, ...])",
3941 __FILE__, DDataStd_SetRealArray, g);
3943 theCommands.Add ("SetRealArrayValue",
3944 "SetRealArrayValue (DF, entry, index, value)",
3945 __FILE__, DDataStd_SetRealArrayValue, g);
3947 theCommands.Add ("SetByteArray",
3948 "SetByteArray (DF, entry, isDelta, From, To, [elmt1, elmt2, ...])",
3949 __FILE__, DDataStd_SetByteArray, g);
3951 theCommands.Add ("SetByteArrayValue",
3952 "SetByteArrayValue (DF, entry, index, value)",
3953 __FILE__, DDataStd_SetByteArrayValue, g);
3955 theCommands.Add ("SetExtStringArray",
3956 "SetExtStringArray (DF, entry, isDelta, From, To, [elmt1, elmt2, ...])",
3957 __FILE__, DDataStd_SetExtStringArray, g);
3959 theCommands.Add ("SetExtStringArrayValue",
3960 "SetExtStringArrayValue (DF, entry, index, value)",
3961 __FILE__, DDataStd_SetExtStringArrayValue, g);
3963 theCommands.Add ("SetRefArray",
3964 "SetRefArray (DF, entry, From, To, [lab1, lab2, ...])",
3965 __FILE__, DDataStd_SetRefArray, g);
3967 theCommands.Add ("SetRefArrayValue",
3968 "SetRefArrayValue (DF, entry, index, value)",
3969 __FILE__, DDataStd_SetRefArrayValue, g);
3971 theCommands.Add ("SetIntPackedMap",
3972 "SetIntPackedMap (DF, entry, isDelta, key1, key2, ... )",
3973 __FILE__, DDataStd_SetIntPackedMap, g);
3975 theCommands.Add ("SetReference",
3976 "SetReference (DF, entry, reference)",
3977 __FILE__, DDataStd_SetReference, g);
3979 theCommands.Add ("SetComment",
3980 "SetComment (DF, entry, comment)",
3981 __FILE__, DDataStd_SetComment, g);
3983 theCommands.Add ("SetUAttribute",
3984 "SetUAttribute (DF, entry, LocalID)",
3985 __FILE__, DDataStd_SetUAttribute, g);
3987 theCommands.Add ("SetVariable",
3988 "SetVariable (DF, entry, isConstant[0/1], units)",
3989 __FILE__, DDataStd_SetVariable, g);
3991 theCommands.Add ("SetAsciiString",
3992 "SetAsciiString (DF, entry, String )",
3993 __FILE__, DDataStd_SetAsciiString, g);
3995 theCommands.Add ("SetBooleanArray",
3996 "SetBooleanArray (DF, entry, isDelta, From, To, [elmt1, elmt2, ...])",
3997 __FILE__, DDataStd_SetBooleanArray, g);
3999 theCommands.Add ("SetBooleanArrayValue",
4000 "SetBooleanArrayValue (DF, entry, index, value)",
4001 __FILE__, DDataStd_SetBooleanArrayValue, g);
4003 theCommands.Add ("SetBooleanList",
4004 "SetBooleanList (DF, entry, elmt1, elmt2, ... )",
4005 __FILE__, DDataStd_SetBooleanList, g);
4007 theCommands.Add ("SetIntegerList",
4008 "SetIntegerList (DF, entry, elmt1, elmt2, ... )",
4009 __FILE__, DDataStd_SetIntegerList, g);
4011 theCommands.Add ("SetRealList",
4012 "SetRealList (DF, entry, elmt1, elmt2, ... )",
4013 __FILE__, DDataStd_SetRealList, g);
4015 theCommands.Add ("SetExtStringList",
4016 "SetExtStringList (DF, entry, elmt1, elmt2, ... )",
4017 __FILE__, DDataStd_SetExtStringList, g);
4019 theCommands.Add ("SetReferenceList",
4020 "SetReferenceList (DF, entry, elmt1, elmt2, ... )",
4021 __FILE__, DDataStd_SetReferenceList, g);
4023 theCommands.Add ("SetTriangulation",
4024 "SetTriangulation (DF, entry, face) - adds label with passed entry to \
4025 DF and put an attribute with the triangulation from passed face",
4026 __FILE__, DDataStd_SetTriangulation, g);
4028 // Insert before and after (for lists)
4030 theCommands.Add ("InsertBeforeExtStringList",
4031 "InsertBeforeExtStringList (DF, entry, index, value )",
4032 __FILE__, DDataStd_InsertBeforeExtStringList, g);
4034 theCommands.Add ("InsertAfterExtStringList",
4035 "InsertAfterExtStringList (DF, entry, index, value )",
4036 __FILE__, DDataStd_InsertAfterExtStringList, g);
4038 theCommands.Add ("RemoveExtStringList",
4039 "RemoveExtStringList (DF, entry, index )",
4040 __FILE__, DDataStd_RemoveExtStringList, g);
4042 theCommands.Add ("InsertBeforeBooleanList",
4043 "InsertBeforeBooleanList (DF, entry, index, value )",
4044 __FILE__, DDataStd_InsertBeforeBooleanList, g);
4046 theCommands.Add ("InsertAfterBooleanList",
4047 "InsertAfterBooleanList (DF, entry, index, value )",
4048 __FILE__, DDataStd_InsertAfterBooleanList, g);
4050 theCommands.Add ("RemoveBooleanList",
4051 "RemoveBooleanList (DF, entry, index )",
4052 __FILE__, DDataStd_RemoveBooleanList, g);
4054 theCommands.Add ("InsertBeforeIntegerList",
4055 "InsertBeforeIntegerList (DF, entry, index, value )",
4056 __FILE__, DDataStd_InsertBeforeIntegerList, g);
4058 theCommands.Add ("InsertAfterIntegerList",
4059 "InsertAfterIntegerList (DF, entry, index, value )",
4060 __FILE__, DDataStd_InsertAfterIntegerList, g);
4062 theCommands.Add ("RemoveIntegerList",
4063 "RemoveIntegerList (DF, entry, index )",
4064 __FILE__, DDataStd_RemoveIntegerList, g);
4066 theCommands.Add ("InsertBeforeRealList",
4067 "InsertBeforeRealList (DF, entry, index, value )",
4068 __FILE__, DDataStd_InsertBeforeRealList, g);
4070 theCommands.Add ("InsertAfterRealList",
4071 "InsertAfterRealList (DF, entry, index, value )",
4072 __FILE__, DDataStd_InsertAfterRealList, g);
4074 theCommands.Add ("RemoveRealList",
4075 "RemoveRealList (DF, entry, index )",
4076 __FILE__, DDataStd_RemoveRealList, g);
4078 theCommands.Add ("InsertBeforeReferenceList",
4079 "InsertBeforeReferenceList (DF, entry, index, value )",
4080 __FILE__, DDataStd_InsertBeforeReferenceList, g);
4082 theCommands.Add ("InsertAfterReferenceList",
4083 "InsertAfterReferenceList (DF, entry, index, value )",
4084 __FILE__, DDataStd_InsertAfterReferenceList, g);
4086 theCommands.Add ("RemoveReferenceList",
4087 "RemoveReferenceList (DF, entry, index )",
4088 __FILE__, DDataStd_RemoveReferenceList, g);
4092 theCommands.Add ("GetAsciiString",
4093 "GetAsciiString (DF, entry )",
4094 __FILE__, DDataStd_GetAsciiString, g);
4096 theCommands.Add ("GetInteger",
4097 "GetInteger (DF, entry, [drawname][, guid])",
4098 __FILE__, DDataStd_GetInteger, g);
4100 theCommands.Add ("GetIntArray",
4101 "GetIntArray (DF, entry )",
4102 __FILE__, DDataStd_GetIntArray, g);
4104 theCommands.Add ("GetIntArrayValue",
4105 "GetIntArrayValue (DF, entry, index)",
4106 __FILE__, DDataStd_GetIntArrayValue, g);
4108 theCommands.Add ("GetRealArray",
4109 "GetRealArray (DF, entry )",
4110 __FILE__, DDataStd_GetRealArray, g);
4112 theCommands.Add ("GetRealArrayValue",
4113 "GetRealArrayValue (DF, entry, index)",
4114 __FILE__, DDataStd_GetRealArrayValue, g);
4116 theCommands.Add ("GetByteArray",
4117 "GetByteArray (DF, entry )",
4118 __FILE__, DDataStd_GetByteArray, g);
4120 theCommands.Add ("GetByteArrayValue",
4121 "GetByteArrayValue (DF, entry, index)",
4122 __FILE__, DDataStd_GetByteArrayValue, g);
4124 theCommands.Add ("GetExtStringArray",
4125 "GetExtStringArray (DF, entry )",
4126 __FILE__, DDataStd_GetExtStringArray, g);
4128 theCommands.Add ("GetExtStringArrayValue",
4129 "GetExtStringArrayValue (DF, entry, index)",
4130 __FILE__, DDataStd_GetExtStringArrayValue, g);
4132 theCommands.Add ("GetRefArray",
4133 "GetRefArray (DF, entry )",
4134 __FILE__, DDataStd_GetRefArray, g);
4136 theCommands.Add ("GetRefArrayValue",
4137 "GetRefArrayValue (DF, entry, index)",
4138 __FILE__, DDataStd_GetRefArrayValue, g);
4140 theCommands.Add ("GetIntPackedMap",
4141 "GetIntPackedMap (DF, entry )",
4142 __FILE__, DDataStd_GetIntPackedMap, g);
4144 theCommands.Add ("GetReal",
4145 "GetReal (DF, entry, [drawname][, guid])",
4146 __FILE__, DDataStd_GetReal, g);
4148 theCommands.Add ("GetReference",
4149 "GetReference (DF, entry)",
4150 __FILE__, DDataStd_GetReference, g);
4153 theCommands.Add ("GetComment",
4154 "GetComment (DF, entry)",
4155 __FILE__, DDataStd_GetComment, g);
4157 theCommands.Add("Self",
4158 "Self(document, entry)",
4159 __FILE__, DDataStd_Self, g);
4161 theCommands.Add ("GetUAttribute",
4162 "GetUAttribute (DF, entry)",
4163 __FILE__, DDataStd_GetUAttribute, g);
4165 theCommands.Add ("GetVariable",
4166 "GetVariable (DF, entry, [isConstant], [units])",
4167 __FILE__, DDataStd_GetVariable, g);
4169 theCommands.Add ("SetRelation",
4170 "SetRelation (DF, entry, expression, var1[, var2, ...])",
4171 __FILE__, DDataStd_SetRelation, g);
4173 theCommands.Add ("DumpRelation",
4174 "DumpRelation (DF, entry)",
4175 __FILE__, DDataStd_DumpRelation, g);
4177 theCommands.Add ("GetBooleanArray",
4178 "GetBooleanArray (DF, entry )",
4179 __FILE__, DDataStd_GetBooleanArray, g);
4181 theCommands.Add ("GetBooleanArrayValue",
4182 "GetBooleanArrayValue (DF, entry, index)",
4183 __FILE__, DDataStd_GetBooleanArrayValue, g);
4185 theCommands.Add ("GetBooleanList",
4186 "GetBooleanList (DF, entry )",
4187 __FILE__, DDataStd_GetBooleanList, g);
4189 theCommands.Add ("GetIntegerList",
4190 "GetIntegerList (DF, entry )",
4191 __FILE__, DDataStd_GetIntegerList, g);
4193 theCommands.Add ("GetRealList",
4194 "GetRealList (DF, entry )",
4195 __FILE__, DDataStd_GetRealList, g);
4197 theCommands.Add ("GetExtStringList",
4198 "GetExtStringList (DF, entry)",
4199 __FILE__, DDataStd_GetExtStringList, g);
4201 theCommands.Add ("GetReferenceList",
4202 "GetReferenceList (DF, entry)",
4203 __FILE__, DDataStd_GetReferenceList, g);
4205 // ========================= UTF =====================================
4206 const char* ggg = "UTF Commands";
4208 theCommands.Add ("SetUTFName",
4209 "SetUTFName (DF, entry, fileName)",
4210 __FILE__, DDataStd_KeepUTF, ggg);
4212 theCommands.Add ("GetUTF",
4213 "GetUTF (DF, entry, fileName)",
4214 __FILE__, DDataStd_GetUTFtoFile, ggg);
4216 //======================= NData Commands ========================
4218 const char* gN = "NData Commands";
4219 theCommands.Add ("SetNDataIntegers",
4220 "SetNDataIntegers (DF, entry, NumPairs, key1, val1, ... )",
4221 __FILE__, DDataStd_SetNDataIntegers, gN);
4223 theCommands.Add ("SetNDataReals",
4224 "SetNDataReals (DF, entry, NumPairs, key1, val1, ... )",
4225 __FILE__, DDataStd_SetNDataReals, gN);
4227 theCommands.Add ("SetNDataStrings",
4228 "SetNDataStrings (DF, entry, NumPairs, key1, val1, ... )",
4229 __FILE__, DDataStd_SetNDataStrings, gN);
4231 theCommands.Add ("SetNDataBytes",
4232 "SetNDataBytes (DF, entry, NumPairs, key1, val1, ... )",
4233 __FILE__, DDataStd_SetNDataBytes, gN);
4235 theCommands.Add ("SetNDataIntArrays",
4236 "SetNDataIntArrays (DF entry entry key NumOfArrElems val1 val2... )",
4237 __FILE__, DDataStd_SetNDataIntAr, gN);
4239 theCommands.Add ("SetNDataRealArrays",
4240 "SetNDataRealArrays (DF entry key NumOfArrElems val1 val2... )",
4241 __FILE__, DDataStd_SetNDataRealAr, gN);
4245 theCommands.Add ("GetNDIntegers",
4246 "GetNDIntegers (DF, entry )",
4247 __FILE__, DDataStd_GetNDIntegers, g);
4249 theCommands.Add ("GetNDInteger",
4250 "GetNDInteger (DF entry key [drawname])",
4251 __FILE__, DDataStd_GetNDInteger, g);
4253 theCommands.Add ("GetNDReals",
4254 "GetNDReals (DF entry )",
4255 __FILE__, DDataStd_GetNDReals, g);
4257 theCommands.Add ("GetNDReal",
4258 "GetNDReal (DF entry key [drawname])",
4259 __FILE__, DDataStd_GetNDReal, g);
4261 theCommands.Add ("GetNDStrings",
4262 "GetNDStrings (DF entry )",
4263 __FILE__, DDataStd_GetNDStrings, g);
4265 theCommands.Add ("GetNDString",
4266 "GetNDString (DF entry key [drawname])",
4267 __FILE__, DDataStd_GetNDString, g);
4269 theCommands.Add ("GetNDBytes",
4270 "GetNDBytes (DF entry )",
4271 __FILE__, DDataStd_GetNDBytes, g);
4273 theCommands.Add ("GetNDByte",
4274 "GetNDByte (DF entry key [drawname])",
4275 __FILE__, DDataStd_GetNDByte, g);
4277 theCommands.Add ("GetNDIntArrays",
4278 "GetNDIntArrays (DF, entry )",
4279 __FILE__, DDataStd_GetNDIntArrays, g);
4281 theCommands.Add ("GetNDIntArray",
4282 "GetNDIntArray (DF entry key )",
4283 __FILE__, DDataStd_GetNDIntArray, g);
4285 theCommands.Add ("GetNDRealArrays",
4286 "GetNDRealArrays (DF entry )",
4287 __FILE__, DDataStd_GetNDRealArrays, g);
4289 theCommands.Add ("GetNDRealArray",
4290 "GetNDRealArray (DF entry key )",
4291 __FILE__, DDataStd_GetNDRealArray, g);
4293 //====================== Change =======================
4294 theCommands.Add ("ChangeByteArray",
4295 "ChangeByteArray (DF, entry, indx, value )",
4296 __FILE__, DDataStd_ChangeByteArray, g);
4298 theCommands.Add ("ChangeIntArray",
4299 "ChangeIntArray (DF, entry, indx, value )",
4300 __FILE__, DDataStd_ChangeIntArray, g);
4302 theCommands.Add ("ChangeRealArray",
4303 "ChangeRealArray (DF, entry, indx, value )",
4304 __FILE__, DDataStd_ChangeRealArray, g);
4306 theCommands.Add ("ChangeExtStrArray",
4307 "ChangeExtStrArray (DF, entry, indx, value )",
4308 __FILE__, DDataStd_ChangeExtStrArray, g);
4310 theCommands.Add ("ChangeIntPackedMap_Add",
4311 "ChangeIntPackedMAp_Add (DF, entry, key[,key [...]] )",
4312 __FILE__, DDataStd_ChangeIntPackedMap_Add, g);
4314 theCommands.Add ("ChangeIntPackedMap_Rem",
4315 "ChangeIntPackedMAp_Rem (DF, entry, key[,key [...]] )",
4316 __FILE__, DDataStd_ChangeIntPackedMap_Rem, g);
4318 theCommands.Add ("ChangeIntPackedMap_AddRem",
4319 "ChangeIntPackedMAp_AddRem (DF, entry, key[,key [...]] )",
4320 __FILE__, DDataStd_ChangeIntPackedMap_AddRem, g);
4322 //=========================================================
4323 // TFunction commands
4324 const char* gg = "DFunction Commands";
4326 theCommands.Add ("SetFunction",
4327 "SetFunction (DF, entry, guid, failure)",
4328 __FILE__, DDataStd_SetFunction, gg);
4330 theCommands.Add ("GetFunction",
4331 "GetFunction (DF, entry, guid(out), failure(out))",
4332 __FILE__, DDataStd_GetFunction, gg);
4334 //=========================================================
4336 theCommands.Add ("DumpTriangulation",
4337 "DumpTriangulations (DF, entry) - dumps info about triangulation that \
4338 stored in DF in triangulation attribute of a label with the passed entry",
4339 __FILE__, DDataStd_DumpMesh, g);
4341 //======================================================================
4342 //======= for internal use
4344 theCommands.Add ("SetNDataIntegers2",
4345 "SetNDataIntegers2 (DF, entry, NumPair )",
4346 __FILE__, DDataStd_SetNDataIntegers2, gN);
4348 theCommands.Add ("SetNDataIntArrays2",
4349 "SetNDataIntArrays2 (DF entry entry key NumOfArrElems)",
4350 __FILE__, DDataStd_SetNDataIntAr2, gN);
4352 theCommands.Add ("SetIntArrayT",
4353 "SetIntArrayT (DF, entry, isDelta, From, To )",
4354 __FILE__, DDataStd_SetIntArrayTest, g);
4356 theCommands.Add ("SetIntPHugeMap",
4357 "SetIntPHugeMap (DF, entry, isDelta Num)",
4358 __FILE__, DDataStd_SetIntPHugeMap, g);