From 1a651243bb2c8e18baa9aac30ac52a62185074e7 Mon Sep 17 00:00:00 2001 From: Ben Longbons Date: Sun, 30 Mar 2014 23:14:12 -0700 Subject: Be stricter about most arrays --- src/mmo/core.cpp | 2 +- src/mmo/core.hpp | 4 +++- src/mmo/dumb_ptr.hpp | 2 -- src/mmo/extract.hpp | 2 -- src/mmo/mmo.hpp | 29 +++++++++++++++++++++-------- src/mmo/utils.hpp | 1 - 6 files changed, 25 insertions(+), 15 deletions(-) (limited to 'src/mmo') diff --git a/src/mmo/core.cpp b/src/mmo/core.cpp index 1a9a52e..26b5128 100644 --- a/src/mmo/core.cpp +++ b/src/mmo/core.cpp @@ -83,7 +83,7 @@ int main(int argc, char **argv) ZString *args = static_cast(alloca(argc * sizeof(ZString))); for (int i = 0; i < argc; ++i) args[i] = ZString(strings::really_construct_from_a_pointer, argv[i], nullptr); - do_init(argc, args); + do_init(Slice(args, argc)); if (!runflag) { diff --git a/src/mmo/core.hpp b/src/mmo/core.hpp index 1788ece..7a26f7d 100644 --- a/src/mmo/core.hpp +++ b/src/mmo/core.hpp @@ -3,6 +3,8 @@ # include "../sanity.hpp" +# include "../range/slice.hpp" + # include "../strings/fwd.hpp" /// core.c contains a server-independent main() function @@ -13,7 +15,7 @@ extern volatile bool runflag; /// This is an external function defined by each server /// This function must register stuff for the parse loop -extern int do_init(int, ZString *); +extern int do_init(Slice); /// Cleanup function called whenever a signal kills us /// or when if we manage to exit() gracefully. diff --git a/src/mmo/dumb_ptr.hpp b/src/mmo/dumb_ptr.hpp index 98c6308..9632945 100644 --- a/src/mmo/dumb_ptr.hpp +++ b/src/mmo/dumb_ptr.hpp @@ -29,8 +29,6 @@ # include "../strings/zstring.hpp" # include "../strings/xstring.hpp" -# include "../generic/const_array.hpp" - // unmanaged new/delete-able pointer // should be replaced by std::unique_ptr template diff --git a/src/mmo/extract.hpp b/src/mmo/extract.hpp index 0ea9eb9..622281b 100644 --- a/src/mmo/extract.hpp +++ b/src/mmo/extract.hpp @@ -25,8 +25,6 @@ # include "../strings/xstring.hpp" -# include "../generic/const_array.hpp" - # include "mmo.hpp" # include "utils.hpp" diff --git a/src/mmo/mmo.hpp b/src/mmo/mmo.hpp index 6b3cd53..f867492 100644 --- a/src/mmo/mmo.hpp +++ b/src/mmo/mmo.hpp @@ -21,6 +21,7 @@ constexpr int MAX_MAP_PER_SERVER = 512; constexpr int MAX_INVENTORY = 100; constexpr int MAX_AMOUNT = 30000; constexpr int MAX_ZENY = 1000000000; // 1G zeny +constexpr int TRADE_MAX = 10; enum class SkillID : uint16_t; constexpr SkillID MAX_SKILL = SkillID(474); // not 450 @@ -43,6 +44,20 @@ constexpr int MAX_PARTY = 12; # define MIN_CLOTH_COLOR battle_config.min_cloth_color # define MAX_CLOTH_COLOR battle_config.max_cloth_color +template +struct Array +{ + T data[n]; +public: + T& operator [](size_t i) { assert (i < n); return data[i]; } + const T& operator [](size_t i) const { assert (i < n); return data[i]; } + + T *begin() { return data + 0; } + T *end() { return data + n; } + const T *begin() const { return data + 0; } + const T *end() const { return data + n; } +}; + struct AccountName : VString<23> {}; struct AccountPass : VString<23> {}; struct AccountCrypt : VString<39> {}; @@ -319,14 +334,14 @@ struct CharData unsigned int mapport; struct point last_point, save_point; - struct item inventory[MAX_INVENTORY]; + Array inventory; earray skill; int global_reg_num; - struct global_reg global_reg[GLOBAL_REG_NUM]; + Array global_reg; int account_reg_num; - struct global_reg account_reg[ACCOUNT_REG_NUM]; + Array account_reg; int account_reg2_num; - struct global_reg account_reg2[ACCOUNT_REG2_NUM]; + Array account_reg2; }; struct CharPair @@ -345,11 +360,9 @@ struct storage int account_id; short storage_status; short storage_amount; - struct item storage_[MAX_STORAGE]; + Array storage_; }; -//struct map_session_data; - struct GM_Account { int account_id; @@ -371,7 +384,7 @@ struct party PartyName name; int exp; int item; - struct party_member member[MAX_PARTY]; + Array member; }; #endif // TMWA_MMO_MMO_HPP diff --git a/src/mmo/utils.hpp b/src/mmo/utils.hpp index 5e9de26..40ff595 100644 --- a/src/mmo/utils.hpp +++ b/src/mmo/utils.hpp @@ -10,7 +10,6 @@ # include "../strings/fwd.hpp" # include "../strings/vstring.hpp" -# include "../generic/const_array.hpp" # include "../generic/operators.hpp" # include "../io/fwd.hpp" -- cgit v1.2.3-70-g09d2