You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
_xeroxz 095f1b17d0
init commit
3 years ago
..
Unix init commit 3 years ago
Windows init commit 3 years ago
APFloat.cpp init commit 3 years ago
APInt.cpp init commit 3 years ago
APSInt.cpp init commit 3 years ago
ARMBuildAttrs.cpp init commit 3 years ago
CMakeLists.txt init commit 3 years ago
COPYRIGHT.regex init commit 3 years ago
ErrorHandling.cpp init commit 3 years ago
Hashing.cpp init commit 3 years ago
IntEqClasses.cpp init commit 3 years ago
LEB128.cpp init commit 3 years ago
LLVMBuild.txt init commit 3 years ago
Memory.cpp init commit 3 years ago
MemoryBuffer.cpp init commit 3 years ago
Path.cpp init commit 3 years ago
README.txt.system init commit 3 years ago
Regex.cpp init commit 3 years ago
ScaledNumber.cpp init commit 3 years ago
SmallPtrSet.cpp init commit 3 years ago
SmallVector.cpp init commit 3 years ago
SourceMgr.cpp init commit 3 years ago
StringExtras.cpp init commit 3 years ago
StringMap.cpp init commit 3 years ago
StringPool.cpp init commit 3 years ago
StringRef.cpp init commit 3 years ago
StringSaver.cpp init commit 3 years ago
TargetParser.cpp init commit 3 years ago
TargetRegistry.cpp init commit 3 years ago
Triple.cpp init commit 3 years ago
Twine.cpp init commit 3 years ago
raw_ostream.cpp init commit 3 years ago
regcclass.h init commit 3 years ago
regcname.h init commit 3 years ago
regcomp.c init commit 3 years ago
regengine.inc init commit 3 years ago
regerror.c init commit 3 years ago
regex2.h init commit 3 years ago
regex_impl.h init commit 3 years ago
regexec.c init commit 3 years ago
regfree.c init commit 3 years ago
regstrlcpy.c init commit 3 years ago
regutils.h init commit 3 years ago

README.txt.system

Design Of lib/System
====================

The software in this directory is designed to completely shield LLVM from any
and all operating system specific functionality. It is not intended to be a
complete operating system wrapper (such as ACE), but only to provide the
functionality necessary to support LLVM.

The software located here, of necessity, has very specific and stringent design
rules. Violation of these rules means that cracks in the shield could form and
the primary goal of the library is defeated. By consistently using this library,
LLVM becomes more easily ported to new platforms since the only thing requiring
porting is this library.

Complete documentation for the library can be found in the file:
llvm/docs/SystemLibrary.html
or at this URL:
http://llvm.org/docs/SystemLibrary.html

While we recommend that you read the more detailed documentation, for the
impatient, here's a high level summary of the library's requirements.

1. No system header files are to be exposed through the interface.
2. Std C++ and Std C header files are okay to be exposed through the interface.
3. No exposed system-specific functions.
4. No exposed system-specific data.
5. Data in lib/System classes must use only simple C++ intrinsic types.
6. Errors are handled by returning "true" and setting an optional std::string
7. Library must not throw any exceptions, period.
8. Interface functions must not have throw() specifications.
9. No duplicate function impementations are permitted within an operating
system class.

To accomplish these requirements, the library has numerous design criteria that
must be satisfied. Here's a high level summary of the library's design criteria:

1. No unused functionality (only what LLVM needs)
2. High-Level Interfaces
3. Use Opaque Classes
4. Common Implementations
5. Multiple Implementations
6. Minimize Memory Allocation
7. No Virtual Methods