Browse Source

changed: variables and functions are copied to the second thread only

when they have been changed (performance)
         flags: variables_id and functions_id in ProgramResources
changed: you don't have to be an administrator to use the setup (installer)
         PrivilegesRequired=none in innosetup.iss
changed: small changes in Makefile(s) especially pathes
changed: upx 3.03 is used now (for the portable version)


git-svn-id: svn://ttmath.org/publicrep/ttcalc/trunk@116 e52654a7-88a9-db11-a3e9-0013d4bc506e
0.8.x
Tomasz Sowa 14 years ago
parent
commit
6555140b9a
  1. 2
      help/help.hhp
  2. 10
      setup/innosetup.iss
  3. 33
      src/Makefile
  4. 11
      src/Makefileportable
  5. 2
      src/bigtypes.h
  6. 2
      src/compileconfig.h
  7. 2
      src/convert.h
  8. 7
      src/functions.cpp
  9. 8
      src/languages.cpp
  10. 2
      src/languages.h
  11. 19
      src/parsermanager.cpp
  12. 4
      src/parsermanager.h
  13. 41
      src/programresources.cpp
  14. 33
      src/programresources.h
  15. 2
      src/resource.h
  16. 2
      src/tabs.cpp
  17. 7
      src/variables.cpp

2
help/help.hhp

@ -1,7 +1,7 @@
[OPTIONS]
Auto Index=Yes
Compatibility=1.1 or later
Compiled file=..\..\output\ttcalc.chm
Compiled file=ttcalc.chm
Contents file=toc.hhc
Default topic=index.html
Display compile progress=No

10
setup/innosetup.iss

