/* * 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 | 18760 | rlranft |
Populate -o //guest/perforce_software/p4/... //guest/rlranft/p4/.... |
||
//guest/perforce_software/p4/2014-1/support/strtable.h | |||||
#1 | 15902 | Matt Attaway | A second renaming that I will not obliterate as a badge of shame | ||
//guest/perforce_software/p4/2014_1/support/strtable.h | |||||
#1 | 15901 | Matt Attaway | Clean up code to fit modern Workshop naming standards | ||
//guest/perforce_software/p4/2014.1/support/strtable.h | |||||
#1 | 12188 | Matt Attaway | Move 'main' p4 into a release specific directory in prep for new releases | ||
//guest/perforce_software/p4/support/strtable.h | |||||
#1 | 9129 | Matt Attaway | Initial commit of the 2014.1 p4/p4api source code |