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

Diff for /pegasus/src/Pegasus/Compiler/cimmofMRR.cpp between version 1.5 and 1.5.6.2

version 1.5, 2009/02/04 22:46:59 version 1.5.6.2, 2014/03/12 22:35:02
Line 25 
Line 25 
 // TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE // TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
 // SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 // //
 //////////////////////////////////////////////////////////////////////////  //%/////////////////////////////////////////////////////////////////////////////
   
   /**
    * Memory Resident Repository implementation.  See PEP 307
    */
   
   #include <cstdio>
   #include <cstdarg>
   #include <cctype>
   #include <Pegasus/Common/System.h>
   #include <Pegasus/Repository/MRRTypes.h>
   #include <Pegasus/Repository/MRRSerialization.h>
   #include <Pegasus/Common/Constants.h>
   #include "cimmofMRR.h"
   #include "Closure.h"
   
   #define PEGASUS_LLD "%" PEGASUS_64BIT_CONVERSION_WIDTH "d"
   #define PEGASUS_LLU "%" PEGASUS_64BIT_CONVERSION_WIDTH "u"
   
   PEGASUS_USING_STD;
   
   PEGASUS_NAMESPACE_BEGIN
   
   #define PEGASUS_ARRAY_T CIMConstQualifier
   # include <Pegasus/Common/ArrayImpl.h>
   #undef PEGASUS_ARRAY_T
   
   //==============================================================================
 // //
 // Local routines: // Local routines:
 // //
Line 200 
Line 227 
     Uint32 flags = 0;     Uint32 flags = 0;
  
     if (isProperty)     if (isProperty)
       {
         flags |= MRR_FLAG_READ;         flags |= MRR_FLAG_READ;
       }
  
     if (isParameter)     if (isParameter)
       {
         flags |= MRR_FLAG_IN;         flags |= MRR_FLAG_IN;
       }
  
       // set the flags bits in the qualifier maskfor each qualifier type
     for (Uint32 i = 0; i < c.getQualifierCount(); i++)     for (Uint32 i = 0; i < c.getQualifierCount(); i++)
     {     {
         CIMConstQualifier cq = c.getQualifier(i);         CIMConstQualifier cq = c.getQualifier(i);
         const CIMName& qn = cq.getName();         const CIMName& qn = cq.getName();
  
         if (cq.getType() != CIMTYPE_BOOLEAN || cq.isArray())         if (cq.getType() != CIMTYPE_BOOLEAN || cq.isArray())
           {
             continue;             continue;
           }
  
         Boolean x;         Boolean x;
         cq.getValue().get(x);         cq.getValue().get(x);
  
   
         if (System::strcasecmp(*Str(qn), "KEY") == 0)         if (System::strcasecmp(*Str(qn), "KEY") == 0)
         {         {
             if (x)             if (x)
Line 439 
Line 472 
     Uint32 pos = cc.findQualifier(name);     Uint32 pos = cc.findQualifier(name);
  
     if (pos == PEG_NOT_FOUND)     if (pos == PEG_NOT_FOUND)
       {
         return false;         return false;
       }
  
     CIMConstQualifier cq = cc.getQualifier(pos);     CIMConstQualifier cq = cc.getQualifier(pos);
  
     if (cq.getType() != CIMTYPE_BOOLEAN || cq.isArray())     if (cq.getType() != CIMTYPE_BOOLEAN || cq.isArray())
       {
         return false;         return false;
       }
  
     Boolean x;     Boolean x;
     cq.getValue().get(x);     cq.getValue().get(x);
Line 570 
Line 607 
     }     }
  
     if (quote)     if (quote)
       {
         fputc('"', os);         fputc('"', os);
       }
  
     if (cv.isArray())     if (cv.isArray())
     {     {
Line 584 
Line 623 
                 _writeUint16(os, x.size());                 _writeUint16(os, x.size());
  
                 for (Uint32 i = 0; i < x.size(); i++)                 for (Uint32 i = 0; i < x.size(); i++)
                   {
                     _writeBoolean(os, x[i]);                     _writeBoolean(os, x[i]);
                   }
                 break;                 break;
             }             }
  
Line 596 
Line 637 
                 _writeUint16(os, x.size());                 _writeUint16(os, x.size());
  
                 for (Uint32 i = 0; i < x.size(); i++)                 for (Uint32 i = 0; i < x.size(); i++)
                   {
                     _writeUint8(os, x[i]);                     _writeUint8(os, x[i]);
                   }
                 break;                 break;
             }             }
  
