⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 visualcpluspluscode.bas

📁 c#设计模式WithCla
💻 BAS
字号:
Attribute VB_Name = "VisualCPlusPlusCode"
Option Explicit
Option Base 1      'All array indexes start with 1
'(c) 1993-1998 MicroGold Software, Inc.
'Set Tools-Options-Editor All Boxes Checked
'Set Tools-Options-General Break On All Errors

Sub CodeLinkToVisualC()
Dim s1 As Object
Dim Document1 As Object
Dim ClassList As Object
Dim currentClass As Object
Dim strClass As String
Dim strClassHeader As String
Dim strClassSource As String
Dim strPath As String
Dim strProjectPath As String
Dim counter As Integer
Dim k As Integer

' CodeGenerateVCHeader
' CodeGenerateVCSource

strProjectPath = ActiveDocument.WorkingDirectory
Documents.Application.Visible = True
Set ClassList = ActiveDocument.Classes
    counter = ClassList.Count
      ClassList.Restart
      While (ClassList.IsLast = False)
       Set currentClass = ClassList.GetNext
       strClass = currentClass.Name
       Let strClassHeader = strProjectPath & "\" & strClass & ".h"
       Let strClassSource = strProjectPath & "\" & strClass & ".cpp"
       Documents.Open strClassHeader, "Text"
       Documents.Open strClassSource, "Text"
      Wend
End Sub

Sub CodeGenerateVCHeader()
 Dim wcDocument As Object
 Dim MyAttributes As Object
 Dim MyOperations As Object
 Dim MyParameters As Object
 Dim currentClass As Object
 Dim currentAttribute As Object
 Dim currentOperation As Object
 Dim currentBaseClass As Object
 Dim anindex As Integer
    Dim I As Integer
    Dim j As Integer
    Dim k As Integer
    Dim l As Integer
    Dim n As Integer
    Dim m As Integer
    Dim p As Integer
    Dim ParameterCount As Integer
    Dim counter As Integer
    Dim baseCounter As Integer
    Dim attrCounter As Integer
    Dim operCounter As Integer
    Dim includeCounter As Integer
    Dim filename As String
    Dim infile As String
    Dim cfilename As String
    Dim hfilename As String
    Dim tmpStr As String
    Dim strVis As String
    Dim ClassList As Object
    
    Set wcDocument = ActiveDocument
    Set ClassList = wcDocument.Classes
    counter = ClassList.Count
    For I = 1 To counter
    Set currentClass = ClassList.Item(I)
' *************** File Output ************************
        n = FreeFile
        hfilename = wcDocument.DocumentDirectory & "\" & currentClass.Name & ".h"
        Open hfilename For Output As #n
'*********************************************************
        Print #n, " "
        Print #n, "// **************************************************************"
        Print #n, "// "; currentClass.Description
        Print #n, "// **************************************************************"
        Print #n, " "
        Print #n, "class " & currentClass.Name;
        baseCounter = currentClass.SuperClasses.Count
        If (baseCounter > 0) Then
        Print #n, " : public ";
        For p = 1 To currentClass.SuperClasses.Count
        Set currentBaseClass = currentClass.SuperClasses.Item(p)
        Print #n, currentBaseClass.Name;
        If (p < baseCounter - 1) Then
            Print #n, ", ";
        End If
        Next p
        End If
        Print #n, " "
        Print #n, "{"
        Print #n, " "
        
        Set MyAttributes = currentClass.Attributes
        Set MyOperations = currentClass.Operations
        
        GenerateVCAttributes n, MyAttributes, "private"
        GenerateVCAttributes n, MyAttributes, "protected"
        GenerateVCAttributes n, MyAttributes, "public"
        
        
        Print #n, " "
        
        GenerateVCOperations n, MyOperations, "private"
        GenerateVCOperations n, MyOperations, "protected"
        GenerateVCOperations n, MyOperations, "public"
        
        Print #n, " "
        Print #n, "};"
        Close #n
    Next I
        
        MsgBox ("Finished generating C++ Header files")


End Sub

Private Function GenerateVCAttributePostKeywordString(currentAttribute As Object, strReturn As String)
 strReturn = ""
 If (currentAttribute.IsArray) Then
 strReturn = strReturn & "[" & currentAttribute.Length & "]"
 End If
End Function



Private Function GenerateVCAttributePreKeywordString(currentAttribute As Object, strReturn As String)
strReturn = ""
If currentAttribute.IsStatic Then
    strReturn = strReturn & "static "
    End If
