view log28pm_impl.txt @ 1:81cf42d17859

add log
author ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
date Sun, 28 Feb 2021 18:08:51 +0900
parents
children
line wrap: on
line source

Last login: Sun Feb 28 14:06:53 on ttys002
ichikitakahiro % cd !$
cd '$@'
cd: no such file or directory: $@
ichikitakahiro % cd ~/src/firefly/hg/Gears/Gears/src/parallel_execution/       
ichikitakahiro % vim examples/pop_and_push/main.cbc
ichikitakahiro % ls                              
Atomic.h                 Queue.h                  compare.c
AtomicReference.cbc      RedBlackTree.agda        cuda.c
AtomicT.h                RedBlackTree.cbc         examples
AtomicTImpl.cbc          RedBlackTreeReWright.cbc generate_context.pl
AtomicTImpl.h            Semaphore.h              generate_stub.pl
Buffer.h                 SemaphoreImpl.cbc        helper_cuda.h
CMakeLists.txt           SingleLinkedQueue.cbc    helper_string.h
CPUWorker.cbc            SingleLinkedStack.cbc    impl
CUDAExecutor.cbc         SpinLock.cbc             interface
CUDAWorker.cbc           Stack.h                  lib
CodeGear.h               SynchronizedQueue.cbc    perlTests
Executor.h               TaskIterator.cbc         plautogen
Iterator.h               TaskManager.h            stack.agda
Lock.h                   TaskManagerImpl.cbc      temp.cbc
LockImpl.cbc             Timer.h                  test
MCTaskManagerImpl.cbc    TimerImpl.cbc            tmp_tool
MCTaskManagerImpl.h      Todo                     tools
Makefile                 Tree.h                   twice
ModelChecking            Worker.h                 verifier
MultiDimIterator.cbc     cleanup.sh
ichikitakahiro % cat Queue.h 
typedef struct Queue<>{
    __code whenEmpty(...);
    __code clear(Impl* queue, __code next(...));
    __code put(Impl* queue, union Data* data, __code next(...));
    __code take(Impl* queue, __code next(union Data* data, ...));
    __code isEmpty(Impl* queue, __code next(...), __code whenEmpty(...));
    __code next(...);
} Queue;
ichikitakahiro % cat Lock.h 
typedef struct Lock<>{
        union Data* lock;
        __code doLock(Impl* lock, __code next(...)); 
        __code doUnlock(Impl* lock, __code next(...)); 
        __code next(...);
} Lock;
ichikitakahiro % perl tools/static_gen_header.pl --interface Wc
typedef struct Wc <> {
  __code next(...);
} Wc;
ichikitakahiro % perl tools/static_gen_header.pl --interface Wc -o examples/wc/wc.h
ichikitakahiro % ls examples/wc/wc.h
examples/wc/wc.h
ichikitakahiro % vim examples/wc/wc.h 
ichikitakahiro % vim examples/wc/wc.h 
ichikitakahiro % cat examples/wc/wc.h 
typedef struct Wc <> {
  __code openFile(Impl* wc,char* filename, __code next(...));
  __code countUp(Impl* wc,__code next(struct));
  
  __code next(...);
} Wc;
ichikitakahiro % cat examples/wc/wc.h | wc
       6      19     162
ichikitakahiro % vim examples/wc/wc.h     
ichikitakahiro % perl tools/static_gen_header.pl --interface Wc --impl WcImpl -o examples/wc/WcImpl.h
ichikitakahiro % vim examples/wc/!$
vim examples/wc/examples/wc/WcImpl.h
ichikitakahiro % vim examples/wc/WcImpl.h  
ichikitakahiro % perl tools/impl2cbc.pl examples/wc/WcImpl.h 
require file at /Users/ichikitakahiro/src/firefly/hg/Gears/Gears/src/parallel_execution/tools/../lib/Gears/Interface.pm line 15.
	Gears::Interface::parse("Gears::Interface", undef) called at /Users/ichikitakahiro/src/firefly/hg/Gears/Gears/src/parallel_execution/tools/../lib/Gears/Interface.pm line 166
	Gears::Interface::detailed_parse("Gears::Interface", undef) called at tools/impl2cbc.pl line 27
