μ£Όμ μλ° 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