- Joined
- Jul 10, 2007
- Messages
- 6,306
set this.board.display=GetLocalPlayer()==this.owner
//display board to a single player or a group of players
if (GetLocalPlayer() == targetPlayer) then
set board.display = true
endif
//Struct MultiBoard
method operator width= takes real percent returns nothing
call MultiboardSetItemsWidth(board[this], percent)
endmethod
static if LIBRARY_ARGB then
method operator titleColor= takes ARGB color returns nothing
call MultiboardSetTitleTextColor(board[this], color.red, color.green, color.blue, color.alpha)
endmethod
endif
//Struct MultiBoardItem
static if LIBRARY_ARGB then
method operator color= takes ARGB color returns nothing
call MultiboardSetItemValueColor(table.multiboarditem[this], color.red, color.green, color.blue, color.alpha)
endmethod
endif
local ARGB color=0xFFFF97
call this.board[10][5].setColor(color.red,color.green,color.blue,color.alpha)
set this.board[10][5].color=0xFFFF97
call MultiboardSetItemsStyle(board[this], true, false)
method operator display takes nothing returns boolean
return IsMultiboardDisplayed(board[this])
endmethod
method operator display= takes boolean b returns nothing
call MultiboardDisplay(board[this], b)
endmethod
method operator minimize takes nothing returns boolean
return IsMultiboardMinimized(board[this])
endmethod
method operator minimize= takes boolean b returns nothing
call MultiboardMinimize(board[this], b)
endmethod
method operator displayed takes nothing returns boolean
return IsMultiboardDisplayed(board[this])
endmethod
method operator displayed= takes boolean b returns nothing
call MultiboardDisplay(board[this], b)
endmethod
method operator minimized takes nothing returns boolean
return IsMultiboardMinimized(board[this])
endmethod
method operator minimized= takes boolean b returns nothing
call MultiboardMinimize(board[this], b)
endmethod
oh great
method show takes nothing returns nothing
method hide takes nothing returns nothing
method operator shown takes nothing returns boolean
method operator hidden takes nothing returns boolean
method minimize takes nothing returns nothing
method maximize takes nothing returns nothing
method operator minimized takes nothing returns boolean
method operator maximized takes nothing returns boolean
library MultiboardExtendedAPI
module MultiboardExtension
method show takes nothing returns nothing
set this.display=true
endmethod
method hide takes nothing returns nothing
set this.display=false
endmethod
method operator shown takes nothing returns boolean
return this.display
endmethod
method operator hidden takes nothing returns boolean
return not this.display
endmethod
method minimize takes nothing returns nothing
set this.minimize=true
endmethod
method maximize takes nothing returns nothing
set this.minimize=false
endmethod
method operator minimized takes nothing returns boolean
return this.minimize
endmethod
method operator maximized takes nothing returns boolean
return not this.minimize
endmethod
endmodule
endlibrary
It's obviously way easier to use than Board is.
and then looking at Board over at wc3c and finding out that it had the overhead of a rhino and the ease of use of a platypus, I wrote this.
Ahem, I really don't care. I spent 1 hour trying to get the one at TH to work (which it didn't), and then I looked at the one at wc3c and went wtf at the API (I hated it) and the size of the lib
All I wanted was a multiboard wrapper, nothing else... I don't need lollipops shooting out of canons... if I wanted that, I'd get a script that used the simple Multiboard wrapper.
public method operator icon= takes string val returns nothing
local integer k = Mod(integer(this), 10000)
local Board board = Board((integer(this) - k) / 10000)
local integer row = (k - Mod(k, 100)) / 100
local integer col = Mod(k, 100)
local multiboarditem mbi
if board.bBoard == null then
debug call ErrorMsg("BoardItem[" + I2S(col) + "][" + I2S(row) + "].icon=", "The board this item belongs to does not exist anymore")
return
endif
if row >= board.bRowCount then
debug call ErrorMsg("BoardItem.icon=", "The board has been shrunk to no longer include this item. Will resize the board.")
call MultiboardSetRowCount(board.bBoard, row + 1)
set board.bRowCount = row + 1
endif
if col >= board.bColCount then
debug call ErrorMsg("BoardItem.icon=", "The board has been shrunk to no longer include this item. Will resize the board.")
call MultiboardSetColumnCount(board.bBoard, col + 1)
set board.bColCount = col + 1
endif
set mbi = MultiboardGetItem(board.bBoard, row, col)
call MultiboardSetItemIcon(mbi, val)
call MultiboardReleaseItem(mbi)
set mbi = null
endmethod
what is up with you guys and libraries that do 1001 and one things?????
A library should have absolutely bare minimum functionality.
That is the art of modularity >.>.
I don't need a massive library, I only need a simple multiboard wrapper.
The one at TH didn't even work. Neither of them had the simple API of this as well (I wanted this style API, and I was going to have it no matter what).
And using a Multiboard wrapper is much nicer and easier to read and easier to deal with than using the Multiboard natives directly -.-, hence the wrapper.
You took Earth-Fury's system and simplified it, but I don't see any credit.
I did not take Earth-Fury's system and he deserves 0 credit.
By Overhead, I wasn't talking about speed, but rather all of the extra stuff that was in that lib
However, thank you for pointing out things that you felt were wrong with the lib. I would have to say that your last post was not purely a hate post ^)^, hence why I'm responding to it : ).
As I said, this is a simple Multiboard Wrapper and nothing more. That is the goal of this. You are looking at it as if the goal is different and I keep telling you that the goal of this was to be a Multiboard Wrapper. It does not slack off, it just wraps up the current natives from JASS. Well, it does do a little bit extra by storing multiboard items in a table for the quick [][] stuff, but this goes for the simplest possible API and ease of use.
I believe that this multiboard wrapper is fine as is as it accomplishes its goal in a minimalistic and intuitive way. I'm not one for protecting users against themselves.
Nobody needs all these syntax wrappers in the JASS sectio
You deserve 0 credit.
Working with Multiboard wrappers is easier than working with Multiboard natives ; ). You can't say that this lib isn't much easier to work with and isn't much more intuitive than the JASS natives ;o.
no, if they need more complex functionality, they should make some functions to accomplish that functionality. For example, they could create 2 new row and column structs in 2 new libs ; ).
create
method is hilarious. You talk modularity but then you go ahead and put dynamic properties into the constructor forcing them as static properties, which is not modular coding style. I completely overlooked this at first glance. I do have a map and it follows this exact philosophy. Because it follows this philosophy, it happens to be extremely easy to maintain =)
They both have different styles of API and they both do their things different ways and have different methodologies.
For people who like Board's style, they can use Board. For people who like this style, they can use this.
You personally like Board's style, so you can just go ahead and keep on using Board. Don't try forcing people to use what you personally like.
As far as I can tell, the code in this lib is very different from Board's code.
Don't try forcing people to use what you personally like. That's pretty messed up. Just let everyone use what they want to use.
You couldn't even get Board to work, according to you. But then you quickly admitted that you simply gave up. Remember?
You just said you don't know his interface, and now you say they are different. They are almost identical.
You re-write other people's work and call it your own. That's pretty messed up.[
Your create method is hilarious. You talk modularity but then you go ahead and put dynamic properties into the constructor forcing them as static properties, which is not modular coding style. I completely overlooked this at first glance.
I never said I couldn't get Board to work. I said I couldn't get the one at TH to work, lolz.
and then I looked at the one at wc3c and went wtf at the API (I hated it) and the size of the lib
struct Tester extends array
private static method init takes nothing returns nothing
//bugless and easy to use, that's my kinda board
local Multiboard board = Multiboard.create(2,2)
call board.setStyle(true, false)
set board[0][0].text = "00"
set board[0][1].text = "01"
set board[1][0].text = "10"
set board[1][1].text = "11"
set board.display = true
set board.rowCount = 3
set board[2][0].text = "20"
set board[2][1].text = "21"
set board.rowCount = 2
set board.rowCount = 3
call DestroyTimer(GetExpiredTimer())
endmethod
private static method onInit takes nothing returns nothing
call TimerStart(CreateTimer(),0,false,function thistype.init)
endmethod
endstruct
scope TesterScript initializer init
public function initDelayed takes nothing returns nothing
local Board brd = Board.create()
call brd.all.setDisplay(true, false)
set brd.row.count = 2
set brd.col.count = 2
set brd[0][0].text = "00"
set brd[0][1].text = "01"
set brd[1][0].text = "10"
set brd[1][1].text = "11"
set brd.visible = true
set brd.row.count = 3
set brd[2][0].text = "20"
set brd[2][1].text = "21"
set brd.row.count = 2
set brd.row.count = 3
endfunction
private function init takes nothing returns nothing
call TimerStart(CreateTimer(), 0, false, function initDelayed)
endfunction
endscope
The code (from the quick glance I saw with the macros) looked very different. If the code is actually identical, that just tells you how little I looked at Board before I was fed up with the size and API.
I don't take other people's work and rewrite it. I write my own version if I don't like their version.
How are they static? You can easily change row and column count whenever. You can't have a board with 0 rows/columns, hence why they are in the constructor.
You can't have a board with 0 rows/columns, hence why they are in the constructor.
I believe that this multiboard wrapper is fine as is as it accomplishes its goal in a minimalistic and intuitive way. I'm not one for protecting users against themselves.
So here you are protecting the users from themselves, when before you were against the notion. At the same time, you're ruining modularity which you claimed is important. You just kind of throw computer science terms around whenever it benefits your abstractly different point of view.
Thanks for showing the API. His documentation sucks >.>.You're taking full credit for systems that have been mastered before by more credible users than yourself. You're not even putting the full effort into it either you're just doing what you feel like doing and then submitting it here, where it is immediately accepted without any real examination.
Earth-Fury's script exceeds the quality of yours in every aspect that you told me you considered important, but you still think yours is better. I've got nothing left to say to you.
When on earth did I take Board? You are accusing me of cnping Board and modifying it to my own needs when I barely took a glance of it.So you take Board, get rid of half the functions, add your own little versions of the same thing with your own preferences on how you like to group things in your head (instead of what is common), maybe shorten a variable name and claim yours is more efficient. Yea you've got me convinced.
Ok, now that I see the API as demonstrated by you, it's ok ;p, but his documentation is horrendous enough to make me not want to even look at it.If you'll please refer to above, you clearly don't know what you're talking about. The API is good, and the size is necessary. If you still think the API sucks, then maybe you should try to change your own API because (as I have shown above) it's the exact same thing, but from an object oriented point of view it makes a whole lot more sense.
I constructed this with the layout of JASS natives in mind. With JASS natives, there are no rows/columns. You can't set a row. This is the reason why I have a rowCount and a columnCount. Furthermore, setting rows/columns like his does is not always necessary, which makes them extraneous methods and just adds complexity to an otherwise very simple script. Row/Column structs could just as easily be made as a separate resource.His actually functions better, if you test both of these. His API makes more sense to because he looks at rowCount as a member of row, rather than of the multiboard itself (which isn't modular).
requires ARGB
private constant function B2S takes boolean b returns string
if b then
return "true"
endif
return "false"
endfunction
public method operator x takes nothing returns integer
return Mod(Mod(integer(this), 10000), 100)
endmethod
public method operator y takes nothing returns integer
return (Mod(integer(this), 10000) - Mod(Mod(integer(this), 10000), 100)) / 100
endmethod
Would I have likely used his Board script in my map if he had documentation I could read?
//==============================================================================
// Board v0.2.01
//==============================================================================
// Credits:
//------------------------------------------------------------------------------
// Written By:
// Earth-Fury
//------------------------------------------------------------------------------
// I don't care if you credit me or not if you use this. However, you must not
// misrepresent the source of this library in any way. This includes, but is not
// limited to claiming yourself to be the sole contributor to a map which uses
// this library.
//
//==============================================================================
// Introduction:
//------------------------------------------------------------------------------
// Board is a library which provides decorators for multiboards. Basically, the
// Board library gives you multiboards with a more manageable API. You can not
// mix usage of the Board class and usage of the multiboard natives. You can
// have multiboards which in no way use the Board library, as well as ones that
// do.
//
// Board does not impose limits on the number of boards, columns, rows, or
// items within boards. You can create an arbitrary number of boards with an
// arbitrary number of rows and columns, without running in to problems with
// the array size limit.
//
//==============================================================================
// API Guide
//------------------------------------------------------------------------------
// The API for this library is very big. However, most of the methods do the
// exact same thing as their native counterparts. As well, methods which share
// the same name do the same thing, with some minor differences.
//
//------------------------------------------------------------------------------
// An Important Note:
//
// All of the array access methods (That is, the [] methods) which return a
// BoardRow, BoardColumn, or BoardItem, will accept values greater than the size
// of the Board. They will resize the board so that it contains the requested
// item.
//
// Note that if you have a BoardItem, BoardRow, or BoardColumn object, and
// destroy the board they point to, weird things can happen if you use them. So
// please try to make sure you don't use BoardItem/Row/Column objects if the
// Board they belong to has been destroyed.
//
// The values of BoardRow, BoardColumn, and BoardItem instances can and will go
// above 8190. They are not suitable for use as array indexes. Instances of the
// Board struct itself are suitable for that use.
//
//------------------------------------------------------------------------------
// The Board struct:
//
// local Board board = Board.create()
// When created, a Board object will have 0 columns and 0 rows. It will have
// no title. The default settings for items are set such that new items will
// display only text, not icons, and will have a width of 0.
//
// set board.title = "string"
// Sets the title of the multiboard. Identical to the native.
//
// set board.titleColor = 0xFFFF00
// Sets the color of the title of the multiboard to the given ARGB color.
//
//
// set board.visible = true
// Makes the board visible for all players if set to true, and hidden for all
// players if set to false.
//
// set board.visible[Player(0)] = false
// Makes the board visible/hidden for the given player
//
// local boolean b = board.visible[Player(0)]
// Returns true if the board is visible for the given player; false otherwise.
//
//
// set board.minimized = true
// Minimizes/restores the board for all players.
//
// set board.minimized[Player(0)] = false
// Minimizes/restores the board for the given player only.
//
//
// call board.clear()
// Removes all items from the board. The same as the native.
//
//
// local BoardItem it = board[x][y]
// Returns the BoardItem located in column x, row y.
//
//
// local BoardColumn col = board.col[x]
// Returns the BoardColumn object for the given column of the board.
//
// set board.col.count = 10
// Resizes the board such that it has the given number of columns.
//
// local integer i = board.col.count
// Returns the number of columns a board currently has.
//
//
// local BoardRow row = board.row[y]
// Returns the BoardRow object for the given row of the board.
//
// set board.row.count = 10
// Resizes the board such that it has the given number of rows.
//
// local integer i = board.row.count
// Returns the number of rows a board currently has.
//
// board.all
// Using board.all, you can modify the item properties of all items at once,
// as well as change the default properties for items in new rows and
// columns. Example:
//
// set board.all.width = 0.03
//
// See the "Item Manipulation" section for information on the methods that
// board.all has.
//------------------------------------------------------------------------------
// Item Manipulation:
//
// This section details the methods which all structs this library provides has.
// Namely, the methods that modify the properties of board items.
//
// When these methods are called from a row, they modify all of the items in
// that row of the board.
//
// The same for columns.
//
// When called on BoardItems, they only modify the given item.
//
// When called from board.all, they modify all the items on the board, and
// change the default properties for newly added items. (Items are added by the
// board gaining rows and columns.)
//
// Explanation of the methods follows:
//
// local BoardItem it = board[0][0]
//
// set it.text = "string"
// Changes the displayed text for the given item/row/etc.
//
// set it.color = 0xFFFFFF
// Changes the colour of the displayed text.
//
// set it.icon = "ReplaceableTextures\\..."
// Changes the icon of the item/row/etc.
//
// set it.width = 0.04
// Changes the width of the item/row/etc. These width values are the same
// as those used by native multiboards.
//
// call it.setDisplay(shouldDisplayText, shouldDisplayIcon)
// The same as the MultiboardSetItemStyle() native. The first parameter
// determines if the text for the item/row/etc. will be displayed.
// The second parameter determines if the icon will be displayed.
//
//------------------------------------------------------------------------------
// The BoardRow and BoardColumn structs:
//
// Note that these both have the exact same methods. The difference is, of
// course, one represents a row of items in a Board, while the other represents
// a column of items. BoardRow is used below, but it is fully interchangeable.
//
// local BoardRow row = board.row[10]
//
// local BoardItem it = row[y]
// Returns the BoardItem that is in the row, at column y. For a BoardColumn
// object, it takes the row as it's parameter instead of the column.
//
// local integer whatRow = row.position
// Returns the row or columns position in the board. That is to say:
// board.row[10].position is equal to 10.
//
// The BoardRow and BoardColumn structs have all of the methods listed in the
// "Item Manipulation" section.
//
//------------------------------------------------------------------------------
// The BoardItem struct:
//
// local BoardItem it = board[0][1]
//
// local integer itemsColumn = it.x
// Returns the item's x position in the board. (The ID of the column the
// item is in.)
//
// local integer itemsRow = it.y
// The same as it.x, but it returns the row.
//
// The BoardItem struct has all of the methods listed in the "Item Manipulation"
// section of this API guide.
//
//==============================================================================
// There is nothing to configure.
//==============================================================================
//2.0.1.1
/////////////////////////////////////////////////////////////////////////
//function CreateEvent takes nothing returns integer
//function TriggerRegisterEvent takes trigger t, integer ev returns nothing
//function RegisterEvent takes boolexpr c, integer ev returns nothing
//function FireEvent takes integer ev returns nothing
//struct Event extends array
//static method create takes nothing returns thistype
//method registerTrigger takes trigger t returns nothing
//method register takes boolexpr c returns nothing
//method fire takes nothing returns nothing
/////////////////////////////////////////////////////////////////////////
*************************************************************************************
*
* Used for creating very large integers in any base. Stores in linked list.
*
*************************************************************************************
*
* */uses/*
*
* */ Base /* hiveworkshop.com/forums/submissions-414/snippet-base-188814/
*
*************************************************************************************
*
* struct BigInt extends array
*
* Base base
* - The current base of the integer
* - Changing this value will convert the BigInt value into another base
*
* integer digit
* - Specific digit within BigInt
* readonly BigInt next
* - Used for iterating over digits
* - Goes from first placehold to last
* - Looping through 10 would be 0 to 1
* readonly BigInt previous
* - Used for iterating over digits
* - Goes from last placeholder to first
* - Looping through 10 would be 1 to 0
* readonly boolean end
* - The head, the pointer that represents the BigInt
* - Does not store a value, exit loop when this is true
*
* static method create takes Base base returns BigInt
* - Creates a new BigInt in a base
* - Semi small operation
* method destroy takes nothing returns nothing
* - Destroys a BigInt. Must pass in the integer pointer or this
* - will bug the rest of the system.
* - Very small operation.
*
* method add takes integer value, integer extraPower returns nothing
* - Integer will be added as base 10 integers, meaning that they will
* - be converted into the base. If wanting to add integers in the same
* - base, convert it before hand. 0x and 0 notation for hexadecimal
* - and octal are very useful as well as they work with the integers
* - in an already converted state.
* -
* - value and extraPower must be greater than 0
* -
* - extraPower refers to value^(1+extraPower)
* method multiply takes integer value returns nothing
* - Multiplies an integer. Value is treated as a base 10 integer.
* method divide takes integer value returns integer
* - Divides an integer by an integer. Value is treated as a base10 integer.
* -
* - Returns remainder
* method mod takes integer k returns integer
* - Returns the modulo of a BigInt given k as a divisor.
*
* method addBig takes BigInt integerToAdd, integer extraPower returns nothing
* - Adds BigInt integerToAdd to BigInt
* method multiplyBig takes BigInt integerToAdd returns nothing
* - Multiplies BigInt by BigInt integerToAdd
*
* method push takes integer value returns nothing
* - pushes a base 10 integer on to the right side of BigInt
* - and converts that base 10 number into the BigInt's base
* - smallest digit*
* method pop takes nothing returns integer
* - pop does the reverse of push and returns the popped digit
* - (see pop @google)
* method enq takes integer value returns nothing
* - pushes base 10 integer to the left side of the number
* - biggets digit*
* method deq takes nothing returns integer
* - deq does the reverse of enq and returns popped digit
* method rl takes nothing returns nothing
* - Rotates number left
* method rr takes nothing returns nothing
* - Rotates number right
*
* method copy takes nothing returns BigInt
* - Returns a copy of the BigInt
*
* method toString takes nothing returns string
* - converts an integer into a string (extremely useful)
* -
* - if working in hexadecimal and there was a value like
* - C1H4, it'd actually return "C1H4"
* -
* - string conversions use the actual Base to perform the
* - character conversions
* method toInt takes nothing returns integer
* - returns the value stored in the BigInt as an integer.
* - only use when the value can be stored within an integer.
* - one common use might be retrieving the last value in a save/load
* - code.
* static method convertString takes string value, Base base returns BigInt
* - converts a string into an BigInt
* -
* - if working with hexadecimal and inputted "C1H4", it would
* - return an BigInt containing C1H4.
* -
* - Returns 0 if the string value contains invalid characters
*
*************************************************************************************
*
* Error Messages
*
* Thread crash error messages output the trigger that crashed.
* Feel free to post a message up for the resource about the crashed trigger
* including the trigger name.
*
* To find the specific method that crashed, do CTRL+F trigger name two times
* (should be at the onInit method). From there, look at the method that's
* added to the trigger and then CTRL+F that method.
*
* Finding t-
* private trigger t = CreateTrigger()
* call TriggerAddCondition(t, Condition(function thistype.cl))
* private static method cl takes nothing returns boolean
*
* Overflow errors have to do with too many allocated digits. If running into these, the numbers
* are just too large. This has been tested with 61*62^120 (base 62 number) converted to binary and
* back, so it can handle extremely large digits (binary number was over 700 digits)
*
*************************************************************************************/
/************************************************************************************
*
* Code
*
* if you want to read the code, my suggestion is to not do it
* this system performs operations digit by digit, meaning the algorithms
* are ugly
*
* the code is optimized, meaning the variable names aren't descriptive
* the point is that it works and it's optimization is based on a balance
* between minimizing counts towards the op limit and actual speed
*
************************************************************************************/
// Written By:
// Earth-Fury
//------------------------------------------------------------------------------
// I don't care if you credit me or not if you use this. However, you must not
// misrepresent the source of this library in any way. This includes, but is not
// limited to claiming yourself to be the sole contributor to a map which uses
// this library.
//
//==============================================================================
// Introduction:
//------------------------------------------------------------------------------
// Board is a library which provides decorators for multiboards. Basically, the
// Board library gives you multiboards with a more manageable API. You can not
// mix usage of the Board class and usage of the multiboard natives. You can
// have multiboards which in no way use the Board library, as well as ones that
// do.
//
// Board does not impose limits on the number of boards, columns, rows, or
// items within boards. You can create an arbitrary number of boards with an
// arbitrary number of rows and columns, without running in to problems with
// the array size limit.
//
//==============================================================================
// API Guide
//------------------------------------------------------------------------------
// The API for this library is very big. However, most of the methods do the
// exact same thing as their native counterparts. As well, methods which share
// the same name do the same thing, with some minor differences.
//
//------------------------------------------------------------------------------
// An Important Note:
//
// All of the array access methods (That is, the [] methods) which return a
// BoardRow, BoardColumn, or BoardItem, will accept values greater than the size
// of the Board. They will resize the board so that it contains the requested
// item.
//
// Note that if you have a BoardItem, BoardRow, or BoardColumn object, and
// destroy the board they point to, weird things can happen if you use them. So
// please try to make sure you don't use BoardItem/Row/Column objects if the
// Board they belong to has been destroyed.
//
// The values of BoardRow, BoardColumn, and BoardItem instances can and will go
// above 8190. They are not suitable for use as array indexes. Instances of the
// Board struct itself are suitable for that use.
//------------------------------------------------------------------------------
// Item Manipulation:
//
// This section details the methods which all structs this library provides has.
// Namely, the methods that modify the properties of board items.
//
// When these methods are called from a row, they modify all of the items in
// that row of the board.
//
// The same for columns.
//
// When called on BoardItems, they only modify the given item.
//
// When called from board.all, they modify all the items on the board, and
// change the default properties for newly added items. (Items are added by the
// board gaining rows and columns.)
//
// Explanation of the methods follows:
// set it.color = 0xFFFFFF
// Changes the colour of the displayed text.
//
// set it.icon = "ReplaceableTextures\\..."
// Changes the icon of the item/row/etc.
//
// set it.width = 0.04
// Changes the width of the item/row/etc. These width values are the same
// as those used by native multiboards.
//
// call it.setDisplay(shouldDisplayText, shouldDisplayIcon)
// The same as the MultiboardSetItemStyle() native. The first parameter
// determines if the text for the item/row/etc. will be displayed.
// The second parameter determines if the icon will be displayed.
* Base base
* - The current base of the integer
* - Changing this value will convert the BigInt value into another base
*
* integer digit
* - Specific digit within BigInt
* readonly BigInt next
* - Used for iterating over digits
* - Goes from first placehold to last
* - Looping through 10 would be 0 to 1
* readonly BigInt previous
* - Used for iterating over digits
* - Goes from last placeholder to first
* - Looping through 10 would be 1 to 0
* readonly boolean end
* - The head, the pointer that represents the BigInt
* - Does not store a value, exit loop when this is true
*
* static method create takes Base base returns BigInt
* - Creates a new BigInt in a base
* - Semi small operation
* method destroy takes nothing returns nothing
* - Destroys a BigInt. Must pass in the integer pointer or this
* - will bug the rest of the system.
* - Very small operation.
I can read my documentation style infinitely more easily than I can read his
The fact is, I didn't want to read it, hence why I didn't know his API. I assumed his API was bad because of the glances at the code (with the macros etc), which made me go wtf. Furthermore, I was already in a pissed off mood from the one at TH when I was looking at it, so I just didn't want to deal with it.
Good documentation lets me get to learning how to use the system immediately instead of feeding me a lot of stuff I don't care about.
Notice how I always write a very small description and have a neatly organized API.
Furthermore, any extra notes I have go below the API -.-. For some systems, like this one, I also include examples of how to use so that you don't even have to look at the API if you don't want to >.>.
So you tell me Earth-Fury's is so easy to read, but I beg to differ >.>
I don't like to read through a whole bundle of text. I prefer to just go straight for the API and be done with it (I don't even usually need any of the descriptions of the methods etc).
Well then no matter how good the documentation is it won't be good enough because you won't even bother to spend 30 seconds trying to learn it.[
It isn't even that hard to force yourself to read through the text... takes maybe 2 minutes unless you're autistic.
I spent about 15 seconds learning Bribe's Table. That is the extend of my laziness to learn new resources. If it has globs of text, there is a guarantee that I am not going to even bother with it :\.
I didn't make this to say that I came up with the idea etc -.-. I already told you precisely why I made it. Stop trying to say otherwise >.<
Instead you would rather just insult their work as if you know better than they do
That makes me question whether or not you really know what you're doing or just jamming ideas together without thinking them through.
I never said I knew better than they do.
There's a difference between being able to do something, and being able to do something well.
If people care about mechanics and want the debug features, I'd def say Board. If they wanted the slight speed boost with the multiboard item caching, I'd say this one.
//* push() - pushes data onto stack
//* pop() - pops data from stack