Mercurial > hg > Gears > Gears
changeset 1003:088e533b5393
add: ls
author | matac42 <matac@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Thu, 06 Jan 2022 21:33:58 +0900 |
parents | dad078c90f29 |
children | 7adec76a1adf 111e313e883e |
files | src/parallel_execution/examples/gearsDirectory/GearsDirectory.h src/parallel_execution/examples/gearsDirectory/GearsDirectoryImpl.cbc src/parallel_execution/examples/gearsDirectory/GearsDirectory_test.cbc |
diffstat | 3 files changed, 30 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/src/parallel_execution/examples/gearsDirectory/GearsDirectory.h Tue Dec 28 18:33:48 2021 +0900 +++ b/src/parallel_execution/examples/gearsDirectory/GearsDirectory.h Thu Jan 06 21:33:58 2022 +0900 @@ -2,6 +2,7 @@ union Data* gearsDirectory; struct Integer* name; __code mkdir(Impl* gearsDirectory, struct Integer* name, __code next(...)); + __code ls(Impl* gearsDirectory, struct Integer* name, __code next(...)); __code cd2Child(Impl* gearsDirectory, struct Integer* name, __code next(...)); __code cd2Parent(Impl* gearsDirectory, __code next(...)); __code next(...);
--- a/src/parallel_execution/examples/gearsDirectory/GearsDirectoryImpl.cbc Tue Dec 28 18:33:48 2021 +0900 +++ b/src/parallel_execution/examples/gearsDirectory/GearsDirectoryImpl.cbc Thu Jan 06 21:33:58 2022 +0900 @@ -24,6 +24,7 @@ gears_directory_impl->directoryStack = createSingleLinkedStack(context); gears_directory_impl->INodeNumber = 0; gearsDirectory->mkdir = C_mkdirGearsDirectoryImpl; + gearsDirectory->ls = C_lsGearsDirectoryImpl; gearsDirectory->cd2Child = C_cd2ChildGearsDirectoryImpl; gearsDirectory->cd2Parent = C_cd2ParentGearsDirectoryImpl; return gearsDirectory; @@ -34,6 +35,7 @@ Node* inode = new Node(); // FIXME:inode numberのselectをしないといけない inode->key = gearsDirectory->INodeNumber; + // FIXME:確保したinode領域にnewDirectoryを置かないといけない inode->value = newDirectory; struct FTree* cDirectory = new FTree(); cDirectory = gearsDirectory->iNodeTree; @@ -42,13 +44,26 @@ __code mkdir2(struct GearsDirectoryImpl* gearsDirectory, struct Integer* name, __code next(...)) { Node* dir = new Node(); - dir->key = gearsDirectory->INodeNumber; - dir->value = name->value; + dir->key = name->value; + dir->value = gearsDirectory->INodeNumber; struct FTree* cDirectory = new FTree(); cDirectory = gearsDirectory->currentDirectory; goto cDirectory->put(dir, next(...)); } +__code ls(struct GearsDirectoryImpl* gearsDirectory, struct Integer* name, __code next(...)) { + Node* dir = new Node(); + dir->key = name->value; + struct FTree* cDirectory = new FTree(); + cDirectory = gearsDirectory->currentDirectory; + goto cDirectory->get(dir, ls2); +} + +__code ls2(struct GearsDirectoryImpl* gearsDirectory, struct Integer* name, __code next(...)) { + printf("%d\n", gearsDirectory->currentDirectory->fTree->Node.value->Node.key); + goto next(...); +} + __code cd2Child(struct GearsDirectoryImpl* gearsDirectory, struct Integer* name, __code next(...)) { // 現在のtreeからnode->keyがnameと一致するものをsearch struct FTree* cDirectory = new FTree();
--- a/src/parallel_execution/examples/gearsDirectory/GearsDirectory_test.cbc Tue Dec 28 18:33:48 2021 +0900 +++ b/src/parallel_execution/examples/gearsDirectory/GearsDirectory_test.cbc Thu Jan 06 21:33:58 2022 +0900 @@ -6,7 +6,7 @@ __code task1(GearsDirectory* gearsDirectory){ Integer* name = new Integer(); name->value = 1; - goto gearsDirectory->mkdir(name, exit_code); + goto gearsDirectory->mkdir(name, task5); } __code task1_stub(struct Context* context){ @@ -34,6 +34,17 @@ goto task3(context, gearsDirectory); } +__code task5(GearsDirectory* gearsDirectory){ + Integer* name = new Integer(); + name->value = 1; + goto gearsDirectory->ls(name, exit_code); +} + +__code task5_stub(struct Context* context){ + GearsDirectory* gearsDirectory = (struct GearsDirectory*)Gearef(context, GearsDirectory)->gearsDirectory; + goto task5(context, gearsDirectory); +} + int main(int argc, char** argv) { printf("main\n"); goto task1();