Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

153 lines
6.0 KiB

//---------------------------------------------------------------------------
// RowsetColumn.h : CVDRowsetColumn header file
//
// Copyright (c) 1996 Microsoft Corporation, All Rights Reserved
// Developed by Sheridan Software Systems, Inc.
//---------------------------------------------------------------------------
#ifndef __CVDROWSETCOLUMN__
#define __CVDROWSETCOLUMN__
#define VD_COLUMNSROWSET_MAX_OPT_COLUMNS 8
class CVDRowsetColumn
{
public:
// Construction/Destruction
CVDRowsetColumn();
virtual ~CVDRowsetColumn();
// Initialization
BOOL Initialize(ULONG ulOrdinal,
ULONG ulCursorOrdinal,
DBCOLUMNINFO * pColumnInfo,
ULONG cbMaxBookmark,
CURSOR_DBCOLUMNID * pBookmarkColumnID = NULL);
// Initialization of metadata metadata columns
BOOL Initialize(const CURSOR_DBCOLUMNID * pCursorColumnID,
BOOL fDataColumn,
ULONG cbMaxLength,
CHAR * pszName,
DWORD dwCursorType,
DWORD dwNumber);
// Position
ULONG GetOrdinal() const {return m_ulOrdinal;}
// IRowset metadata
DBID GetColumnID() const {return m_columnID;}
DBTYPE GetType() const {return (DBTYPE)m_wType;}
// ICursor metadata
BOOL GetAutoIncrement() const {return m_bool.fAutoIncrement;}
void SetAutoIncrement(VARIANT_BOOL fAutoIncrement) {m_bool.fAutoIncrement = fAutoIncrement;}
WCHAR * GetBaseColumnName() const {return m_pwszBaseColumnName;}
void SetBaseColumnName(WCHAR * pBaseColumnName, ULONG ulLength)
{ SetStringProperty(&m_pwszBaseColumnName, pBaseColumnName, ulLength); }
WCHAR * GetBaseName() const {return m_pwszBaseName;}
void SetBaseName(WCHAR * pBaseName, ULONG ulLength)
{ SetStringProperty(&m_pwszBaseName, pBaseName, ulLength); }
DWORD GetBindType() const {return m_dwBindType;}
BOOL GetCaseSensitive() const {return m_bool.fCaseSensitive;}
void SetCaseSensitive(VARIANT_BOOL fCaseSensitive) {m_bool.fCaseSensitive = fCaseSensitive;}
LCID GetCollatingOrder() const {return m_lcidCollatingOrder;}
void SetCollatingOrder(LCID lcidCollatingOrder) {m_lcidCollatingOrder = lcidCollatingOrder;}
CURSOR_DBCOLUMNID GetCursorColumnID() const {return m_cursorColumnID;}
BOOL GetDataColumn() const {return m_bool.fDataColumn;}
WCHAR * GetDefaultValue() const {return m_pwszDefaultValue;}
void SetDefaultValue(WCHAR * pDefaultValue, ULONG ulLength)
{ SetStringProperty(&m_pwszDefaultValue, pDefaultValue, ulLength); }
ULONG GetEntryIDMaxLength() const {return m_cbEntryIDMaxLength;}
BOOL GetFixed() const {return m_bool.fFixed;}
BOOL GetHasDefault() const {return m_bool.fHasDefault;}
void SetHasDefault(VARIANT_BOOL fHasDefault) {m_bool.fHasDefault = fHasDefault;}
ULONG GetMaxLength() const {return m_cbMaxLength;}
BOOL GetMultiValued() const {return m_bool.fMultiValued;}
WCHAR * GetName() const {return m_pwszName;}
BOOL GetNullable() const {return m_bool.fNullable;}
DWORD GetNumber() const {return m_dwNumber;}
DWORD GetScale() const {return m_dwScale;}
BOOL GetSearchable() const {return m_bool.fSearchable;}
DWORD GetCursorType() const {return m_dwCursorType;}
BOOL GetUnique() const {return m_bool.fUnique;}
void SetUnique(VARIANT_BOOL fUnique) {m_bool.fUnique = fUnique;}
DWORD GetUpdatable() const {return m_dwUpdatable;}
DWORD GetVersion() const {return m_dwVersion;}
DWORD GetStatus() const {return m_dwStatus;}
// Fetching
DWORD GetMaxStrLen() const {return m_ulMaxStrLen;}
public:
// Conversions
static CURSOR_DBCOLUMNID ColumnIDToCursorColumnID(const DBID& columnID, ULONG ulCursorOrdinal);
static CURSOR_DBVARENUM TypeToCursorType(DBTYPE wType);
static DBTYPE CursorTypeToType(CURSOR_DBVARENUM dwCursorType);
// Fetching
static ULONG GetCursorTypeMaxStrLen(DWORD dwCursorType, ULONG cbMaxLength);
protected:
void SetStringProperty(WCHAR ** ppStringProp,
WCHAR * pNewString,
ULONG ulLength);
// Position
ULONG m_ulOrdinal; // IRowset ordinal position
// IRowset metadata
DBID m_columnID; // column identifier
DWORD m_wType; // datatype
// ICursor metadata
WCHAR * m_pwszBaseColumnName; // base column name
WCHAR * m_pwszBaseName; // base name
DWORD m_dwBindType; // bind type
LCID m_lcidCollatingOrder; // collating order
CURSOR_DBCOLUMNID m_cursorColumnID; // column identifier
WCHAR * m_pwszDefaultValue; // default value
ULONG m_cbEntryIDMaxLength; // entryID maximum length
ULONG m_cbMaxLength; // data maximum length
WCHAR * m_pwszName; // name
DWORD m_dwNumber; // number
DWORD m_dwScale; // scale
DWORD m_dwCursorType; // datatype
DWORD m_dwUpdatable; // updateablity
DWORD m_dwVersion; // version
DWORD m_dwStatus; // status
// Booleans
struct
{
WORD fInitialized : 1; // is column initialized?
WORD fAutoIncrement : 1; // auto increment?
WORD fCaseSensitive : 1; // case sensitive?
WORD fDataColumn : 1; // data column?
WORD fFixed : 1; // fixed length?
WORD fHasDefault : 1; // has default value?
WORD fMultiValued : 1; // multivalued?
WORD fNullable : 1; // accepts NULLs?
WORD fSearchable : 1; // searchable?
WORD fUnique : 1; // unique?
} m_bool;
// Fetching
DWORD m_ulMaxStrLen; // maximum string length for fixed data types
};
#endif //__CVDROWSETCOLUMN__