If currentAttribute.IsConstant Then
    strReturn = strReturn & "const "
    End If
End Function



Private Function GenerateVCAttributes(FileId As Integer, TheAttributes As Object, Visibility As String)

Dim currentAttribute As Object
        Dim attrCounter As Integer
        Dim j As Integer
        Dim tmpStr As String
        Dim list As New Collection
        Dim k As Integer
        
        attrCounter = TheAttributes.Count
        For k = 1 To attrCounter
        Set currentAttribute = TheAttributes.Item(k)
        If (currentAttribute.Visibility = Visibility) Then
        list.Add currentAttribute
        End If
        Next k
        
        attrCounter = list.Count
        If attrCounter > 0 Then
            Print #FileId, Visibility & ":"
            attrCounter = list.Count
            For j = 1 To attrCounter
            Set currentAttribute = list.Item(j)
            GenerateVCAttributePreKeywordString currentAttribute, tmpStr
            Print #FileId, Tab(5); tmpStr;
            Print #FileId, Tab(20); currentAttribute.Type & " "; Tab(35); currentAttribute.Name;
            GenerateVCAttributePostKeywordString currentAttribute, tmpStr
            Print #FileId, tmpStr & ";"
            Next j
        End If
End Function

Private Function GenerateVCOperationPreKeywordString(currentOperation As Object, strReturn As String)
strReturn = ""
If currentOperation.IsFriend Then
    strReturn = strReturn & "friend "
    End If
If (currentOperation.IsVirtual) Then
    strReturn = strReturn & "virtual "
    End If
If currentOperation.IsStatic Then
    strReturn = strReturn & "static "
    End If
End Function



Private Function GenerateVCOperationPostKeywordString(currentOperation As Object, strReturn As String)
 strReturn = ""
If currentOperation.IsConst Then
    strReturn = strReturn & " const"
    End If
If (currentOperation.IsAbstract) Then
    strReturn = strReturn & " = 0"
    End If
End Function
Private Function GenerateVCParameterString(theParameters As Object, strReturn As String)
        Dim ParameterCount As Integer
        Dim l As Integer

        ParameterCount = theParameters.Count
        strReturn = ""
        For l = 1 To ParameterCount
        If (l = (ParameterCount - 1)) Then
            strReturn = strReturn & theParameters.ItemType(l) & " "
            strReturn = strReturn & theParameters.ItemName(l)
        Else
            strReturn = strReturn & theParameters.ItemType(l) & " "
            strReturn = strReturn & theParameters.ItemName(l) & ", "
        End If
        Next l
End Function
Private Sub GenerateVCOperations(FileId As Integer, TheOperations As Object, Visibility As String)
    Dim operCounter As Integer
    Dim currentOperation As Object
    Dim strVis As String
    Dim tmpStr As String
    Dim k As Integer
    Dim strOper As String
    Dim list As New Collection
    Dim z As Integer
        
        operCounter = TheOperations.Count
        For k = 1 To operCounter
        Set currentOperation = TheOperations.Item(k)
        If (currentOperation.Visibility = Visibility) Then
        list.Add currentOperation
        End If
        Next k
        
        operCounter = list.Count
        If operCounter > 0 Then

        
        
        Print #FileId, Visibility & ":"
        For z = 1 To operCounter
        Set currentOperation = list.Item(z)
        GenerateVCOperationPreKeywordString currentOperation, tmpStr
        Print #FileId, Tab(5); tmpStr;
        Print #FileId, Tab(20); currentOperation.ReturnType; Tab(35); currentOperation.Name; Tab(55); "(";
        GenerateVCParameterString currentOperation.Parameters, tmpStr
        Print #FileId, tmpStr & ")";
        GenerateVCOperationPostKeywordString currentOperation, tmpStr
        Print #FileId, tmpStr;
        Print #FileId, ";"
        Next z
        
        
        End If

End Sub

Sub CodeGenerateVCSource()
 Dim wcDocument As Object
 Dim MyOperations As Object
 Dim MyParameters As Object
 Dim currentClass As Object
 Dim currentOperation As Object
 Dim currentBaseClass As Object
    Dim I As Integer
    Dim n As Integer
    Dim ParameterCount As Integer
    Dim counter As Integer
    Dim baseCounter As Integer
    Dim attrCounter As Integer
    Dim operCounter As Integer
    Dim includeCounter As Integer
    Dim filename As String
    Dim infile As String
    Dim cfilename As String
    Dim hfilename As String
    Dim tmpStr As String
    Dim strVis As String
    Dim j As Integer
    Dim ClassList As Object
    
  
    
    
    
    
