00001
00013 #ifndef P6RUNTIMEAPI_H__
00014 #define P6RUNTIMEAPI_H__ 1
00015
00016 #include "p6errorinfo.h"
00017 #include "p6dllapi.h"
00018 #include "p6thread.h"
00019
00020 namespace P6R {
00021
00022 #ifdef __cplusplus
00023 extern "C" {
00024 #endif
00025
00027
00032 typedef P6R::P6UINT32 P6COMFLAGS;
00033
00042 static const P6COMFLAGS P6CF_NOFLAGS = 0x00000000;
00043
00050 static const P6COMFLAGS P6CF_RESERVED1 = 0x00000001;
00051
00059 static const P6COMFLAGS P6CF_DISABLELOGS = 0x00000002;
00060
00066 static const P6COMFLAGS P6CF_VERBOSELOGS = 0x00000004;
00067
00074 static const P6COMFLAGS P6CF_DISABLEDYNAMICREG = 0x00000008;
00075
00081 static const P6COMFLAGS P6CF_UPDATECONF = 0x00000010;
00082
00088 static const P6COMFLAGS P6CF_NOSERVICES = 0x00000020;
00089
00098 static const P6COMFLAGS P6CF_UPDATEAPPCONF = 0x00000080;
00099
00107 static const P6COMFLAGS P6CF_CONTINUEEXCEPTIONS = 0x00000100;
00108
00117 static const P6COMFLAGS P6CF_DONTFILTERCMDLINE = 0x00000200;
00118
00125 static const P6COMFLAGS P6CF_DISABLESERVICE = 0x00000400;
00127 #ifdef __cplusplus
00128 }
00129 #endif
00130
00131 }
00132
00133
00134 #ifdef __cplusplus
00135 extern "C" {
00136 #endif
00137
00139
00142
00143
00145
00148
00149
00151
00152
00155 typedef P6R::P6ERR (*P6SUBMAIN)(P6R::P6INT32 argc,P6R::P6CHAR *argv[],P6R::p6ICurThread *pCurThread,P6R::p6ILogProducer *pThreadLogger);
00156
00180 P6API P6R::P6ERR p6Initialize(P6SUBMAIN pfnSubMain,P6R::P6INT32 argc,P6R::P6CHAR *argv[],P6R::P6COMFLAGS fFlags);
00181 typedef P6R::P6ERR (*P6INITIALIZE)(P6SUBMAIN pfnSubMain,P6R::P6INT32 argc,P6R::P6CHAR *argv[],P6R::P6COMFLAGS fFlags);
00182
00209
00210
00212
00233
00234 P6API P6R::P6ERR p6GetRuntimeIface(const P6R::IID &iid,P6R::P6VOID **ppIface);
00235
00264 P6API P6R::P6ERR p6CreateInstance(P6R::p6ICom *pOuter,const P6R::CID &cid,const P6R::IID &iid,P6R::P6VOID **ppIface);
00265
00267
00284 P6API P6R::P6ERR p6UUIDToString(const P6R::P6UUID &uuid,P6R::P6CHAR *pBuffer,P6R::P6SIZE cBuffer);
00285
00303 P6API P6R::P6ERR p6UUIDToWString(const P6R::P6UUID &uuid,P6R::P6WCHAR *pBuffer,P6R::P6SIZE cBuffer);
00304
00322 P6API P6R::P6ERR p6StringToUUID(const P6R::P6CHAR *pszUUID,P6R::P6UUID &uuid);
00323
00341 P6API P6R::P6ERR p6WStringToUUID(const P6R::P6WCHAR *pszUUID,P6R::P6UUID &uuid);
00343
00358 P6API P6R::P6CHAR * p6ErrToStr(P6R::P6ERR err,P6R::P6CHAR *pszBuffer,P6R::P6SIZE cBuffer);
00359
00374 P6API P6R::P6WCHAR * p6ErrToWStr(P6R::P6ERR err,P6R::P6WCHAR *pszBuffer,P6R::P6SIZE cBuffer);
00375
00377
00398 P6API P6R::P6ERR p6GetModuleFilename(P6R::P6WCHAR *pszBuffer,P6R::P6SIZE *pcBuffer);
00399
00419 P6API P6R::P6ERR p6GetDirectory(P6DIRS nDir,P6R::P6WCHAR *pBuffer,P6R::P6SIZE cBuffer,P6R::P6SIZE *pcWritten);
00421
00433 P6API P6R::P6INT32 p6AtomicInc32(P6R::P6INT32 volatile *pVar);
00434
00446 P6API P6R::P6INT32 p6AtomicDec32(P6R::P6INT32 volatile *pVar);
00447
00449
00461 P6API P6R::P6INT32 p6AtomicAdd32(P6R::P6INT32 volatile *pVar,P6R::P6INT32 value);
00462
00476 P6API P6R::P6INT32 p6AtomicSet32(P6R::P6INT32 volatile *pVar,P6R::P6INT32 value);
00477
00491 P6API P6R::P6INT64 p6AtomicSet64(P6R::P6INT64 volatile *pVar,P6R::P6INT64 value);
00492
00506 P6API P6R::P6VOID* p6AtomicSetPtr(P6R::P6VOID volatile **pVar,P6R::P6VOID *pValue);
00507
00521 P6API P6R::P6UINT32 p6HashData(const P6R::P6UINT8 *pData,P6R::P6SIZE cData,P6R::P6UINT32 hash);
00522
00530 P6API P6R::P6UINT32 p6HashString(const P6R::P6CHAR *pszData);
00531
00539 P6API P6R::P6UINT32 p6HashStringW(const P6R::P6WCHAR *pszData);
00540
00541 P6API P6R::P6UINT32 p6HashBCSTR(P6R::P6BCSTR *pbcsString);
00542
00543 P6API P6R::P6UINT32 p6HashBWCSTR(P6R::P6BWCSTR *pbwcsString);
00544
00552 P6API P6R::P6UINT32 p6HashUINT32(P6R::P6UINT32 nInteger);
00553
00561 P6API P6R::P6UINT64 p6HashUINT64(P6R::P6UINT64 nInteger);
00562
00573 P6API P6R::P6UINT32 p6HashUINT64to32(P6R::P6UINT64 nInteger);
00574
00605 P6API P6R::P6ERR p6SetError(const P6R::IID *piid,const P6R::P6CHAR *pszFile,P6R::P6UINT32 cLine,P6R::P6ERR error,const P6R::P6WCHAR *pwszContext,const P6R::P6WCHAR *pwszDescription);
00606
00638 P6API P6R::P6ERR p6SetErrorA(const P6R::IID *piid,const P6R::P6CHAR *pszFile,P6R::P6UINT32 cLine,P6R::P6ERR error,const P6R::P6CHAR *pszContext,const P6R::P6CHAR *pszDescription);
00639
00648 P6API P6R::P6ERR p6GetErrorInfo(P6R::p6IErrorInfo **ppInfo);
00649
00650
00663 P6API P6R::P6ERR p6AllocMemory(P6R::P6SIZE cSize,P6R::P6VOID **ppMemory);
00664
00674 P6API P6R::P6ERR p6FreeMemory(P6R::P6VOID *pMemory);
00675
00690 P6API P6R::P6ERR p6AllocComString(const P6R::P6WCHAR *pszSource,P6R::P6COMSTR *ppNewString);
00691
00700 P6API P6R::P6ERR p6FreeComString(P6R::P6COMSTR pString);
00701
00719 P6API P6R::P6ERR p6ComStringLen(const P6R::P6COMSTR pString,P6R::P6SIZE *pLength);
00720
00738 P6API P6R::P6ERR p6ComStringByteLen(const P6R::P6COMSTR pString,P6R::P6SIZE *pLength);
00739
00753 P6API P6R::P6ERR p6AllocComStringLen(P6R::P6WCHAR *pszSource,P6R::P6SIZE nSize,P6R::P6COMSTR *ppNewString);
00754
00766 P6API P6R::P6ERR p6GetRuntimeVersion(P6R::P6VERINFO *pVerInfo);
00767
00779 P6API P6R::P6ERR p6MapOSError(P6R::P6UINT32 oserr);
00780
00781 P6API P6R::P6ERR p6Backtrace(P6R::P6CHAR *pBuffer,P6R::P6SIZE cBuffer,P6R::P6UINT32 cFramesToSkip,P6BTFLAGS fFlags);
00782
00783 P6API P6R::P6ERR p6Assert(const P6R::P6WCHAR *pszExpr,const P6R::P6CHAR *pszFile,P6R::P6UINT32 nLine);
00784
00809 #define P6ASSERT(expr) ((expr)?P6R::eOk:p6Assert(P6TEXT(#expr),__FILE__,__LINE__))
00810
00811
00812 P6API P6R::P6ERR p6CreateCryptoInstance(const P6R::CID &cid,const P6R::IID &iid,P6R::P6VOID **ppIface);
00813
00835 P6API P6R::P6ERR p6TraceAddref(const P6R::P6CHAR *pszClassname,P6R::P6UINT32 cClassSize,P6R::P6VOID *classAddr,P6R::P6INT32 refCount,P6R::P6UINT32 *pSerialNumber);
00836
00837 P6API P6R::P6ERR p6TraceRelease(const P6R::P6CHAR *pszClassname,P6R::P6VOID *classAddr,P6R::P6INT32 refCount,P6R::P6UINT32 *pSerialNumber);
00838
00839 P6API P6R::P6ERR p6TraceCTOR(const P6R::P6CHAR *pszClassname,P6R::P6UINT32 cClassSize,P6R::P6VOID *classAddr,P6R::P6UINT32 *pSerialNumber);
00840
00841 P6API P6R::P6ERR p6TraceDTOR(const P6R::P6CHAR *pszClassname,P6R::P6VOID *classAddr,P6R::P6UINT32 *pSerialNumber);
00842
00843 P6API P6R::P6VOID p6ComponentCTOR();
00844
00845 P6API P6R::P6VOID p6ComponentDTOR();
00847
00848
00851 #ifdef __cplusplus
00852 }
00853 #endif
00854
00855 #endif