We now compile with boost_date_time (although parts of the code have
been stubbed out as a result).
This commit is contained in:
parent
ba2a54f3d2
commit
086ea40d99
25 changed files with 691 additions and 178 deletions
275
Doxyfile
Normal file
275
Doxyfile
Normal file
|
|
@ -0,0 +1,275 @@
|
||||||
|
# Doxyfile 1.5.1
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------------
|
||||||
|
# Project related configuration options
|
||||||
|
#---------------------------------------------------------------------------
|
||||||
|
PROJECT_NAME = Ledger
|
||||||
|
PROJECT_NUMBER = 3.0
|
||||||
|
OUTPUT_DIRECTORY = %distdir%/docs
|
||||||
|
CREATE_SUBDIRS = NO
|
||||||
|
OUTPUT_LANGUAGE = English
|
||||||
|
USE_WINDOWS_ENCODING = NO
|
||||||
|
BRIEF_MEMBER_DESC = YES
|
||||||
|
REPEAT_BRIEF = YES
|
||||||
|
ABBREVIATE_BRIEF = "The $name class" \
|
||||||
|
"The $name widget" \
|
||||||
|
"The $name file" \
|
||||||
|
is \
|
||||||
|
provides \
|
||||||
|
specifies \
|
||||||
|
contains \
|
||||||
|
represents \
|
||||||
|
a \
|
||||||
|
an \
|
||||||
|
the
|
||||||
|
ALWAYS_DETAILED_SEC = NO
|
||||||
|
INLINE_INHERITED_MEMB = NO
|
||||||
|
FULL_PATH_NAMES = YES
|
||||||
|
STRIP_FROM_PATH = /Applications/Copied/
|
||||||
|
STRIP_FROM_INC_PATH =
|
||||||
|
SHORT_NAMES = NO
|
||||||
|
JAVADOC_AUTOBRIEF = NO
|
||||||
|
MULTILINE_CPP_IS_BRIEF = NO
|
||||||
|
DETAILS_AT_TOP = NO
|
||||||
|
INHERIT_DOCS = YES
|
||||||
|
SEPARATE_MEMBER_PAGES = NO
|
||||||
|
TAB_SIZE = 8
|
||||||
|
ALIASES =
|
||||||
|
OPTIMIZE_OUTPUT_FOR_C = NO
|
||||||
|
OPTIMIZE_OUTPUT_JAVA = NO
|
||||||
|
BUILTIN_STL_SUPPORT = NO
|
||||||
|
DISTRIBUTE_GROUP_DOC = NO
|
||||||
|
SUBGROUPING = YES
|
||||||
|
#---------------------------------------------------------------------------
|
||||||
|
# Build related configuration options
|
||||||
|
#---------------------------------------------------------------------------
|
||||||
|
EXTRACT_ALL = NO
|
||||||
|
EXTRACT_PRIVATE = NO
|
||||||
|
EXTRACT_STATIC = NO
|
||||||
|
EXTRACT_LOCAL_CLASSES = YES
|
||||||
|
EXTRACT_LOCAL_METHODS = NO
|
||||||
|
HIDE_UNDOC_MEMBERS = YES
|
||||||
|
HIDE_UNDOC_CLASSES = YES
|
||||||
|
HIDE_FRIEND_COMPOUNDS = NO
|
||||||
|
HIDE_IN_BODY_DOCS = NO
|
||||||
|
INTERNAL_DOCS = NO
|
||||||
|
CASE_SENSE_NAMES = NO
|
||||||
|
HIDE_SCOPE_NAMES = NO
|
||||||
|
SHOW_INCLUDE_FILES = YES
|
||||||
|
INLINE_INFO = YES
|
||||||
|
SORT_MEMBER_DOCS = YES
|
||||||
|
SORT_BRIEF_DOCS = NO
|
||||||
|
SORT_BY_SCOPE_NAME = NO
|
||||||
|
GENERATE_TODOLIST = YES
|
||||||
|
GENERATE_TESTLIST = YES
|
||||||
|
GENERATE_BUGLIST = YES
|
||||||
|
GENERATE_DEPRECATEDLIST= YES
|
||||||
|
ENABLED_SECTIONS =
|
||||||
|
MAX_INITIALIZER_LINES = 30
|
||||||
|
SHOW_USED_FILES = YES
|
||||||
|
SHOW_DIRECTORIES = NO
|
||||||
|
FILE_VERSION_FILTER =
|
||||||
|
#---------------------------------------------------------------------------
|
||||||
|
# configuration options related to warning and progress messages
|
||||||
|
#---------------------------------------------------------------------------
|
||||||
|
QUIET = NO
|
||||||
|
WARNINGS = YES
|
||||||
|
WARN_IF_UNDOCUMENTED = YES
|
||||||
|
WARN_IF_DOC_ERROR = YES
|
||||||
|
WARN_NO_PARAMDOC = NO
|
||||||
|
WARN_FORMAT = "$file:$line: $text"
|
||||||
|
WARN_LOGFILE =
|
||||||
|
#---------------------------------------------------------------------------
|
||||||
|
# configuration options related to the input files
|
||||||
|
#---------------------------------------------------------------------------
|
||||||
|
INPUT = %srcdir%
|
||||||
|
FILE_PATTERNS = *.c \
|
||||||
|
*.cc \
|
||||||
|
*.cxx \
|
||||||
|
*.cpp \
|
||||||
|
*.c++ \
|
||||||
|
*.d \
|
||||||
|
*.java \
|
||||||
|
*.ii \
|
||||||
|
*.ixx \
|
||||||
|
*.ipp \
|
||||||
|
*.i++ \
|
||||||
|
*.inl \
|
||||||
|
*.h \
|
||||||
|
*.hh \
|
||||||
|
*.hxx \
|
||||||
|
*.hpp \
|
||||||
|
*.h++ \
|
||||||
|
*.idl \
|
||||||
|
*.odl \
|
||||||
|
*.cs \
|
||||||
|
*.php \
|
||||||
|
*.php3 \
|
||||||
|
*.inc \
|
||||||
|
*.m \
|
||||||
|
*.mm \
|
||||||
|
*.dox \
|
||||||
|
*.py \
|
||||||
|
*.C \
|
||||||
|
*.CC \
|
||||||
|
*.C++ \
|
||||||
|
*.II \
|
||||||
|
*.I++ \
|
||||||
|
*.H \
|
||||||
|
*.HH \
|
||||||
|
*.H++ \
|
||||||
|
*.CS \
|
||||||
|
*.PHP \
|
||||||
|
*.PHP3 \
|
||||||
|
*.M \
|
||||||
|
*.MM \
|
||||||
|
*.PY
|
||||||
|
RECURSIVE = NO
|
||||||
|
EXCLUDE =
|
||||||
|
EXCLUDE_SYMLINKS = NO
|
||||||
|
EXCLUDE_PATTERNS =
|
||||||
|
EXAMPLE_PATH =
|
||||||
|
EXAMPLE_PATTERNS = *
|
||||||
|
EXAMPLE_RECURSIVE = NO
|
||||||
|
IMAGE_PATH =
|
||||||
|
INPUT_FILTER =
|
||||||
|
FILTER_PATTERNS =
|
||||||
|
FILTER_SOURCE_FILES = NO
|
||||||
|
#---------------------------------------------------------------------------
|
||||||
|
# configuration options related to source browsing
|
||||||
|
#---------------------------------------------------------------------------
|
||||||
|
SOURCE_BROWSER = YES
|
||||||
|
INLINE_SOURCES = NO
|
||||||
|
STRIP_CODE_COMMENTS = YES
|
||||||
|
REFERENCED_BY_RELATION = YES
|
||||||
|
REFERENCES_RELATION = YES
|
||||||
|
REFERENCES_LINK_SOURCE = YES
|
||||||
|
USE_HTAGS = NO
|
||||||
|
VERBATIM_HEADERS = YES
|
||||||
|
#---------------------------------------------------------------------------
|
||||||
|
# configuration options related to the alphabetical class index
|
||||||
|
#---------------------------------------------------------------------------
|
||||||
|
ALPHABETICAL_INDEX = NO
|
||||||
|
COLS_IN_ALPHA_INDEX = 5
|
||||||
|
IGNORE_PREFIX =
|
||||||
|
#---------------------------------------------------------------------------
|
||||||
|
# configuration options related to the HTML output
|
||||||
|
#---------------------------------------------------------------------------
|
||||||
|
GENERATE_HTML = YES
|
||||||
|
HTML_OUTPUT = html
|
||||||
|
HTML_FILE_EXTENSION = .html
|
||||||
|
HTML_HEADER =
|
||||||
|
HTML_FOOTER =
|
||||||
|
HTML_STYLESHEET =
|
||||||
|
HTML_ALIGN_MEMBERS = YES
|
||||||
|
GENERATE_HTMLHELP = NO
|
||||||
|
CHM_FILE =
|
||||||
|
HHC_LOCATION =
|
||||||
|
GENERATE_CHI = NO
|
||||||
|
BINARY_TOC = NO
|
||||||
|
TOC_EXPAND = NO
|
||||||
|
DISABLE_INDEX = NO
|
||||||
|
ENUM_VALUES_PER_LINE = 4
|
||||||
|
GENERATE_TREEVIEW = YES
|
||||||
|
TREEVIEW_WIDTH = 250
|
||||||
|
#---------------------------------------------------------------------------
|
||||||
|
# configuration options related to the LaTeX output
|
||||||
|
#---------------------------------------------------------------------------
|
||||||
|
GENERATE_LATEX = NO
|
||||||
|
LATEX_OUTPUT = latex
|
||||||
|
LATEX_CMD_NAME = latex
|
||||||
|
MAKEINDEX_CMD_NAME = makeindex
|
||||||
|
COMPACT_LATEX = NO
|
||||||
|
PAPER_TYPE = a4wide
|
||||||
|
EXTRA_PACKAGES =
|
||||||
|
LATEX_HEADER =
|
||||||
|
PDF_HYPERLINKS = YES
|
||||||
|
USE_PDFLATEX = YES
|
||||||
|
LATEX_BATCHMODE = NO
|
||||||
|
LATEX_HIDE_INDICES = NO
|
||||||
|
#---------------------------------------------------------------------------
|
||||||
|
# configuration options related to the RTF output
|
||||||
|
#---------------------------------------------------------------------------
|
||||||
|
GENERATE_RTF = NO
|
||||||
|
RTF_OUTPUT = rtf
|
||||||
|
COMPACT_RTF = NO
|
||||||
|
RTF_HYPERLINKS = NO
|
||||||
|
RTF_STYLESHEET_FILE =
|
||||||
|
RTF_EXTENSIONS_FILE =
|
||||||
|
#---------------------------------------------------------------------------
|
||||||
|
# configuration options related to the man page output
|
||||||
|
#---------------------------------------------------------------------------
|
||||||
|
GENERATE_MAN = NO
|
||||||
|
MAN_OUTPUT = man
|
||||||
|
MAN_EXTENSION = .3
|
||||||
|
MAN_LINKS = NO
|
||||||
|
#---------------------------------------------------------------------------
|
||||||
|
# configuration options related to the XML output
|
||||||
|
#---------------------------------------------------------------------------
|
||||||
|
GENERATE_XML = NO
|
||||||
|
XML_OUTPUT = xml
|
||||||
|
XML_SCHEMA =
|
||||||
|
XML_DTD =
|
||||||
|
XML_PROGRAMLISTING = YES
|
||||||
|
#---------------------------------------------------------------------------
|
||||||
|
# configuration options for the AutoGen Definitions output
|
||||||
|
#---------------------------------------------------------------------------
|
||||||
|
GENERATE_AUTOGEN_DEF = NO
|
||||||
|
#---------------------------------------------------------------------------
|
||||||
|
# configuration options related to the Perl module output
|
||||||
|
#---------------------------------------------------------------------------
|
||||||
|
GENERATE_PERLMOD = NO
|
||||||
|
PERLMOD_LATEX = NO
|
||||||
|
PERLMOD_PRETTY = YES
|
||||||
|
PERLMOD_MAKEVAR_PREFIX =
|
||||||
|
#---------------------------------------------------------------------------
|
||||||
|
# Configuration options related to the preprocessor
|
||||||
|
#---------------------------------------------------------------------------
|
||||||
|
ENABLE_PREPROCESSING = YES
|
||||||
|
MACRO_EXPANSION = NO
|
||||||
|
EXPAND_ONLY_PREDEF = NO
|
||||||
|
SEARCH_INCLUDES = YES
|
||||||
|
INCLUDE_PATH =
|
||||||
|
INCLUDE_FILE_PATTERNS =
|
||||||
|
PREDEFINED =
|
||||||
|
EXPAND_AS_DEFINED =
|
||||||
|
SKIP_FUNCTION_MACROS = YES
|
||||||
|
#---------------------------------------------------------------------------
|
||||||
|
# Configuration::additions related to external references
|
||||||
|
#---------------------------------------------------------------------------
|
||||||
|
TAGFILES =
|
||||||
|
GENERATE_TAGFILE =
|
||||||
|
ALLEXTERNALS = NO
|
||||||
|
EXTERNAL_GROUPS = YES
|
||||||
|
PERL_PATH = /usr/bin/perl
|
||||||
|
#---------------------------------------------------------------------------
|
||||||
|
# Configuration options related to the dot tool
|
||||||
|
#---------------------------------------------------------------------------
|
||||||
|
CLASS_DIAGRAMS = NO
|
||||||
|
HIDE_UNDOC_RELATIONS = YES
|
||||||
|
HAVE_DOT = YES
|
||||||
|
CLASS_GRAPH = YES
|
||||||
|
COLLABORATION_GRAPH = YES
|
||||||
|
GROUP_GRAPHS = YES
|
||||||
|
UML_LOOK = NO
|
||||||
|
TEMPLATE_RELATIONS = NO
|
||||||
|
INCLUDE_GRAPH = YES
|
||||||
|
INCLUDED_BY_GRAPH = YES
|
||||||
|
CALL_GRAPH = NO
|
||||||
|
CALLER_GRAPH = NO
|
||||||
|
GRAPHICAL_HIERARCHY = YES
|
||||||
|
DIRECTORY_GRAPH = YES
|
||||||
|
DOT_IMAGE_FORMAT = png
|
||||||
|
DOT_PATH = /Applications/Copied/Doxygen.app/Contents/Resources/
|
||||||
|
DOTFILE_DIRS =
|
||||||
|
MAX_DOT_GRAPH_WIDTH = 1024
|
||||||
|
MAX_DOT_GRAPH_HEIGHT = 1024
|
||||||
|
MAX_DOT_GRAPH_DEPTH = 1000
|
||||||
|
DOT_TRANSPARENT = NO
|
||||||
|
DOT_MULTI_TARGETS = NO
|
||||||
|
GENERATE_LEGEND = YES
|
||||||
|
DOT_CLEANUP = YES
|
||||||
|
#---------------------------------------------------------------------------
|
||||||
|
# Configuration::additions related to the search engine
|
||||||
|
#---------------------------------------------------------------------------
|
||||||
|
SEARCHENGINE = NO
|
||||||
25
Makefile.am
25
Makefile.am
|
|
@ -1,9 +1,18 @@
|
||||||
SUBDIRS = gdtoa
|
SUBDIRS = gdtoa
|
||||||
|
|
||||||
|
|
||||||
|
ESC_srcdir=`echo "$(srcdir)" | sed 's/\//\\\\\//g'`
|
||||||
|
ESC_builddir=`echo "$(top_builddir)" | sed 's/\//\\\\\//g'`
|
||||||
|
ESC_distdir=`echo "$(distdir)" | sed 's/\//\\\\\//g'`
|
||||||
|
|
||||||
EXTRA_DIST = docs tests
|
EXTRA_DIST = docs tests
|
||||||
|
|
||||||
dist-hook:
|
dist-hook:
|
||||||
rm -fr `find $(distdir) -name .svn`
|
rm -fr `find $(distdir) -name .svn`
|
||||||
|
cat $(srcdir)/Doxyfile | sed "s/%srcdir%/$(ESC_srcdir)/g" \
|
||||||
|
| sed "s/%distdir%/$(ESC_distdir)/g" > $(distdir)/Doxyfile
|
||||||
|
doxygen $(distdir)/Doxyfile
|
||||||
|
|
||||||
|
|
||||||
lib_LTLIBRARIES = libledger.la
|
lib_LTLIBRARIES = libledger.la
|
||||||
if HAVE_BOOST_PYTHON
|
if HAVE_BOOST_PYTHON
|
||||||
|
|
@ -140,8 +149,8 @@ info_TEXINFOS = ledger.texi
|
||||||
|
|
||||||
######################################################################
|
######################################################################
|
||||||
|
|
||||||
#lisp_LISP = ledger.el timeclock.el
|
lisp_LISP = ledger.el timeclock.el
|
||||||
#dist_lisp_LISP = ledger.el timeclock.el
|
dist_lisp_LISP = ledger.el timeclock.el
|
||||||
|
|
||||||
######################################################################
|
######################################################################
|
||||||
|
|
||||||
|
|
@ -170,18 +179,20 @@ DEBUG_LEVEL = 0
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ledger.so: pyledger.cc libledger.la gdtoa/libgdtoa.la libpyledger.la
|
ledger.so: pyledger.cc libledger.la gdtoa/libgdtoa.la libpyledger.la
|
||||||
|
SRCDIR="$(srcdir)" \
|
||||||
CFLAGS="$(CPPFLAGS)" \
|
CFLAGS="$(CPPFLAGS)" \
|
||||||
LDFLAGS="$(LDFLAGS) -L. -L.libs -Lgdtoa -Lgdtoa/.libs" \
|
LDFLAGS="$(LDFLAGS) -L. -L.libs -Lgdtoa -Lgdtoa/.libs" \
|
||||||
PYLIBS="$(PYLIBS)" \
|
PYLIBS="$(PYLIBS)" \
|
||||||
DEBUG_LEVEL="$(DEBUG_LEVEL)" \
|
DEBUG_LEVEL="$(DEBUG_LEVEL)" \
|
||||||
python setup.py build --build-lib=.
|
python $(srcdir)/setup.py build --build-lib=.
|
||||||
|
|
||||||
install-exec-hook:
|
install-exec-hook:
|
||||||
|
SRCDIR="$(srcdir)" \
|
||||||
CFLAGS="$(CPPFLAGS)" \
|
CFLAGS="$(CPPFLAGS)" \
|
||||||
LDFLAGS="$(LDFLAGS) -L. -L.libs -Lgdtoa -Lgdtoa/.libs" \
|
LDFLAGS="$(LDFLAGS) -L. -L.libs -Lgdtoa -Lgdtoa/.libs" \
|
||||||
PYLIBS="$(PYLIBS)" \
|
PYLIBS="$(PYLIBS)" \
|
||||||
DEBUG_LEVEL="$(DEBUG_LEVEL)" \
|
DEBUG_LEVEL="$(DEBUG_LEVEL)" \
|
||||||
python setup.py install --prefix=$(prefix)
|
python $(srcdir)/setup.py install --prefix=$(prefix)
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
@ -220,13 +231,17 @@ endif
|
||||||
PyUnitTests_SOURCES =
|
PyUnitTests_SOURCES =
|
||||||
|
|
||||||
PyUnitTests: PyUnitTests.py
|
PyUnitTests: PyUnitTests.py
|
||||||
cp PyUnitTests.py PyUnitTests
|
cat $(srcdir)/PyUnitTests.py | sed "s/%srcdir%/$(ESC_srcdir)/g" \
|
||||||
|
| sed "s/%builddir%/$(ESC_builddir)/g" > PyUnitTests
|
||||||
chmod 755 PyUnitTests
|
chmod 755 PyUnitTests
|
||||||
|
|
||||||
######################################################################
|
######################################################################
|
||||||
|
|
||||||
all: check
|
all: check
|
||||||
|
|
||||||
|
docs: ledger.info ledger.pdf
|
||||||
|
doxygen
|
||||||
|
|
||||||
check-syntax:
|
check-syntax:
|
||||||
g++ -I. -Itests $(CPPFLAGS) $(UnitTests_CXXFLAGS) \
|
g++ -I. -Itests $(CPPFLAGS) $(UnitTests_CXXFLAGS) \
|
||||||
-o /dev/null -S $(CHK_SOURCES)
|
-o /dev/null -S $(CHK_SOURCES)
|
||||||
|
|
|
||||||
161
Makefile.in
161
Makefile.in
|
|
@ -16,6 +16,7 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
VPATH = @srcdir@
|
VPATH = @srcdir@
|
||||||
pkgdatadir = $(datadir)/@PACKAGE@
|
pkgdatadir = $(datadir)/@PACKAGE@
|
||||||
pkglibdir = $(libdir)/@PACKAGE@
|
pkglibdir = $(libdir)/@PACKAGE@
|
||||||
|
|
@ -64,11 +65,12 @@ check_PROGRAMS = $(am__EXEEXT_2)
|
||||||
@HAVE_LIBOFX_TRUE@am__append_24 = -DHAVE_LIBOFX=1
|
@HAVE_LIBOFX_TRUE@am__append_24 = -DHAVE_LIBOFX=1
|
||||||
@DEBUG_TRUE@am__append_25 = -DDEBUG_LEVEL=4
|
@DEBUG_TRUE@am__append_25 = -DDEBUG_LEVEL=4
|
||||||
subdir = .
|
subdir = .
|
||||||
DIST_COMMON = README $(am__configure_deps) $(pkginclude_HEADERS) \
|
DIST_COMMON = README $(am__configure_deps) $(dist_lisp_LISP) \
|
||||||
$(srcdir)/Makefile.am $(srcdir)/Makefile.in \
|
$(pkginclude_HEADERS) $(srcdir)/Makefile.am \
|
||||||
$(srcdir)/acconf.h.in $(top_srcdir)/configure AUTHORS COPYING \
|
$(srcdir)/Makefile.in $(srcdir)/acconf.h.in \
|
||||||
ChangeLog INSTALL NEWS compile config.guess config.sub depcomp \
|
$(top_srcdir)/configure AUTHORS COPYING ChangeLog INSTALL NEWS \
|
||||||
install-sh ltmain.sh missing texinfo.tex
|
compile config.guess config.sub depcomp elisp-comp install-sh \
|
||||||
|
ltmain.sh missing texinfo.tex
|
||||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||||
am__aclocal_m4_deps = $(top_srcdir)/configure.in
|
am__aclocal_m4_deps = $(top_srcdir)/configure.in
|
||||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||||
|
|
@ -85,7 +87,8 @@ am__vpath_adj = case $$p in \
|
||||||
esac;
|
esac;
|
||||||
am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
|
am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
|
||||||
am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" \
|
am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" \
|
||||||
"$(DESTDIR)$(infodir)" "$(DESTDIR)$(pkgincludedir)"
|
"$(DESTDIR)$(infodir)" "$(DESTDIR)$(lispdir)" \
|
||||||
|
"$(DESTDIR)$(lispdir)" "$(DESTDIR)$(pkgincludedir)"
|
||||||
libLTLIBRARIES_INSTALL = $(INSTALL)
|
libLTLIBRARIES_INSTALL = $(INSTALL)
|
||||||
LTLIBRARIES = $(lib_LTLIBRARIES)
|
LTLIBRARIES = $(lib_LTLIBRARIES)
|
||||||
libledger_la_LIBADD =
|
libledger_la_LIBADD =
|
||||||
|
|
@ -199,6 +202,13 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
|
||||||
install-pdf-recursive install-ps-recursive install-recursive \
|
install-pdf-recursive install-ps-recursive install-recursive \
|
||||||
installcheck-recursive installdirs-recursive pdf-recursive \
|
installcheck-recursive installdirs-recursive pdf-recursive \
|
||||||
ps-recursive uninstall-recursive
|
ps-recursive uninstall-recursive
|
||||||
|
dist_lispLISP_INSTALL = $(INSTALL_DATA)
|
||||||
|
lispLISP_INSTALL = $(INSTALL_DATA)
|
||||||
|
LISP = $(dist_lisp_LISP) $(lisp_LISP)
|
||||||
|
am__ELFILES = ledger.el timeclock.el
|
||||||
|
am__ELCFILES = $(am__ELFILES:.el=.elc)
|
||||||
|
ELCFILES = $(LISP:.el=.elc)
|
||||||
|
elisp_comp = $(top_srcdir)/elisp-comp
|
||||||
pkgincludeHEADERS_INSTALL = $(INSTALL_HEADER)
|
pkgincludeHEADERS_INSTALL = $(INSTALL_HEADER)
|
||||||
HEADERS = $(pkginclude_HEADERS)
|
HEADERS = $(pkginclude_HEADERS)
|
||||||
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
|
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
|
||||||
|
|
@ -398,6 +408,10 @@ ledger_LDADD = $(LIBOBJS) libledger.la gdtoa/libgdtoa.la \
|
||||||
$(am__append_16)
|
$(am__append_16)
|
||||||
ledger_LDFLAGS = -static # for the sake of command-line speed
|
ledger_LDFLAGS = -static # for the sake of command-line speed
|
||||||
info_TEXINFOS = ledger.texi
|
info_TEXINFOS = ledger.texi
|
||||||
|
|
||||||
|
######################################################################
|
||||||
|
lisp_LISP = ledger.el timeclock.el
|
||||||
|
dist_lisp_LISP = ledger.el timeclock.el
|
||||||
@HAVE_BOOST_PYTHON_TRUE@ledger_so_SOURCES = pyledger.cc
|
@HAVE_BOOST_PYTHON_TRUE@ledger_so_SOURCES = pyledger.cc
|
||||||
@HAVE_BOOST_PYTHON_TRUE@PYLIBS = pyledger ledger gdtoa boost_date_time \
|
@HAVE_BOOST_PYTHON_TRUE@PYLIBS = pyledger ledger gdtoa boost_date_time \
|
||||||
@HAVE_BOOST_PYTHON_TRUE@ boost_python gmp pcre $(am__append_18) \
|
@HAVE_BOOST_PYTHON_TRUE@ boost_python gmp pcre $(am__append_18) \
|
||||||
|
|
@ -415,6 +429,8 @@ UnitTests_LDFLAGS = $(LIBADD_DL)
|
||||||
UnitTests_CXXFLAGS = -I. -I$(srcdir)/tests $(am__append_22) \
|
UnitTests_CXXFLAGS = -I. -I$(srcdir)/tests $(am__append_22) \
|
||||||
$(am__append_23) $(am__append_24) $(am__append_25)
|
$(am__append_23) $(am__append_24) $(am__append_25)
|
||||||
PyUnitTests_SOURCES =
|
PyUnitTests_SOURCES =
|
||||||
|
ESC_srcdir = `echo "$(srcdir)" | sed 's/\//\\\\\//g'`
|
||||||
|
ESC_builddir = `echo "$(top_builddir)" | sed 's/\//\\\\\//g'`
|
||||||
all: acconf.h
|
all: acconf.h
|
||||||
$(MAKE) $(AM_MAKEFLAGS) all-recursive
|
$(MAKE) $(AM_MAKEFLAGS) all-recursive
|
||||||
|
|
||||||
|
|
@ -1051,6 +1067,85 @@ maintainer-clean-aminfo:
|
||||||
echo " rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]"; \
|
echo " rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]"; \
|
||||||
rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]; \
|
rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]; \
|
||||||
done
|
done
|
||||||
|
|
||||||
|
elc-stamp: $(LISP)
|
||||||
|
@echo 'WARNING: Warnings can be ignored. :-)'
|
||||||
|
@rm -f elc-temp && touch elc-temp
|
||||||
|
if test "$(EMACS)" != no; then \
|
||||||
|
set x; \
|
||||||
|
list='$(LISP)'; for p in $$list; do \
|
||||||
|
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
||||||
|
set x "$$@" "$$d$$p"; shift; \
|
||||||
|
done; \
|
||||||
|
shift; \
|
||||||
|
EMACS="$(EMACS)" $(SHELL) $(elisp_comp) "$$@" || exit 1; \
|
||||||
|
else : ; fi
|
||||||
|
@mv -f elc-temp $@
|
||||||
|
$(am__ELCFILES): elc-stamp
|
||||||
|
@if test "$(EMACS)" != no && test ! -f $@; then \
|
||||||
|
trap 'rm -rf elc-lock elc-stamp' 1 2 13 15; \
|
||||||
|
if mkdir elc-lock 2>/dev/null; then \
|
||||||
|
rm -f elc-stamp; \
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) elc-stamp; \
|
||||||
|
rmdir elc-lock; \
|
||||||
|
else \
|
||||||
|
while test -d elc-lock; do sleep 1; done; \
|
||||||
|
test -f elc-stamp; exit $$?; \
|
||||||
|
fi; \
|
||||||
|
else : ; fi
|
||||||
|
install-dist_lispLISP: $(dist_lisp_LISP) $(ELCFILES)
|
||||||
|
@$(NORMAL_INSTALL)
|
||||||
|
@if test "$(EMACS)" != no; then \
|
||||||
|
test -z "$(lispdir)" || $(MKDIR_P) "$(DESTDIR)$(lispdir)"; \
|
||||||
|
list='$(dist_lisp_LISP)'; for p in $$list; do \
|
||||||
|
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
||||||
|
f=$(am__strip_dir) \
|
||||||
|
echo " $(dist_lispLISP_INSTALL) '$$d$$p' '$(DESTDIR)$(lispdir)/$$f'"; \
|
||||||
|
$(dist_lispLISP_INSTALL) "$$d$$p" "$(DESTDIR)$(lispdir)/$$f"; \
|
||||||
|
if test -f $${p}c; then \
|
||||||
|
echo " $(dist_lispLISP_INSTALL) '$${p}c' '$(DESTDIR)$(lispdir)/$${f}c'"; \
|
||||||
|
$(dist_lispLISP_INSTALL) "$${p}c" "$(DESTDIR)$(lispdir)/$${f}c"; \
|
||||||
|
else : ; fi; \
|
||||||
|
done; \
|
||||||
|
else : ; fi
|
||||||
|
|
||||||
|
uninstall-dist_lispLISP:
|
||||||
|
@$(NORMAL_UNINSTALL)
|
||||||
|
@if test "$(EMACS)" != no; then \
|
||||||
|
list='$(dist_lisp_LISP)'; for p in $$list; do \
|
||||||
|
f=$(am__strip_dir) \
|
||||||
|
echo " rm -f '$(DESTDIR)$(lispdir)/$$f' '$(DESTDIR)$(lispdir)/$${f}c'"; \
|
||||||
|
rm -f "$(DESTDIR)$(lispdir)/$$f" "$(DESTDIR)$(lispdir)/$${f}c"; \
|
||||||
|
done; \
|
||||||
|
else : ; fi
|
||||||
|
|
||||||
|
clean-lisp:
|
||||||
|
-rm -f elc-stamp $(ELCFILES)
|
||||||
|
install-lispLISP: $(lisp_LISP) $(ELCFILES)
|
||||||
|
@$(NORMAL_INSTALL)
|
||||||
|
@if test "$(EMACS)" != no; then \
|
||||||
|
test -z "$(lispdir)" || $(MKDIR_P) "$(DESTDIR)$(lispdir)"; \
|
||||||
|
list='$(lisp_LISP)'; for p in $$list; do \
|
||||||
|
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
||||||
|
f=$(am__strip_dir) \
|
||||||
|
echo " $(lispLISP_INSTALL) '$$d$$p' '$(DESTDIR)$(lispdir)/$$f'"; \
|
||||||
|
$(lispLISP_INSTALL) "$$d$$p" "$(DESTDIR)$(lispdir)/$$f"; \
|
||||||
|
if test -f $${p}c; then \
|
||||||
|
echo " $(lispLISP_INSTALL) '$${p}c' '$(DESTDIR)$(lispdir)/$${f}c'"; \
|
||||||
|
$(lispLISP_INSTALL) "$${p}c" "$(DESTDIR)$(lispdir)/$${f}c"; \
|
||||||
|
else : ; fi; \
|
||||||
|
done; \
|
||||||
|
else : ; fi
|
||||||
|
|
||||||
|
uninstall-lispLISP:
|
||||||
|
@$(NORMAL_UNINSTALL)
|
||||||
|
@if test "$(EMACS)" != no; then \
|
||||||
|
list='$(lisp_LISP)'; for p in $$list; do \
|
||||||
|
f=$(am__strip_dir) \
|
||||||
|
echo " rm -f '$(DESTDIR)$(lispdir)/$$f' '$(DESTDIR)$(lispdir)/$${f}c'"; \
|
||||||
|
rm -f "$(DESTDIR)$(lispdir)/$$f" "$(DESTDIR)$(lispdir)/$${f}c"; \
|
||||||
|
done; \
|
||||||
|
else : ; fi
|
||||||
install-pkgincludeHEADERS: $(pkginclude_HEADERS)
|
install-pkgincludeHEADERS: $(pkginclude_HEADERS)
|
||||||
@$(NORMAL_INSTALL)
|
@$(NORMAL_INSTALL)
|
||||||
test -z "$(pkgincludedir)" || $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)"
|
test -z "$(pkgincludedir)" || $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)"
|
||||||
|
|
@ -1422,13 +1517,13 @@ check-am: all-am
|
||||||
$(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
|
$(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
|
||||||
$(MAKE) $(AM_MAKEFLAGS) check-TESTS
|
$(MAKE) $(AM_MAKEFLAGS) check-TESTS
|
||||||
check: check-recursive
|
check: check-recursive
|
||||||
all-am: Makefile $(INFO_DEPS) $(LTLIBRARIES) $(PROGRAMS) $(HEADERS) \
|
all-am: Makefile $(INFO_DEPS) $(LTLIBRARIES) $(PROGRAMS) $(LISP) \
|
||||||
acconf.h
|
$(ELCFILES) $(HEADERS) acconf.h
|
||||||
install-binPROGRAMS: install-libLTLIBRARIES
|
install-binPROGRAMS: install-libLTLIBRARIES
|
||||||
|
|
||||||
installdirs: installdirs-recursive
|
installdirs: installdirs-recursive
|
||||||
installdirs-am:
|
installdirs-am:
|
||||||
for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(infodir)" "$(DESTDIR)$(pkgincludedir)"; do \
|
for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(infodir)" "$(DESTDIR)$(lispdir)" "$(DESTDIR)$(lispdir)" "$(DESTDIR)$(pkgincludedir)"; do \
|
||||||
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
|
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
|
||||||
done
|
done
|
||||||
install: install-recursive
|
install: install-recursive
|
||||||
|
|
@ -1459,8 +1554,8 @@ maintainer-clean-generic:
|
||||||
clean: clean-recursive
|
clean: clean-recursive
|
||||||
|
|
||||||
clean-am: clean-binPROGRAMS clean-checkPROGRAMS clean-generic \
|
clean-am: clean-binPROGRAMS clean-checkPROGRAMS clean-generic \
|
||||||
clean-libLTLIBRARIES clean-libtool clean-noinstPROGRAMS \
|
clean-libLTLIBRARIES clean-libtool clean-lisp \
|
||||||
mostlyclean-am
|
clean-noinstPROGRAMS mostlyclean-am
|
||||||
|
|
||||||
distclean: distclean-recursive
|
distclean: distclean-recursive
|
||||||
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
|
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
|
||||||
|
|
@ -1481,7 +1576,8 @@ info: info-recursive
|
||||||
|
|
||||||
info-am: $(INFO_DEPS)
|
info-am: $(INFO_DEPS)
|
||||||
|
|
||||||
install-data-am: install-info-am install-pkgincludeHEADERS
|
install-data-am: install-dist_lispLISP install-info-am \
|
||||||
|
install-lispLISP install-pkgincludeHEADERS
|
||||||
|
|
||||||
install-dvi: install-dvi-recursive
|
install-dvi: install-dvi-recursive
|
||||||
|
|
||||||
|
|
@ -1595,8 +1691,9 @@ ps: ps-recursive
|
||||||
|
|
||||||
ps-am: $(PSS)
|
ps-am: $(PSS)
|
||||||
|
|
||||||
uninstall-am: uninstall-binPROGRAMS uninstall-dvi-am uninstall-html-am \
|
uninstall-am: uninstall-binPROGRAMS uninstall-dist_lispLISP \
|
||||||
uninstall-info-am uninstall-libLTLIBRARIES uninstall-pdf-am \
|
uninstall-dvi-am uninstall-html-am uninstall-info-am \
|
||||||
|
uninstall-libLTLIBRARIES uninstall-lispLISP uninstall-pdf-am \
|
||||||
uninstall-pkgincludeHEADERS uninstall-ps-am
|
uninstall-pkgincludeHEADERS uninstall-ps-am
|
||||||
|
|
||||||
.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
|
.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
|
||||||
|
|
@ -1605,25 +1702,27 @@ uninstall-am: uninstall-binPROGRAMS uninstall-dvi-am uninstall-html-am \
|
||||||
.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
|
.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
|
||||||
all all-am am--refresh check check-TESTS check-am clean \
|
all all-am am--refresh check check-TESTS check-am clean \
|
||||||
clean-binPROGRAMS clean-checkPROGRAMS clean-generic \
|
clean-binPROGRAMS clean-checkPROGRAMS clean-generic \
|
||||||
clean-libLTLIBRARIES clean-libtool clean-noinstPROGRAMS ctags \
|
clean-libLTLIBRARIES clean-libtool clean-lisp \
|
||||||
ctags-recursive dist dist-all dist-bzip2 dist-gzip dist-hook \
|
clean-noinstPROGRAMS ctags ctags-recursive dist dist-all \
|
||||||
dist-info dist-shar dist-tarZ dist-zip distcheck distclean \
|
dist-bzip2 dist-gzip dist-hook dist-info dist-shar dist-tarZ \
|
||||||
distclean-compile distclean-generic distclean-hdr \
|
dist-zip distcheck distclean distclean-compile \
|
||||||
distclean-libtool distclean-tags distcleancheck distdir \
|
distclean-generic distclean-hdr distclean-libtool \
|
||||||
distuninstallcheck dvi dvi-am html html-am info info-am \
|
distclean-tags distcleancheck distdir distuninstallcheck dvi \
|
||||||
install install-am install-binPROGRAMS install-data \
|
dvi-am html html-am info info-am install install-am \
|
||||||
install-data-am install-dvi install-dvi-am install-exec \
|
install-binPROGRAMS install-data install-data-am \
|
||||||
|
install-dist_lispLISP install-dvi install-dvi-am install-exec \
|
||||||
install-exec-am install-exec-hook install-html install-html-am \
|
install-exec-am install-exec-hook install-html install-html-am \
|
||||||
install-info install-info-am install-libLTLIBRARIES \
|
install-info install-info-am install-libLTLIBRARIES \
|
||||||
install-man install-pdf install-pdf-am \
|
install-lispLISP install-man install-pdf install-pdf-am \
|
||||||
install-pkgincludeHEADERS install-ps install-ps-am \
|
install-pkgincludeHEADERS install-ps install-ps-am \
|
||||||
install-strip installcheck installcheck-am installdirs \
|
install-strip installcheck installcheck-am installdirs \
|
||||||
installdirs-am maintainer-clean maintainer-clean-aminfo \
|
installdirs-am maintainer-clean maintainer-clean-aminfo \
|
||||||
maintainer-clean-generic mostlyclean mostlyclean-aminfo \
|
maintainer-clean-generic mostlyclean mostlyclean-aminfo \
|
||||||
mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
|
mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
|
||||||
pdf pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \
|
pdf pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \
|
||||||
uninstall-binPROGRAMS uninstall-dvi-am uninstall-html-am \
|
uninstall-binPROGRAMS uninstall-dist_lispLISP uninstall-dvi-am \
|
||||||
uninstall-info-am uninstall-libLTLIBRARIES uninstall-pdf-am \
|
uninstall-html-am uninstall-info-am uninstall-libLTLIBRARIES \
|
||||||
|
uninstall-lispLISP uninstall-pdf-am \
|
||||||
uninstall-pkgincludeHEADERS uninstall-ps-am
|
uninstall-pkgincludeHEADERS uninstall-ps-am
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1631,27 +1730,33 @@ dist-hook:
|
||||||
rm -fr `find $(distdir) -name .svn`
|
rm -fr `find $(distdir) -name .svn`
|
||||||
|
|
||||||
@HAVE_BOOST_PYTHON_TRUE@ledger.so: pyledger.cc libledger.la gdtoa/libgdtoa.la libpyledger.la
|
@HAVE_BOOST_PYTHON_TRUE@ledger.so: pyledger.cc libledger.la gdtoa/libgdtoa.la libpyledger.la
|
||||||
|
@HAVE_BOOST_PYTHON_TRUE@ SRCDIR="$(srcdir)" \
|
||||||
@HAVE_BOOST_PYTHON_TRUE@ CFLAGS="$(CPPFLAGS)" \
|
@HAVE_BOOST_PYTHON_TRUE@ CFLAGS="$(CPPFLAGS)" \
|
||||||
@HAVE_BOOST_PYTHON_TRUE@ LDFLAGS="$(LDFLAGS) -L. -L.libs -Lgdtoa -Lgdtoa/.libs" \
|
@HAVE_BOOST_PYTHON_TRUE@ LDFLAGS="$(LDFLAGS) -L. -L.libs -Lgdtoa -Lgdtoa/.libs" \
|
||||||
@HAVE_BOOST_PYTHON_TRUE@ PYLIBS="$(PYLIBS)" \
|
@HAVE_BOOST_PYTHON_TRUE@ PYLIBS="$(PYLIBS)" \
|
||||||
@HAVE_BOOST_PYTHON_TRUE@ DEBUG_LEVEL="$(DEBUG_LEVEL)" \
|
@HAVE_BOOST_PYTHON_TRUE@ DEBUG_LEVEL="$(DEBUG_LEVEL)" \
|
||||||
@HAVE_BOOST_PYTHON_TRUE@ python setup.py build --build-lib=.
|
@HAVE_BOOST_PYTHON_TRUE@ python $(srcdir)/setup.py build --build-lib=.
|
||||||
|
|
||||||
@HAVE_BOOST_PYTHON_TRUE@install-exec-hook:
|
@HAVE_BOOST_PYTHON_TRUE@install-exec-hook:
|
||||||
|
@HAVE_BOOST_PYTHON_TRUE@ SRCDIR="$(srcdir)" \
|
||||||
@HAVE_BOOST_PYTHON_TRUE@ CFLAGS="$(CPPFLAGS)" \
|
@HAVE_BOOST_PYTHON_TRUE@ CFLAGS="$(CPPFLAGS)" \
|
||||||
@HAVE_BOOST_PYTHON_TRUE@ LDFLAGS="$(LDFLAGS) -L. -L.libs -Lgdtoa -Lgdtoa/.libs" \
|
@HAVE_BOOST_PYTHON_TRUE@ LDFLAGS="$(LDFLAGS) -L. -L.libs -Lgdtoa -Lgdtoa/.libs" \
|
||||||
@HAVE_BOOST_PYTHON_TRUE@ PYLIBS="$(PYLIBS)" \
|
@HAVE_BOOST_PYTHON_TRUE@ PYLIBS="$(PYLIBS)" \
|
||||||
@HAVE_BOOST_PYTHON_TRUE@ DEBUG_LEVEL="$(DEBUG_LEVEL)" \
|
@HAVE_BOOST_PYTHON_TRUE@ DEBUG_LEVEL="$(DEBUG_LEVEL)" \
|
||||||
@HAVE_BOOST_PYTHON_TRUE@ python setup.py install --prefix=$(prefix)
|
@HAVE_BOOST_PYTHON_TRUE@ python $(srcdir)/setup.py install --prefix=$(prefix)
|
||||||
|
|
||||||
PyUnitTests: PyUnitTests.py
|
PyUnitTests: PyUnitTests.py
|
||||||
cp PyUnitTests.py PyUnitTests
|
cat $(srcdir)/PyUnitTests.py | sed "s/%srcdir%/$(ESC_srcdir)/g" \
|
||||||
|
| sed "s/%builddir%/$(ESC_builddir)/g" > PyUnitTests
|
||||||
chmod 755 PyUnitTests
|
chmod 755 PyUnitTests
|
||||||
|
|
||||||
######################################################################
|
######################################################################
|
||||||
|
|
||||||
all: check
|
all: check
|
||||||
|
|
||||||
|
docs: ledger.info ledger.pdf
|
||||||
|
doxygen
|
||||||
|
|
||||||
check-syntax:
|
check-syntax:
|
||||||
g++ -I. -Itests $(CPPFLAGS) $(UnitTests_CXXFLAGS) \
|
g++ -I. -Itests $(CPPFLAGS) $(UnitTests_CXXFLAGS) \
|
||||||
-o /dev/null -S $(CHK_SOURCES)
|
-o /dev/null -S $(CHK_SOURCES)
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
PYTHONPATH=$PWD:$PYTHONPATH python tests/python/UnitTests.py
|
PYTHONPATH="%builddir%":"%srcdir%":$PYTHONPATH \
|
||||||
|
python "%srcdir%"/tests/python/UnitTests.py
|
||||||
|
|
|
||||||
103
acprep
103
acprep
|
|
@ -1,31 +1,38 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
|
PYTHON_HOME="/Library/Frameworks/Python.framework/Versions/2.5"
|
||||||
|
|
||||||
|
# acprep, version 3.0
|
||||||
|
#
|
||||||
|
# This script configures my ledger source tree on my Mac OS/X machine.
|
||||||
|
# This is not necessary, however, since I keep all the files necessary
|
||||||
|
# for building checked in to the source tree. Users can just type
|
||||||
|
# './configure && make'. This script simply sets up the compiler and
|
||||||
|
# linker flags for all the various build permutations I use for
|
||||||
|
# testing and profiling.
|
||||||
|
|
||||||
if which glibtoolize > /dev/null 2>&1; then
|
if which glibtoolize > /dev/null 2>&1; then
|
||||||
glibtoolize --automake -f -c
|
glibtoolize --automake -f -c
|
||||||
else
|
else
|
||||||
libtoolize --automake -f -c
|
libtoolize --automake -f -c
|
||||||
fi
|
fi
|
||||||
|
|
||||||
aclocal
|
aclocal
|
||||||
autoheader
|
autoheader
|
||||||
if [ "$1" = "--dist" ]; then
|
automake -a -c -f
|
||||||
shift 1
|
|
||||||
automake -a -c -f -i
|
|
||||||
else
|
|
||||||
automake -a -c -f
|
|
||||||
fi
|
|
||||||
autoconf
|
autoconf
|
||||||
|
|
||||||
|
|
||||||
INCDIRS="-I/usr/local/include"
|
INCDIRS="-I/usr/local/include"
|
||||||
INCDIRS="$INCDIRS -I/usr/local/include/boost"
|
INCDIRS="$INCDIRS -I/usr/local/include/boost"
|
||||||
INCDIRS="$INCDIRS -I/sw/include"
|
INCDIRS="$INCDIRS -I/sw/include"
|
||||||
INCDIRS="$INCDIRS -I/usr/include/httpd/xml"
|
INCDIRS="$INCDIRS -I/usr/include/httpd/xml"
|
||||||
INCDIRS="$INCDIRS -I/Library/Frameworks/Python.framework/Versions/2.5/include/python2.5"
|
|
||||||
|
|
||||||
LIBDIRS="-L/usr/local/lib"
|
LIBDIRS="-L/usr/local/lib"
|
||||||
LIBDIRS="$LIBDIRS -L/sw/lib"
|
LIBDIRS="$LIBDIRS -L/sw/lib"
|
||||||
LIBDIRS="$LIBDIRS -L/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/config"
|
|
||||||
|
|
||||||
SYSTEM=`uname -s`
|
SYSTEM=`uname -s`
|
||||||
|
|
||||||
if [ $SYSTEM = Linux ]; then
|
if [ $SYSTEM = Linux ]; then
|
||||||
CXXFLAGS="-pthread"
|
CXXFLAGS="-pthread"
|
||||||
elif [ $SYSTEM = Solaris ]; then
|
elif [ $SYSTEM = Solaris ]; then
|
||||||
|
|
@ -49,45 +56,47 @@ WARNFLAGS="$WARNFLAGS -pedantic-errors"
|
||||||
# that is built again anyway by Xcode).
|
# that is built again anyway by Xcode).
|
||||||
SWITCHES="--disable-shared"
|
SWITCHES="--disable-shared"
|
||||||
|
|
||||||
|
|
||||||
|
while [ -n "$1" ]; do
|
||||||
|
case "$1" in
|
||||||
|
--debug)
|
||||||
|
SWITCHES="$SWITCHES --enable-debug"
|
||||||
|
CXXFLAGS="$CXXFLAGS -ggdb3" ;;
|
||||||
|
|
||||||
|
--prof | --perf)
|
||||||
|
CXXFLAGS="$CXXFLAGS -g -pg" ;;
|
||||||
|
|
||||||
|
--python)
|
||||||
|
if [ -d "$PYTHON_HOME" ]; then
|
||||||
|
SWITCHES="$SWITCHES --enable-python"
|
||||||
|
INCDIRS="$INCDIRS -I$PYTHON_HOME/include/python2.5"
|
||||||
|
LIBDIRS="$LIBDIRS -L$PYTHON_HOME/lib/python2.5/config"
|
||||||
|
fi ;;
|
||||||
|
|
||||||
|
--opt)
|
||||||
|
CXXFLAGS="$CXXFLAGS -fomit-frame-pointer -O3 -fPIC" ;;
|
||||||
|
--flat-opt)
|
||||||
|
CXXFLAGS="$CXXFLAGS -fomit-frame-pointer -O3" ;;
|
||||||
|
--safe-opt)
|
||||||
|
CXXFLAGS="$CXXFLAGS -fomit-frame-pointer -O3 -fPIC -DDEBUG_LEVEL=1" ;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
break ;;
|
||||||
|
esac
|
||||||
|
shift 1
|
||||||
|
done
|
||||||
|
|
||||||
|
|
||||||
HERE="$PWD"
|
HERE="$PWD"
|
||||||
|
|
||||||
#if [ -d "$HOME/Products" ]; then
|
if [ -d "$HOME/Products" ]; then
|
||||||
# projdir="$HOME/Products/$(basename $HERE)"
|
projdir="$HOME/Products/$(basename $HERE)"
|
||||||
# if [ ! -d "$projdir" ]; then
|
if [ ! -d "$projdir" ]; then
|
||||||
# mkdir -p "$projdir"
|
mkdir -p "$projdir"
|
||||||
# fi
|
fi
|
||||||
# cd "$projdir" || (echo "Cannot change to $projdir"; exit 1)
|
cd "$projdir" || (echo "Cannot change to $projdir"; exit 1)
|
||||||
#fi
|
|
||||||
|
|
||||||
if [ "$1" = "--debug" ]; then
|
|
||||||
shift 1
|
|
||||||
"$HERE/configure" --srcdir="$HERE" \
|
|
||||||
CPPFLAGS="$INCDIRS" LDFLAGS="$LIBDIRS" CXXFLAGS="$CXXFLAGS -ggdb3" \
|
|
||||||
WARNFLAGS="$WARNFLAGS" $SWITCHES --enable-debug "$@"
|
|
||||||
elif [ "$1" = "--python-debug" -o "$1" = "--debug-python" ]; then
|
|
||||||
shift 1
|
|
||||||
"$HERE/configure" --srcdir="$HERE" \
|
|
||||||
CPPFLAGS="$INCDIRS" LDFLAGS="$LIBDIRS" CXXFLAGS="$CXXFLAGS -ggdb3" \
|
|
||||||
WARNFLAGS="$WARNFLAGS" $SWITCHES --enable-debug --enable-python "$@"
|
|
||||||
elif [ "$1" = "--opt" ]; then
|
|
||||||
shift 1
|
|
||||||
"$HERE/configure" --srcdir="$HERE" \
|
|
||||||
CPPFLAGS="$INCDIRS" LDFLAGS="$LIBDIRS" WARNFLAGS="$WARNFLAGS" \
|
|
||||||
CXXFLAGS="$CXXFLAGS -fomit-frame-pointer -O3 -fPIC" "$@" $SWITCHES
|
|
||||||
elif [ "$1" = "--flat-opt" ]; then
|
|
||||||
shift 1
|
|
||||||
"$HERE/configure" --srcdir="$HERE" \
|
|
||||||
CPPFLAGS="$INCDIRS" LDFLAGS="$LIBDIRS" WARNFLAGS="$WARNFLAGS" \
|
|
||||||
CXXFLAGS="$CXXFLAGS -fomit-frame-pointer -O3" "$@" $SWITCHES
|
|
||||||
elif [ "$1" = "--safe-opt" ]; then
|
|
||||||
shift 1
|
|
||||||
"$HERE/configure" --srcdir="$HERE" \
|
|
||||||
CPPFLAGS="$INCDIRS" LDFLAGS="$LIBDIRS" WARNFLAGS="$WARNFLAGS" \
|
|
||||||
CXXFLAGS="$CXXFLAGS -fomit-frame-pointer -O3 -fPIC -DDEBUG_LEVEL=1" "$@" \
|
|
||||||
$SWITCHES
|
|
||||||
elif [ "$1" = "--perf" ]; then
|
|
||||||
shift 1
|
|
||||||
"$HERE/configure" --srcdir="$HERE" WARNFLAGS="$WARNFLAGS" \
|
|
||||||
CPPFLAGS="$INCDIRS" LDFLAGS="$LIBDIRS" \
|
|
||||||
CXXFLAGS="$CXXFLAGS -ggdb3 -pg" "$@" $SWITCHES
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
"$HERE/configure" --srcdir="$HERE" CPPFLAGS="$INCDIRS" \
|
||||||
|
CXXFLAGS="$CXXFLAGS $local_cxxflags" WARNFLAGS="$WARNFLAGS" \
|
||||||
|
LDFLAGS="$LIBDIRS" $SWITCHES "$@"
|
||||||
|
|
|
||||||
13
amount.h
13
amount.h
|
|
@ -52,6 +52,19 @@ extern bool do_cleanup;
|
||||||
|
|
||||||
class commodity_t;
|
class commodity_t;
|
||||||
|
|
||||||
|
/** @class amount_t
|
||||||
|
|
||||||
|
@brief Encapsulates infinite precision commoditized amounts.
|
||||||
|
|
||||||
|
The amount_t class can be used for commoditized infinite precision
|
||||||
|
math, and also for uncommoditized math. In the commoditized case,
|
||||||
|
commodities will keep track of how they are used, so that they
|
||||||
|
always display back to the user in the same fashion as their use.
|
||||||
|
However, in all cases precision is kept to an excessive degree
|
||||||
|
internally. For uncommoditized numbers, no display truncation is
|
||||||
|
ever done.
|
||||||
|
*/
|
||||||
|
|
||||||
class amount_t
|
class amount_t
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
|
||||||
|
|
@ -1,2 +0,0 @@
|
||||||
#define IEEE_8087
|
|
||||||
#define Arith_Kind_ASL 1
|
|
||||||
|
|
@ -235,7 +235,7 @@ void dataHandler(void *userData, const char *s, int len)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case gnucash_parser_t::ENTRY_DATE:
|
case gnucash_parser_t::ENTRY_DATE:
|
||||||
parser->curr_entry->_date = std::string(s, len);
|
parser->curr_entry->_date = ptime_from_local_date_string(std::string(s, len));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case gnucash_parser_t::ENTRY_DESC:
|
case gnucash_parser_t::ENTRY_DESC:
|
||||||
|
|
|
||||||
|
|
@ -24,14 +24,14 @@ transaction_t::~transaction_t()
|
||||||
|
|
||||||
ptime transaction_t::actual_date() const
|
ptime transaction_t::actual_date() const
|
||||||
{
|
{
|
||||||
if (! _date && entry)
|
if (_date.is_not_a_date_time() && entry)
|
||||||
return entry->actual_date();
|
return entry->actual_date();
|
||||||
return _date;
|
return _date;
|
||||||
}
|
}
|
||||||
|
|
||||||
ptime transaction_t::effective_date() const
|
ptime transaction_t::effective_date() const
|
||||||
{
|
{
|
||||||
if (! _date_eff && entry)
|
if (_date_eff.is_not_a_date_time() && entry)
|
||||||
return entry->effective_date();
|
return entry->effective_date();
|
||||||
return _date_eff;
|
return _date_eff;
|
||||||
}
|
}
|
||||||
|
|
@ -312,7 +312,7 @@ void entry_t::add_transaction(transaction_t * xact)
|
||||||
|
|
||||||
bool entry_t::valid() const
|
bool entry_t::valid() const
|
||||||
{
|
{
|
||||||
if (! _date || ! journal) {
|
if (_date.is_not_a_date_time() || ! journal) {
|
||||||
DEBUG_PRINT("ledger.validate", "entry_t: ! _date || ! journal");
|
DEBUG_PRINT("ledger.validate", "entry_t: ! _date || ! journal");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
BIN
ledger.pdf
Normal file
BIN
ledger.pdf
Normal file
Binary file not shown.
|
|
@ -64,7 +64,6 @@ void export_amount()
|
||||||
.def(init<amount_t>())
|
.def(init<amount_t>())
|
||||||
.def(init<std::string>())
|
.def(init<std::string>())
|
||||||
.def(init<char *>())
|
.def(init<char *>())
|
||||||
.def(init<bool>())
|
|
||||||
.def(init<long>())
|
.def(init<long>())
|
||||||
.def(init<double>())
|
.def(init<double>())
|
||||||
|
|
||||||
|
|
|
||||||
2
qif.cc
2
qif.cc
|
|
@ -102,7 +102,7 @@ unsigned int qif_parser_t::parse(std::istream& in,
|
||||||
case 'D':
|
case 'D':
|
||||||
SET_BEG_POS_AND_LINE();
|
SET_BEG_POS_AND_LINE();
|
||||||
get_line(in);
|
get_line(in);
|
||||||
entry->_date = line;
|
entry->_date = ptime_from_local_date_string(line);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'T':
|
case 'T':
|
||||||
|
|
|
||||||
|
|
@ -49,10 +49,13 @@ void report_t::ftime(value_t& result, xml::xpath_t::scope_t * locals)
|
||||||
std::string date_format;
|
std::string date_format;
|
||||||
if (locals->args.size() == 2)
|
if (locals->args.size() == 2)
|
||||||
date_format = locals->args[1].to_string();
|
date_format = locals->args[1].to_string();
|
||||||
|
#if 0
|
||||||
|
// jww (2007-04-18): Need to setup an output facet here
|
||||||
else
|
else
|
||||||
date_format = ptime::output_format;
|
date_format = ptime::output_format;
|
||||||
|
|
||||||
result.set_string(date.to_string(date_format));
|
result.set_string(date.to_string(date_format));
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
bool report_t::resolve(const std::string& name, value_t& result,
|
bool report_t::resolve(const std::string& name, value_t& result,
|
||||||
|
|
|
||||||
|
|
@ -136,7 +136,10 @@ bool session_t::resolve(const std::string& name, value_t& result,
|
||||||
switch (*p) {
|
switch (*p) {
|
||||||
case 'd':
|
case 'd':
|
||||||
if (name == "date_format") {
|
if (name == "date_format") {
|
||||||
|
// jww (2007-04-18): What to do here?
|
||||||
|
#if 0
|
||||||
result.set_string(ptime::output_format);
|
result.set_string(ptime::output_format);
|
||||||
|
#endif
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
2
setup.py
2
setup.py
|
|
@ -18,5 +18,5 @@ setup(name = "Ledger",
|
||||||
author_email = "johnw@newartisans.com",
|
author_email = "johnw@newartisans.com",
|
||||||
url = "http://johnwiegley.com/",
|
url = "http://johnwiegley.com/",
|
||||||
ext_modules = [
|
ext_modules = [
|
||||||
Extension("ledger", ["pyledger.cc"],
|
Extension("ledger", [os.path.join(os.environ['SRCDIR'], "pyledger.cc")],
|
||||||
define_macros = defines, libraries = libs)])
|
define_macros = defines, libraries = libs)])
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,6 @@ void BasicAmountTestCase::testConstructors()
|
||||||
amount_t x1(123456L);
|
amount_t x1(123456L);
|
||||||
amount_t x2(123456UL);
|
amount_t x2(123456UL);
|
||||||
amount_t x3(123.456);
|
amount_t x3(123.456);
|
||||||
amount_t x4(true);
|
|
||||||
amount_t x5("123456");
|
amount_t x5("123456");
|
||||||
amount_t x6("123.456");
|
amount_t x6("123.456");
|
||||||
amount_t x7(std::string("123456"));
|
amount_t x7(std::string("123456"));
|
||||||
|
|
@ -33,14 +32,12 @@ void BasicAmountTestCase::testConstructors()
|
||||||
assertEqual(x6, x3);
|
assertEqual(x6, x3);
|
||||||
assertEqual(x8, x3);
|
assertEqual(x8, x3);
|
||||||
assertEqual(x10, x3);
|
assertEqual(x10, x3);
|
||||||
assertEqual(amount_t(1L), x4);
|
|
||||||
assertEqual(x10, x9);
|
assertEqual(x10, x9);
|
||||||
|
|
||||||
CPPUNIT_ASSERT(x0.valid());
|
CPPUNIT_ASSERT(x0.valid());
|
||||||
CPPUNIT_ASSERT(x1.valid());
|
CPPUNIT_ASSERT(x1.valid());
|
||||||
CPPUNIT_ASSERT(x2.valid());
|
CPPUNIT_ASSERT(x2.valid());
|
||||||
CPPUNIT_ASSERT(x3.valid());
|
CPPUNIT_ASSERT(x3.valid());
|
||||||
CPPUNIT_ASSERT(x4.valid());
|
|
||||||
CPPUNIT_ASSERT(x5.valid());
|
CPPUNIT_ASSERT(x5.valid());
|
||||||
CPPUNIT_ASSERT(x6.valid());
|
CPPUNIT_ASSERT(x6.valid());
|
||||||
CPPUNIT_ASSERT(x7.valid());
|
CPPUNIT_ASSERT(x7.valid());
|
||||||
|
|
@ -91,7 +88,6 @@ void BasicAmountTestCase::testAssignment()
|
||||||
amount_t x1 = 123456L;
|
amount_t x1 = 123456L;
|
||||||
amount_t x2 = 123456UL;
|
amount_t x2 = 123456UL;
|
||||||
amount_t x3 = 123.456;
|
amount_t x3 = 123.456;
|
||||||
amount_t x4 = true;
|
|
||||||
amount_t x5 = "123456";
|
amount_t x5 = "123456";
|
||||||
amount_t x6 = "123.456";
|
amount_t x6 = "123.456";
|
||||||
amount_t x7 = std::string("123456");
|
amount_t x7 = std::string("123456");
|
||||||
|
|
@ -106,14 +102,12 @@ void BasicAmountTestCase::testAssignment()
|
||||||
assertEqual(x6, x3);
|
assertEqual(x6, x3);
|
||||||
assertEqual(x8, x3);
|
assertEqual(x8, x3);
|
||||||
assertEqual(x10, x3);
|
assertEqual(x10, x3);
|
||||||
assertEqual(amount_t(1L), x4);
|
|
||||||
assertEqual(x10, x9);
|
assertEqual(x10, x9);
|
||||||
|
|
||||||
x0 = amount_t();
|
x0 = amount_t();
|
||||||
x1 = 123456L;
|
x1 = 123456L;
|
||||||
x2 = 123456UL;
|
x2 = 123456UL;
|
||||||
x3 = 123.456;
|
x3 = 123.456;
|
||||||
x4 = true;
|
|
||||||
x5 = "123456";
|
x5 = "123456";
|
||||||
x6 = "123.456";
|
x6 = "123.456";
|
||||||
x7 = std::string("123456");
|
x7 = std::string("123456");
|
||||||
|
|
@ -128,14 +122,12 @@ void BasicAmountTestCase::testAssignment()
|
||||||
assertEqual(x6, x3);
|
assertEqual(x6, x3);
|
||||||
assertEqual(x8, x3);
|
assertEqual(x8, x3);
|
||||||
assertEqual(x10, x3);
|
assertEqual(x10, x3);
|
||||||
assertEqual(amount_t(1L), x4);
|
|
||||||
assertEqual(x10, x9);
|
assertEqual(x10, x9);
|
||||||
|
|
||||||
CPPUNIT_ASSERT(x0.valid());
|
CPPUNIT_ASSERT(x0.valid());
|
||||||
CPPUNIT_ASSERT(x1.valid());
|
CPPUNIT_ASSERT(x1.valid());
|
||||||
CPPUNIT_ASSERT(x2.valid());
|
CPPUNIT_ASSERT(x2.valid());
|
||||||
CPPUNIT_ASSERT(x3.valid());
|
CPPUNIT_ASSERT(x3.valid());
|
||||||
CPPUNIT_ASSERT(x4.valid());
|
|
||||||
CPPUNIT_ASSERT(x5.valid());
|
CPPUNIT_ASSERT(x5.valid());
|
||||||
CPPUNIT_ASSERT(x6.valid());
|
CPPUNIT_ASSERT(x6.valid());
|
||||||
CPPUNIT_ASSERT(x7.valid());
|
CPPUNIT_ASSERT(x7.valid());
|
||||||
|
|
@ -182,20 +174,12 @@ void BasicAmountTestCase::testIntegerAddition()
|
||||||
x1 += 456L;
|
x1 += 456L;
|
||||||
assertEqual(amount_t(1035L), x1);
|
assertEqual(amount_t(1035L), x1);
|
||||||
|
|
||||||
amount_t x3(true);
|
|
||||||
amount_t y3(true);
|
|
||||||
|
|
||||||
assertEqual(amount_t(2L), x3 + y3);
|
|
||||||
assertEqual(amount_t(2L), x3 + true);
|
|
||||||
|
|
||||||
amount_t x4("123456789123456789123456789");
|
amount_t x4("123456789123456789123456789");
|
||||||
|
|
||||||
assertEqual(amount_t("246913578246913578246913578"), x4 + x4);
|
assertEqual(amount_t("246913578246913578246913578"), x4 + x4);
|
||||||
|
|
||||||
CPPUNIT_ASSERT(x1.valid());
|
CPPUNIT_ASSERT(x1.valid());
|
||||||
CPPUNIT_ASSERT(y1.valid());
|
CPPUNIT_ASSERT(y1.valid());
|
||||||
CPPUNIT_ASSERT(x3.valid());
|
|
||||||
CPPUNIT_ASSERT(y3.valid());
|
|
||||||
CPPUNIT_ASSERT(x4.valid());
|
CPPUNIT_ASSERT(x4.valid());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -239,11 +223,6 @@ void BasicAmountTestCase::testIntegerSubtraction()
|
||||||
x1 -= 456L;
|
x1 -= 456L;
|
||||||
assertEqual(amount_t(-789L), x1);
|
assertEqual(amount_t(-789L), x1);
|
||||||
|
|
||||||
amount_t x3(true);
|
|
||||||
amount_t y3(true);
|
|
||||||
|
|
||||||
assertEqual(amount_t(false), x3 - y3);
|
|
||||||
|
|
||||||
amount_t x4("123456789123456789123456789");
|
amount_t x4("123456789123456789123456789");
|
||||||
amount_t y4("8238725986235986");
|
amount_t y4("8238725986235986");
|
||||||
|
|
||||||
|
|
@ -252,8 +231,6 @@ void BasicAmountTestCase::testIntegerSubtraction()
|
||||||
|
|
||||||
CPPUNIT_ASSERT(x1.valid());
|
CPPUNIT_ASSERT(x1.valid());
|
||||||
CPPUNIT_ASSERT(y1.valid());
|
CPPUNIT_ASSERT(y1.valid());
|
||||||
CPPUNIT_ASSERT(x3.valid());
|
|
||||||
CPPUNIT_ASSERT(y3.valid());
|
|
||||||
CPPUNIT_ASSERT(x4.valid());
|
CPPUNIT_ASSERT(x4.valid());
|
||||||
CPPUNIT_ASSERT(y4.valid());
|
CPPUNIT_ASSERT(y4.valid());
|
||||||
}
|
}
|
||||||
|
|
@ -310,11 +287,6 @@ void BasicAmountTestCase::testIntegerMultiplication()
|
||||||
x1 *= 123L;
|
x1 *= 123L;
|
||||||
assertEqual(amount_t(1860867L), x1);
|
assertEqual(amount_t(1860867L), x1);
|
||||||
|
|
||||||
amount_t x3(true);
|
|
||||||
amount_t y3(true);
|
|
||||||
|
|
||||||
assertEqual(amount_t(true), x3 * y3);
|
|
||||||
|
|
||||||
amount_t x4("123456789123456789123456789");
|
amount_t x4("123456789123456789123456789");
|
||||||
|
|
||||||
assertEqual(amount_t("15241578780673678546105778281054720515622620750190521"),
|
assertEqual(amount_t("15241578780673678546105778281054720515622620750190521"),
|
||||||
|
|
@ -322,8 +294,6 @@ void BasicAmountTestCase::testIntegerMultiplication()
|
||||||
|
|
||||||
CPPUNIT_ASSERT(x1.valid());
|
CPPUNIT_ASSERT(x1.valid());
|
||||||
CPPUNIT_ASSERT(y1.valid());
|
CPPUNIT_ASSERT(y1.valid());
|
||||||
CPPUNIT_ASSERT(x3.valid());
|
|
||||||
CPPUNIT_ASSERT(y3.valid());
|
|
||||||
CPPUNIT_ASSERT(x4.valid());
|
CPPUNIT_ASSERT(x4.valid());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -15,12 +15,12 @@ void CommodityTestCase::testConstructors()
|
||||||
|
|
||||||
void CommodityTestCase::testPriceHistory()
|
void CommodityTestCase::testPriceHistory()
|
||||||
{
|
{
|
||||||
datetime_t jan17_07("2007/01/17 00:00:00");
|
ptime jan17_07 = boost::posix_time::time_from_string("2007/01/17 00:00:00");
|
||||||
datetime_t feb27_07("2007/02/27 18:00:00");
|
ptime feb27_07 = boost::posix_time::time_from_string("2007/02/27 18:00:00");
|
||||||
datetime_t feb28_07("2007/02/28 06:00:00");
|
ptime feb28_07 = boost::posix_time::time_from_string("2007/02/28 06:00:00");
|
||||||
datetime_t feb28_07sbm("2007/02/28 11:59:59");
|
ptime feb28_07sbm = boost::posix_time::time_from_string("2007/02/28 11:59:59");
|
||||||
datetime_t mar01_07("2007/03/01 00:00:00");
|
ptime mar01_07 = boost::posix_time::time_from_string("2007/03/01 00:00:00");
|
||||||
datetime_t apr15_07("2007/04/15 13:00:00");
|
ptime apr15_07 = boost::posix_time::time_from_string("2007/04/15 13:00:00");
|
||||||
|
|
||||||
// jww (2007-04-17): tbd
|
// jww (2007-04-17): tbd
|
||||||
amount_t x1("100.10 AAPL");
|
amount_t x1("100.10 AAPL");
|
||||||
|
|
@ -29,9 +29,9 @@ void CommodityTestCase::testPriceHistory()
|
||||||
// deal of their state depends on how they were seen to be used.
|
// deal of their state depends on how they were seen to be used.
|
||||||
commodity_t& aapl(x1.commodity());
|
commodity_t& aapl(x1.commodity());
|
||||||
|
|
||||||
aapl.add_price(datetime_t(), amount_t("$10.20"));
|
aapl.add_price(now, amount_t("$10.20"));
|
||||||
|
|
||||||
assertEqual(amount_t("$1021.02"), x1.value(datetime_t()));
|
assertEqual(amount_t("$1021.02"), x1.value(now));
|
||||||
|
|
||||||
assertValid(x1);
|
assertValid(x1);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
101
tests/corelib/numerics/DateTime.cc
Normal file
101
tests/corelib/numerics/DateTime.cc
Normal file
|
|
@ -0,0 +1,101 @@
|
||||||
|
#include "DateTimeTest.h"
|
||||||
|
#include "ledger.h"
|
||||||
|
#include "acconf.h"
|
||||||
|
|
||||||
|
#include <ctime>
|
||||||
|
|
||||||
|
using namespace ledger;
|
||||||
|
|
||||||
|
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(DateTimeTestCase, "numerics");
|
||||||
|
|
||||||
|
void DateTimeTestCase::setUp() {}
|
||||||
|
void DateTimeTestCase::tearDown() {}
|
||||||
|
|
||||||
|
void DateTimeTestCase::testConstructors()
|
||||||
|
{
|
||||||
|
struct tm moment;
|
||||||
|
std::memset(&moment, INT_MAX, sizeof(struct tm));
|
||||||
|
|
||||||
|
#ifdef HAVE_STRPTIME
|
||||||
|
strptime("2006/12/25 00:00:00", "%Y/%m/%d %H:%M:%S", &moment);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAVE_TIMEGM
|
||||||
|
std::time_t gmtMoment = timegm(&moment);
|
||||||
|
#endif
|
||||||
|
std::time_t localMoment = std::mktime(&moment);
|
||||||
|
|
||||||
|
date_t d1;
|
||||||
|
#ifdef HAVE_TIMEGM
|
||||||
|
date_t d2(gmtMoment);
|
||||||
|
#endif
|
||||||
|
date_t d3(localMoment);
|
||||||
|
date_t d4("2006/12/25");
|
||||||
|
date_t d5("12/25");
|
||||||
|
date_t d6("2006.12.25");
|
||||||
|
date_t d7("12.25");
|
||||||
|
date_t d8("2006-12-25");
|
||||||
|
date_t d9("12-25");
|
||||||
|
date_t d10("tue");
|
||||||
|
date_t d11("tuesday");
|
||||||
|
date_t d12("feb");
|
||||||
|
date_t d13("february");
|
||||||
|
date_t d14("2006");
|
||||||
|
date_t d15(d3);
|
||||||
|
|
||||||
|
#ifdef HAVE_TIMEGM
|
||||||
|
if (std::memcmp(&gmtMoment, &localMoment, sizeof(std::time_t)) == 0)
|
||||||
|
assertEqual(d2, d3);
|
||||||
|
else
|
||||||
|
assertNotEqual(d2, d3);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
assertFalse(d1);
|
||||||
|
assertTrue(d4);
|
||||||
|
|
||||||
|
assertTrue(date_t::now > d1);
|
||||||
|
assertTrue(date_t::now > d3);
|
||||||
|
assertTrue(date_t::now > d4);
|
||||||
|
|
||||||
|
assertEqual(d3, d4);
|
||||||
|
assertEqual(d3, d15);
|
||||||
|
assertEqual(d4, d6);
|
||||||
|
assertEqual(d4, d8);
|
||||||
|
assertEqual(d5, d7);
|
||||||
|
assertEqual(d5, d9);
|
||||||
|
assertEqual(d10, d11);
|
||||||
|
assertEqual(d12, d13);
|
||||||
|
|
||||||
|
assertThrow(date_t("2007/02/29"), date_error *);
|
||||||
|
assertThrow(date_t("2007/13/01"), date_error *);
|
||||||
|
assertThrow(date_t("2007/00/01"), date_error *);
|
||||||
|
assertThrow(date_t("2007/01/00"), date_error *);
|
||||||
|
assertThrow(date_t("2007/00/00"), date_error *);
|
||||||
|
assertThrow(date_t("2007/05/32"), date_error *);
|
||||||
|
|
||||||
|
assertThrow(date_t("2006x/12/25"), date_error *);
|
||||||
|
assertThrow(date_t("2006/12x/25"), date_error *);
|
||||||
|
assertThrow(date_t("2006/12/25x"), date_error *);
|
||||||
|
|
||||||
|
assertThrow(date_t("feb/12/25"), date_error *);
|
||||||
|
assertThrow(date_t("2006/mon/25"), date_error *);
|
||||||
|
assertThrow(date_t("2006/12/web"), date_error *);
|
||||||
|
|
||||||
|
assertThrow(date_t("12*25"), date_error *);
|
||||||
|
|
||||||
|
assertThrow(date_t("tuf"), date_error *);
|
||||||
|
assertThrow(date_t("tufsday"), date_error *);
|
||||||
|
assertThrow(date_t("fec"), date_error *);
|
||||||
|
assertThrow(date_t("fecruary"), date_error *);
|
||||||
|
assertThrow(date_t("207x"), date_error *);
|
||||||
|
assertThrow(date_t("hello"), date_error *);
|
||||||
|
|
||||||
|
datetime_t dt1;
|
||||||
|
datetime_t dt2;
|
||||||
|
datetime_t dt3;
|
||||||
|
datetime_t dt4;
|
||||||
|
datetime_t dt5;
|
||||||
|
|
||||||
|
interval_t i1;
|
||||||
|
interval_t i2;
|
||||||
|
}
|
||||||
28
tests/corelib/numerics/DateTimeTest.h
Normal file
28
tests/corelib/numerics/DateTimeTest.h
Normal file
|
|
@ -0,0 +1,28 @@
|
||||||
|
#ifndef _DATETIMETEST_H
|
||||||
|
#define _DATETIMETEST_H
|
||||||
|
|
||||||
|
#include "UnitTests.h"
|
||||||
|
|
||||||
|
class DateTimeTestCase : public CPPUNIT_NS::TestCase
|
||||||
|
{
|
||||||
|
CPPUNIT_TEST_SUITE(DateTimeTestCase);
|
||||||
|
|
||||||
|
CPPUNIT_TEST(testConstructors);
|
||||||
|
|
||||||
|
CPPUNIT_TEST_SUITE_END();
|
||||||
|
|
||||||
|
public:
|
||||||
|
DateTimeTestCase() {}
|
||||||
|
virtual ~DateTimeTestCase() {}
|
||||||
|
|
||||||
|
virtual void setUp();
|
||||||
|
virtual void tearDown();
|
||||||
|
|
||||||
|
void testConstructors();
|
||||||
|
|
||||||
|
private:
|
||||||
|
DateTimeTestCase(const DateTimeTestCase ©);
|
||||||
|
void operator=(const DateTimeTestCase ©);
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* _DATETIMETEST_H */
|
||||||
|
|
@ -9,7 +9,6 @@ class BasicAmountTestCase(unittest.TestCase):
|
||||||
x1 = amount(123456)
|
x1 = amount(123456)
|
||||||
x2 = amount(123456L)
|
x2 = amount(123456L)
|
||||||
x3 = amount(123.456)
|
x3 = amount(123.456)
|
||||||
x4 = amount(True)
|
|
||||||
x5 = amount("123456")
|
x5 = amount("123456")
|
||||||
x6 = amount("123.456")
|
x6 = amount("123.456")
|
||||||
x9 = amount(x3)
|
x9 = amount(x3)
|
||||||
|
|
@ -20,14 +19,12 @@ class BasicAmountTestCase(unittest.TestCase):
|
||||||
self.assertEqual(x5, x1)
|
self.assertEqual(x5, x1)
|
||||||
self.assertEqual(x6, x3)
|
self.assertEqual(x6, x3)
|
||||||
self.assertEqual(x10, x3)
|
self.assertEqual(x10, x3)
|
||||||
self.assertEqual(amount(1), x4)
|
|
||||||
self.assertEqual(x10, x9)
|
self.assertEqual(x10, x9)
|
||||||
|
|
||||||
self.assertTrue(x0.valid())
|
self.assertTrue(x0.valid())
|
||||||
self.assertTrue(x1.valid())
|
self.assertTrue(x1.valid())
|
||||||
self.assertTrue(x2.valid())
|
self.assertTrue(x2.valid())
|
||||||
self.assertTrue(x3.valid())
|
self.assertTrue(x3.valid())
|
||||||
self.assertTrue(x4.valid())
|
|
||||||
self.assertTrue(x5.valid())
|
self.assertTrue(x5.valid())
|
||||||
self.assertTrue(x6.valid())
|
self.assertTrue(x6.valid())
|
||||||
self.assertTrue(x9.valid())
|
self.assertTrue(x9.valid())
|
||||||
|
|
@ -65,7 +62,6 @@ class BasicAmountTestCase(unittest.TestCase):
|
||||||
x1 = amount(123456)
|
x1 = amount(123456)
|
||||||
x2 = amount(123456L)
|
x2 = amount(123456L)
|
||||||
x3 = amount(123.456)
|
x3 = amount(123.456)
|
||||||
x4 = amount(True)
|
|
||||||
x5 = amount("123456")
|
x5 = amount("123456")
|
||||||
x6 = amount("123.456")
|
x6 = amount("123.456")
|
||||||
x9 = x3
|
x9 = x3
|
||||||
|
|
@ -76,14 +72,12 @@ class BasicAmountTestCase(unittest.TestCase):
|
||||||
self.assertEqual(x5, x1)
|
self.assertEqual(x5, x1)
|
||||||
self.assertEqual(x6, x3)
|
self.assertEqual(x6, x3)
|
||||||
self.assertEqual(x10, x3)
|
self.assertEqual(x10, x3)
|
||||||
self.assertEqual(amount(1), x4)
|
|
||||||
self.assertEqual(x10, x9)
|
self.assertEqual(x10, x9)
|
||||||
|
|
||||||
x0 = amount()
|
x0 = amount()
|
||||||
x1 = amount(123456)
|
x1 = amount(123456)
|
||||||
x2 = amount(123456L)
|
x2 = amount(123456L)
|
||||||
x3 = amount(123.456)
|
x3 = amount(123.456)
|
||||||
x4 = amount(True)
|
|
||||||
x5 = amount("123456")
|
x5 = amount("123456")
|
||||||
x6 = amount("123.456")
|
x6 = amount("123.456")
|
||||||
x9 = x3
|
x9 = x3
|
||||||
|
|
@ -94,14 +88,12 @@ class BasicAmountTestCase(unittest.TestCase):
|
||||||
self.assertEqual(x5, x1)
|
self.assertEqual(x5, x1)
|
||||||
self.assertEqual(x6, x3)
|
self.assertEqual(x6, x3)
|
||||||
self.assertEqual(x10, x3)
|
self.assertEqual(x10, x3)
|
||||||
self.assertEqual(amount(1), x4)
|
|
||||||
self.assertEqual(x10, x9)
|
self.assertEqual(x10, x9)
|
||||||
|
|
||||||
self.assertTrue(x0.valid())
|
self.assertTrue(x0.valid())
|
||||||
self.assertTrue(x1.valid())
|
self.assertTrue(x1.valid())
|
||||||
self.assertTrue(x2.valid())
|
self.assertTrue(x2.valid())
|
||||||
self.assertTrue(x3.valid())
|
self.assertTrue(x3.valid())
|
||||||
self.assertTrue(x4.valid())
|
|
||||||
self.assertTrue(x5.valid())
|
self.assertTrue(x5.valid())
|
||||||
self.assertTrue(x6.valid())
|
self.assertTrue(x6.valid())
|
||||||
self.assertTrue(x9.valid())
|
self.assertTrue(x9.valid())
|
||||||
|
|
@ -139,20 +131,12 @@ class BasicAmountTestCase(unittest.TestCase):
|
||||||
x1 += 456
|
x1 += 456
|
||||||
self.assertEqual(amount(1035), x1)
|
self.assertEqual(amount(1035), x1)
|
||||||
|
|
||||||
x3 = amount(True)
|
|
||||||
y3 = amount(True)
|
|
||||||
|
|
||||||
self.assertEqual(amount(2), x3 + y3)
|
|
||||||
self.assertEqual(amount(2), x3 + True)
|
|
||||||
|
|
||||||
x4 = amount("123456789123456789123456789")
|
x4 = amount("123456789123456789123456789")
|
||||||
|
|
||||||
self.assertEqual(amount("246913578246913578246913578"), x4 + x4)
|
self.assertEqual(amount("246913578246913578246913578"), x4 + x4)
|
||||||
|
|
||||||
self.assertTrue(x1.valid())
|
self.assertTrue(x1.valid())
|
||||||
self.assertTrue(y1.valid())
|
self.assertTrue(y1.valid())
|
||||||
self.assertTrue(x3.valid())
|
|
||||||
self.assertTrue(y3.valid())
|
|
||||||
self.assertTrue(x4.valid())
|
self.assertTrue(x4.valid())
|
||||||
|
|
||||||
def testFractionalAddition(self):
|
def testFractionalAddition(self):
|
||||||
|
|
@ -192,11 +176,6 @@ class BasicAmountTestCase(unittest.TestCase):
|
||||||
x1 -= 456
|
x1 -= 456
|
||||||
self.assertEqual(amount(-789), x1)
|
self.assertEqual(amount(-789), x1)
|
||||||
|
|
||||||
x3 = amount(True)
|
|
||||||
y3 = amount(True)
|
|
||||||
|
|
||||||
self.assertEqual(amount(False), x3 - y3)
|
|
||||||
|
|
||||||
x4 = amount("123456789123456789123456789")
|
x4 = amount("123456789123456789123456789")
|
||||||
y4 = amount("8238725986235986")
|
y4 = amount("8238725986235986")
|
||||||
|
|
||||||
|
|
@ -205,8 +184,6 @@ class BasicAmountTestCase(unittest.TestCase):
|
||||||
|
|
||||||
self.assertTrue(x1.valid())
|
self.assertTrue(x1.valid())
|
||||||
self.assertTrue(y1.valid())
|
self.assertTrue(y1.valid())
|
||||||
self.assertTrue(x3.valid())
|
|
||||||
self.assertTrue(y3.valid())
|
|
||||||
self.assertTrue(x4.valid())
|
self.assertTrue(x4.valid())
|
||||||
self.assertTrue(y4.valid())
|
self.assertTrue(y4.valid())
|
||||||
|
|
||||||
|
|
@ -259,11 +236,6 @@ class BasicAmountTestCase(unittest.TestCase):
|
||||||
x1 *= 123
|
x1 *= 123
|
||||||
self.assertEqual(amount(1860867), x1)
|
self.assertEqual(amount(1860867), x1)
|
||||||
|
|
||||||
x3 = amount(True)
|
|
||||||
y3 = amount(True)
|
|
||||||
|
|
||||||
self.assertEqual(amount(True), x3 * y3)
|
|
||||||
|
|
||||||
x4 = amount("123456789123456789123456789")
|
x4 = amount("123456789123456789123456789")
|
||||||
|
|
||||||
self.assertEqual(amount("15241578780673678546105778281054720515622620750190521"),
|
self.assertEqual(amount("15241578780673678546105778281054720515622620750190521"),
|
||||||
|
|
@ -271,8 +243,6 @@ class BasicAmountTestCase(unittest.TestCase):
|
||||||
|
|
||||||
self.assertTrue(x1.valid())
|
self.assertTrue(x1.valid())
|
||||||
self.assertTrue(y1.valid())
|
self.assertTrue(y1.valid())
|
||||||
self.assertTrue(x3.valid())
|
|
||||||
self.assertTrue(y3.valid())
|
|
||||||
self.assertTrue(x4.valid())
|
self.assertTrue(x4.valid())
|
||||||
|
|
||||||
def testFractionalMultiplication(self):
|
def testFractionalMultiplication(self):
|
||||||
|
|
|
||||||
27
textual.cc
27
textual.cc
|
|
@ -276,10 +276,10 @@ transaction_t * parse_transaction(char * line,
|
||||||
|
|
||||||
if (char * p = std::strchr(buf, '=')) {
|
if (char * p = std::strchr(buf, '=')) {
|
||||||
*p++ = '\0';
|
*p++ = '\0';
|
||||||
xact->_date_eff = p;
|
xact->_date_eff = ptime_from_local_date_string(p);
|
||||||
}
|
}
|
||||||
if (buf[0])
|
if (buf[0])
|
||||||
xact->_date = buf;
|
xact->_date = ptime_from_local_date_string(buf);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -348,11 +348,17 @@ entry_t * parse_entry(std::istream& in, char * line, journal_t * journal,
|
||||||
|
|
||||||
TIMER_START(entry_date);
|
TIMER_START(entry_date);
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
// jww (2007-04-18): Need to write a full date parser
|
||||||
curr->_date.parse(line_in);
|
curr->_date.parse(line_in);
|
||||||
|
#endif
|
||||||
|
|
||||||
if (peek_next_nonws(line_in) == '=') {
|
if (peek_next_nonws(line_in) == '=') {
|
||||||
line_in.get(c);
|
line_in.get(c);
|
||||||
|
#if 0
|
||||||
|
// jww (2007-04-18): Need to write a full date parser
|
||||||
curr->_date_eff.parse(line_in);
|
curr->_date_eff.parse(line_in);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
TIMER_STOP(entry_date);
|
TIMER_STOP(entry_date);
|
||||||
|
|
@ -492,9 +498,9 @@ bool textual_parser_t::test(std::istream& in) const
|
||||||
}
|
}
|
||||||
|
|
||||||
static void clock_out_from_timelog(const ptime& when,
|
static void clock_out_from_timelog(const ptime& when,
|
||||||
account_t * account,
|
account_t * account,
|
||||||
const char * desc,
|
const char * desc,
|
||||||
journal_t * journal)
|
journal_t * journal)
|
||||||
{
|
{
|
||||||
time_entry_t event;
|
time_entry_t event;
|
||||||
|
|
||||||
|
|
@ -542,7 +548,7 @@ static void clock_out_from_timelog(const ptime& when,
|
||||||
("Timelog check-out date less than corresponding check-in");
|
("Timelog check-out date less than corresponding check-in");
|
||||||
|
|
||||||
char buf[32];
|
char buf[32];
|
||||||
std::sprintf(buf, "%lds", curr->_date - event.checkin);
|
std::sprintf(buf, "%lds", (curr->_date - event.checkin).total_seconds());
|
||||||
amount_t amt;
|
amount_t amt;
|
||||||
amt.parse(buf);
|
amt.parse(buf);
|
||||||
|
|
||||||
|
|
@ -617,7 +623,7 @@ unsigned int textual_parser_t::parse(std::istream& in,
|
||||||
|
|
||||||
time_entry_t event;
|
time_entry_t event;
|
||||||
event.desc = n ? n : "";
|
event.desc = n ? n : "";
|
||||||
event.checkin = date;
|
event.checkin = ptime_from_local_time_string(date);
|
||||||
event.account = account_stack.front()->find_account(p);
|
event.account = account_stack.front()->find_account(p);
|
||||||
|
|
||||||
if (! time_entries.empty())
|
if (! time_entries.empty())
|
||||||
|
|
@ -643,8 +649,8 @@ unsigned int textual_parser_t::parse(std::istream& in,
|
||||||
char * n = next_element(p, true);
|
char * n = next_element(p, true);
|
||||||
|
|
||||||
clock_out_from_timelog
|
clock_out_from_timelog
|
||||||
(date, p ? account_stack.front()->find_account(p) : NULL, n,
|
(ptime_from_local_time_string(date),
|
||||||
journal);
|
p ? account_stack.front()->find_account(p) : NULL, n, journal);
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
@ -707,7 +713,10 @@ unsigned int textual_parser_t::parse(std::istream& in,
|
||||||
}
|
}
|
||||||
|
|
||||||
case 'Y': // set current year
|
case 'Y': // set current year
|
||||||
|
#if 0
|
||||||
|
// jww (2007-04-18): Need to set this up again
|
||||||
date_t::current_year = std::atoi(skip_ws(line + 1));
|
date_t::current_year = std::atoi(skip_ws(line + 1));
|
||||||
|
#endif
|
||||||
break;
|
break;
|
||||||
|
|
||||||
#ifdef TIMELOG_SUPPORT
|
#ifdef TIMELOG_SUPPORT
|
||||||
|
|
|
||||||
25
times.h
25
times.h
|
|
@ -11,16 +11,29 @@
|
||||||
|
|
||||||
namespace ledger {
|
namespace ledger {
|
||||||
|
|
||||||
using namespace boost::posix_time;
|
typedef boost::posix_time::ptime ptime;
|
||||||
using namespace boost::date_time;
|
typedef boost::posix_time::seconds seconds;
|
||||||
|
typedef ptime::time_duration_type time_duration;
|
||||||
|
|
||||||
typedef ptime::time_duration_type time_duration;
|
class interval_t
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
interval_t() {}
|
||||||
|
interval_t(const std::string& desc) {}
|
||||||
|
|
||||||
class interval_t {};
|
operator bool() const {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void start(const ptime& moment) {}
|
||||||
|
ptime next() const {}
|
||||||
|
|
||||||
|
void parse(std::istream& in) {}
|
||||||
|
};
|
||||||
|
|
||||||
inline ptime ptime_local_to_utc(const ptime& when) {
|
inline ptime ptime_local_to_utc(const ptime& when) {
|
||||||
struct std::tm tm_gmt = to_tm(when);
|
struct std::tm tm_gmt = to_tm(when);
|
||||||
return from_time_t(std::mktime(&tm_gmt));
|
return boost::posix_time::from_time_t(std::mktime(&tm_gmt));
|
||||||
}
|
}
|
||||||
|
|
||||||
// jww (2007-04-18): I need to make a general parsing function
|
// jww (2007-04-18): I need to make a general parsing function
|
||||||
|
|
@ -31,7 +44,7 @@ inline ptime ptime_from_local_date_string(const std::string& date_string) {
|
||||||
}
|
}
|
||||||
|
|
||||||
inline ptime ptime_from_local_time_string(const std::string& time_string) {
|
inline ptime ptime_from_local_time_string(const std::string& time_string) {
|
||||||
return ptime_local_to_utc(time_from_string(time_string));
|
return ptime_local_to_utc(boost::posix_time::time_from_string(time_string));
|
||||||
}
|
}
|
||||||
|
|
||||||
extern ptime now;
|
extern ptime now;
|
||||||
|
|
|
||||||
5
trace.cc
5
trace.cc
|
|
@ -1,4 +1,5 @@
|
||||||
#include "trace.h"
|
#include "trace.h"
|
||||||
|
#include "times.h"
|
||||||
#include "acconf.h"
|
#include "acconf.h"
|
||||||
|
|
||||||
namespace ledger {
|
namespace ledger {
|
||||||
|
|
@ -8,8 +9,8 @@ bool trace_mode;
|
||||||
void trace(const std::string& cat, const std::string& str)
|
void trace(const std::string& cat, const std::string& str)
|
||||||
{
|
{
|
||||||
char buf[32];
|
char buf[32];
|
||||||
std::cerr << now.to_short_string() << " " << cat << ": " << str
|
std::cerr << boost::posix_time::to_simple_string(now) << " "
|
||||||
<< std::endl;
|
<< cat << ": " << str << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
void trace_push(const std::string& cat, const std::string& str,
|
void trace_push(const std::string& cat, const std::string& str,
|
||||||
|
|
|
||||||
|
|
@ -79,10 +79,10 @@ static void endElement(void *userData, const char *name)
|
||||||
curr_entry = NULL;
|
curr_entry = NULL;
|
||||||
}
|
}
|
||||||
else if (std::strcmp(name, "en:date") == 0) {
|
else if (std::strcmp(name, "en:date") == 0) {
|
||||||
curr_entry->_date = data;
|
curr_entry->_date = ptime_from_local_date_string(data);
|
||||||
}
|
}
|
||||||
else if (std::strcmp(name, "en:date_eff") == 0) {
|
else if (std::strcmp(name, "en:date_eff") == 0) {
|
||||||
curr_entry->_date_eff = data;
|
curr_entry->_date_eff = ptime_from_local_date_string(data);
|
||||||
}
|
}
|
||||||
else if (std::strcmp(name, "en:code") == 0) {
|
else if (std::strcmp(name, "en:code") == 0) {
|
||||||
curr_entry->code = data;
|
curr_entry->code = data;
|
||||||
|
|
|
||||||
2
xpath.cc
2
xpath.cc
|
|
@ -158,7 +158,7 @@ void xpath_t::token_t::next(std::istream& in, unsigned short flags)
|
||||||
length++;
|
length++;
|
||||||
interval_t timespan(buf);
|
interval_t timespan(buf);
|
||||||
kind = VALUE;
|
kind = VALUE;
|
||||||
value = timespan.first();
|
value = timespan.next();
|
||||||
} else {
|
} else {
|
||||||
kind = LBRACKET;
|
kind = LBRACKET;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue