New null_t type has a constant "null", which can be assigned to objects.
Methodmaps can now be "nullable", accepting null_t types.
The delete keyword now zaps non-const lvalue inputs.
Fixed some newdecl arguments not accepting references.
Allow functag matching to coerce arguments and return values.
Allow functags to accept new-style types as a return value.
commit 1e5213d43f
Author: David Anderson <dvander@alliedmods.net>
Date: Sat Jun 21 04:09:27 2014 -0700
Quell MSVC C99 bugs.
commit f2e166c592
Author: David Anderson <dvander@alliedmods.net>
Date: Sat Jun 21 03:59:23 2014 -0700
Fix varying levels of stupid memory errors.
commit b0773d7be4
Author: David Anderson <dvander@alliedmods.net>
Date: Sat Jun 21 03:36:39 2014 -0700
Fix memory leak in parsing some control flow structures.
commit 5aca55713c
Author: David Anderson <dvander@alliedmods.net>
Date: Sat Jun 21 03:35:17 2014 -0700
Fix memory leak in struct parsing.
commit b46ec5cd28
Author: David Anderson <dvander@alliedmods.net>
Date: Sat Jun 21 03:32:03 2014 -0700
Fix build.
commit 17bbbb9a46
Merge: c0834092107599
Author: David Anderson <dvander@alliedmods.net>
Date: Sat Jun 21 01:26:27 2014 -0700
Merge branch 'master' into methodmaps
commit c083409b56
Author: David Anderson <dvander@alliedmods.net>
Date: Fri Jun 20 23:49:36 2014 -0700
Add VS2k13 support.
commit b799377849
Author: David Anderson <dvander@alliedmods.net>
Date: Fri Jun 20 01:28:08 2014 -0700
Implement destructors.
commit 1a340dec26
Author: David Anderson <dvander@alliedmods.net>
Date: Fri Jun 20 00:08:04 2014 -0700
Add some tests.
commit 12db52ee64
Author: David Anderson <dvander@alliedmods.net>
Date: Fri Jun 20 00:05:49 2014 -0700
Initial implementation of constructors.
commit 074669a658
Author: David Anderson <dvander@alliedmods.net>
Date: Thu Jun 19 22:42:35 2014 -0700
Add simple test harness.
commit 27c1e3cf14
Author: David Anderson <dvander@alliedmods.net>
Date: Thu Jun 19 22:15:42 2014 -0700
Big refactoring for new syntax.
commit f3c37fdc91
Author: David Anderson <dvander@alliedmods.net>
Date: Thu Jun 19 22:12:54 2014 -0700
Refactor tests for the new syntax.
commit 6211f392f8
Author: David Anderson <dvander@alliedmods.net>
Date: Wed Jun 18 22:25:48 2014 -0700
Make lexer tokens an enum.
commit 5210b01375
Author: David Anderson <dvander@alliedmods.net>
Date: Tue Jun 17 06:48:15 2014 -0700
Add comment.
commit 06688ff4ac
Author: David Anderson <dvander@alliedmods.net>
Date: Tue Jun 17 06:46:10 2014 -0700
Allow |this| to be a base type of the methodmap.
commit 05cf368202
Author: David Anderson <dvander@alliedmods.net>
Date: Mon Jun 16 22:11:58 2014 -0700
Unify duplicate typesymbol checking.
commit 09161bf269
Author: David Anderson <dvander@alliedmods.net>
Date: Mon Jun 16 19:53:36 2014 -0700
Close loophole that allowed methodmaps for enums.
commit 5bb4aeba89
Author: David Anderson <dvander@alliedmods.net>
Date: Mon Jun 16 01:50:42 2014 -0700
Add tests and dbi/handle changes.
commit b9203e2491
Author: David Anderson <dvander@alliedmods.net>
Date: Mon Jun 16 01:38:29 2014 -0700
Ensure methodmap tags are fixed.
commit 878b80fd87
Author: David Anderson <dvander@alliedmods.net>
Date: Mon Jun 16 01:36:04 2014 -0700
Implement inheritance.
commit 6ba9e004fb
Author: David Anderson <dvander@alliedmods.net>
Date: Mon Jun 16 01:31:00 2014 -0700
Refactor matchtag() to not be insane.
commit 4ede6343b0
Author: David Anderson <dvander@alliedmods.net>
Date: Mon Jun 16 01:20:50 2014 -0700
Fix indenting.
commit e3ddef8916
Author: David Anderson <dvander@alliedmods.net>
Date: Mon Jun 16 01:20:27 2014 -0700
Initial prototype.
Backported the changes CompuPhase did to the compiler to support string
literal concatenation including all fixes in later commits from r30 on.
http://code.google.com/p/pawnscript/source/detail?r=30
Pawn uses ellipses "..." to concatenate so it looks like this:
#define PROJECT_AUTHOR "Greyscale"
#define PROJECT_COPYRIGHT "Copyright (C) 2010 " ... PROJECT_AUTHOR
This would result in PROJECT_COPYRIGHT being defined as
"Copyright (C) 2010 Greyscale"
While i've been at it, that stringizing a macro parameter feature was
ported too.
From the changelog for version 3.3.4026
(http://www.compuphase.com/pawn/pawnhistory.htm):
The macro substition processor now recognizes the "#" character for
"stringizing" a parameter. For example, if you have the definition
#define log(%1) #%1
Then the expression log(test) will result in "test".
Note that concatenation of literal strings requires an ellipsis in pawn
(which is different than C/C++). So to combine the parameter with
literal strings, use a syntax like:
#define log(%1) "logging: " ... #%1 ... "\n"
The stringize operator is only available in the replacement text of a
macro.
Doing
PrintToServer(log(hello));
would print
logging: hello\n
Original patch written by David Anderson (original r from Fyren).
- Updated to function with the current JIT compiler.
- Took in clean-ups from later-dated patches.
Summary:
10.9's SDK changed strlcat and strlcmp to macros, which has broken lots of code. As they will always be available from the system (being BSD functions), just use the system ones there.
tempnam has also been deprecated, refactoring spcomp to use it safely is quite a bit of work, and it's not critical, so just hacking around it with mkstemp.
Test Plan: Compiled spcomp.
Reviewers: dvander
Differential Revision: https://phabricator.alliedmods.net/D3
--HG--
extra : rebase_source : 535b88f815727b186fa6a141036599651a60e334
Summary: When there are more than 32768 SLOC in a file, spcomp underflows when storing debug info. These are safe to change as the file-backed struct uses uint32_t already.
Test Plan: Compiled the test plugin from bug 5959. I didn't load it, but it compiled without error and the SMX file is valid.
Reviewers: BAILOPAN
Differential Revision: https://phabricator.alliedmods.net/D2
--HG--
extra : rebase_source : fa907333b8c0dcab6e78c69ad4a92cdfb048083f
extra : amend_source : c7d2ec7d8b880459a57e4b2df5c1e8bbab5585bb
- Introduce HashMap, a key-value map based on HashTable.
- Introduce LinkedList, to port from SourceHook::List.
- Introduce AString, to port from SourceHook::String.
- Introduce KE_OVERRIDE and KE_DELETE helpers for C++11.
- HashTable now constructs/destructs only live items.
- Fix insert-on-removed-item bug in HashTable.
- Fix Vector keeping a new maxsize if allocation fails.
- Renamed am-inline-list.h to am-inlinelist.h.
--HG--
rename : public/amtl/am-inline-list.h => public/amtl/am-inlinelist.h
The tracker related opcodes:
GENARRAY
GENARRAY_Z
TRACKER_POP_SETHEAP
TRACKER_PUSH_C
All contain some vastly overcomplicated assembly containing logic that could
be implemented much easier in C++. If it were a performance concern, these
opcodes would be entirely in C++, but most of them call out to one or more
routines to do additional work. This patch just moves most of the logic out
to C++ to reduce complexity and fix reported bugs.
--HG--
extra : rebase_source : 1397056ac3ca3efb969e66ec577e2b33ca725e1a