Add Custom Permission Level Programmatically

 

SPSite oSite = new SPSite(<sharepoint site>);

SPWeb oWeb = oSite.OpenWeb();

SPRoleDefinition role = oWeb.RoleDefinitions["Custom Role"];

role.BasePermissions = SPBasePermissions.AddListItems | SPBasePermissions.BrowseDirectories | SPBasePermissions.EditListItems | SPBasePermissions.Open | SPBasePermissions.OpenItems | SPBasePermissions.ViewListItems | SPBasePermissions.ViewFormPages| SPBasePermissions.ViewPages| SPBasePermissions.CancelCheckout| SPBasePermissions.DeleteListItems| SPBasePermissions.ApproveItems;

role.Update();