Add Phobos sample

This commit is contained in:
flithm 2007-08-28 11:37:16 +00:00
parent c4d592f337
commit 69f0cfbaba
9 changed files with 84 additions and 116 deletions

View file

@ -0,0 +1,30 @@
#################################
# Preamble
##############
# where to look first for cmake modules, before ${CMAKE_ROOT}/Modules/
# is checked
set(CMAKE_MODULE_PATH
${CMAKE_SOURCE_DIR}/cmake/Modules
)
# Using Tango
set(CMAKE_D_USE_PHOBOS True)
# check for DDoc usage
include(UseDDoc)
#################################
# Project
##############
# The name of our project is "HELLO". CMakeLists files in this project can
# refer to the root source directory of the project as ${HELLO_SOURCE_DIR} and
# to the root binary directory of the project as ${HELLO_BINARY_DIR}.
PROJECT (HELLO D)
# Recurse into the "Hello" and "Demo" subdirectories. This does not actually
# cause another cmake executable to run. The same process will walk through
# the project's entire directory structure.
ADD_SUBDIRECTORY (Hello)
ADD_SUBDIRECTORY (Demo)

View file

@ -0,0 +1,21 @@
# Make sure the compiler can find include files from our Hello library.
INCLUDE_DIRECTORIES (
${CMAKE_BINARY_DIR}
${CMAKE_SOURCE_DIR}
)
# Make sure the linker can find the Hello library once it is built.
LINK_DIRECTORIES (
${HELLO_BINARY_DIR}/Hello
)
# Add executable called "helloDemo" that is built from the source files
# "demo.cxx" and "demo_b.cxx". The extensions are automatically found.
ADD_EXECUTABLE (helloDemo
demo.d
)
# Link the executable to the Hello library.
TARGET_LINK_LIBRARIES (helloDemo
Hello
)

View file

@ -0,0 +1,9 @@
import Hello.hello;
int main()
{
Hail hello = new Hail();
hello.Print();
return 0;
}

View file

@ -0,0 +1,8 @@
include_directories(
${CMAKE_BINARY_DIR}
${CMAKE_SOURCE_DIR}
)
# Create a library called "Hello" which includes the source file "hello.cxx".
# The extension is already found. Any number of sources could be listed here.
ADD_LIBRARY (Hello hello.d)

View file

@ -0,0 +1,14 @@
module Hello.hello;
import std.stdio;
class Hail
{
public:
void Print()
{
writefln ("Hello, World!");
}
}

View file

@ -0,0 +1 @@
../../../cmaked/

View file

@ -0,0 +1 @@
../../../cmaked/

View file

@ -1,3 +0,0 @@
PROJECT(wc D)
ADD_EXECUTABLE(wc wc.d)

View file

@ -1,113 +0,0 @@
import std.stdio;
import std.stream;
int main (char[][] args)
{
int w_total;
int l_total;
ulong c_total;
int[char[]] dictionary;
writefln(" lines words bytes file");
foreach (arg; args[1 .. args.length])
{
int w_cnt, l_cnt;
bool inword;
auto c_cnt = std.file.getSize(arg);
if (c_cnt < 10_000_000)
{
size_t wstart;
auto input = cast(char[])std.file.read(arg);
foreach (j, c; input)
{
if (c == '\n')
++l_cnt;
if (c >= '0' && c <= '9')
{
}
else if (c >= 'a' && c <= 'z' ||
c >= 'A' && c <= 'Z')
{
if (!inword)
{
wstart = j;
inword = true;
++w_cnt;
}
}
else if (inword)
{ auto word = input[wstart .. j];
dictionary[word]++;
inword = false;
}
}
if (inword)
{ auto w = input[wstart .. input.length];
dictionary[w]++;
}
}
else
{
auto f = new BufferedFile(arg);
char[] buf;
while (!f.eof())
{ char c;
f.read(c);
if (c == '\n')
++l_cnt;
if (c >= '0' && c <= '9')
{
if (inword)
buf ~= c;
}
else if (c >= 'a' && c <= 'z' ||
c >= 'A' && c <= 'Z')
{
if (!inword)
{
buf.length = 1;
buf[0] = c;
inword = 1;
++w_cnt;
}
else
buf ~= c;
}
else if (inword)
{
if (++dictionary[buf] == 1)
buf = null;
inword = 0;
}
}
if (inword)
{
dictionary[buf]++;
}
}
writefln("%8s%8s%8s %s\n", l_cnt, w_cnt, c_cnt, arg);
l_total += l_cnt;
w_total += w_cnt;
c_total += c_cnt;
}
if (args.length > 2)
{
writefln("--------------------------------------\n%8s%8s%8s
total",
l_total, w_total, c_total);
}
writefln("--------------------------------------");
foreach (word1; dictionary.keys.sort)
{
writefln("%3s %s", dictionary[word1], word1);
}
return 0;
}