---------------------------------------------------------------------------*/
| 4736 | |
| 4737 | /*---------------------------------------------------------------------------*/ |
| 4738 | DEMZIP_API demzip_I32 |
| 4739 | demzip_close_reader( |
| 4740 | demzip_POINTER pointer |
| 4741 | ) |
| 4742 | { |
| 4743 | if (pointer == 0) return 1; |
| 4744 | demzip_dll_struct* demzip_dll = (demzip_dll_struct*)pointer; |
| 4745 | try |
| 4746 | { |
| 4747 | if (demzip_dll->reader == 0) |
| 4748 | { |
| 4749 | sprintf(demzip_dll->error, "closing reader before it was opened"); |
| 4750 | return 1; |
| 4751 | } |
| 4752 | |
| 4753 | if (!demzip_dll->reader->done()) |
| 4754 | { |
| 4755 | sprintf(demzip_dll->error, "done of LASreadPoint failed"); |
| 4756 | return 1; |
| 4757 | } |
| 4758 | |
| 4759 | delete demzip_dll->reader; |
| 4760 | demzip_dll->reader = 0; |
| 4761 | |
| 4762 | delete [] demzip_dll->point_items; |
| 4763 | demzip_dll->point_items = 0; |
| 4764 | |
| 4765 | delete demzip_dll->streamin; |
| 4766 | demzip_dll->streamin = 0; |
| 4767 | |
| 4768 | if (demzip_dll->lax_index) |
| 4769 | { |
| 4770 | delete demzip_dll->lax_index; |
| 4771 | demzip_dll->lax_index = 0; |
| 4772 | } |
| 4773 | |
| 4774 | if (demzip_dll->file) |
| 4775 | { |
| 4776 | fclose(demzip_dll->file); |
| 4777 | demzip_dll->file = 0; |
| 4778 | } |
| 4779 | } |
| 4780 | catch (...) |
| 4781 | { |
| 4782 | sprintf(demzip_dll->error, "internal error in demzip_close_reader"); |
| 4783 | return 1; |
| 4784 | } |
| 4785 | |
| 4786 | demzip_dll->error[0] = '\0'; |
| 4787 | return 0; |
| 4788 | } |
| 4789 | |
| 4790 | #ifdef __cplusplus |
| 4791 |