From: Ken Dyck Date: Fri, 18 Dec 2009 21:51:03 +0000 (+0000) Subject: Add and tidy doxygen comments and move implementation of toString() to newly X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c3c90b25cf321d851314f0f19f67e9a00df0da0d;p=clang Add and tidy doxygen comments and move implementation of toString() to newly created CharUnits.cpp. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91719 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/AST/CharUnits.h b/include/clang/AST/CharUnits.h index 57d457f892..c0290765b6 100644 --- a/include/clang/AST/CharUnits.h +++ b/include/clang/AST/CharUnits.h @@ -14,13 +14,28 @@ #ifndef LLVM_CLANG_AST_CHARUNITS_H #define LLVM_CLANG_AST_CHARUNITS_H -#include "llvm/ADT/StringExtras.h" #include "llvm/System/DataTypes.h" #include namespace clang { - // An opaque type for sizes expressed in character units + + /// CharUnits - This is an opaque type for sizes expressed in character units. + /// Instances of this type represent a quantity as a multiple of the size + /// of the standard C type, char, on the target architecture. As an opaque + /// type, CharUnits protects you from accidentally combining operations on + /// quantities in bit units and character units. + /// + /// It should be noted that characters and bytes are distinct concepts. Bytes + /// refer to addressable units of data storage on the target machine, and + /// characters are members of a set of elements used for the organization, + /// control, or representation of data. According to C99, bytes are allowed + /// to exceed characters in size, although currently, clang only supports + /// architectures where the two are the same size. + /// + /// For portability, never assume that a target character is 8 bits wide. Use + /// CharUnit values whereever you calculate sizes, offsets, or alignments + /// in character units. class CharUnits { public: typedef int64_t RawType; @@ -32,15 +47,15 @@ namespace clang { public: - /// A default constructor + /// CharUnits - A default constructor. CharUnits() : Quantity(0) {} - /// Zero - Construct a CharUnits quantity of zero + /// Zero - Construct a CharUnits quantity of zero. static CharUnits Zero() { return CharUnits(0); } - /// One - Construct a CharUnits quantity of one + /// One - Construct a CharUnits quantity of one. static CharUnits One() { return CharUnits(1); } @@ -50,7 +65,7 @@ namespace clang { return CharUnits(Quantity); } - // compound assignment + // Compound assignment. CharUnits& operator+= (const CharUnits &Other) { Quantity += Other.Quantity; return *this; @@ -60,7 +75,7 @@ namespace clang { return *this; } - // comparison operators + // Comparison operators. bool operator== (const CharUnits &Other) const { return Quantity == Other.Quantity; } @@ -68,7 +83,7 @@ namespace clang { return Quantity != Other.Quantity; } - // relational operators + // Relational operators. bool operator< (const CharUnits &Other) const { return Quantity < Other.Quantity; } @@ -82,7 +97,7 @@ namespace clang { return Quantity >= Other.Quantity; } - // other predicates + // Other predicates. /// isZero - Test whether the quantity equals zero. bool isZero() const { return Quantity == 0; } @@ -96,7 +111,7 @@ namespace clang { /// isNegative - Test whether the quantity is less than zero. bool isNegative() const { return Quantity < 0; } - // arithmetic operators + // Arithmetic operators. CharUnits operator* (RawType N) const { return CharUnits(Quantity * N); } @@ -119,12 +134,10 @@ namespace clang { return CharUnits(Quantity - Other.Quantity); } - // conversions + // Conversions. /// toString - Convert to a string. - std::string toString() const { - return llvm::itostr(Quantity); - } + std::string toString() const; /// getRaw - Get the raw integer representation of this quantity. RawType getRaw() const { return Quantity; } diff --git a/lib/AST/CMakeLists.txt b/lib/AST/CMakeLists.txt index 5aecf878c9..98880b5f77 100644 --- a/lib/AST/CMakeLists.txt +++ b/lib/AST/CMakeLists.txt @@ -5,6 +5,7 @@ add_clang_library(clangAST ASTConsumer.cpp ASTContext.cpp CXXInheritance.cpp + CharUnits.cpp Decl.cpp DeclBase.cpp DeclCXX.cpp diff --git a/lib/AST/CharUnits.cpp b/lib/AST/CharUnits.cpp new file mode 100644 index 0000000000..4886cffbbc --- /dev/null +++ b/lib/AST/CharUnits.cpp @@ -0,0 +1,24 @@ +//===--- CharUnits.cpp - Character units for sizes and offsets ------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// This file implements the CharUnits class. +// +//===----------------------------------------------------------------------===// + +#include "clang/AST/CharUnits.h" + +#include "llvm/ADT/StringExtras.h" + +#include + +using namespace clang; + +std::string CharUnits::toString() const { + return llvm::itostr(Quantity); +}