Line 608 
Line 651 
                 _writeUint16(os, x.size());                 _writeUint16(os, x.size());
  
                 for (Uint32 i = 0; i < x.size(); i++)                 for (Uint32 i = 0; i < x.size(); i++)
                   {
                     _writeSint8(os, x[i]);                     _writeSint8(os, x[i]);
                   }
                 break;                 break;
             }             }
  
Line 620 
Line 665 
                 _writeUint16(os, x.size());                 _writeUint16(os, x.size());
  
                 for (Uint32 i = 0; i < x.size(); i++)                 for (Uint32 i = 0; i < x.size(); i++)
                   {
                     _writeUint16(os, x[i]);                     _writeUint16(os, x[i]);
                   }
                 break;                 break;
             }             }
  
Line 632 
Line 679 
                 _writeUint16(os, x.size());                 _writeUint16(os, x.size());
  
                 for (Uint32 i = 0; i < x.size(); i++)                 for (Uint32 i = 0; i < x.size(); i++)
                   {
                     _writeSint16(os, x[i]);                     _writeSint16(os, x[i]);
                   }
                 break;                 break;
             }             }
  
Line 644 
Line 693 
                 _writeUint16(os, x.size());                 _writeUint16(os, x.size());
  
                 for (Uint32 i = 0; i < x.size(); i++)                 for (Uint32 i = 0; i < x.size(); i++)
                   {
                     _writeUint32(os, x[i]);                     _writeUint32(os, x[i]);
                   }
                 break;                 break;
             }             }
  
Line 656 
Line 707 
                 _writeUint16(os, x.size());                 _writeUint16(os, x.size());
  
                 for (Uint32 i = 0; i < x.size(); i++)                 for (Uint32 i = 0; i < x.size(); i++)
                   {
                     _writeSint32(os, x[i]);                     _writeSint32(os, x[i]);
                   }
                 break;                 break;
             }             }
  
Line 668 
Line 721 
                 _writeUint16(os, x.size());                 _writeUint16(os, x.size());
  
                 for (Uint32 i = 0; i < x.size(); i++)                 for (Uint32 i = 0; i < x.size(); i++)
                   {
                     _writeUint64(os, x[i]);                     _writeUint64(os, x[i]);
                   }
                 break;                 break;
             }             }
  
Line 680 
Line 735 
                 _writeUint16(os, x.size());                 _writeUint16(os, x.size());
  
                 for (Uint32 i = 0; i < x.size(); i++)                 for (Uint32 i = 0; i < x.size(); i++)
                   {
                     _writeSint64(os, x[i]);                     _writeSint64(os, x[i]);
                   }
                 break;                 break;
             }             }
  
Line 692 
Line 749 
                 _writeUint16(os, x.size());                 _writeUint16(os, x.size());
  
                 for (Uint32 i = 0; i < x.size(); i++)                 for (Uint32 i = 0; i < x.size(); i++)
                   {
                     _writeReal32(os, x[i]);                     _writeReal32(os, x[i]);
                   }
                 break;                 break;
             }             }
  
Line 704 
Line 763 
                 _writeUint16(os, x.size());                 _writeUint16(os, x.size());
  
                 for (Uint32 i = 0; i < x.size(); i++)                 for (Uint32 i = 0; i < x.size(); i++)
                   {
                     _writeReal64(os, x[i]);                     _writeReal64(os, x[i]);
                   }
                 break;                 break;
             }             }
  
Line 716 
Line 777 
                 _writeUint16(os, x.size());                 _writeUint16(os, x.size());
  
                 for (Uint32 i = 0; i < x.size(); i++)                 for (Uint32 i = 0; i < x.size(); i++)
                   {
                     _writeChar16(os, x[i]);                     _writeChar16(os, x[i]);
                   }
                 break;                 break;
             }             }
  
