/* * Copyright 1995, 1996 Perforce Software. All rights reserved. * * This file is part of Perforce - the FAST SCM System. */ /* * strtable.h - a string table, using StrDict interface * * Classes defined: * * StrPtrDict - a dictionary whose values we don't own * StrBufDict - a dictionary whose values we do own * BufferDict - a dictionary stuffed into a StrBuf. * * Public methods: * * Clear() - reset table, making all variables unset * GetVar() - look up variable, return value (or 0 if not set) * SetVar() - set variable/value pair * * XXX Total dumb duplication of StrPtrDict into StrBufDict. */ struct StrPtrEntry; struct StrBufEntry; class VarArray; class StrPtrDict : public StrDict { public: StrPtrDict(); ~StrPtrDict(); // virtuals of StrDict StrPtr * VGetVar( const StrPtr &var ); void VSetVar( const StrPtr &var, const StrPtr &val ); void VRemoveVar( const StrPtr &var ); int VGetVarX( int x, StrRef &var, StrRef &val ); void VClear() { tabLength = 0; } private: VarArray *elems; int tabSize; int tabLength; } ; class StrBufDict : public StrDict { public: StrBufDict(); StrBufDict( StrDict & dict ); StrBufDict & operator =( StrDict & dict ); ~StrBufDict(); int GetCount() { return tabLength; } // virtuals of StrDict StrPtr * VGetVar( const StrPtr &var ); void VSetVar( const StrPtr &var, const StrPtr &val ); void VRemoveVar( const StrPtr &var ); int VGetVarX( int x, StrRef &var, StrRef &val ); void VClear() { tabLength = 0; } StrPtr * GetVarN( const StrPtr &var ); StrBuf * KeepOne( const StrPtr &var ); private: VarArray *elems; int tabSize; int tabLength; } ; const int BufferDictMax = 20; class BufferDict : public StrDict { public: BufferDict() {} ~BufferDict() {} BufferDict & operator =( const BufferDict &s ); // virtuals of StrDict StrPtr * VGetVar( const StrPtr &var ); int VGetVarX( int x, StrRef &var, StrRef &val ); void VSetVar( const StrPtr &var, const StrPtr &val ); void VClear() { buf.Clear(); count = 0; } void VRemoveVar( const StrPtr &var ); private: StrRef varRef; // temp for VGetVar int count; struct Var { int varOff; // into buf.Text() int varLen; int valOff; // into buf.Text() int valLen; } vars[ BufferDictMax ]; StrBuf buf; // hold var/values } ;
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#1 | 16264 | Norman Morse | update dev branch | ||
//guest/perforce_software/p4connect/main/src/P4Bridge/p4api/include/p4/strtable.h | |||||
#1 | 16209 | Norman Morse | Move entire source tree into "main" branch so workshop code will act correctly. | ||
//guest/perforce_software/p4connect/src/P4Bridge/p4api/include/p4/strtable.h | |||||
#2 | 12135 | Norman Morse |
Integrate dev branch changes into main. This code is the basiis of the 2.7 BETA release which provides Unity 5 compatibility |
||
#1 | 10940 | Norman Morse |
Inital Workshop release of P4Connect. Released under BSD-2 license |