@ -4,6 +4,7 @@
[Setup]
AppName=TTCalc
AppVerName=TTCalc 0.8.3
AppVersion=0.8.3
AppPublisher=Tomasz Sowa
AppPublisherURL=http://ttcalc.sourceforge.net
AppSupportURL=http://ttcalc.sourceforge.net
@ -13,11 +14,12 @@ DefaultGroupName=TTCalc
AllowNoIcons=yes
; special COPYRIGHT version (without a new line characters in the clause -- it is better displayed in the setup window)
LicenseFile=COPYRIGHT
OutputDir=..\..\output
OutputDir=..\setup
OutputBaseFilename=ttcalc-setup
Compression=lzma
SolidCompression=yes
ShowUndisplayableLanguages=yes
PrivilegesRequired=none
[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"
@ -32,9 +34,11 @@ Type: files; Name: "{app}\mingwm10.dll"
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
[Files]
Source: "..\..\output\ttcalc.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "..\..\output\ttcalc.chm"; DestDir: "{app}"; Flags: ignoreversion
Source: "..\src\ttcalc.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "..\help\ttcalc.chm"; DestDir: "{app}"; Flags: ignoreversion
Source: "..\COPYRIGHT"; DestDir: "{app}"; Flags: ignoreversion
Source: "..\CHANGELOG"; DestDir: "{app}"; Flags: ignoreversion
Source: "..\README"; DestDir: "{app}"; Flags: ignoreversion
; now we do not use *.ini file in the installer
; NOTE: Don't use "Flags: ignoreversion" on any shared system files

33
src/Makefile

@ -1,6 +1,6 @@
CC = g++
#CFLAGS = -Wall -pedantic -s -O2 -mwindows -I../../../ttmath -DTTCALC_CONVERT
CFLAGS = -Wall -pedantic -s -O2 -mwindows -I../../../ttmath
#CFLAGS = -Wall -pedantic -s -O2 -mwindows -I../../ttmath -DTTCALC_CONVERT
CFLAGS = -Wall -pedantic -s -O2 -mwindows -I../../ttmath
name = ttcalc.exe
# the name of the help is also set in the html help workshop project file
@ -8,37 +8,34 @@ helpname = ttcalc.chm
# the name of the setup is also set in the Inno Setup config file
setupname = ttcalc-setup.exe
dir_output = ../../output
all: ttcalc
include Makefile.dep
$(dir_output)/$(name): $(o)
$(CC) -o $(dir_output)/$(name) $(CFLAGS) $(o) -lcomctl32
ttcalc: $(dir_output)/$(name)
ttcalc: $(o)
$(CC) -o $(name) $(CFLAGS) $(o) -lcomctl32
resource.o: resource.rc
#windres -DTTCALC_CONVERT resource.rc resource.o
windres resource.rc resource.o
$(dir_output)/$(helpname): $(helpdep)
Makefile.help.sh
help: $(dir_output)/$(helpname)
help: $(helpdep)
Makefile.help.sh
$(dir_output)/$(setupname): $(setupdep)
setup: $(setupdep)
iscc ../setup/innosetup.iss
setup: $(dir_output)/$(setupname)
clean:
rm -f *.o
rm -f *.s
rm -f $(dir_output)/$(name)
rm -f $(dir_output)/$(helpname)
rm -f $(dir_output)/$(setupname)
rm -f $(name)
rm -f $(helpname)
rm -f $(setupname)

11
src/Makefileportable

@ -1,18 +1,15 @@
CC = g++
CFLAGS = -Wall -pedantic -s -Os -fno-default-inline -mwindows -I../../../ttmath -DTTCALC_PORTABLE
CFLAGS = -Wall -pedantic -s -Os -fno-default-inline -mwindows -I../../ttmath -DTTCALC_PORTABLE
name = ttcalcp.exe
dir_output = ../../output
compressor = upx
all: ttcalc
include Makefile.dep
$(dir_output)/$(name): $(o)
$(CC) -o $(dir_output)/$(name) $(CFLAGS) $(o) -lcomctl32
$(compressor) -7 $(dir_output)/$(name)
ttcalc: $(o)
$(CC) -o $(name) $(CFLAGS) $(o) -lcomctl32
$(compressor) -7 $(name)
ttcalc: $(dir_output)/$(name)
resource.o: resource.rc
windres -DTTCALC_PORTABLE resource.rc resource.o

2
src/bigtypes.h

@ -5,7 +5,7 @@
*/
/*
* Copyright (c) 2006-2008, Tomasz Sowa
* Copyright (c) 2006-2009, Tomasz Sowa
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

2
src/compileconfig.h

@ -5,7 +5,7 @@
*/
/*
* Copyright (c) 2006-2008, Tomasz Sowa
* Copyright (c) 2006-2009, Tomasz Sowa
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

2
src/convert.h

@ -5,7 +5,7 @@
*/
/*
* Copyright (c) 2006-2008, Tomasz Sowa
* Copyright (c) 2006-2009, Tomasz Sowa
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

7
src/functions.cpp

@ -5,7 +5,7 @@
*/
/*
* Copyright (c) 2006-2008, Tomasz Sowa
* Copyright (c) 2006-2009, Tomasz Sowa
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@ -223,6 +223,7 @@ BOOL WmTabCommand_AddFunction(HWND, UINT message, WPARAM wParam, LPARAM lParam)
GetPrgRes()->GetThreadController()->StopCalculating();
code = GetPrgRes()->GetFunctions()->Add(name, value, parameters);
GetPrgRes()->FunctionsChanged();
GetPrgRes()->GetThreadController()->StartCalculating();
if( code != ttmath::err_ok )
@ -290,6 +291,7 @@ adding = false;
// if we've changed the name then we're changing the value and parameters
code = GetPrgRes()->GetFunctions()->EditValue(name, value, parameters);
GetPrgRes()->FunctionsChanged();
GetPrgRes()->GetThreadController()->StartCalculating();
if( code != ttmath::err_ok )
@ -339,9 +341,12 @@ int items = ListView_GetSelectedCount(list);
all_deleted = false;
else
ListView_DeleteItem(list, id);
GetPrgRes()->FunctionsChanged();
}
}
GetPrgRes()->GetThreadController()->StartCalculating();
delete [] buffer;

8
src/languages.cpp

@ -5,7 +5,7 @@
*/
/*
* Copyright (c) 2006-2008, Tomasz Sowa
* Copyright (c) 2006-2009, Tomasz Sowa
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@ -337,7 +337,7 @@ void Languages::InitGuiMessagesTab()
" a developer or a programmer feel free to contant with the author."
);
InsertGuiPair(about_text_portable_version, " portable version");
InsertGuiPair(about_text_exe_packer, "EXE Packer: UPX 3.00\r\n");
InsertGuiPair(about_text_exe_packer, "EXE Packer: UPX 3.03\r\n");
InsertGuiPair(about_box_title, "About");
InsertGuiPair(about_box_button_close, "Close");
InsertGuiPair(unknown_error, "An unknown error has occurred");
@ -462,7 +462,7 @@ void Languages::InitGuiMessagesTab()
" poprostu skontaktuj siê z autorem."
);
InsertGuiPair(about_text_portable_version, " wersja portable");
InsertGuiPair(about_text_exe_packer, "Paker exe: UPX 3.00\r\n");
InsertGuiPair(about_text_exe_packer, "Paker exe: UPX 3.03\r\n");
InsertGuiPair(about_box_title, "O programie");
InsertGuiPair(about_box_button_close, "Zamknij");
InsertGuiPair(unknown_error, "Nieznany kod b³êdu");
@ -591,7 +591,7 @@ void Languages::InitGuiMessagesTab()
" desarrollador o programador, no dudes en contactar con el autor."
);
InsertGuiPair(about_text_portable_version, " version portatil");
InsertGuiPair(about_text_exe_packer, "EXE Packer: UPX 3.00\r\n");
InsertGuiPair(about_text_exe_packer, "EXE Packer: UPX 3.03\r\n");
InsertGuiPair(about_box_title, "Acerca de");
InsertGuiPair(about_box_button_close, "Cerrar");
InsertGuiPair(unknown_error, "Ocurrio un error desconocido");

2
src/languages.h

@ -5,7 +5,7 @@
*/
/*
* Copyright (c) 2006-2008, Tomasz Sowa
* Copyright (c) 2006-2009, Tomasz Sowa
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

19
src/parsermanager.cpp

@ -5,7 +5,7 @@
*/
/*
* Copyright (c) 2006-2008, Tomasz Sowa
* Copyright (c) 2006-2009, Tomasz Sowa
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@ -50,6 +50,8 @@ ParserManager::ParserManager() : buffer_len(2048)
when_scientific = 15;
rounding = -1;
remove_zeroes = true;
last_variables_id = 0;
last_functions_id = 0;
}
@ -62,6 +64,8 @@ ParserManager::ParserManager(const ParserManager & p) : buffer_len(p.buffer_len)
when_scientific = p.when_scientific;
rounding = p.rounding;
remove_zeroes = p.remove_zeroes;
last_variables_id = p.last_variables_id;
last_functions_id = p.last_functions_id;
}
@ -142,8 +146,17 @@ unsigned int i;
//
variables = *GetPrgRes()->GetVariables();
functions = *GetPrgRes()->GetFunctions();
if( GetPrgRes()->GetVariablesId() != last_variables_id )
{
variables = *GetPrgRes()->GetVariables();
last_variables_id = GetPrgRes()->GetVariablesId();
}
if( GetPrgRes()->GetFunctionsId() != last_functions_id )
{
functions = *GetPrgRes()->GetFunctions();
last_functions_id = GetPrgRes()->GetFunctionsId();
}
//
base_input = GetPrgRes()->GetBaseInput();

4
src/parsermanager.h

@ -5,7 +5,7 @@
*/
/*
* Copyright (c) 2006-2008, Tomasz Sowa
* Copyright (c) 2006-2009, Tomasz Sowa
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@ -121,6 +121,8 @@ private:
#endif
ttmath::Objects variables, functions;
int last_variables_id;
int last_functions_id;
const unsigned int buffer_len;
char * buffer;

41
src/programresources.cpp

@ -319,6 +319,31 @@ ttmath::Objects * ProgramResources::GetFunctions()
return &functions;
}
void ProgramResources::VariablesChanged()
{
++variables_id;
}
void ProgramResources::FunctionsChanged()
{
++functions_id;
}
int ProgramResources::GetVariablesId()
{
return variables_id;
}
int ProgramResources::GetFunctionsId()
{
return functions_id;
}
Languages * ProgramResources::GetLanguages()
{
return &languages;
@ -453,6 +478,9 @@ ProgramResources::ProgramResources()
decimal_point = 0;
angle_deg_rad_grad = 1; // rad is default
variables_id = 0;
functions_id = 0;
}
@ -647,17 +675,26 @@ IniParser::Section::iterator ic;
// we're adding variables
if( !if_not_exist )
{
variables.Clear();
VariablesChanged();
}
for( ic = temp_variables.begin() ; ic!=temp_variables.end() ; ++ic )
if( !if_not_exist || !variables.IsDefined(ic->first) )
{
variables.Add(ic->first, ic->second);
VariablesChanged();
}
// we're adding functions
if( !if_not_exist )
{
functions.Clear();
FunctionsChanged();
}
for( ic = temp_functions.begin() ; ic!=temp_functions.end() ; ++ic )
{
@ -666,7 +703,10 @@ IniParser::Section::iterator ic;
if( !if_not_exist || !functions.IsDefined(ic->first) )
if( SplitFunction(ic->second, &name, &param) )
{
functions.Add(ic->first, name, param);
FunctionsChanged();
}
}
}
@ -675,7 +715,6 @@ IniParser::Error ProgramResources::ReadVariablesFunctionsFromFile()
{
IniParser iparser;
IniParser::Section temp_variables, temp_functions;
std::string ini_value[20];
iparser.ConvertValueToSmallLetters(false);
iparser.SectionCaseSensitive(false);

33
src/programresources.h

@ -218,6 +218,36 @@ public:
volatile ThreadController * GetThreadController();
/*!
if you change some variables by using GetVariable() method
you should call this method in order to inform the second thread that variables have changed
(variables_id will be increment)
*/
void VariablesChanged();
/*!
if you change some functions by using GetFunction() method
you should call this method in order to inform the second thread that functions have changed
(functions_id will be increment)
*/
void FunctionsChanged();
/*!
returning the state of variables_id
(used by the second thread)
*/
int GetVariablesId();
/*!
returning the state of functions_id
(used by the second thread)
*/
int GetFunctionsId();
/*!
pointers to variables' table, functions' table, the languages' object, convert object
and to the characters' buffer
@ -321,6 +351,9 @@ private:
Convert convert;
volatile ThreadController thread_controller;
int variables_id;
int functions_id;
unsigned int buffer_size;
char * buffer;

2
src/resource.h

@ -5,7 +5,7 @@
*/
/*
* Copyright (c) 2006-2008, Tomasz Sowa
* Copyright (c) 2006-2009, Tomasz Sowa
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

2
src/tabs.cpp

@ -5,7 +5,7 @@
*/
/*
* Copyright (c) 2006-2008, Tomasz Sowa
* Copyright (c) 2006-2009, Tomasz Sowa
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

7
src/variables.cpp

@ -5,7 +5,7 @@
*/
/*
* Copyright (c) 2006-2008, Tomasz Sowa
* Copyright (c) 2006-2009, Tomasz Sowa
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@ -254,6 +254,7 @@ BOOL WmTabCommand_AddVariable(HWND, UINT message, WPARAM wParam, LPARAM lParam)
GetPrgRes()->GetThreadController()->StopCalculating();
code = GetPrgRes()->GetVariables()->Add(name, value);
GetPrgRes()->VariablesChanged();
GetPrgRes()->GetThreadController()->StartCalculating();
if( code != ttmath::err_ok )
@ -317,6 +318,7 @@ adding = false;
code = GetPrgRes()->GetVariables()->EditValue(name, value);
// the code should be err_ok here
GetPrgRes()->VariablesChanged();
GetPrgRes()->GetThreadController()->StartCalculating();
if( code != ttmath::err_ok )
@ -366,8 +368,11 @@ int items = ListView_GetSelectedCount(list);
all_deleted = false;
else
ListView_DeleteItem(list, id);
GetPrgRes()->VariablesChanged();
}
}
GetPrgRes()->GetThreadController()->StartCalculating();

Loading…
Cancel
Save