// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
@@ -11,28 +11,59 @@ declare module "samchon-framework"
}
/**
- * Samchon Framework, A SDN framework.
+ * Samchon-Framework
*
+ *
+ *
+ *
+ * Samchon, a SDN (Software Defined Network) framework.
+ *
+ * With Samchon Framework, you can implement distributed processing system within framework of OOD like
+ * handling S/W objects (classes). You can realize cloud and distributed system very easily with provided
+ * system templates and even integration with C++ is possible.
+ *
+ * The goal, ultimate utilization model of Samchon Framework is, building cloud system with NodeJS and
+ * takING heavy works to C++ distributed systems with provided modules (those are system templates).
+ *
+ * @git https://github.com/samchon/framework
* @author Jeongho Nam
*/
declare namespace samchon {
-}
-declare namespace samchon.library {
-}
-declare namespace samchon.collection {
-}
-declare namespace samchon.protocol {
-}
-declare namespace samchon.protocol.service {
-}
-declare namespace samchon.protocol.master {
-}
-declare namespace samchon.protocol.slave {
+ /**
+ * Running on Node.
+ *
+ * Test whether the JavaScript is running on Node.
+ *
+ * @references http://stackoverflow.com/questions/17575790/environment-detection-node-js-or-browser
+ */
+ function is_node(): boolean;
}
declare namespace samchon.collection {
/**
* A {@link Vector} who can detect element I/O events.
*
+ *
+ * - insert typed events:
+ * - {@link assign}
+ * - {@link insert}
+ * - {@link push}
+ * - {@link push_back}
+ * - {@link unshift}
+ *
+ * - erase typed events:
+ * - {@link assign}
+ * - {@link clear}
+ * - {@link erase}
+ * - {@link pop_back}
+ * - {@link shift}
+ * - {@link pop}
+ * - {@link splice}
+ *
+ * - erase typed events:
+ *
+ *
* @author Jeongho Nam
*/
class ArrayCollection extends std.Vector implements ICollection {
@@ -80,38 +111,46 @@ declare namespace samchon.collection {
* @inheritdoc
*/
dispatchEvent(event: Event): boolean;
+ /**
+ * @inheritdoc
+ */
+ refresh(): void;
+ /**
+ * @inheritdoc
+ */
+ refresh(it: std.VectorIterator): void;
+ /**
+ * @inheritdoc
+ */
+ refresh(first: std.VectorIterator, last: std.VectorIterator): void;
/**
* @inheritdoc
*/
addEventListener(type: string, listener: EventListener): void;
+ addEventListener(type: "insert", listener: CollectionEventListener): void;
+ addEventListener(type: "erase", listener: CollectionEventListener): void;
+ addEventListener(type: "refresh", listener: CollectionEventListener): void;
/**
* @inheritdoc
*/
addEventListener(type: string, listener: EventListener, thisArg: Object): void;
- /**
- * @inheritdoc
- */
- addEventListener(type: "insert" | "erase", listener: CollectionEventListener): void;
- /**
- * @inheritdoc
- */
- addEventListener(type: "insert" | "erase", listener: CollectionEventListener, thisArg: Object): void;
+ addEventListener(type: "insert", listener: CollectionEventListener, thisArg: Object): void;
+ addEventListener(type: "erase", listener: CollectionEventListener, thisArg: Object): void;
+ addEventListener(type: "refresh", listener: CollectionEventListener, thisArg: Object): void;
/**
* @inheritdoc
*/
removeEventListener(type: string, listener: EventListener): void;
+ removeEventListener(type: "insert", listener: CollectionEventListener): void;
+ removeEventListener(type: "erase", listener: CollectionEventListener): void;
+ removeEventListener(type: "refresh", listener: CollectionEventListener): void;
/**
* @inheritdoc
*/
removeEventListener(type: string, listener: EventListener, thisArg: Object): void;
- /**
- * @inheritdoc
- */
- removeEventListener(type: "insert" | "erase", listener: CollectionEventListener): void;
- /**
- * @inheritdoc
- */
- removeEventListener(type: "insert" | "erase", listener: CollectionEventListener, thisArg: Object): void;
+ removeEventListener(type: "insert", listener: CollectionEventListener, thisArg: Object): void;
+ removeEventListener(type: "erase", listener: CollectionEventListener, thisArg: Object): void;
+ removeEventListener(type: "refresh", listener: CollectionEventListener, thisArg: Object): void;
/**
* @inheritdoc
*/
@@ -132,12 +171,9 @@ declare namespace samchon.collection {
}
declare namespace samchon.library {
/**
- * An event class.
- *
- *
- * - Comments from - https://developer.mozilla.org/en-US/docs/Web/API/Event/
- *
+ * A basic event class of Samchon Framework.
*
+ * @reference https://developer.mozilla.org/en-US/docs/Web/API/Event
* @author Jeongho Nam
*/
class BasicEvent implements Event {
@@ -231,51 +267,78 @@ declare namespace samchon.library {
}
declare namespace samchon.collection {
/**
- * Type of function pointer for {@link CollectionEvent CollectionEvents}.
+ * Type of function pointer for listener of {@link CollectionEvent CollectionEvents}.
*/
interface CollectionEventListener extends EventListener {
(event: CollectionEvent): void;
}
+}
+declare namespace samchon.collection {
/**
- *
+ * @author Jeongho Nam
*/
class CollectionEvent extends library.BasicEvent {
- static INSERT: string;
- static ERASE: string;
/**
- *
+ * @hidden
*/
private first_;
/**
- *
+ * @hidden
*/
private last_;
/**
+ * Initialization Constructor.
*
- *
- * @param type
+ * @param type Type of collection event.
* @param first
* @param last
*/
constructor(type: string, first: std.Iterator, last: std.Iterator);
+ constructor(type: "insert", first: std.Iterator, last: std.Iterator);
+ constructor(type: "erase", first: std.Iterator, last: std.Iterator);
+ constructor(type: "refresh", first: std.Iterator, last: std.Iterator);
/**
- *
+ * Get associative container.
*/
container: ICollection;
/**
- *
+ * Get range of the first.
*/
first: std.Iterator;
/**
- *
+ * Get range of the last.
*/
last: std.Iterator;
}
}
+declare namespace samchon.collection.CollectionEvent {
+ const INSERT: string;
+ const ERASE: string;
+ const REFRESH: string;
+}
declare namespace samchon.collection {
/**
* A {@link Deque} who can detect element I/O events.
*
+ * Below are list of methods who are dispatching {@link CollectionEvent}:
+ *
+ *
+ * - insert typed events:
+ * - {@link assign}
+ * - {@link insert}
+ * - {@link push}
+ * - {@link push_front}
+ * - {@link push_back}
+ *
+ * - erase typed events:
+ * - {@link assign}
+ * - {@link clear}
+ * - {@link erase}
+ * - {@link pop_front}
+ * - {@link pop_back}
+ *
+ *
+ *
* @author Jeongho Nam
*/
class DequeCollection extends std.Deque implements ICollection {
@@ -323,44 +386,72 @@ declare namespace samchon.collection {
* @inheritdoc
*/
dispatchEvent(event: Event): boolean;
+ /**
+ * @inheritdoc
+ */
+ refresh(): void;
+ /**
+ * @inheritdoc
+ */
+ refresh(it: std.DequeIterator): void;
+ /**
+ * @inheritdoc
+ */
+ refresh(first: std.DequeIterator, last: std.DequeIterator): void;
/**
* @inheritdoc
*/
addEventListener(type: string, listener: EventListener): void;
+ addEventListener(type: "insert", listener: CollectionEventListener): void;
+ addEventListener(type: "erase", listener: CollectionEventListener): void;
+ addEventListener(type: "refresh", listener: CollectionEventListener): void;
/**
* @inheritdoc
*/
addEventListener(type: string, listener: EventListener, thisArg: Object): void;
- /**
- * @inheritdoc
- */
- addEventListener(type: "insert" | "erase", listener: CollectionEventListener): void;
- /**
- * @inheritdoc
- */
- addEventListener(type: "insert" | "erase", listener: CollectionEventListener, thisArg: Object): void;
+ addEventListener(type: "insert", listener: CollectionEventListener, thisArg: Object): void;
+ addEventListener(type: "erase", listener: CollectionEventListener, thisArg: Object): void;
+ addEventListener(type: "refresh", listener: CollectionEventListener, thisArg: Object): void;
/**
* @inheritdoc
*/
removeEventListener(type: string, listener: EventListener): void;
+ removeEventListener(type: "insert", listener: CollectionEventListener): void;
+ removeEventListener(type: "erase", listener: CollectionEventListener): void;
+ removeEventListener(type: "refresh", listener: CollectionEventListener): void;
/**
* @inheritdoc
*/
removeEventListener(type: string, listener: EventListener, thisArg: Object): void;
- /**
- * @inheritdoc
- */
- removeEventListener(type: "insert" | "erase", listener: CollectionEventListener): void;
- /**
- * @inheritdoc
- */
- removeEventListener(type: "insert" | "erase", listener: CollectionEventListener, thisArg: Object): void;
+ removeEventListener(type: "insert", listener: CollectionEventListener, thisArg: Object): void;
+ removeEventListener(type: "erase", listener: CollectionEventListener, thisArg: Object): void;
+ removeEventListener(type: "refresh", listener: CollectionEventListener, thisArg: Object): void;
}
}
declare namespace samchon.collection {
/**
* A {@link HashMap} who can detect element I/O events.
*
+ *
+ * - insert typed events:
+ * - {@link assign}
+ * - {@link insert}
+ * - {@link push}
+ * - {@link set}
+ * - {@link insert_or_assign}
+ *
+ * - erase typed events:
+ * - {@link assign}
+ * - {@link clear}
+ * - {@link erase}
+ * - {@link extract}
+ *
+ * - refresh typed events:
+ * - {@link set}
+ * - {@link insert_or_assign}
+ *
+ *
+ *
* @author Jeongho Nam
*/
class HashMapCollection extends std.HashMap implements ICollection> {
@@ -384,42 +475,65 @@ declare namespace samchon.collection {
* @inheritdoc
*/
dispatchEvent(event: Event): boolean;
+ /**
+ * @inheritdoc
+ */
+ refresh(): void;
+ /**
+ * @inheritdoc
+ */
+ refresh(it: std.MapIterator): void;
+ /**
+ * @inheritdoc
+ */
+ refresh(first: std.MapIterator, last: std.MapIterator): void;
/**
* @inheritdoc
*/
addEventListener(type: string, listener: EventListener): void;
+ addEventListener(type: "insert", listener: CollectionEventListener>): void;
+ addEventListener(type: "erase", listener: CollectionEventListener>): void;
+ addEventListener(type: "refresh", listener: CollectionEventListener>): void;
/**
* @inheritdoc
*/
addEventListener(type: string, listener: EventListener, thisArg: Object): void;
- /**
- * @inheritdoc
- */
- addEventListener(type: "insert" | "erase", listener: CollectionEventListener): void;
- /**
- * @inheritdoc
- */
- addEventListener(type: "insert" | "erase", listener: CollectionEventListener, thisArg: Object): void;
+ addEventListener(type: "insert", listener: CollectionEventListener>, thisArg: Object): void;
+ addEventListener(type: "erase", listener: CollectionEventListener>, thisArg: Object): void;
+ addEventListener(type: "refresh", listener: CollectionEventListener>, thisArg: Object): void;
/**
* @inheritdoc
*/
removeEventListener(type: string, listener: EventListener): void;
+ removeEventListener(type: "insert", listener: CollectionEventListener>): void;
+ removeEventListener(type: "erase", listener: CollectionEventListener>): void;
+ removeEventListener(type: "refresh", listener: CollectionEventListener>): void;
/**
* @inheritdoc
*/
removeEventListener(type: string, listener: EventListener, thisArg: Object): void;
- /**
- * @inheritdoc
- */
- removeEventListener(type: "insert" | "erase", listener: CollectionEventListener): void;
- /**
- * @inheritdoc
- */
- removeEventListener(type: "insert" | "erase", listener: CollectionEventListener, thisArg: Object): void;
+ removeEventListener(type: "insert", listener: CollectionEventListener>, thisArg: Object): void;
+ removeEventListener(type: "erase", listener: CollectionEventListener>, thisArg: Object): void;
+ removeEventListener(type: "refresh", listener: CollectionEventListener>, thisArg: Object): void;
}
+}
+declare namespace samchon.collection {
/**
* A {@link HashMultiMap} who can detect element I/O events.
*
+ *
+ * - insert typed events:
+ * - {@link assign}
+ * - {@link insert}
+ * - {@link push}
+ *
+ * - erase typed events:
+ * - {@link assign}
+ * - {@link clear}
+ * - {@link erase}
+ *
+ *
+ *
* @author Jeongho Nam
*/
class HashMultiMapCollection extends std.HashMap implements ICollection> {
@@ -443,47 +557,143 @@ declare namespace samchon.collection {
* @inheritdoc
*/
dispatchEvent(event: Event): boolean;
+ /**
+ * @inheritdoc
+ */
+ refresh(): void;
+ /**
+ * @inheritdoc
+ */
+ refresh(it: std.MapIterator): void;
+ /**
+ * @inheritdoc
+ */
+ refresh(first: std.MapIterator, last: std.MapIterator): void;
/**
* @inheritdoc
*/
addEventListener(type: string, listener: EventListener): void;
+ addEventListener(type: "insert", listener: CollectionEventListener>): void;
+ addEventListener(type: "erase", listener: CollectionEventListener>): void;
+ addEventListener(type: "refresh", listener: CollectionEventListener>): void;
/**
* @inheritdoc
*/
addEventListener(type: string, listener: EventListener, thisArg: Object): void;
- /**
- * @inheritdoc
- */
- addEventListener(type: "insert" | "erase", listener: CollectionEventListener): void;
- /**
- * @inheritdoc
- */
- addEventListener(type: "insert" | "erase", listener: CollectionEventListener, thisArg: Object): void;
+ addEventListener(type: "insert", listener: CollectionEventListener>, thisArg: Object): void;
+ addEventListener(type: "erase", listener: CollectionEventListener>, thisArg: Object): void;
+ addEventListener(type: "refresh", listener: CollectionEventListener>, thisArg: Object): void;
/**
* @inheritdoc
*/
removeEventListener(type: string, listener: EventListener): void;
+ removeEventListener(type: "insert", listener: CollectionEventListener>): void;
+ removeEventListener(type: "erase", listener: CollectionEventListener>): void;
+ removeEventListener(type: "refresh", listener: CollectionEventListener>): void;
/**
* @inheritdoc
*/
removeEventListener(type: string, listener: EventListener, thisArg: Object): void;
+ removeEventListener(type: "insert", listener: CollectionEventListener>, thisArg: Object): void;
+ removeEventListener(type: "erase", listener: CollectionEventListener>, thisArg: Object): void;
+ removeEventListener(type: "refresh", listener: CollectionEventListener>, thisArg: Object): void;
+ }
+}
+declare namespace samchon.collection {
+ /**
+ * A {@link HashMultiSet} who can detect element I/O events.
+ *
+ *
+ * - insert typed events:
+ * - {@link assign}
+ * - {@link insert}
+ * - {@link push}
+ *
+ * - erase typed events:
+ * - {@link assign}
+ * - {@link clear}
+ * - {@link erase}
+ *
+ *
+ *
+ * @author Jeongho Nam
+ */
+ class HashMultiSetCollection extends std.HashMultiSet implements ICollection {
+ /**
+ * A chain object taking responsibility of dispatching events.
+ */
+ private event_dispatcher_;
/**
* @inheritdoc
*/
- removeEventListener(type: "insert" | "erase", listener: CollectionEventListener): void;
+ hasEventListener(type: string): boolean;
/**
* @inheritdoc
*/
- removeEventListener(type: "insert" | "erase", listener: CollectionEventListener, thisArg: Object): void;
+ dispatchEvent(event: Event): boolean;
+ /**
+ * @inheritdoc
+ */
+ refresh(): void;
+ /**
+ * @inheritdoc
+ */
+ refresh(it: std.SetIterator): void;
+ /**
+ * @inheritdoc
+ */
+ refresh(first: std.SetIterator, last: std.SetIterator): void;
+ /**
+ * @inheritdoc
+ */
+ addEventListener(type: string, listener: EventListener): void;
+ addEventListener(type: "insert", listener: CollectionEventListener): void;
+ addEventListener(type: "erase", listener: CollectionEventListener): void;
+ addEventListener(type: "refresh", listener: CollectionEventListener): void;
+ /**
+ * @inheritdoc
+ */
+ addEventListener(type: string, listener: EventListener, thisArg: Object): void;
+ addEventListener(type: "insert", listener: CollectionEventListener, thisArg: Object): void;
+ addEventListener(type: "erase", listener: CollectionEventListener, thisArg: Object): void;
+ addEventListener(type: "refresh", listener: CollectionEventListener, thisArg: Object): void;
+ /**
+ * @inheritdoc
+ */
+ removeEventListener(type: string, listener: EventListener): void;
+ removeEventListener(type: "insert", listener: CollectionEventListener): void;
+ removeEventListener(type: "erase", listener: CollectionEventListener): void;
+ removeEventListener(type: "refresh", listener: CollectionEventListener): void;
+ /**
+ * @inheritdoc
+ */
+ removeEventListener(type: string, listener: EventListener, thisArg: Object): void;
+ removeEventListener(type: "insert", listener: CollectionEventListener, thisArg: Object): void;
+ removeEventListener(type: "erase", listener: CollectionEventListener, thisArg: Object): void;
+ removeEventListener(type: "refresh", listener: CollectionEventListener, thisArg: Object): void;
}
}
declare namespace samchon.collection {
/**
* A {@link HashSet} who can detect element I/O events.
*
+ *
+ * - insert typed events:
+ * - {@link assign}
+ * - {@link insert}
+ * - {@link push}
+ *
+ * - erase typed events:
+ * - {@link assign}
+ * - {@link clear}
+ * - {@link erase}
+ * - {@link extract}
+ *
+ *
+ *
* @author Jeongho Nam
*/
- class HashSetCollection extends std.TreeSet implements ICollection {
+ class HashSetCollection extends std.HashSet implements ICollection {
/**
* A chain object taking responsibility of dispatching events.
*/
@@ -507,216 +717,175 @@ declare namespace samchon.collection {
/**
* @inheritdoc
*/
- addEventListener(type: string, listener: EventListener): void;
+ refresh(): void;
/**
* @inheritdoc
*/
- addEventListener(type: string, listener: EventListener, thisArg: Object): void;
+ refresh(it: std.SetIterator): void;
/**
* @inheritdoc
*/
- addEventListener(type: "insert" | "erase", listener: CollectionEventListener): void;
- /**
- * @inheritdoc
- */
- addEventListener(type: "insert" | "erase", listener: CollectionEventListener, thisArg: Object): void;
- /**
- * @inheritdoc
- */
- removeEventListener(type: string, listener: EventListener): void;
- /**
- * @inheritdoc
- */
- removeEventListener(type: string, listener: EventListener, thisArg: Object): void;
- /**
- * @inheritdoc
- */
- removeEventListener(type: "insert" | "erase", listener: CollectionEventListener): void;
- /**
- * @inheritdoc
- */
- removeEventListener(type: "insert" | "erase", listener: CollectionEventListener, thisArg: Object): void;
- }
- class HashMultiSetCollection extends std.TreeMultiSet implements ICollection {
- /**
- * A chain object taking responsibility of dispatching events.
- */
- private event_dispatcher_;
- /**
- * @inheritdoc
- */
- hasEventListener(type: string): boolean;
- /**
- * @inheritdoc
- */
- dispatchEvent(event: Event): boolean;
+ refresh(first: std.SetIterator, last: std.SetIterator): void;
/**
* @inheritdoc
*/
addEventListener(type: string, listener: EventListener): void;
+ addEventListener(type: "insert", listener: CollectionEventListener): void;
+ addEventListener(type: "erase", listener: CollectionEventListener): void;
+ addEventListener(type: "refresh", listener: CollectionEventListener): void;
/**
* @inheritdoc
*/
addEventListener(type: string, listener: EventListener, thisArg: Object): void;
- /**
- * @inheritdoc
- */
- addEventListener(type: "insert" | "erase", listener: CollectionEventListener): void;
- /**
- * @inheritdoc
- */
- addEventListener(type: "insert" | "erase", listener: CollectionEventListener, thisArg: Object): void;
+ addEventListener(type: "insert", listener: CollectionEventListener, thisArg: Object): void;
+ addEventListener(type: "erase", listener: CollectionEventListener, thisArg: Object): void;
+ addEventListener(type: "refresh", listener: CollectionEventListener, thisArg: Object): void;
/**
* @inheritdoc
*/
removeEventListener(type: string, listener: EventListener): void;
+ removeEventListener(type: "insert", listener: CollectionEventListener): void;
+ removeEventListener(type: "erase", listener: CollectionEventListener