Debug_Attributes_Builder.cpp

Go to the documentation of this file.
00001 // $Id: Debug_Attributes_Builder.cpp 78907 2007-07-16 10:22:58Z sowayaa $
00002 
00003 #include "ACEXML/common/SAXExceptions.h"
00004 #include "ACEXML/parser/debug_validator/Debug_Attributes_Builder.h"
00005 
00006 ACEXML_Debug_Attribute_Builder::ACEXML_Debug_Attribute_Builder ()
00007   : type_ (ERROR_TYPE),
00008     default_decl_ (INVALID)
00009 {
00010 }
00011 
00012 ACEXML_Debug_Attribute_Builder::ACEXML_Debug_Attribute_Builder (const ACEXML_Debug_Attribute_Builder &rhs)
00013   : name_ (rhs.name_),
00014     type_ (rhs.type_),
00015     default_decl_ (rhs.default_decl_),
00016     default_value_ (rhs.default_value_),
00017     att_value_queue_ (rhs.att_value_queue_)
00018 {
00019 }
00020 
00021 ACEXML_Debug_Attribute_Builder::~ACEXML_Debug_Attribute_Builder ()
00022 {
00023 }
00024 
00025 int
00026 ACEXML_Debug_Attribute_Builder::setName (const ACEXML_Char *n)
00027 {
00028   this->name_.set (n, 0);
00029   return 0;
00030 }
00031 
00032 const ACEXML_Char *
00033 ACEXML_Debug_Attribute_Builder::getName (void)
00034 {
00035   return this->name_.fast_rep ();
00036 }
00037 
00038 int
00039 ACEXML_Debug_Attribute_Builder::setAttType (const ATT_TYPE type
00040                                             ACEXML_ENV_ARG_DECL)
00041 {
00042   if (this->type_ == ERROR_TYPE)
00043     {
00044       this->type_ = type;
00045       return 0;
00046     }
00047   ACEXML_THROW_RETURN (ACEXML_SAXParseException (ACE_TEXT("Attribute type redefinition in Debug Validator")), -1);
00048 
00049 }
00050 
00051 int
00052 ACEXML_Debug_Attribute_Builder::insertList (const ACEXML_Char *n
00053                                             ACEXML_ENV_ARG_DECL_NOT_USED)
00054 {
00055   ACEXML_String str (n, 0, 0);
00056 
00057   this->att_value_queue_.enqueue_tail (str);
00058   return 0;
00059 }
00060 
00061 int
00062 ACEXML_Debug_Attribute_Builder::setDefault (const DEFAULT_DECL def,
00063                                             const ACEXML_Char *value
00064                                             ACEXML_ENV_ARG_DECL_NOT_USED)
00065 {
00066   this->default_decl_ = def;
00067   this->default_value_.set (value, 0);
00068   return 0;
00069 }
00070 
00071 int
00072 ACEXML_Debug_Attribute_Builder::validAttr (void)
00073 {
00074   // @@ Not implemented.  Always return 1 (true) for now.
00075   return 1;
00076 }
00077 
00078 void
00079 ACEXML_Debug_Attribute_Builder::dump (void)
00080 {
00081   cout << this->name_ << " ";
00082 
00083   switch (this->type_)
00084     {
00085     case CDATA:
00086       cout << "CDATA ";
00087       break;
00088     case ID:
00089       cout << "ID ";
00090       break;
00091     case IDREF:
00092       cout << "IDREF ";
00093       break;
00094     case IDREFS:
00095       cout << "IDREFS ";
00096       break;
00097     case ENTITY:
00098       cout << "ENTITY ";
00099       break;
00100     case ENTITIES:
00101       cout << "ENTITIES ";
00102       break;
00103     case NMTOKEN:
00104       cout << "NMTOKEN ";
00105       break;
00106     case NMTOKENS:
00107       cout << "NMTOKENS ";
00108       break;
00109     case NOTATION:
00110       cout << "NOTATION ";
00111       // Fall thru
00112     case ENUMERATION:
00113       {
00114         cout << "(";
00115         ACEXML_STRING_QUEUE_ITERATOR iter (this->att_value_queue_);
00116         ACEXML_String *n = 0;
00117 
00118         while (iter.advance () != 0)
00119           {
00120             if (n == 0)
00121               cout << " | ";
00122             iter.next (n);
00123             cout << *n;
00124           }
00125         cout << ") ";
00126       }
00127       break;
00128     default:
00129       cout << "*** UNKNOWN TYPE ***";
00130       break;
00131     }
00132 
00133   switch (this->default_decl_)
00134     {
00135     case REQUIRED:
00136       cout << "#REQUIRED";
00137       break;
00138     case IMPLIED:
00139       cout << "#IMPLIED";
00140       break;
00141     case FIXED:
00142       cout << "#FIXED " << this->default_value_;
00143       break;
00144     default:
00145       cout << "**** UNDEFINED DEFAULT DECL ****";
00146       break;
00147     }
00148 }
00149 // ========================================
00150 
00151 ACEXML_Debug_Attributes_Builder::ACEXML_Debug_Attributes_Builder ()
00152 {
00153 }
00154 
00155 ACEXML_Debug_Attributes_Builder::~ACEXML_Debug_Attributes_Builder ()
00156 {
00157 }
00158 
00159 int
00160 ACEXML_Debug_Attributes_Builder::setElement (const ACEXML_Char *,
00161                                              const ACEXML_Char *,
00162                                              const ACEXML_Char *qName ACEXML_ENV_ARG_DECL_NOT_USED)
00163 {
00164   this->element_name_.set (qName, 0);
00165   return 0;
00166 }
00167 
00168 ACEXML_Attribute_Def_Builder *
00169 ACEXML_Debug_Attributes_Builder::getAttribute_Def_Builder ()
00170 {
00171   ACEXML_Attribute_Def_Builder *tmp;
00172 
00173   ACE_NEW_RETURN (tmp,
00174                   ACEXML_Debug_Attribute_Builder (),
00175                   0);
00176   return tmp;
00177 }
00178 
00179 int
00180 ACEXML_Debug_Attributes_Builder::insertAttribute (ACEXML_Attribute_Def_Builder *def ACEXML_ENV_ARG_DECL)
00181 {
00182   ACEXML_Attribute_Def_Builder::VAR ptr (def);
00183 
00184   if (def != 0)
00185     {
00186       ACEXML_String attname (def->getName (), 0, 0);
00187       ACEXML_Debug_Attribute_Builder *ptr =
00188         dynamic_cast<ACEXML_Debug_Attribute_Builder *> (def);
00189       this->attributes_.bind (attname, *ptr);
00190       return 0;
00191     }
00192   ACEXML_THROW_RETURN (ACEXML_SAXParseException (ACE_TEXT("ACEXML_Debug_Attributes_Builder internal error")), -1);
00193 }
00194 
00195 void
00196 ACEXML_Debug_Attributes_Builder::dump (void)
00197 {
00198   // @@ Print print.
00199   cout << "<!ATTLIST " << this->element_name_ << endl;
00200 
00201   ACEXML_ATT_MAP_ITER iter (this->attributes_);
00202   ACEXML_ATT_MAP_ENTRY *item;
00203 
00204   while (iter.advance () != 0)
00205     {
00206       iter.next (item);
00207       cout << "\n\t";
00208       item->int_id_.dump ();
00209     }
00210   cout << ">" << endl;
00211 }

Generated on Sun Jan 27 13:04:14 2008 for ACEXML by doxygen 1.3.6