Set wcDocument = ActiveDocument

    Set ClassList = wcDocument.Classes
    counter = ClassList.Count


'    Print #n, "// Number of Classes = " & counter
    For I = 1 To counter
        Set currentClass = ClassList.Item(I)

' *************** File Output ************************
         n = FreeFile
        cfilename = wcDocument.DocumentDirectory & "\" & currentClass.Name & ".cpp"
        
        Open cfilename For Output As #n
'*********************************************************
        GenerateVCSourceIncludes n, currentClass
        Print #n, " "
        Print #n, " "
        Print #n, "// **************************************************************"
        Print #n, "// "; currentClass.Description
        Print #n, "// **************************************************************"
        Print #n, " "
        operCounter = currentClass.Operations.Count
        For j = 1 To operCounter
        Set currentOperation = currentClass.Operations.Item(j)
        GenerateVCOperationComments n, currentOperation
        GenerateVCOperationFramework n, currentOperation, currentClass
        Next j

        Close #n
    Next I
    
        MsgBox ("Finished Generating cpp Files")

End Sub

Private Sub GenerateVCSourceIncludes(FileId As Integer, currentClass As Object)
        Dim aggCounter As Integer
        Dim assocCounter As Integer
        Dim aggClass As With_Class.Class
        Dim assocClass As With_Class.Class
        Dim strInclude As String
        Dim baseCounter As Integer
        Dim p As Integer
        Dim currentBaseClass As With_Class.Class
        
        Print #FileId, "#include "; Chr(34); "stdafx.h"; Chr(34)
        Print #FileId, "#include "; Chr(34); currentClass.Name; ".h"; Chr(34)
        
       ' ****** Base Class Includes
        baseCounter = currentClass.SuperClasses.Count
        For p = 1 To baseCounter
        Set currentBaseClass = currentClass.SuperClasses.Item(p)
        Print #FileId, "#include "; Chr(34); currentBaseClass.Name; ".h"; Chr(34)
        Next p

       ' ****** agg Class Includes
        aggCounter = currentClass.AggregationClasses.Count
        For p = 1 To aggCounter
        Set aggClass = currentClass.AggregationClasses.Item(p)
        Print #FileId, "#include "; Chr(34); aggClass.Name; ".h"; Chr(34)
        Next p

       ' ****** assoc Class Includes
        assocCounter = currentClass.AssociationClasses.Count
        For p = 1 To assocCounter
        Set assocClass = currentClass.AssociationClasses.Item(p)
        Print #FileId, "#include "; Chr(34); assocClass.Name; ".h"; Chr(34)
        Next p

       ' ****** dependency Class Includes
        assocCounter = currentClass.DependencyClasses.Count
        For p = 1 To assocCounter
        Set assocClass = currentClass.DependencyClasses.Item(p)
        Print #FileId, "#include "; Chr(34); assocClass.Name; ".h"; Chr(34)
        Next p
        
       ' ****** include (import Class Includes
        assocCounter = currentClass.Imports.Count
        For p = 1 To assocCounter
        strInclude = currentClass.Imports.Item(p)
        Print #FileId, "#include "; Chr(34); strInclude; Chr(34)
        Next p
End Sub


Private Sub GenerateVCOperationComments(FileId As Integer, currentOperation As Object)
Dim strParms As String

  Print #FileId, "// Operation Name: "; Tab(30); currentOperation.Name
  Print #FileId, "// Operation Purpose: "; Tab(30); currentOperation.Comment1
  Print #FileId, "// Operation Return Type: "; Tab(30); currentOperation.ReturnType
  GenerateVCParameterString currentOperation.Parameters, strParms
  Print #FileId, "// Operation Parameters: "; Tab(30); strParms
  Print #FileId, "// Operation Comments: "; Tab(30); currentOperation.Comment2
End Sub

Private Function GenerateVCOperationFramework(FileId As Integer, currentOperation As Object, currentClass As Object)
  Dim strParms As String
  GenerateVCParameterString currentOperation.Parameters, strParms
  Print #FileId, currentOperation.ReturnType & "  " & currentClass.Name & "::" & currentOperation.Name;
  Print #FileId, "(" & strParms & ")"
  Print #FileId, Tab(2); "{"
  Print #FileId, Tab(2); currentOperation.Code
  Print #FileId, Tab(2); "}"
  Print #FileId, " "
End Function


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -