Jeff Walden
109384f69f
Bug 1030515 - Make IsSigned and IsUnsigned usable with user-defined types. r=froydnj
...
--HG--
extra : rebase_source : f74d5c0b9f05a56c4d56aba1ebbdb944a3464b30
2014-06-25 18:47:04 -07:00
Jeff Walden
f77fe2a434
Bug 1029132 - Add mozilla::IsInRange method to write out in-range tests more simply. r=froydnj
...
--HG--
extra : rebase_source : b57c74750e4db2bc5ffe4655069f3597fab5a6b2
2014-06-23 14:14:26 -07:00
Jeff Walden
56a3b472f2
Bug 953296 - Add IsLvalueReference and IsVoid. r=jcranmer
...
--HG--
extra : rebase_source : 53def7d45901da43ffbcfef3adbbea3a3e6bb329
2014-01-09 10:09:14 -06:00
Jeff Walden
17f7048f82
Bug 953296 - Implement mozilla::RemoveExtent. r=jcranmer
...
--HG--
extra : rebase_source : 97d4f055fc80074265bd5c8b1b0a565d8e994e7b
2014-06-10 12:58:17 -07:00
Nicholas Nethercote
386e3bffeb
Bug 1026319 - Convert the second quarter of MFBT to Gecko style. r=froydnj.
...
--HG--
extra : rebase_source : 98d2557c7fe4648d79143c654e7e31767fca2e65
2014-06-12 23:34:08 -07:00
Chris Peterson
b2a3147c81
Bug 1024318 - Fix warnings in mfbt/tests/ and mark as FAIL_ON_WARNINGS. r=Waldo
2014-06-14 12:47:01 -07:00
Ehsan Akhgari
64915585aa
Bug 1025143 - Fix a compilation error in TestTypedEnum.cpp with clang-cl; r=bjacob
...
This makes the code more correct since if we don't have constexpr
support in the compiler, the CastableTypedEnumResult type would
actually not be a literal type, so we should not assert that here.
2014-06-13 15:22:16 -04:00
Ehsan Akhgari
861dfcddf0
Bug 1013662 - Fix bad implicit conversion constructors in MFBT; r=froydnj,Waldo
2014-06-06 23:17:06 -04:00
Ehsan Akhgari
6cb9279d0b
Bug 1022050 - Disable the SEH block used in TestPoisonArea.cpp on clang-cl until it grows SEH support; r=froydnj
2014-06-06 23:11:58 -04:00
Chris Peterson
c204165da0
Bug 945029 - Fix up Android's broken [u]intptr_t inttype macros. r=Waldo
2014-05-12 22:27:14 -07:00
Birunthan Mohanathas
bd5a6cf135
Bug 1001987
- Make MOZ_STATIC_ASSERT_VALID_ARG_COUNT compatible with ICC. r=Waldo
2014-04-28 07:48:00 +02:00
Benoit Jacob
81d250e2f6
Bug 987290 - Work around a GCC 4.6.3 ICE - no review, bustage fix
2014-04-28 12:27:13 -04:00
Benoit Jacob
2d3f8762f2
Bug 987290 - Follow-up: fix TestTypedEnum to avoid requiring behavior that relies on explicit conversions, when they are not available. Fixes the build on MSVC 2012 - no review, bustage fix
2014-04-27 22:46:40 -04:00
Benoit Jacob
82b5784319
Bug 987290 - Allow using MFBT Typed Enums as bitwise flags - r=Waldo
2014-04-25 22:34:04 -04:00
Blair McBride
5cb840939c
Backed out 2 changesets (bug 987290). r=sheriff
...
Backed out changeset 4ad1f662f521 (bug 987290)
Backed out changeset 080ff1f86465 (bug 987290)
2014-04-27 20:41:58 +12:00
Benoit Jacob
4b8c2ee028
Bug 987290 - Allow using MFBT Typed Enums as bitwise flags - r=Waldo
2014-04-25 22:34:04 -04:00
Birunthan Mohanathas
fd2b5ff869
Bug 989460 - Part 2: Add MOZ_FOR_EACH macro. r=Waldo
2014-04-24 10:49:00 +02:00
Birunthan Mohanathas
bb2bad074f
Bug 989460 - Part 1: Add MacroArgs.h for macros related to implementing variadic macros. r=Waldo
...
This also converts MOZ_RELEASE_ASSERT and MOZ_BEGIN_NESTED_ENUM_CLASS to use the new helper macros.
2014-04-24 10:48:00 +02:00
Benoit Jacob
dd9ac0241f
Bug 807607 - Make MFBT tests use MOZ_RELEASE_ASSERT instead of MOZ_ASSERT to ensure test coverage in non-DEBUG - r=Waldo
...
find mfbt/tests/ -type f | xargs sed -i 's/MOZ_ASSERT/MOZ_RELEASE_ASSERT/g'
2014-04-24 17:06:50 -04:00
Luke Wagner
854107dda5
Bug 998507 - add BinarySearch (r=sunfish)
...
--HG--
extra : rebase_source : 6ba04575a5dd8a886235e6799bc790c7a3afc64f
2014-04-15 21:30:26 -05:00
Benoit Jacob
29c53bbc0b
Bug 987274 - Add IntegerTypeTraits.h to MFBT for additional integer traits and helpers that don't have type_traits equivalents - r=Waldo
2014-04-01 09:38:42 -04:00
Dan Gohman
6da0996731
Bug 978397 - Fix the implementation of CountPopulation_32 on Windows. r=nbp
2014-03-11 08:09:55 -04:00
Ehsan Akhgari
bf09c6f469
Bug 976896 - Port STL_FLAGS to moz.build; r=mshal
2014-03-04 19:39:06 -05:00
Benjamin Bouvier
f0e3f0c215
Bug 939843: Tests for mfbt::Floats; r=waldo
...
--HG--
extra : rebase_source : a6515f7d4e82e020fd7686f14932855873078813
2014-02-27 16:23:08 +01:00
Benjamin Bouvier
92bd6753fc
Bug 939843: Unify FloatingPoint's code for Double and Float; r=waldo
...
--HG--
extra : rebase_source : 2f7956d497d534af8931939a38a29ad27695a3fc
2014-01-30 15:54:46 +01:00
Ehsan Akhgari
ba02e1a367
Bug 935778 - Part 0.5: Add two more MOZ_DECLARE_REFCOUNTED_TYPENAME to TestWeakPtr.cpp
2014-02-21 09:45:05 -05:00
Ehsan Akhgari
b870bb3fe9
Bug 969757 - Remove the dead code in our tree which pretends to support OS/2; r=roc,mcmanus,gps,jorendorf,bsmedberg sr=bsmedberg
2014-02-10 17:57:01 -05:00
Viktor Stanchev
3d5e397bfe
Bug 965837 - Add bool support to mozilla::Atomic. r=froydnj
2014-02-06 14:57:30 -05:00
Kartikaya Gupta
2af12fb550
Bug 948984 - Add functions to fuzzily compare float numbers. r=bjacob, r=Waldo
2014-02-05 17:04:42 -05:00
Marcin Juszkiewicz
0ce0ec2548
Bug 963029 - AArch64 support for MFBT. r=froydnj
2014-01-23 16:34:31 -05:00
Jeff Walden
27874984d9
Bug 953296 - Implement mozilla::IsArray. r=froydnj
...
--HG--
extra : rebase_source : 3eb6fff774f28c39374f1e7c148f472d95e538c0
2013-12-30 01:07:32 -06:00
Jeff Walden
e8f647be21
Bug 953296 - Implement mozilla::IsRvalueReference and mozilla::IsReference. r=froydnj
...
--HG--
extra : rebase_source : 39cf8fa339f1ea640681fda0d0cda536e5228709
2013-12-30 01:07:25 -06:00
Jeff Walden
8127b4e199
Bug 953296 - Implement mozilla::IsClass and mozilla::IsEmpty. r=jcranmer
2013-12-30 01:07:39 -06:00
Daniel Holbert
9f875dcacc
Bug 945121: Use DebugOnly to fix opt-only 'unused variable' build warning in TestCeilingFloor.cpp. r=Waldo
2013-12-20 13:41:48 -08:00
Mike Hommey
9245936f8b
Bug 874266 - Move all DEFINES that can be moved to moz.build. r=mshal
2013-11-27 22:55:07 +09:00
Mike Hommey
2b828323f2
Backout changeset 3fd4b546eed4 (bug 874266) and changeset a35d2e3a872f (bug 942043) for ASAN build bustage and Windows test bustage
...
--HG--
extra : amend_source : f20d09aeff1c8b5cbd0f1d24c7ce04e86f3aed1d
2013-11-28 14:24:05 +09:00
Mike Hommey
d210f8ff00
Bug 874266 - Move all DEFINES that can be moved to moz.build. r=mshal
2013-11-28 13:08:16 +09:00
Anthony Jones
82d76badf0
Bug 888084 - Rolling mean for MFBT; r=waldo
2013-09-24 15:56:55 +12:00
Dan Gohman
c0da77c4d5
Bug 930708 - IonMonkey: Factor out a DoubleEqualsInt32 from DoubleIsInt32 and use it when negative zero is to be treated as zero. r=nbp
2013-11-02 14:29:44 -07:00
Mike Hommey
61124c1afc
Bug 921492 - Make StrictOrderingOnAppendList use actual alphabetical sorting. r=mshal,r=gps
2013-10-24 08:05:43 +09:00
Dan Gohman
5d9cc1f359
Bug 924637 - Document a somewhat counterintuitive case in ExponentComponent, and add test coverage for it. r=waldo
2013-10-09 06:41:42 -07:00
Birunthan Mohanathas
a3a95ea5c8
Bug 918436 - Make the type argument of MOZ_BEGIN(_NESTED)_ENUM_CLASS optional and add tests. r=Waldo
2013-10-04 13:17:13 -04:00
Dan Gohman
463a7c338e
Bug 918350 - SpiderMonkey: Remove js_NaN in favor of a new mozilla::GenericNaN() function. r=waldo
2013-09-19 18:42:56 -07:00
Mike Hommey
f1cf3b4238
Bug 912293 - Remove now redundant boilerplate from Makefile.in. r=gps
2013-09-05 09:01:46 +09:00
Jeff Walden
04c2468283
Bug 730805 - Provide mozilla/IntegerPrintfMacros.h to implement the PRI* macros portion of the <inttypes.h> interface. r=espindola
...
--HG--
extra : rebase_source : be80333003c6fec659e736a77463568c836d8348
2011-12-15 00:27:42 -05:00
Dan Gohman
2b1946d99c
Bug 910814 - IonMonkey: Add testcases for several FloatingPoint.h predicates. r=waldo
2013-09-02 13:53:35 -07:00
Dan Gohman
d928b6d48d
Bug 906368 - IonMonkey: Define a proper CountPopulation32 function, and use it in place of manual code in RegisterSets.h. r=nbp
2013-08-19 12:32:22 -07:00
Birunthan Mohanathas
63e7a796e9
Bug 888548 - Part 3: Add enum support to mozilla::Atomic<T>. r=froydnj
...
Due to a bug in GCC, the compareExchange function is not available with enum types.
2013-08-01 21:21:32 -04:00
Daniel Holbert
ec8488ab01
backout fc98067f0aa4 (Bug 888548 part 3) for B2G build bustage
2013-07-31 19:04:25 -07:00
Birunthan Mohanathas
46877a9f5e
Bug 888548 - Part 3: Add enum support to mozilla::Atomic<T>. r=froydnj
...
Due to a bug in GCC, the compareExchange function is not available with enum types.
2013-07-31 21:15:25 -04:00
Ehsan Akhgari
5ee21d6d3f
Bug 895322 - Part 1: Replace the usages of MOZ_STATIC_ASSERT with C++11 static_assert; r=Waldo
...
This patch was mostly generated by running the following scripts on the codebase, with some
manual changes made afterwards:
# static_assert.sh
#!/bin/bash
# Command to convert an NSPR integer type to the equivalent standard integer type
function convert() {
echo "Converting $1 to $2..."
find . ! -wholename "*nsprpub*" \
! -wholename "*security/nss*" \
! -wholename "*/.hg*" \
! -wholename "obj-ff-dbg*" \
! -name nsXPCOMCID.h \
! -name prtypes.h \
-type f \
\( -iname "*.cpp" \
-o -iname "*.h" \
-o -iname "*.cc" \
-o -iname "*.mm" \) | \
xargs -n 1 `dirname $0`/assert_replacer.py #sed -i -e "s/\b$1\b/$2/g"
}
convert MOZ_STATIC_ASSERT static_assert
hg rev --no-backup mfbt/Assertions.h \
media/webrtc/signaling/src/sipcc/core/includes/ccapi.h \
modules/libmar/src/mar_private.h \
modules/libmar/src/mar.h
# assert_replacer.py
#!/usr/bin/python
import sys
import re
pattern = re.compile(r"\bMOZ_STATIC_ASSERT\b")
def replaceInPlace(fname):
print fname
f = open(fname, "rw+")
lines = f.readlines()
for i in range(0, len(lines)):
while True:
index = re.search(pattern, lines[i])
if index != None:
index = index.start()
lines[i] = lines[i][0:index] + "static_assert" + lines[i][index+len("MOZ_STATIC_ASSERT"):]
for j in range(i + 1, len(lines)):
if lines[j].find(" ", index) == index:
lines[j] = lines[j][0:index] + lines[j][index+4:]
else:
break
else:
break
f.seek(0, 0)
f.truncate()
f.write("".join(lines))
f.close()
argc = len(sys.argv)
for i in range(1, argc):
replaceInPlace(sys.argv[i])
--HG--
extra : rebase_source : 4b4a4047d82f2c205b9fad8d56dfc3f1afc0b045
2013-07-18 13:59:53 -04:00
Ehsan Akhgari
9854ac6166
Bug 872127 - Part 2: Replace mozilla/StandardInteger.h with stdint.h; r=Waldo,ted
2013-07-30 10:25:31 -04:00
Jeff Walden
ffe50619f2
Bug 895792 - Fix RoundUpPow2's required precondition to not be wrong. r=terrence
...
--HG--
extra : rebase_source : e42420628dad8b8e9fe37287fa8e08eb262fe615
2013-07-25 20:01:45 -07:00
Birunthan Mohanathas
6593d6bb16
Bug 784739 - Switch from NULL to nullptr in mfbt/. r=jwalden
...
--HG--
extra : rebase_source : 090706fa9d97854fe3071adf037a09d914a0854f
2013-07-25 16:31:48 -07:00
Ryan VanderMeulen
4b5a38346d
Backed out 3 changesets (bug 896124, bug 784739, bug 894026) for Windows checktest orange on a CLOSED TREE.
...
Backed out changeset 631b3d5d54f4 (bug 896124)
Backed out changeset 5e1dd28ede5d (bug 894026)
Backed out changeset c10c0a6270ec (bug 784739)
2013-07-26 00:08:51 -04:00
Birunthan Mohanathas
2d66acc4f8
Bug 784739 - Switch from NULL to nullptr in mfbt/. r=jwalden
2013-07-25 16:31:48 -07:00
Ms2ger
fb6790e6d8
Bug 888643 - Part b: Move CPP_UNIT_TESTS definitions into moz.build files; r=gps
2013-07-24 09:23:06 +02:00
Jeff Walden
dc1be62488
Bug 896842 - Implement mozilla::DoublesAreIdentical. r=luke
2013-06-18 15:35:03 -07:00
Jeff Walden
5805e8a35e
Bug 891177 - Move leading/trailing-zero-bit counting functions, ceiling/floor log2 functions, and round-up-pow2 functions into MathAlgorithms.h. r=terrence
...
--HG--
extra : rebase_source : 8cfbd68b8cd4a0e21185dd864c7e827ccfa6b751
2013-07-03 15:46:51 -07:00
Jeff Walden
0e3369e148
Style fixes and proper-numeric-type usage in mfbt/tests/TestEndian.cpp. No bug, r=trivial
...
--HG--
extra : rebase_source : 54a658a6baf78852a3f8839b2cbb98700a7c91e7
2013-06-13 19:27:11 -07:00
Jeff Gilbert
cdca71e188
Bug 881980 - Allow casting CheckedInts to other CheckedInt types. - r=bjacob,waldo
2013-06-14 15:19:40 -07:00
Jeff Gilbert
bd9cabff89
Bug 874764 - Add CheckedInt support for operator%. - r=bjacob,waldo
2013-06-14 15:19:30 -07:00
Jeff Walden
641be4a773
Bug 798179 - Implement mozilla::MakeUnsigned. r=froydnj
...
--HG--
extra : rebase_source : fdd1fe8841d1bc42c1758cd4d477969b3f382b30
2013-03-05 15:44:02 -08:00
Jeff Walden
00e22e2821
Bug 798179 - Implement mozilla::MakeSigned. r=froydnj
...
--HG--
extra : rebase_source : 357bf046219e37959d66fde6b2ad2b7f5746960f
2013-03-05 15:44:02 -08:00
Jeff Walden
a77db60555
Bug 798179 - Implement To BitwiseCast<To>(From), abstracting the treatment of a value's bits as being of another type. r=froydnj
...
--HG--
extra : rebase_source : e6c57c10f7035b2654eafdd5fa2b3c5d8882f282
2013-06-06 18:47:51 -07:00
Justin Lebar
c52e5d4a3e
Bug 873800 - Add compare-and-exchange to mfbt/Atomics.h. r=froydnj
...
--HG--
extra : rebase_source : c9e455ed249e6b3cd0f532d240abfb602e2e88a8
2013-05-24 13:10:47 -04:00
Jeff Walden
d8bfd62d2e
Bug 873585 - Silence a vacuous-comparison-against-0 warning when compiling with gcc 4.5, at least. Also make IsSigned/IsUnsigned actually work on floating-point types. r=froydnj
...
--HG--
extra : rebase_source : 149695699ddb5cde3058a066785c2dc4c7c221e7
2013-05-17 11:07:02 -07:00
Nathan Froyd
803ce3d328
Bug 732043 - part 2 - add tests for mfbt/Atomics.h; r=Waldo; original-author=jcranmer
2013-04-25 15:10:38 -04:00
Benoit Jacob
dd563aab02
Bug 869685 - Reintroduce long long support in CheckedInt - r=Waldo
2013-05-08 17:25:03 -04:00
Mats Palmgren
401785134b
Bug 867530 - Move PresArena poisoning code to MFBT. r=roc
...
--HG--
rename : layout/base/tests/cpp-tests/TestPoisonArea.cpp => mfbt/tests/TestPoisonArea.cpp
2013-05-07 20:48:59 +02:00
Jeff Walden
f685a81f44
Bug 865036 - Add a Casting.h header to hold various casting methods, right now including a SafeCast method that asserts in-rangeness. r=froydnj
...
--HG--
extra : rebase_source : ef175e4c89d07cddbe866a40fc2ca521fa32c441
2013-04-23 14:36:51 -07:00
Nathan Froyd
7182225404
Bug 798172 - part 2 - add tests for mfbt/Endian.h; r=Waldo
2013-01-30 16:46:45 -05:00
Kyle Machulis
5aa83c3e11
Bug 855465 - Add emacs python mode comments to moz.build files; r=gps
2013-04-01 11:36:59 -07:00
Kyle Machulis
c79ccc0693
Backout for changeset 03452b187c14 (Bug 855465) due to bustage on a CLOSED TREE; r=qdot
2013-03-29 15:12:58 -07:00
Kyle Machulis
a59d40f143
Bug 855465 - Add emacs python mode comments to moz.build files; r=gps
...
--HG--
extra : rebase_source : 004a756492323e1a049586e85b3be5037159df20
2013-03-29 13:56:18 -07:00
Benoit Jacob
5015e3f471
Bug 849667 - Fix/simplify CheckedInt's use-outside-of-MFBT setup - r=Waldo
2013-03-12 15:40:29 -04:00
Jeff Walden
9c781ad1b2
Bug 849666 - Make CheckedInt<T>::operator-() not depend on undefined behavior when negating minimum signed values, and add a test for this. Patch is something of a tag-team effort by bjacob and me. r=bjacob
2013-03-11 18:45:22 -07:00
Jeff Walden
8c2403ba13
Bug 847521 - Allow CheckedInt<signed char> in addition to char/unsigned char. char != signed char (but is guaranteed to have the same representation as either signed char or unsigned char, for backwards-compatibility reasons), so we have to handle signed char as a third character type. r=bjacob
...
--HG--
rename : content/html/content/src/HTMLObjectElement.h => content/html/content/src/HTMLObjectElement.cpp
extra : rebase_source : d07d72b78fcbae31483d726703b3605561295684
2013-03-01 21:49:25 -08:00
Gregory Szorc
85e5647383
Bug 784841 - Part 18c: Convert /memory, /mfbt, /mozglue; r=ted f=Ms2ger
2013-02-25 12:47:17 -08:00
Anthony Jones
240d159624
Bug 793013 - Add EnumSet to replace 1 << n bit type bitfields. r=Waldo
2012-11-06 18:23:13 -05:00
Jacek Caban
874e8b2ffd
Bug 805773 - TestSHA1.exe fails to link on mingw r=espindola
2012-10-29 10:21:33 +01:00
Ehsan Akhgari
d1330c1949
Bug 802806 - Make mfbt's IsBaseOf work with multiple inheritance; r=Waldo
2012-10-17 17:37:53 -04:00
Jeff Walden
50aa5b0b82
Minor style nits in WeakPtr code forgotten by me when reviewing. No bug, r=sparky
...
--HG--
extra : rebase_source : e8b8071218c9280e970ba4525a3e8ebab729d4eb
2012-10-08 16:03:52 -07:00
Jeff Walden
dede03d303
Move TestBloomFilter out of XPCOM and into mfbt/tests, now that it exists. No bug, r=testingonlychange
...
--HG--
extra : rebase_source : 85a2a56bcc02bf122ee7fd21d16dffd534d1c98d
2012-10-03 17:09:59 -07:00
Jeff Walden
45fceaa15e
Bug 798634 - Style patrol on mfbt/SHA1.*. r=espindola
...
--HG--
extra : rebase_source : 7282b80ebe5f23b669a5f3142f3a6e50b6776789
2012-08-28 17:27:05 -07:00
Jeff Muizelaar
644f4e96df
Bug 792954. Add a WeakPtr implementation to use instead of nsISupportsWeakReference. r=joe,ehsan,Waldo
...
This patch also replaces the usage of nsISupportsWeakReference in RasterImage as an example.
--HG--
extra : rebase_source : ac6a039dcc3227a04ac4c2221f38856bb308c695
2012-10-04 15:45:07 -04:00
Rafael Ávila de Espíndola
8f3f5d21c4
Bug 781627 - Copy security/nss/lib/freebl/sha_fast.c to mfbt. r=jlebar.
2012-08-20 15:01:55 -04:00
Mike Hommey
6173fa297f
Bug 774032 bonus - Use @DEPTH@ and @relativesrcdir@ in Makefile.in. r=ted
2012-08-04 20:26:44 +02:00
Benoit Jacob
32979f1189
Bug 768570 - Fix all the warnings in CheckedInt - r=jwalden
2012-07-05 10:13:31 -04:00
Benoit Jacob
6aada1fe80
Bug 768538 - 2/2 - Fix undefined behavior in the CheckedInt unit test - r=jwalden
2012-07-05 10:13:23 -04:00
Jeff Walden
dfad117b73
Bug 766347 - Implement mozilla::IsConvertible to detect when a value of one type will convert to a value of another type. r=luke
...
--HG--
extra : rebase_source : d25c1b84dfc928a0bc4dcfb43e31b6035882849e
2012-06-19 13:55:23 -07:00
Benoit Jacob
e3c11e3704
Bug 732875 - Further CheckedInt tweaks - r=Ms2ger,jwalden
2012-05-17 10:07:24 -04:00
Dão Gottwald
c17d4c6865
Backed out changeset 45ef0e7b2426
2012-05-17 16:48:06 +02:00
Benoit Jacob
5bd712711d
Bug 732875 - Further CheckedInt tweaks - r=Ms2ger,jwalden
2012-05-17 10:07:24 -04:00
Benoit Jacob
17b0e7f92d
Bug 732875 - 8/8 - move CheckedInt to MFBT, enable unit tests in mfbt/tests - r=jwalden
...
--HG--
rename : xpcom/ds/CheckedInt.h => mfbt/CheckedInt.h
2012-05-14 15:50:20 -04:00
Ed Morley
8b2dbc3dca
Backout 345ae68f15f4, b3b40121ac8d, 0d18b7a246d7, 9dbb6064ab58, dee9d7fa8eb6, 63eec6bfa948, 323c6be7cfe8 & f4aac7523a48 (bug 732875) for compilation failures
2012-05-14 21:05:24 +01:00
Benoit Jacob
8fbc0a34da
Bug 732875 - 8/8 - move CheckedInt to MFBT, enable unit tests in mfbt/tests - r=jwalden
...
--HG--
rename : xpcom/ds/CheckedInt.h => mfbt/CheckedInt.h
2012-05-14 15:50:20 -04:00