(file) Return to CIMMethodRep.cpp CVS log (file) (dir) Up to [Pegasus] / pegasus / src / Pegasus / Common

Diff for /pegasus/src/Pegasus/Common/CIMMethodRep.cpp between version 1.48 and 1.60

version 1.48, 2005/11/07 23:15:59 version 1.60, 2008/12/01 17:49:47
Line 1 
Line 1 
 //%2005////////////////////////////////////////////////////////////////////////  //%LICENSE////////////////////////////////////////////////////////////////
 // //
 // Copyright (c) 2000, 2001, 2002 BMC Software; Hewlett-Packard Development  // Licensed to The Open Group (TOG) under one or more contributor license
 // Company, L.P.; IBM Corp.; The Open Group; Tivoli Systems.  // agreements.  Refer to the OpenPegasusNOTICE.txt file distributed with
 // Copyright (c) 2003 BMC Software; Hewlett-Packard Development Company, L.P.;  // this work for additional information regarding copyright ownership.
 // IBM Corp.; EMC Corporation, The Open Group.  // Each contributor licenses this file to you under the OpenPegasus Open
 // Copyright (c) 2004 BMC Software; Hewlett-Packard Development Company, L.P.;  // Source License; you may not use this file except in compliance with the
 // IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group.  // License.
 // Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.;  //
 // EMC Corporation; VERITAS Software Corporation; The Open Group.  // Permission is hereby granted, free of charge, to any person obtaining a
   // copy of this software and associated documentation files (the "Software"),
   // to deal in the Software without restriction, including without limitation
   // the rights to use, copy, modify, merge, publish, distribute, sublicense,
   // and/or sell copies of the Software, and to permit persons to whom the
   // Software is furnished to do so, subject to the following conditions:
   //
   // The above copyright notice and this permission notice shall be included
   // in all copies or substantial portions of the Software.
   //
   // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
   // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
   // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
   // IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
   // CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
   // TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
   // SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 // //
 // Permission is hereby granted, free of charge, to any person obtaining a copy  //////////////////////////////////////////////////////////////////////////
 // of this software and associated documentation files (the "Software"), to  
 // deal in the Software without restriction, including without limitation the  
 // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or  
 // sell copies of the Software, and to permit persons to whom the Software is  
 // furnished to do so, subject to the following conditions:  
 //  
 // THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN  
 // ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED  
 // "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT  
 // LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR  
 // PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT  
 // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN  
 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION  
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  
 //  
 //==============================================================================  
 //  
 // Author: Mike Brasher (mbrasher@bmc.com)  
 //  
 // Modified By: Carol Ann Krug Graves, Hewlett-Packard Company  
 //                  (carolann_graves@hp.com)  
 //              David Dillard, VERITAS Software Corp.  
 //                  (david.dillard@veritas.com)  
 // //
 //%///////////////////////////////////////////////////////////////////////////// //%/////////////////////////////////////////////////////////////////////////////
  
Line 40 
Line 33 
 #include "CIMMethod.h" #include "CIMMethod.h"
 #include "CIMMethodRep.h" #include "CIMMethodRep.h"
 #include "Resolver.h" #include "Resolver.h"
 #include "Indentor.h"  
 #include "CIMName.h" #include "CIMName.h"
 #include "CIMScope.h" #include "CIMScope.h"
 #include "XmlWriter.h"  #include <Pegasus/Common/MessageLoader.h>
 #include "MofWriter.h"  
 #include <Pegasus/Common/MessageLoader.h> //l10n  
 #include "StrLit.h" #include "StrLit.h"
  
 PEGASUS_NAMESPACE_BEGIN PEGASUS_NAMESPACE_BEGIN
  
 CIMMethodRep::CIMMethodRep()  
 {  
 }  
   
 CIMMethodRep::CIMMethodRep(const CIMMethodRep& x) : CIMMethodRep::CIMMethodRep(const CIMMethodRep& x) :
     Sharable(),  
     _name(x._name),     _name(x._name),
     _type(x._type),     _type(x._type),
     _classOrigin(x._classOrigin),     _classOrigin(x._classOrigin),
     _propagated(x._propagated)      _propagated(x._propagated),
       _ownerCount(0),
       _refCounter(1)
 { {
     x._qualifiers.cloneTo(_qualifiers);     x._qualifiers.cloneTo(_qualifiers);
       // Set the CIM name tag.
       _nameTag = generateCIMNameTag(_name);
  
     _parameters.reserveCapacity(x._parameters.size());     _parameters.reserveCapacity(x._parameters.size());
  
Line 77 
Line 66 
     const CIMName& classOrigin,     const CIMName& classOrigin,
     Boolean propagated)     Boolean propagated)
     : _name(name), _type(type),     : _name(name), _type(type),
     _classOrigin(classOrigin), _propagated(propagated)      _classOrigin(classOrigin),
       _propagated(propagated),
       _ownerCount(0),
       _refCounter(1)
 { {
     // ensure name is not null     // ensure name is not null
     if(name.isNull())     if(name.isNull())
     {     {
         throw UninitializedObjectException();         throw UninitializedObjectException();
     }     }
 }      // Set the CIM name tag.
       _nameTag = generateCIMNameTag(_name);
 CIMMethodRep::~CIMMethodRep()  
 {  
 } }
  
 void CIMMethodRep::setName(const CIMName& name) void CIMMethodRep::setName(const CIMName& name)
