﻿<?xml version="1.0" encoding="utf-8"?>
<modelStoreModel xmlns:dm0="http://schemas.microsoft.com/VisualStudio/2008/DslTools/Core" xmlns:dm1="http://schemas.microsoft.com/dsltools/Kernel" xmlns:dm2="http://schemas.microsoft.com/dsltools/Component" xmlns:dm3="http://schemas.microsoft.com/dsltools/Activity" xmlns:dm4="http://schemas.microsoft.com/dsltools/UseCase" xmlns:dm5="http://schemas.microsoft.com/dsltools/Interaction" xmlns:dm6="http://schemas.microsoft.com/dsltools/UmlModelLibrary" xmlns:dm7="http://schemas.microsoft.com/dsltools/UmlDiagrams" xmlns:dm8="http://schemas.microsoft.com/dsltools/LogicalClassDesigner"
  dslVersion="1.0.0.0"
  Id="b3af561a-c313-42fa-9ab1-8971ea106b82"
  name="GenericUtils" xmlns="http://schemas.microsoft.com/dsltools/ModelStore">
  <ownedCommentsInternal>
    <comment
      Id="e40cb1e7-64e9-4512-9d25-4a690ccfb62c">
      <body>CodeLocation
指明当前类对象所处位置，通常用于日志定位，方便查阅相关函数。</body>
    </comment>
  </ownedCommentsInternal>
  <profileInstances>
    <packageHasProfileInstances
      Id="0caec977-1f8c-4ba3-a7db-8cc9ad9cc73b">
      <profileInstance
        Id="e34d544e-0fea-4ed6-ac5e-1b74119ac791"
        name="StandardProfileL2" />
    </packageHasProfileInstances>
    <packageHasProfileInstances
      Id="29349502-908c-4fda-9054-c48619c59ed0">
      <profileInstance
        Id="532ea607-fb19-44b8-8502-3351b05452be"
        name="StandardProfileL3" />
    </packageHasProfileInstances>
  </profileInstances>
  <packagedElements>
    <packageHasNamedElement>
      <Interface
        Id="a2fd00a0-f1ba-4ec2-bde6-0cdb30ff1397"
        name="ILogTool"
        isAbstract="false"
        isLeaf="false" />
    </packageHasNamedElement>
    <packageHasNamedElement>
      <class
        Id="18bb8c9c-c4ee-4e62-8431-b056d181b7b4"
        name="LogToolImp"
        isAbstract="false"
        isLeaf="false"
        isActiveClass="false" />
    </packageHasNamedElement>
    <packageHasNamedElement>
      <class
        Id="ada0d6df-51cf-48aa-b998-e0fa77edc5eb"
        name="DirectoryImpl"
        isAbstract="false"
        isLeaf="false"
        isActiveClass="false">
        <suppliersInternal>
          <interfaceRealization
            Id="92e7b913-e502-4495-8788-2a6f4bb099e5">
            <interfaceMoniker
              Id="045d61ca-c033-4d9d-82cc-8ea5fe80ce49"
              LastKnownName="IDirectory"
              LastKnownLocation="GenericUtils.uml" />
          </interfaceRealization>
        </suppliersInternal>
      </class>
    </packageHasNamedElement>
    <packageHasNamedElement>
      <class
        Id="9fd229ee-8af7-4e3c-b952-93af7750e236"
        name="FileImpl"
        isAbstract="false"
        isLeaf="false"
        isActiveClass="false">
        <suppliersInternal>
          <interfaceRealization
            Id="09d7b1a9-e800-41d9-9a5a-e932ac4d7bf1">
            <interfaceMoniker
              Id="ec147e07-43d9-4b6a-a25b-15c63ac2c4f8"
              LastKnownName="IFile"
              LastKnownLocation="GenericUtils.uml" />
          </interfaceRealization>
        </suppliersInternal>
      </class>
    </packageHasNamedElement>
    <packageHasNamedElement>
      <Interface
        Id="045d61ca-c033-4d9d-82cc-8ea5fe80ce49"
        name="IDirectory"
        isAbstract="false"
        isLeaf="false" />
    </packageHasNamedElement>
    <packageHasNamedElement>
      <Interface
        Id="ec147e07-43d9-4b6a-a25b-15c63ac2c4f8"
        name="IFile"
        isAbstract="false"
        isLeaf="false" />
    </packageHasNamedElement>
    <packageHasNamedElement>
      <class
        Id="9c3a0114-450c-4a52-a596-13c6f2b262f5"
        name="CodeLocation"
        isAbstract="false"
        isLeaf="false"
        isActiveClass="false">
        <ownedAttributesInternal>
          <property
            Id="4fa09db7-f1f4-4326-9655-a455fbd058a7"
            name="m_strFileName"
            visibility="Private"
            isLeaf="false"
            isStatic="false"
            isReadOnly="false"
            isUnique="false"
            isDerived="false"
            isDerivedUnion="false"
            aggregation="None"
            isComposite="false">
            <type_NamedElement>
              <undefinedTypeMoniker
                Id="9ed497c7-9d5f-40d2-8af5-250fda544df9"
                LastKnownName="string"
                LastKnownLocation="GenericUtils.uml" />
            </type_NamedElement>
          </property>
          <property
            Id="51eca223-2fdc-418d-bea6-8b32ac387923"
            name="m_strFuncName"
            visibility="Private"
            isLeaf="false"
            isStatic="false"
            isReadOnly="false"
            isUnique="false"
            isDerived="false"
            isDerivedUnion="false"
            aggregation="None"
            isComposite="false">
            <type_NamedElement>
              <undefinedTypeMoniker
                Id="9ed497c7-9d5f-40d2-8af5-250fda544df9"
                LastKnownName="string"
                LastKnownLocation="GenericUtils.uml" />
            </type_NamedElement>
          </property>
          <property
            Id="7ff34fef-16c6-4698-8edf-b1b297e1e829"
            name="m_nLineNumber"
            visibility="Private"
            isLeaf="false"
            isStatic="false"
            isReadOnly="false"
            isUnique="false"
            isDerived="false"
            isDerivedUnion="false"
            aggregation="None"
            isComposite="false">
            <type_NamedElement>
              <undefinedTypeMoniker
                Id="ab54f50f-8000-4fef-9fb3-6a9a44417013"
                LastKnownName="int"
                LastKnownLocation="GenericUtils.uml" />
            </type_NamedElement>
          </property>
          <property
            Id="3f5d2f80-da06-4170-b36e-715a587fa3d6"
            name="m_strShortFileName"
            visibility="Private"
            isLeaf="false"
            isStatic="false"
            isReadOnly="false"
            isUnique="false"
            isDerived="false"
            isDerivedUnion="false"
            aggregation="None"
            isComposite="false">
            <type_NamedElement>
              <undefinedTypeMoniker
                Id="9ed497c7-9d5f-40d2-8af5-250fda544df9"
                LastKnownName="string"
                LastKnownLocation="GenericUtils.uml" />
            </type_NamedElement>
          </property>
        </ownedAttributesInternal>
        <ownedOperationsInternal>
          <operation
            Id="c1b2c0bb-5141-4ecd-85ee-3329ecdefd44"
            name="GetFileName"
            isLeaf="false"
            isStatic="false"
            isAbstract="false"
            concurrency="Sequential"
            isQuery="false">
            <ownedParameters>
              <operationHasOwnedParameters>
                <parameter
                  Id="938d53c9-4219-4df1-8c4e-b516ce3fc4c1"
                  direction="Return"
                  isUnique="false">
                  <type_NamedElement>
                    <undefinedTypeMoniker
                      Id="9ed497c7-9d5f-40d2-8af5-250fda544df9"
                      LastKnownName="string"
                      LastKnownLocation="GenericUtils.uml" />
                  </type_NamedElement>
                </parameter>
              </operationHasOwnedParameters>
            </ownedParameters>
          </operation>
          <operation
            Id="36a3fb93-b132-44a6-94d4-704a7e746dd6"
            name="GetShortFileName"
            isLeaf="false"
            isStatic="false"
            isAbstract="false"
            concurrency="Sequential"
            isQuery="false">
            <ownedParameters>
              <operationHasOwnedParameters>
                <parameter
                  Id="61adaf95-4434-45f7-ba7a-f011867229ee"
                  direction="Return"
                  isUnique="false">
                  <type_NamedElement>
                    <undefinedTypeMoniker
                      Id="9ed497c7-9d5f-40d2-8af5-250fda544df9"
                      LastKnownName="string"
                      LastKnownLocation="GenericUtils.uml" />
                  </type_NamedElement>
                </parameter>
              </operationHasOwnedParameters>
            </ownedParameters>
          </operation>
          <operation
            Id="ed9ad057-69bc-4f2e-89d4-e0b7bae4eced"
            name="GetFuncName"
            isLeaf="false"
            isStatic="false"
            isAbstract="false"
            concurrency="Sequential"
            isQuery="false">
            <ownedParameters>
              <operationHasOwnedParameters>
                <parameter
                  Id="52c1f6a5-2e2e-4fee-8852-5082f173ba9a"
                  direction="Return"
                  isUnique="false">
                  <type_NamedElement>
                    <undefinedTypeMoniker
                      Id="9ed497c7-9d5f-40d2-8af5-250fda544df9"
                      LastKnownName="string"
                      LastKnownLocation="GenericUtils.uml" />
                  </type_NamedElement>
                </parameter>
              </operationHasOwnedParameters>
            </ownedParameters>
          </operation>
          <operation
            Id="dbc8aa72-c2d9-41c2-a228-c9e487f4e88c"
            name="GetLineNumber"
            isLeaf="false"
            isStatic="false"
            isAbstract="false"
            concurrency="Sequential"
            isQuery="false">
            <ownedParameters>
              <operationHasOwnedParameters>
                <parameter
                  Id="d4f38084-c5e0-47b6-ba8b-ac2b70b73bb7"
                  direction="Return"
                  isUnique="false">
                  <type_NamedElement>
                    <undefinedTypeMoniker
                      Id="ab54f50f-8000-4fef-9fb3-6a9a44417013"
                      LastKnownName="int"
                      LastKnownLocation="GenericUtils.uml" />
                  </type_NamedElement>
                </parameter>
              </operationHasOwnedParameters>
            </ownedParameters>
          </operation>
          <operation
            Id="bc1ee9bd-5651-4708-9e57-81f5ec303dfb"
            name="ToString"
            isLeaf="false"
            isStatic="false"
            isAbstract="false"
            concurrency="Sequential"
            isQuery="false">
            <ownedParameters>
              <operationHasOwnedParameters>
                <parameter
                  Id="5a51092a-8746-4253-b724-55455cebfa80"
                  direction="Return"
                  isUnique="false">
                  <type_NamedElement>
                    <undefinedTypeMoniker
                      Id="9ed497c7-9d5f-40d2-8af5-250fda544df9"
                      LastKnownName="string"
                      LastKnownLocation="GenericUtils.uml" />
                  </type_NamedElement>
                </parameter>
              </operationHasOwnedParameters>
            </ownedParameters>
          </operation>
        </ownedOperationsInternal>
      </class>
    </packageHasNamedElement>
    <packageHasNamedElement>
      <Interface
        Id="36796d64-b2d5-4758-a648-adde7e5482c1"
        name="Interface1"
        isAbstract="false"
        isLeaf="false">
        <targetEnds>
          <association
            Id="4705eb64-30c6-481c-95b9-e0a8100a9e46"
            isDerived="false"
            sourceEndRoleName="Interface1"
            targetEndRoleName="Class1"
            isLeaf="false"
            isAbstract="false">
            <classMoniker
              Id="39452f35-b469-44ee-8e17-059f2541bdb5"
              LastKnownName="Class1"
              LastKnownLocation="GenericUtils.uml" />
            <relationshipOwnedElementsInternal>
              <associationHasOwnedEnds>
                <memberEnd
                  Id="801e496e-3aae-42b5-8637-33269b2e0b79"
                  name="Interface1"
                  isLeaf="false"
                  isStatic="false"
                  isReadOnly="false"
                  isDerived="false"
                  isDerivedUnion="false"
                  aggregation="None"
                  isComposite="false"
                  isNavigableOwned="false" />
              </associationHasOwnedEnds>
              <associationHasOwnedEnds>
                <memberEnd
                  Id="b7af5f6e-1c15-4e3c-b49a-6254efd194d1"
                  name="Class1"
                  isLeaf="false"
                  isStatic="false"
                  isReadOnly="false"
                  isDerived="false"
                  isDerivedUnion="false"
                  aggregation="None"
                  isComposite="false" />
              </associationHasOwnedEnds>
            </relationshipOwnedElementsInternal>
          </association>
          <association
            Id="9466f3fd-2453-46ba-832e-aabda35db5c8"
            isDerived="false"
            sourceEndRoleName="Interface1"
            targetEndRoleName="CodeLocation"
            isLeaf="false"
            isAbstract="false">
            <classMoniker
              Id="9c3a0114-450c-4a52-a596-13c6f2b262f5"
              LastKnownName="CodeLocation"
              LastKnownLocation="GenericUtils.uml" />
            <relationshipOwnedElementsInternal>
              <associationHasOwnedEnds>
                <memberEnd
                  Id="ecbb5cf6-7cac-4d87-abcd-6989228caf6d"
                  name="Interface1"
                  isLeaf="false"
                  isStatic="false"
                  isReadOnly="false"
                  isDerived="false"
                  isDerivedUnion="false"
                  aggregation="Shared"
                  isComposite="false"
                  isNavigableOwned="false" />
              </associationHasOwnedEnds>
              <associationHasOwnedEnds>
                <memberEnd
                  Id="c7111cb8-0b5b-436c-8753-b1bfb27fa26c"
                  name="CodeLocation"
                  isLeaf="false"
                  isStatic="false"
                  isReadOnly="false"
                  isDerived="false"
                  isDerivedUnion="false"
                  aggregation="None"
                  isComposite="false" />
              </associationHasOwnedEnds>
            </relationshipOwnedElementsInternal>
          </association>
          <association
            Id="7d6f0e0f-f129-4050-b225-05eb7db05f9b"
            isDerived="false"
            sourceEndRoleName="Interface1"
            targetEndRoleName="CodeLocation"
            isLeaf="false"
            isAbstract="false">
            <classMoniker
              Id="9c3a0114-450c-4a52-a596-13c6f2b262f5"
              LastKnownName="CodeLocation"
              LastKnownLocation="GenericUtils.uml" />
            <relationshipOwnedElementsInternal>
              <associationHasOwnedEnds>
                <memberEnd
                  Id="5dfb5792-3368-4a21-ab8d-4018cff8a89e"
                  name="Interface1"
                  isLeaf="false"
                  isStatic="false"
                  isReadOnly="false"
                  isDerived="false"
                  isDerivedUnion="false"
                  aggregation="None"
                  isComposite="false"
                  isNavigableOwned="false" />
              </associationHasOwnedEnds>
              <associationHasOwnedEnds>
                <memberEnd
                  Id="192a6022-9a09-43c9-bd89-007eede2284f"
                  name="CodeLocation"
                  isLeaf="false"
                  isStatic="false"
                  isReadOnly="false"
                  isDerived="false"
                  isDerivedUnion="false"
                  aggregation="None"
                  isComposite="false" />
              </associationHasOwnedEnds>
            </relationshipOwnedElementsInternal>
          </association>
        </targetEnds>
      </Interface>
    </packageHasNamedElement>
    <packageHasNamedElement>
      <class
        Id="39452f35-b469-44ee-8e17-059f2541bdb5"
        name="Class1"
        isAbstract="false"
        isLeaf="false"
        isActiveClass="false">
        <suppliersInternal>
          <dependency
            Id="16c76f38-130c-4195-a394-010d381d6868">
            <classMoniker
              Id="9c3a0114-450c-4a52-a596-13c6f2b262f5"
              LastKnownName="CodeLocation"
              LastKnownLocation="GenericUtils.uml" />
          </dependency>
        </suppliersInternal>
        <generalsInternal>
          <generalization
            Id="cfc8e12c-e27c-4493-a512-906eb59d5ce9"
            isSubstitutable="false">
            <classMoniker
              Id="9c3a0114-450c-4a52-a596-13c6f2b262f5"
              LastKnownName="CodeLocation"
              LastKnownLocation="GenericUtils.uml" />
          </generalization>
        </generalsInternal>
        <targetEnds>
          <association
            Id="917f976d-db8f-4910-b9b0-2022fe33e14b"
            isDerived="false"
            sourceEndRoleName="Class1"
            targetEndRoleName="CodeLocation"
            isLeaf="false"
            isAbstract="false">
            <classMoniker
              Id="9c3a0114-450c-4a52-a596-13c6f2b262f5"
              LastKnownName="CodeLocation"
              LastKnownLocation="GenericUtils.uml" />
            <relationshipOwnedElementsInternal>
              <associationHasOwnedEnds>
                <memberEnd
                  Id="799dd301-96ea-41d0-8eee-d1bd93052790"
                  name="Class1"
                  isLeaf="false"
                  isStatic="false"
                  isReadOnly="false"
                  isDerived="false"
                  isDerivedUnion="false"
                  aggregation="Composite"
                  isComposite="false"
                  isNavigableOwned="false" />
              </associationHasOwnedEnds>
              <associationHasOwnedEnds>
                <memberEnd
                  Id="e337b92f-8c85-406b-b328-e3dcc651c311"
                  name="CodeLocation"
                  isLeaf="false"
                  isStatic="false"
                  isReadOnly="false"
                  isDerived="false"
                  isDerivedUnion="false"
                  aggregation="None"
                  isComposite="true" />
              </associationHasOwnedEnds>
            </relationshipOwnedElementsInternal>
          </association>
        </targetEnds>
      </class>
    </packageHasNamedElement>
    <packageHasNamedElement>
      <undefinedType
        Id="54f69cf2-44c7-4869-9fbf-780fd7d4492f"
        name="void" />
    </packageHasNamedElement>
    <packageHasNamedElement>
      <undefinedType
        Id="9ed497c7-9d5f-40d2-8af5-250fda544df9"
        name="string" />
    </packageHasNamedElement>
    <packageHasNamedElement>
      <undefinedType
        Id="ab54f50f-8000-4fef-9fb3-6a9a44417013"
        name="int" />
    </packageHasNamedElement>
    <packageHasNamedElement>
      <class
        Id="55cf213c-9db3-4df4-8847-bbee52ba84f7"
        name="StringUtil"
        isAbstract="false"
        isLeaf="false"
        isActiveClass="false">
        <ownedOperationsInternal>
          <operation
            Id="bf7d5fab-e723-4285-8365-bd9ba6e47bce"
            name="FormatWString"
            isLeaf="false"
            isStatic="false"
            isAbstract="false"
            concurrency="Sequential"
            isQuery="false">
            <ownedParameters>
              <operationHasOwnedParameters>
                <parameter
                  Id="4d7524b1-94c2-4eaf-ba20-521d09cbb753"
                  direction="Return"
                  isUnique="false">
                  <type_NamedElement>
                    <undefinedTypeMoniker
                      Id="29c993df-6923-4ef0-8767-62672986ecb0"
                      LastKnownName="wstring"
                      LastKnownLocation="GenericUtils.uml" />
                  </type_NamedElement>
                </parameter>
              </operationHasOwnedParameters>
              <operationHasOwnedParameters>
                <parameter
                  Id="f1f8afed-3291-4c8f-bca5-fdd738ee0c53"
                  name="const wchar_t* wFormat"
                  direction="In"
                  isUnique="false" />
              </operationHasOwnedParameters>
              <operationHasOwnedParameters>
                <parameter
                  Id="64e1c404-6cd7-49b0-a3a9-88af560aec28"
                  name="..."
                  direction="In"
                  isUnique="false" />
              </operationHasOwnedParameters>
            </ownedParameters>
          </operation>
          <operation
            Id="ce377dc9-0e0e-4299-9769-f3e563e19dc2"
            name="Format"
            isLeaf="false"
            isStatic="false"
            isAbstract="false"
            concurrency="Sequential"
            isQuery="false">
            <ownedParameters>
              <operationHasOwnedParameters>
                <parameter
                  Id="19307292-cbf4-4961-acc7-ae99453a03d4"
                  name="const char* format"
                  direction="In"
                  isUnique="false" />
              </operationHasOwnedParameters>
              <operationHasOwnedParameters>
                <parameter
                  Id="b69845aa-9167-4408-a698-8c2689634042"
                  name="..."
                  direction="In"
                  isUnique="false" />
              </operationHasOwnedParameters>
              <operationHasOwnedParameters>
                <parameter
                  Id="5b4a9bed-b726-4ac0-aabe-ef8ccfe6c676"
                  direction="Return"
                  isUnique="false">
                  <type_NamedElement>
                    <undefinedTypeMoniker
                      Id="9ed497c7-9d5f-40d2-8af5-250fda544df9"
                      LastKnownName="string"
                      LastKnownLocation="GenericUtils.uml" />
                  </type_NamedElement>
                </parameter>
              </operationHasOwnedParameters>
            </ownedParameters>
          </operation>
          <operation
            Id="44a37ad0-f847-4fe2-84e9-3badae5651ff"
            name="FormatArguments"
            isLeaf="false"
            isStatic="false"
            isAbstract="false"
            concurrency="Sequential"
            isQuery="false">
            <ownedParameters>
              <operationHasOwnedParameters>
                <parameter
                  Id="baa66ad4-4bbc-4da9-954d-15307614a4cc"
                  direction="Return"
                  isUnique="false">
                  <type_NamedElement>
                    <undefinedTypeMoniker
                      Id="9ed497c7-9d5f-40d2-8af5-250fda544df9"
                      LastKnownName="string"
                      LastKnownLocation="GenericUtils.uml" />
                  </type_NamedElement>
                </parameter>
              </operationHasOwnedParameters>
              <operationHasOwnedParameters>
                <parameter
                  Id="dadc207e-3555-4396-b23e-6cfa349affa9"
                  name="const char* format"
                  direction="In"
                  isUnique="false" />
              </operationHasOwnedParameters>
              <operationHasOwnedParameters>
                <parameter
                  Id="2f24dd60-563e-4604-af7e-18c6a36bbb74"
                  name="va_list argList"
                  direction="In"
                  isUnique="false" />
              </operationHasOwnedParameters>
            </ownedParameters>
          </operation>
          <operation
            Id="b34bd3d7-2b04-4f8f-9d13-d05581f8a2f1"
            name="FormatArgumentsW"
            isLeaf="false"
            isStatic="false"
            isAbstract="false"
            concurrency="Sequential"
            isQuery="false">
            <ownedParameters>
              <operationHasOwnedParameters>
                <parameter
                  Id="37b508f2-7a7a-4564-91dd-71a06a614a90"
                  direction="Return"
                  isUnique="false">
                  <type_NamedElement>
                    <undefinedTypeMoniker
                      Id="29c993df-6923-4ef0-8767-62672986ecb0"
                      LastKnownName="wstring"
                      LastKnownLocation="GenericUtils.uml" />
                  </type_NamedElement>
                </parameter>
              </operationHasOwnedParameters>
              <operationHasOwnedParameters>
                <parameter
                  Id="7761b988-e27d-45aa-89f3-e9345644c12f"
                  name="const wchar_t* wFormat"
                  direction="In"
                  isUnique="false" />
              </operationHasOwnedParameters>
              <operationHasOwnedParameters>
                <parameter
                  Id="257508d8-793e-487e-93d2-1ef856030f9f"
                  name="va_list argList"
                  direction="In"
                  isUnique="false" />
              </operationHasOwnedParameters>
            </ownedParameters>
          </operation>
        </ownedOperationsInternal>
      </class>
    </packageHasNamedElement>
    <packageHasNamedElement>
      <undefinedType
        Id="29c993df-6923-4ef0-8767-62672986ecb0"
        name="wstring" />
    </packageHasNamedElement>
  </packagedElements>
  <primitiveType
    Id="220a3521-e091-4221-bae9-3ef9018e845c"
    name="Integer"
    isAbstract="false"
    isLeaf="false" />
  <primitiveType
    Id="8943dc84-709e-4f62-b15a-a3273aa6f165"
    name="Boolean"
    isAbstract="false"
    isLeaf="false" />
  <primitiveType
    Id="59259974-6d55-42c6-b7bd-763d77ac8ef9"
    name="String"
    isAbstract="false"
    isLeaf="false" />
  <primitiveType
    Id="3ab42e7d-4969-445a-b209-471f5cb8209c"
    name="UnlimitedNatural"
    isAbstract="false"
    isLeaf="false" />
</modelStoreModel>