susantha    2003/07/01 03:50:12

  Modified:    c/src/wcg WSClass.h WSClass.cpp Variable.h Variable.cpp
                        Method.h Method.cpp HeaderFile.h HeaderFile.cpp
                        BeanClass.h BeanClass.cpp
  Added:       c/src/wcg WCGenerator.h WCGenerator.cpp File.h File.cpp
  Log:
  more code added
  
  Revision  Changes    Path
  1.2       +9 -0      xml-axis/c/src/wcg/WSClass.h
  
  Index: WSClass.h
  ===================================================================
  RCS file: /home/cvs/xml-axis/c/src/wcg/WSClass.h,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- WSClass.h 27 Jun 2003 12:28:37 -0000      1.1
  +++ WSClass.h 1 Jul 2003 10:50:11 -0000       1.2
  @@ -73,6 +73,7 @@
   
   #include "Variable.h"
   #include "Method.h"
  +#include "File.h"
   
   #include <list>
   using namespace std;
  @@ -80,6 +81,14 @@
   class WSClass  
   {
   public:
  +     int GenerateClassImpl(File& file);
  +     int GenerateClassDef(File& file);
  +     const string& GetName();
  +     void SetDestructor(Method* pMethod);
  +     void AddMethod(Method* pMethod);
  +     void AddConstructor(Method* pMethod);
  +     void AddVariable(Variable* pVar);
  +     void SetClassName(string& sName);
        WSClass();
        virtual ~WSClass();
   private:
  
  
  
  1.2       +66 -1     xml-axis/c/src/wcg/WSClass.cpp
  
  Index: WSClass.cpp
  ===================================================================
  RCS file: /home/cvs/xml-axis/c/src/wcg/WSClass.cpp,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- WSClass.cpp       27 Jun 2003 12:28:37 -0000      1.1
  +++ WSClass.cpp       1 Jul 2003 10:50:11 -0000       1.2
  @@ -72,10 +72,75 @@
   
   WSClass::WSClass()
   {
  -
  +     m_Name = "";
  +     m_pDestructor = NULL;
   }
   
   WSClass::~WSClass()
   {
  +     for(list<Variable*>::iterator it = m_Variables.begin(); it != 
m_Variables.end(); it++)
  +     {       
  +             delete *it;
  +     }
  +     list<Method*>::iterator it1;
  +     for( it1 = m_Constructors.begin(); it1 != m_Constructors.end(); it1++)
  +     {       
  +             delete *it1;
  +     }
  +     for (it1 = m_Methods.begin(); it1 != m_Methods.end(); it1++)
  +     {
  +             delete *it1;
  +     }
  +     if (m_pDestructor) delete m_pDestructor;
  +
  +}
   
  +void WSClass::SetClassName(string &sName)
  +{
  +     m_Name = sName;
  +}
  +
  +void WSClass::AddVariable(Variable *pVar)
  +{
  +     m_Variables.push_back(pVar);
  +}
  +
  +void WSClass::AddConstructor(Method *pMethod)
  +{
  +     m_Constructors.push_back(pMethod);
  +}
  +
  +void WSClass::AddMethod(Method *pMethod)
  +{
  +     m_Methods.push_back(pMethod);
  +}
  +
  +void WSClass::SetDestructor(Method *pMethod)
  +{
  +     m_pDestructor = pMethod;
  +}
  +
  +const string& WSClass::GetName()
  +{
  +     return m_Name;
  +}
  +
  +int WSClass::GenerateClassDef(File &file)
  +{
  +     try {
  +             //add wrapper class
  +             file << "class " << GetName() << "Wrapper" << " : public 
WrapperClassHandler" << endl << "{" << endl;
  +             
  +             file << "};" << endl;   
  +     }
  +     catch(...) //any exception
  +     {
  +             return 1;
  +     }
  +     return 0; //success
  +}
  +
  +int WSClass::GenerateClassImpl(File &file)
  +{
  +     return 0;
   }
  
  
  
  1.2       +12 -7     xml-axis/c/src/wcg/Variable.h
  
  Index: Variable.h
  ===================================================================
  RCS file: /home/cvs/xml-axis/c/src/wcg/Variable.h,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Variable.h        27 Jun 2003 12:28:37 -0000      1.1
  +++ Variable.h        1 Jul 2003 10:50:11 -0000       1.2
  @@ -74,26 +74,31 @@
   #include <string>
   using namespace std;
   
  +enum VARTYPE { VAR_INT=1, VAR_FLOAT, VAR_STRING, VAR_LONG, VAR_SHORT, VAR_BYTE, 
VAR_UNSIGNEDLONG, \
  +                             VAR_BOOLEAN, VAR_UNSIGNEDINT, VAR_UNSIGNEDSHORT, 
VAR_UNSIGNEDBYTE, \
  +                             VAR_DOUBLE, VAR_USER};
  +
   //Variable Qualifiers
   const unsigned char VQ_PRIVATE = 0x01;
   const unsigned char VQ_PROTECTED = 0x02;
  -const unsigned char VQ_PUBLIC = 0x04;
  -const unsigned char VQ_STATIC = 0x08;
  -const unsigned char VQ_CONST = 0x10;
  -const unsigned char VQ_REFTYPE = 0x20;
  -const unsigned char VQ_PTRTYPE = 0x40;
  -const unsigned char VQ_PTRPTRTYPE = 0x80;
  +const unsigned char VQ_STATIC = 0x04;
  +const unsigned char VQ_CONST = 0x08;
  +const unsigned char VQ_REFTYPE = 0x10;
  +const unsigned char VQ_PTRTYPE = 0x20;
  +const unsigned char VQ_PTRPTRTYPE = 0x40;
   
   class Variable  
   {
   public:
  +     void SetVarName(string& sVarName);
  +     void SetType(int nType, string sType="");
        Variable();
        virtual ~Variable();
   private:
        int m_Type;
        string m_TypeName; //if m_Type is user type
        string m_VarName;
  -     unsigned char m_Qualifier; 
//private=1/protected=2/public=4/static=8/const=16/reference type=32/pointer 
type=64/pointer to pointer type=128
  +     unsigned char m_Qualifier; 
//private=1/protected=2/public=0/static=4/const=8/reference type=16/pointer 
type=32/pointer to pointer type=64
   };
   
   #endif // !defined(AFX_VARIABLE_H__F9272406_BB8F_4151_8346_E033DDDDA468__INCLUDED_)
  
  
  
  1.2       +15 -1     xml-axis/c/src/wcg/Variable.cpp
  
  Index: Variable.cpp
  ===================================================================
  RCS file: /home/cvs/xml-axis/c/src/wcg/Variable.cpp,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Variable.cpp      27 Jun 2003 12:28:37 -0000      1.1
  +++ Variable.cpp      1 Jul 2003 10:50:11 -0000       1.2
  @@ -72,10 +72,24 @@
   
   Variable::Variable()
   {
  -
  +     m_Qualifier = 0;
  +     m_Type = 0;
  +     m_TypeName = "";
  +     m_VarName = "";
   }
   
   Variable::~Variable()
   {
   
  +}
  +
  +void Variable::SetType(int nType, string sType)
  +{
  +     m_Type = nType;
  +     if (nType == VAR_USER) m_TypeName = sType;
  +}
  +
  +void Variable::SetVarName(string &sVarName)
  +{
  +     m_VarName = sVarName;
   }
  
  
  
  1.2       +9 -6      xml-axis/c/src/wcg/Method.h
  
  Index: Method.h
  ===================================================================
  RCS file: /home/cvs/xml-axis/c/src/wcg/Method.h,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Method.h  27 Jun 2003 12:28:37 -0000      1.1
  +++ Method.h  1 Jul 2003 10:50:11 -0000       1.2
  @@ -81,21 +81,24 @@
   //Method Qualifiers
   const unsigned char MQ_PRIVATE = 0x01;
   const unsigned char MQ_PROTECTED = 0x02;
  -const unsigned char MQ_PUBLIC = 0x04;
  -const unsigned char MQ_STATIC = 0x08;
  -const unsigned char MQ_CONST = 0x10;
  -const unsigned char MQ_VIRTUAL = 0x20;
  +const unsigned char MQ_STATIC = 0x04;
  +const unsigned char MQ_CONST = 0x08;
  +const unsigned char MQ_VIRTUAL = 0x10;
   
   class Method  
   {
   public:
  +     void SetQualification(unsigned char sQualifier);
  +     void SetMethodName(string& sName);
  +     void AddParameter(Variable* pVar);
  +     void AddReturnType(Variable* pVar);
        Method();
        virtual ~Method();
   private:
  -     Variable m_ReturnType;
  +     Variable* m_pReturnType;
        string m_Name;
        list<Variable*> m_Params;
  -     unsigned char m_Qualifier; 
//private=1/protected=2/public=4/static=8/const=16/virtual=32
  +     unsigned char m_Qualifier; 
//private=1/protected=2/public=0/static=4/const=8/virtual=16
   };
   
   #endif // !defined(AFX_METHOD_H__87FCCB11_EF9C_409E_81F6_99F054B5E609__INCLUDED_)
  
  
  
  1.2       +27 -1     xml-axis/c/src/wcg/Method.cpp
  
  Index: Method.cpp
  ===================================================================
  RCS file: /home/cvs/xml-axis/c/src/wcg/Method.cpp,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Method.cpp        27 Jun 2003 12:28:37 -0000      1.1
  +++ Method.cpp        1 Jul 2003 10:50:11 -0000       1.2
  @@ -72,10 +72,36 @@
   
   Method::Method()
   {
  -
  +     m_Qualifier=0;
  +     m_Name="";
  +     m_pReturnType = NULL;
   }
   
   Method::~Method()
   {
  +     if (m_pReturnType) delete m_pReturnType;
  +     for (list<Variable*>::iterator it = m_Params.begin(); it != m_Params.end(); 
it++)
  +     {
  +             delete *it;
  +     }
  +}
  +
  +void Method::AddReturnType(Variable *pVar)
  +{
  +     m_pReturnType = pVar;
  +}
  +
  +void Method::AddParameter(Variable *pVar)
  +{
  +     m_Params.push_back(pVar);
  +}
  +
  +void Method::SetMethodName(string &sName)
  +{
  +     m_Name = sName;
  +}
   
  +void Method::SetQualification(unsigned char sQualifier)
  +{
  +     m_Qualifier|=sQualifier;
   }
  
  
  
  1.2       +8 -1      xml-axis/c/src/wcg/HeaderFile.h
  
  Index: HeaderFile.h
  ===================================================================
  RCS file: /home/cvs/xml-axis/c/src/wcg/HeaderFile.h,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- HeaderFile.h      27 Jun 2003 12:28:37 -0000      1.1
  +++ HeaderFile.h      1 Jul 2003 10:50:11 -0000       1.2
  @@ -81,12 +81,19 @@
   class HeaderFile  
   {
   public:
  +     void AddBeanClass(BeanClass* pClass);
  +     void SetWSClass(WSClass* pClass);
  +     void AddNSDecl(string& sNSDecl);
  +     void AddInclude(string& sInclude);
  +     int GenerateWrapperClassImpl();
  +     int GenerateWrapperClassDef();
  +     int GenerateWSDL();
        HeaderFile();
        virtual ~HeaderFile();
   private:
        list<string> m_includes;
        list<string> m_nsdecls;
  -     WSClass m_WSClass; //there can be only one web service class per header file.
  +     WSClass *m_pWSClass; //there can be only one web service class per header file.
        list<BeanClass*> m_Beans;
   };
   
  
  
  
  1.2       +72 -1     xml-axis/c/src/wcg/HeaderFile.cpp
  
  Index: HeaderFile.cpp
  ===================================================================
  RCS file: /home/cvs/xml-axis/c/src/wcg/HeaderFile.cpp,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- HeaderFile.cpp    27 Jun 2003 12:28:37 -0000      1.1
  +++ HeaderFile.cpp    1 Jul 2003 10:50:11 -0000       1.2
  @@ -65,17 +65,88 @@
   //////////////////////////////////////////////////////////////////////
   
   #include "HeaderFile.h"
  +#include "File.h"
   
   //////////////////////////////////////////////////////////////////////
   // Construction/Destruction
   //////////////////////////////////////////////////////////////////////
  +#define WCID(X) "__WRAPPER_CLASS_" << X << "_INCLUDED__"
   
   HeaderFile::HeaderFile()
   {
  -
  +     m_pWSClass = NULL;
   }
   
   HeaderFile::~HeaderFile()
   {
  +     if (m_pWSClass) delete m_pWSClass;
  +     for (list<BeanClass*>::iterator it = m_Beans.begin(); it != m_Beans.end(); 
it++)
  +     {
  +             delete *it;
  +     }
  +}
  +
  +int HeaderFile::GenerateWSDL()
  +{
  +     try {
  +
  +     
  +     }
  +     catch(...) //any exception
  +     {
  +             return 1;
  +     }
  +     return 0; //success
  +}
  +
  +int HeaderFile::GenerateWrapperClassDef()
  +{
  +     try {
  +             if (!m_pWSClass) return 1;
  +             string fname = m_pWSClass->GetName() + "Wrapper.hpp"; 
  +             File file(fname);
  +             file << "#if !defined " << WCID(m_pWSClass->GetName().c_str()) << endl;
  +             file << "#define " << WCID(m_pWSClass->GetName().c_str()) << endl;
  +             //add includes
  +             m_pWSClass->GenerateClassDef(file);
  +             file << "#endif" << endl;
  +     }
  +     catch(...) //any exception
  +     {
  +             return 1;
  +     }
  +     return 0; //success
  +}
  +
  +int HeaderFile::GenerateWrapperClassImpl()
  +{
  +     try {
   
  +     
  +     }
  +     catch(...) //any exception
  +     {
  +             return 1;
  +     }
  +     return 0; //success
  +}
  +
  +void HeaderFile::AddInclude(string &sInclude)
  +{
  +     m_includes.push_back(sInclude);
  +}
  +
  +void HeaderFile::AddNSDecl(string &sNSDecl)
  +{
  +     m_nsdecls.push_back(sNSDecl);
  +}
  +
  +void HeaderFile::SetWSClass(WSClass *pClass)
  +{
  +     m_pWSClass = pClass;
  +}
  +
  +void HeaderFile::AddBeanClass(BeanClass *pClass)
  +{
  +     m_Beans.push_back(pClass);
   }
  
  
  
  1.2       +1 -0      xml-axis/c/src/wcg/BeanClass.h
  
  Index: BeanClass.h
  ===================================================================
  RCS file: /home/cvs/xml-axis/c/src/wcg/BeanClass.h,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- BeanClass.h       27 Jun 2003 12:28:37 -0000      1.1
  +++ BeanClass.h       1 Jul 2003 10:50:11 -0000       1.2
  @@ -79,6 +79,7 @@
   class BeanClass  
   {
   public:
  +     void AddVariable(Variable* pVar);
        BeanClass();
        virtual ~BeanClass();
   private:
  
  
  
  1.2       +8 -0      xml-axis/c/src/wcg/BeanClass.cpp
  
  Index: BeanClass.cpp
  ===================================================================
  RCS file: /home/cvs/xml-axis/c/src/wcg/BeanClass.cpp,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- BeanClass.cpp     27 Jun 2003 12:28:37 -0000      1.1
  +++ BeanClass.cpp     1 Jul 2003 10:50:11 -0000       1.2
  @@ -78,5 +78,13 @@
   
   BeanClass::~BeanClass()
   {
  +     for (list<Variable*>::iterator it = m_Variables.begin(); it != 
m_Variables.end(); it++)
  +     {
  +             delete *it;
  +     }
  +}
   
  +void BeanClass::AddVariable(Variable *pVar)
  +{
  +     m_Variables.push_back(pVar);
   }
  
  
  
  1.1                  xml-axis/c/src/wcg/WCGenerator.h
  
  Index: WCGenerator.h
  ===================================================================
  // WCGenerator.h: interface for the WCGenerator class.
  //
  //////////////////////////////////////////////////////////////////////
  
  #if !defined(AFX_WCGENERATOR_H__720250A8_3F71_4C41_88BD_BB590C1E44A8__INCLUDED_)
  #define AFX_WCGENERATOR_H__720250A8_3F71_4C41_88BD_BB590C1E44A8__INCLUDED_
  
  #if _MSC_VER > 1000
  #pragma once
  #endif // _MSC_VER > 1000
  
  #include <string>
  using namespace std;
  
  class WCGenerator  
  {
  public:
        int DoDeploy();
        void SetWSDD(string& sWsddfile);
        void SetWSLibrary(string& sLibfile);
        void SetWSDefinition(string& sHeaderfile);
        WCGenerator();
        virtual ~WCGenerator();
  
  };
  
  #endif // 
!defined(AFX_WCGENERATOR_H__720250A8_3F71_4C41_88BD_BB590C1E44A8__INCLUDED_)
  
  
  
  1.1                  xml-axis/c/src/wcg/WCGenerator.cpp
  
  Index: WCGenerator.cpp
  ===================================================================
  // WCGenerator.cpp: implementation of the WCGenerator class.
  //
  //////////////////////////////////////////////////////////////////////
  
  #include "WCGenerator.h"
  
  //////////////////////////////////////////////////////////////////////
  // Construction/Destruction
  //////////////////////////////////////////////////////////////////////
  #include "WSClass.h"
  #include "HeaderFile.h"
  
  WCGenerator::WCGenerator()
  {
  
  }
  
  WCGenerator::~WCGenerator()
  {
  
  }
  
  void WCGenerator::SetWSDefinition(string &sHeaderfile)
  {
  
  }
  
  void WCGenerator::SetWSLibrary(string &sLibfile)
  {
  
  }
  
  void WCGenerator::SetWSDD(string &sWsddfile)
  {
  
  }
  
  int WCGenerator::DoDeploy()
  {
        return 0;
  }
  
  int main(int argc, char*argv[])
  {
        WSClass* pCl = new WSClass();
        pCl->SetClassName(string("Test"));
        HeaderFile hf;
        hf.SetWSClass(pCl);
        hf.GenerateWrapperClassDef();
        return 0;
  }
  
  
  
  1.1                  xml-axis/c/src/wcg/File.h
  
  Index: File.h
  ===================================================================
  // File.h: interface for the File class.
  //
  //////////////////////////////////////////////////////////////////////
  
  #if !defined(AFX_FILE_H__E30356C1_DD4A_4FCF_A529_713455BB6E02__INCLUDED_)
  #define AFX_FILE_H__E30356C1_DD4A_4FCF_A529_713455BB6E02__INCLUDED_
  
  #if _MSC_VER > 1000
  #pragma once
  #endif // _MSC_VER > 1000
  
  #include <string>
  #include <fstream>
  using namespace std;
  
  class File : public ofstream
  {
  public:
        int Write(char* pChars);
        File(const string& sFileName);
        virtual ~File();
  };
  
  #endif // !defined(AFX_FILE_H__E30356C1_DD4A_4FCF_A529_713455BB6E02__INCLUDED_)
  
  
  
  1.1                  xml-axis/c/src/wcg/File.cpp
  
  Index: File.cpp
  ===================================================================
  // File.cpp: implementation of the File class.
  //
  //////////////////////////////////////////////////////////////////////
  
  #include "File.h"
  
  //////////////////////////////////////////////////////////////////////
  // Construction/Destruction
  //////////////////////////////////////////////////////////////////////
  
  File::File(const string& sFileName): ofstream(sFileName.c_str())
  {
  
  }
  
  File::~File()
  {
  }
  
  int File::Write(char *pChars)
  {
        return 0;
  }
  
  
  

Reply via email to