bigloo.foreign.create_string_for_read C# (CSharp) Method

create_string_for_read() public static method

public static create_string_for_read ( byte src, bool symbolp ) : byte[]
src byte
symbolp bool
return byte[]
        public static byte[] create_string_for_read( byte[]  src,
						   bool    symbolp )
        {
            int               len= src.Length;
            int               w= 0;

            for ( int i= 0 ; i < len ; ++i )
            {
               byte            cn= src[i];

               switch (cn)
               {
              case (byte)'\n':
              case (byte)'\t':
              case (byte)'\b':
              case (byte)'\r':
              case (byte)'\f':
              case (byte)11:
              case (byte)'"':
              case (byte)'\\':
             w+= 2;
              break;
              case (byte)'|':
             w+= (symbolp ? 2 : 1);
              break;
              default:
             w+= (((32 <= cn) && (cn <= 126)) ? 1 : 4);
             break;
               }
            }

            byte[]            res= new byte[w];

            w= 0;
            for ( int i= 0 ; i < len ; ++i )
            {
               byte            cn= src[i];

               switch (cn)
               {
              case (byte)'\n':
             res[w++]= (byte)'\\';
              res[w++]= (byte)'n';
              break;
              case (byte)'\t':
             res[w++]= (byte)'\\';
              res[w++]= (byte)'t';
              break;
              case (byte)'\b':
             res[w++]= (byte)'\\';
              res[w++]= (byte)'b';
              break;
              case (byte)'\r':
             res[w++]= (byte)'\\';
              res[w++]= (byte)'r';
              break;
              case (byte)'\f':
             res[w++]= (byte)'\\';
              res[w++]= (byte)'f';
              break;
              case (byte)11:
             res[w++]= (byte)'\\';
             res[w++]= (byte)'v';
             break;
              case (byte)'"':
              case (byte)'\\':
             res[w++]= (byte)'\\';
              res[w++]= cn;
              break;
              case (byte)'|':
             if (symbolp)
            res[w++]= (byte)'\\';
              res[w++] = (byte)'|';
              break;
              default:
             if ((32 <= cn) && (cn <= 126))
            res[w++]= cn;
             else
             {
            int       icn= cn & 0xFF;

            res[w++]= (byte)'\\';
            res[w++]= (byte)('0' + ((icn >> 6) & 0x7));
            res[w++]= (byte)('0' + ((icn >> 3) & 0x7));
            res[w++]= (byte)('0' + (icn  & 0x7));
             }
             break;
               }
            }

            return res;
        }
foreign