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>
27 #include <Message.hxx>
29 #include <TDF_Data.hxx>
30 #include <TDF_Label.hxx>
31 #include <TDF_Tool.hxx>
32 #include <TDF_AttributeSequence.hxx>
33 #include <TDF_AttributeList.hxx>
34 #include <TDF_ListIteratorOfAttributeList.hxx>
36 #include <BRep_Tool.hxx>
40 #include <TopoDS_Vertex.hxx>
41 #include <TopoDS_Edge.hxx>
42 #include <TopoDS_Wire.hxx>
43 #include <TopoDS_Face.hxx>
44 #include <TopoDS_Shell.hxx>
45 #include <TopoDS_Solid.hxx>
46 #include <TopoDS_Shape.hxx>
52 #include <TCollection_AsciiString.hxx>
53 #include <TColStd_HArray1OfReal.hxx>
56 #include <TDataStd.hxx>
57 #include <TDataXtd_Triangulation.hxx>
58 #include <TDataStd_Comment.hxx>
59 #include <TDataStd_Name.hxx>
60 #include <TDataStd_Integer.hxx>
61 #include <TDataStd_Real.hxx>
62 #include <TDF_Reference.hxx>
63 #include <TDataStd_UAttribute.hxx>
64 #include <TDataStd_IntegerArray.hxx>
65 #include <TDataStd_BooleanArray.hxx>
66 #include <TDataStd_RealArray.hxx>
67 #include <TDataStd_BooleanList.hxx>
68 #include <TDataStd_IntegerList.hxx>
69 #include <TDataStd_RealList.hxx>
70 #include <TDataStd_Variable.hxx>
71 #include <TDataStd_ExtStringArray.hxx>
72 #include <TDF_ChildIterator.hxx>
73 #include <TDF_Tool.hxx>
75 #include <TDataStd_NamedData.hxx>
76 #include <TColStd_DataMapOfStringInteger.hxx>
77 #include <TColStd_DataMapIteratorOfDataMapOfStringInteger.hxx>
78 #include <TDataStd_DataMapOfStringReal.hxx>
79 #include <TDataStd_DataMapIteratorOfDataMapOfStringReal.hxx>
80 #include <TDataStd_DataMapOfStringByte.hxx>
81 #include <TDataStd_DataMapIteratorOfDataMapOfStringByte.hxx>
82 #include <TDataStd_DataMapOfStringString.hxx>
83 #include <TDataStd_DataMapIteratorOfDataMapOfStringString.hxx>
84 #include <TDataStd_DataMapOfStringHArray1OfInteger.hxx>
85 #include <TDataStd_DataMapIteratorOfDataMapOfStringHArray1OfInteger.hxx>
86 #include <TDataStd_DataMapOfStringHArray1OfReal.hxx>
87 #include <TDataStd_DataMapIteratorOfDataMapOfStringHArray1OfReal.hxx>
88 #include <TColStd_HArray1OfInteger.hxx>
89 #include <TColStd_HArray1OfReal.hxx>
90 #include <TDataStd_AsciiString.hxx>
91 #include <TDataStd_IntPackedMap.hxx>
92 #include <TColStd_HPackedMapOfInteger.hxx>
93 #include <TColStd_PackedMapOfInteger.hxx>
94 #include <TColStd_MapIteratorOfPackedMapOfInteger.hxx>
95 #include <TDataStd_ByteArray.hxx>
96 #include <TDataStd_ListIteratorOfListOfByte.hxx>
97 #include <TColStd_ListIteratorOfListOfInteger.hxx>
98 #include <TColStd_ListIteratorOfListOfReal.hxx>
99 #include <TDataStd_ReferenceArray.hxx>
100 #include <TDataStd_ExtStringList.hxx>
101 #include <TDataStd_ReferenceList.hxx>
102 #include <TDF_ListIteratorOfLabelList.hxx>
103 #include <TDataStd_ListIteratorOfListOfExtendedString.hxx>
109 //#define DEB_DDataStd
111 //=======================================================================
112 //function : DDataStd_SetInteger
113 //purpose : SetInteger (DF, entry, value, [,guid])
114 //=======================================================================
116 static Standard_Integer DDataStd_SetInteger (Draw_Interpretor& di,
122 if (!DDF::GetDF(arg[1],DF)) return 1;
124 DDF::AddLabel(DF, arg[2], L);
126 TDataStd_Integer::Set(L,Draw::Atoi(arg[3]));
128 if (!Standard_GUID::CheckGUIDFormat(arg[4])) {
129 di<<"DDataStd_SetInteger: The format of GUID is invalid\n";
132 Standard_GUID guid(arg[4]);
133 TDataStd_Integer::Set(L, guid, Draw::Atoi(arg[3]));
137 di << "DDataStd_SetInteger : Error\n";
141 //=======================================================================
142 //function : DDataStd_SetReal
143 //purpose : SetReal (DF, entry, value [,guid])
144 //=======================================================================
146 static Standard_Integer DDataStd_SetReal (Draw_Interpretor& di,
152 if (!DDF::GetDF(arg[1],DF)) return 1;
154 DDF::AddLabel(DF, arg[2], L);
156 TDataStd_Real::Set(L,Draw::Atof(arg[3]));
158 if (!Standard_GUID::CheckGUIDFormat(arg[4])) {
159 di<<"DDataStd_SetReal: The format of GUID is invalid\n";
162 Standard_GUID guid(arg[4]);
163 TDataStd_Real::Set(L, guid, Draw::Atof(arg[3]));
167 di << "DDataStd_SetReal : Error\n";
173 //=======================================================================
174 //function : DDataStd_SetReference
175 //purpose : SetReference (DF, entry, reference)
176 //=======================================================================
178 static Standard_Integer DDataStd_SetReference (Draw_Interpretor& di,
184 if (!DDF::GetDF(arg[1],DF)) return 1;
186 DDF::AddLabel(DF, arg[2], L);
188 if (!DDF::FindLabel(DF,arg[3],LREF)) return 1;
189 TDF_Reference::Set(L,LREF);
192 di << "DDataStd_SetReference : Error\n";
197 //=======================================================================
198 //function : DDataStd_SetComment
199 //purpose : SetComment (DF, entry, Comment)
200 //=======================================================================
202 static Standard_Integer DDataStd_SetComment (Draw_Interpretor& di,
208 if (!DDF::GetDF(arg[1],DF)) return 1;
210 DDF::AddLabel(DF, arg[2], L);
211 TDataStd_Comment::Set(L,TCollection_ExtendedString(arg[3],Standard_True));
214 di << "DDataStd_SetComment : Error\n";
218 //=======================================================================
219 //function : DDataStd_GetInteger
220 //purpose : GetReal (DF, entry, [drawname][, guid])
221 //=======================================================================
223 static Standard_Integer DDataStd_GetInteger (Draw_Interpretor& di,
227 if (nb == 3 || nb == 4 || nb == 5) {
229 if (!DDF::GetDF(arg[1],DF)) return 1;
230 Handle(TDataStd_Integer) A;
232 Standard_GUID aNullGuid("00000000-0000-0000-0000-000000000000");
233 Standard_Boolean isdrawname(Standard_False);
235 if(nb == 4) { //DF, entry, guid
236 if (Standard_GUID::CheckGUIDFormat(arg[3]))
237 aGuid = Standard_GUID(arg[3]);
239 if(Standard_GUID::IsEqual(aGuid, aNullGuid)) {
240 isdrawname = Standard_True;
241 aGuid = TDataStd_Integer::GetID();
244 isdrawname = Standard_True;
245 if (Standard_GUID::CheckGUIDFormat(arg[4]))
246 aGuid = Standard_GUID(arg[4]);
248 di<<"DDataStd_GetInteger: The format of GUID is invalid\n";
253 if (!DDF::Find(DF,arg[2],aGuid,A)) return 1;
254 if (nb == 4 && isdrawname) Draw::Set(arg[3],A->Get());
255 else Draw::Set(arg[2],A->Get());
259 di << "DDataStd_GetInteger : Error\n";
263 //=======================================================================
264 //function : DDataStd_GetReal
265 //purpose : GetReal (DF, entry, [drawname][, guid])
266 //=======================================================================
268 static Standard_Integer DDataStd_GetReal (Draw_Interpretor& di,
272 if (nb == 3 || nb == 4 || nb == 5) {
274 if (!DDF::GetDF(arg[1],DF)) return 1;
275 Handle(TDataStd_Real) A;
277 Standard_GUID aNullGuid("00000000-0000-0000-0000-000000000000");
278 Standard_Boolean isdrawname(Standard_False);
281 if (Standard_GUID::CheckGUIDFormat(arg[3]))
282 aGuid = Standard_GUID(arg[3]);
284 if(Standard_GUID::IsEqual(aGuid, aNullGuid)) {
285 isdrawname = Standard_True;
286 aGuid = TDataStd_Real::GetID();
290 isdrawname = Standard_True;
291 if (Standard_GUID::CheckGUIDFormat(arg[4]))
292 aGuid = Standard_GUID(arg[4]);
294 di<<"DDataStd_GetReal: The format of GUID is invalid\n";
298 if (!DDF::Find(DF,arg[2],aGuid,A)) return 1;
299 if (nb == 4 && isdrawname) Draw::Set(arg[3],A->Get());
300 else Draw::Set(arg[2],A->Get());
304 di << "DDataStd_GetReal : Error\n";
309 //=======================================================================
310 //function : DDataStd_GetReference
311 //purpose : GetShape (DF, entry)
312 //=======================================================================
314 static Standard_Integer DDataStd_GetReference (Draw_Interpretor& di,
320 if (!DDF::GetDF(arg[1],DF)) return 1;
321 Handle(TDF_Reference) REF;
322 if (!DDF::Find(DF,arg[2],TDF_Reference::GetID(),REF)) return 1;
323 TCollection_AsciiString entry; TDF_Tool::Entry(REF->Get(),entry);
324 di << entry.ToCString();
327 di << "DDataStd_GetReference : Error\n";
331 //=======================================================================
332 //function : DDataStd_GetComment
333 //purpose : GetShape (DF, entry)
334 //=======================================================================
336 static Standard_Integer DDataStd_GetComment (Draw_Interpretor& di,
342 if (!DDF::GetDF(arg[1],DF)) return 1;
343 Handle(TDataStd_Comment) A;
344 if (!DDF::Find(DF,arg[2],TDataStd_Comment::GetID(),A)) return 1;
348 di << "DDataStd_GetComment : Error\n";
354 //=======================================================================
356 //purpose : Self (document,label)
357 //=======================================================================
359 static Standard_Integer DDataStd_Self (Draw_Interpretor& di,
363 TCollection_AsciiString s;
366 if (!DDF::GetDF(arg[1],DF)) return 1;
368 if (!DDF::FindLabel(DF,arg[2],L)) return 1;
369 // TDataStd::MakeSelfContained(L,removed);
370 // if (removed.IsEmpty()) std::cout << "noone attriburte removed" << std::endl;
371 // for (TDF_ListIteratorOfAttributeList it(removed);it.More();it.Next()) {
372 // TDF_Tool::Entry(it.Value()->Label(),s); std::cout << s << " ";
373 // std::cout << std::endl;
377 di << "Self : Error\n";
383 //=======================================================================
384 //function : SetUObject (DF, entry, ObjectID)
385 //=======================================================================
386 // static Standard_Integer DDataStd_SetUObject (Draw_Interpretor&,
387 // Standard_Integer nb,
391 // Handle(TDF_Data) DF;
392 // if (!DDF::GetDF(arg[1],DF)) return 1;
394 // DDF::AddLabel(DF, arg[2], label);
396 // Standard_GUID guid(arg[3]); //"00000000-0000-0000-1111-000000000000");
397 // TDataStd_UObject::Set(label, guid);
401 // std::cout << "Wrong arguments" << std::endl;
405 //=======================================================================
406 //function : SetUAttribute (DF, entry, LocalID)
407 //=======================================================================
408 static Standard_Integer DDataStd_SetUAttribute (Draw_Interpretor& di,
414 if (!DDF::GetDF(arg[1],DF)) return 1;
416 DDF::AddLabel(DF, arg[2], label);
418 Standard_GUID guid(arg[3]); //"00000000-0000-0000-2222-000000000000");
419 TDataStd_UAttribute::Set(label, guid);
423 di << "Wrong arguments" << "\n";
427 //=======================================================================
428 //function : GetUAttribute (DF, entry, LoaclID)
429 //=======================================================================
430 static Standard_Integer DDataStd_GetUAttribute (Draw_Interpretor& di,
436 if (!DDF::GetDF(arg[1],DF)) return 1;
438 if( !DDF::FindLabel(DF, arg[2], label) ) {
439 di << "No label for entry" << "\n";
442 Standard_GUID guid(arg[3]); //"00000000-0000-0000-2222-000000000000");
444 Handle(TDataStd_UAttribute) UA;
445 if( !label.FindAttribute(guid, UA) ) {
446 di << "No UAttribute Attribute on label" << "\n";
449 char *aStrGUID = new char[37];
450 UA->ID().ToCString(aStrGUID);
456 di << "Wrong arguments" << "\n";
461 //=======================================================================
462 //function : CheckUObject (DF, entry, ObjectID)
463 //=======================================================================
464 // static Standard_Integer DDataStd_CheckUObject (Draw_Interpretor&,
465 // Standard_Integer nb,
469 // Handle(TDF_Data) DF;
470 // if (!DDF::GetDF(arg[1],DF)) return 1;
472 // if( !DDF::FindLabel(DF, arg[2], label) ) {
473 // std::cout << "No label for entry" << std::endl;
476 // Handle(TDataStd_Object) O;
477 // Handle(TDataStd_UObject) UO;
478 // Standard_GUID guidUO(arg[3]);
480 // if( !label.FindAttribute( TDataStd_Object::GetID(), O) ) {
481 // std::cout << "No Object Attribute on label" << std::endl;
484 // std::cout << "UObject is found with ObjectID = ";
485 // O->Find(label, guidUO, UO);
486 // UO->ObjectID().ShallowDump(std::cout);
487 // std::cout << std::endl;
492 // std::cout << "Wrong arguments" << std::endl;
497 //=======================================================================
498 //function : SetIntArray (DF, entry , isDelta, [-g Guid,] From, To, elmt1, elmt2, ...
499 //=======================================================================
500 static Standard_Integer DDataStd_SetIntArray (Draw_Interpretor& di,
506 if (!DDF::GetDF(arg[1],DF)) return 1;
508 DDF::AddLabel(DF, arg[2], label);
509 Standard_Boolean isDelta = Draw::Atoi(arg[3]) != 0;
511 Standard_Boolean isGuid(Standard_False);
512 Standard_Character c1(arg[4][0]), c2(arg[4][1]);
513 if(c1 == '-' && c2 == 'g') { //guid
514 if (!Standard_GUID::CheckGUIDFormat(arg[5])) {
515 di<<"DDataStd_SetIntArray: The format of GUID is invalid\n";
518 guid = Standard_GUID (arg[5]);
519 isGuid = Standard_True;
521 Standard_Integer j(4);
523 if((strlen(arg[j]) > MAXLENGTH || strlen(arg[j+1]) > MAXLENGTH) ||
524 !TCollection_AsciiString (arg[j]).IsIntegerValue() ||
525 !TCollection_AsciiString (arg[j+1]).IsIntegerValue())
527 di << "DDataStd_SetIntArray: From, To may be wrong\n";
530 Standard_Integer From = Draw::Atoi(arg[j]), To = Draw::Atoi( arg[j+1] );
531 di << "Array of Standard_Integer with bounds from = " << From << " to = " << To << "\n";
532 Handle(TDataStd_IntegerArray) A;
534 A = TDataStd_IntegerArray::Set(label, From, To, isDelta);
536 A = TDataStd_IntegerArray::Set(label, guid, From, To, isDelta);
538 if ((!isGuid && nb > 6) || (isGuid && nb > 8)) {
540 for(Standard_Integer i = From; i<=To; i++) {
541 A->SetValue(i, Draw::Atoi(arg[j]) );
547 di << "DDataStd_SetIntArray: Error\n";
551 //=======================================================================
552 //function : SetIntArrayValue (DF, entry, index, value)
553 //=======================================================================
554 static Standard_Integer DDataStd_SetIntArrayValue (Draw_Interpretor&,
560 if (!DDF::GetDF(arg[1], DF))
565 if (!DDF::AddLabel(DF, arg[2], label))
568 // Get index and value.
569 Standard_Integer index = Draw::Atoi(arg[3]);
570 Standard_Integer value = Draw::Atoi(arg[4]);
573 Handle(TDataStd_IntegerArray) arr;
574 if (label.FindAttribute(TDataStd_IntegerArray::GetID(), arr))
576 arr->SetValue(index, value);
583 //=======================================================================
584 //function : GetIntArray (DF, entry [, guid] )
585 //=======================================================================
586 static Standard_Integer DDataStd_GetIntArray (Draw_Interpretor& di,
594 if (!DDF::GetDF(arg[1],DF)) return 1;
596 if( !DDF::FindLabel(DF, arg[2], label) ) {
597 di << "No label for entry" << "\n";
602 if (Standard_GUID::CheckGUIDFormat(arg[3]))
603 aGuid = Standard_GUID(arg[3]);
605 di << "Wrong GUID format" << "\n";
609 aGuid = TDataStd_IntegerArray::GetID();
610 Handle(TDataStd_IntegerArray) A;
611 if ( !label.FindAttribute(aGuid, A) ) {
612 di << "There is no TDataStd_IntegerArray with the specified GUID under label" << "\n";
616 for(Standard_Integer i = A->Lower(); i<=A->Upper(); i++){
624 di << "DDataStd_GetIntArray: Error\n";
627 //=======================================================================
628 //function : GetIntArrayValue (DF, entry, index)
629 //=======================================================================
630 static Standard_Integer DDataStd_GetIntArrayValue (Draw_Interpretor& di,
635 if (!DDF::GetDF(arg[1],DF))
639 if (!DDF::FindLabel(DF, arg[2], label)) {
640 di << "No label for entry" << "\n";
644 Handle(TDataStd_IntegerArray) A;
645 if ( !label.FindAttribute(TDataStd_IntegerArray::GetID(), A) ) {
646 di << "There is no TDataStd_IntegerArray under label" << "\n";
650 Standard_Integer index = Draw::Atoi(arg[3]);
651 if (index < A->Lower() || index > A->Upper()) {
652 di << "Index is out of range\n";
655 di << A->Value(index) << "\n";
661 //=======================================================================
662 //function : ChangeIntArray (DF, entry, indx, val )
663 //=======================================================================
664 static Standard_Integer DDataStd_ChangeIntArray (Draw_Interpretor& di,
671 if (!DDF::GetDF(arg[1],DF)) return 1;
673 if( !DDF::FindLabel(DF, arg[2], label) ) {
674 di << "No label for entry" << "\n";
678 Handle(TDataStd_IntegerArray) A;
679 if ( !label.FindAttribute(TDataStd_IntegerArray::GetID(), A) ) {
680 di << "There is no TDataStd_IntegerArray at label" << "\n";
683 Standard_Integer indx = Draw::Atoi(arg[3]);
684 Standard_Integer val = Draw::Atoi(arg[4]);
685 Standard_Integer low = A->Lower(), up = A->Upper();
686 if(low <= indx && indx <= up)
687 A->SetValue(indx, val);
689 Handle(TColStd_HArray1OfInteger) Arr = A->Array();
690 Handle(TColStd_HArray1OfInteger) arr;
694 arr = new TColStd_HArray1OfInteger(low, up);
695 for(i=low; i<= Arr->Upper(); i++)
696 arr->SetValue(i, Arr->Value(i));
697 for(i=Arr->Upper()+1; i<= up; i++) {
699 arr->SetValue(i, val);
703 } else if(indx < up) {//clip array : indx to be negative
705 arr = new TColStd_HArray1OfInteger(low, up);
706 for(i=low; i< up; i++)
707 arr->SetValue(i, Arr->Value(i));
708 arr->SetValue(up, val);
714 di << "DDataStd_ChangeIntArray: Error\n";
718 //=======================================================================
719 //function : SetIntArrayT (DF, entry , isDelta, From, To) - for testing
721 //=======================================================================
722 static Standard_Integer DDataStd_SetIntArrayTest (Draw_Interpretor& di,
729 if (!DDF::GetDF(arg[1],DF)) return 1;
731 DDF::AddLabel(DF, arg[2], label);
732 Standard_Boolean isDelta = Draw::Atoi(arg[3]) != 0;
733 Standard_Integer From = Draw::Atoi(arg[4]), To = Draw::Atoi( arg[5] ), j;
734 di << "Array of Standard_Integer with bounds from = " << From << " to = " << To << "\n";
735 Handle(TDataStd_IntegerArray) A = TDataStd_IntegerArray::Set(label, From, To, isDelta);
738 Standard_Integer k = 100;
739 for(Standard_Integer i = From; i<=To; i++) {
747 //=======================================================================
748 //function : SetRealArray (DF, entry , isDelta, [-g Guid,] From, To, elmt1, elmt2, ...
749 //=======================================================================
750 static Standard_Integer DDataStd_SetRealArray (Draw_Interpretor& di,
756 if (!DDF::GetDF(arg[1],DF)) return 1;
758 DDF::AddLabel(DF, arg[2], label);
759 Standard_Boolean isDelta = Draw::Atoi(arg[3]) != 0;
761 Standard_Boolean isGuid(Standard_False);
762 Standard_Character c1(arg[4][0]), c2(arg[4][1]);
763 if(c1 == '-' && c2 == 'g') { //guid
764 if (!Standard_GUID::CheckGUIDFormat(arg[5])) {
765 di<<"DDataStd_SetRealArray: The format of GUID is invalid\n";
768 guid = Standard_GUID (arg[5]);
769 isGuid = Standard_True;
771 Standard_Integer j(4);
773 if((strlen(arg[j]) > MAXLENGTH || strlen(arg[j+1]) > MAXLENGTH) ||
774 !TCollection_AsciiString (arg[j]).IsIntegerValue() ||
775 !TCollection_AsciiString (arg[j+1]).IsIntegerValue())
777 di << "DDataStd_SetRealArray: From, To may be wrong\n";
780 Standard_Integer From = Draw::Atoi(arg[j]), To = Draw::Atoi( arg[j+1] );
781 di << " Array of Standard_Real with bounds from = " << From << " to = " << To << "\n";
782 Handle(TDataStd_RealArray) A;
784 A = TDataStd_RealArray::Set(label, From, To, isDelta);
786 A = TDataStd_RealArray::Set(label, guid, From, To, isDelta);
787 if ((!isGuid && nb > 6) || (isGuid && nb > 8)) {
789 for(Standard_Integer i = From; i<=To; i++) {
790 A->SetValue(i, Draw::Atof(arg[j]) );
796 di << "DDataStd_SetRealArray: Error\n";
799 //=======================================================================
800 //function : SetRealArrayValue (DF, entry, index value)
801 //=======================================================================
802 static Standard_Integer DDataStd_SetRealArrayValue (Draw_Interpretor&,
808 if (!DDF::GetDF(arg[1], DF))
813 if (!DDF::AddLabel(DF, arg[2], label))
816 // Get index and value.
817 Standard_Integer index = Draw::Atoi(arg[3]);
818 Standard_Real value = Draw::Atof(arg[4]);
821 Handle(TDataStd_RealArray) realArray;
822 if (label.FindAttribute(TDataStd_RealArray::GetID(), realArray))
824 realArray->SetValue(index, value);
831 //=======================================================================
832 //function : GetRealArray (DF, entry [, guid])
833 //=======================================================================
834 static Standard_Integer DDataStd_GetRealArray (Draw_Interpretor& di,
841 if (!DDF::GetDF(arg[1],DF)) return 1;
843 if( !DDF::FindLabel(DF, arg[2], label) ) {
844 di << "No label for entry" << "\n";
849 if (Standard_GUID::CheckGUIDFormat(arg[3]))
850 aGuid = Standard_GUID(arg[3]);
852 di << "Wrong GUID format" << "\n";
856 aGuid = TDataStd_RealArray::GetID();
858 Handle(TDataStd_RealArray) A;
859 if ( !label.FindAttribute(aGuid, A) ) {
860 di << "There is no TDataStd_RealArray with the specified GUID at the label" << "\n";
862 aGuid.ShallowDump(std::cout);
867 for(Standard_Integer i = A->Lower(); i<=A->Upper(); i++){
869 std::cout << A->Value(i) << std::endl;
878 di << "TDataStd_RealArray: Error\n";
881 //=======================================================================
882 //function : GetRealArrayValue (DF, entry, index)
883 //=======================================================================
884 static Standard_Integer DDataStd_GetRealArrayValue (Draw_Interpretor& di,
889 if (!DDF::GetDF(arg[1],DF))
893 if (!DDF::FindLabel(DF, arg[2], label)) {
894 di << "No label for entry" << "\n";
898 Handle(TDataStd_RealArray) A;
899 if ( !label.FindAttribute(TDataStd_RealArray::GetID(), A) ) {
900 di << "There is no TDataStd_RealArray under label" << "\n";
904 Standard_Integer index = Draw::Atoi(arg[3]);
905 if (index < A->Lower() || index > A->Upper()) {
906 di << "Index is out of range\n";
909 di << A->Value(index) << "\n";
915 //=======================================================================
916 //function : ChangeRealArray (DF, entry, indx, val )
917 //=======================================================================
918 static Standard_Integer DDataStd_ChangeRealArray (Draw_Interpretor& di,
925 if (!DDF::GetDF(arg[1],DF)) return 1;
927 if( !DDF::FindLabel(DF, arg[2], label) ) {
928 di << "No label for entry" << "\n";
932 Handle(TDataStd_RealArray) A;
933 if ( !label.FindAttribute(TDataStd_RealArray::GetID(), A) ) {
934 di << "There is no TDataStd_RealArray at label" << "\n";
937 Standard_Integer indx = Draw::Atoi(arg[3]);
938 Standard_Real val = Draw::Atof(arg[4]);
939 Standard_Integer low = A->Lower(), up = A->Upper();
940 if(low <= indx && indx <= up)
941 A->SetValue(indx, val);
943 Handle(TColStd_HArray1OfReal) Arr = A->Array();
944 Handle(TColStd_HArray1OfReal) arr;
948 arr = new TColStd_HArray1OfReal(low, up);
949 for(i=low; i<= Arr->Upper(); i++)
950 arr->SetValue(i, Arr->Value(i));
951 for(i=Arr->Upper()+1; i<= up; i++) {
953 arr->SetValue(i, val);
957 } else if(indx < up) {//clip array : indx to be negative
959 arr = new TColStd_HArray1OfReal(low, up);
960 for(i=low; i< up; i++)
961 arr->SetValue(i, Arr->Value(i));
962 arr->SetValue(up, val);
968 di << "DDataStd_ChangeRealArray: Error\n";
972 //=======================================================================
973 //function : SetVariable (DF, entry, isConstant[0/1], units)
974 //=======================================================================
975 static Standard_Integer DDataStd_SetVariable (Draw_Interpretor& di,
982 if (!DDF::GetDF(arg[1],DF)) return 1;
984 DDF::AddLabel(DF, arg[2], label);
986 Handle(TDataStd_Variable) aV = TDataStd_Variable::Set(label);
988 const char* aUnits = arg[4];
989 aV->Unit(Standard_CString(aUnits));
991 aV->Constant (Draw::Atoi(arg[3]) != 0);
995 di << "Wrong arguments\n";
999 //=======================================================================
1000 //function : GetVariable (DF, entry, [isConstant], [units])
1001 //=======================================================================
1002 static Standard_Integer DDataStd_GetVariable (Draw_Interpretor& di,
1003 Standard_Integer nb,
1008 Handle(TDF_Data) DF;
1009 if (!DDF::GetDF(arg[1],DF)) return 1;
1011 DDF::AddLabel(DF, arg[2], label);
1013 Handle(TDataStd_Variable) aV;
1014 if (!label.FindAttribute(TDataStd_Variable::GetID(), aV))
1016 di << "TDataStd_Variable: no such attribute\n";
1019 Draw::Set(arg[3],TCollection_AsciiString(Standard_Integer(aV->IsConstant())).ToCString());
1020 Draw::Set(arg[4],aV->Unit().ToCString());
1024 di << "Wrong arguments\n";
1028 #include <TDataStd_Relation.hxx>
1029 #include <TDataStd_Variable.hxx>
1030 //=======================================================================
1031 //function : SetRelation (DF, entry, expression, var1[, var2, ...])
1032 //=======================================================================
1033 static Standard_Integer DDataStd_SetRelation (Draw_Interpretor& di,
1034 Standard_Integer nb, const char** arg)
1038 Handle(TDF_Data) DF;
1039 if (!DDF::GetDF(arg[1],DF)) return 1;
1041 DDF::AddLabel(DF, arg[2], label);
1043 Standard_CString expr (arg[3]);
1044 Handle(TDataStd_Relation) aR = TDataStd_Relation::Set(label);
1045 aR->SetRelation(expr);
1046 Handle(TDataStd_Variable) aV;
1048 for (Standard_Integer i = 4; i < nb; i++)
1050 if (!DDF::FindLabel(DF, arg[i], label))
1052 di << "No label for entry" << arg[i] << "\n";
1055 if (!label.FindAttribute(TDataStd_Variable::GetID(), aV))
1057 di << "No TDataStd_Variable Attribute on label\n";
1060 aR->GetVariables().Append(aV);
1064 di << "Usage: SetRelation (DF, entry, expression, var1[, var2, ...])\n";
1068 //=======================================================================
1069 //function : DumpRelation (DF, entry)
1070 //=======================================================================
1071 static Standard_Integer DDataStd_DumpRelation (Draw_Interpretor& di,
1072 Standard_Integer nb, const char** arg)
1076 Handle(TDF_Data) DF;
1077 if (!DDF::GetDF(arg[1],DF)) return 1;
1080 if (!DDF::FindLabel(DF, arg[2], label))
1082 di << "No label for entry " << arg[2] << "\n";
1085 Handle(TDataStd_Relation) aR;
1086 if (!label.FindAttribute(TDataStd_Relation::GetID(), aR))
1088 di << "No TDataStd_Relation Attribute on label " << arg[2] << "\n";
1092 di << "Relation: expression = \"" << aR->GetRelation()
1093 << "\" variables list = (";
1095 Handle(TDF_Attribute) aV;
1096 TCollection_AsciiString anEntry;
1098 TDF_ListIteratorOfAttributeList it;
1099 for (it.Initialize(aR->GetVariables()); it.More(); it.Next())
1104 label = aV->Label();
1105 TDF_Tool::Entry(label, anEntry);
1106 di << anEntry.ToCString() << " ";
1112 di << "Usage: DumpRelation (DF, entry)\n";
1116 #include <TFunction_Function.hxx>
1117 //=======================================================================
1118 //function : SetFunction (DF, entry, guid, failure)
1119 //=======================================================================
1120 static Standard_Integer DDataStd_SetFunction (Draw_Interpretor& di,
1121 Standard_Integer nb, const char** arg)
1125 Handle(TDF_Data) DF;
1126 if (!DDF::GetDF(arg[1],DF)) return 1;
1128 DDF::AddLabel(DF, arg[2], label);
1130 Standard_GUID guid (arg[3]);
1131 Handle(TFunction_Function) aF = TFunction_Function::Set(label, guid);
1133 int fail = Draw::Atoi(arg[4]);
1134 aF->SetFailure(fail);
1139 di << "Wrong arguments" << "\n";
1143 //=======================================================================
1144 //function : GetFunction (DF, entry, guid(out), failure(out))
1145 //=======================================================================
1146 static Standard_Integer DDataStd_GetFunction (Draw_Interpretor& di,
1147 Standard_Integer nb, const char** arg)
1151 Handle(TDF_Data) DF;
1152 if (!DDF::GetDF(arg[1],DF)) return 1;
1154 if (!DDF::FindLabel(DF, arg[2], label))
1156 di << "No label for entry" << "\n";
1160 Handle(TFunction_Function) aF;
1161 if (!label.FindAttribute(TFunction_Function::GetID(), aF))
1163 di << "No TFunction_Function Attribute on label\n";
1167 char *aStrGUID = new char[37];
1168 aF->GetDriverGUID().ToCString(aStrGUID);
1169 Draw::Set(arg[3],aStrGUID);
1171 Draw::Set(arg[4],TCollection_AsciiString(aF->GetFailure()).ToCString());
1176 di << "Wrong arguments" << "\n";
1180 //=======================================================================
1181 //function : SetExtStringArray (DF, entry , isDelta, [-g Guid, ]From, To, elmt1, elmt2, ...
1182 //=======================================================================
1183 static Standard_Integer DDataStd_SetExtStringArray (Draw_Interpretor& di,
1184 Standard_Integer nb,
1188 Handle(TDF_Data) DF;
1189 if (!DDF::GetDF(arg[1],DF)) return 1;
1191 DDF::AddLabel(DF, arg[2], label);
1192 Standard_Boolean isDelta = Draw::Atoi(arg[3]) != 0;
1195 Standard_Boolean isGuid(Standard_False);
1196 Standard_Character c1(arg[4][0]), c2(arg[4][1]);
1197 if(c1 == '-' && c2 == 'g') { //guid
1198 if (!Standard_GUID::CheckGUIDFormat(arg[5])) {
1199 di<<"DDataStd_SetExtStringArray: The format of GUID is invalid\n";
1202 guid = Standard_GUID (arg[5]);
1203 isGuid = Standard_True;
1205 Standard_Integer j(4);
1207 if((strlen(arg[j]) > MAXLENGTH || strlen(arg[j+1]) > MAXLENGTH) ||
1208 !TCollection_AsciiString (arg[j]).IsIntegerValue() ||
1209 !TCollection_AsciiString (arg[j+1]).IsIntegerValue())
1211 di << "DDataStd_SetExtStringArray: From, To may be wrong\n";
1214 Standard_Integer From = Draw::Atoi(arg[j]), To = Draw::Atoi( arg[j+1] );
1215 di << "Array of ExtString with bounds from = " << From << " to = " << To << "\n";
1216 Handle(TDataStd_ExtStringArray) A;
1218 A = TDataStd_ExtStringArray::Set(label, From, To, isDelta);
1220 A = TDataStd_ExtStringArray::Set(label, guid, From, To, isDelta);
1222 if ((!isGuid && nb > 6) || (isGuid && nb > 8)) {
1224 for(Standard_Integer i = From; i<=To; ++i) {
1225 A->SetValue(i, arg[j] );
1231 di << "TDataStd_ExtStringArray: Error\n";
1235 //=======================================================================
1236 //function : SetExtStringArrayValue (DF, entry, index, value)
1237 //=======================================================================
1238 static Standard_Integer DDataStd_SetExtStringArrayValue (Draw_Interpretor&,
1243 Handle(TDF_Data) DF;
1244 if (!DDF::GetDF(arg[1], DF))
1249 if (!DDF::AddLabel(DF, arg[2], label))
1252 // Get index and value.
1253 Standard_Integer index = Draw::Atoi(arg[3]);
1256 Handle(TDataStd_ExtStringArray) arr;
1257 if (label.FindAttribute(TDataStd_ExtStringArray::GetID(), arr))
1259 arr->SetValue(index, arg[4]);
1266 //=======================================================================
1267 //function : GetExtStringArray (DF, entry )
1268 //=======================================================================
1269 static Standard_Integer DDataStd_GetExtStringArray (Draw_Interpretor& di,
1270 Standard_Integer nb,
1276 Handle(TDF_Data) DF;
1277 if (!DDF::GetDF(arg[1],DF)) return 1;
1279 if( !DDF::FindLabel(DF, arg[2], label) ) {
1280 di << "No label for entry" << "\n";
1283 Standard_GUID aGuid;
1285 if (Standard_GUID::CheckGUIDFormat(arg[3]))
1286 aGuid = Standard_GUID(arg[3]);
1288 di << "Wrong GUID format" << "\n";
1292 aGuid = TDataStd_ExtStringArray::GetID();
1293 Handle(TDataStd_ExtStringArray) A;
1294 if ( !label.FindAttribute(aGuid, A) ) {
1295 di << "There is no TDataStd_ExtStringArray with the specified GUID at the label" << "\n";
1299 for(Standard_Integer i = A->Lower(); i<=A->Upper(); i++){
1307 di << "DDataStd_GetExtStringArray: Error\n";
1311 //=======================================================================
1312 //function : GetExtStringArrayValue (DF, entry, index)
1313 //=======================================================================
1314 static Standard_Integer DDataStd_GetExtStringArrayValue (Draw_Interpretor& di,
1318 Handle(TDF_Data) DF;
1319 if (!DDF::GetDF(arg[1],DF))
1323 if (!DDF::FindLabel(DF, arg[2], label)) {
1324 di << "No label for entry" << "\n";
1328 Handle(TDataStd_ExtStringArray) A;
1329 if ( !label.FindAttribute(TDataStd_ExtStringArray::GetID(), A) ) {
1330 di << "There is no TDataStd_ExtStringArray under label" << "\n";
1334 Standard_Integer index = Draw::Atoi(arg[3]);
1335 if (index < A->Lower() || index > A->Upper()) {
1336 di << "Index is out of range\n";
1339 const TCollection_ExtendedString& value = A->Value(index);
1346 //=======================================================================
1347 //function : ChangeExtStrArray (DF, entry, indx, val )
1348 //=======================================================================
1349 static Standard_Integer DDataStd_ChangeExtStrArray (Draw_Interpretor& di,
1350 Standard_Integer nb,
1355 Handle(TDF_Data) DF;
1356 if (!DDF::GetDF(arg[1],DF)) return 1;
1358 if( !DDF::FindLabel(DF, arg[2], label) ) {
1359 di << "No label for entry" << "\n";
1363 Handle(TDataStd_ExtStringArray) A;
1364 if ( !label.FindAttribute(TDataStd_ExtStringArray::GetID(), A) ) {
1365 di << "There is no TDataStd_ExtStringArray at label" << "\n";
1368 Standard_Integer indx = Draw::Atoi(arg[3]);
1369 TCollection_ExtendedString val(arg[4]);
1370 Standard_Integer low = A->Lower(), up = A->Upper();
1371 if(low <= indx && indx <= up)
1372 A->SetValue(indx, val);//TColStd_HArray1OfExtendedString
1374 Handle(TColStd_HArray1OfExtendedString) Arr = A->Array();
1375 Handle(TColStd_HArray1OfExtendedString) arr;
1379 arr = new TColStd_HArray1OfExtendedString(low, up);
1380 for(i=low; i<= Arr->Upper(); i++)
1381 arr->SetValue(i, Arr->Value(i));
1382 for(i=Arr->Upper()+1; i<= up; i++) {
1384 arr->SetValue(i, val);
1386 arr->SetValue(i, 0);
1388 } else if(indx < up) {//clip array : indx to be negative
1390 arr = new TColStd_HArray1OfExtendedString(low, up);
1391 for(i=low; i< up; i++)
1392 arr->SetValue(i, Arr->Value(i));
1393 arr->SetValue(up, val);
1395 A->ChangeArray(arr);
1399 di << "DDataStd_ChangeExtStringArray: Error\n";
1404 //=======================================================================
1405 //function : DDataStd_KeepUTF
1406 //purpose : SetUTFName (DF, fatherEntry, fileName)
1407 //=======================================================================
1408 static Standard_Integer DDataStd_KeepUTF (Draw_Interpretor& di,
1409 Standard_Integer nb,
1413 Handle(TDF_Data) DF;
1414 if (!DDF::GetDF(arg[1],DF)) return 1;
1416 DDF::AddLabel(DF, arg[2], L);
1417 Standard_CString aFileName(arg[3]);
1420 std::ifstream anIS (aFileName, std::ios::in | std::ios::binary);
1422 std::ifstream anIS (aFileName);
1425 // Can not open file
1426 Message::SendFail() << "Error: can't open file " << aFileName;
1431 anIS.getline(buf, 1023,'\n');
1432 // 0xEFBBBF - prefix of UTF8
1433 p = &buf[3]; //skip prefix
1434 TCollection_ExtendedString aES1(p, Standard_True);
1435 TDataStd_Name::Set(L.NewChild(), aES1);
1438 while (anIS.good() && !anIS.eof()) {
1439 anIS.getline(buf, 1023,'\n');
1440 TCollection_ExtendedString aES2(buf, Standard_True);
1441 const TDF_Label& aLab = L.NewChild();
1442 TDataStd_Name::Set(aLab, aES2);
1446 di << "SetUTFName : String is not kept in DF\n";
1450 //=======================================================================
1451 //function : DDataStd_GetUTFtoFile
1452 //purpose : GetUTF (DF, fatherEntry, fileName)
1453 // : all strings from sub-labels of the <fatherEntry> concatenated
1454 // : in one, converted to UTF8 and kept in the file
1455 //=======================================================================
1456 static Standard_Integer DDataStd_GetUTFtoFile (Draw_Interpretor& di,
1457 Standard_Integer nb,
1461 Handle(TDF_Data) DF;
1462 if (!DDF::GetDF(arg[1],DF)) return 1;
1464 if (!DDF::FindLabel(DF,arg[2],L)) return 1;
1466 TCollection_ExtendedString aES;
1467 Standard_Boolean aF = Standard_False;
1468 TDF_ChildIterator anIt(L);
1469 for(;anIt.More();anIt.Next()) {
1470 const TDF_Label& aLab = anIt.Value();
1471 if(!aLab.IsNull()) {
1472 Handle(TDataStd_Name) anAtt;
1473 if(aLab.FindAttribute(TDataStd_Name::GetID(), anAtt)) {
1474 if(anAtt->Get().Length()) {
1485 Message::SendFail() << "Data is not found in the Document";
1489 Standard_CString aFileName(arg[3]);
1492 std::ofstream anOS (aFileName, std::ios::in | std::ios::binary | std::ios::ate);
1494 std::ofstream anOS (aFileName, std::ios::ate);
1497 // A problem with the stream
1499 std::cout << "Error: problem with the file stream, rdstate = " <<anOS.rdstate() <<std::endl;
1502 unsigned char prefix[4] = {0xEF,0xBB,0xBF, 0x00};
1503 anOS.write( (char*)&prefix[0], 3);
1504 Standard_Integer n = aES.LengthOfCString();
1505 Standard_PCharacter aCstr = (Standard_PCharacter) Standard::Allocate(n+1);
1506 n = aES.ToUTF8CString(aCstr);
1507 anOS.write( (char*)&aCstr[0], n);
1511 di << "GetUTF : Data is not extracted to the specified file \n";
1515 //=======================================================================
1516 //function : SetByteArray (DF, entry, isDelta, [-g Guid,] From, To, elmt1, elmt2, ... )
1517 //=======================================================================
1518 static Standard_Integer DDataStd_SetByteArray (Draw_Interpretor& di,
1519 Standard_Integer nb,
1523 Handle(TDF_Data) DF;
1524 if (!DDF::GetDF(arg[1],DF)) return 1;
1526 DDF::AddLabel(DF, arg[2], label);
1527 Standard_Boolean isDelta = Draw::Atoi(arg[3]) != 0;
1529 Standard_Boolean isGuid(Standard_False);
1530 Standard_Character c1(arg[4][0]), c2(arg[4][1]);
1531 if(c1 == '-' && c2 == 'g') { //guid
1532 if (!Standard_GUID::CheckGUIDFormat(arg[5])) {
1533 di<<"DDataStd_SetByteArray: The format of GUID is invalid\n";
1536 guid = Standard_GUID (arg[5]);
1537 isGuid = Standard_True;
1539 Standard_Integer j(4);
1541 if((strlen(arg[j]) > MAXLENGTH || strlen(arg[j+1]) > MAXLENGTH) ||
1542 !TCollection_AsciiString (arg[j]).IsIntegerValue() ||
1543 !TCollection_AsciiString (arg[j+1]).IsIntegerValue())
1545 di << "DDataStd_SetByteArray: From, To may be wrong\n";
1548 Standard_Integer From = Draw::Atoi(arg[j]), To = Draw::Atoi( arg[j+1] );
1549 di << "Array of Standard_Byte with bounds from = " << From << " to = " << To << "\n";
1550 Handle(TDataStd_ByteArray) A;
1552 A = TDataStd_ByteArray::Set(label, From, To, isDelta);
1554 A = TDataStd_ByteArray::Set(label, guid, From, To, isDelta);
1556 if ((!isGuid && nb > 6) || (isGuid && nb > 8)) {
1558 for(Standard_Integer i = From; i<=To; ++i) {
1559 Standard_Integer ival = Draw::Atoi(arg[j]);
1560 if(ival < 0 || 255 < ival) {
1561 Message::SendFail() << "Bad value = " << ival;
1564 A->SetValue(i, (Standard_Byte)ival);
1570 di << "DDataStd_SetByteArray: Error\n";
1574 //=======================================================================
1575 //function : SetByteArrayValue (DF, entry, index, value)
1576 //=======================================================================
1577 static Standard_Integer DDataStd_SetByteArrayValue (Draw_Interpretor&,
1582 Handle(TDF_Data) DF;
1583 if (!DDF::GetDF(arg[1], DF))
1588 if (!DDF::AddLabel(DF, arg[2], label))
1591 // Get index and value.
1592 Standard_Integer index = Draw::Atoi(arg[3]);
1593 Standard_Integer value = Draw::Atoi(arg[4]);
1596 if(value < 0 || 255 < value) {
1597 Message::SendFail() << "Bad value = " << value;
1602 Handle(TDataStd_ByteArray) arr;
1603 if (label.FindAttribute(TDataStd_ByteArray::GetID(), arr))
1605 arr->SetValue(index, (Standard_Byte) value);
1612 //=======================================================================
1613 //function : SetBooleanArray (DF, entry, [-g Guid,] From, To, elmt1, elmt2, ... )
1614 //=======================================================================
1615 static Standard_Integer DDataStd_SetBooleanArray (Draw_Interpretor& di,
1616 Standard_Integer nb,
1621 Handle(TDF_Data) DF;
1622 if (!DDF::GetDF(arg[1],DF))
1626 DDF::AddLabel(DF, arg[2], label);
1628 Standard_Boolean isGuid(Standard_False);
1629 Standard_Character c1(arg[3][0]), c2(arg[3][1]);
1630 if(c1 == '-' && c2 == 'g') { //guid
1631 if (!Standard_GUID::CheckGUIDFormat(arg[4])) {
1632 di<<"DDataStd_SetBooleanArray: The format of GUID is invalid\n";
1635 guid = Standard_GUID (arg[4]);
1636 isGuid = Standard_True;
1638 Standard_Integer j(3);
1640 if((strlen(arg[j]) > MAXLENGTH || strlen(arg[j+1]) > MAXLENGTH) ||
1641 !TCollection_AsciiString (arg[j]).IsIntegerValue() ||
1642 !TCollection_AsciiString (arg[j+1]).IsIntegerValue())
1644 di << "DDataStd_SetBooleanArray: From, To may be wrong\n";
1647 Standard_Integer From = Draw::Atoi(arg[j]), To = Draw::Atoi( arg[j+1] );
1648 di << "Array of Standard_Boolean with bounds from = " << From << " to = " << To << "\n";
1649 Handle(TDataStd_BooleanArray) A;
1651 A = TDataStd_BooleanArray::Set(label, From, To);
1653 A = TDataStd_BooleanArray::Set(label, guid, From, To);
1655 if ((!isGuid && nb > 5) || (isGuid && nb > 7)) {
1657 for(Standard_Integer i = From; i<=To; i++)
1659 Standard_Integer ival = Draw::Atoi(arg[j]);
1662 Message::SendFail() << "Bad value (" <<i <<") = " << ival<< ". 0 or 1 is expected.";
1665 A->SetValue(i, ival != 0);
1671 di << "DDataStd_SetBooleanArray: Error\n";
1675 //=======================================================================
1676 //function : SetBooleanArrayValue (DF, entry, index, value)
1677 //=======================================================================
1678 static Standard_Integer DDataStd_SetBooleanArrayValue (Draw_Interpretor& di,
1683 Handle(TDF_Data) DF;
1684 if (!DDF::GetDF(arg[1], DF))
1689 if (!DDF::AddLabel(DF, arg[2], label))
1692 // Get index and value.
1693 Standard_Integer index = Draw::Atoi(arg[3]);
1694 Standard_Integer value = Draw::Atoi(arg[4]);
1697 if (value != 0 && value != 1) {
1698 di << "DDataStd_SetBooleanArrayValue: Error! The value should be either 0 or 1.\n";
1703 Handle(TDataStd_BooleanArray) arr;
1704 if (label.FindAttribute(TDataStd_BooleanArray::GetID(), arr))
1706 arr->SetValue(index, value != 0);
1713 //=======================================================================
1714 //function : DDataStd_SetExtStringList (DF, entry, [-g guid,] elmt1, elmt2, ... )
1715 //=======================================================================
1716 static Standard_Integer DDataStd_SetExtStringList (Draw_Interpretor& di,
1717 Standard_Integer nb,
1722 Handle(TDF_Data) DF;
1723 if (!DDF::GetDF(arg[1],DF))
1727 DDF::AddLabel(DF, arg[2], label);
1729 Standard_Boolean isGuid(Standard_False);
1731 Standard_Character c1(arg[3][0]), c2(arg[3][1]);
1732 if(c1 == '-' && c2 == 'g') { //guid
1733 if (!Standard_GUID::CheckGUIDFormat(arg[4])) {
1734 di<<"DDataStd_SetExtStringList: The format of GUID is invalid\n";
1737 guid = Standard_GUID (arg[4]);
1738 isGuid = Standard_True;
1741 Standard_Integer j(0);
1742 Handle(TDataStd_ExtStringList) A;
1744 A = TDataStd_ExtStringList::Set(label);
1748 A = TDataStd_ExtStringList::Set(label, guid);
1751 for(Standard_Integer i = j; i <= nb - 1; i++)
1753 TCollection_ExtendedString aValue(arg[i]);
1758 di << "DDataStd_SetExtStringList: Error\n";
1762 //=======================================================================
1763 //function : DDataStd_SetReferenceList (DF, entry, [-g guid] elmt1, elmt2, ... )
1764 //=======================================================================
1765 static Standard_Integer DDataStd_SetReferenceList (Draw_Interpretor& di,
1766 Standard_Integer nb,
1771 Handle(TDF_Data) DF;
1772 if (!DDF::GetDF(arg[1],DF))
1776 DDF::AddLabel(DF, arg[2], label);
1778 Standard_Boolean isGuid(Standard_False);
1780 Standard_Character c1(arg[3][0]), c2(arg[3][1]);
1781 if(c1 == '-' && c2 == 'g') { //guid
1782 if (!Standard_GUID::CheckGUIDFormat(arg[4])) {
1783 di<<"DDataStd_SetReferenceList: The format of GUID is invalid\n";
1786 guid = Standard_GUID (arg[4]);
1787 isGuid = Standard_True;
1790 Standard_Integer j(0);
1791 Handle(TDataStd_ReferenceList) A;
1793 A = TDataStd_ReferenceList::Set(label);
1797 A = TDataStd_ReferenceList::Set(label, guid);
1800 for(Standard_Integer i = j; i <= nb - 1; i++)
1802 TDF_Label aValueLabel;
1803 DDF::AddLabel(DF, arg[i], aValueLabel);
1804 if(aValueLabel.IsNull()) continue;
1805 A->Append(aValueLabel);
1809 di << "DDataStd_SetReferenceList: Error\n";
1814 //=======================================================================
1815 //function : SetBooleanList (DF, entry, [-g Guid,] elmt1, elmt2, ... )
1816 //=======================================================================
1817 static Standard_Integer DDataStd_SetBooleanList (Draw_Interpretor& di,
1818 Standard_Integer nb,
1823 Handle(TDF_Data) DF;
1824 if (!DDF::GetDF(arg[1],DF))
1828 DDF::AddLabel(DF, arg[2], label);
1830 Standard_Boolean isGuid(Standard_False);
1832 Standard_Character c1(arg[3][0]), c2(arg[3][1]);
1833 if(c1 == '-' && c2 == 'g') { //guid
1834 if (!Standard_GUID::CheckGUIDFormat(arg[4])) {
1835 di<<"DDataStd_SetBooleanList: The format of GUID is invalid\n";
1838 guid = Standard_GUID (arg[4]);
1839 isGuid = Standard_True;
1842 Standard_Integer j(0);
1843 Handle(TDataStd_BooleanList) A;
1845 A = TDataStd_BooleanList::Set(label);
1849 A = TDataStd_BooleanList::Set(label, guid);
1852 for(Standard_Integer i = j; i <= nb - 1; i++)
1854 Standard_Integer ival = Draw::Atoi(arg[i]);
1857 Message::SendFail() << "Bad value = " << ival<< ". 0 or 1 is expected.";
1860 A->Append (ival != 0);
1864 di << "DDataStd_SetBooleanList: Error\n";
1868 //=======================================================================
1869 //function : SetIntegerList (DF, entry, [-g guid] elmt1, elmt2, ... )
1870 //=======================================================================
1871 static Standard_Integer DDataStd_SetIntegerList (Draw_Interpretor& di,
1872 Standard_Integer nb,
1877 Handle(TDF_Data) DF;
1878 if (!DDF::GetDF(arg[1],DF))
1882 DDF::AddLabel(DF, arg[2], label);
1884 Standard_Boolean isGuid(Standard_False);
1886 Standard_Character c1(arg[3][0]), c2(arg[3][1]);
1887 if(c1 == '-' && c2 == 'g') { //guid
1888 if (!Standard_GUID::CheckGUIDFormat(arg[4])) {
1889 di<<"DDataStd_SetIntegerList: The format of GUID is invalid\n";
1892 guid = Standard_GUID (arg[4]);
1893 isGuid = Standard_True;
1896 Standard_Integer j(0);
1897 Handle(TDataStd_IntegerList) A;
1899 A = TDataStd_IntegerList::Set(label);
1903 A = TDataStd_IntegerList::Set(label, guid);
1906 for(Standard_Integer i = j; i <= nb - 1; i++)
1908 Standard_Integer ival = Draw::Atoi(arg[i]);
1913 di << "DDataStd_SetIntegerList: Error\n";
1917 //=======================================================================
1918 //function : SetRealList (DF, entry, [-g guid,] elmt1, elmt2, ... )
1919 //=======================================================================
1920 static Standard_Integer DDataStd_SetRealList (Draw_Interpretor& di,
1921 Standard_Integer nb,
1926 Handle(TDF_Data) DF;
1927 if (!DDF::GetDF(arg[1],DF))
1931 DDF::AddLabel(DF, arg[2], label);
1933 Standard_Boolean isGuid(Standard_False);
1935 Standard_Character c1(arg[3][0]), c2(arg[3][1]);
1936 if(c1 == '-' && c2 == 'g') { //guid
1937 if (!Standard_GUID::CheckGUIDFormat(arg[4])) {
1938 di<<"DDataStd_SetRealList: The format of GUID is invalid\n";
1941 guid = Standard_GUID (arg[4]);
1942 isGuid = Standard_True;
1945 Standard_Integer j(0);
1946 Handle(TDataStd_RealList) A;
1948 A = TDataStd_RealList::Set(label);
1952 A = TDataStd_RealList::Set(label, guid);
1955 for(Standard_Integer i = j; i <= nb - 1; i++)
1957 Standard_Real fval = Draw::Atof(arg[i]);
1962 di << "DDataStd_SetRealList: Error\n";
1966 //=======================================================================
1967 //function : DDataStd_InsertBeforeExtStringList (DF, entry, index, value )
1968 //=======================================================================
1969 static Standard_Integer DDataStd_InsertBeforeExtStringList (Draw_Interpretor& di,
1970 Standard_Integer nb,
1975 Handle(TDF_Data) DF;
1976 if (!DDF::GetDF(arg[1],DF))
1980 DDF::AddLabel(DF, arg[2], label);
1982 Handle(TDataStd_ExtStringList) A;
1983 if (!label.FindAttribute(TDataStd_ExtStringList::GetID(), A))
1986 Standard_Integer index = Draw::Atoi(arg[3]);
1987 TCollection_ExtendedString value = arg[4];
1989 if (A->InsertBefore(index, value))
1994 di << "DDataStd_InsertBeforeExtStringList: Error\n";
1998 //=======================================================================
1999 //function : DDataStd_InsertAfterExtStringList (DF, entry, index, value )
2000 //=======================================================================
2001 static Standard_Integer DDataStd_InsertAfterExtStringList (Draw_Interpretor& di,
2002 Standard_Integer nb,
2007 Handle(TDF_Data) DF;
2008 if (!DDF::GetDF(arg[1],DF))
2012 DDF::AddLabel(DF, arg[2], label);
2014 Handle(TDataStd_ExtStringList) A;
2015 if (!label.FindAttribute(TDataStd_ExtStringList::GetID(), A))
2018 Standard_Integer index = Draw::Atoi(arg[3]);
2019 TCollection_ExtendedString value = arg[4];
2021 if (A->InsertAfter(index, value))
2026 di << "DDataStd_InsertAfterExtStringList: Error\n";
2030 //=======================================================================
2031 //function : DDataStd_RemoveExtStringList (DF, entry, index )
2032 //=======================================================================
2033 static Standard_Integer DDataStd_RemoveExtStringList (Draw_Interpretor& di,
2034 Standard_Integer nb,
2039 Handle(TDF_Data) DF;
2040 if (!DDF::GetDF(arg[1],DF))
2044 DDF::AddLabel(DF, arg[2], label);
2046 Handle(TDataStd_ExtStringList) A;
2047 if (!label.FindAttribute(TDataStd_ExtStringList::GetID(), A))
2050 Standard_Integer index = Draw::Atoi(arg[3]);
2052 if (A->Remove(index))
2057 di << "DDataStd_RemoveExtStringList: Error\n";
2061 //=======================================================================
2062 //function : DDataStd_InsertBeforeBooleanList (DF, entry, index, value )
2063 //=======================================================================
2064 static Standard_Integer DDataStd_InsertBeforeBooleanList (Draw_Interpretor& di,
2065 Standard_Integer nb,
2070 Handle(TDF_Data) DF;
2071 if (!DDF::GetDF(arg[1],DF))
2075 DDF::AddLabel(DF, arg[2], label);
2077 Handle(TDataStd_BooleanList) A;
2078 if (!label.FindAttribute(TDataStd_BooleanList::GetID(), A))
2081 Standard_Integer index = Draw::Atoi(arg[3]);
2082 Standard_Boolean value = Draw::Atoi(arg[4]) != 0;
2084 if (A->InsertBefore(index, value))
2089 di << "DDataStd_InsertBeforeBooleanList: Error\n";
2093 //=======================================================================
2094 //function : DDataStd_InsertAfterBooleanList (DF, entry, index, value )
2095 //=======================================================================
2096 static Standard_Integer DDataStd_InsertAfterBooleanList (Draw_Interpretor& di,
2097 Standard_Integer nb,
2102 Handle(TDF_Data) DF;
2103 if (!DDF::GetDF(arg[1],DF))
2107 DDF::AddLabel(DF, arg[2], label);
2109 Handle(TDataStd_BooleanList) A;
2110 if (!label.FindAttribute(TDataStd_BooleanList::GetID(), A))
2113 Standard_Integer index = Draw::Atoi(arg[3]);
2114 Standard_Boolean value = Draw::Atoi(arg[4]) != 0;
2116 if (A->InsertAfter(index, value))
2121 di << "DDataStd_InsertAfterBooleanList: Error\n";
2125 //=======================================================================
2126 //function : DDataStd_RemoveBooleanList (DF, entry, index )
2127 //=======================================================================
2128 static Standard_Integer DDataStd_RemoveBooleanList (Draw_Interpretor& di,
2129 Standard_Integer nb,
2134 Handle(TDF_Data) DF;
2135 if (!DDF::GetDF(arg[1],DF))
2139 DDF::AddLabel(DF, arg[2], label);
2141 Handle(TDataStd_BooleanList) A;
2142 if (!label.FindAttribute(TDataStd_BooleanList::GetID(), A))
2145 Standard_Integer index = Draw::Atoi(arg[3]);
2147 if (A->Remove(index))
2152 di << "DDataStd_RemoveBooleanList: Error\n";
2156 //=======================================================================
2157 //function : DDataStd_InsertBeforeIntegerList (DF, entry, index, value )
2158 //=======================================================================
2159 static Standard_Integer DDataStd_InsertBeforeIntegerList (Draw_Interpretor& di,
2160 Standard_Integer nb,
2165 Handle(TDF_Data) DF;
2166 if (!DDF::GetDF(arg[1],DF))
2170 DDF::AddLabel(DF, arg[2], label);
2172 Handle(TDataStd_IntegerList) A;
2173 if (!label.FindAttribute(TDataStd_IntegerList::GetID(), A))
2176 Standard_Integer index = Draw::Atoi(arg[3]);
2177 Standard_Integer value = (Standard_Integer) Draw::Atoi(arg[4]);
2179 if (A->InsertBeforeByIndex(index, value))
2184 di << "DDataStd_InsertBeforeIntegerList: Error\n";
2188 //=======================================================================
2189 //function : DDataStd_InsertAfterIntegerList (DF, entry, index, value )
2190 //=======================================================================
2191 static Standard_Integer DDataStd_InsertAfterIntegerList (Draw_Interpretor& di,
2192 Standard_Integer nb,
2197 Handle(TDF_Data) DF;
2198 if (!DDF::GetDF(arg[1],DF))
2202 DDF::AddLabel(DF, arg[2], label);
2204 Handle(TDataStd_IntegerList) A;
2205 if (!label.FindAttribute(TDataStd_IntegerList::GetID(), A))
2208 Standard_Integer index = Draw::Atoi(arg[3]);
2209 Standard_Integer value = (Standard_Integer) Draw::Atoi(arg[4]);
2211 if (A->InsertAfterByIndex(index, value))
2216 di << "DDataStd_InsertAfterIntegerList: Error\n";
2220 //=======================================================================
2221 //function : DDataStd_RemoveIntegerList (DF, entry, index )
2222 //=======================================================================
2223 static Standard_Integer DDataStd_RemoveIntegerList (Draw_Interpretor& di,
2224 Standard_Integer nb,
2229 Handle(TDF_Data) DF;
2230 if (!DDF::GetDF(arg[1],DF))
2234 DDF::AddLabel(DF, arg[2], label);
2236 Handle(TDataStd_IntegerList) A;
2237 if (!label.FindAttribute(TDataStd_IntegerList::GetID(), A))
2240 Standard_Integer index = Draw::Atoi(arg[3]);
2242 if (A->RemoveByIndex(index))
2247 di << "DDataStd_RemoveIntegerList: Error\n";
2251 //=======================================================================
2252 //function : DDataStd_InsertBeforeRealList (DF, entry, index, value )
2253 //=======================================================================
2254 static Standard_Integer DDataStd_InsertBeforeRealList (Draw_Interpretor& di,
2255 Standard_Integer nb,
2260 Handle(TDF_Data) DF;
2261 if (!DDF::GetDF(arg[1],DF))
2265 DDF::AddLabel(DF, arg[2], label);
2267 Handle(TDataStd_RealList) A;
2268 if (!label.FindAttribute(TDataStd_RealList::GetID(), A))
2271 Standard_Integer index = Draw::Atoi(arg[3]);
2272 Standard_Real value = (Standard_Real) Draw::Atof(arg[4]);
2274 if (A->InsertBeforeByIndex(index, value))
2279 di << "DDataStd_InsertBeforeRealList: Error\n";
2283 //=======================================================================
2284 //function : DDataStd_InsertAfterRealList (DF, entry, index, value )
2285 //=======================================================================
2286 static Standard_Integer DDataStd_InsertAfterRealList (Draw_Interpretor& di,
2287 Standard_Integer nb,
2292 Handle(TDF_Data) DF;
2293 if (!DDF::GetDF(arg[1],DF))
2297 DDF::AddLabel(DF, arg[2], label);
2299 Handle(TDataStd_RealList) A;
2300 if (!label.FindAttribute(TDataStd_RealList::GetID(), A))
2303 Standard_Integer index = Draw::Atoi(arg[3]);
2304 Standard_Real value = (Standard_Real) Draw::Atof(arg[4]);
2306 if (A->InsertAfterByIndex(index, value))
2311 di << "DDataStd_InsertAfterRealList: Error\n";
2315 //=======================================================================
2316 //function : DDataStd_RemoveRealList (DF, entry, index )
2317 //=======================================================================
2318 static Standard_Integer DDataStd_RemoveRealList (Draw_Interpretor& di,
2319 Standard_Integer nb,
2324 Handle(TDF_Data) DF;
2325 if (!DDF::GetDF(arg[1],DF))
2329 DDF::AddLabel(DF, arg[2], label);
2331 Handle(TDataStd_RealList) A;
2332 if (!label.FindAttribute(TDataStd_RealList::GetID(), A))
2335 Standard_Integer index = Draw::Atoi(arg[3]);
2337 if (A->RemoveByIndex(index))
2342 di << "DDataStd_RemoveRealList: Error\n";
2346 //=======================================================================
2347 //function : DDataStd_InsertBeforeReferenceList (DF, entry, index, value )
2348 //=======================================================================
2349 static Standard_Integer DDataStd_InsertBeforeReferenceList (Draw_Interpretor& di,
2350 Standard_Integer nb,
2355 Handle(TDF_Data) DF;
2356 if (!DDF::GetDF(arg[1],DF))
2360 DDF::AddLabel(DF, arg[2], label);
2362 Handle(TDataStd_ReferenceList) A;
2363 if (!label.FindAttribute(TDataStd_ReferenceList::GetID(), A))
2366 Standard_Integer index = Draw::Atoi(arg[3]);
2369 if (!DDF::AddLabel(DF, arg[4], refLabel))
2372 if (A->InsertBefore(index, refLabel))
2377 di << "DDataStd_InsertBeforeReferenceList: Error\n";
2381 //=======================================================================
2382 //function : DDataStd_InsertAfterReferenceList (DF, entry, index, value )
2383 //=======================================================================
2384 static Standard_Integer DDataStd_InsertAfterReferenceList (Draw_Interpretor& di,
2385 Standard_Integer nb,
2390 Handle(TDF_Data) DF;
2391 if (!DDF::GetDF(arg[1],DF))
2395 DDF::AddLabel(DF, arg[2], label);
2397 Handle(TDataStd_ReferenceList) A;
2398 if (!label.FindAttribute(TDataStd_ReferenceList::GetID(), A))
2401 Standard_Integer index = Draw::Atoi(arg[3]);
2404 if (!DDF::AddLabel(DF, arg[4], refLabel))
2407 if (A->InsertAfter(index, refLabel))
2412 di << "DDataStd_InsertAfterReferenceList: Error\n";
2416 //=======================================================================
2417 //function : DDataStd_RemoveReferenceList (DF, entry, index )
2418 //=======================================================================
2419 static Standard_Integer DDataStd_RemoveReferenceList (Draw_Interpretor& di,
2420 Standard_Integer nb,
2425 Handle(TDF_Data) DF;
2426 if (!DDF::GetDF(arg[1],DF))
2430 DDF::AddLabel(DF, arg[2], label);
2432 Handle(TDataStd_ReferenceList) A;
2433 if (!label.FindAttribute(TDataStd_ReferenceList::GetID(), A))
2436 Standard_Integer index = Draw::Atoi(arg[3]);
2438 if (A->Remove(index))
2443 di << "DDataStd_RemoveReferenceList: Error\n";
2447 //=======================================================================
2448 //function : GetByteArray (DF, entry [, guid] )
2449 //=======================================================================
2450 static Standard_Integer DDataStd_GetByteArray (Draw_Interpretor& di,
2451 Standard_Integer nb,
2456 Handle(TDF_Data) DF;
2457 if (!DDF::GetDF(arg[1],DF)) return 1;
2459 if( !DDF::FindLabel(DF, arg[2], label) ) {
2460 di << "No label for entry" << "\n";
2463 Standard_GUID aGuid;
2465 if (Standard_GUID::CheckGUIDFormat(arg[3]))
2466 aGuid = Standard_GUID(arg[3]);
2468 di << "Wrong GUID format" << "\n";
2472 aGuid = TDataStd_ByteArray::GetID();
2473 Handle(TDataStd_ByteArray) A;
2474 if ( !label.FindAttribute(aGuid, A) ) {
2475 di << "There is no TDataStd_ByteArray with the specified GUID at the label" << "\n";
2479 for(Standard_Integer i = A->Lower(); i<=A->Upper(); i++){
2487 di << "DDataStd_GetByteArray: Error\n";
2491 //=======================================================================
2492 //function : GetByteArrayValue (DF, entry, index)
2493 //=======================================================================
2494 static Standard_Integer DDataStd_GetByteArrayValue (Draw_Interpretor& di,
2498 Handle(TDF_Data) DF;
2499 if (!DDF::GetDF(arg[1],DF))
2503 if (!DDF::FindLabel(DF, arg[2], label)) {
2504 di << "No label for entry" << "\n";
2508 Handle(TDataStd_ByteArray) A;
2509 if ( !label.FindAttribute(TDataStd_ByteArray::GetID(), A) ) {
2510 di << "There is no TDataStd_ByteArray under label" << "\n";
2514 Standard_Integer index = Draw::Atoi(arg[3]);
2515 if (index < A->Lower() || index > A->Upper()) {
2516 di << "Index is out of range\n";
2519 di << A->Value(index) << "\n";
2525 //=======================================================================
2526 //function : GetBooleanArray (DF, entry [, guid] )
2527 //=======================================================================
2528 static Standard_Integer DDataStd_GetBooleanArray (Draw_Interpretor& di,
2529 Standard_Integer nb,
2534 Handle(TDF_Data) DF;
2535 if (!DDF::GetDF(arg[1],DF))
2539 if ( !DDF::FindLabel(DF, arg[2], label) )
2541 di << "No label for entry" << "\n";
2544 Standard_GUID aGuid;
2546 if (Standard_GUID::CheckGUIDFormat(arg[3]))
2547 aGuid = Standard_GUID(arg[3]);
2549 di << "Wrong GUID format" << "\n";
2553 aGuid = TDataStd_BooleanArray::GetID();
2555 Handle(TDataStd_BooleanArray) A;
2556 if ( !label.FindAttribute(aGuid, A) )
2558 di << "There is no TDataStd_BooleanArray at label" << "\n";
2562 for (Standard_Integer i = A->Lower(); i<=A->Upper(); i++)
2564 di << (Standard_Integer) A->Value(i);
2571 di << "DDataStd_GetBooleanArray: Error\n";
2575 //=======================================================================
2576 //function : GetBooleanArrayValue (DF, entry, index)
2577 //=======================================================================
2578 static Standard_Integer DDataStd_GetBooleanArrayValue (Draw_Interpretor& di,
2582 Handle(TDF_Data) DF;
2583 if (!DDF::GetDF(arg[1],DF))
2587 if (!DDF::FindLabel(DF, arg[2], label)) {
2588 di << "No label for entry" << "\n";
2592 Handle(TDataStd_BooleanArray) A;
2593 if ( !label.FindAttribute(TDataStd_BooleanArray::GetID(), A) ) {
2594 di << "There is no TDataStd_BooleanArray under label" << "\n";
2598 Standard_Integer index = Draw::Atoi(arg[3]);
2599 if (index < A->Lower() || index > A->Upper()) {
2600 di << "Index is out of range\n";
2603 di << ((A->Value(index) == Standard_True) ? "True" : "False") << "\n";
2609 //=======================================================================
2610 //function : ChangeByteArray (DF, entry, indx, val )
2611 //=======================================================================
2612 static Standard_Integer DDataStd_ChangeByteArray (Draw_Interpretor& di,
2613 Standard_Integer nb,
2618 Handle(TDF_Data) DF;
2619 if (!DDF::GetDF(arg[1],DF)) return 1;
2621 if( !DDF::FindLabel(DF, arg[2], label) ) {
2622 di << "No label for entry" << "\n";
2626 Handle(TDataStd_ByteArray) A;
2627 if ( !label.FindAttribute(TDataStd_ByteArray::GetID(), A) ) {
2628 di << "There is no TDataStd_ByteArray at label" << "\n";
2631 Standard_Integer indx = Draw::Atoi(arg[3]);
2632 Standard_Integer ival = Draw::Atoi(arg[4]);
2633 if (ival > 255 || ival < 0) {
2634 di << "DDataStd_ChangeByteArray: Bad value = " <<ival << "\n";
2637 Standard_Integer low = A->Lower(), up = A->Upper();
2638 if(low <= indx && indx <= up)
2639 A->SetValue(indx, (Standard_Byte)ival);
2641 Handle(TColStd_HArray1OfByte) Arr = A->InternalArray();
2642 Handle(TColStd_HArray1OfByte) arr;
2646 arr = new TColStd_HArray1OfByte(low, up);
2647 for(i=low; i<= Arr->Upper(); i++)
2648 arr->SetValue(i, Arr->Value(i));
2649 for(i=Arr->Upper()+1; i<= up; i++) {
2651 arr->SetValue(i, (Standard_Byte)ival);
2653 arr->SetValue(i, 0);
2655 } else if(indx < up) {//clip array : indx to be negative
2657 arr = new TColStd_HArray1OfByte(low, up);
2658 for(i=low; i< up; i++)
2659 arr->SetValue(i, Arr->Value(i));
2660 arr->SetValue(up, (Standard_Byte)ival);
2662 A->ChangeArray(arr);
2666 di << "DDataStd_ChangeByteArray: Error\n";
2670 //=======================================================================
2671 //function : GetBooleanList (DF, entry [, guid])
2672 //=======================================================================
2673 static Standard_Integer DDataStd_GetBooleanList (Draw_Interpretor& di,
2674 Standard_Integer nb,
2678 Handle(TDF_Data) DF;
2679 if (!DDF::GetDF(arg[1],DF))
2683 if ( !DDF::FindLabel(DF, arg[2], label) )
2685 di << "No label for entry" << "\n";
2688 Standard_GUID aGuid;
2690 if (Standard_GUID::CheckGUIDFormat(arg[3]))
2691 aGuid = Standard_GUID(arg[3]);
2693 di << "Wrong GUID format" << "\n";
2697 aGuid = TDataStd_BooleanList::GetID();
2699 Handle(TDataStd_BooleanList) A;
2700 if ( !label.FindAttribute(aGuid, A) )
2702 di << "There is no TDataStd_BooleanList with the specified Guid at the label" << "\n";
2706 const TDataStd_ListOfByte& bList = A->List();
2707 Standard_Boolean isEmpty = (bList.Extent() > 0) ? Standard_False : Standard_True;
2709 TDataStd_ListIteratorOfListOfByte itr(bList);
2710 for (; itr.More(); itr.Next())
2712 di << (Standard_Integer) itr.Value() << " ";
2716 di << "List is empty\n";
2719 di << "DDataStd_GetBooleanList: Error\n";
2723 //=======================================================================
2724 //function : GetIntegerList (DF, entry [, guid])
2725 //=======================================================================
2726 static Standard_Integer DDataStd_GetIntegerList (Draw_Interpretor& di,
2727 Standard_Integer nb,
2731 Handle(TDF_Data) DF;
2732 if (!DDF::GetDF(arg[1],DF))
2736 if ( !DDF::FindLabel(DF, arg[2], label) )
2738 di << "No label for entry" << "\n";
2741 Standard_GUID aGuid;
2743 if (Standard_GUID::CheckGUIDFormat(arg[3]))
2744 aGuid = Standard_GUID(arg[3]);
2746 di << "Wrong GUID format" << "\n";
2750 aGuid = TDataStd_IntegerList::GetID();
2752 Handle(TDataStd_IntegerList) A;
2753 if ( !label.FindAttribute(aGuid, A) )
2755 di << "There is no TDataStd_IntegerList with the specified GUID at the label" << "\n";
2759 const TColStd_ListOfInteger& iList = A->List();
2760 Standard_Boolean isEmpty = (iList.Extent() > 0) ? Standard_False : Standard_True;
2762 TColStd_ListIteratorOfListOfInteger itr(iList);
2763 for (; itr.More(); itr.Next())
2765 di << itr.Value() << " ";
2769 di << "List is empty\n";
2773 di << "DDataStd_GetIntegerList: Error\n";
2777 //=======================================================================
2778 //function : GetRealList (DF, entry [, guid])
2779 //=======================================================================
2780 static Standard_Integer DDataStd_GetRealList (Draw_Interpretor& di,
2781 Standard_Integer nb,
2785 Handle(TDF_Data) DF;
2786 if (!DDF::GetDF(arg[1],DF))
2790 if ( !DDF::FindLabel(DF, arg[2], label) )
2792 di << "No label for entry" << "\n";
2795 Standard_GUID aGuid;
2797 if (Standard_GUID::CheckGUIDFormat(arg[3]))
2798 aGuid = Standard_GUID(arg[3]);
2800 di << "Wrong GUID format" << "\n";
2804 aGuid = TDataStd_RealList::GetID();
2806 Handle(TDataStd_RealList) A;
2807 if ( !label.FindAttribute(aGuid, A) )
2809 di << "There is no TDataStd_RealList with the specified GUID at the label" << "\n";
2813 const TColStd_ListOfReal& rList = A->List();
2814 Standard_Boolean isEmpty = (rList.Extent() > 0) ? Standard_False : Standard_True;
2816 TColStd_ListIteratorOfListOfReal itr(rList);
2817 for (; itr.More(); itr.Next())
2819 di << itr.Value() << " ";
2823 di << "List is empty\n";
2826 di << "DDataStd_GetRealList: Error\n";
2830 //=======================================================================
2831 //function : DDataStd_GetExtStringList (DF, entry [, guid])
2832 //=======================================================================
2833 static Standard_Integer DDataStd_GetExtStringList (Draw_Interpretor& di,
2834 Standard_Integer nb,
2839 Handle(TDF_Data) DF;
2840 if (!DDF::GetDF(arg[1],DF))
2844 if ( !DDF::FindLabel(DF, arg[2], label) )
2846 di << "No label for entry" << "\n";
2849 Standard_GUID aGuid;
2851 if (Standard_GUID::CheckGUIDFormat(arg[3]))
2852 aGuid = Standard_GUID(arg[3]);
2854 di << "Wrong GUID format" << "\n";
2858 aGuid = TDataStd_ExtStringList::GetID();
2860 Handle(TDataStd_ExtStringList) A;
2861 if ( !label.FindAttribute(aGuid, A) )
2863 di << "There is no TDataStd_ExtStringList at label" << "\n";
2867 const TDataStd_ListOfExtendedString& aList = A->List();
2868 Standard_Boolean isEmpty = (aList.Extent() > 0) ? Standard_False : Standard_True;
2870 TDataStd_ListIteratorOfListOfExtendedString itr(aList);
2871 for (; itr.More(); itr.Next())
2873 const TCollection_ExtendedString& aStr = itr.Value();
2879 di << "List is empty\n";
2883 di << "DDataStd_GetExtStringList: Error\n";
2887 //=======================================================================
2888 //function : DDataStd_GetReferenceList (DF, entry [, guid])
2889 //=======================================================================
2890 static Standard_Integer DDataStd_GetReferenceList (Draw_Interpretor& di,
2891 Standard_Integer nb,
2896 Handle(TDF_Data) DF;
2897 if (!DDF::GetDF(arg[1],DF))
2901 if ( !DDF::FindLabel(DF, arg[2], label) )
2903 di << "No label for entry" << "\n";
2906 Standard_GUID aGuid;
2908 if (Standard_GUID::CheckGUIDFormat(arg[3]))
2909 aGuid = Standard_GUID(arg[3]);
2911 di << "Wrong GUID format" << "\n";
2915 aGuid = TDataStd_ReferenceList::GetID();
2917 Handle(TDataStd_ReferenceList) A;
2918 if ( !label.FindAttribute(aGuid, A) )
2920 di << "There is no TDataStd_ReferenceList [with the specified guid] at the label" << "\n";
2924 const TDF_LabelList& aList = A->List();
2925 Standard_Boolean isEmpty = (aList.Extent() > 0) ? Standard_False : Standard_True;
2927 TDF_ListIteratorOfLabelList itr(aList);
2928 for (; itr.More(); itr.Next())
2930 const TDF_Label& aLabel = itr.Value();
2931 if (!aLabel.IsNull()) {
2932 TCollection_AsciiString entry;
2933 TDF_Tool::Entry(aLabel, entry);
2934 di << entry.ToCString() << " ";
2939 di << "List is empty\n";
2942 di << "DDataStd_GetReferenceList: Error\n";
2946 //=======================================================================
2947 //function : SetIntPackedMap (DF, entry, isDelta, key1, key2, ...
2948 //=======================================================================
2950 static Standard_Integer DDataStd_SetIntPackedMap (Draw_Interpretor& di,
2951 Standard_Integer nb,
2956 Handle(TDF_Data) DF;
2957 if (!DDF::GetDF(arg[1],DF)) return 1;
2959 DDF::AddLabel(DF, arg[2], aLabel);
2960 Standard_Boolean isDelta = Draw::Atoi(arg[3]) != 0;
2961 Standard_Integer aNum = nb - 4;
2962 Handle(TDataStd_IntPackedMap) anAtt;
2963 if(!aLabel.FindAttribute(TDataStd_IntPackedMap::GetID(), anAtt))
2964 anAtt = TDataStd_IntPackedMap::Set(aLabel, isDelta);
2965 if(anAtt.IsNull()) {
2966 di << "IntPackedMap attribute is not found or not set" << "\n";
2969 Standard_Integer j = 4;
2970 TColStd_PackedMapOfInteger aMap;
2971 for(Standard_Integer i = 1; i<=aNum; i++) {
2972 aMap.Add (Draw::Atoi(arg[j]));
2975 const Handle(TColStd_HPackedMapOfInteger)& aHMap = new TColStd_HPackedMapOfInteger(aMap);
2976 anAtt->ChangeMap(aHMap);
2977 std::cout << "Map extent = " << anAtt->Extent()<<std::endl;
2980 di << "DDataStd_SetIntPackedMap : Error\n";
2984 //=======================================================================
2985 //function : GetIntPackedMap (DF, entry )
2986 //=======================================================================
2988 static Standard_Integer DDataStd_GetIntPackedMap (Draw_Interpretor& di,
2989 Standard_Integer nb,
2994 Handle(TDF_Data) DF;
2995 if (!DDF::GetDF(arg[1],DF)) return 1;
2997 DDF::AddLabel(DF, arg[2], aLabel);
2998 Handle(TDataStd_IntPackedMap) anAtt;
2999 if(!aLabel.FindAttribute(TDataStd_IntPackedMap::GetID(), anAtt)) {
3000 di << "IntPackedMap attribute is not found or not set" << "\n";
3003 const TColStd_PackedMapOfInteger& aMap = anAtt->GetMap();
3004 TColStd_MapIteratorOfPackedMapOfInteger itr(aMap);
3005 for (Standard_Integer j = 1; itr.More(); itr.Next(),j++){
3006 Standard_Integer aKey(itr.Key());
3011 di << "DDataStd_GetIntPackedMap : Error\n";
3016 //=======================================================================
3017 //function : ChangeIntPackedMap_Add (DF, entry, Key1, Key2,... )
3018 //=======================================================================
3019 static Standard_Integer DDataStd_ChangeIntPackedMap_Add (Draw_Interpretor& di,
3020 Standard_Integer nb,
3025 Handle(TDF_Data) DF;
3026 if (!DDF::GetDF(arg[1],DF)) return 1;
3028 if( !DDF::FindLabel(DF, arg[2], label) ) {
3029 di << "No label for entry" << "\n";
3033 Handle(TDataStd_IntPackedMap) A;
3034 if ( !label.FindAttribute(TDataStd_IntPackedMap::GetID(), A) ) {
3035 di << "There is no TDataStd_IntPackedMap at label" << "\n";
3039 Standard_Integer i, aNum = nb - 3;
3040 Handle(TColStd_HPackedMapOfInteger) aHMap = A->GetHMap();
3041 Handle(TColStd_HPackedMapOfInteger) ahMap = new TColStd_HPackedMapOfInteger();
3042 if(!aHMap.IsNull()) {
3043 ahMap->ChangeMap().Assign(aHMap->Map());
3044 for(i=1; i<=aNum;i++) {
3045 Standard_Integer val = Draw::Atoi(arg[i+2]);
3046 if(!ahMap->Map().Contains(val))
3047 ahMap->ChangeMap().Add(val);
3050 A->ChangeMap(ahMap);
3054 di << "DDataStd_ChangeIntPackedMap_Add: Error\n";
3059 //=======================================================================
3060 //function : ChangeIntPackedMap_Rem (DF, entry, Key1, Key2,... )
3061 //=======================================================================
3062 static Standard_Integer DDataStd_ChangeIntPackedMap_Rem (Draw_Interpretor& di,
3063 Standard_Integer nb,
3068 Handle(TDF_Data) DF;
3069 if (!DDF::GetDF(arg[1],DF)) return 1;
3071 if( !DDF::FindLabel(DF, arg[2], label) ) {
3072 di << "No label for entry" << "\n";
3076 Handle(TDataStd_IntPackedMap) A;
3077 if ( !label.FindAttribute(TDataStd_IntPackedMap::GetID(), A) ) {
3078 di << "There is no TDataStd_IntPackedMap at label" << "\n";
3082 Standard_Integer i, aNum = nb - 3;
3083 Handle(TColStd_HPackedMapOfInteger) aHMap = A->GetHMap();
3084 Handle(TColStd_HPackedMapOfInteger) ahMap = new TColStd_HPackedMapOfInteger();
3085 if(!aHMap.IsNull()) {
3086 ahMap->ChangeMap().Assign(aHMap->Map());
3087 for(i=1; i<=aNum;i++) {
3088 Standard_Integer val = Draw::Atoi(arg[i+2]);
3089 if(ahMap->Map().Contains(val))
3090 ahMap->ChangeMap().Remove(val);
3093 A->ChangeMap(ahMap);
3097 di << "DDataStd_ChangeIntPackedMap_Rem: Error\n";
3101 //=======================================================================
3102 //function : ChangeIntPackedMap_AddRem (DF, entry, Key1, Key2,... )
3103 // : if Keyi exist in map - remove it, if no - add
3104 //=======================================================================
3105 static Standard_Integer DDataStd_ChangeIntPackedMap_AddRem (Draw_Interpretor& di,
3106 Standard_Integer nb,
3111 Handle(TDF_Data) DF;
3112 if (!DDF::GetDF(arg[1],DF)) return 1;
3114 if( !DDF::FindLabel(DF, arg[2], label) ) {
3115 di << "No label for entry" << "\n";
3119 Handle(TDataStd_IntPackedMap) A;
3120 if ( !label.FindAttribute(TDataStd_IntPackedMap::GetID(), A) ) {
3121 di << "There is no TDataStd_IntPackedMap at label" << "\n";
3125 Standard_Integer i, aNum = nb - 3;
3126 Handle(TColStd_HPackedMapOfInteger) aHMap = A->GetHMap();
3127 Handle(TColStd_HPackedMapOfInteger) ahMap = new TColStd_HPackedMapOfInteger();
3128 if(!aHMap.IsNull()) {
3129 ahMap->ChangeMap().Assign(aHMap->Map());
3130 for(i=1; i<=aNum;i++) {
3131 Standard_Integer val = Draw::Atoi(arg[i+2]);
3132 if(!ahMap->Map().Contains(val))
3133 ahMap->ChangeMap().Add(val);
3135 ahMap->ChangeMap().Remove(val);
3138 A->ChangeMap(ahMap);
3142 di << "DDataStd_ChangeIntPackedMap_AddRem: Error\n";
3146 //=======================================================================
3147 //function : SetIntPHugeMap (DF, entry, isDelta Num)
3148 //=======================================================================
3150 static Standard_Integer DDataStd_SetIntPHugeMap (Draw_Interpretor& di,
3151 Standard_Integer nb,
3156 Handle(TDF_Data) DF;
3157 if (!DDF::GetDF(arg[1],DF)) return 1;
3159 DDF::AddLabel(DF, arg[2], aLabel);
3160 Standard_Boolean isDelta = Draw::Atoi(arg[3]) != 0;
3161 Standard_Integer aNum = Draw::Atoi(arg[4]);
3162 Handle(TDataStd_IntPackedMap) anAtt;
3163 if(!aLabel.FindAttribute(TDataStd_IntPackedMap::GetID(), anAtt))
3164 anAtt = TDataStd_IntPackedMap::Set(aLabel, isDelta);
3165 if(anAtt.IsNull()) {
3166 di << "IntPackedMap attribute is not found or not set" << "\n";
3169 TColStd_PackedMapOfInteger aMap;
3170 for(Standard_Integer i = 1; i<=aNum; i++) {
3173 const Handle(TColStd_HPackedMapOfInteger)& aHMap = new TColStd_HPackedMapOfInteger(aMap);
3174 anAtt->ChangeMap(aHMap);
3175 std::cout << "Map extent = " << anAtt->Extent()<<std::endl;
3178 di << "DDataStd_SetIntPHugeMap : Error\n";
3182 //=======================================================================
3183 //function : SetNDataIntegers (DF, entry , Num
3184 //=======================================================================
3186 static Standard_Integer DDataStd_SetNDataIntegers2 (Draw_Interpretor& di,
3187 Standard_Integer nb,
3192 Handle(TDF_Data) DF;
3193 if (!DDF::GetDF(arg[1],DF)) return 1;
3195 DDF::AddLabel(DF, arg[2], aLabel);
3196 Standard_Integer aNumP = Draw::Atoi(arg[3]), j;
3197 Handle(TDataStd_NamedData) anAtt;
3198 if(!aLabel.FindAttribute(TDataStd_NamedData::GetID(), anAtt))
3199 anAtt = TDataStd_NamedData::Set(aLabel);
3200 if(anAtt.IsNull()) {
3201 di << "NamedData attribute is not found or not set" << "\n";
3205 TCollection_ExtendedString aKey("Key_");
3206 anAtt->LoadDeferredData();
3207 for(Standard_Integer i = 1; i<=aNumP; i++) {
3208 TCollection_ExtendedString key = aKey + i;
3209 Standard_Integer aVal = j+i;
3210 anAtt->SetInteger(key, aVal);
3215 di << "DDataStd_SetNDataIntegers2 : Error\n";
3219 //=======================================================================
3220 //function : SetNDataIntArrays2 (DF, entry , key, NumOfArElem )
3221 //=======================================================================
3223 static Standard_Integer DDataStd_SetNDataIntAr2 (Draw_Interpretor& di,
3224 Standard_Integer nb,
3229 Handle(TDF_Data) DF;
3230 if (!DDF::GetDF(arg[1],DF)) return 1;
3232 DDF::AddLabel(DF, arg[2], aLabel);
3235 TCollection_ExtendedString aKey(arg[3]);
3236 Standard_Integer aNum = Draw::Atoi(arg[4]);
3237 if (aNum <= 0) return 1;
3238 Handle(TDataStd_NamedData) anAtt;
3239 if(!aLabel.FindAttribute(TDataStd_NamedData::GetID(), anAtt))
3240 anAtt = TDataStd_NamedData::Set(aLabel);
3241 if(anAtt.IsNull()) {
3242 Message::SendFail() << "NamedData attribute is not found or not set";
3246 Handle(TColStd_HArray1OfInteger) anArr = new TColStd_HArray1OfInteger(1, aNum);
3247 for(Standard_Integer i = 1; i<=aNum; i++) {
3248 Standard_Integer aVal = j++;
3249 anArr->SetValue(i, aVal);
3252 anAtt->LoadDeferredData();
3253 anAtt->SetArrayOfIntegers(aKey, anArr);
3256 di << "DDataStd_SetNDataIntArrays2 : Error\n";
3261 //=======================================================================
3262 //function : SetAsciiString(DF, entry, String[, guid])
3263 //=======================================================================
3265 static Standard_Integer DDataStd_SetAsciiString (Draw_Interpretor& di,
3266 Standard_Integer nb,
3270 if (nb == 4 || nb == 5) {
3271 Handle(TDF_Data) DF;
3272 if (!DDF::GetDF(arg[1],DF)) return 1;
3274 DDF::AddLabel(DF, arg[2], aLabel);
3275 TCollection_AsciiString aString(arg[3]);
3276 Standard_GUID aGuid (TDataStd_AsciiString::GetID());
3278 if (!Standard_GUID::CheckGUIDFormat(arg[4])) {
3279 di<<"DDataStd_SetAsciiString: The format of GUID is invalid\n";
3282 aGuid = Standard_GUID (arg[4]);
3285 Handle(TDataStd_AsciiString) anAtt = TDataStd_AsciiString::Set(aLabel, aGuid, aString);
3286 if(anAtt.IsNull()) {
3287 di << "AsciiString attribute is not found or not set" << "\n";
3291 std::cout << "String = " << anAtt->Get().ToCString() << " is kept in DF" << std::endl;
3294 di << "DDataStd_SetAsciiString : Error\n";
3298 //=======================================================================
3299 //function : GetAsciiString(DF, entry[, guid] )
3300 //=======================================================================
3302 static Standard_Integer DDataStd_GetAsciiString (Draw_Interpretor& di,
3303 Standard_Integer nb,
3306 if (nb == 3 || nb == 4) {
3307 Handle(TDF_Data) DF;
3308 if (!DDF::GetDF(arg[1],DF)) return 1;
3310 DDF::FindLabel(DF, arg[2], aLabel);
3311 if(aLabel.IsNull()) di << "Label is not found" << "\n";
3312 Standard_GUID aGuid (TDataStd_AsciiString::GetID());
3314 if (!Standard_GUID::CheckGUIDFormat(arg[3])) {
3315 di<<"DDataStd_GetAsciiString: The format of GUID is invalid\n";
3318 aGuid = Standard_GUID(arg[3]);
3320 Handle(TDataStd_AsciiString) anAtt;
3321 if( !aLabel.FindAttribute(aGuid, anAtt) ) {
3322 Message::SendFail() << "AsciiString attribute is not found or not set";
3327 std::cout << "String = " << anAtt->Get().ToCString() << std::endl;
3329 di << anAtt->Get().ToCString();
3332 di << "DDataStd_GetAsciiString : Error\n";
3336 //=======================================================================
3337 //function : SetNDataIntegers (DF, entry , Num, key1, val1, ...
3338 //=======================================================================
3340 static Standard_Integer DDataStd_SetNDataIntegers (Draw_Interpretor& di,
3341 Standard_Integer nb,
3346 Handle(TDF_Data) DF;
3347 if (!DDF::GetDF(arg[1],DF)) return 1;
3349 DDF::AddLabel(DF, arg[2], aLabel);
3351 // TCollection_ExtendedString aString("123456789 0_abcde");
3352 // Standard_Integer aPos = aString.Search(" ");
3353 // std::cout << "From Start = " <<aPos<<std::endl;
3354 // aPos = aString.SearchFromEnd(" ");
3355 // std::cout << "From Start = " <<aPos<<std::endl;
3356 // TCollection_ExtendedString aValue = aString.Split(aPos);
3357 // std::cout << "Value = |"<<aValue<<std::endl;
3358 // std::cout << "aKey = " << aString << "|"<<std::endl;
3360 Standard_Integer aNumP = Draw::Atoi(arg[3]), j;
3361 Handle(TDataStd_NamedData) anAtt;
3362 if(!aLabel.FindAttribute(TDataStd_NamedData::GetID(), anAtt))
3363 anAtt = TDataStd_NamedData::Set(aLabel);
3364 if(anAtt.IsNull()) {
3365 di << "NamedData attribute is not found or not set" << "\n";
3369 anAtt->LoadDeferredData();
3370 for(Standard_Integer i = 1; i<=aNumP; i++) {
3371 TCollection_ExtendedString aKey(arg[j]);
3372 Standard_Integer aVal = Draw::Atoi(arg[j+1]);
3373 anAtt->SetInteger(aKey, aVal);
3378 di << "DDataStd_SetNDataIntegers : Error\n";
3383 //=======================================================================
3384 //function : GetNDIntegers(DF, entry )
3385 //=======================================================================
3386 static Standard_Integer DDataStd_GetNDIntegers (Draw_Interpretor& di,
3387 Standard_Integer nb,
3392 Handle(TDF_Data) DF;
3393 if (!DDF::GetDF(arg[1],DF)) return 1;
3395 if(!DDF::FindLabel(DF, arg[2], aLabel)) return 1;
3398 Handle(TDataStd_NamedData) anAtt;
3399 if(!aLabel.FindAttribute(TDataStd_NamedData::GetID(), anAtt))
3401 Message::SendFail() << "NamedData attribute is not found or not set";
3405 std::cout <<std::endl;
3406 std::cout <<"NamedData attribute at Label = " << arg[2] <<std::endl;
3407 anAtt->LoadDeferredData();
3408 const TColStd_DataMapOfStringInteger& aMap = anAtt->GetIntegersContainer();
3409 TColStd_DataMapIteratorOfDataMapOfStringInteger itr(aMap);
3410 for (; itr.More(); itr.Next()){
3411 TCollection_ExtendedString aKey(itr.Key());
3412 Standard_Integer aValue = itr.Value();
3413 di << "Key = " << aKey << " Value = " << aValue << "\n";
3418 di << "DDataStd_GetNDIntegers : Error\n";
3422 //=======================================================================
3423 //function : GetNDInteger(DF, entry, key [drawname])
3424 //=======================================================================
3425 static Standard_Integer DDataStd_GetNDInteger (Draw_Interpretor& di,
3426 Standard_Integer nb,
3431 Handle(TDF_Data) DF;
3432 if (!DDF::GetDF(arg[1],DF)) return 1;
3434 if(!DDF::FindLabel(DF, arg[2], aLabel)) return 1;
3437 Handle(TDataStd_NamedData) anAtt;
3438 if(!aLabel.FindAttribute(TDataStd_NamedData::GetID(), anAtt))
3440 Message::SendFail() << "NamedData attribute is not found or not set";
3444 std::cout <<std::endl;
3445 std::cout <<"NamedData attribute at Label = " << arg[2] <<std::endl;
3446 anAtt->LoadDeferredData();
3447 if(!anAtt->HasInteger(arg[3])) {
3448 std::cout << "There is no data specified by Key = "<< arg[3] << std::endl;
3451 std::cout << "Key = " << arg[3] << " Value = " <<anAtt->GetInteger(arg[3])<<std::endl;
3453 Draw::Set(arg[4], anAtt->GetInteger(arg[3]));
3457 di << "DDataStd_SetNDataIntegers : Error\n";
3461 //========================== REALS ======================================
3462 //=======================================================================
3463 //function : SetNDataReals (DF, entry , Num, key1, val1, ...
3464 //=======================================================================
3466 static Standard_Integer DDataStd_SetNDataReals (Draw_Interpretor& di,
3467 Standard_Integer nb,
3472 Handle(TDF_Data) DF;
3473 if (!DDF::GetDF(arg[1],DF)) return 1;
3475 DDF::AddLabel(DF, arg[2], aLabel);
3477 Standard_Integer aNumP = Draw::Atoi(arg[3]), j;
3478 Handle(TDataStd_NamedData) anAtt;
3479 if(!aLabel.FindAttribute(TDataStd_NamedData::GetID(), anAtt))
3480 anAtt = TDataStd_NamedData::Set(aLabel);
3483 Message::SendFail() << "NamedData attribute is not found or not set";
3488 anAtt->LoadDeferredData();
3489 for(Standard_Integer i = 1; i<=aNumP; i++) {
3490 TCollection_ExtendedString aKey(arg[j]);
3491 Standard_Real aVal = Draw::Atof(arg[j+1]);
3492 anAtt->SetReal(aKey, aVal);
3497 di << "DDataStd_SetNDataReals : Error\n";
3501 //=======================================================================
3502 //function : GetNDReals(DF, entry )
3503 //=======================================================================
3504 static Standard_Integer DDataStd_GetNDReals (Draw_Interpretor& di,
3505 Standard_Integer nb,
3510 Handle(TDF_Data) DF;
3511 if (!DDF::GetDF(arg[1],DF)) return 1;
3513 if(!DDF::FindLabel(DF, arg[2], aLabel)) return 1;
3515 std::cout <<std::endl;
3516 std::cout <<"NamedData attribute at Label = " << arg[2] <<std::endl;
3517 Handle(TDataStd_NamedData) anAtt;
3518 if(!aLabel.FindAttribute(TDataStd_NamedData::GetID(), anAtt))
3520 Message::SendFail() << "NamedData attribute is not found or not set";
3524 anAtt->LoadDeferredData();
3525 const TDataStd_DataMapOfStringReal& aMap = anAtt->GetRealsContainer();
3526 TDataStd_DataMapIteratorOfDataMapOfStringReal itr(aMap);
3527 for (; itr.More(); itr.Next()){
3528 TCollection_ExtendedString aKey(itr.Key());
3529 Standard_Real aValue = itr.Value();
3530 di << "Key = " << aKey << " Value = " << aValue << "\n";
3534 di << "DDataStd_GetNDReals : Error\n";
3538 //=======================================================================
3539 //function : GetNDReal(DF, entry, key [drawname])
3540 //=======================================================================
3541 static Standard_Integer DDataStd_GetNDReal (Draw_Interpretor& di,
3542 Standard_Integer nb,
3547 Handle(TDF_Data) DF;
3548 if (!DDF::GetDF(arg[1],DF)) return 1;
3550 if(!DDF::FindLabel(DF, arg[2], aLabel)) return 1;
3553 Handle(TDataStd_NamedData) anAtt;
3554 if(!aLabel.FindAttribute(TDataStd_NamedData::GetID(), anAtt))
3556 Message::SendFail() << "NamedData attribute is not found or not set";
3560 std::cout <<std::endl;
3561 std::cout <<"NamedData attribute at Label = " << arg[2] <<std::endl;
3562 anAtt->LoadDeferredData();
3563 if(!anAtt->HasReal(arg[3])) {
3564 Message::SendFail() << "There is no data specified by Key = " << arg[3];
3567 std::cout << "Key = " << arg[3] << " Value = " <<anAtt->GetReal(arg[3])<<std::endl;
3569 Draw::Set(arg[4], anAtt->GetReal(arg[3]));
3573 di << "DDataStd_GetNDReal : Error\n";
3577 //======================= Strings =======================================
3578 //=======================================================================
3579 //function : SetNDataStrings (DF, entry , Num, key1, val1, ...
3580 //=======================================================================
3582 static Standard_Integer DDataStd_SetNDataStrings (Draw_Interpretor& di,
3583 Standard_Integer nb,
3588 Handle(TDF_Data) DF;
3589 if (!DDF::GetDF(arg[1],DF)) return 1;
3591 DDF::AddLabel(DF, arg[2], aLabel);
3593 Standard_Integer aNumP = Draw::Atoi(arg[3]), j;
3594 Handle(TDataStd_NamedData) anAtt;
3595 if(!aLabel.FindAttribute(TDataStd_NamedData::GetID(), anAtt))
3596 anAtt = TDataStd_NamedData::Set(aLabel);
3597 if(anAtt.IsNull()) {
3598 di << "NamedData attribute is not found or not set" << "\n";
3602 anAtt->LoadDeferredData();
3603 for(Standard_Integer i = 1; i<=aNumP; i++) {
3604 TCollection_ExtendedString aKey(arg[j]);
3605 TCollection_ExtendedString aVal(arg[j+1]);
3606 anAtt->SetString(aKey, aVal);
3611 di << "DDataStd_SetNDataStrings : Error\n";
3615 //=======================================================================
3616 //function : GetNDStrings(DF, entry )
3617 //=======================================================================
3620 typedef std::pair<TCollection_ExtendedString, TCollection_ExtendedString>
3621 DDataStd_GetNDStrings_Property;
3624 const DDataStd_GetNDStrings_Property& theProperty1,
3625 const DDataStd_GetNDStrings_Property& theProperty2)
3627 return theProperty1.first.IsLess(theProperty2.first);
3631 static Standard_Integer DDataStd_GetNDStrings (Draw_Interpretor& di,
3632 Standard_Integer nb,
3637 Handle(TDF_Data) DF;
3638 if (!DDF::GetDF(arg[1],DF)) return 1;
3640 if(!DDF::FindLabel(DF, arg[2], aLabel)) return 1;
3643 Handle(TDataStd_NamedData) anAtt;
3644 if(!aLabel.FindAttribute(TDataStd_NamedData::GetID(), anAtt))
3646 Message::SendFail() << "NamedData attribute is not found or not set";
3650 std::cout <<std::endl;
3651 std::cout <<"NamedData attribute at Label = " << arg[2] <<std::endl;
3652 anAtt->LoadDeferredData();
3653 const TDataStd_DataMapOfStringString& aMap = anAtt->GetStringsContainer();
3655 std::vector<DDataStd_GetNDStrings_Property> aProperties;
3656 for (TDataStd_DataMapIteratorOfDataMapOfStringString aIt (aMap); aIt.More(); aIt.Next())
3658 aProperties.push_back(DDataStd_GetNDStrings_Property (aIt.Key(), aIt.Value()));
3660 std::sort (aProperties.begin(), aProperties.end(), isLess);
3662 for (std::vector<DDataStd_GetNDStrings_Property>::size_type aI = 0; aI < aProperties.size(); ++aI)
3664 di << "Key = " << aProperties[aI].first << " Value = " << aProperties[aI].second << "\n";
3669 di << "DDataStd_GetNDStrings : Error\n";
3673 //=======================================================================
3674 //function : GetNDString(DF, entry, key [drawname])
3675 //=======================================================================
3676 static Standard_Integer DDataStd_GetNDString (Draw_Interpretor& di,
3677 Standard_Integer nb,
3682 Handle(TDF_Data) DF;
3683 if (!DDF::GetDF(arg[1],DF)) return 1;
3685 if(!DDF::FindLabel(DF, arg[2], aLabel)) return 1;
3688 Handle(TDataStd_NamedData) anAtt;
3689 if(!aLabel.FindAttribute(TDataStd_NamedData::GetID(), anAtt)) {
3690 di << "NamedData attribute is not found or not set" << "\n";
3693 std::cout <<std::endl;
3694 std::cout <<"NamedData attribute at Label = " << arg[2] <<std::endl;
3695 anAtt->LoadDeferredData();
3696 if (!anAtt->HasString(arg[3]))
3698 Message::SendFail() << "There is no data specified by Key = " << arg[3];
3703 TCollection_AsciiString aValue (anAtt->GetString(arg[3]));
3704 std::cout << "Key = " << arg[3] << " Value = " << aValue.ToCString() << std::endl;
3706 Draw::Set(arg[4], aValue.ToCString());
3710 di << "DDataStd_GetNDString : Error\n";
3714 //=========================== Bytes =====================================
3715 //=======================================================================
3716 //function : SetNDataBytes (DF, entry , Num, key1, val1, ...
3717 //=======================================================================
3719 static Standard_Integer DDataStd_SetNDataBytes (Draw_Interpretor& di,
3720 Standard_Integer nb,
3725 Handle(TDF_Data) DF;
3726 if (!DDF::GetDF(arg[1],DF)) return 1;
3728 DDF::AddLabel(DF, arg[2], aLabel);
3730 Standard_Integer aNumP = Draw::Atoi(arg[3]), j;
3731 Handle(TDataStd_NamedData) anAtt;
3732 if(!aLabel.FindAttribute(TDataStd_NamedData::GetID(), anAtt))
3733 anAtt = TDataStd_NamedData::Set(aLabel);
3736 Message::SendFail() << "NamedData attribute is not found or not set";
3741 anAtt->LoadDeferredData();
3742 for(Standard_Integer i = 1; i<=aNumP; i++) {
3743 TCollection_ExtendedString aKey(arg[j]);
3744 Standard_Byte aVal = (Standard_Byte)Draw::Atoi(arg[j+1]);
3745 anAtt->SetByte(aKey, aVal);
3750 di << "DDataStd_SetNDataBytes : Error\n";
3754 //=======================================================================
3755 //function : GetNDBytes(DF, entry )
3756 //=======================================================================
3757 static Standard_Integer DDataStd_GetNDBytes (Draw_Interpretor& di,
3758 Standard_Integer nb,
3763 Handle(TDF_Data) DF;
3764 if (!DDF::GetDF(arg[1],DF)) return 1;
3766 if(!DDF::FindLabel(DF, arg[2], aLabel)) return 1;
3769 Handle(TDataStd_NamedData) anAtt;
3770 if (!aLabel.FindAttribute(TDataStd_NamedData::GetID(), anAtt))
3772 Message::SendFail() << "NamedData attribute is not found or not set";
3776 std::cout <<std::endl;
3777 std::cout <<"NamedData attribute at Label = " << arg[2] <<std::endl;
3778 anAtt->LoadDeferredData();
3779 const TDataStd_DataMapOfStringByte& aMap = anAtt->GetBytesContainer();
3780 TDataStd_DataMapIteratorOfDataMapOfStringByte itr(aMap);
3781 for (; itr.More(); itr.Next())
3783 TCollection_ExtendedString aKey(itr.Key());
3784 Standard_Byte aValue = itr.Value();
3785 std::cout << "Key = " << aKey << " Value = " <<aValue<<std::endl;
3789 di << "DDataStd_GetNDBytes : Error\n";
3793 //=======================================================================
3794 //function : GetNDByte(DF, entry, key [drawname])
3795 //=======================================================================
3796 static Standard_Integer DDataStd_GetNDByte (Draw_Interpretor& di,
3797 Standard_Integer nb,
3802 Handle(TDF_Data) DF;
3803 if (!DDF::GetDF(arg[1],DF)) return 1;
3805 if(!DDF::FindLabel(DF, arg[2], aLabel)) return 1;
3808 Handle(TDataStd_NamedData) anAtt;
3809 if (!aLabel.FindAttribute(TDataStd_NamedData::GetID(), anAtt))
3811 Message::SendFail() << "NamedData attribute is not found or not set";
3815 std::cout <<std::endl;
3816 std::cout <<"NamedData attribute at Label = " << arg[2] <<std::endl;
3817 anAtt->LoadDeferredData();
3818 if (!anAtt->HasByte(arg[3]))
3820 Message::SendFail() << "There is no data specified by Key = " << arg[3];
3825 std::cout << "Key = " << arg[3] << " Value = " <<anAtt->GetByte(arg[3])<< std::endl;
3827 Draw::Set(arg[4], anAtt->GetByte(arg[3]));
3831 di << "DDataStd_GetNDByte : Error\n";
3834 //======================== IntArrays ====================================
3835 //=======================================================================
3836 //function : SetNDataIntArrays (DF, entry , key, NumOfArElem, val1, val2,... )
3837 //=======================================================================
3839 static Standard_Integer DDataStd_SetNDataIntAr (Draw_Interpretor& di,
3840 Standard_Integer nb,
3845 Handle(TDF_Data) DF;
3846 if (!DDF::GetDF(arg[1],DF)) return 1;
3848 DDF::AddLabel(DF, arg[2], aLabel);
3851 TCollection_ExtendedString aKey(arg[3]);
3852 Standard_Integer aNum = Draw::Atoi(arg[4]);
3853 if (aNum <= 0) return 1;
3854 Handle(TDataStd_NamedData) anAtt;
3855 if(!aLabel.FindAttribute(TDataStd_NamedData::GetID(), anAtt))
3856 anAtt = TDataStd_NamedData::Set(aLabel);
3859 Message::SendFail() << "NamedData attribute is not found or not set";
3864 Handle(TColStd_HArray1OfInteger) anArr = new TColStd_HArray1OfInteger(1, aNum);
3865 for(Standard_Integer i = 1; i<=aNum; i++) {
3866 Standard_Integer aVal = Draw::Atoi(arg[j]);
3867 anArr->SetValue(i, aVal);
3870 anAtt->LoadDeferredData();
3871 anAtt->SetArrayOfIntegers(aKey, anArr);
3874 di << "DDataStd_SetNDataIntArrays : Error\n";
3879 //=======================================================================
3880 //function : GetNDIntArrays(DF, entry )
3881 //=======================================================================
3882 static Standard_Integer DDataStd_GetNDIntArrays (Draw_Interpretor& di,
3883 Standard_Integer nb,
3888 Handle(TDF_Data) DF;
3889 if (!DDF::GetDF(arg[1],DF)) return 1;
3891 if(!DDF::FindLabel(DF, arg[2], aLabel)) return 1;
3894 Handle(TDataStd_NamedData) anAtt;
3895 if(!aLabel.FindAttribute(TDataStd_NamedData::GetID(), anAtt))
3897 Message::SendFail() << "NamedData attribute is not found or not set";
3901 std::cout <<std::endl;
3902 std::cout <<"NamedData attribute at Label = " << arg[2] <<std::endl;
3903 anAtt->LoadDeferredData();
3904 const TDataStd_DataMapOfStringHArray1OfInteger& aMap = anAtt->GetArraysOfIntegersContainer();
3905 TDataStd_DataMapIteratorOfDataMapOfStringHArray1OfInteger itr(aMap);
3906 for (; itr.More(); itr.Next()){
3907 TCollection_ExtendedString aKey(itr.Key());
3908 std::cout << "Key = " << aKey<< std::endl;
3909 Handle(TColStd_HArray1OfInteger) anArrValue = itr.Value();
3910 if(!anArrValue.IsNull()) {
3911 Standard_Integer lower = anArrValue->Lower();
3912 Standard_Integer upper = anArrValue->Upper();
3913 for(Standard_Integer i = lower; i<=upper;i++) {
3914 Standard_Integer aValue = anArrValue->Value(i);
3915 std::cout << "\tValue("<<i<<") = " <<aValue<<std::endl;
3918 std::cout << "\tthe specified array is Null "<<std::endl;
3922 di << "DDataStd_GetNDIntArrays : Error\n";
3926 //=======================================================================
3927 //function : GetNDIntArray(DF, entry, key )
3928 //=======================================================================
3929 static Standard_Integer DDataStd_GetNDIntArray (Draw_Interpretor& di,
3930 Standard_Integer nb,
3935 Handle(TDF_Data) DF;
3936 if (!DDF::GetDF(arg[1],DF)) return 1;
3938 if(!DDF::FindLabel(DF, arg[2], aLabel)) return 1;
3941 Handle(TDataStd_NamedData) anAtt;
3942 if (!aLabel.FindAttribute (TDataStd_NamedData::GetID(), anAtt))
3944 Message::SendFail() << "NamedData attribute is not found or not set";
3948 std::cout <<std::endl;
3949 std::cout <<"NamedData attribute at Label = " << arg[2] <<std::endl;
3950 anAtt->LoadDeferredData();
3951 if (!anAtt->HasArrayOfIntegers(arg[3]))
3953 Message::SendFail() << "There is no data specified by Key = " << arg[3];
3958 std::cout << "Key = " << arg[3] <<std::endl;
3960 Handle(TColStd_HArray1OfInteger) anArrValue = anAtt->GetArrayOfIntegers(arg[3]);
3961 if(!anArrValue.IsNull()) {
3962 Standard_Integer lower = anArrValue->Lower();
3963 Standard_Integer upper = anArrValue->Upper();
3964 for(Standard_Integer i = lower; i<=upper;i++) {
3965 Standard_Integer aValue = anArrValue->Value(i);
3966 std::cout << "\tValue("<<i<<") = " <<aValue<<std::endl;
3969 std::cout << "\tthe specified array is Null or not found"<<std::endl;
3973 di << "DDataStd_SetNDataIntArray : Error\n";
3976 //============================= RealArrays ==============================
3977 //=======================================================================
3978 //function : SetNDataRealArrays (DF entry key NumOfArElem val1 val2... )
3979 //=======================================================================
3981 static Standard_Integer DDataStd_SetNDataRealAr (Draw_Interpretor& di,
3982 Standard_Integer nb,
3987 Handle(TDF_Data) DF;
3988 if (!DDF::GetDF(arg[1],DF)) return 1;
3990 DDF::AddLabel(DF, arg[2], aLabel);
3993 TCollection_ExtendedString aKey(arg[3]);
3994 Standard_Integer aNum = Draw::Atoi(arg[4]);
3995 if (aNum <= 0) return 1;
3996 Handle(TDataStd_NamedData) anAtt;
3997 if(!aLabel.FindAttribute(TDataStd_NamedData::GetID(), anAtt))
3998 anAtt = TDataStd_NamedData::Set(aLabel);
4001 Message::SendFail() << "NamedData attribute is not found or not set";
4006 Handle(TColStd_HArray1OfReal) anArr = new TColStd_HArray1OfReal(1, aNum);
4007 for(Standard_Integer i = 1; i<=aNum; i++) {
4008 Standard_Real aVal = Draw::Atof(arg[j]);
4009 anArr->SetValue(i, aVal);
4012 anAtt->LoadDeferredData();
4013 anAtt->SetArrayOfReals(aKey, anArr);
4016 di << "DDataStd_SetNDataRealArrays : Error\n";
4021 //=======================================================================
4022 //function : GetNDRealArrays(DF, entry )
4023 //=======================================================================
4024 static Standard_Integer DDataStd_GetNDRealArrays (Draw_Interpretor& di,
4025 Standard_Integer nb,
4030 Handle(TDF_Data) DF;
4031 if (!DDF::GetDF(arg[1],DF)) return 1;
4033 if(!DDF::FindLabel(DF, arg[2], aLabel)) return 1;
4036 Handle(TDataStd_NamedData) anAtt;
4037 if (!aLabel.FindAttribute(TDataStd_NamedData::GetID(), anAtt))
4039 Message::SendFail() << "NamedData attribute is not found or not set";
4043 std::cout <<std::endl;
4044 std::cout <<"NamedData attribute at Label = " << arg[2] <<std::endl;
4045 anAtt->LoadDeferredData();
4046 const TDataStd_DataMapOfStringHArray1OfReal& aMap = anAtt->GetArraysOfRealsContainer();
4047 TDataStd_DataMapIteratorOfDataMapOfStringHArray1OfReal itr(aMap);
4048 for (; itr.More(); itr.Next()){
4049 TCollection_ExtendedString aKey(itr.Key());
4050 std::cout << "Key = " << aKey << std::endl;
4051 Handle(TColStd_HArray1OfReal) anArrValue = itr.Value();
4052 if(!anArrValue.IsNull()) {
4053 Standard_Integer lower = anArrValue->Lower();
4054 Standard_Integer upper = anArrValue->Upper();
4055 for(Standard_Integer i = lower; i<=upper;i++) {
4056 Standard_Real aValue = anArrValue->Value(i);
4057 std::cout << "\tValue("<<i<<") = " <<aValue<<std::endl;
4060 std::cout << "\tthe specified array is Null "<<std::endl;
4064 di << "DDataStd_GetNDRealArrays : Error\n";
4068 //=======================================================================
4069 //function : GetNDRealArray(DF, entry, key )
4070 //=======================================================================
4071 static Standard_Integer DDataStd_GetNDRealArray (Draw_Interpretor& di,
4072 Standard_Integer nb,
4077 Handle(TDF_Data) DF;
4078 if (!DDF::GetDF(arg[1],DF)) return 1;
4080 if(!DDF::FindLabel(DF, arg[2], aLabel)) return 1;
4083 Handle(TDataStd_NamedData) anAtt;
4084 if(!aLabel.FindAttribute(TDataStd_NamedData::GetID(), anAtt)) {
4085 di << "NamedData attribute is not found or not set" << "\n";
4088 std::cout <<std::endl;
4089 std::cout <<"NamedData attribute at Label = " << arg[2] <<std::endl;
4090 anAtt->LoadDeferredData();
4091 if(!anAtt->HasArrayOfReals(arg[3])) {
4092 std::cout << "There is no data specified by Key = "<< arg[3] << std::endl;
4095 std::cout << "Key = " << arg[3] <<std::endl;
4097 Handle(TColStd_HArray1OfReal) anArrValue = anAtt->GetArrayOfReals(arg[3]);
4098 if(!anArrValue.IsNull()) {
4099 Standard_Integer lower = anArrValue->Lower();
4100 Standard_Integer upper = anArrValue->Upper();
4101 for(Standard_Integer i = lower; i<=upper;i++) {
4102 Standard_Real aValue = anArrValue->Value(i);
4103 std::cout << "\tValue("<<i<<") = " <<aValue<<std::endl;
4106 std::cout << "\tthe specified array is Null or not found"<<std::endl;
4110 di << "DDataStd_SetNDataRealArray : Error\n";
4114 //=======================================================================
4115 //function : SetRefArray (DF, entry , [-g Guid,] From, To, elmt1, elmt2, ...
4116 //=======================================================================
4117 static Standard_Integer DDataStd_SetRefArray (Draw_Interpretor& di,
4118 Standard_Integer nb,
4123 Handle(TDF_Data) DF;
4124 if (!DDF::GetDF(arg[1],DF)) return 1;
4126 DDF::AddLabel(DF, arg[2], label);
4128 Standard_Boolean isGuid(Standard_False);
4129 Standard_Character c1(arg[3][0]), c2(arg[3][1]);
4130 if(c1 == '-' && c2 == 'g') { //guid
4131 if (!Standard_GUID::CheckGUIDFormat(arg[4])) {
4132 di<<"DDataStd_SetRefArray: The format of GUID is invalid\n";
4135 guid = Standard_GUID (arg[4]);
4136 isGuid = Standard_True;
4138 Standard_Integer j(3);
4141 if((strlen(arg[j]) > MAXLENGTH || strlen(arg[j+1]) > MAXLENGTH) ||
4142 !TCollection_AsciiString (arg[j]).IsIntegerValue() ||
4143 !TCollection_AsciiString (arg[j+1]).IsIntegerValue())
4145 di << "DDataStd_SetRefArray: From, To may be wrong\n";
4148 Standard_Integer From = Draw::Atoi(arg[j]), To = Draw::Atoi( arg[j+1] );
4149 di << "RefArray with bounds from = " << From << " to = " << To << "\n";
4151 Handle(TDataStd_ReferenceArray) A;
4153 A = TDataStd_ReferenceArray::Set(label, From, To);
4155 A = TDataStd_ReferenceArray::Set(label, guid, From, To);
4157 if ((!isGuid && nb > 5) || (isGuid && nb > 7)) {
4159 for(Standard_Integer i = From; i<=To; i++) {
4160 TDF_Label aRefLabel;
4161 DDF::AddLabel(DF, arg[j], aRefLabel);
4162 A->SetValue(i, aRefLabel);
4168 di << "DDataStd_SetRefArray: Error\n";
4171 //=======================================================================
4172 //function : SetRefArrayValue (DF, entry, index, value)
4173 //=======================================================================
4174 static Standard_Integer DDataStd_SetRefArrayValue (Draw_Interpretor&,
4179 Handle(TDF_Data) DF;
4180 if (!DDF::GetDF(arg[1], DF))
4185 if (!DDF::AddLabel(DF, arg[2], label))
4188 // Get index and value.
4189 Standard_Integer index = Draw::Atoi(arg[3]);
4192 Handle(TDataStd_ReferenceArray) arr;
4193 if (label.FindAttribute(TDataStd_ReferenceArray::GetID(), arr))
4195 TDF_Label aRefLabel;
4196 DDF::AddLabel(DF, arg[4], aRefLabel);
4197 arr->SetValue(index, aRefLabel);
4204 //=======================================================================
4205 //function : GetRefArray (DF, entry [, guid])
4206 //=======================================================================
4207 static Standard_Integer DDataStd_GetRefArray (Draw_Interpretor& di,
4208 Standard_Integer nb,
4213 Handle(TDF_Data) DF;
4214 if (!DDF::GetDF(arg[1],DF)) return 1;
4216 if( !DDF::FindLabel(DF, arg[2], label) ) {
4217 di << "No label for entry" << "\n";
4220 Standard_GUID aGuid;
4222 if (Standard_GUID::CheckGUIDFormat(arg[3]))
4223 aGuid = Standard_GUID(arg[3]);
4225 di << "Wrong GUID format" << "\n";
4229 aGuid = TDataStd_ReferenceArray::GetID();
4231 Handle(TDataStd_ReferenceArray) A;
4232 if ( !label.FindAttribute(aGuid, A) ) {
4233 di << "There is no TDataStd_ReferenceArray at the label" << "\n";
4237 for(Standard_Integer i = A->Lower(); i<=A->Upper(); i++){
4238 const TDF_Label& aLabel = A->Value(i);
4239 TCollection_AsciiString entry;
4240 TDF_Tool::Entry(aLabel, entry);
4241 di << entry.ToCString();
4248 di << "TDataStd_ReferenceArray: Error\n";
4251 //=======================================================================
4252 //function : GetRefArrayValue (DF, entry, index)
4253 //=======================================================================
4254 static Standard_Integer DDataStd_GetRefArrayValue (Draw_Interpretor& di,
4255 Standard_Integer nb,
4260 Handle(TDF_Data) DF;
4261 if (!DDF::GetDF(arg[1],DF))
4265 if (!DDF::FindLabel(DF, arg[2], label)) {
4266 di << "No label for entry" << "\n";
4269 Standard_GUID aGuid;
4271 if (Standard_GUID::CheckGUIDFormat(arg[3]))
4272 aGuid = Standard_GUID(arg[3]);
4274 di << "Wrong GUID format" << "\n";
4278 aGuid = TDataStd_ReferenceArray::GetID();
4280 Handle(TDataStd_ReferenceArray) A;
4281 if ( !label.FindAttribute(aGuid, A) ) {
4282 di << "There is no TDataStd_ReferenceArray at the label" << "\n";
4286 Standard_Integer index = Draw::Atoi(arg[3]);
4287 if (index < A->Lower() || index > A->Upper()) {
4288 di << "Index is out of range\n";
4291 const TDF_Label& value = A->Value(index);
4292 TCollection_AsciiString entry;
4293 TDF_Tool::Entry(value, entry);
4294 di << entry.ToCString() << "\n";
4298 di << "TDataStd_ReferenceArray: Error\n";
4302 //=======================================================================
4303 //function : DDataStd_SetTriangulation
4304 //purpose : SetTriangulation (DF, entry, face)
4305 //=======================================================================
4307 static Standard_Integer DDataStd_SetTriangulation (Draw_Interpretor& di,
4308 Standard_Integer nb,
4313 Handle(TDF_Data) DF;
4314 if (!DDF::GetDF(arg[1],DF))
4318 if (!DDF::AddLabel(DF, arg[2], L))
4322 TopoDS_Shape face = DBRep::Get(arg[3]);
4323 if (face.IsNull() ||
4324 face.ShapeType() != TopAbs_FACE)
4326 di << "The face is null or not a face.\n";
4330 // Get triangulation of the face.
4331 TopLoc_Location loc;
4332 Handle(Poly_Triangulation) tris = BRep_Tool::Triangulation(TopoDS::Face(face), loc);
4335 di << "No triangulation in the face.\n";
4339 // Set the attribute.
4340 TDataXtd_Triangulation::Set(L, tris);
4343 di << "DDataStd_SetTriangulation : Error\n";
4347 //=======================================================================
4348 //function : DDataStd_DumpTriangulation
4349 //purpose : DumpTriangulation (DF, entry)
4350 //=======================================================================
4352 static Standard_Integer DDataStd_DumpMesh (Draw_Interpretor& di,
4353 Standard_Integer nb,
4358 Handle(TDF_Data) DF;
4359 if (!DDF::GetDF(arg[1],DF))
4362 Handle(TDataXtd_Triangulation) PT;
4363 if (!DDF::Find(DF,arg[2], TDataXtd_Triangulation::GetID(), PT))
4365 di << "The attribute doesn't exist at the label.\n";
4369 // Dump of the triangulation.
4370 if (PT->Get().IsNull())
4372 di << "No triangulation in the attribute.\n";
4376 di << "Deflection " << PT->Deflection() <<"\n";
4377 di << "Number of nodes " << PT->NbNodes() << "\n";
4378 di << "Number of triangles " << PT->NbTriangles() << "\n";
4379 if (PT->HasUVNodes())
4380 di << "It has 2d-nodes\n";
4381 if (PT->HasNormals())
4382 di << "It has normals\n";
4386 di << "DDataStd_DumpTriangulation : Error\n";
4390 //=======================================================================
4391 //function : BasicCommands
4393 //=======================================================================
4395 void DDataStd::BasicCommands (Draw_Interpretor& theCommands)
4398 static Standard_Boolean done = Standard_False;
4400 done = Standard_True;
4402 const char* g = "DData : Standard Attribute Commands";
4407 theCommands.Add ("SetInteger",
4408 "SetInteger (DF, entry, value [,guid])",
4409 __FILE__, DDataStd_SetInteger, g);
4411 theCommands.Add ("SetIntArray",
4412 "SetIntArray (DF, entry, isDelta, [-g Guid,] From, To [, elmt1, elmt2, ...])",
4413 __FILE__, DDataStd_SetIntArray, g);
4415 theCommands.Add ("SetIntArrayValue",
4416 "SetIntArrayValue (DF, entry, index, value)",
4417 __FILE__, DDataStd_SetIntArrayValue, g);
4419 theCommands.Add ("SetReal",
4420 "SetReal (DF, entry, value [,guid])",
4421 __FILE__, DDataStd_SetReal, g);
4423 theCommands.Add ("SetRealArray",
4424 "SetRealArray (DF, entry, isDelta, [-g Guid,] From, To [, elmt1, elmt2, ...])",
4425 __FILE__, DDataStd_SetRealArray, g);
4427 theCommands.Add ("SetRealArrayValue",
4428 "SetRealArrayValue (DF, entry, index, value)",
4429 __FILE__, DDataStd_SetRealArrayValue, g);
4431 theCommands.Add ("SetByteArray",
4432 "SetByteArray (DF, entry, isDelta, [-g Guid,] From, To [, elmt1, elmt2, ...])",
4433 __FILE__, DDataStd_SetByteArray, g);
4435 theCommands.Add ("SetByteArrayValue",
4436 "SetByteArrayValue (DF, entry, index, value)",
4437 __FILE__, DDataStd_SetByteArrayValue, g);
4439 theCommands.Add ("SetExtStringArray",
4440 "SetExtStringArray (DF, entry, isDelta, [-g Guid,] From, To [, elmt1, elmt2, ...])",
4441 __FILE__, DDataStd_SetExtStringArray, g);
4443 theCommands.Add ("SetExtStringArrayValue",
4444 "SetExtStringArrayValue (DF, entry, index, value)",
4445 __FILE__, DDataStd_SetExtStringArrayValue, g);
4447 theCommands.Add ("SetRefArray",
4448 "SetRefArray (DF, entry, [-g Guid,] From, To [, lab1, lab2, ...])",
4449 __FILE__, DDataStd_SetRefArray, g);
4451 theCommands.Add ("SetRefArrayValue",
4452 "SetRefArrayValue (DF, entry, index, value)",
4453 __FILE__, DDataStd_SetRefArrayValue, g);
4455 theCommands.Add ("SetIntPackedMap",
4456 "SetIntPackedMap (DF, entry, isDelta, key1, key2, ... )",
4457 __FILE__, DDataStd_SetIntPackedMap, g);
4459 theCommands.Add ("SetReference",
4460 "SetReference (DF, entry, reference)",
4461 __FILE__, DDataStd_SetReference, g);
4463 theCommands.Add ("SetComment",
4464 "SetComment (DF, entry, comment)",
4465 __FILE__, DDataStd_SetComment, g);
4467 theCommands.Add ("SetUAttribute",
4468 "SetUAttribute (DF, entry, LocalID)",
4469 __FILE__, DDataStd_SetUAttribute, g);
4471 theCommands.Add ("SetVariable",
4472 "SetVariable (DF, entry, isConstant[0/1], units)",
4473 __FILE__, DDataStd_SetVariable, g);
4475 theCommands.Add ("SetAsciiString",
4476 "SetAsciiString (DF, entry, String )",
4477 __FILE__, DDataStd_SetAsciiString, g);
4479 theCommands.Add ("SetBooleanArray",
4480 "SetBooleanArray (DF, entry, [-g Guid,] From, To [, elmt1, elmt2, ...])",
4481 __FILE__, DDataStd_SetBooleanArray, g);
4483 theCommands.Add ("SetBooleanArrayValue",
4484 "SetBooleanArrayValue (DF, entry, index, value)",
4485 __FILE__, DDataStd_SetBooleanArrayValue, g);
4487 theCommands.Add ("SetBooleanList",
4488 "SetBooleanList (DF, entry, [-g Guid,] elmt1, elmt2, ... )",
4489 __FILE__, DDataStd_SetBooleanList, g);
4491 theCommands.Add ("SetIntegerList",
4492 "SetIntegerList (DF, entry, [-g Guid,] elmt1, elmt2, ... )",
4493 __FILE__, DDataStd_SetIntegerList, g);
4495 theCommands.Add ("SetRealList",
4496 "SetRealList (DF, entry, [-g guid,] elmt1, elmt2, ... )",
4497 __FILE__, DDataStd_SetRealList, g);
4499 theCommands.Add ("SetExtStringList",
4500 "SetExtStringList (DF, entry,[-g Guid,] elmt1, elmt2, ... )",
4501 __FILE__, DDataStd_SetExtStringList, g);
4503 theCommands.Add ("SetReferenceList",
4504 "SetReferenceList (DF, entry, [-g Guid,] elmt1, elmt2, ... )",
4505 __FILE__, DDataStd_SetReferenceList, g);
4507 theCommands.Add ("SetTriangulation",
4508 "SetTriangulation (DF, entry, face) - adds label with passed entry to \
4509 DF and put an attribute with the triangulation from passed face",
4510 __FILE__, DDataStd_SetTriangulation, g);
4512 theCommands.Add ("InsertBeforeExtStringList",
4513 "InsertBeforeExtStringList (DF, entry, index, value )",
4514 __FILE__, DDataStd_InsertBeforeExtStringList, g);
4516 theCommands.Add ("InsertAfterExtStringList",
4517 "InsertAfterExtStringList (DF, entry, index, value )",
4518 __FILE__, DDataStd_InsertAfterExtStringList, g);
4520 theCommands.Add ("RemoveExtStringList",
4521 "RemoveExtStringList (DF, entry, index )",
4522 __FILE__, DDataStd_RemoveExtStringList, g);
4524 theCommands.Add ("InsertBeforeBooleanList",
4525 "InsertBeforeBooleanList (DF, entry, index, value )",
4526 __FILE__, DDataStd_InsertBeforeBooleanList, g);
4528 theCommands.Add ("InsertAfterBooleanList",
4529 "InsertAfterBooleanList (DF, entry, index, value )",
4530 __FILE__, DDataStd_InsertAfterBooleanList, g);
4532 theCommands.Add ("RemoveBooleanList",
4533 "RemoveBooleanList (DF, entry, index )",
4534 __FILE__, DDataStd_RemoveBooleanList, g);
4536 theCommands.Add ("InsertBeforeIntegerList",
4537 "InsertBeforeIntegerList (DF, entry, index, value )",
4538 __FILE__, DDataStd_InsertBeforeIntegerList, g);
4540 theCommands.Add ("InsertAfterIntegerList",
4541 "InsertAfterIntegerList (DF, entry, index, value )",
4542 __FILE__, DDataStd_InsertAfterIntegerList, g);
4544 theCommands.Add ("RemoveIntegerList",
4545 "RemoveIntegerList (DF, entry, index )",
4546 __FILE__, DDataStd_RemoveIntegerList, g);
4548 theCommands.Add ("InsertBeforeRealList",
4549 "InsertBeforeRealList (DF, entry, index, value )",
4550 __FILE__, DDataStd_InsertBeforeRealList, g);
4552 theCommands.Add ("InsertAfterRealList",
4553 "InsertAfterRealList (DF, entry, index, value )",
4554 __FILE__, DDataStd_InsertAfterRealList, g);
4556 theCommands.Add ("RemoveRealList",
4557 "RemoveRealList (DF, entry, index )",
4558 __FILE__, DDataStd_RemoveRealList, g);
4560 theCommands.Add ("InsertBeforeReferenceList",
4561 "InsertBeforeReferenceList (DF, entry, index, value )",
4562 __FILE__, DDataStd_InsertBeforeReferenceList, g);
4564 theCommands.Add ("InsertAfterReferenceList",
4565 "InsertAfterReferenceList (DF, entry, index, value )",
4566 __FILE__, DDataStd_InsertAfterReferenceList, g);
4568 theCommands.Add ("RemoveReferenceList",
4569 "RemoveReferenceList (DF, entry, index )",
4570 __FILE__, DDataStd_RemoveReferenceList, g);
4574 theCommands.Add ("GetAsciiString",
4575 "GetAsciiString (DF, entry )",
4576 __FILE__, DDataStd_GetAsciiString, g);
4578 theCommands.Add ("GetInteger",
4579 "GetInteger (DF, entry, [drawname][, guid])",
4580 __FILE__, DDataStd_GetInteger, g);
4582 theCommands.Add ("GetIntArray",
4583 "GetIntArray (DF, entry [, guid])",
4584 __FILE__, DDataStd_GetIntArray, g);
4586 theCommands.Add ("GetIntArrayValue",
4587 "GetIntArrayValue (DF, entry, index)",
4588 __FILE__, DDataStd_GetIntArrayValue, g);
4590 theCommands.Add ("GetRealArray",
4591 "GetRealArray (DF, entry [, guid])",
4592 __FILE__, DDataStd_GetRealArray, g);
4594 theCommands.Add ("GetRealArrayValue",
4595 "GetRealArrayValue (DF, entry, index)",
4596 __FILE__, DDataStd_GetRealArrayValue, g);
4598 theCommands.Add ("GetByteArray",
4599 "GetByteArray (DF, entry [, guid])",
4600 __FILE__, DDataStd_GetByteArray, g);
4602 theCommands.Add ("GetByteArrayValue",
4603 "GetByteArrayValue (DF, entry, index)",
4604 __FILE__, DDataStd_GetByteArrayValue, g);
4606 theCommands.Add ("GetExtStringArray",
4607 "GetExtStringArray (DF, entry [, guid])",
4608 __FILE__, DDataStd_GetExtStringArray, g);
4610 theCommands.Add ("GetExtStringArrayValue",
4611 "GetExtStringArrayValue (DF, entry, index)",
4612 __FILE__, DDataStd_GetExtStringArrayValue, g);
4614 theCommands.Add ("GetRefArray",
4615 "GetRefArray (DF, entry [, guid])",
4616 __FILE__, DDataStd_GetRefArray, g);
4618 theCommands.Add ("GetRefArrayValue",
4619 "GetRefArrayValue (DF, entry, index)",
4620 __FILE__, DDataStd_GetRefArrayValue, g);
4622 theCommands.Add ("GetIntPackedMap",
4623 "GetIntPackedMap (DF, entry )",
4624 __FILE__, DDataStd_GetIntPackedMap, g);
4626 theCommands.Add ("GetReal",
4627 "GetReal (DF, entry, [drawname][, guid])",
4628 __FILE__, DDataStd_GetReal, g);
4630 theCommands.Add ("GetReference",
4631 "GetReference (DF, entry)",
4632 __FILE__, DDataStd_GetReference, g);
4635 theCommands.Add ("GetComment",
4636 "GetComment (DF, entry)",
4637 __FILE__, DDataStd_GetComment, g);
4639 theCommands.Add("Self",
4640 "Self(document, entry)",
4641 __FILE__, DDataStd_Self, g);
4643 theCommands.Add ("GetUAttribute",
4644 "GetUAttribute (DF, entry)",
4645 __FILE__, DDataStd_GetUAttribute, g);
4647 theCommands.Add ("GetVariable",
4648 "GetVariable (DF, entry, [isConstant], [units])",
4649 __FILE__, DDataStd_GetVariable, g);
4651 theCommands.Add ("SetRelation",
4652 "SetRelation (DF, entry, expression, var1[, var2, ...])",
4653 __FILE__, DDataStd_SetRelation, g);
4655 theCommands.Add ("DumpRelation",
4656 "DumpRelation (DF, entry)",
4657 __FILE__, DDataStd_DumpRelation, g);
4659 theCommands.Add ("GetBooleanArray",
4660 "GetBooleanArray (DF, entry [, guid])",
4661 __FILE__, DDataStd_GetBooleanArray, g);
4663 theCommands.Add ("GetBooleanArrayValue",
4664 "GetBooleanArrayValue (DF, entry, index)",
4665 __FILE__, DDataStd_GetBooleanArrayValue, g);
4667 theCommands.Add ("GetBooleanList",
4668 "GetBooleanList (DF, entry [, guid])",
4669 __FILE__, DDataStd_GetBooleanList, g);
4671 theCommands.Add ("GetIntegerList",
4672 "GetIntegerList (DF, entry [, guid])",
4673 __FILE__, DDataStd_GetIntegerList, g);
4675 theCommands.Add ("GetRealList",
4676 "GetRealList (DF, entry [, guid])",
4677 __FILE__, DDataStd_GetRealList, g);
4679 theCommands.Add ("GetExtStringList",
4680 "GetExtStringList (DF, entry [, guid])",
4681 __FILE__, DDataStd_GetExtStringList, g);
4683 theCommands.Add ("GetReferenceList",
4684 "GetReferenceList (DF, entry [, guid])",
4685 __FILE__, DDataStd_GetReferenceList, g);
4687 // ========================= UTF =====================================
4688 const char* ggg = "UTF Commands";
4690 theCommands.Add ("SetUTFName",
4691 "SetUTFName (DF, entry, fileName)",
4692 __FILE__, DDataStd_KeepUTF, ggg);
4694 theCommands.Add ("GetUTF",
4695 "GetUTF (DF, entry, fileName)",
4696 __FILE__, DDataStd_GetUTFtoFile, ggg);
4698 //======================= NData Commands ========================
4700 const char* gN = "NData Commands";
4701 theCommands.Add ("SetNDataIntegers",
4702 "SetNDataIntegers (DF, entry, NumPairs, key1, val1, ... )",
4703 __FILE__, DDataStd_SetNDataIntegers, gN);
4705 theCommands.Add ("SetNDataReals",
4706 "SetNDataReals (DF, entry, NumPairs, key1, val1, ... )",
4707 __FILE__, DDataStd_SetNDataReals, gN);
4709 theCommands.Add ("SetNDataStrings",
4710 "SetNDataStrings (DF, entry, NumPairs, key1, val1, ... )",
4711 __FILE__, DDataStd_SetNDataStrings, gN);
4713 theCommands.Add ("SetNDataBytes",
4714 "SetNDataBytes (DF, entry, NumPairs, key1, val1, ... )",
4715 __FILE__, DDataStd_SetNDataBytes, gN);
4717 theCommands.Add ("SetNDataIntArrays",
4718 "SetNDataIntArrays (DF entry entry key NumOfArrElems val1 val2... )",
4719 __FILE__, DDataStd_SetNDataIntAr, gN);
4721 theCommands.Add ("SetNDataRealArrays",
4722 "SetNDataRealArrays (DF entry key NumOfArrElems val1 val2... )",
4723 __FILE__, DDataStd_SetNDataRealAr, gN);
4727 theCommands.Add ("GetNDIntegers",
4728 "GetNDIntegers (DF, entry )",
4729 __FILE__, DDataStd_GetNDIntegers, g);
4731 theCommands.Add ("GetNDInteger",
4732 "GetNDInteger (DF entry key [drawname])",
4733 __FILE__, DDataStd_GetNDInteger, g);
4735 theCommands.Add ("GetNDReals",
4736 "GetNDReals (DF entry )",
4737 __FILE__, DDataStd_GetNDReals, g);
4739 theCommands.Add ("GetNDReal",
4740 "GetNDReal (DF entry key [drawname])",
4741 __FILE__, DDataStd_GetNDReal, g);
4743 theCommands.Add ("GetNDStrings",
4744 "GetNDStrings (DF entry )",
4745 __FILE__, DDataStd_GetNDStrings, g);
4747 theCommands.Add ("GetNDString",
4748 "GetNDString (DF entry key [drawname])",
4749 __FILE__, DDataStd_GetNDString, g);
4751 theCommands.Add ("GetNDBytes",
4752 "GetNDBytes (DF entry )",
4753 __FILE__, DDataStd_GetNDBytes, g);
4755 theCommands.Add ("GetNDByte",
4756 "GetNDByte (DF entry key [drawname])",
4757 __FILE__, DDataStd_GetNDByte, g);
4759 theCommands.Add ("GetNDIntArrays",
4760 "GetNDIntArrays (DF, entry )",
4761 __FILE__, DDataStd_GetNDIntArrays, g);
4763 theCommands.Add ("GetNDIntArray",
4764 "GetNDIntArray (DF entry key )",
4765 __FILE__, DDataStd_GetNDIntArray, g);
4767 theCommands.Add ("GetNDRealArrays",
4768 "GetNDRealArrays (DF entry )",
4769 __FILE__, DDataStd_GetNDRealArrays, g);
4771 theCommands.Add ("GetNDRealArray",
4772 "GetNDRealArray (DF entry key )",
4773 __FILE__, DDataStd_GetNDRealArray, g);
4775 //====================== Change =======================
4776 theCommands.Add ("ChangeByteArray",
4777 "ChangeByteArray (DF, entry, indx, value )",
4778 __FILE__, DDataStd_ChangeByteArray, g);
4780 theCommands.Add ("ChangeIntArray",
4781 "ChangeIntArray (DF, entry, indx, value )",
4782 __FILE__, DDataStd_ChangeIntArray, g);
4784 theCommands.Add ("ChangeRealArray",
4785 "ChangeRealArray (DF, entry, indx, value )",
4786 __FILE__, DDataStd_ChangeRealArray, g);
4788 theCommands.Add ("ChangeExtStrArray",
4789 "ChangeExtStrArray (DF, entry, indx, value )",
4790 __FILE__, DDataStd_ChangeExtStrArray, g);
4792 theCommands.Add ("ChangeIntPackedMap_Add",
4793 "ChangeIntPackedMAp_Add (DF, entry, key[,key [...]] )",
4794 __FILE__, DDataStd_ChangeIntPackedMap_Add, g);
4796 theCommands.Add ("ChangeIntPackedMap_Rem",
4797 "ChangeIntPackedMAp_Rem (DF, entry, key[,key [...]] )",
4798 __FILE__, DDataStd_ChangeIntPackedMap_Rem, g);
4800 theCommands.Add ("ChangeIntPackedMap_AddRem",
4801 "ChangeIntPackedMAp_AddRem (DF, entry, key[,key [...]] )",
4802 __FILE__, DDataStd_ChangeIntPackedMap_AddRem, g);
4804 //=========================================================
4805 // TFunction commands
4806 const char* gg = "DFunction Commands";
4808 theCommands.Add ("SetFunction",
4809 "SetFunction (DF, entry, guid, failure)",
4810 __FILE__, DDataStd_SetFunction, gg);
4812 theCommands.Add ("GetFunction",
4813 "GetFunction (DF, entry, guid(out), failure(out))",
4814 __FILE__, DDataStd_GetFunction, gg);
4816 //=========================================================
4818 theCommands.Add ("DumpTriangulation",
4819 "DumpTriangulations (DF, entry) - dumps info about triangulation that \
4820 stored in DF in triangulation attribute of a label with the passed entry",
4821 __FILE__, DDataStd_DumpMesh, g);
4823 //======================================================================
4824 //======= for internal use
4826 theCommands.Add ("SetNDataIntegers2",
4827 "SetNDataIntegers2 (DF, entry, NumPair )",
4828 __FILE__, DDataStd_SetNDataIntegers2, gN);
4830 theCommands.Add ("SetNDataIntArrays2",
4831 "SetNDataIntArrays2 (DF entry entry key NumOfArrElems)",
4832 __FILE__, DDataStd_SetNDataIntAr2, gN);
4834 theCommands.Add ("SetIntArrayT",
4835 "SetIntArrayT (DF, entry, isDelta, From, To )",
4836 __FILE__, DDataStd_SetIntArrayTest, g);
4838 theCommands.Add ("SetIntPHugeMap",
4839 "SetIntPHugeMap (DF, entry, isDelta Num)",
4840 __FILE__, DDataStd_SetIntPHugeMap, g);