Line 97 
Line 87 
     {     {
         throw UninitializedObjectException();         throw UninitializedObjectException();
     }     }
       if (_ownerCount != 0 && _name != name)
     _name = name;  
 }  
   
 void CIMMethodRep::setClassOrigin(const CIMName& classOrigin)  
 { {
     _classOrigin = classOrigin;          MessageLoaderParms parms(
               "Common.CIMMethodRep.CONTAINED_METHOD_NAMECHANGEDEXCEPTION",
               "Attempted to change the name of a method"
                   " already in a container.");
           throw Exception(parms);
       }
       _name = name;
       // Set the CIM name tag.
       _nameTag = generateCIMNameTag(_name);
 } }
  
 void CIMMethodRep::addParameter(const CIMParameter& x) void CIMMethodRep::addParameter(const CIMParameter& x)
Line 111 
Line 105 
     if (x.isUninitialized())     if (x.isUninitialized())
         throw UninitializedObjectException();         throw UninitializedObjectException();
  
     if (findParameter(x.getName()) != PEG_NOT_FOUND){      if (findParameter(x.getName()) != PEG_NOT_FOUND)
         //l10n      {
                 //throw AlreadyExistsException  
             //("parameter \"" + x.getName().getString () + "\"");  
         MessageLoaderParms parms("Common.CIMMethodRep.PARAMETER",         MessageLoaderParms parms("Common.CIMMethodRep.PARAMETER",
                                                          "parameter \"$0\"",                                                          "parameter \"$0\"",
                                                          x.getName().getString());                                                          x.getName().getString());
Line 124 
Line 116 
     _parameters.append(x);     _parameters.append(x);
 } }
  
 Uint32 CIMMethodRep::findParameter(const CIMName& name) const  
 {  
     for (Uint32 i = 0, n = _parameters.size(); i < n; i++)  
     {  
         if (name.equal(_parameters[i].getName()))  
             return i;  
     }  
   
     return PEG_NOT_FOUND;  
 }  
   
 CIMParameter CIMMethodRep::getParameter(Uint32 index)  
 {  
     if (index >= _parameters.size())  
         throw IndexOutOfBoundsException();  
   
     return _parameters[index];  
 }  
   
 void CIMMethodRep::removeParameter(Uint32 index)  
 {  
     if (index >= _parameters.size())  
         throw IndexOutOfBoundsException();  
   
     _parameters.remove (index);  
 }  
   
 Uint32 CIMMethodRep::getParameterCount() const  
 {  
     return _parameters.size();  
 }  
   
 void CIMMethodRep::resolve( void CIMMethodRep::resolve(
     DeclContext* declContext,     DeclContext* declContext,
     const CIMNamespaceName& nameSpace,     const CIMNamespaceName& nameSpace,
Line 210 
Line 170 
         Resolver::resolveParameter (_parameters[i], declContext, nameSpace);         Resolver::resolveParameter (_parameters[i], declContext, nameSpace);
 } }
  
 static const char* _toString(Boolean x)  Boolean CIMMethodRep::identical(const CIMMethodRep* x) const
 {  
     return x ? "true" : "false";  
 }  
   
 void CIMMethodRep::toXml(Buffer& out) const  
 {  
     out << STRLIT("<METHOD NAME=\"") << _name;  
     out.append('"');  
   
     out << STRLIT(" TYPE=\"") << cimTypeToString(_type);  
     out.append('"');  
   
     if (!_classOrigin.isNull())  
     {  
         out << STRLIT(" CLASSORIGIN=\"") << _classOrigin;  
         out.append('"');  
     }  
   
     if (_propagated != false)  
     {  
         out << STRLIT(" PROPAGATED=\"") << _toString(_propagated);  
         out.append('"');  
     }  
   
     out << STRLIT(">\n");  
   
     _qualifiers.toXml(out);  
   
     for (Uint32 i = 0, n = _parameters.size(); i < n; i++)  
         XmlWriter::appendParameterElement(out, _parameters[i]);  
   
     out << STRLIT("</METHOD>\n");  
 }  
   
 /**  
     The BNF for this is;  
     methodDeclaration   =  [ qualifierList ] dataType methodName  
                            "(" [ parameterList ] ")" ";"  
   
     parameterList       =  parameter *( "," parameter )  
     Format with qualifiers on one line and declaration on another. Start  
     with newline but none at the end.  
 */  
 void CIMMethodRep::toMof(Buffer& out) const   //ATTNKS:  
 { {
     // Output the qualifier list starting on new line      // If the pointers are the same, the objects must be identical
     if (_qualifiers.getCount())      if (this == x)
         out.append('\n');  
   
     _qualifiers.toMof(out);  
   
     // output the type, MethodName and ParmeterList left enclosure  
     out.append('\n');  
     out << cimTypeToString(_type);  
     out.append(' ');  
     out << _name;  
     out.append('(');  
   
     // output the param list separated by commas.  
   
     for (Uint32 i = 0, n = _parameters.size(); i < n; i++)  
     {     {
         // If not first, output comma separator          return true;
         if (i)  
             out << STRLIT(", ");  
   
         MofWriter::appendParameterElement(out, _parameters[i]);  
     }  
   
     // output the parameterlist and method terminator  
     out << STRLIT(");");  
 } }
  
   
 Boolean CIMMethodRep::identical(const CIMMethodRep* x) const  
 {  
     if (!_name.equal (x->_name))     if (!_name.equal (x->_name))
         return false;         return false;
  
Line 308 
Line 199 
     return true;     return true;
 } }
  
 void CIMMethodRep::setType(CIMType type)  
 {  
     _type = type;  
 }  
   
 PEGASUS_NAMESPACE_END PEGASUS_NAMESPACE_END


Legend:
Removed from v.1.48  
changed lines
  Added in v.1.60

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2