/* Copyright (C) 2007 Vizim Worldwide. All rights reserved. This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. */ /******************************************************************************* * Name: p4connection.h * * Author: Robert Cowham <robert@vizim.com> * * Description: * Simple wrapper for P4API. * ******************************************************************************/ #pragma once // P4 API files #include "PerforceAPI.h" #include <p4/spec.h> #include "p4clientuser.h" #ifdef SetPort // Windows bug #undef SetPort #endif class P4Connection { public: // caller's main interface P4Connection(); ~P4Connection(); // Protocol options. Call before Connect() void Tagged(); void ParseForms(); // Session management int Connect(StrBuf &errMsg); int Disconnect(); void ExceptionLevel( int i ) { m_exceptionLevel = i; } int ExceptionLevel() { return m_exceptionLevel; } long Run(LPCSTR cmd, int argc, char *const *argv); StrBuf ErrorMsg(); // Methods delegated to ClientApi void SetProtocol( const char *p, const char *v ) {m_client.SetProtocol(p, v);} void SetCharset( const char *c ) {m_client.SetCharset(c);} void SetClient( const char *c ) {m_client.SetClient(c);} void SetCwd( const char *c ) {m_client.SetCwd(c);} void SetHost( const char *c ) {m_client.SetHost(c);} void SetLanguage( const char *c ) {m_client.SetLanguage(c);} void SetPassword( const char *c ) {m_client.SetPassword(c);} void SetPort( const char *c ) {m_client.SetPort(c);} void SetUser( const char *c ) {m_client.SetUser(c);} void SetProg( const char *c ) {m_prog = c;} void SetVersion( const char *c ) {m_version = c;} void SetTicketFile( const char *c ) {m_client.SetTicketFile(c);} void SetCharset( const StrPtr *c ) {m_client.SetCharset(c);} void SetClient( const StrPtr *c ) {m_client.SetClient(c);} void SetCwd( const StrPtr *c ) {m_client.SetCwd(c);} void SetHost( const StrPtr *c ) {m_client.SetHost(c);} void SetLanguage( const StrPtr *c ) {m_client.SetLanguage(c);} void SetPassword( const StrPtr *c ) {m_client.SetPassword(c);} void SetPort( const StrPtr *c ) {m_client.SetPort(c);} void SetUser( const StrPtr *c ) {m_client.SetUser(c);} void SetProg( const StrPtr *c ) {m_prog.Set(c);} void SetVersion( const StrPtr *c ) {m_version.Set(c);} void SetTicketFile( const StrPtr *c ) {m_client.SetTicketFile(c);} void SetBreak( KeepAlive *k ) {m_client.SetBreak(k);} void DefineCharset( const char *c, Error *e ) {m_client.DefineCharset(c, e);} void DefineClient( const char *c, Error *e ) {m_client.DefineClient(c, e);} void DefineHost( const char *c, Error *e ) {m_client.DefineHost(c, e);} void DefineLanguage( const char *c, Error *e ) {m_client.DefineLanguage(c, e);} void DefinePassword( const char *c, Error *e ) {m_client.DefinePassword(c, e);} void DefinePort( const char *c, Error *e ) {m_client.DefinePort(c, e);} void DefineUser( const char *c, Error *e ) {m_client.DefineUser(c, e);} const StrPtr &GetCharset() { return m_client.GetCharset(); } const StrPtr &GetClient() { return m_client.GetClient(); } const StrPtr &GetCwd() { return m_client.GetCwd(); } const StrPtr &GetHost() { return m_client.GetHost(); } const StrPtr &GetLanguage() { return m_client.GetLanguage(); } const StrPtr &GetOs() { return m_client.GetOs(); } const StrPtr &GetPassword() { return m_client.GetPassword(); } const StrPtr &GetPort() { return m_client.GetPort(); } const StrPtr &GetUser() { return m_client.GetUser(); } const StrPtr &GetConfig() { return m_client.GetConfig(); } // End of delegated methods void FormatAndOutputError(LPCSTR m, Error *e) {m_ui.FormatAndOutputError(m, e); }; StrArray *InfoArray() { return m_ui.InfoArray(); } StrArray *ErrorArray() { return m_ui.ErrorArray(); } StrArray *WarningArray() { return m_ui.WarningArray(); } void SetInput(LPCSTR newVal) { m_ui.SetInput(new StrBuf(newVal)); } StrPtr *GetVar(LPCSTR varName) { return m_ui.GetVar(varName); } StrArray *GetArrayVar(LPCSTR varName) { return m_ui.GetArrayVar(varName); } void SetVar(LPCSTR varName, LPCSTR newVal) { m_ui.SetVar(varName, newVal); } void SetArrayVar(LPCSTR varName, StrArray *newVal) { m_ui.SetArrayVar(varName, newVal); } // Error logging function - expected to take char * and do something sensible with it. void SetErrorLogger(void (*pFn) (char *)) { m_ui.SetErrorLogger(pFn); } private: p4ClientUser m_ui; ClientApi m_client; int m_initCount; int m_exceptionLevel; int m_tagged; StrBuf m_prog; // Program name StrBuf m_version; // Version } ;
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#2 | 7502 | Robert Cowham |
- Updated for 2009.1 API - use static version (/MT rather than /MD) - Fixed SetProg/SetVersion calls - ensures they are called at correct moment. - Add SetProtocol - Added some more tests/examples |
||
#1 | 6468 | Robert Cowham | Draft version. |