Main Page   Namespace List   Class Hierarchy   Compound List   File List   Namespace Members   Compound Members   File Members  

FBwStringField.h

Go to the documentation of this file.
00001 //---------------------------------------------------------------------------
00006 //---------------------------------------------------------------------------
00007 
00008 #ifndef IbMStringFieldH
00009 #define IbMStringFieldH
00010 namespace fbwrap
00011 {
00012 
00013 // What are we using from standard libraries
00014 using std::string;
00015 
00017 class FBwStringField : public FBwField
00018 {
00019     char *svalue;
00020     string  value;
00021     short pLen;
00022     bool Varying;
00023     bool SpaceFill;
00024     bool ValueTrim;
00025 protected:
00026     void *GetPtr()
00027     {
00028         if( svalue == NULL )
00029             svalue = new char[256];
00030         return svalue;
00031     }
00032     virtual void bCopy(const FBwField *fld)
00033     {
00034         value = fld->AsString();
00035     }
00037     virtual int ByteSize()
00038     {
00039         return pLen+3;
00040     }
00041 public:
00042 
00044 
00049     FBwStringField(string pName, short MxLen=127, bool pVarying=false);
00051     FBwStringField(const FBwStringField &f);
00053     virtual std::ostream &DisplayText(std::ostream  &o) const;
00055     virtual string AsString() const;
00057     virtual long AsInteger() const;
00059     virtual void SetAsString(const string &pvalue) 
00060     {
00061         ClearNull();
00062         value = pvalue;
00063     }
00064     virtual void ConvertStoV();
00065     virtual void ConvertVtoS();
00066     virtual void BindPtr(char  **p)
00067     {
00068         *p=svalue;
00069     }
00070     string &Value()
00071     {
00072         return value;
00073     }
00075     virtual ~FBwStringField()
00076     {
00077         delete[] svalue;
00078     }
00080     bool IsVarying()
00081     {
00082         return Varying;
00083     }
00085     short MaxLen()
00086     {
00087         return pLen;
00088     }
00090     void SetMaxLen(short mxLen)
00091     {
00092         if( pLen < mxLen )
00093         {
00094             delete[] svalue;
00095             svalue = new char[mxLen];
00096         }
00097         pLen=mxLen;
00098     }
00100 
00103     void SetFill(bool v=true)
00104     {
00105         SpaceFill=v;
00106     }
00108     void SetValueTrim(bool how=true)
00109     {
00110         ValueTrim=how;
00111     }
00113     FBwField *Clone() const
00114     {
00115         return new FBwStringField(*this);
00116     }
00118     virtual short GetLen()
00119     {
00120         return pLen-1;
00121     }
00122 };
00123 
00124 //-------------------------------------------------------------------------
00125 }
00126 #endif

Generated on Fri Jan 31 08:30:02 2003 for fbwrap by doxygen1.2.17