Line 743 
Line 806 
                 _writeUint16(os, x.size());                 _writeUint16(os, x.size());
  
                 for (Uint32 i = 0; i < x.size(); i++)                 for (Uint32 i = 0; i < x.size(); i++)
                   {
                     _writeDateTime(os, x[i]);                     _writeDateTime(os, x[i]);
                   }
                 break;                 break;
             }             }
  
Line 873 
Line 938 
     }     }
  
     if (quote)     if (quote)
       {
         fputc('"', os);         fputc('"', os);
       }
  
     return 0;     return 0;
 } }
Line 1013 
Line 1080 
     FILE* is = fopen(*Str(path), "r");     FILE* is = fopen(*Str(path), "r");
  
     if (!is)     if (!is)
       {
         return;         return;
       }
  
     char buffer[1024];     char buffer[1024];
  
     for (int line = 1; fgets(buffer, sizeof(buffer), is) != NULL; line++)     for (int line = 1; fgets(buffer, sizeof(buffer), is) != NULL; line++)
     {     {
         if (buffer[0] == '#')         if (buffer[0] == '#')
           {
             continue;             continue;
           }
  
         char* start = buffer;         char* start = buffer;
  
         // Remove leading whitespace.         // Remove leading whitespace.
  
         while (isspace(*start))         while (isspace(*start))
           {
             start++;             start++;
           }
  
         // Remove trailing whitespace.         // Remove trailing whitespace.
  
         char* p = start;         char* p = start;
  
         while (*p)         while (*p)
           {
             p++;             p++;
           }
  
         while (p != start && isspace(p[-1]))         while (p != start && isspace(p[-1]))
           {
             *--p = '\0';             *--p = '\0';
           }
  
         // Skip empty lines.         // Skip empty lines.
  
         if (*start == '\0')         if (*start == '\0')
           {
             continue;             continue;
           }
  
         // Skip comment lines:         // Skip comment lines:
  
         if (*start == '#')         if (*start == '#')
           {
             continue;             continue;
           }
  
         /* Check whether legal class name. */         /* Check whether legal class name. */
  
Line 1073 
Line 1154 
         }         }
  
         if (!found)         if (!found)
           {
             classes.append(start);             classes.append(start);
     }     }
       }
  
     fclose(is);     fclose(is);
 } }
Line 1203 
Line 1286 
     printf("Created %s_namespace.cpp\n", *Str(ns));     printf("Created %s_namespace.cpp\n", *Str(ns));
  
     if (_instances.size())     if (_instances.size())
       {
         printf("Created %s_namespace.mrr\n", *Str(ns));         printf("Created %s_namespace.mrr\n", *Str(ns));
       }
  
     printf("\n");     printf("\n");
 } }
Line 1213 
Line 1298 
     for (Uint32 i = 0; i < _classes.size(); i++)     for (Uint32 i = 0; i < _classes.size(); i++)
     {     {
         if (_classes[i].getClassName() == className)         if (_classes[i].getClassName() == className)
           {
             return i;             return i;
     }     }
       }
  
     // Not found!     // Not found!
     return PEG_NOT_FOUND;     return PEG_NOT_FOUND;
Line 1225 
Line 1312 
     for (Uint32 i = 0; i < _qualifiers.size(); i++)     for (Uint32 i = 0; i < _qualifiers.size(); i++)
     {     {
         if (_qualifiers[i].getName() == qualifierName)         if (_qualifiers[i].getName() == qualifierName)
           {
             return i;             return i;
     }     }
       }
  
     // Not found!     // Not found!
     return PEG_NOT_FOUND;     return PEG_NOT_FOUND;
