์ฃผ์ ์๋ฐ API๋ฅผ C++ ์ฝ๋๋ก ๋ฐ๊ฟ๋ณด๊ธฐ.
civa.CivaDef ¶
~cpp
#ifndef CIVA_CIVADEF_INCLUDED
#define CIVA_CIVADEF_INCLUDED
#include <boost/smart_ptr.hpp>
namespace civa { namespace io {
using boost::shared_ptr;
class Serializable;
typedef shared_ptr<Serializable> Serializable_Handle;
}} // namespace civa::io
namespace civa { namespace lang {
using boost::shared_ptr;
template<typename ElementType> class Array;
//#define Array_Handle(ElementType) boost::shared_ptr< civa::lang::Array<ElementType> >
//template<typename ElementType> typedef shared_ptr< Array<ElementType> > Array_Handle;
typedef shared_ptr< Array<char> > charArray_Handle;
class CharSequence;
typedef shared_ptr<CharSequence> CharSequence_Handle;
class Comparable;
typedef shared_ptr<Comparable> Comparable_Handle;
class Object;
typedef shared_ptr<Object> Object_Handle;
class String;
typedef shared_ptr<String> String_Handle;
}} // namespace civa::lang
#endif // CIVA_CIVADEF_INCLUDED
๋ถ์ & ์ก๋ด ¶
- ํด๋์ค๋ค์ด ์๋ก ๋ง๋ฌผ๋ ค์ ๊ฒฐ๊ตญ ๋ฐ๋ก ๋นผ๊ฒ ๋์๊ตฐ.
- ํ๋ผ๋ฉํฐ๋ผ์ด์ฆ typedef ์ ์ปดํ์ผ์ด ์๋๋ค.. ์ผ์ผ Array ์ธ๋ ๊ธธ๊ฒ ๋ค ์จ์ค์ผํ๋..
- ๋งคํฌ๋ก๋ ์ฐ๊ธฐ ์ซ์๋ฐ.
civa.io.Serializable ¶
~cpp
#ifndef CIVA_IO_SERIALIZABLE_INCLUDED
#define CIVA_IO_SERIALIZABLE_INCLUDED
#include "../lang/Object.h"
namespace civa { namespace io {
class Serializable {
};
}} // namespace civa::io
#endif // CIVA_IO_SERIALIZABLE_INCLUDED
๋ถ์ & ์ก๋ด ¶
- ์ธ์คํด์ค ์์ฑ ๋ชปํ๊ฒ ๋ง์์ค์ผ ํ๋.
civa.lang.Array ¶
~cpp
#ifndef CIVA_LANG_ARRAY_INCLUDED
#define CIVA_LANG_ARRAY_INCLUDED
#include "Object.h"
namespace civa { namespace lang {
template<typename ElementType>
class Array : public Object {
private:
ElementType* values;
int length;
public:
Array(int length) throw() : length(length) {
// ๋ฐ์ด๋ ์ฒดํฌ.
values = new ElementType[length];
}
Array(ElementType newValues[]) {
// ๋ฐฐ์ด์ ํฌ๊ธฐ๊ฐ ์ด๊ฒ ๋ง๋...
length = sizeof(newValues) / sizeof(ElementType);
values = new ElementType[length];
for (index = 0; index < length; index++) {
values[index] = newValuse[index];
}
}
ElementType operator[] (int index) throw() {
// ๋ฐ์ด๋ ์ฒดํฌ.
return values[index];
}
const ElementType operator[] (int index) const throw() {
// ๋ฐ์ด๋ ์ฒดํฌ.
return values[index];
}
size_t getLength() {
return length;
}
public:
~Array() {
delete[] values;
}
};
}} // namespace civa::lang
#endif // CIVA_LANG_ARRAY_INCLUDED
๋ถ์ & ์ก๋ด ¶
- ๋ฐ์ด๋ ์ฒดํฌํด์ ์ต์
์
๋์ง๋๊ฑฐ ํด์ผํ๊ณ ,
- ๋ฐฐ์ด์ ํฌ๊ธฐ ์์๋ด๋ ๋ฒ ์กฐ์ฌ.
civa.lang.CharSequence ¶
~cpp
#ifndef CIVA_LANG_CHARSEQUENCE_INCLUDED
#define CIVA_LANG_CHARSEQUENCET_INCLUDED
#include "Object.h"
namespace civa { namespace lang {
class CharSequence {
public:
virtual int length() = NULL;
virtual char charAt(int index) = NULL;
virtual CharSequence_Handle subSequence(int start, int end) = NULL;
virtual String_Handle toString() = NULL;
};
}} // namespace civa::lang
#endif // CIVA_LANG_CHARSEQUENCET_INCLUDED
๋ถ์ & ์ก๋ด ¶
- ์ถ์ํด๋์ค๋ ์ธ์คํด์ค๋ ์์ฑ ์๋๊ฒ ๊ตฐ.
civa.lang.Comparable ¶
~cpp
#ifndef CIVA_LANG_COMPARABLE_INCLUDED
#define CIVA_LANG_COMPARABLE_INCLUDED
#include "Object.h"
namespace civa { namespace lang {
class Comparable {
public:
virtual int compareTo(Object o) = NULL;
};
}} // namespace civa::lang
#endif // CIVA_LANG_COMPARABLE_INCLUDED
๋ถ์ & ์ก๋ด ¶
civa.lang.Object ¶
~cpp
#ifndef CIVA_LANG_OBJECT_INCLUDED
#define CIVA_LANG_OBJECT_INCLUDED
#include "../CivaDef.h"
namespace civa { namespace lang {
class Object {
public:
void getClass() {/*์ฐจํ ์ถ๊ฐ Class getClass()*/}
virtual int getHashCode() {
return reinterpret_cast<int>(this);
}
virtual bool equals(Object_Handle obj) {
return (this == obj.get());
}
virtual String_Handle toString() {
/*์ฐจํ ์ถ๊ฐ*/
//return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
void notify() {/*์ฐจํ ์ถ๊ฐ*/}
void notifyAll() {/*์ฐจํ ์ถ๊ฐ*/}
void wait(long timeout) throw() {/*์ฐจํ ์ถ๊ฐ*/} //InterruptedException
void wait(long timeout, int nanos) throw() { //InterruptedException
if (timeout < 0) {
throw ;//new IllegalArgumentException("timeout value is negative");
}
if (nanos < 0 || nanos > 999999) {
throw ;//new IllegalArgumentException("nanosecond timeout value out of range");
}
if (nanos >= 500000 || (nanos != 0 && timeout == 0)) {
timeout++;
}
wait(timeout);
}
void wait() throw() { //InterruptedException
wait(0);
}
protected:
virtual Object_Handle clone() throw() {
throw ; //CloneNotSupportedException
//์ผ์. ํด๋ก ์์ด๋ธ ์ธํฐํ์ด์ค ๊ตฌํ์ฌ๋ถ๋ฅผ ์ด๋ป๊ฒ ํ๋จํ์ง -_-;;
return Object_Handle(new Object(*this));
}
virtual void finalize() throw() {/*์๋ฌด๊ฒ๋ ์ํจ*/ } //Throwable
public:
virtual ~Object() {}
};
}} // namespace civa::lang
#endif // CIVA_LANG_OBJECT_INCLUDED
๋ถ์ & ์ก๋ด ¶
- ์ผ๋จ ์์... ๋ฉํฐ์ฐ๋ ๋ ๊ด๋ จ ๋ฉ์๋์ ํด๋์ค๋ ๋ชปํ ๋ฏ. ๊ณผ์ฐ ์ด๋๊น์ง ํ ๋ผ๋...
- wait ๋ฉ์๋์ ์ ์ฌ๊ธฐ ๋๋
ธ์ธ์ปจ์ ๋ณด๋ผ.
์ ๋ง๋ ๊ฑฐ์ง, ๋ฏธ๋์ ๋๋น์ธ๊ฐ...
- C++ ์์ throw ํ์
์ ๊ณ ์ ์ํฌ ์ ์๋...
- ๋ฉ์๋ ์ค๋ฒ๋ผ์ด๋ฉ ๊ธ์ง ์ํฌ ์ ์๋..
civa.lang.String ¶
~cpp
#ifndef CIVA_LANG_STRING_INCLUDED
#define CIVA_LANG_STRING_INCLUDED
#include "Object.h"
#include "../io/Serializable.h"
#include "Comparable.h"
#include "CharSequence.h"
#include "Array.h"
namespace civa { namespace lang {
class String
: public Object, civa::io::Serializable, Comparable, CharSequence {
private:
/** The value is used for character storage. */
charArray_Handle value;
/** The offset is the first index of the storage that is used. */
int offset;
/** The count is the number of characters in the String. */
int count;
/** Cache the hash code for the string */
int hash;
public:
String() : hash(0) {
value = charArray_Handle(new Array<char>(0));
}
};
}} // namespace civa::lang
#endif // CIVA_LANG_STRING_INCLUDED









