Go to the documentation of this file.00001
00002
00003
00004
00005 #include "vil_nitf2_field_formatter.h"
00006 #include "vil_nitf2_field.h"
00007
00008
00009 #include <vcl_iostream.h>
00010 #include <vcl_cstring.h>
00011
00012
00013
00014
00015 char* vil_nitf2_field_formatter::read_char_array(vcl_istream& input, int size)
00016 {
00017 char* char_array = new char[size+1];
00018 input.read(char_array, size);
00019 char_array[input.gcount()]='\0';
00020 return char_array;
00021 }
00022
00023 vcl_string vil_nitf2_field_formatter::read_string(vcl_istream& input, int size)
00024 {
00025 char* cstr = read_char_array(input, size);
00026 vcl_string str = vcl_string(cstr);
00027 delete[] cstr;
00028 return str;
00029 }
00030
00031 vcl_string vil_nitf2_field_formatter::read_string(vil_stream& input, int size)
00032 {
00033 char* char_array = new char[size+1];
00034 vil_streampos pos = input.read(char_array, size);
00035 char_array[pos]='\0';
00036 vcl_string retVal(char_array);
00037 delete[] char_array;
00038 return retVal;
00039 }
00040
00041 bool vil_nitf2_field_formatter::read_c_str(vcl_istream& input, int length,
00042 char*& out_cstr, bool& all_blank)
00043 {
00044 out_cstr = read_char_array(input, length);
00045 all_blank = is_all_blank(out_cstr);
00046 return int(vcl_strlen(out_cstr)) == length;
00047 }
00048
00049 bool vil_nitf2_field_formatter::write_blank(vcl_ostream& output)
00050 {
00051 vcl_string str(field_width,' ');
00052 output << str;
00053 return !output.fail();
00054 }
00055
00056 bool vil_nitf2_field_formatter::write_blank(vil_nitf2_ostream& output)
00057 {
00058 vcl_string str(field_width, ' ');
00059 output.write(str.c_str(), field_width);
00060 return output.ok();
00061 }
00062
00063 bool vil_nitf2_field_formatter::is_all_blank(const char* cstr)
00064 {
00065 while (*cstr != '\0') {
00066 if (*cstr != ' ') return false;
00067 ++cstr;
00068 }
00069 return true;
00070 }
00071
00072 bool vil_nitf2_field_formatter::check_sign(const char* cstr, bool show_sign)
00073 {
00074 return
00075 cstr &&
00076 ((!show_sign && cstr[0] != '+' && cstr[0] != '-') ||
00077 (show_sign && (cstr[0] == '+' || cstr[0] == '-')) );
00078 }