Line 1259 
Line 1348 
     const CIMConstQualifier& cq)     const CIMConstQualifier& cq)
 { {
     CIMName qn = cq.getName();     CIMName qn = cq.getName();
     CIMType qt = cq.getType();  
     CIMValue qv = cq.getValue();     CIMValue qv = cq.getValue();
  
     Uint32 pos = _findQualifier(qn);     Uint32 pos = _findQualifier(qn);
  
     if (pos == PEG_NOT_FOUND)     if (pos == PEG_NOT_FOUND)
       {
         _throw(CIM_ERR_FAILED, "undefined qualifier: %s", *Str(qn));         _throw(CIM_ERR_FAILED, "undefined qualifier: %s", *Str(qn));
       }
  
     // Write the qualifier string literal:     // Write the qualifier string literal:
  
Line 1350 
Line 1440 
             _out("%s", *Str(scopes[i]));             _out("%s", *Str(scopes[i]));
  
             if (i + 1 != scopes.size())             if (i + 1 != scopes.size())
               {
                 _out("|");                 _out("|");
         }         }
           }
  
         _outn(",");         _outn(",");
     }     }
Line 1383 
Line 1475 
             _out("%s", *Str(flavors[i]));             _out("%s", *Str(flavors[i]));
  
             if (i + 1 != flavors.size())             if (i + 1 != flavors.size())
               {
                 _out("|");                 _out("|");
         }         }
           }
  
         _outn(",");         _outn(",");
     }     }
Line 1406 
Line 1500 
     Array<CIMConstQualifier> tmp;     Array<CIMConstQualifier> tmp;
  
     for (Uint32 i = 0; i < c.getQualifierCount(); i++)     for (Uint32 i = 0; i < c.getQualifierCount(); i++)
       {
         tmp.append(c.getQualifier(i));         tmp.append(c.getQualifier(i));
       }
  
     return tmp;     return tmp;
 } }
Line 1423 
Line 1519 
     {     {
         CIMConstQualifier cq = qualifiers[i];         CIMConstQualifier cq = qualifiers[i];
         CIMName qn = cq.getName();         CIMName qn = cq.getName();
         CIMType qt = cq.getType();  
  
         if (_discard && qn == "Description")         if (_discard && qn == "Description")
           {
             continue;             continue;
           }
  
 #if 0 #if 0
         if (qt == CIMTYPE_BOOLEAN && !cq.isArray())         if (qt == CIMTYPE_BOOLEAN && !cq.isArray())
           {
             continue;             continue;
           }
 #endif #endif
  
         _writeQualifier(_qualifiers, cq);         _writeQualifier(_qualifiers, cq);
Line 1829 
Line 1928 
         CIMName cn = _classes[i].getClassName();         CIMName cn = _classes[i].getClassName();
  
         if (_includeClass(cn))         if (_includeClass(cn))
           {
             _outn("extern MRRClass __%s_%s;", *Str(ns), *Str(cn));             _outn("extern MRRClass __%s_%s;", *Str(ns), *Str(cn));
     }     }
       }
  
     _nl();     _nl();
  
Line 1841 
Line 1942 
         CIMName cn = _classes[i].getClassName();         CIMName cn = _classes[i].getClassName();
  
         if (_includeClass(cn))         if (_includeClass(cn))
           {
             _writeClass(nameSpace, _classes[i]);             _writeClass(nameSpace, _classes[i]);
     }     }
       }
  
     // Write qualifiers list:     // Write qualifiers list:
  
Line 1880 
Line 1983 
         CIMName cn = _classes[i].getClassName();         CIMName cn = _classes[i].getClassName();
  
         if (_includeClass(cn))         if (_includeClass(cn))
           {
             _outn("&__%s_%s,", *Str(ns), *Str(cn));             _outn("&__%s_%s,", *Str(ns), *Str(cn));
     }     }
       }
  
     _outn("0,");     _outn("0,");
  
Line 1927 
Line 2032 
 bool cimmofMRR::_includeClass(const CIMName& cn) bool cimmofMRR::_includeClass(const CIMName& cn)
 { {
     if (_closure.size() == 0)     if (_closure.size() == 0)
       {
         return true;         return true;
       }
  
     for (Uint32 i = 0; i < _closure.size(); i++)     for (Uint32 i = 0; i < _closure.size(); i++)
     {     {
         if (_closure[i] == cn)         if (_closure[i] == cn)
           {
             return true;             return true;
     }     }
       }
  
     return false;     return false;
 } }


Legend:
Removed from v.1.5  
changed lines
  Added in v.1.5.6.2

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2