text: //------------------------------------------------------------------------------
  //  idlarg.cc
  //  (C) 2006 Radon Labs GmbH
  //------------------------------------------------------------------------------
  #include "stdneb.h"
  #include "tools/idlcompiler/idlarg.h"  
  
  namespace Tools
  {
  __ImplementClass(Tools::IDLArg, 'ILAG', Core::RefCounted);
  
  using namespace Util;
  using namespace IO;
  
  //------------------------------------------------------------------------------
  /**
  */
  IDLArg::IDLArg()
  {
      // empty
  }
  
  //------------------------------------------------------------------------------
  /**
  */
  bool
  IDLArg::Parse(XmlReader* reader)
  {
      n_assert(0 != reader);
      this->name = reader->GetString("name");
      this->type = reader->GetString("type");
      this->defaultValue = reader->GetOptString("default", "");
      this->serialize = reader->GetOptBool("serialize", false);
      if (reader->SetToFirstChild("Encode"))
      {
          this->encodeCode = reader->GetContent();
          reader->SetToParent();
      }
      if (reader->SetToFirstChild("Decode"))
      {
          this->decodeCode = reader->GetContent();
          reader->SetToParent();
      }
      return true;
  }
  
  //------------------------------------------------------------------------------
  /**
  */
  bool
  IDLArg::IsValidType(const Util::String& str)
  {
      if ((str == "Char")
          ||(str == "String")
          ||(str == "Float")
          ||(str == "Float2")
          ||(str == "Float4")
          ||(str == "Int")
          ||(str == "UInt")
          ||(str == "Bool")
          ||(str == "Matrix44")
          ||(str == "Point")
          ||(str == "Vector")
          ||(str == "Double")
          ||(str == "Short")
          ||(str == "UShort")
          ||(str == "Blob")
          ||(str == "Guid"))
      {
          return true;
      }   
  
      return false;
  }
  
  } // namespace Tools
  