發表文章

目前顯示的是 8月, 2014的文章

Eclipse zest note

基本zest viewer建立 public class BaseViewer extends ViewPart implements IZoomableWorkbenchPart { @Override public void createPartControl(Composite parent) {     view = new GraphViewer(parent, SWT.NONE);     view.setContentProvider(new NodeContentProvider());     view.setLabelProvider(new NodeLabelProvider());     view.setLayoutAlgorithm(new MultiLayoutAlgorithm(), true);  //設定layout並執行     fillToolbar(); } //設定viewer的toolbar提供zoom的選項 private void fillToolbar() {     ZoomContributionViewItem toolbarZoomContributionViewItem = new ZoomContributionViewItem( this);     IActionBars bars = getViewSite().getActionBars();     bars.getMenuManager().add(toolbarZoomContributionViewItem); } @Override public AbstractZoomableViewer getZoomableViewer() { return view; } } viewer.applyLayout(); //執行layout /* 把有連線的node獨立出來執行baselayout  * 沒有連線的node用類似gridlayout的方式處理,避免交互影響讓layout不好看  * 把node layout在適當的大小內,用zoom來調整顯示的比例 */ public class MultiLayoutAlgorithm extends Abstract

lua call C function

C file : test.c ============================ #include <lua.h> #include <lauxlib.h> #include <lualib.h> #include <string.h> static int square( lua_State *L){               //用來取的lua參數,參數是以stack的狀態存在     float value = lua_tonumber (L, -1);       //轉型成C的型態     lua_pushnumber (L, value*value);         //回傳     return 1; } static int merge(lua_State *L){     const char *str1 = lua_tostring(L, -2);  //注意取的參數的順序     const char *str2 = lua_tostring(L, -1);     char str[80];     strcpy(str, str1);     strcat(str, str2); } int luaopen_ gg (lua_State *L){               // luaopen_*,載入時的主要進入點必需與.so和lua的lib同名     lua_register (L, "square", square);       //跟lua註冊function     lua_register(L, "cube", cube);     lua_register(L, "merge", merge);     return 0; } compile : gcc -Wall -shared -fPIC -o gg .so -I/usr/include/lua5.1 test.c lua file : test.lua ======================= package.cpath = package.cpath .. &quo