ichikitakahiro % vim examples/wc/WcImpl.h                    
ichikitakahiro % vim examples/wc/wc.h 
ichikitakahiro % mv examples/wc/wc.h examples/wc/Wc.h 
ichikitakahiro % perl tools/impl2cbc.pl examples/wc/WcImpl.h 
#include "../../../context.h"
#interface "Wc.h"

// ----
// typedef struct WcImpl <> impl Wc {
//   FILE* file;
//   char* Keyword; 
//   int wordNum;
// } WcImpl;
// ----

Wc* createWcImpl(struct Context* context) {
    struct Wc* wc  = new Wc();
    struct WcImpl* wc_impl = new WcImpl();
    wc->wc = (union Data*)wc_impl;
    wc->filename = NULL;
    wc->result = NULL;
    wc_impl->file = NULL;
    wc_impl->Keyword = NULL;
    wc_impl->wordNum = 0;
    wc->openFile = C_openFileWcImpl;
    wc->countUp = C_countUpWcImpl;
    return wc;
}
__code openFile(struct WcImpl* wc,char* filename, __code next(...)) {

    goto next(...);
}

__code countUp(struct WcImpl* wc,__code next(WcResult* result, ...)) {

    goto next(WcResult* result, ...);
}

ichikitakahiro % ls
Atomic.h                 Queue.h                  compare.c
AtomicReference.cbc      RedBlackTree.agda        cuda.c
AtomicT.h                RedBlackTree.cbc         examples
AtomicTImpl.cbc          RedBlackTreeReWright.cbc generate_context.pl
AtomicTImpl.h            Semaphore.h              generate_stub.pl
Buffer.h                 SemaphoreImpl.cbc        helper_cuda.h
CMakeLists.txt           SingleLinkedQueue.cbc    helper_string.h
CPUWorker.cbc            SingleLinkedStack.cbc    impl
CUDAExecutor.cbc         SpinLock.cbc             interface
CUDAWorker.cbc           Stack.h                  lib
CodeGear.h               SynchronizedQueue.cbc    perlTests
Executor.h               TaskIterator.cbc         plautogen
Iterator.h               TaskManager.h            stack.agda
Lock.h                   TaskManagerImpl.cbc      temp.cbc
LockImpl.cbc             Timer.h                  test
MCTaskManagerImpl.cbc    TimerImpl.cbc            tmp_tool
MCTaskManagerImpl.h      Todo                     tools
Makefile                 Tree.h                   twice
ModelChecking            Worker.h                 verifier
MultiDimIterator.cbc     cleanup.sh
ichikitakahiro % perl tools/impl2cbc.pl examples/wc/WcImpl.h -w 
#include "../../../context.h"
#interface "Wc.h"

// ----
// typedef struct WcImpl <> impl Wc {
//   FILE* file;
//   char* Keyword; 
//   int wordNum;
// } WcImpl;
// ----

Wc* createWcImpl(struct Context* context) {
    struct Wc* wc  = new Wc();
    struct WcImpl* wc_impl = new WcImpl();
    wc->wc = (union Data*)wc_impl;
    wc->filename = NULL;
    wc->result = NULL;
    wc_impl->file = NULL;
    wc_impl->Keyword = NULL;
    wc_impl->wordNum = 0;
    wc->openFile = C_openFileWcImpl;
    wc->countUp = C_countUpWcImpl;
    return wc;
}
__code openFile(struct WcImpl* wc,char* filename, __code next(...)) {

    goto next(...);
}

__code countUp(struct WcImpl* wc,__code next(WcResult* result, ...)) {

    goto next(WcResult* result, ...);
}

ichikitakahiro % perl tools/impl2cbc.pl -w examples/wc/WcImpl.h  
ichikitakahiro % ls examples/wc/
Wc.h       WcImpl.cbc WcImpl.h   WcResult.h main.cbc
ichikitakahiro % vi examples/wc/WcImpl.cbc
ichikitakahiro % vim examples/wc/WcImpl.cbc
ichikitakahiro % vim tools/impl2cbc.pl 
ichikitakahiro % vim examples/wc/WcImpl.cbc                     
ichikitakahiro % vim examples/wc/Wc.h
ichikitakahiro % vim examples/wc/Wc.h 
ichikitakahiro % vim examples/DPP2/main.cbc 
ichikitakahiro % vim examples/wc/Wc.h      
ichikitakahiro %