[
  uuid(7E6B4CE6-8836-4182-BBB9-50213578A7CF),
  version(1.0),
  helpstring("Helpers for the split function tlb - Egbert Nierop")
]
library StringHelpers
{
    // TLib :     // Forward declare all types defined in this typelib

    [
      dllname("oleaut32")
    ]
    module OleAut {
        [entry(0x60000000)]
        HRESULT _stdcall SafeArrayAccessData(
                        [in] long psa, 
                        [out, retval] long* ppvData);
        [entry(0x60000001)]
        HRESULT _stdcall SafeArrayUnaccessData([in] long psa);
        [entry(0x60000002)]
        int _stdcall SafeArrayGetElemsize([in] long psa);
        [entry(0x60000003)]
        long _stdcall SafeArrayCreateVector(
                        [in] short vt, 
                        [in] long lLbound, 
                        [in] int cElements);
        [entry(0x60000004)]
        HRESULT _stdcall SafeArrayPtrOfIndex(
                        [in] long psa, 
                        [in] void* rgIndices, 
                        [out, retval] long** ppvData);
        [entry(0x60000005)]
        int _stdcall SysStringByteLenPtr([in] long bstrS);
        [entry(0x60000006)]
        int _stdcall SysStringByteLen([in] BSTR bstrS);
        [entry(0x60000007)]
        int _stdcall SysStringLen([in] BSTR bstrS);
        [entry(0x60000008)]
        int _stdcall SysStringLenPtr([in] void* bstrS);
        [entry(0x60000009)]
        BSTR _stdcall SysAllocStringLenBstr(
                        [in] BSTR bstr, 
                        [in] int cch);
        [entry(0x6000000a)]
        BSTR _stdcall SysAllocStringLen(
                        [in] void* bstrPtr, 
                        [in] int cch);
        [entry(0x6000000b)]
        int _stdcall SysAllocStringLenPtr(
                        [in] void* bstrPtr, 
                        [in] int cch);
        [entry(0x6000000c)]
        int _stdcall SysReAllocStringLen(
                        [in, out] BSTR* bstrPtr, 
                        [in] BSTR bstrPtrOld, 
                        [in] int LenToCopy);
        [entry(0x6000000d)]
        long _stdcall SysAllocStringByteLenPtr(
                        [in] void* bstr, 
                        [in] int cch);
        [entry(0x6000000e)]
        BSTR _stdcall SysAllocStringByteLen(
                        [in] BSTR bstrPtr, 
                        [in] int cch);
        [entry(0x6000000f)]
        HRESULT _stdcall VectorFromBstr(
                        [in] BSTR bstr, 
                        [in, out] SAFEARRAY(unsigned char)** ppsa);
        [entry(0x60000010)]
        HRESULT _stdcall BstrFromVector(
                        [in] SAFEARRAY(unsigned char) psa, 
                        [out, retval] BSTR* pbstr);
        [entry(0x60000011)]
        HRESULT _stdcall SafeArrayGetUBound(
                        [in] long psa, 
                        [in] int nDim, 
                        [out, retval] long* plUbound);
        [entry(0x60000012)]
        HRESULT _stdcall SafeArrayGetLBound(
                        [in] long psa, 
                        [in] int nDim, 
                        [out, retval] long* plUbound);
    };

    [
      dllname("ntdll")
    ]
    module ntdll {
        [entry(0x60000000)]
        void _cdecl MoveMemory(
                        [in] void* pDest, 
                        [in] void* pSrc, 
                        [in] long ByteLen);
        [entry(0x60000001)]
        void _cdecl MoveMemoryFromStr(
                        [in] void* pDest, 
                        [in] BSTR pSrc, 
                        [in] long ByteLen);
        [entry(0x60000002)]
        void _cdecl MoveMemoryToStr(
                        [in] BSTR pDest, 
                        [in] void* pSrc, 
                        [in] long ByteLen);
        [entry(0x60000003)]
        void _cdecl MoveMemoryStr(
                        [in] BSTR pDest, 
                        [in] BSTR pSrc, 
                        [in] long ByteLen);
        [entry(0x60000004)]
        void _stdcall memsetStr(
                        [in] BSTR pDest, 
                        [in] short ThisChar, 
                        [in] long charcount);
        [entry(0x60000005)]
        long _cdecl wcsstr(
                        [in] BSTR myString, 
                        [in] BSTR myChar);
        [entry(0x60000006)]
        long _cdecl wcschr(
                        [in] BSTR myString, 
                        [in] long myChar);
        [entry(0x60000007)]
        void _stdcall FillMemory(
                        [in] void* pDest, 
                        [in] int SizeBytes, 
                        [in] unsigned char bByte);
    };

    [
      dllname("msvbvm60")
    ]
    module ArrayPtr {
        [entry(0x60000000)]
        long _stdcall VarPtrStringArray([in] SAFEARRAY(BSTR)* Ptr);
        [entry(0x60000001)]
        long _stdcall VarPtrStr([in] long* Ptr);
    };

    [
      dllname("kernel32")
    ]
    module kernel {
        [entry(0x60000000)]
        void _stdcall MoveMemory(
                        [in] void* pDest, 
                        [in] void* pSrc, 
                        [in] long ByteLen);
        [entry(0x60000001)]
        void _stdcall CopyMemory(
                        [in] void* pDest, 
                        [in] void* pSrc, 
                        [in] long ByteLen);
        [entry(0x60000002)]
        void _stdcall MoveMemoryFromStr(
                        [in] void* pDest, 
                        [in] BSTR pSrc, 
                        [in] long ByteLen);
        [entry(0x60000003)]
        void _stdcall MoveMemoryToStr(
                        [in] BSTR pDest, 
                        [in] void* pSrc, 
                        [in] long ByteLen);
        [entry(0x60000004)]
        void _stdcall MoveMemoryStr(
                        [in] BSTR pDest, 
                        [in] BSTR pSrc, 
                        [in] long ByteLen);
        [entry(0x60000005)]
        void _stdcall ZeroMemory(
                        [in] void* pDest, 
                        [in] long cb);
        [entry(0x60000006)]
        void _stdcall FillMemory(
                        [in] void* pDest, 
                        [in] int SizeBytes, 
                        [in] unsigned char bByte);
        [entry(0x60000007)]
        long _stdcall GetTickCount();
        [entry(0x60000008)]
        long _stdcall lstrlenW([in] BSTR StringPtr);
        [entry(0x60000009)]
        long _stdcall lstrlenA([in] LPSTR StringPtr);
        [entry(0x6000000a)]
        long _stdcall lstrcpyA(
                        [in, out] LPSTR dest, 
                        [in] LPSTR src);
        [entry(0x6000000b)]
        long _stdcall lstrcpyW(
                        [in, out] LPWSTR dest, 
                        [in] BSTR src);
        [entry(0x6000000c)]
        long _stdcall lstrcmpiW(
                        [in] BSTR lpstrP, 
                        [in] BSTR lpStrp2);
        [entry(0x6000000d)]
        long _stdcall lstrcmpW(
                        [in] BSTR lpstrP, 
                        [in] BSTR lpStrp2);
    };
};