1
//////////////////////////////////////////////////////////////////////////
3
// pgScript - PostgreSQL Tools
4
// RCS-ID: $Id: pgsContext.cpp 7758 2009-03-26 20:49:59Z dpage $
5
// Copyright (C) 2002 - 2009, The pgAdmin Development Team
6
// This software is released under the BSD Licence
8
//////////////////////////////////////////////////////////////////////////
12
#include "pgscript/utilities/pgsContext.h"
14
#include <wx/datetime.h>
17
#include "pgscript/objects/pgsNumber.h"
18
#include "pgscript/objects/pgsString.h"
19
#include "pgscript/statements/pgsExpressionStmt.h"
21
#include <wx/listimpl.cpp>
22
WX_DEFINE_LIST(pgsListExpression);
24
pgsContext::pgsContext(pgsOutputStream & cout) :
30
pgsContext::~pgsContext()
35
pgsVariable * pgsContext::zero()
37
pgsVariable * zero = pnew pgsNumber(wxT("0"));
42
pgsVariable * pgsContext::one()
44
pgsVariable * one = pnew pgsNumber(wxT("1"));
49
pgsVariable * pgsContext::seed()
51
pgsVariable * seed = pnew pgsNumber(wxString() << wxDateTime::GetTimeNow());
56
pgsVariable * pgsContext::encoding()
58
pgsVariable * encoding = pnew pgsString(wxLocale::GetSystemEncodingName());
63
pgsStmtList * pgsContext::stmt_list(pgsThread * app)
65
pgsStmtList * stmt_list = pnew pgsStmtList(m_cout, app);
70
void pgsContext::add_column(const wxString & column)
72
m_columns.Add(column);
75
const wxArrayString & pgsContext::columns()
80
void pgsContext::clear_columns()
85
void pgsContext::push_var(pgsExpression * var)
87
wxLogScriptVerbose(wxT("PUSH EXPR %s"), var->value().c_str());
88
m_vars.push_back(var);
91
void pgsContext::pop_var()
93
wxLogScriptVerbose(wxT("POP EXPR %s"), m_vars.back()->value().c_str());
97
size_t pgsContext::size_vars() const
99
return m_vars.GetCount();
102
void pgsContext::push_stmt(pgsStmt * stmt)
104
wxLogScriptVerbose(wxT("PUSH STMT %s"), wxString(typeid(*stmt).name(),
105
wxConvUTF8).c_str());
106
m_stmts.push_back(stmt);
109
void pgsContext::pop_stmt()
111
wxLogScriptVerbose(wxT("POP STMT %s"), wxString(typeid(*(m_stmts.back()))
112
.name(), wxConvUTF8).c_str());
116
size_t pgsContext::size_stmts() const
118
return m_stmts.GetCount();
121
void pgsContext::clear_stacks()
123
while (!m_vars.empty())
125
pdelete(m_vars.back());
129
while (!m_stmts.empty())
131
pdelete(m_stmts.back());