diff options
Diffstat (limited to 'plugins/Dbx_kyoto/src/kyotocabinet/kyotocabinet.idl')
-rw-r--r-- | plugins/Dbx_kyoto/src/kyotocabinet/kyotocabinet.idl | 263 |
1 files changed, 263 insertions, 0 deletions
diff --git a/plugins/Dbx_kyoto/src/kyotocabinet/kyotocabinet.idl b/plugins/Dbx_kyoto/src/kyotocabinet/kyotocabinet.idl new file mode 100644 index 0000000000..41234ad13a --- /dev/null +++ b/plugins/Dbx_kyoto/src/kyotocabinet/kyotocabinet.idl @@ -0,0 +1,263 @@ +/************************************************************************************************* + * IDL for bindings of scripting languages + * Copyright (C) 2009-2012 FAL Labs + * This file is part of Kyoto Cabinet. + * This program is free software: you can redistribute it and/or modify it under the terms of + * the GNU General Public License as published by the Free Software Foundation, either version + * 3 of the License, or any later version. + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * You should have received a copy of the GNU General Public License along with this program. + * If not, see <http://www.gnu.org/licenses/>. + *************************************************************************************************/ + + +/** + * namespace of Kyoto Cabinet + */ +module kyotocabinet { + //---------------------------------------------------------------- + // prediction + //---------------------------------------------------------------- + interface List; + interface Map; + interface Error; + interface Visitor; + interface FileProcessor; + interface Logger; + interface Cursor; + interface DB; + //---------------------------------------------------------------- + // list of strings (substituted by the native mechanism) + //---------------------------------------------------------------- + interface List { + string get(in long index); + }; + //---------------------------------------------------------------- + // map of strings (substituted by the native mechanism) + //---------------------------------------------------------------- + interface Map { + string get(in string key); + }; + //---------------------------------------------------------------- + // error information + //---------------------------------------------------------------- + interface Error { + const long SUCCESS = 0; + const long NOIMPL = 1; + const long INVALID = 2; + const long NOREPOS = 3; + const long NOPERM = 4; + const long BROKEN = 5; + const long DUPREC = 6; + const long NOREC = 7; + const long LOGIC = 8; + const long SYSTEM = 9; + const long MISC = 15; + long code(); + string name(); + string message(); + }; + //---------------------------------------------------------------- + // record visitor + //---------------------------------------------------------------- + interface Visitor { + const string NOP = ""; + const string REMOVE = ""; + string visit_full(in string key, in string value); + string visit_empty(in string key); + }; + //---------------------------------------------------------------- + // file processor + //---------------------------------------------------------------- + interface FileProcessor { + boolean process(in string path, in long long count, in long long size); + }; + //---------------------------------------------------------------- + // event logger + //---------------------------------------------------------------- + interface Logger { + const long INFO = 0; + const long WARN = 1; + const long ERROR = 2; + void log(in string file, in long line, in string func, in long kind, in string message); + }; + //---------------------------------------------------------------- + // meta operation trigger + //---------------------------------------------------------------- + interface MetaTrigger { + const long OPEN = 0; + const long CLOSE = 1; + const long CLEAR = 2; + const long ITERATE = 3; + const long SYNCHRONIZE = 4; + const long OCCUPY = 5; + const long BEGINTRAN = 6; + const long COMMITTRAN = 7; + const long ABORTTRAN = 8; + const long MISC = 15; + void trigger(in long kind, in string message); + }; + //---------------------------------------------------------------- + // cursor + //---------------------------------------------------------------- + interface Cursor { + boolean accept(inout Visitor visitor, in boolean writable, in boolean step); + boolean set_value(in string value, in boolean step); + boolean remove(); + string get_key(in boolean step); + string get_value(in boolean step); + boolean jump(); + boolean jump_(in string key); + boolean jump_back(); + boolean jump_back_(in string key); + boolean step(); + boolean step_back(); + DB db(); + Error error(); + }; + //---------------------------------------------------------------- + // common database operations + //---------------------------------------------------------------- + interface DB { + const long OREADER = 1 << 0; + const long OWRITER = 1 << 1; + const long OCREATE = 1 << 2; + const long OTRUNCATE = 1 << 3; + const long OAUTOTRAN = 1 << 4; + const long OAUTOSYNC = 1 << 5; + const long ONOLOCK = 1 << 6; + const long OTRYLOCK = 1 << 7; + const long ONOREPAIR = 1 << 8; + Error error(); + boolean open(in string path, in long mode); + boolean close(); + boolean accept(in string key, inout Visitor visitor, in boolean writable); + boolean accept_bulk(in List keys, inout Visitor visitor, in boolean writable); + boolean iterate(inout Visitor visitor, in boolean writable); + boolean scan_parallel(inout Visitor visitor, in long thnum); + boolean set(in string key, in string value); + boolean add(in string key, in string value); + boolean replace(in string key, in string value); + boolean append(in string key, in string value); + long long increment(in string key, in long long num, in long long orig); + double increment_double(in string key, in double num, in double orig); + boolean cas(in string key, in string oval, in string nval); + boolean remove(in string key); + string get(in string key); + long check(in string key); + string seize(in string key); + long long set_bulk(in Map recs); + long long remove_bulk(in List keys); + Map get_bulk(in List keys); + boolean clear(); + boolean synchronize(in boolean hard, inout FileProcessor proc); + boolean occupy(in boolean writable, inout FileProcessor proc); + boolean copy(in string dest); + boolean begin_transaction(in boolean hard); + boolean end_transaction(in boolean commit); + boolean dump_snapshot(in string dest); + boolean load_snapshot(in string src); + long long count(); + long long size(); + string path(); + Map status(); + Cursor cursor(); + boolean tune_logger(inout Logger logger); + boolean tune_meta_trigger(inout MetaTrigger trigger); + }; + //---------------------------------------------------------------- + // prototype hash database + //---------------------------------------------------------------- + interface ProtoHashDB :DB { + }; + //---------------------------------------------------------------- + // prototype tree database + //---------------------------------------------------------------- + interface ProtoTreeDB :DB { + }; + //---------------------------------------------------------------- + // stash database + //---------------------------------------------------------------- + interface StashDB :DB { + boolean tune_buckets(in long long bnum); + }; + //---------------------------------------------------------------- + // cache hash database + //---------------------------------------------------------------- + interface CacheDB :DB { + boolean tune_options(in long opts); + boolean tune_buckets(in long long bnum); + boolean cap_count(in long long count); + boolean cap_size(in long long size); + }; + //---------------------------------------------------------------- + // cache tree database + //---------------------------------------------------------------- + interface GrassDB :DB { + boolean tune_options(in long opts); + boolean tune_buckets(in long long bnum); + boolean tune_page(in long psiz); + boolean tune_page_cache(in long long pccap); + }; + //---------------------------------------------------------------- + // file hash database + //---------------------------------------------------------------- + interface HashDB :DB { + const long TSMALL = 1 << 0; + const long TLINEAR = 1 << 1; + const long TCOMPRESS = 1 << 2; + boolean tune_alignment(in long apow); + boolean tune_fbp(in long fpow); + boolean tune_options(in long opts); + boolean tune_buckets(in long long bnum); + boolean tune_map(in long long msiz); + boolean tune_defrag(in long dfunit); + }; + //---------------------------------------------------------------- + // file tree database + //---------------------------------------------------------------- + interface TreeDB :DB { + const long TSMALL = 1 << 0; + const long TLINEAR = 1 << 1; + const long TCOMPRESS = 1 << 2; + boolean tune_alignment(in long apow); + boolean tune_fbp(in long fpow); + boolean tune_options(in long opts); + boolean tune_buckets(in long long bnum); + boolean tune_page(in long psiz); + boolean tune_map(in long long msiz); + boolean tune_defrag(in long dfunit); + boolean tune_page_cache(in long long pccap); + }; + //---------------------------------------------------------------- + // directory hash database + //---------------------------------------------------------------- + interface DirDB :DB { + const long TCOMPRESS = 1 << 2; + boolean tune_options(in long opts); + }; + //---------------------------------------------------------------- + // directory tree database + //---------------------------------------------------------------- + interface ForestDB :DB { + const long TCOMPRESS = 1 << 2; + boolean tune_options(in long opts); + boolean tune_buckets(in long long bnum); + boolean tune_page(in long psiz); + boolean tune_page_cache(in long long pccap); + }; + //---------------------------------------------------------------- + // polymorphic database + //---------------------------------------------------------------- + interface PolyDB :DB { + List match_prefix(in string prefix, in long long max); + List match_regex(in string regex, in long long max); + List match_similar(in string origin, in long long range, in boolean utf, in long long max); + }; +}; + + + +/* END OF FILE */ |