------------------------------------------------------------------------------
| 820 | |
| 821 | //------------------------------------------------------------------------------ |
| 822 | void vtkFieldData::CopyFieldOnOff(const char* field, int onOff) |
| 823 | { |
| 824 | if (!field) |
| 825 | { |
| 826 | return; |
| 827 | } |
| 828 | |
| 829 | // If the array is in the list, simply set IsCopied to onOff |
| 830 | int index = this->FindFlag(field); |
| 831 | if (index != -1) |
| 832 | { |
| 833 | if (this->CopyFieldFlags[index].IsCopied != onOff) |
| 834 | { |
| 835 | this->CopyFieldFlags[index].IsCopied = onOff; |
| 836 | this->Modified(); |
| 837 | } |
| 838 | } |
| 839 | else |
| 840 | { |
| 841 | // We need to reallocate the list of fields |
| 842 | vtkFieldData::CopyFieldFlag* newFlags = |
| 843 | new vtkFieldData::CopyFieldFlag[this->NumberOfFieldFlags + 1]; |
| 844 | // Copy old flags (pointer copy for name) |
| 845 | for (int i = 0; i < this->NumberOfFieldFlags; ++i) |
| 846 | { |
| 847 | newFlags[i].ArrayName = this->CopyFieldFlags[i].ArrayName; |
| 848 | newFlags[i].IsCopied = this->CopyFieldFlags[i].IsCopied; |
| 849 | } |
| 850 | // Copy new flag (strcpy) |
| 851 | char* newName = new char[strlen(field) + 1]; |
| 852 | strcpy(newName, field); |
| 853 | newFlags[this->NumberOfFieldFlags].ArrayName = newName; |
| 854 | newFlags[this->NumberOfFieldFlags].IsCopied = onOff; |
| 855 | this->NumberOfFieldFlags++; |
| 856 | delete[] this->CopyFieldFlags; |
| 857 | this->CopyFieldFlags = newFlags; |
| 858 | this->Modified(); |
| 859 | } |
| 860 | } |
| 861 | |
| 862 | //------------------------------------------------------------------------------ |
| 863 | // Turn on copying of all data. |
no test coverage detected